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/incubator-hop.git


The following commit(s) were added to refs/heads/master by this push:
     new f157f93  HOP-2879: values are now saved on macos in TableView
     new 42fc2c5  Merge pull request #818 from hansva/master
f157f93 is described below

commit f157f93049ad68b9804d67fa436996cd38827938
Author: Hans Van Akelyen <[email protected]>
AuthorDate: Fri May 21 16:02:46 2021 +0200

    HOP-2879: values are now saved on macos in TableView
    
    some extra cleanup of the code
---
 .../org/apache/hop/ui/core/widget/TableView.java   | 128 ++++++---------------
 1 file changed, 38 insertions(+), 90 deletions(-)

diff --git a/ui/src/main/java/org/apache/hop/ui/core/widget/TableView.java 
b/ui/src/main/java/org/apache/hop/ui/core/widget/TableView.java
index e66a694..1139ab1 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/widget/TableView.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/widget/TableView.java
@@ -45,56 +45,18 @@ import org.apache.hop.ui.util.EnvironmentUtils;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.SWTException;
 import org.eclipse.swt.custom.TableEditor;
-import org.eclipse.swt.dnd.Clipboard;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.DragSource;
-import org.eclipse.swt.dnd.DragSourceEvent;
-import org.eclipse.swt.dnd.DragSourceListener;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.events.TraverseListener;
+import org.eclipse.swt.dnd.*;
+import org.eclipse.swt.events.*;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.graphics.Rectangle;
 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.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.MenuItem;
-import org.eclipse.swt.widgets.MessageBox;
-import org.eclipse.swt.widgets.ScrollBar;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Hashtable;
+import org.eclipse.swt.widgets.*;
+
 import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 
 /**
  * Widget to display or modify data, displayed in a Table format.
@@ -130,7 +92,7 @@ public class TableView extends Composite {
   private boolean previousShift;
   private int selectionStart;
 
-  public Table table;
+  public final Table table;
 
   private TableEditor editor;
   private final TableColumn[] tableColumn;
@@ -153,6 +115,7 @@ public class TableView extends Composite {
   private final ModifyListener lsModCombo;
   private final TraverseListener lsTraverse;
   private final Listener lsFocusInTabItem;
+  private final Listener lsKeyUp;
 
   private int sortField;
   private int sortFieldLast;
@@ -169,8 +132,6 @@ public class TableView extends Composite {
   private ModifyListener lsContent;
   private Clipboard clipboard;
 
-  // private int last_carret_position;
-
   private ArrayList<ChangeAction> undo;
   private int undoPosition;
   private String[] beforeEdit;
@@ -761,16 +722,8 @@ public class TableView extends Composite {
             boolean right = false;
             boolean left = false;
 
-            /*
-             * left = e.keyCode == SWT.ARROW_LEFT && last_carret_position==0;
-             *
-             * if (text!=null && !text.isDisposed()) right = e.keyCode == 
SWT.ARROW_RIGHT &&
-             * last_carret_position==text.getText().length();
-             */
-
             // "ENTER": close the text editor and copy the data over
             // We edit the data after moving to another cell, only if 
editNextCell =
-            // true;
             if (e.character == SWT.CR
                 || e.keyCode == SWT.ARROW_DOWN
                 || e.keyCode == SWT.ARROW_UP
@@ -834,11 +787,8 @@ public class TableView extends Composite {
 
             } else if (e.keyCode == SWT.ESC) {
               text.dispose();
-              // setFocus();
               table.setFocus();
             }
-
-            // last_carret_position = 
text.isDisposed()?-1:text.getCaretPosition();
           }
         };
 
@@ -898,7 +848,6 @@ public class TableView extends Composite {
               }
 
               selectRows(selectionStart, activeTableRow);
-              // activeTableItem = table.getItem(activeTableRow);
               table.showItem(table.getItem(activeTableRow));
               e.doit = false;
               return;
