This is an automated email from the ASF dual-hosted git repository.

hansva pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hop.git


The following commit(s) were added to refs/heads/master by this push:
     new c0eb0bb6c1 Fix #2395 Improve the look & feel of the widgets per 
operating system - Some tweaks for Windows dark mode - Add some missings 
setLook - MetaSelectionLine initializes its own look - StyledTextComp propagate 
colors to text widget - Increase the height of the tab folder for Windows
     new 3dd7894cb7 Merge pull request #2436 from nadment/2435
c0eb0bb6c1 is described below

commit c0eb0bb6c1a896379b91db0589992f3a02661d59
Author: Nicolas Adment <[email protected]>
AuthorDate: Sat Feb 18 17:48:52 2023 +0100

    Fix #2395 Improve the look & feel of the widgets per operating system
    - Some tweaks for Windows dark mode
    - Add some missings setLook
    - MetaSelectionLine initializes its own look
    - StyledTextComp propagate colors to text widget
    - Increase the height of the tab folder for Windows
    
    Fix #2435
    - Bump org.eclipse.platform.version to 3.122.0
    - Bump org.eclipse.rap.version to 3.23
---
 core/src/main/java/org/apache/hop/core/Props.java  |   3 +-
 .../hop/ui/testing/PipelineUnitTestEditor.java     |   1 +
 .../transforms/metainject/MetaInjectDialog.java    |  16 +-
 pom.xml                                            |   2 +-
 rap/pom.xml                                        |   2 +-
 .../main/java/org/apache/hop/ui/core/PropsUi.java  | 214 +++++++++++++++++----
 .../hop/ui/core/database/DatabaseMetaEditor.java   |   2 +-
 .../apache/hop/ui/core/dialog/ContextDialog.java   |   1 +
 .../apache/hop/ui/core/vfs/HopVfsFileDialog.java   |  10 +-
 .../hop/ui/core/widget/MetaSelectionLine.java      |  13 +-
 .../apache/hop/ui/core/widget/StyledTextComp.java  |  12 ++
 .../main/java/org/apache/hop/ui/hopgui/HopGui.java |   5 +
 .../config/PipelineRunConfigurationEditor.java     |   1 -
 .../PipelineExecutionConfigurationDialog.java      |   3 +-
 .../workflow/actions/start/ActionStartDialog.java  |   2 +
 .../config/WorkflowRunConfigurationEditor.java     |   1 -
 .../WorkflowExecutionConfigurationDialog.java      |   3 +-
 17 files changed, 228 insertions(+), 63 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 17a809649a..69c4cbebb4 100644
