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 82b1fd0eca Merge join transform: select key from incoming fields #3141 
Replace CCombo with Combo widget
     new 8fdfc13254 Merge pull request #3149 from nadment/3141
82b1fd0eca is described below

commit 82b1fd0ecac133f75f7f6426f0217b4b6ce9ab6d
Author: Nicolas Adment <[email protected]>
AuthorDate: Tue Aug 8 21:38:23 2023 +0200

    Merge join transform: select key from incoming fields #3141
    Replace CCombo with Combo widget
---
 .../transforms/mergejoin/MergeJoinDialog.java      | 63 +++++++++++++++++-----
 .../main/java/org/apache/hop/ui/core/ConstUi.java  | 12 +++++
 2 files changed, 63 insertions(+), 12 deletions(-)

diff --git 
a/plugins/transforms/mergejoin/src/main/java/org/apache/hop/pipeline/transforms/mergejoin/MergeJoinDialog.java
 
b/plugins/transforms/mergejoin/src/main/java/org/apache/hop/pipeline/transforms/mergejoin/MergeJoinDialog.java
index 5c2dce92e7..0c592f4139 100644
--- 
a/plugins/transforms/mergejoin/src/main/java/org/apache/hop/pipeline/transforms/mergejoin/MergeJoinDialog.java
+++ 
b/plugins/transforms/mergejoin/src/main/java/org/apache/hop/pipeline/transforms/mergejoin/MergeJoinDialog.java
@@ -28,6 +28,7 @@ import org.apache.hop.pipeline.transform.BaseTransformMeta;
 import org.apache.hop.pipeline.transform.ITransformDialog;
 import org.apache.hop.pipeline.transform.TransformMeta;
 import org.apache.hop.pipeline.transform.stream.IStream;
+import org.apache.hop.ui.core.ConstUi;
 import org.apache.hop.ui.core.PropsUi;
 import org.apache.hop.ui.core.dialog.BaseDialog;
 import org.apache.hop.ui.core.dialog.ErrorDialog;
@@ -36,17 +37,16 @@ import org.apache.hop.ui.core.widget.ColumnInfo;
 import org.apache.hop.ui.core.widget.TableView;
 import org.apache.hop.ui.pipeline.transform.BaseTransformDialog;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
 import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.layout.FormAttachment;
 import org.eclipse.swt.layout.FormData;
 import org.eclipse.swt.layout.FormLayout;
 import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.TableItem;
 import org.eclipse.swt.widgets.Text;
-
 import java.util.List;
 
 public class MergeJoinDialog extends BaseTransformDialog implements 
