This is an automated email from the ASF dual-hosted git repository.
hansva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git
The following commit(s) were added to refs/heads/main by this push:
new 0b3d2bebb0 Small improvement in the configuration keyboard shortcut
#6328 (#6329)
0b3d2bebb0 is described below
commit 0b3d2bebb0c27cef52d6bf81baf944fb1fe07497
Author: Nicolas Adment <[email protected]>
AuthorDate: Sun Jan 11 10:57:00 2026 +0100
Small improvement in the configuration keyboard shortcut #6328 (#6329)
- Improve dark mode colors
- Adjust layout
- Fix GUI plugin name
- Add "Keyboard" icon
---
core/src/main/java/org/apache/hop/core/Props.java | 1 +
.../org/apache/hop/core/gui/plugin/GuiPluginType.java | 2 +-
.../hop/neo4j/perspective/HopNeo4jPerspective.java | 2 +-
ui/src/main/java/org/apache/hop/ui/core/PropsUi.java | 14 +++++++++++---
.../java/org/apache/hop/ui/core/gui/GuiResource.java | 4 ++++
.../ui/hopgui/file/pipeline/HopGuiPipelineGraph.java | 2 +-
.../ui/hopgui/file/workflow/HopGuiWorkflowGraph.java | 2 +-
.../configuration/ConfigurationPerspective.java | 8 +++++---
.../configuration/tabs/ConfigKeyboardShortcutsTab.java | 18 +++++++++++-------
.../perspective/execution/ExecutionPerspective.java | 4 +++-
.../perspective/execution/PipelineExecutionViewer.java | 2 +-
.../perspective/execution/WorkflowExecutionViewer.java | 2 +-
.../perspective/explorer/ExplorerPerspective.java | 4 +++-
.../perspective/metadata/MetadataPerspective.java | 4 +++-
.../pluginexplorer/HopPluginExplorePerspective.java | 4 +++-
.../perspective/search/HopSearchPerspective.java | 4 +++-
.../file/pipeline/messages/messages_en_US.properties | 1 +
.../file/workflow/messages/messages_en_US.properties | 1 +
.../execution/messages/messages_en_US.properties | 2 ++
ui/src/main/resources/ui/images/keyboard.svg | 4 ++++
20 files changed, 61 insertions(+), 24 deletions(-)
diff --git a/core/src/main/java/org/apache/hop/core/Props.java
b/core/src/main/java/org/apache/hop/core/Props.java
index bf7fbb3adf..11ca2a825c 100644
--- a/core/src/main/java/org/apache/hop/core/Props.java
+++ b/core/src/main/java/org/apache/hop/core/Props.java
@@ -95,6 +95,7 @@ public class Props implements Cloneable {
public static final int WIDGET_STYLE_TOOLBAR = 5;
public static final int WIDGET_STYLE_PUSH_BUTTON = 6;
public static final int WIDGET_STYLE_TREE = 7;
+ public static final int WIDGET_STYLE_EXPANDBAR = 8;
public Props() {
log = new LogChannel(STRING_USER_PREFERENCES);
diff --git
a/core/src/main/java/org/apache/hop/core/gui/plugin/GuiPluginType.java
b/core/src/main/java/org/apache/hop/core/gui/plugin/GuiPluginType.java
index 6ad99a779a..2648b0868a 100644
--- a/core/src/main/java/org/apache/hop/core/gui/plugin/GuiPluginType.java
+++ b/core/src/main/java/org/apache/hop/core/gui/plugin/GuiPluginType.java
@@ -58,7 +58,7 @@ public class GuiPluginType extends BasePluginType<GuiPlugin> {
@Override
protected String extractName(GuiPlugin annotation) {
- return annotation.description();
+ return annotation.name();
}
@Override
diff --git
a/plugins/tech/neo4j/src/main/java/org/apache/hop/neo4j/perspective/HopNeo4jPerspective.java
b/plugins/tech/neo4j/src/main/java/org/apache/hop/neo4j/perspective/HopNeo4jPerspective.java
index 4619f67504..6f369894cd 100644
---
a/plugins/tech/neo4j/src/main/java/org/apache/hop/neo4j/perspective/HopNeo4jPerspective.java
+++
b/plugins/tech/neo4j/src/main/java/org/apache/hop/neo4j/perspective/HopNeo4jPerspective.java
@@ -89,7 +89,7 @@ import org.neo4j.driver.types.Path;
description = "Neo4j Perspective",
image = "neo4j_logo.svg",
documentationUrl = "/hop-gui/perspective-neo4j.html")
-@GuiPlugin
+@GuiPlugin(name = "Neo4j")
public class HopNeo4jPerspective implements IHopPerspective {
public static final Class<?> PKG = HopNeo4jPerspective.class;
diff --git a/ui/src/main/java/org/apache/hop/ui/core/PropsUi.java
b/ui/src/main/java/org/apache/hop/ui/core/PropsUi.java
index 289fd2ede4..3574a875bd 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/PropsUi.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/PropsUi.java
@@ -46,6 +46,7 @@ import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.ExpandBar;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.Shell;
@@ -150,7 +151,7 @@ public class PropsUi extends Props {
}
}
- // Various tweaks to improve dark theme experience on Windows
+ // Various tweaks to improve the dark theme experience on Windows
if (OsHelper.isWindows() && isDarkMode()) {
display.setData("org.eclipse.swt.internal.win32.useDarkModeExplorerTheme",
true);
display.setData("org.eclipse.swt.internal.win32.useShellTitleColoring",
true);
@@ -496,6 +497,8 @@ public class PropsUi extends Props {
style = WIDGET_STYLE_TOOLBAR;
} else if (widget instanceof CTabFolder) {
style = WIDGET_STYLE_TAB;
+ } else if (widget instanceof ExpandBar) {
+ style = WIDGET_STYLE_EXPANDBAR;
} else if (OS.contains("mac") && (widget instanceof Group)) {
style = WIDGET_STYLE_OSX_GROUP;
} else if (widget instanceof Button) {
@@ -576,7 +579,7 @@ public class PropsUi extends Props {
protected static void setLookOnWindows(final Widget widget, int style) {
final GuiResource gui = GuiResource.getInstance();
Font font = gui.getFontDefault();
- Color background = GuiResource.getInstance().getWidgetBackGroundColor();
+ Color background = gui.getWidgetBackGroundColor();
Color foreground = gui.getColorBlack();
if (widget instanceof Shell shell) {
@@ -608,6 +611,11 @@ public class PropsUi extends Props {
break;
case WIDGET_STYLE_TOOLBAR:
break;
+ case WIDGET_STYLE_EXPANDBAR:
+ if (PropsUi.getInstance().isDarkMode()) {
+ foreground = gui.getColorWhite();
+ }
+ break;
case WIDGET_STYLE_TAB:
CTabFolder tabFolder = (CTabFolder) widget;
tabFolder.setBorderVisible(true);
@@ -623,7 +631,7 @@ public class PropsUi extends Props {
case WIDGET_STYLE_PUSH_BUTTON:
break;
default:
- background = GuiResource.getInstance().getWidgetBackGroundColor();
+ background = gui.getWidgetBackGroundColor();
font = null;
break;
}
diff --git a/ui/src/main/java/org/apache/hop/ui/core/gui/GuiResource.java
b/ui/src/main/java/org/apache/hop/ui/core/gui/GuiResource.java
index 40d3d1f160..b900417717 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/gui/GuiResource.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/gui/GuiResource.java
@@ -196,6 +196,7 @@ public class GuiResource {
@Getter private Image imageEmpty;
@Getter private Image imageExpandAll;
@Getter private Image imageFunction;
+ @Getter private Image imageKeyboard;
@Getter private Image imageHelp;
@Getter private Image imageHide;
@Getter private Image imageHideResults;
@@ -480,6 +481,7 @@ public class GuiResource {
disposeImage(imageDown);
disposeImage(imageDuplicate);
disposeImage(imageFunction);
+ disposeImage(imageKeyboard);
disposeImage(imageHelp);
disposeImage(imageHide);
disposeImage(imageHideResults);
@@ -710,6 +712,8 @@ public class GuiResource {
imageExpandAll = loadAsResource(display, "ui/images/expand-all.svg",
ConstUi.SMALL_ICON_SIZE);
imageLabel = loadAsResource(display, "ui/images/label.svg",
ConstUi.SMALL_ICON_SIZE);
imageFunction = loadAsResource(display, "ui/images/function.svg",
ConstUi.SMALL_ICON_SIZE);
+ imageKeyboard = loadAsResource(display, "ui/images/keyboard.svg",
ConstUi.SMALL_ICON_SIZE);
+
imageNavigateBack =
loadAsResource(display, "ui/images/navigate-back.svg",
ConstUi.SMALL_ICON_SIZE);
imageNavigateForward =
diff --git
a/ui/src/main/java/org/apache/hop/ui/hopgui/file/pipeline/HopGuiPipelineGraph.java
b/ui/src/main/java/org/apache/hop/ui/hopgui/file/pipeline/HopGuiPipelineGraph.java
index 35d56fa225..c12b049db0 100644
---
a/ui/src/main/java/org/apache/hop/ui/hopgui/file/pipeline/HopGuiPipelineGraph.java
+++
b/ui/src/main/java/org/apache/hop/ui/hopgui/file/pipeline/HopGuiPipelineGraph.java
@@ -215,7 +215,7 @@ import org.eclipse.swt.widgets.ToolTip;
* This class handles the display of the pipelines in a graphical way using
icons, arrows, etc. One
* pipeline is handled per HopGuiPipelineGraph
*/
-@GuiPlugin(description = "The pipeline graph GUI plugin")
+@GuiPlugin(name = "i18n::PipelineGraph.Name", description = "The pipeline
graph GUI plugin")
@SuppressWarnings("java:S1104")
public class HopGuiPipelineGraph extends HopGuiAbstractGraph
implements IRedrawable,
diff --git
a/ui/src/main/java/org/apache/hop/ui/hopgui/file/workflow/HopGuiWorkflowGraph.java
b/ui/src/main/java/org/apache/hop/ui/hopgui/file/workflow/HopGuiWorkflowGraph.java
index 37378483ec..6e89f5bb27 100644
---
a/ui/src/main/java/org/apache/hop/ui/hopgui/file/workflow/HopGuiWorkflowGraph.java
+++
b/ui/src/main/java/org/apache/hop/ui/hopgui/file/workflow/HopGuiWorkflowGraph.java
@@ -176,7 +176,7 @@ import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.swt.widgets.ToolTip;
/** Handles the display of Workflows in HopGui, in a graphical form. */
-@GuiPlugin(description = "Workflow Graph tab")
+@GuiPlugin(name = "i18n::WorkflowGraph.Name", description = "Workflow Graph
GUI plugin")
@SuppressWarnings("java:S1104")
public class HopGuiWorkflowGraph extends HopGuiAbstractGraph
implements IRedrawable,
diff --git
a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/configuration/ConfigurationPerspective.java
b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/configuration/ConfigurationPerspective.java
index 067310b558..63155d1255 100644
---
a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/configuration/ConfigurationPerspective.java
+++
b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/configuration/ConfigurationPerspective.java
@@ -70,7 +70,9 @@ import org.eclipse.swt.widgets.TreeItem;
description = "i18n::ConfigurationPerspective.Description",
image = "ui/images/gear.svg",
documentationUrl = "/hop-gui/perspective-configuration.html")
-@GuiPlugin(description =
"i18n::HopConfigurationPerspective.GuiPlugin.Description")
+@GuiPlugin(
+ name = "i18n::ConfigurationPerspective.Name",
+ description = "i18n::HopConfigurationPerspective.GuiPlugin.Description")
public class ConfigurationPerspective implements IHopPerspective {
private static final Class<?> PKG = ConfigurationPerspective.class;
@@ -162,7 +164,7 @@ public class ConfigurationPerspective implements
IHopPerspective {
PropsUi.setLook(searchBox);
searchBox.setMessage(BaseMessages.getString(PKG,
"HopConfigurationperspective.Search.Text"));
FormData fdSearchBox = new FormData();
- fdSearchBox.left = new FormAttachment(0, PropsUi.getMargin());
+ fdSearchBox.left = new FormAttachment(0, 0);
fdSearchBox.top = new FormAttachment(0, PropsUi.getMargin());
fdSearchBox.right = new FormAttachment(100, -PropsUi.getMargin());
searchBox.setLayoutData(fdSearchBox);
@@ -174,7 +176,7 @@ public class ConfigurationPerspective implements
IHopPerspective {
FormData fdSashForm = new FormData();
fdSashForm.left = new FormAttachment(0, 0);
fdSashForm.top = new FormAttachment(searchBox, PropsUi.getMargin());
- fdSashForm.right = new FormAttachment(100, 0);
+ fdSashForm.right = new FormAttachment(100, -PropsUi.getMargin());
fdSashForm.bottom = new FormAttachment(100, 0);
sashForm.setLayoutData(fdSashForm);
diff --git
a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/configuration/tabs/ConfigKeyboardShortcutsTab.java
b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/configuration/tabs/ConfigKeyboardShortcutsTab.java
index 5e186c9bd5..70dd4c7c92 100644
---
a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/configuration/tabs/ConfigKeyboardShortcutsTab.java
+++
b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/configuration/tabs/ConfigKeyboardShortcutsTab.java
@@ -57,6 +57,7 @@ public class ConfigKeyboardShortcutsTab {
private static final Class<?> PKG = BaseDialog.class;
private Font monoFont;
+ private Color keyForegroundColor;
private Color keyBackgroundColor;
public ConfigKeyboardShortcutsTab() {
@@ -73,7 +74,7 @@ public class ConfigKeyboardShortcutsTab {
CTabItem wShortcutsTab = new CTabItem(wTabFolder, SWT.NONE);
wShortcutsTab.setFont(GuiResource.getInstance().getFontDefault());
wShortcutsTab.setText("Keyboard Shortcuts");
- wShortcutsTab.setImage(GuiResource.getInstance().getImageEdit());
+ wShortcutsTab.setImage(GuiResource.getInstance().getImageKeyboard());
// Main scrollable composite
ScrolledComposite scrolledComposite =
@@ -86,8 +87,11 @@ public class ConfigKeyboardShortcutsTab {
// Initialize colors and fonts
Display display = wTabFolder.getDisplay();
+ keyForegroundColor = display.getSystemColor(SWT.COLOR_DARK_GRAY);
keyBackgroundColor = new Color(display, 240, 240, 245);
- Color keyBorderColor = new Color(display, 180, 180, 190);
+ if (PropsUi.getInstance().isDarkMode()) {
+ keyBackgroundColor = new Color(display, 24, 24, 24);
+ }
// Create a monospace font for key labels
FontData[] fontData = display.getSystemFont().getFontData();
@@ -230,8 +234,8 @@ public class ConfigKeyboardShortcutsTab {
if (keyBackgroundColor != null && !keyBackgroundColor.isDisposed()) {
keyBackgroundColor.dispose();
}
- if (keyBorderColor != null && !keyBorderColor.isDisposed()) {
- keyBorderColor.dispose();
+ if (keyForegroundColor != null && !keyForegroundColor.isDisposed()) {
+ keyForegroundColor.dispose();
}
});
@@ -329,7 +333,7 @@ public class ConfigKeyboardShortcutsTab {
Label key = new Label(parent, SWT.CENTER | SWT.BORDER);
key.setText(text);
key.setBackground(keyBackgroundColor);
- key.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY));
+ key.setForeground(keyForegroundColor);
if (monoFont != null) {
key.setFont(monoFont);
}
@@ -590,7 +594,7 @@ public class ConfigKeyboardShortcutsTab {
Label symbolLabel = new Label(itemComposite, SWT.CENTER | SWT.BORDER);
symbolLabel.setText(symbol[0]);
symbolLabel.setBackground(keyBackgroundColor);
-
symbolLabel.setForeground(itemComposite.getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY));
+ symbolLabel.setForeground(keyForegroundColor);
if (monoFont != null) {
symbolLabel.setFont(monoFont);
}
@@ -606,7 +610,7 @@ public class ConfigKeyboardShortcutsTab {
Label descLabel = new Label(itemComposite, SWT.LEFT);
PropsUi.setLook(descLabel);
descLabel.setText(symbol[1]);
-
descLabel.setForeground(itemComposite.getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY));
+ descLabel.setForeground(keyForegroundColor);
FormData fdDesc = new FormData();
fdDesc.left = new FormAttachment(symbolLabel, margin / 2);
diff --git
a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/execution/ExecutionPerspective.java
b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/execution/ExecutionPerspective.java
index 8313966290..787927ebd0 100644
---
a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/execution/ExecutionPerspective.java
+++
b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/execution/ExecutionPerspective.java
@@ -93,7 +93,9 @@ import org.w3c.dom.Node;
description = "i18n::ExecutionPerspective.Description",
image = "ui/images/execution.svg",
documentationUrl = "/hop-gui/perspective-execution-information.html")
-@GuiPlugin
+@GuiPlugin(
+ name = "i18n::ExecutionPerspective.Name",
+ description = "i18n::ExecutionPerspective.Description")
public class ExecutionPerspective implements IHopPerspective, TabClosable {
public static final Class<?> PKG = ExecutionPerspective.class; // i18n
diff --git
a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/execution/PipelineExecutionViewer.java
b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/execution/PipelineExecutionViewer.java
index 37e6bac3d6..ac135715ff 100644
---
a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/execution/PipelineExecutionViewer.java
+++
b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/execution/PipelineExecutionViewer.java
@@ -109,7 +109,7 @@ import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolBar;
import org.w3c.dom.Node;
-@GuiPlugin
+@GuiPlugin(name = "i18n::PipelineExecutionViewer.Name")
public class PipelineExecutionViewer extends BaseExecutionViewer
implements IExecutionViewer, PaintListener, MouseListener {
private static final Class<?> PKG = PipelineExecutionViewer.class;
diff --git
a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/execution/WorkflowExecutionViewer.java
b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/execution/WorkflowExecutionViewer.java
index f745d0c4a0..522839198b 100644
---
a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/execution/WorkflowExecutionViewer.java
+++
b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/execution/WorkflowExecutionViewer.java
@@ -105,7 +105,7 @@ import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolBar;
import org.w3c.dom.Node;
-@GuiPlugin
+@GuiPlugin(name = "i18n::WorkflowExecutionViewer.Name")
public class WorkflowExecutionViewer extends BaseExecutionViewer
implements IExecutionViewer, PaintListener, MouseListener {
private static final Class<?> PKG = WorkflowExecutionViewer.class;
diff --git
a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/explorer/ExplorerPerspective.java
b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/explorer/ExplorerPerspective.java
index acc57af337..8e052f56da 100644
---
a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/explorer/ExplorerPerspective.java
+++
b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/explorer/ExplorerPerspective.java
@@ -134,7 +134,9 @@ import org.eclipse.swt.widgets.Widget;
description = "The Hop Explorer Perspective",
image = "ui/images/folder.svg",
documentationUrl = "/hop-gui/perspective-file-explorer.html")
-@GuiPlugin(description = "i18n::ExplorerPerspective.GuiPlugin.Description")
+@GuiPlugin(
+ name = "i18n::ExplorerPerspective.Name",
+ description = "i18n::ExplorerPerspective.GuiPlugin.Description")
@SuppressWarnings("java:S1104")
public class ExplorerPerspective implements IHopPerspective, TabClosable {
diff --git
a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/metadata/MetadataPerspective.java
b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/metadata/MetadataPerspective.java
index 6fc852d553..d7ac17fe58 100644
---
a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/metadata/MetadataPerspective.java
+++
b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/metadata/MetadataPerspective.java
@@ -100,7 +100,9 @@ import org.eclipse.swt.widgets.TreeItem;
description = "i18n::MetadataPerspective.Description",
image = "ui/images/metadata.svg",
documentationUrl = "/hop-gui/perspective-metadata.html")
-@GuiPlugin(description = "i18n::MetadataPerspective.GuiPlugin.Description")
+@GuiPlugin(
+ name = "i18n::MetadataPerspective.Name",
+ description = "i18n::MetadataPerspective.GuiPlugin.Description")
public class MetadataPerspective implements IHopPerspective, TabClosable {
public static final Class<?> PKG = MetadataPerspective.class; // i18n
diff --git
a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/pluginexplorer/HopPluginExplorePerspective.java
b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/pluginexplorer/HopPluginExplorePerspective.java
index d3f383371e..254d4e82ad 100644
---
a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/pluginexplorer/HopPluginExplorePerspective.java
+++
b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/pluginexplorer/HopPluginExplorePerspective.java
@@ -61,7 +61,9 @@ import org.eclipse.swt.widgets.TableItem;
description = "i18n::PluginExplorerPerspective.Description",
image = "ui/images/plugin.svg",
documentationUrl = "/hop-gui/perspective-plugin.html")
-@GuiPlugin(description =
"i18n::PluginExplorerPerspective.GuiPlugin.Description")
+@GuiPlugin(
+ name = "i18n::PluginExplorerPerspective.Name",
+ description = "i18n::PluginExplorerPerspective.GuiPlugin.Description")
public class HopPluginExplorePerspective implements IHopPerspective {
public static final Class<?> PKG = HopPluginExplorePerspective.class; // i18n
public static final String ID_PERSPECTIVE_TOOLBAR_ITEM =
"20030-perspective-plugins";
diff --git
a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/search/HopSearchPerspective.java
b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/search/HopSearchPerspective.java
index 22c43cae55..096c3d60d4 100644
---
a/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/search/HopSearchPerspective.java
+++
b/ui/src/main/java/org/apache/hop/ui/hopgui/perspective/search/HopSearchPerspective.java
@@ -64,7 +64,9 @@ import org.eclipse.swt.widgets.TableItem;
description = "i18n::HopSearchPerspective.Description",
image = "ui/images/search.svg",
documentationUrl = "/hop-gui/perspective-search.html")
-@GuiPlugin(description = "i18n::HopSearchPerspective.GuiPlugin.Description")
+@GuiPlugin(
+ name = "i18n::HopSearchPerspective.Name",
+ description = "i18n::HopSearchPerspective.GuiPlugin.Description")
public class HopSearchPerspective implements IHopPerspective {
private static final Class<?> PKG = HopSearchPerspective.class;
diff --git
a/ui/src/main/resources/org/apache/hop/ui/hopgui/file/pipeline/messages/messages_en_US.properties
b/ui/src/main/resources/org/apache/hop/ui/hopgui/file/pipeline/messages/messages_en_US.properties
index 1078da9da0..e3f83c21a9 100644
---
a/ui/src/main/resources/org/apache/hop/ui/hopgui/file/pipeline/messages/messages_en_US.properties
+++
b/ui/src/main/resources/org/apache/hop/ui/hopgui/file/pipeline/messages/messages_en_US.properties
@@ -101,6 +101,7 @@
HopPipelineFileType.ErrorDialog.PipelineDrawing.Message=Error creating new pipel
HopPipelineFileType.GuiAction.Pipeline.Name=Pipeline
HopPipelineFileType.GuiAction.Pipeline.Tooltip=Creates a new pipeline. Process
your data using a network of transforms running in parallel
HopPipelineFileType.New.Text=New pipeline
+PipelineGraph.Name=Pipeline graph
PipelineGraph.Toolbar.AlignBottom.Tooltip=Align the transforms with the
bottom-most transform in your selection
PipelineGraph.Toolbar.AlignLeft.Tooltip=Align the transforms with the
left-most transform in your selection
PipelineGraph.Toolbar.AlignRight.Tooltip=Align the transforms with the
right-most transform in your selection
diff --git
a/ui/src/main/resources/org/apache/hop/ui/hopgui/file/workflow/messages/messages_en_US.properties
b/ui/src/main/resources/org/apache/hop/ui/hopgui/file/workflow/messages/messages_en_US.properties
index e265a65009..d4464d9f26 100644
---
a/ui/src/main/resources/org/apache/hop/ui/hopgui/file/workflow/messages/messages_en_US.properties
+++
b/ui/src/main/resources/org/apache/hop/ui/hopgui/file/workflow/messages/messages_en_US.properties
@@ -145,6 +145,7 @@ WorkflowGraph.Hop.Tooltip.EvaluatingTrue=After the
execution of {0}, the result
WorkflowGraph.Hop.Tooltip.Parallel=Parallel execution.{1}All actions after {0}
will be executed in parallel.{1}That is ALL actions, not just the next
ones.{1}If you want to resume serial processing, put the parallel actions in a
sub-workflow.
WorkflowGraph.Hop.Tooltip.Unconditional=This is an unconditional hop. That
means that regardless of the execution result of {0}, the next actions will
always be executed.
WorkflowGraph.LogTab.Name=Logging
+WorkflowGraph.Name=Workflow Graph
WorkflowGraph.ParallelActionsWarning.DialogMessage=The current implementation
of parallel execution of actions does NOT perform any concurrency checking at
all.\nConsider at least to do this yourself with file locking or any other
basic or advanced system.\n\nPlease also note that because workflow actions are
executed with backtracking, not only the next actions are launched in parallel,
but also the ones that follow.
WorkflowGraph.ParallelActionsWarning.DialogTitle=Warning
WorkflowGraph.ParallelActionsWarning.Option1=I understand
diff --git
a/ui/src/main/resources/org/apache/hop/ui/hopgui/perspective/execution/messages/messages_en_US.properties
b/ui/src/main/resources/org/apache/hop/ui/hopgui/perspective/execution/messages/messages_en_US.properties
index 1d78ccc4f1..6f1b40572d 100644
---
a/ui/src/main/resources/org/apache/hop/ui/hopgui/perspective/execution/messages/messages_en_US.properties
+++
b/ui/src/main/resources/org/apache/hop/ui/hopgui/perspective/execution/messages/messages_en_US.properties
@@ -26,6 +26,7 @@ PipelineExecutionViewer.DataTab.Title=Data
PipelineExecutionViewer.InfoTab.Title=Info
PipelineExecutionViewer.LogTab.Title=Log
PipelineExecutionViewer.MetricsTab.Title=Metrics
+PipelineExecutionViewer.Name=Pipeline execution viewer
PipelineExecutionViewer.StatusTab.Title=Status
PipelineExecutionViewer.ToolbarElement.DrillDown.Tooltip=Drill down into
selected transform: open referenced pipeline or workflow
PipelineExecutionViewer.ToolbarElement.GoUp.Tooltip=Go to the parent execution
@@ -36,6 +37,7 @@
PipelineExecutionViewer.ToolbarElement.ViewMetadata.Tooltip=View the metadata us
WorkflowExecutionViewer.DataTab.Title=Data
WorkflowExecutionViewer.InfoTab.Title=Info
WorkflowExecutionViewer.LogTab.Title=Log
+WorkflowExecutionViewer.Name=Workflow execution viewer
WorkflowExecutionViewer.ToolbarElement.DrillDown.Tooltip=Drill down into
selected action: : open referenced pipeline or workflow
WorkflowExecutionViewer.ToolbarElement.GoUp.Tooltip=Go to the parent execution
WorkflowExecutionViewer.ToolbarElement.NavigateToEditor.Tooltip=Edit this
workflow
diff --git a/ui/src/main/resources/ui/images/keyboard.svg
b/ui/src/main/resources/ui/images/keyboard.svg
new file mode 100644
index 0000000000..fb32f6232d
--- /dev/null
+++ b/ui/src/main/resources/ui/images/keyboard.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24">
+ <path fill="#0e3a5a" d="M20 5H4c-1.1 0-1.99.9-1.99 2L2 17c0 1.1.9 2 2
2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2m-9 3h2v2h-2zm0 3h2v2h-2zM8 8h2v2H8zm0
3h2v2H8zm-1 2H5v-2h2zm0-3H5V8h2zm9 7H8v-2h8zm0-4h-2v-2h2zm0-3h-2V8h2zm3
3h-2v-2h2zm0-3h-2V8h2z"/>
+</svg>