@@ -912,7 +861,6 @@ public class TableView extends Composite {
               }
 
               selectRows(activeTableRow, selectionStart);
-              // activeTableItem = table.getItem(activeTableRow);
 
               table.showItem(table.getItem(activeTableRow));
               e.doit = false;
@@ -993,7 +941,6 @@ public class TableView extends Composite {
               unselectAll();
               selectRows(activeTableRow, activeTableRow);
               setFocus();
-              // table.setFocus();
               return;
             }
 
@@ -1085,7 +1032,6 @@ public class TableView extends Composite {
                       || (e.character == '/')
                       || (e.character == ';');
 
-              // setSelection(row, rowNr, colNr);
               // character a-z, A-Z, 0-9: start typing...
               if (e.character == SWT.CR || e.keyCode == SWT.F2 || textChar) {
                 boolean selectText = true;
@@ -1123,7 +1069,6 @@ public class TableView extends Composite {
                   item.setText(1, "");
                   setRowNums();
                 }
-                // row = table.getItem(rowNr);
                 e.doit = false;
                 edit(activeTableRow, activeTableColumn);
               }
@@ -1135,6 +1080,27 @@ public class TableView extends Composite {
         };
     table.addKeyListener(lsKeyTable);
 
+    // KeyUp Listener for OsX
+
+    lsKeyUp =
+        event -> {
+          if (table.isDisposed()) {
+            return;
+          }
+          final TableItem row = activeTableItem;
+          if (row == null) {
+            return;
+          }
+          final int rowNr = table.indexOf(row);
+          final int colNr = activeTableColumn;
+          final String value = getTextWidgetValue(colNr);
+
+          final String[] fBeforeEdit = beforeEdit;
+          String[] afterEdit = getItemText(row);
+          checkChanged(new String[][] {fBeforeEdit}, new String[][] 
{afterEdit}, new int[] {rowNr});
+          row.setText(colNr, value);
+        };
+
     // Table listens to the mouse:
     MouseAdapter lsMouseT =
         new MouseAdapter() {
@@ -1156,7 +1122,6 @@ public class TableView extends Composite {
                 }
               }
             }
