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 9c05012371 Add TabFolder to stream lookup transformation #7106 (#7107)
9c05012371 is described below
commit 9c050123713dc0ac52eb653cc2478de5f3daef40
Author: Nicolas Adment <[email protected]>
AuthorDate: Thu May 7 10:48:50 2026 +0200
Add TabFolder to stream lookup transformation #7106 (#7107)
---
.../streamlookup/StreamLookupDialog.java | 280 ++++++++++++---------
.../messages/messages_en_US.properties | 3 +
2 files changed, 168 insertions(+), 115 deletions(-)
diff --git
a/plugins/transforms/streamlookup/src/main/java/org/apache/hop/pipeline/transforms/streamlookup/StreamLookupDialog.java
b/plugins/transforms/streamlookup/src/main/java/org/apache/hop/pipeline/transforms/streamlookup/StreamLookupDialog.java
index 23318b8076..edcd57ec76 100644
---
a/plugins/transforms/streamlookup/src/main/java/org/apache/hop/pipeline/transforms/streamlookup/StreamLookupDialog.java
+++
b/plugins/transforms/streamlookup/src/main/java/org/apache/hop/pipeline/transforms/streamlookup/StreamLookupDialog.java
@@ -20,6 +20,7 @@ package org.apache.hop.pipeline.transforms.streamlookup;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.apache.hop.core.Const;
+import org.apache.hop.core.Props;
import org.apache.hop.core.exception.HopException;
import org.apache.hop.core.row.IRowMeta;
import org.apache.hop.core.row.IValueMeta;
@@ -31,19 +32,22 @@ import org.apache.hop.i18n.BaseMessages;
import org.apache.hop.pipeline.PipelineMeta;
import org.apache.hop.pipeline.transform.TransformMeta;
import org.apache.hop.pipeline.transform.stream.IStream;
+import org.apache.hop.ui.core.FormDataBuilder;
import org.apache.hop.ui.core.PropsUi;
import org.apache.hop.ui.core.dialog.BaseDialog;
import org.apache.hop.ui.core.dialog.ErrorDialog;
import org.apache.hop.ui.core.dialog.MessageBox;
+import org.apache.hop.ui.core.gui.GuiResource;
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.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TableItem;
@@ -78,32 +82,24 @@ public class StreamLookupDialog extends BaseTransformDialog
{
input = transformMeta;
}
- @Override
- public String open() {
- createShell(BaseMessages.getString(PKG, "StreamLookupDialog.Shell.Title"));
+ private void addGeneralTab(CTabFolder wTabFolder, int middle, int margin,
ModifyListener lsMod) {
+ CTabItem wGeneralTab = new CTabItem(wTabFolder, SWT.NONE);
+ wGeneralTab.setFont(GuiResource.getInstance().getFontDefault());
+ wGeneralTab.setText(BaseMessages.getString(PKG,
"StreamLookupDialog.GeneralTab.Title"));
- buildButtonBar()
- .ok(e -> ok())
- .cancel(e -> cancel())
- .get(e -> get())
- .custom(
- BaseMessages.getString(PKG,
"StreamLookupDialog.GetLookupFields.Button"),
- e -> getLookup())
- .build();
-
- ModifyListener lsMod = e -> input.setChanged();
- changed = input.hasChanged();
+ Composite composite = new Composite(wTabFolder, SWT.NONE);
+ composite.setLayout(props.createFormLayout());
+ PropsUi.setLook(composite);
// Lookup transform line...
- Label wlTransform = new Label(shell, SWT.RIGHT);
+ Label wlTransform = new Label(composite, SWT.RIGHT);
wlTransform.setText(BaseMessages.getString(PKG,
"StreamLookupDialog.LookupTransform.Label"));
+ wlTransform.setLayoutData(
+ FormDataBuilder.builder().left().right(middle, -margin).top(wSpacer,
margin).result());
PropsUi.setLook(wlTransform);
- FormData fdlTransform = new FormData();
- fdlTransform.left = new FormAttachment(0, 0);
- fdlTransform.right = new FormAttachment(middle, -margin);
- fdlTransform.top = new FormAttachment(wSpacer, margin);
- wlTransform.setLayoutData(fdlTransform);
- wTransform = new Combo(shell, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
+ wTransform = new Combo(composite, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
+ wTransform.setLayoutData(
+ FormDataBuilder.builder().left(middle, 0).top(wSpacer,
margin).right().result());
PropsUi.setLook(wTransform);
List<TransformMeta> previousTransforms =
@@ -120,19 +116,91 @@ public class StreamLookupDialog extends
BaseTransformDialog {
updateComboFields();
});
- FormData fdTransform = new FormData();
- fdTransform.left = new FormAttachment(middle, 0);
- fdTransform.top = new FormAttachment(wSpacer, margin);
- fdTransform.right = new FormAttachment(100, 0);
- wTransform.setLayoutData(fdTransform);
+ Label wlPreserveMemory = new Label(composite, SWT.RIGHT);
+ wlPreserveMemory.setText(
+ BaseMessages.getString(PKG,
"StreamLookupDialog.PreserveMemory.Label"));
+ wlPreserveMemory.setLayoutData(
+ FormDataBuilder.builder().left().top(wTransform, margin).right(middle,
-margin).result());
+ PropsUi.setLook(wlPreserveMemory);
+ wPreserveMemory = new Button(composite, SWT.CHECK);
+ wPreserveMemory.setLayoutData(
+ FormDataBuilder.builder()
+ .left(middle, 0)
+ .top(wlPreserveMemory, 0, SWT.CENTER)
+ .right()
+ .result());
+ wPreserveMemory.addListener(SWT.Selection, e -> input.setChanged());
+
+ // preserve memory should be enabled to have this options on.
+ wPreserveMemory.addListener(
+ SWT.Selection,
+ event -> {
+ boolean selection = wPreserveMemory.getSelection();
+ wSortedList.setEnabled(selection);
+ wIntegerPair.setEnabled(selection);
+ });
+ PropsUi.setLook(wPreserveMemory);
- Label wlKey = new Label(shell, SWT.NONE);
+ Label wlIntegerPair = new Label(composite, SWT.RIGHT);
+ wlIntegerPair.setText(BaseMessages.getString(PKG,
"StreamLookupDialog.IntegerPair.Label"));
+ PropsUi.setLook(wlIntegerPair);
+ wlIntegerPair.setLayoutData(
+ FormDataBuilder.builder()
+ .left()
+ .top(wPreserveMemory, margin)
+ .right(middle, -margin)
+ .result());
+
+ wIntegerPair = new Button(composite, SWT.RADIO);
+ wIntegerPair.setEnabled(false);
+ PropsUi.setLook(wIntegerPair);
+ wIntegerPair.setLayoutData(
+ FormDataBuilder.builder()
+ .left(middle, 0)
+ .top(wlIntegerPair, 0, SWT.CENTER)
+ .right()
+ .result());
+ wIntegerPair.addListener(SWT.Selection, e -> input.setChanged());
+
+ Label wlSortedList = new Label(composite, SWT.RIGHT);
+ wlSortedList.setText(BaseMessages.getString(PKG,
"StreamLookupDialog.SortedList.Label"));
+ wlSortedList.setLayoutData(
+ FormDataBuilder.builder().left().top(wIntegerPair,
margin).right(middle, -margin).result());
+ PropsUi.setLook(wlSortedList);
+
+ wSortedList = new Button(composite, SWT.RADIO);
+ wSortedList.setEnabled(false);
+ wSortedList.setLayoutData(
+ FormDataBuilder.builder()
+ .left(middle, 0)
+ .top(wlSortedList, 0, SWT.CENTER)
+ .right()
+ .result());
+ wSortedList.addListener(SWT.Selection, e -> input.setChanged());
+ PropsUi.setLook(wSortedList);
+
+ wGeneralTab.setControl(composite);
+ }
+
+ private void addKeysTab(CTabFolder wTabFolder, int margin, ModifyListener
lsMod) {
+ CTabItem wKeysTab = new CTabItem(wTabFolder, SWT.NONE);
+ wKeysTab.setFont(GuiResource.getInstance().getFontDefault());
+ wKeysTab.setText(BaseMessages.getString(PKG,
"StreamLookupDialog.KeysTab.Title"));
+
+ Composite composite = new Composite(wTabFolder, SWT.NONE);
+ composite.setLayout(props.createFormLayout());
+ PropsUi.setLook(composite);
+
+ Label wlKey = new Label(composite, SWT.NONE);
wlKey.setText(BaseMessages.getString(PKG, "StreamLookupDialog.Key.Label"));
+ wlKey.setLayoutData(FormDataBuilder.builder().left().top().result());
PropsUi.setLook(wlKey);
- FormData fdlKey = new FormData();
- fdlKey.left = new FormAttachment(0, 0);
- fdlKey.top = new FormAttachment(wTransform, margin);
- wlKey.setLayoutData(fdlKey);
+
+ Button wGetKeyFields = new Button(composite, SWT.PUSH);
+ wGetKeyFields.setText(BaseMessages.getString(PKG,
"StreamLookupDialog.GetKeyFields.Button"));
+ wGetKeyFields.addListener(SWT.Selection, e -> getKeyFields());
+ setButtonPositions(new Button[] {wGetKeyFields}, margin, null);
+ PropsUi.setLook(wGetKeyFields);
int nrKeyCols = 2;
@@ -153,91 +221,44 @@ public class StreamLookupDialog extends
BaseTransformDialog {
wKey =
new TableView(
variables,
- shell,
+ composite,
SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI | SWT.V_SCROLL |
SWT.H_SCROLL,
ciKey,
1,
lsMod,
props);
- FormData fdKey = new FormData();
- fdKey.left = new FormAttachment(0, 0);
- fdKey.top = new FormAttachment(wlKey, margin);
- fdKey.right = new FormAttachment(100, 0);
- fdKey.bottom = new FormAttachment(wlKey, (int) (props.getZoomFactor() *
120));
- wKey.setLayoutData(fdKey);
-
- Label wlSortedList = new Label(shell, SWT.RIGHT);
- wlSortedList.setText(BaseMessages.getString(PKG,
"StreamLookupDialog.SortedList.Label"));
- PropsUi.setLook(wlSortedList);
- FormData fdlSortedList = new FormData();
- fdlSortedList.left = new FormAttachment(0, 0);
- fdlSortedList.bottom = new FormAttachment(wOk, -margin);
- fdlSortedList.right = new FormAttachment(middle, -margin);
- wlSortedList.setLayoutData(fdlSortedList);
- wSortedList = new Button(shell, SWT.RADIO);
- wSortedList.setEnabled(false);
- PropsUi.setLook(wSortedList);
- FormData fdSortedList = new FormData();
- fdSortedList.left = new FormAttachment(middle, 0);
- fdSortedList.top = new FormAttachment(wlSortedList, 0, SWT.CENTER);
- fdSortedList.right = new FormAttachment(100, 0);
- wSortedList.setLayoutData(fdSortedList);
- wSortedList.addListener(SWT.Selection, e -> input.setChanged());
+ wKey.setLayoutData(
+ FormDataBuilder.builder()
+ .left()
+ .top(wlKey, margin)
+ .right()
+ .bottom(wGetKeyFields, -margin)
+ .result());
- Label wlIntegerPair = new Label(shell, SWT.RIGHT);
- wlIntegerPair.setText(BaseMessages.getString(PKG,
"StreamLookupDialog.IntegerPair.Label"));
- PropsUi.setLook(wlIntegerPair);
- FormData fdlIntegerPair = new FormData();
- fdlIntegerPair.left = new FormAttachment(0, 0);
- fdlIntegerPair.bottom = new FormAttachment(wSortedList, -margin);
- fdlIntegerPair.right = new FormAttachment(middle, -margin);
- wlIntegerPair.setLayoutData(fdlIntegerPair);
- wIntegerPair = new Button(shell, SWT.RADIO);
- wIntegerPair.setEnabled(false);
- PropsUi.setLook(wIntegerPair);
- FormData fdIntegerPair = new FormData();
- fdIntegerPair.left = new FormAttachment(middle, 0);
- fdIntegerPair.top = new FormAttachment(wlIntegerPair, 0, SWT.CENTER);
- fdIntegerPair.right = new FormAttachment(100, 0);
- wIntegerPair.setLayoutData(fdIntegerPair);
- wIntegerPair.addListener(SWT.Selection, e -> input.setChanged());
+ wKeysTab.setControl(composite);
+ }
- Label wlPreserveMemory = new Label(shell, SWT.RIGHT);
- wlPreserveMemory.setText(
- BaseMessages.getString(PKG,
"StreamLookupDialog.PreserveMemory.Label"));
- PropsUi.setLook(wlPreserveMemory);
- FormData fdlPreserveMemory = new FormData();
- fdlPreserveMemory.left = new FormAttachment(0, 0);
- fdlPreserveMemory.bottom = new FormAttachment(wlIntegerPair, -margin);
- fdlPreserveMemory.right = new FormAttachment(middle, -margin);
- wlPreserveMemory.setLayoutData(fdlPreserveMemory);
- wPreserveMemory = new Button(shell, SWT.CHECK);
- PropsUi.setLook(wPreserveMemory);
- FormData fdPreserveMemory = new FormData();
- fdPreserveMemory.left = new FormAttachment(middle, 0);
- fdPreserveMemory.top = new FormAttachment(wlPreserveMemory, 0, SWT.CENTER);
- fdPreserveMemory.right = new FormAttachment(100, 0);
- wPreserveMemory.setLayoutData(fdPreserveMemory);
- wPreserveMemory.addListener(SWT.Selection, e -> input.setChanged());
+ private void addFieldsTab(CTabFolder wTabFolder, int middle, int margin,
ModifyListener lsMod) {
+ CTabItem wFieldsTab = new CTabItem(wTabFolder, SWT.NONE);
+ wFieldsTab.setFont(GuiResource.getInstance().getFontDefault());
+ wFieldsTab.setText(BaseMessages.getString(PKG,
"StreamLookupDialog.ReturnFieldsTab.Title"));
- // preserve memory should be enabled to have this options on.
- wPreserveMemory.addListener(
- SWT.Selection,
- event -> {
- boolean selection = wPreserveMemory.getSelection();
- wSortedList.setEnabled(selection);
- wIntegerPair.setEnabled(selection);
- });
+ Composite composite = new Composite(wTabFolder, SWT.NONE);
+ composite.setLayout(props.createFormLayout());
+ PropsUi.setLook(composite);
- // THE UPDATE/INSERT TABLE
- Label wlReturn = new Label(shell, SWT.NONE);
+ Label wlReturn = new Label(composite, SWT.NONE);
wlReturn.setText(BaseMessages.getString(PKG,
"StreamLookupDialog.ReturnFields.Label"));
+ wlReturn.setLayoutData(FormDataBuilder.builder().left().top().result());
PropsUi.setLook(wlReturn);
- FormData fdlReturn = new FormData();
- fdlReturn.left = new FormAttachment(0, 0);
- fdlReturn.top = new FormAttachment(wKey, margin);
- wlReturn.setLayoutData(fdlReturn);
+
+ Button wGetLookupFields = new Button(composite, SWT.PUSH);
+ wGetLookupFields.setText(
+ BaseMessages.getString(PKG,
"StreamLookupDialog.GetLookupFields.Button"));
+ wGetLookupFields.addListener(SWT.Selection, e -> getLookupFields());
+ PropsUi.setLook(wGetLookupFields);
+ setButtonPositions(new Button[] {wGetLookupFields}, margin, null);
int upInsCols = 4;
@@ -268,25 +289,54 @@ public class StreamLookupDialog extends
BaseTransformDialog {
wReturn =
new TableView(
variables,
- shell,
+ composite,
SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI | SWT.V_SCROLL |
SWT.H_SCROLL,
ciReturn,
1,
lsMod,
props);
- FormData fdReturn = new FormData();
- fdReturn.left = new FormAttachment(0, 0);
- fdReturn.top = new FormAttachment(wlReturn, margin);
- fdReturn.right = new FormAttachment(100, 0);
- fdReturn.bottom = new FormAttachment(wlPreserveMemory, -margin);
- wReturn.setLayoutData(fdReturn);
+ wReturn.setLayoutData(
+ FormDataBuilder.builder()
+ .top(wlReturn, margin)
+ .bottom(wGetLookupFields, -margin)
+ .fullWidth()
+ .result());
+
+ wFieldsTab.setControl(composite);
+ }
+
+ @Override
+ public String open() {
+ createShell(BaseMessages.getString(PKG, "StreamLookupDialog.Shell.Title"));
+
+ buildButtonBar().ok(e -> ok()).cancel(e -> cancel()).build();
+
+ ModifyListener lsMod = e -> input.setChanged();
+ changed = input.hasChanged();
+
+ CTabFolder wTabFolder = new CTabFolder(shell, SWT.BORDER);
+ PropsUi.setLook(wTabFolder, Props.WIDGET_STYLE_TAB);
+
+ addGeneralTab(wTabFolder, middle, margin, lsMod);
+ addKeysTab(wTabFolder, margin, lsMod);
+ addFieldsTab(wTabFolder, middle, margin, lsMod);
+
+ wTabFolder.setLayoutData(
+ FormDataBuilder.builder()
+ .left()
+ .top(wSpacer, margin)
+ .right()
+ .bottom(wOk, -margin)
+ .result());
+ wTabFolder.setSelection(0);
getData();
updateComboFields();
input.setChanged(changed);
focusTransformName();
+
BaseDialog.defaultShellHandling(shell, c -> ok(), c -> cancel());
return transformName;
@@ -460,7 +510,7 @@ public class StreamLookupDialog extends BaseTransformDialog
{
dispose();
}
- private void get() {
+ private void getKeyFields() {
if (pipelineMeta.findTransform(wTransform.getText()) == null) {
MessageBox mb = new MessageBox(shell, SWT.OK | SWT.ICON_ERROR);
mb.setMessage(
@@ -512,7 +562,7 @@ public class StreamLookupDialog extends BaseTransformDialog
{
}
}
- private void getLookup() {
+ private void getLookupFields() {
try {
String transformFrom = wTransform.getText();
if (!Utils.isEmpty(transformFrom)) {
diff --git
a/plugins/transforms/streamlookup/src/main/resources/org/apache/hop/pipeline/transforms/streamlookup/messages/messages_en_US.properties
b/plugins/transforms/streamlookup/src/main/resources/org/apache/hop/pipeline/transforms/streamlookup/messages/messages_en_US.properties
index 212a5cefae..3c85805ca2 100644
---
a/plugins/transforms/streamlookup/src/main/resources/org/apache/hop/pipeline/transforms/streamlookup/messages/messages_en_US.properties
+++
b/plugins/transforms/streamlookup/src/main/resources/org/apache/hop/pipeline/transforms/streamlookup/messages/messages_en_US.properties
@@ -39,10 +39,12 @@
StreamLookupDialog.CouldNotFindFields.DialogMessage=Couldn''t find any fields, p
StreamLookupDialog.CouldNotFindFields.DialogTitle=ERROR
StreamLookupDialog.FailedToGetFields.DialogMessage=Unable to get fields from
previous transforms because of an error
StreamLookupDialog.FailedToGetFields.DialogTitle=Get fields failed
+StreamLookupDialog.GeneralTab.Title=General
StreamLookupDialog.GetKeyFields.Button=&Get key fields
StreamLookupDialog.GetLookupFields.Button=Get &return fields
StreamLookupDialog.IntegerPair.Label=Key and value are exactly one integer
field
StreamLookupDialog.Key.Label=The key(s) to look up the value(s):
+StreamLookupDialog.KeysTab.Title=Lookup keys
StreamLookupDialog.Log.FoundFields=Found {0} fields
StreamLookupDialog.Log.FoundKeys=Found {0} keys
StreamLookupDialog.Log.GettingKeyInfo=getting key info...
@@ -52,6 +54,7 @@
StreamLookupDialog.PleaseSelectATransformToReadFrom.DialogMessage=Please select
StreamLookupDialog.PleaseSelectATransformToReadFrom.DialogTitle=Select lookup
transform
StreamLookupDialog.PreserveMemory.Label=Preserve memory (costs CPU)
StreamLookupDialog.ReturnFields.Label=Specify the fields to retrieve:
+StreamLookupDialog.ReturnFieldsTab.Title=Fields
StreamLookupDialog.Shell.Title=Stream lookup
StreamLookupDialog.SortedList.Label=Use sorted list (i.s.o. hashtable)
StreamLookupDialog.TransformCanNotFound.DialogMessage=transform [{0}] can''t
be found: please select an existing source transform!