--- a/core/src/main/java/org/apache/hop/core/Props.java
+++ b/core/src/main/java/org/apache/hop/core/Props.java
@@ -94,7 +94,8 @@ public class Props implements Cloneable {
   public static final int WIDGET_STYLE_TAB = 4;
   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 Props() {
     log = new LogChannel(STRING_USER_PREFERENCES);
   }
diff --git 
a/plugins/misc/testing/src/main/java/org/apache/hop/ui/testing/PipelineUnitTestEditor.java
 
b/plugins/misc/testing/src/main/java/org/apache/hop/ui/testing/PipelineUnitTestEditor.java
index c7205c1a30..17f496ea21 100644
--- 
a/plugins/misc/testing/src/main/java/org/apache/hop/ui/testing/PipelineUnitTestEditor.java
+++ 
b/plugins/misc/testing/src/main/java/org/apache/hop/ui/testing/PipelineUnitTestEditor.java
@@ -132,6 +132,7 @@ public class PipelineUnitTestEditor extends 
MetadataEditor<PipelineUnitTest> {
     fdlTestType.right = new FormAttachment(middle, -margin);
     wlTestType.setLayoutData(fdlTestType);
     wTestType = new Combo(parent, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
+    PropsUi.setLook(wTestType);
     FormData fdTestType = new FormData();
     fdTestType.top = new FormAttachment(wlTestType, 0, SWT.CENTER);
     fdTestType.left = new FormAttachment(middle, 0);
diff --git 
a/plugins/transforms/metainject/src/main/java/org/apache/hop/pipeline/transforms/metainject/MetaInjectDialog.java
 
b/plugins/transforms/metainject/src/main/java/org/apache/hop/pipeline/transforms/metainject/MetaInjectDialog.java
index 072f452b5a..1172bf8a10 100644
--- 
a/plugins/transforms/metainject/src/main/java/org/apache/hop/pipeline/transforms/metainject/MetaInjectDialog.java
+++ 
b/plugins/transforms/metainject/src/main/java/org/apache/hop/pipeline/transforms/metainject/MetaInjectDialog.java
@@ -202,7 +202,7 @@ public class MetaInjectDialog extends BaseTransformDialog 
implements ITransformD
         new Button[] {
           wOk, wGet, wCancel,
         },
-        props.getMargin(),
+        PropsUi.getMargin(),
         null);
 
     // Transform Name line
@@ -244,7 +244,7 @@ public class MetaInjectDialog extends BaseTransformDialog 
implements ITransformD
     PropsUi.setLook(wbBrowse);
     wbBrowse.setText(BaseMessages.getString(PKG, 
"MetaInjectDialog.Browse.Label"));
     FormData fdBrowse = new FormData();
-    fdBrowse.right = new FormAttachment(100, -props.getMargin());
+    fdBrowse.right = new FormAttachment(100, -PropsUi.getMargin());
     fdBrowse.top = new FormAttachment(wlPath, Const.isOSX() ? 0 : 5);
     wbBrowse.setLayoutData(fdBrowse);
 
@@ -253,7 +253,7 @@ public class MetaInjectDialog extends BaseTransformDialog 
implements ITransformD
     FormData fdTransformation = new FormData();
     fdTransformation.left = new FormAttachment(0, 0);
     fdTransformation.top = new FormAttachment(wlPath, 5);
-    fdTransformation.right = new FormAttachment(wbBrowse, -props.getMargin());
+    fdTransformation.right = new FormAttachment(wbBrowse, 
-PropsUi.getMargin());
     wPath.setLayoutData(fdTransformation);
     wPath.addFocusListener(
         new FocusAdapter() {
@@ -387,7 +387,7 @@ public class MetaInjectDialog extends BaseTransformDialog 
implements ITransformD
     // START OF OPTIONS TAB ///
     // ////////////////////////
 
-    int margin = props.getMargin();
+    int margin = PropsUi.getMargin();
 
     CTabItem wOptionsTab = new CTabItem(wTabFolder, SWT.NONE);
     wOptionsTab.setFont(GuiResource.getInstance().getFontDefault());
@@ -614,9 +614,8 @@ public class MetaInjectDialog extends BaseTransformDialog 
implements ITransformD
     wInjectComp.setLayout(fileLayout);
 
     // Add a search bar at the top...
-    ToolBar treeTb = new ToolBar(wInjectComp, SWT.HORIZONTAL | SWT.FLAT);
-    PropsUi.setLook(treeTb);
-
+    ToolBar treeTb = new ToolBar(wInjectComp, SWT.HORIZONTAL | SWT.FLAT);    
+    PropsUi.setLook(treeTb, PropsUi.WIDGET_STYLE_DEFAULT);    
     ToolItem wFilter = new ToolItem(treeTb, SWT.SEPARATOR);
     wSearchText = new Text(treeTb, SWT.SEARCH | SWT.CANCEL | SWT.ICON_SEARCH | 
SWT.ICON_CANCEL);
     wSearchText.setData(BaseDialog.NO_DEFAULT_HANDLER, true);
@@ -669,7 +668,8 @@ public class MetaInjectDialog extends BaseTransformDialog 
implements ITransformD
     fdTree.right = new FormAttachment(100, 0);
     fdTree.bottom = new FormAttachment(100, 0);
     wTree.setLayoutData(fdTree);
-
+    PropsUi.setLook(wTree);
+    
     ColumnInfo[] colinf =
         new ColumnInfo[] {
           new ColumnInfo(
diff --git a/pom.xml b/pom.xml
index 632bc80fcf..dd293bb6d2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -166,7 +166,7 @@
         <okhttp.version>4.10.0</okhttp.version>
         <opencensus-api.version>0.31.1</opencensus-api.version>
         
<opencensus-contrib-http-util.version>0.31.1</opencensus-contrib-http-util.version>
-        <org.eclipse.platform.version>3.121.0</org.eclipse.platform.version>
+        <org.eclipse.platform.version>3.122.0</org.eclipse.platform.version>
         <org.eclipse.commands.version>3.9.600</org.eclipse.commands.version>
         <org.eclipse.equinox.version>3.10.600</org.eclipse.equinox.version>
         <opencsv.version>5.7.1</opencsv.version>
diff --git a/rap/pom.xml b/rap/pom.xml
index c48590b36c..f3ec3aba05 100644
--- a/rap/pom.xml
+++ b/rap/pom.xml
@@ -32,7 +32,7 @@
     </parent>
 
     <properties>
-        <rap.version>3.22.0</rap.version>
+        <rap.version>3.23.0</rap.version>
     </properties>
 
 
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 046fa7b950..caf34dc4ce 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
@@ -48,6 +48,7 @@ import org.eclipse.swt.widgets.Layout;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.Tree;
 import org.eclipse.swt.widgets.Widget;
 
 import java.util.HashMap;
@@ -153,43 +154,29 @@ public class PropsUi extends Props {
       }
     }
     
-    // The user manually selected Dark Mode
-    // We'll try to change settings to make this possible.
-    //
+    // Various tweaks to improve dark theme experience on Windows
     if (OsHelper.isWindows() && isDarkMode()) {
-      
display.setData("org.eclipse.swt.internal.win32.useDarkModeExplorerTheme", 
Boolean.TRUE);
-      display.setData("org.eclipse.swt.internal.win32.useShellTitleColoring", 
Boolean.TRUE);
-      display.setData(
-          "org.eclipse.swt.internal.win32.menuBarForegroundColor",
+      
display.setData("org.eclipse.swt.internal.win32.useDarkModeExplorerTheme", 
true);
+      display.setData("org.eclipse.swt.internal.win32.useShellTitleColoring", 
true);
+      display.setData("org.eclipse.swt.internal.win32.menuBarForegroundColor",
           new Color(display, 0xD0, 0xD0, 0xD0));
-      display.setData(
-          "org.eclipse.swt.internal.win32.menuBarBackgroundColor",
+      display.setData("org.eclipse.swt.internal.win32.menuBarBackgroundColor",
           new Color(display, 0x30, 0x30, 0x30));
-      display.setData(
-          "org.eclipse.swt.internal.win32.menuBarBorderColor",
+      display.setData("org.eclipse.swt.internal.win32.menuBarBorderColor",
           new Color(display, 0x50, 0x50, 0x50));
-      display.setData("org.eclipse.swt.internal.win32.Canvas.use_WS_BORDER", 
Boolean.TRUE);
-      display.setData("org.eclipse.swt.internal.win32.List.use_WS_BORDER", 
Boolean.TRUE);
-      display.setData("org.eclipse.swt.internal.win32.Table.use_WS_BORDER", 
Boolean.TRUE);
-      display.setData("org.eclipse.swt.internal.win32.Combo.use_WS_BORDER", 
Boolean.TRUE);
-      display.setData("org.eclipse.swt.internal.win32.Text.use_WS_BORDER", 
Boolean.TRUE);
-      display.setData("org.eclipse.swt.internal.win32.Tree.use_WS_BORDER", 
Boolean.TRUE);
-      display.setData(
-          "org.eclipse.swt.internal.win32.Table.headerLineColor",
+      display.setData("org.eclipse.swt.internal.win32.all.use_WS_BORDER", 
true);
+      display.setData("org.eclipse.swt.internal.win32.Table.headerLineColor",
           new Color(display, 0x50, 0x50, 0x50));
-      display.setData(
-          "org.eclipse.swt.internal.win32.Label.disabledForegroundColor",
+      
display.setData("org.eclipse.swt.internal.win32.Label.disabledForegroundColor",
           new Color(display, 0x80, 0x80, 0x80));
-      display.setData("org.eclipse.swt.internal.win32.Combo.useDarkTheme", 
Boolean.TRUE);
-      display.setData(
-          "org.eclipse.swt.internal.win32.ToolBar.backgroundColor",
+      display.setData("org.eclipse.swt.internal.win32.Combo.useDarkTheme", 
true);
+      display.setData("org.eclipse.swt.internal.win32.ToolBar.backgroundColor",
           new Color(display, 0xD0, 0xD0, 0xD0));
-      display.setData(
-          "org.eclipse.swt.internal.win32.Combo.backgroundColor",
+      display.setData("org.eclipse.swt.internal.win32.Combo.backgroundColor",
           new Color(display, 0xD0, 0xD0, 0xD0));
-      display.setData("org.eclipse.swt.internal.win32.ProgressBar.useColors", 
Boolean.TRUE);
+      display.setData("org.eclipse.swt.internal.win32.ProgressBar.useColors", 
true);
     }
-
+    
     if (display != null) {
       FontData fontData = getDefaultFont();
       setProperty(STRING_FONT_DEFAULT_NAME, fontData.getName());
@@ -481,8 +468,10 @@ public class PropsUi extends Props {
 
   public static void setLook(Widget widget) {
     int style = WIDGET_STYLE_DEFAULT;
-    if (widget instanceof Table) {
+    if (widget instanceof Table ) {
       style = WIDGET_STYLE_TABLE;
+    } else if (widget instanceof Tree) {
+      style = WIDGET_STYLE_TREE;
     } else if (widget instanceof ToolBar) {
       style = WIDGET_STYLE_TOOLBAR;
     } else if (widget instanceof CTabFolder) {
@@ -498,15 +487,109 @@ public class PropsUi extends Props {
     }
 
     setLook(widget, style);
-
+     
     if (widget instanceof Composite) {
-      for (Control child : ((Composite) widget).getChildren()) {
+      Composite composite = (Composite) widget;
+      for (Control child : composite.getChildren()) {
         setLook(child);
       }
     }
   }
 
   public static void setLook(final Widget widget, int style) {
+    if (OsHelper.isWindows()) {
+      setLookOnWindows(widget, style);
+    } else if (OsHelper.isMac()) {
+      setLookOnMac(widget, style);
+    } else {
+      setLookOnLinux(widget, style);
+    }
+  }
+  
+  protected static void setLookOnWindows(final Widget widget, int style) {
+    final GuiResource gui = GuiResource.getInstance();
+    Font font = gui.getFontDefault();
+    Color background = null;
+    Color foreground = null; 
+    
+    if ( widget instanceof Shell ) {
+      background = gui.getColorWhite();
+      foreground = gui.getColorBlack();
+      Shell shell = (Shell) widget;
+      shell.setBackgroundMode(SWT.INHERIT_FORCE);
+      shell.setForeground(gui.getColorBlack());
+      shell.setBackground(gui.getColorWhite());
+      return;
+    }
+    
+    switch (style) {
+      case WIDGET_STYLE_DEFAULT:
+        background = gui.getColorWhite();
+        foreground = gui.getColorBlack();
+        break;
+      case WIDGET_STYLE_FIXED:
+        font = gui.getFontFixed();
+        background = gui.getColorWhite();
+        foreground = gui.getColorBlack();
+        break;
+      case WIDGET_STYLE_TABLE: 
+        if (PropsUi.getInstance().isDarkMode()) {
+          background = gui.getColorWhite();
+          foreground = gui.getColorBlack();       
+          Table table = (Table) widget;  
+          table.setHeaderBackground(gui.getColorLightGray());
+          table.setHeaderForeground(gui.getColorDarkGray());       
+        }
+        break;
+      case WIDGET_STYLE_TREE: 
+        if (PropsUi.getInstance().isDarkMode()) {
+          background = gui.getColorWhite();
+          foreground = gui.getColorBlack();
+          Tree tree = (Tree) widget;
+          tree.setHeaderBackground(gui.getColorLightGray());
+          tree.setHeaderForeground(gui.getColorDarkGray());
+        }
+        break;
+      case WIDGET_STYLE_TOOLBAR:
+        if (PropsUi.getInstance().isDarkMode() ) {
+          background = gui.getColorLightGray();
+          foreground = gui.getColorBlack();
+        }
+        break;
+      case WIDGET_STYLE_TAB:
+        CTabFolder tabFolder = (CTabFolder) widget;
+        tabFolder.setBorderVisible(true);
+        tabFolder.setTabHeight(28);        
+        if (PropsUi.getInstance().isDarkMode()) {
+          tabFolder.setBackground(gui.getColorWhite());
+          tabFolder.setForeground(gui.getColorBlack());
+          tabFolder.setSelectionBackground(gui.getColorWhite());
+          tabFolder.setSelectionForeground(gui.getColorBlack());
+        }
+        break;
+      case WIDGET_STYLE_PUSH_BUTTON:   
+        break;
+      default:
+        background = gui.getColorGray();
+        font = null;
+        break;
+    }
+
+    if (font != null && !font.isDisposed() && (widget instanceof Control)) {
+      ((Control) widget).setFont(font);
+    }
+
+    if (background != null && !background.isDisposed() && (widget instanceof 
Control)) {
+      ((Control) widget).setBackground(background);
+    }
+
+    if (foreground != null && !foreground.isDisposed() && (widget instanceof 
Control)) {
+      ((Control) widget).setForeground(foreground);
+    }    
+  }
+  
+  
+  protected static void setLookOnMac(final Widget widget, int style) {
     final GuiResource gui = GuiResource.getInstance();
     Font font = gui.getFontDefault();
     Color background = gui.getColorWhite();
@@ -534,11 +617,13 @@ public class PropsUi extends Props {
       case WIDGET_STYLE_TABLE:
         background = gui.getColorLightGray();
         foreground = gui.getColorDarkGray();
-
-        Table table = (Table) widget;
+        Table table = (Table) widget;  
         table.setHeaderBackground(gui.getColorLightGray());
         table.setHeaderForeground(gui.getColorDarkGray());
         break;
+      case WIDGET_STYLE_TREE:
+        // TODO: Adjust for Linux
+        break;
       case WIDGET_STYLE_TOOLBAR:
         if (PropsUi.getInstance().isDarkMode()) {
           background = gui.getColorLightGray();
@@ -576,7 +661,70 @@ public class PropsUi extends Props {
       ((Control) widget).setForeground(foreground);
     }
   }
+  
+  protected static void setLookOnLinux(final Widget widget, int style) {
+    final GuiResource gui = GuiResource.getInstance();
+    Font font = gui.getFontDefault();
+    Color background = gui.getColorWhite();
+    Color foreground = gui.getColorBlack();
 
+    switch (style) {
+      case WIDGET_STYLE_DEFAULT:
+        break;
+      case WIDGET_STYLE_OSX_GROUP:
+        // TODO: Adjust for Linux
+        break;
+      case WIDGET_STYLE_FIXED:
+        font = gui.getFontFixed();
+        break;
+      case WIDGET_STYLE_TABLE:
+        background = gui.getColorLightGray();
+        foreground = gui.getColorDarkGray();
+        Table table = (Table) widget;  
+        table.setHeaderBackground(gui.getColorLightGray());
+        table.setHeaderForeground(gui.getColorDarkGray());
+        break;
+      case WIDGET_STYLE_TREE:
+        // TODO: Adjust for Linux
+        break;
+      case WIDGET_STYLE_TOOLBAR:
+        if (PropsUi.getInstance().isDarkMode()) {
+          background = gui.getColorLightGray();
+        } else {
+          background = gui.getColorDemoGray();
+        }
+        break;
+      case WIDGET_STYLE_TAB:
+        CTabFolder tabFolder = (CTabFolder) widget;
+        tabFolder.setBorderVisible(true);
+        tabFolder.setBackground(gui.getColorGray());
+        tabFolder.setForeground(gui.getColorBlack());
+        tabFolder.setSelectionBackground(gui.getColorWhite());
+        tabFolder.setSelectionForeground(gui.getColorBlack());
+        break;
+      case WIDGET_STYLE_PUSH_BUTTON:
+        background = null;
+        foreground = null;
+        break;
+      default:
+        background = gui.getColorBackground();
+        font = null;
+        break;
+    }
+
+    if (font != null && !font.isDisposed() && (widget instanceof Control)) {
+      ((Control) widget).setFont(font);
+    }
+
+    if (background != null && !background.isDisposed() && (widget instanceof 
Control)) {
+      ((Control) widget).setBackground(background);
+    }
+
+    if (foreground != null && !foreground.isDisposed() && (widget instanceof 
Control)) {
+      ((Control) widget).setForeground(foreground);
+    }
+  }
+  
   /**
    * @return Returns the display.
    */
diff --git 
a/ui/src/main/java/org/apache/hop/ui/core/database/DatabaseMetaEditor.java 
b/ui/src/main/java/org/apache/hop/ui/core/database/DatabaseMetaEditor.java
index b9cee7a216..6a05f63db3 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/database/DatabaseMetaEditor.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/database/DatabaseMetaEditor.java
@@ -267,7 +267,7 @@ public class DatabaseMetaEditor extends 
MetadataEditor<DatabaseMeta> {
     fdToolBar.right = new FormAttachment(100, 0);
     fdToolBar.top = new FormAttachment(0, 0);
     wToolBar.setLayoutData(fdToolBar);
-    PropsUi.setLook(wToolBar);
+    PropsUi.setLook(wToolBar, PropsUi.WIDGET_STYLE_DEFAULT);
 
     ToolItem item = new ToolItem(wToolBar, SWT.PUSH);
     item.setImage(GuiResource.getInstance().getImageHelpWeb());
diff --git a/ui/src/main/java/org/apache/hop/ui/core/dialog/ContextDialog.java 
b/ui/src/main/java/org/apache/hop/ui/core/dialog/ContextDialog.java
index bf15e0ae33..735c57ce59 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/dialog/ContextDialog.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/dialog/ContextDialog.java
@@ -389,6 +389,7 @@ public class ContextDialog extends Dialog {
             searchComposite,
             SWT.LEFT | SWT.BORDER | SWT.SINGLE | SWT.SEARCH | SWT.ICON_SEARCH 
| SWT.ICON_CANCEL);
     wSearch.setLayoutData(new GridData(GridData.FILL_BOTH));
+    PropsUi.setLook(wSearch, Props.WIDGET_STYLE_TOOLBAR);
 
     // Create a toolbar at the right of the search bar...
     //
diff --git a/ui/src/main/java/org/apache/hop/ui/core/vfs/HopVfsFileDialog.java 
b/ui/src/main/java/org/apache/hop/ui/core/vfs/HopVfsFileDialog.java
index 3c959e1768..147f3d582f 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/vfs/HopVfsFileDialog.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/vfs/HopVfsFileDialog.java
@@ -296,7 +296,7 @@ public class HopVfsFileDialog implements IFileDialog, 
IDirectoryDialog {
     wCancel.addListener(SWT.Selection, e -> cancel());
 
     BaseTransformDialog.positionBottomButtons(
-        shell, new Button[] {wOk, wCancel}, props.getMargin(), null);
+        shell, new Button[] {wOk, wCancel}, PropsUi.getMargin(), null);
 
     
///////////////////////////////////////////////////////////////////////////////////////////////////////
     // On top there are the navigation
@@ -316,9 +316,9 @@ public class HopVfsFileDialog implements IFileDialog, 
IDirectoryDialog {
 
     // A toolbar above the browser, below the filename
     //
-    ToolBar navigateToolBar = new ToolBar(navigateComposite, SWT.LEFT | 
SWT.HORIZONTAL);
+    ToolBar navigateToolBar = new ToolBar(navigateComposite, SWT.LEFT | 
SWT.HORIZONTAL);    
     navigateToolBar.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, 
true));
-    PropsUi.setLook(navigateToolBar);
+    PropsUi.setLook(navigateToolBar, PropsUi.WIDGET_STYLE_DEFAULT);
 
     navigateToolbarWidgets = new GuiToolbarWidgets();
     navigateToolbarWidgets.registerGuiPluginObject(this);
@@ -344,9 +344,9 @@ public class HopVfsFileDialog implements IFileDialog, 
IDirectoryDialog {
     SashForm sashForm = new SashForm(shell, SWT.HORIZONTAL);
     FormData fdSashForm = new FormData();
     fdSashForm.left = new FormAttachment(0, 0);
-    fdSashForm.top = new FormAttachment(navigateComposite, props.getMargin());
+    fdSashForm.top = new FormAttachment(navigateComposite, 
PropsUi.getMargin());
     fdSashForm.right = new FormAttachment(100, 0);
-    fdSashForm.bottom = new FormAttachment(wOk, (int) (-props.getMargin() * 
props.getZoomFactor()));
+    fdSashForm.bottom = new FormAttachment(wOk, (int) (-PropsUi.getMargin() * 
props.getZoomFactor()));
     sashForm.setLayoutData(fdSashForm);
 
     PropsUi.setLook(sashForm);
diff --git 
a/ui/src/main/java/org/apache/hop/ui/core/widget/MetaSelectionLine.java 
b/ui/src/main/java/org/apache/hop/ui/core/widget/MetaSelectionLine.java
index aef69d19a5..5f12968d28 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/widget/MetaSelectionLine.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/widget/MetaSelectionLine.java
@@ -187,20 +187,19 @@ public class MetaSelectionLine<T extends IHopMetadata> 
extends Composite {
 
     // Toolbar for default actions
     //
-    wToolBar = new ToolBar(this, SWT.FLAT | SWT.HORIZONTAL);
+    wToolBar = new ToolBar(this, SWT.FLAT | SWT.HORIZONTAL);    
+    PropsUi.setLook(wToolBar, PropsUi.WIDGET_STYLE_DEFAULT);
     FormData fdToolBar = new FormData();
     fdToolBar.right = new FormAttachment(100, 0);
     fdToolBar.top = new FormAttachment(0, 0);
     wToolBar.setLayoutData(fdToolBar);
-    //wToolBar.setBackgroundMode(SWT.INHERIT_DEFAULT);
-    wToolBar.setBackground(GuiResource.getInstance().getColorGreen());
-    //wToolBar.setForeground(GuiResource.getInstance().getColorBackground());
-
+    
     // Add more toolbar items from plugins.
     //
     GuiToolbarWidgets toolbarWidgets = new GuiToolbarWidgets();
-    toolbarWidgets.registerGuiPluginObject(this);
-    
toolbarWidgets.setItemBackgroundColor(GuiResource.getInstance().getColorBackground());
+    toolbarWidgets.registerGuiPluginObject(this); 
+    // Removed for Windows dark mode
+    // 
toolbarWidgets.setItemBackgroundColor(GuiResource.getInstance().getColorBackground());
     toolbarWidgets.createToolbarWidgets(wToolBar, 
GUI_PLUGIN_TOOLBAR_PARENT_ID);
 
     int textFlags = SWT.SINGLE | SWT.LEFT | SWT.BORDER;
diff --git a/ui/src/main/java/org/apache/hop/ui/core/widget/StyledTextComp.java 
b/ui/src/main/java/org/apache/hop/ui/core/widget/StyledTextComp.java
index 8e096800f9..9a35f71351 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/widget/StyledTextComp.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/widget/StyledTextComp.java
@@ -162,6 +162,18 @@ public class StyledTextComp extends Composite {
     textWidget.setSelection(arg0, arg1);
   }
 
+  @Override
+  public void setBackground(Color color) {    
+    super.setBackground(color);
+    textWidget.setBackground(color);
+  }
+
+  @Override
+  public void setForeground(Color color) {
+    super.setForeground(color);
+    textWidget.setForeground(color);
+  }
+  
   @Override
   public void setFont(Font fnt) {
     textWidget.setFont(fnt);
diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/HopGui.java 
b/ui/src/main/java/org/apache/hop/ui/hopgui/HopGui.java
index 0ce39a97d6..8ee185a083 100644
--- a/ui/src/main/java/org/apache/hop/ui/hopgui/HopGui.java
+++ b/ui/src/main/java/org/apache/hop/ui/hopgui/HopGui.java
@@ -590,6 +590,11 @@ public class HopGui
     // Bootstrap Hop
     //
     Display display = new Display();
+    
+    // Initialize early for some tweaks (before shell creation)
+    //
+    PropsUi.getInstance();
+    
     return display;
   }
 
diff --git 
a/ui/src/main/java/org/apache/hop/ui/pipeline/config/PipelineRunConfigurationEditor.java
 
b/ui/src/main/java/org/apache/hop/ui/pipeline/config/PipelineRunConfigurationEditor.java
index d580c903e4..c843f346d7 100644
--- 
a/ui/src/main/java/org/apache/hop/ui/pipeline/config/PipelineRunConfigurationEditor.java
+++ 
b/ui/src/main/java/org/apache/hop/ui/pipeline/config/PipelineRunConfigurationEditor.java
@@ -242,7 +242,6 @@ public class PipelineRunConfigurationEditor extends 
MetadataEditor<PipelineRunCo
                 PKG, 
"PipelineRunConfigurationDialog.label.ExecutionInfoLocation"),
             BaseMessages.getString(
                 PKG, 
"PipelineRunConfigurationDialog.toolTip.ExecutionInfoLocation"));
-    PropsUi.setLook(wExecutionInfoLocation);
     FormData fdExecutionInfoLocation = new FormData();
     fdExecutionInfoLocation.top = new FormAttachment(lastControl, margin);
     fdExecutionInfoLocation.left = new FormAttachment(0, 0); // To the right 
of the label
diff --git 
a/ui/src/main/java/org/apache/hop/ui/pipeline/dialog/PipelineExecutionConfigurationDialog.java
 
b/ui/src/main/java/org/apache/hop/ui/pipeline/dialog/PipelineExecutionConfigurationDialog.java
index e36bcf4f93..c1c0853cac 100644
--- 
a/ui/src/main/java/org/apache/hop/ui/pipeline/dialog/PipelineExecutionConfigurationDialog.java
+++ 
b/ui/src/main/java/org/apache/hop/ui/pipeline/dialog/PipelineExecutionConfigurationDialog.java
@@ -155,10 +155,9 @@ public class PipelineExecutionConfigurationDialog extends 
ConfigurationDialog {
             runConfigTooltip,
             true);
     wRunConfigurationControl = wRunConfiguration;
-    PropsUi.setLook(wRunConfiguration);
     FormData fdRunConfiguration = new FormData();
     fdRunConfiguration.right = new FormAttachment(100, 0);
-    fdRunConfiguration.top = new FormAttachment(0, props.getMargin());
+    fdRunConfiguration.top = new FormAttachment(0, PropsUi.getMargin());
     fdRunConfiguration.left = new FormAttachment(0, 0);
     wRunConfiguration.setLayoutData(fdRunConfiguration);
   }
diff --git 
a/ui/src/main/java/org/apache/hop/ui/workflow/actions/start/ActionStartDialog.java
 
b/ui/src/main/java/org/apache/hop/ui/workflow/actions/start/ActionStartDialog.java
index 1417c6a4f2..1449601c72 100644
--- 
a/ui/src/main/java/org/apache/hop/ui/workflow/actions/start/ActionStartDialog.java
+++ 
b/ui/src/main/java/org/apache/hop/ui/workflow/actions/start/ActionStartDialog.java
@@ -137,6 +137,7 @@ public class ActionStartDialog extends ActionDialog 
implements IActionDialog {
     wRepeat.addListener(SWT.Selection, e -> enableDisableControls());
 
     Group gRepeat = new Group(shell, SWT.SHADOW_NONE);
+    PropsUi.setLook(gRepeat);
     gRepeat.setText(BaseMessages.getString(PKG, "ActionStart.Repeat.Label"));
     FormData fdgRepeat = new FormData();
     fdgRepeat.left = new FormAttachment(0, 0);
@@ -160,6 +161,7 @@ public class ActionStartDialog extends ActionDialog 
implements IActionDialog {
     wlType.setLayoutData(fdlType);
 
     wType = new CCombo(gRepeat, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
+    PropsUi.setLook(wType);
     wType.addListener(SWT.Selection, arg0 -> enableDisableControls());
     wType.setItems(new String[] {NO_SCHEDULING, INTERVAL, DAILY, WEEKLY, 
MONTHLY});
     wType.setEditable(false);
diff --git 
a/ui/src/main/java/org/apache/hop/ui/workflow/config/WorkflowRunConfigurationEditor.java
 
b/ui/src/main/java/org/apache/hop/ui/workflow/config/WorkflowRunConfigurationEditor.java
index 4e70976cf4..2f89c50c22 100644
--- 
a/ui/src/main/java/org/apache/hop/ui/workflow/config/WorkflowRunConfigurationEditor.java
+++ 
b/ui/src/main/java/org/apache/hop/ui/workflow/config/WorkflowRunConfigurationEditor.java
@@ -207,7 +207,6 @@ public class WorkflowRunConfigurationEditor extends 
MetadataEditor<WorkflowRunCo
                             PKG, 
"WorkflowRunConfigurationDialog.label.ExecutionInfoLocation"),
                     BaseMessages.getString(
                             PKG, 
"WorkflowRunConfigurationDialog.toolTip.ExecutionInfoLocation"), false, true);
-    PropsUi.setLook(wExecutionInfoLocation);
     FormData fdExecutionInfoLocation = new FormData();
     fdExecutionInfoLocation.top = new FormAttachment(lastControl, margin);
     fdExecutionInfoLocation.left = new FormAttachment(0, 0); // To the right 
of the label
diff --git 
a/ui/src/main/java/org/apache/hop/ui/workflow/dialog/WorkflowExecutionConfigurationDialog.java
 
b/ui/src/main/java/org/apache/hop/ui/workflow/dialog/WorkflowExecutionConfigurationDialog.java
index 34fbb516b6..5866914ed2 100644
--- 
a/ui/src/main/java/org/apache/hop/ui/workflow/dialog/WorkflowExecutionConfigurationDialog.java
+++ 
b/ui/src/main/java/org/apache/hop/ui/workflow/dialog/WorkflowExecutionConfigurationDialog.java
@@ -185,10 +185,9 @@ public class WorkflowExecutionConfigurationDialog extends 
ConfigurationDialog {
             runConfigTooltip,
             true);
     wRunConfigurationControl = wRunConfiguration;
-    PropsUi.setLook(wRunConfiguration);
     FormData fdRunConfiguration = new FormData();
     fdRunConfiguration.right = new FormAttachment(100, 0);
-    fdRunConfiguration.top = new FormAttachment(0, props.getMargin());
+    fdRunConfiguration.top = new FormAttachment(0, PropsUi.getMargin());
     fdRunConfiguration.left = new FormAttachment(0, 0);
     wRunConfiguration.setLayoutData(fdRunConfiguration);
   }

Reply via email to