ITransformDialog {
@@ -54,11 +54,11 @@ public class MergeJoinDialog extends BaseTransformDialog 
implements ITransformDi
 
   public static final String STRING_SORT_WARNING_PARAMETER = 
"MergeJoinSortWarning";
 
-  private CCombo wTransform1;
+  private Combo wTransform1;
 
-  private CCombo wTransform2;
+  private Combo wTransform2;
 
-  private CCombo wType;
+  private Combo wType;
 
   private TableView wKeys1;
 
@@ -91,7 +91,7 @@ public class MergeJoinDialog extends BaseTransformDialog 
implements ITransformDi
     shell.setText(BaseMessages.getString(PKG, "MergeJoinDialog.Shell.Label"));
 
     int middle = props.getMiddlePct();
-    int margin = props.getMargin();
+    int margin = PropsUi.getMargin();
 
     // TransformName line
     wlTransformName = new Label(shell, SWT.RIGHT);
@@ -124,7 +124,7 @@ public class MergeJoinDialog extends BaseTransformDialog 
implements ITransformDi
     fdlTransform1.right = new FormAttachment(middle, -margin);
     fdlTransform1.top = new FormAttachment(wTransformName, margin);
     wlTransform1.setLayoutData(fdlTransform1);
-    wTransform1 = new CCombo(shell, SWT.BORDER);
+    wTransform1 = new Combo(shell, SWT.BORDER);
     PropsUi.setLook(wTransform1);
 
     if (previousTransforms != null) {
@@ -147,7 +147,7 @@ public class MergeJoinDialog extends BaseTransformDialog 
implements ITransformDi
     fdlTransform2.right = new FormAttachment(middle, -margin);
     fdlTransform2.top = new FormAttachment(wTransform1, margin);
     wlTransform2.setLayoutData(fdlTransform2);
-    wTransform2 = new CCombo(shell, SWT.BORDER);
+    wTransform2 = new Combo(shell, SWT.BORDER);
     PropsUi.setLook(wTransform2);
 
     if (previousTransforms != null) {
@@ -170,7 +170,7 @@ public class MergeJoinDialog extends BaseTransformDialog 
implements ITransformDi
     fdlType.right = new FormAttachment(middle, -margin);
     fdlType.top = new FormAttachment(wTransform2, margin);
     wlType.setLayoutData(fdlType);
-    wType = new CCombo(shell, SWT.BORDER);
+    wType = new Combo(shell, SWT.BORDER);
     PropsUi.setLook(wType);
 
     wType.setItems(MergeJoinMeta.joinTypes);
@@ -228,7 +228,8 @@ public class MergeJoinDialog extends BaseTransformDialog 
implements ITransformDi
         new ColumnInfo[] {
           new ColumnInfo(
               BaseMessages.getString(PKG, 
"MergeJoinDialog.ColumnInfo.KeyField1"),
-              ColumnInfo.COLUMN_TYPE_TEXT,
+              ColumnInfo.COLUMN_TYPE_CCOMBO,
+              new String[] {""},
               false),
         };
 
@@ -263,7 +264,8 @@ public class MergeJoinDialog extends BaseTransformDialog 
implements ITransformDi
         new ColumnInfo[] {
           new ColumnInfo(
               BaseMessages.getString(PKG, 
"MergeJoinDialog.ColumnInfo.KeyField2"),
-              ColumnInfo.COLUMN_TYPE_TEXT,
+              ColumnInfo.COLUMN_TYPE_CCOMBO,
+              new String[] {""},
               false),
         };
 
@@ -282,8 +284,12 @@ public class MergeJoinDialog extends BaseTransformDialog 
implements ITransformDi
     fdKeys2.bottom = new FormAttachment(wbKeys2, -2 * margin);
     fdKeys2.right = new FormAttachment(100, 0);
     wKeys2.setLayoutData(fdKeys2);
+   
+    wTransform1.addListener(SWT.Modify, e -> updateFieldNames(ciKeys1[0], 
ciKeys2[0]));
+    wTransform2.addListener(SWT.Modify, e -> updateFieldNames(ciKeys1[0], 
ciKeys2[0]));
 
-    getData();
+    this.getData();
+    this.updateFieldNames(ciKeys1[0], ciKeys2[0]);   
     input.setChanged(backupChanged);
 
     BaseDialog.defaultShellHandling(shell, c -> ok(), c -> cancel());
@@ -411,4 +417,37 @@ public class MergeJoinDialog extends BaseTransformDialog 
implements ITransformDi
           e);
     }
   }
+  
+  // Search the fields in the background
+  //
+  private void updateFieldNames(ColumnInfo leftColumn, ColumnInfo rightColumn) 
{  
+    final Runnable runnable =
+        () -> {
+          leftColumn.setComboValues(new String[] {""});
+          rightColumn.setComboValues(new String[] {""});
+          
+          TransformMeta transformMeta = 
pipelineMeta.findTransform(wTransform1.getText());
+          if (transformMeta != null) {
+            try {
+              IRowMeta row = pipelineMeta.getTransformFields(variables, 
transformMeta);
+              String[] fieldNames = 
ConstUi.sortFieldNames(row.getFieldNames());              
+              leftColumn.setComboValues(fieldNames);
+            } catch (HopException e) {
+              logError(BaseMessages.getString(PKG, 
"System.Dialog.GetFieldsFailed.Message"));
+            }
+          }
+          
+          transformMeta = pipelineMeta.findTransform(wTransform2.getText());
+          if (transformMeta != null) {
+            try {
+              IRowMeta row = pipelineMeta.getTransformFields(variables, 
transformMeta);
+              String[] fieldNames = 
ConstUi.sortFieldNames(row.getFieldNames());
+              rightColumn.setComboValues(ConstUi.sortFieldNames(fieldNames));
+            } catch (HopException e) {
+              logError(BaseMessages.getString(PKG, 
"System.Dialog.GetFieldsFailed.Message"));
+            }
+          }          
+        };
+    shell.getDisplay().asyncExec(runnable);    
+  }
 }
diff --git a/ui/src/main/java/org/apache/hop/ui/core/ConstUi.java 
b/ui/src/main/java/org/apache/hop/ui/core/ConstUi.java
index 8be63abe5c..8ee6e0a6b4 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/ConstUi.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/ConstUi.java
@@ -239,4 +239,16 @@ public class ConstUi {
     }
     return result;
   }
+  
+  /**
+   * Sort field names if options is enabled
+   * 
+   * @param names
+   */
+  public static String[] sortFieldNames(String[] names) {    
+    if ( PropsUi.getInstance().isSortFieldByName() ) {
+      Arrays.sort(names);
+    }
+    return names;
+  }
 }

Reply via email to