public String open()

in plugins/transforms/synchronizeaftermerge/src/main/java/org/apache/hop/pipeline/transforms/synchronizeaftermerge/SynchronizeAfterMergeDialog.java [141:775]


  public String open() {
    Shell parent = getParent();

    shell = new Shell(parent, SWT.DIALOG_TRIM | SWT.RESIZE | SWT.MAX | SWT.MIN);
    PropsUi.setLook(shell);
    setShellImage(shell, input);

    ModifyListener lsMod = e -> input.setChanged();
    ModifyListener lsTableMod =
        arg0 -> {
          input.setChanged();
          setTableFieldCombo();
        };
    SelectionListener lsSelection =
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent e) {
            input.setChanged();
            setTableFieldCombo();
          }
        };
    SelectionListener lsSimpleSelection =
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent e) {
            input.setChanged();
          }
        };
    changed = input.hasChanged();

    FormLayout formLayout = new FormLayout();
    formLayout.marginWidth = PropsUi.getFormMargin();
    formLayout.marginHeight = PropsUi.getFormMargin();

    shell.setLayout(formLayout);
    shell.setText(BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.Shell.Title"));

    int middle = props.getMiddlePct();
    int margin = PropsUi.getMargin();

    // THE BUTTONS go at the bottom
    wOk = new Button(shell, SWT.PUSH);
    wOk.setText(BaseMessages.getString(PKG, "System.Button.OK"));
    wOk.addListener(SWT.Selection, e -> ok());
    wSql = new Button(shell, SWT.PUSH);
    wSql.setText(BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.SQL.Button"));
    wSql.addListener(SWT.Selection, e -> create());
    wCancel = new Button(shell, SWT.PUSH);
    wCancel.setText(BaseMessages.getString(PKG, "System.Button.Cancel"));
    wCancel.addListener(SWT.Selection, e -> cancel());
    setButtonPositions(new Button[] {wOk, wSql, wCancel}, margin, null);

    // TransformName line
    wlTransformName = new Label(shell, SWT.RIGHT);
    wlTransformName.setText(
        BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.TransformName.Label"));
    PropsUi.setLook(wlTransformName);
    fdlTransformName = new FormData();
    fdlTransformName.left = new FormAttachment(0, 0);
    fdlTransformName.right = new FormAttachment(middle, -margin);
    fdlTransformName.top = new FormAttachment(0, margin);
    wlTransformName.setLayoutData(fdlTransformName);
    wTransformName = new Text(shell, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
    wTransformName.setText(transformName);
    PropsUi.setLook(wTransformName);
    wTransformName.addModifyListener(lsMod);
    fdTransformName = new FormData();
    fdTransformName.left = new FormAttachment(middle, 0);
    fdTransformName.top = new FormAttachment(0, margin);
    fdTransformName.right = new FormAttachment(100, 0);
    wTransformName.setLayoutData(fdTransformName);

    CTabFolder wTabFolder = new CTabFolder(shell, SWT.BORDER);
    PropsUi.setLook(wTabFolder, Props.WIDGET_STYLE_TAB);

    // ////////////////////////
    // START OF GENERAL TAB ///
    // ////////////////////////

    CTabItem wGeneralTab = new CTabItem(wTabFolder, SWT.NONE);
    wGeneralTab.setFont(GuiResource.getInstance().getFontDefault());
    wGeneralTab.setText(
        BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.GeneralTab.TabTitle"));

    Composite wGeneralComp = new Composite(wTabFolder, SWT.NONE);
    PropsUi.setLook(wGeneralComp);

    FormLayout generalLayout = new FormLayout();
    generalLayout.marginWidth = 3;
    generalLayout.marginHeight = 3;
    wGeneralComp.setLayout(generalLayout);

    // Connection line
    wConnection = addConnectionLine(wGeneralComp, wTransformName, input.getConnection(), lsMod);
    wConnection.addSelectionListener(lsSelection);

    // Schema line...
    Label wlSchema = new Label(wGeneralComp, SWT.RIGHT);
    wlSchema.setText(BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.TargetSchema.Label"));
    PropsUi.setLook(wlSchema);
    FormData fdlSchema = new FormData();
    fdlSchema.left = new FormAttachment(0, 0);
    fdlSchema.right = new FormAttachment(middle, -margin);
    fdlSchema.top = new FormAttachment(wConnection, margin * 2);
    wlSchema.setLayoutData(fdlSchema);

    Button wbSchema = new Button(wGeneralComp, SWT.PUSH | SWT.CENTER);
    PropsUi.setLook(wbSchema);
    wbSchema.setText(BaseMessages.getString(PKG, "System.Button.Browse"));
    FormData fdbSchema = new FormData();
    fdbSchema.top = new FormAttachment(wConnection, 2 * margin);
    fdbSchema.right = new FormAttachment(100, 0);
    wbSchema.setLayoutData(fdbSchema);

    wSchema = new TextVar(variables, wGeneralComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
    PropsUi.setLook(wSchema);
    wSchema.addModifyListener(lsTableMod);
    FormData fdSchema = new FormData();
    fdSchema.left = new FormAttachment(middle, 0);
    fdSchema.top = new FormAttachment(wConnection, margin * 2);
    fdSchema.right = new FormAttachment(wbSchema, -margin);
    wSchema.setLayoutData(fdSchema);

    // Table line...
    wlTable = new Label(wGeneralComp, SWT.RIGHT);
    wlTable.setText(BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.TargetTable.Label"));
    PropsUi.setLook(wlTable);
    FormData fdlTable = new FormData();
    fdlTable.left = new FormAttachment(0, 0);
    fdlTable.right = new FormAttachment(middle, -margin);
    fdlTable.top = new FormAttachment(wbSchema, margin);
    wlTable.setLayoutData(fdlTable);

    wbTable = new Button(wGeneralComp, SWT.PUSH | SWT.CENTER);
    PropsUi.setLook(wbTable);
    wbTable.setText(BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.Browse.Button"));
    FormData fdbTable = new FormData();
    fdbTable.right = new FormAttachment(100, 0);
    fdbTable.top = new FormAttachment(wbSchema, margin);
    wbTable.setLayoutData(fdbTable);

    wTable = new TextVar(variables, wGeneralComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
    PropsUi.setLook(wTable);
    wTable.addModifyListener(lsTableMod);
    FormData fdTable = new FormData();
    fdTable.left = new FormAttachment(middle, 0);
    fdTable.top = new FormAttachment(wbSchema, margin);
    fdTable.right = new FormAttachment(wbTable, -margin);
    wTable.setLayoutData(fdTable);

    // Commit line
    Label wlCommit = new Label(wGeneralComp, SWT.RIGHT);
    wlCommit.setText(BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.CommitSize.Label"));
    PropsUi.setLook(wlCommit);
    FormData fdlCommit = new FormData();
    fdlCommit.left = new FormAttachment(0, 0);
    fdlCommit.top = new FormAttachment(wTable, margin);
    fdlCommit.right = new FormAttachment(middle, -margin);
    wlCommit.setLayoutData(fdlCommit);

    wCommit = new TextVar(variables, wGeneralComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
    PropsUi.setLook(wCommit);
    wCommit.addModifyListener(lsMod);
    FormData fdCommit = new FormData();
    fdCommit.left = new FormAttachment(middle, 0);
    fdCommit.top = new FormAttachment(wTable, margin);
    fdCommit.right = new FormAttachment(100, 0);
    wCommit.setLayoutData(fdCommit);

    // UsePart update
    Label wlBatch = new Label(wGeneralComp, SWT.RIGHT);
    wlBatch.setText(BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.Batch.Label"));
    PropsUi.setLook(wlBatch);
    FormData fdlBatch = new FormData();
    fdlBatch.left = new FormAttachment(0, 0);
    fdlBatch.top = new FormAttachment(wCommit, margin);
    fdlBatch.right = new FormAttachment(middle, -margin);
    wlBatch.setLayoutData(fdlBatch);
    wBatch = new Button(wGeneralComp, SWT.CHECK);
    wBatch.setToolTipText(BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.Batch.Tooltip"));
    wBatch.addSelectionListener(lsSimpleSelection);
    PropsUi.setLook(wBatch);
    FormData fdBatch = new FormData();
    fdBatch.left = new FormAttachment(middle, 0);
    fdBatch.top = new FormAttachment(wlBatch, 0, SWT.CENTER);
    fdBatch.right = new FormAttachment(100, 0);
    wBatch.setLayoutData(fdBatch);

    // TablenameInField line
    Label wlTablenameInField = new Label(wGeneralComp, SWT.RIGHT);
    wlTablenameInField.setText(
        BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.TablenameInField.Label"));
    PropsUi.setLook(wlTablenameInField);
    FormData fdlTablenameInField = new FormData();
    fdlTablenameInField.left = new FormAttachment(0, 0);
    fdlTablenameInField.top = new FormAttachment(wBatch, margin);
    fdlTablenameInField.right = new FormAttachment(middle, -margin);
    wlTablenameInField.setLayoutData(fdlTablenameInField);
    wTablenameInField = new Button(wGeneralComp, SWT.CHECK);
    wTablenameInField.setToolTipText(
        BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.TablenameInField.Tooltip"));
    PropsUi.setLook(wTablenameInField);
    FormData fdTablenameInField = new FormData();
    fdTablenameInField.left = new FormAttachment(middle, 0);
    fdTablenameInField.top = new FormAttachment(wlTablenameInField, 0, SWT.CENTER);
    fdTablenameInField.right = new FormAttachment(100, 0);
    wTablenameInField.setLayoutData(fdTablenameInField);
    wTablenameInField.addSelectionListener(
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent e) {
            activeTablenameField();
            input.setChanged();
          }
        });

    wlTableField = new Label(wGeneralComp, SWT.RIGHT);
    wlTableField.setText(
        BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.TableField.Label"));
    PropsUi.setLook(wlTableField);
    FormData fdlTableField = new FormData();
    fdlTableField.left = new FormAttachment(0, 0);
    fdlTableField.top = new FormAttachment(wTablenameInField, margin);
    fdlTableField.right = new FormAttachment(middle, -margin);
    wlTableField.setLayoutData(fdlTableField);
    wTableField = new CCombo(wGeneralComp, SWT.BORDER | SWT.READ_ONLY);
    wTableField.setEditable(true);
    PropsUi.setLook(wTableField);
    wTableField.addModifyListener(lsMod);
    FormData fdTableField = new FormData();
    fdTableField.left = new FormAttachment(middle, 0);
    fdTableField.top = new FormAttachment(wTablenameInField, margin);
    fdTableField.right = new FormAttachment(100, 0);
    wTableField.setLayoutData(fdTableField);
    wTableField.addFocusListener(
        new FocusListener() {
          @Override
          public void focusLost(FocusEvent e) {
            // Do Nothing
          }

          @Override
          public void focusGained(FocusEvent e) {
            Cursor busy = new Cursor(shell.getDisplay(), SWT.CURSOR_WAIT);
            shell.setCursor(busy);
            getFields();
            shell.setCursor(null);
            busy.dispose();
          }
        });

    Label wlKey = new Label(wGeneralComp, SWT.NONE);
    wlKey.setText(BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.Keys.Label"));
    PropsUi.setLook(wlKey);
    FormData fdlKey = new FormData();
    fdlKey.left = new FormAttachment(0, 0);
    fdlKey.top = new FormAttachment(wTableField, margin);
    wlKey.setLayoutData(fdlKey);

    int nrKeyCols = 4;
    int nrKeyRows = (input.getKeyStream() != null ? input.getKeyStream().length : 1);

    ciKey = new ColumnInfo[nrKeyCols];
    ciKey[0] =
        new ColumnInfo(
            BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.ColumnInfo.TableField"),
            ColumnInfo.COLUMN_TYPE_CCOMBO,
            new String[] {""},
            false);
    ciKey[1] =
        new ColumnInfo(
            BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.ColumnInfo.Comparator"),
            ColumnInfo.COLUMN_TYPE_CCOMBO,
            new String[] {
              "=", "<>", "<", "<=", ">", ">=", "LIKE", "BETWEEN", "IS NULL", "IS NOT NULL"
            });
    ciKey[2] =
        new ColumnInfo(
            BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.ColumnInfo.StreamField1"),
            ColumnInfo.COLUMN_TYPE_CCOMBO,
            new String[] {""},
            false);
    ciKey[3] =
        new ColumnInfo(
            BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.ColumnInfo.StreamField2"),
            ColumnInfo.COLUMN_TYPE_CCOMBO,
            new String[] {""},
            false);
    tableFieldColumns.add(ciKey[0]);
    wKey =
        new TableView(
            variables,
            wGeneralComp,
            SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL,
            ciKey,
            nrKeyRows,
            lsMod,
            props);

    wGet = new Button(wGeneralComp, SWT.PUSH);
    wGet.setText(BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.GetFields.Button"));
    fdGet = new FormData();
    fdGet.right = new FormAttachment(100, 0);
    fdGet.top = new FormAttachment(wlKey, margin);
    wGet.setLayoutData(fdGet);

    FormData fdKey = new FormData();
    fdKey.left = new FormAttachment(0, 0);
    fdKey.top = new FormAttachment(wlKey, margin);
    fdKey.right = new FormAttachment(wGet, -margin);
    fdKey.bottom = new FormAttachment(wlKey, 160);
    wKey.setLayoutData(fdKey);

    // THE UPDATE/INSERT TABLE
    Label wlReturn = new Label(wGeneralComp, SWT.NONE);
    wlReturn.setText(BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.UpdateFields.Label"));
    PropsUi.setLook(wlReturn);
    FormData fdlReturn = new FormData();
    fdlReturn.left = new FormAttachment(0, 0);
    fdlReturn.top = new FormAttachment(wKey, margin);
    wlReturn.setLayoutData(fdlReturn);

    int upInsCols = 3;
    int upInsRows = (input.getUpdateLookup() != null ? input.getUpdateLookup().length : 1);

    ciReturn = new ColumnInfo[upInsCols];
    ciReturn[0] =
        new ColumnInfo(
            BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.ColumnInfo.TableField"),
            ColumnInfo.COLUMN_TYPE_CCOMBO,
            new String[] {""},
            false);
    ciReturn[1] =
        new ColumnInfo(
            BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.ColumnInfo.StreamField"),
            ColumnInfo.COLUMN_TYPE_CCOMBO,
            new String[] {""},
            false);
    ciReturn[2] =
        new ColumnInfo(
            BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.ColumnInfo.Update"),
            ColumnInfo.COLUMN_TYPE_CCOMBO,
            new String[] {"Y", "N"});
    tableFieldColumns.add(ciReturn[0]);
    wReturn =
        new TableView(
            variables,
            wGeneralComp,
            SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL,
            ciReturn,
            upInsRows,
            lsMod,
            props);

    Button wGetLU = new Button(wGeneralComp, SWT.PUSH);
    wGetLU.setText(
        BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.GetAndUpdateFields.Label"));
    FormData fdGetLU = new FormData();
    fdGetLU.top = new FormAttachment(wlReturn, margin);
    fdGetLU.right = new FormAttachment(100, 0);
    wGetLU.setLayoutData(fdGetLU);

    FormData fdReturn = new FormData();
    fdReturn.left = new FormAttachment(0, 0);
    fdReturn.top = new FormAttachment(wlReturn, margin);
    fdReturn.right = new FormAttachment(wGetLU, -margin);
    fdReturn.bottom = new FormAttachment(100, -2 * margin);
    wReturn.setLayoutData(fdReturn);

    Button wDoMapping = new Button(wGeneralComp, SWT.PUSH);
    wDoMapping.setText(
        BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.EditMapping.Label"));
    FormData fdDoMapping = new FormData();
    fdDoMapping.top = new FormAttachment(wGetLU, margin);
    fdDoMapping.right = new FormAttachment(100, 0);
    wDoMapping.setLayoutData(fdDoMapping);

    wDoMapping.addListener(SWT.Selection, arg0 -> generateMappings());

    //
    // Search the fields in the background
    //

    final Runnable runnable =
        () -> {
          // This is running in a new process: copy some HopVariables info
          TransformMeta transformMeta = pipelineMeta.findTransform(transformName);
          if (transformMeta != null) {
            try {
              IRowMeta row = pipelineMeta.getPrevTransformFields(variables, transformMeta);

              // Remember these fields...
              for (int i = 0; i < row.size(); i++) {
                inputFields.add(row.getValueMeta(i).getName());
              }

              setComboBoxes();
            } catch (HopException e) {
              logError(BaseMessages.getString(PKG, "System.Dialog.GetFieldsFailed.Message"));
            }
          }
        };
    new Thread(runnable).start();

    // Add listeners

    FormData fdGeneralComp = new FormData();
    fdGeneralComp.left = new FormAttachment(0, 0);
    fdGeneralComp.top = new FormAttachment(0, 0);
    fdGeneralComp.right = new FormAttachment(100, 0);
    fdGeneralComp.bottom = new FormAttachment(100, 0);
    wGeneralComp.setLayoutData(fdGeneralComp);

    wGeneralComp.layout();
    wGeneralTab.setControl(wGeneralComp);
    PropsUi.setLook(wGeneralComp);

    // ///////////////////////////////////////////////////////////
    // / END OF GENERAL TAB
    // ///////////////////////////////////////////////////////////

    // ////////////////////////
    // START OF ADVANCED TAB ///
    // ////////////////////////

    CTabItem wAdvancedTab = new CTabItem(wTabFolder, SWT.NONE);
    wAdvancedTab.setFont(GuiResource.getInstance().getFontDefault());
    wAdvancedTab.setText(
        BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.AdvancedTab.TabTitle"));

    Composite wAdvancedComp = new Composite(wTabFolder, SWT.NONE);
    PropsUi.setLook(wAdvancedComp);

    FormLayout advancedLayout = new FormLayout();
    advancedLayout.marginWidth = 3;
    advancedLayout.marginHeight = 3;
    wAdvancedComp.setLayout(advancedLayout);

    // ///////////////////////////////
    // START OF OPERATION ORDER GROUP //
    // ///////////////////////////////

    Group wOperationOrder = new Group(wAdvancedComp, SWT.SHADOW_NONE);
    PropsUi.setLook(wOperationOrder);
    wOperationOrder.setText(
        BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.OperationOrder.Label"));

    FormLayout originFilesgroupLayout = new FormLayout();
    originFilesgroupLayout.marginWidth = 10;
    originFilesgroupLayout.marginHeight = 10;
    wOperationOrder.setLayout(originFilesgroupLayout);

    Label wlOperationField = new Label(wOperationOrder, SWT.RIGHT);
    wlOperationField.setText(
        BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.OperationField.Label"));
    PropsUi.setLook(wlOperationField);
    FormData fdlOperationField = new FormData();
    fdlOperationField.left = new FormAttachment(0, 0);
    fdlOperationField.top = new FormAttachment(wTableField, margin);
    fdlOperationField.right = new FormAttachment(middle, -margin);
    wlOperationField.setLayoutData(fdlOperationField);
    wOperationField = new CCombo(wOperationOrder, SWT.BORDER | SWT.READ_ONLY);
    wOperationField.setEditable(true);
    PropsUi.setLook(wOperationField);
    wOperationField.addModifyListener(lsMod);
    FormData fdOperationField = new FormData();
    fdOperationField.left = new FormAttachment(middle, 0);
    fdOperationField.top = new FormAttachment(wTableField, margin);
    fdOperationField.right = new FormAttachment(100, 0);
    wOperationField.setLayoutData(fdOperationField);
    wOperationField.addFocusListener(
        new FocusListener() {
          @Override
          public void focusLost(FocusEvent e) {
            // Do Nothing
          }

          @Override
          public void focusGained(FocusEvent e) {
            Cursor busy = new Cursor(shell.getDisplay(), SWT.CURSOR_WAIT);
            shell.setCursor(busy);
            getFields();
            shell.setCursor(null);
            busy.dispose();
          }
        });

    // OrderInsert line...
    Label wlOrderInsert = new Label(wOperationOrder, SWT.RIGHT);
    wlOrderInsert.setText(
        BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.OrderInsert.Label"));
    PropsUi.setLook(wlOrderInsert);
    FormData fdlOrderInsert = new FormData();
    fdlOrderInsert.left = new FormAttachment(0, 0);
    fdlOrderInsert.right = new FormAttachment(middle, -margin);
    fdlOrderInsert.top = new FormAttachment(wOperationField, margin);
    wlOrderInsert.setLayoutData(fdlOrderInsert);

    wOrderInsert = new TextVar(variables, wOperationOrder, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
    wOrderInsert.setToolTipText(
        BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.OrderInsert.ToolTip"));
    PropsUi.setLook(wOrderInsert);
    wOrderInsert.addModifyListener(lsMod);
    FormData fdOrderInsert = new FormData();
    fdOrderInsert.left = new FormAttachment(middle, 0);
    fdOrderInsert.top = new FormAttachment(wOperationField, margin);
    fdOrderInsert.right = new FormAttachment(100, 0);
    wOrderInsert.setLayoutData(fdOrderInsert);

    // OrderUpdate line...
    Label wlOrderUpdate = new Label(wOperationOrder, SWT.RIGHT);
    wlOrderUpdate.setText(
        BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.OrderUpdate.Label"));
    PropsUi.setLook(wlOrderUpdate);
    FormData fdlOrderUpdate = new FormData();
    fdlOrderUpdate.left = new FormAttachment(0, 0);
    fdlOrderUpdate.right = new FormAttachment(middle, -margin);
    fdlOrderUpdate.top = new FormAttachment(wOrderInsert, margin);
    wlOrderUpdate.setLayoutData(fdlOrderUpdate);

    wOrderUpdate = new TextVar(variables, wOperationOrder, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
    wOrderUpdate.setToolTipText(
        BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.OrderUpdate.ToolTip"));
    PropsUi.setLook(wOrderUpdate);
    wOrderUpdate.addModifyListener(lsMod);
    FormData fdOrderUpdate = new FormData();
    fdOrderUpdate.left = new FormAttachment(middle, 0);
    fdOrderUpdate.top = new FormAttachment(wOrderInsert, margin);
    fdOrderUpdate.right = new FormAttachment(100, 0);
    wOrderUpdate.setLayoutData(fdOrderUpdate);

    // OrderDelete line...
    Label wlOrderDelete = new Label(wOperationOrder, SWT.RIGHT);
    wlOrderDelete.setText(
        BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.OrderDelete.Label"));
    PropsUi.setLook(wlOrderDelete);
    FormData fdlOrderDelete = new FormData();
    fdlOrderDelete.left = new FormAttachment(0, 0);
    fdlOrderDelete.right = new FormAttachment(middle, -margin);
    fdlOrderDelete.top = new FormAttachment(wOrderUpdate, margin);
    wlOrderDelete.setLayoutData(fdlOrderDelete);

    wOrderDelete = new TextVar(variables, wOperationOrder, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
    wOrderDelete.setToolTipText(
        BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.OrderDelete.ToolTip"));
    PropsUi.setLook(wOrderDelete);
    wOrderDelete.addModifyListener(lsMod);
    FormData fdOrderDelete = new FormData();
    fdOrderDelete.left = new FormAttachment(middle, 0);
    fdOrderDelete.top = new FormAttachment(wOrderUpdate, margin);
    fdOrderDelete.right = new FormAttachment(100, 0);
    wOrderDelete.setLayoutData(fdOrderDelete);

    // Perform a lookup?
    Label wlPerformLookup = new Label(wOperationOrder, SWT.RIGHT);
    wlPerformLookup.setText(
        BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.PerformLookup.Label"));
    PropsUi.setLook(wlPerformLookup);
    FormData fdlPerformLookup = new FormData();
    fdlPerformLookup.left = new FormAttachment(0, 0);
    fdlPerformLookup.top = new FormAttachment(wOrderDelete, margin);
    fdlPerformLookup.right = new FormAttachment(middle, -margin);
    wlPerformLookup.setLayoutData(fdlPerformLookup);
    wPerformLookup = new Button(wOperationOrder, SWT.CHECK);
    wPerformLookup.setToolTipText(
        BaseMessages.getString(PKG, "SynchronizeAfterMergeDialog.PerformLookup.Tooltip"));
    wPerformLookup.addSelectionListener(lsSimpleSelection);
    PropsUi.setLook(wPerformLookup);
    FormData fdPerformLookup = new FormData();
    fdPerformLookup.left = new FormAttachment(middle, 0);
    fdPerformLookup.top = new FormAttachment(wlPerformLookup, 0, SWT.CENTER);
    fdPerformLookup.right = new FormAttachment(100, 0);
    wPerformLookup.setLayoutData(fdPerformLookup);

    FormData fdOperationOrder = new FormData();
    fdOperationOrder.left = new FormAttachment(0, margin);
    fdOperationOrder.top = new FormAttachment(wTransformName, margin);
    fdOperationOrder.right = new FormAttachment(100, -margin);
    wOperationOrder.setLayoutData(fdOperationOrder);

    // ///////////////////////////////////////////////////////////
    // / END OF Operation order GROUP
    // ///////////////////////////////////////////////////////////

    FormData fdAdvancedComp = new FormData();
    fdAdvancedComp.left = new FormAttachment(0, 0);
    fdAdvancedComp.top = new FormAttachment(0, 0);
    fdAdvancedComp.right = new FormAttachment(100, 0);
    fdAdvancedComp.bottom = new FormAttachment(100, 0);
    wAdvancedComp.setLayoutData(fdAdvancedComp);

    wAdvancedComp.layout();
    wAdvancedTab.setControl(wAdvancedComp);
    PropsUi.setLook(wAdvancedComp);

    // ///////////////////////////////////////////////////////////
    // / END OF ADVANCED TAB
    // ///////////////////////////////////////////////////////////

    FormData fdTabFolder = new FormData();
    fdTabFolder.left = new FormAttachment(0, 0);
    fdTabFolder.top = new FormAttachment(wTransformName, margin);
    fdTabFolder.right = new FormAttachment(100, 0);
    fdTabFolder.bottom = new FormAttachment(wOk, -2 * margin);
    wTabFolder.setLayoutData(fdTabFolder);

    wGet.addListener(SWT.Selection, e -> get());
    wGetLU.addListener(SWT.Selection, e -> getUpdate());

    wbSchema.addSelectionListener(
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent e) {
            getSchemaNames();
          }
        });
    wbTable.addSelectionListener(
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent e) {
            getTableName();
          }
        });

    wTabFolder.setSelection(0);

    getData();
    setTableFieldCombo();
    activeTablenameField();
    input.setChanged(changed);

    BaseDialog.defaultShellHandling(shell, c -> ok(), c -> cancel());

    return transformName;
  }