]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/table/PasteDataCommandHandler.java
Add CSV table view for copy/pasting consumer information before creation
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / table / PasteDataCommandHandler.java
diff --git a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/table/PasteDataCommandHandler.java b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/table/PasteDataCommandHandler.java
new file mode 100644 (file)
index 0000000..06e9fbd
--- /dev/null
@@ -0,0 +1,47 @@
+package org.simantics.district.network.ui.table;
+
+import java.util.Collection;
+
+import org.eclipse.nebula.widgets.nattable.command.AbstractLayerCommandHandler;
+import org.eclipse.nebula.widgets.nattable.layer.DataLayer;
+import org.eclipse.nebula.widgets.nattable.layer.event.ColumnVisualUpdateEvent;
+import org.eclipse.nebula.widgets.nattable.layer.event.StructuralRefreshEvent;
+import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer;
+import org.eclipse.swt.dnd.Clipboard;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class PasteDataCommandHandler extends AbstractLayerCommandHandler<CustomPasteDataCommand> {
+
+       private static final Logger LOGGER = LoggerFactory.getLogger(PasteDataCommandHandler.class);
+
+       private final SelectionLayer selectionLayer;
+       private final DataLayer dataLayer;
+       private final Clipboard cpb;
+       private final TableDataProvider provider;
+
+       public PasteDataCommandHandler(TableDataProvider provider, DataLayer dataLayer, SelectionLayer selectionLayer, Clipboard cpb) {
+               this.provider = provider;
+               this.dataLayer = dataLayer;
+               this.selectionLayer = selectionLayer;
+               this.cpb = cpb;
+       }
+
+    @Override
+    public Class<CustomPasteDataCommand> getCommandClass() {
+        return CustomPasteDataCommand.class;
+    }
+
+    @Override
+    protected boolean doCommand(CustomPasteDataCommand command) {
+        String[][] fullData = command.data;
+        int pasteRow = command.pasteRow;
+        Collection<Integer> pasteColumn = command.getColumnPositions();
+        if (pasteRow > -1) {
+            provider.setDataValues(pasteColumn, pasteRow, fullData);
+            dataLayer.fireLayerEvent(new StructuralRefreshEvent(dataLayer));
+        }
+        return true;
+    }
+}
+