-            // if ( event.button == 1 ) {
             boolean rightClick = event.button == 3;
             if (event.button == 1 || rightClick) {
               boolean shift = (event.stateMask & SWT.SHIFT) != 0;
@@ -1925,7 +1890,6 @@ public class TableView extends Composite {
     for (int r = 0; r < items.length; r++) {
       TableItem ti = items[r];
       for (int c = 1; c < table.getColumnCount(); c++) {
-        ColumnInfo ci = columns[c - 1];
         if (c > 1) {
           selection += CLIPBOARD_DELIMITER;
         }
@@ -2135,11 +2099,6 @@ public class TableView extends Composite {
       addUndo(ta);
     }
 
-    /*
-     * try { table.getRow(); } catch(Exception e) // Index is too high: lower 
to last available value {
-     * setPosition(table.getItemCount()-1, 1); }
-     */
-
     setRowNums();
 
     setModified();
@@ -2310,7 +2269,6 @@ public class TableView extends Composite {
       }
       textWidget.addModifyListener(lsUndo);
       textWidget.setSelection(content.length());
-      // last_carret_position = content.length();
       textWidget.addKeyListener(lsKeyText);
       // Make the column larger so we can still see the string we're 
entering...
       textWidget.addModifyListener(modifyListener);
@@ -2325,6 +2283,9 @@ public class TableView extends Composite {
       textWidget.addTraverseListener(lsTraverse);
       textWidget.setData(CANCEL_KEYS, new String[] {"TAB", "SHIFT+TAB"});
       textWidget.addFocusListener(lsFocusText);
+      if (OsHelper.isMac()) {
+        textWidget.addListener(SWT.KeyUp, lsKeyUp);
+      }
     } else {
       Text textWidget = new Text(table, SWT.NONE);
       text = textWidget;
@@ -2334,7 +2295,6 @@ public class TableView extends Composite {
       }
       textWidget.addModifyListener(lsUndo);
       textWidget.setSelection(content.length());
-      // last_carret_position = content.length();
       textWidget.addKeyListener(lsKeyText);
       // Make the column larger so we can still see the string we're 
entering...
       textWidget.addModifyListener(modifyListener);
@@ -2349,6 +2309,9 @@ public class TableView extends Composite {
       textWidget.addTraverseListener(lsTraverse);
       textWidget.setData(CANCEL_KEYS, new String[] {"TAB", "SHIFT+TAB"});
       textWidget.addFocusListener(lsFocusText);
+      if (OsHelper.isMac()) {
+        textWidget.addListener(SWT.KeyUp, lsKeyUp);
+      }
     }
     props.setLook(text, Props.WIDGET_STYLE_TABLE);
 
@@ -2572,7 +2535,6 @@ public class TableView extends Composite {
     buttonRowNr = rowNr;
     buttonColNr = colNr;
 
-    // button.addTraverseListener(lsTraverse);
     buttonContent = row.getText(colNr);
 
     String tooltip = columns[colNr - 1].getToolTip();
@@ -2594,7 +2556,6 @@ public class TableView extends Composite {
     editor.minimumWidth = size.x;
     editor.minimumHeight = size.y - 2;
 
-    // setRowNums();
     editor.layout();
 
     // Open the text editor in the correct column of the selected row.
@@ -2602,10 +2563,6 @@ public class TableView extends Composite {
 
     button.setFocus();
 
-    // if the button loses focus, destroy it...
-    /*
-     * button.addFocusListener(new FocusAdapter() { public void 
focusLost(FocusEvent e) { button.dispose(); } } );
-     */
   }
 
   public void setRowNums() {
@@ -2613,7 +2570,6 @@ public class TableView extends Composite {
       TableItem item = table.getItem(i);
       if (item != null) {
         String num = "" + (i + 1);
-        // for(int j=num.length();j<3;j++) num="0"+num;
         if (!item.getText(0).equals(num)) {
           item.setText(0, num);
         }
@@ -2870,7 +2826,7 @@ public class TableView extends Composite {
   }
 
   private void addUndo(ChangeAction ta) {
-    while (undo.size() > undoPosition + 1 && undo.size() > 0) {
+    while (undo.size() > undoPosition + 1 && !undo.isEmpty()) {
       int last = undo.size() - 1;
       undo.remove(last);
     }
@@ -2974,7 +2930,6 @@ public class TableView extends Composite {
       rowNr = 0;
     }
 
-    // cursor.setSelection(rowNr, 0);
     selectRows(rowNr, rowNr);
   }
 
@@ -3060,7 +3015,6 @@ public class TableView extends Composite {
       rowNr = 0;
     }
 
-    // cursor.setSelection(rowNr, 0);
     selectRows(rowNr, rowNr);
   }
 
@@ -3120,9 +3074,7 @@ public class TableView extends Composite {
       return null; // No undo left!
     }
 
-    ChangeAction retval = undo.get(undoPosition);
-
-    return retval;
+      return undo.get(undoPosition);
   }
 
   private ChangeAction nextUndo() {
@@ -3133,9 +3085,7 @@ public class TableView extends Composite {
 
     undoPosition++;
 
-    ChangeAction retval = undo.get(undoPosition);
-
-    return retval;
+    return undo.get(undoPosition);
   }
 
   private ChangeAction viewNextUndo() {
@@ -3144,9 +3094,7 @@ public class TableView extends Composite {
       return null; // no redo left...
     }
 
-    ChangeAction retval = undo.get(undoPosition + 1);
-
-    return retval;
+    return undo.get(undoPosition + 1);
   }
 
   private void clearUndo() {

Reply via email to