]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.imports.ui/src/org/simantics/district/imports/ui/CSVImportWizardPage.java
Final push of district changes
[simantics/district.git] / org.simantics.district.imports.ui / src / org / simantics / district / imports / ui / CSVImportWizardPage.java
index 71017b321b90d9486974021f75d01ca4a764b517..e4a0612a2358e8b4a6a609d6146cb45ea084f504 100644 (file)
-package org.simantics.district.imports.ui;\r
-\r
-import java.io.IOException;\r
-import java.nio.file.Files;\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\r
-import java.util.Collections;\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import org.eclipse.jface.layout.GridDataFactory;\r
-import org.eclipse.jface.layout.TableColumnLayout;\r
-import org.eclipse.jface.layout.TreeColumnLayout;\r
-import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;\r
-import org.eclipse.jface.viewers.ColumnWeightData;\r
-import org.eclipse.jface.viewers.IContentProvider;\r
-import org.eclipse.jface.viewers.TableViewer;\r
-import org.eclipse.jface.viewers.TreeViewer;\r
-import org.eclipse.jface.viewers.Viewer;\r
-import org.eclipse.jface.wizard.WizardPage;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.events.SelectionEvent;\r
-import org.eclipse.swt.events.SelectionListener;\r
-import org.eclipse.swt.layout.GridData;\r
-import org.eclipse.swt.layout.GridLayout;\r
-import org.eclipse.swt.widgets.Button;\r
-import org.eclipse.swt.widgets.Combo;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Layout;\r
-import org.eclipse.swt.widgets.Table;\r
-import org.eclipse.swt.widgets.TableColumn;\r
-import org.eclipse.swt.widgets.TableItem;\r
-import org.simantics.district.imports.DistrictImportUtils.CSVHeader;\r
-import org.simantics.utils.ui.widgets.FileOrDirectorySelectionWidget;\r
-import org.simantics.utils.ui.widgets.FileSelectionListener;\r
-import org.simantics.utils.ui.widgets.FileSelectionWidget;\r
-\r
-public class CSVImportWizardPage extends WizardPage implements FileSelectionListener {\r
-\r
-    private CSVImportModel model;\r
-    private FileSelectionWidget csvSelection;\r
-    private Table headerTable;\r
-    private Button firstAsHeader;\r
-    private Combo delimiterCombo;\r
-    private TableColumnLayout tableColumnLayout;\r
-    private TableViewer tableViewer;\r
-    private Composite tableComposite;\r
-\r
-    protected CSVImportWizardPage(CSVImportModel model) {\r
-        super("Import CSV Data");\r
-        this.model = model;\r
-        setMessage("Select CSV file to import");\r
-    }\r
-\r
-    @Override\r
-    public void createControl(Composite parent) {\r
-        Composite composite = new Composite(parent, SWT.NONE);\r
-        composite.setLayout(new GridLayout(1,false));\r
-        GridDataFactory.fillDefaults().grab(true, true).align(SWT.FILL, SWT.FILL).applyTo(composite);\r
-        \r
-        csvSelection = new FileSelectionWidget(composite, "CSV file", SWT.OPEN);\r
-        csvSelection.addListener(this);\r
-        \r
-        delimiterCombo = new Combo(composite, SWT.DROP_DOWN | SWT.READ_ONLY);\r
-        delimiterCombo.setItems(model.getDelimiterFormats());\r
-        delimiterCombo.addSelectionListener(new SelectionListener() {\r
-            \r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                model.setDelimiterByLabel(delimiterCombo.getItem(delimiterCombo.getSelectionIndex()));\r
-                updateHeaders();\r
-            }\r
-            \r
-            @Override\r
-            public void widgetDefaultSelected(SelectionEvent e) {\r
-                \r
-            }\r
-        });\r
-        \r
-        firstAsHeader = new Button(composite, SWT.CHECK);\r
-        firstAsHeader.setText("Read first row as header");\r
-        firstAsHeader.setSelection(model.getReadFirstAsHeader());\r
-        firstAsHeader.addSelectionListener(new SelectionListener() {\r
-            \r
-            @Override\r
-            public void widgetSelected(SelectionEvent e) {\r
-                model.setReadFirstAsHeader(firstAsHeader.getSelection());\r
-                updateHeaders();\r
-            }\r
-            \r
-            @Override\r
-            public void widgetDefaultSelected(SelectionEvent e) {\r
-                \r
-            }\r
-        });\r
-        \r
-        \r
-        tableComposite = new Composite(composite, SWT.BORDER);\r
-        tableColumnLayout = new TableColumnLayout();\r
-        tableComposite.setLayout(tableColumnLayout);\r
-\r
-        updateHeaders();\r
-        \r
-        setControl(composite);\r
-        \r
-        \r
-        \r
-        setPageComplete(false);\r
-    }\r
-\r
-    @Override\r
-    public void fileSelected(FileOrDirectorySelectionWidget source, String[] filename) {\r
-        String[] selection = csvSelection.getFilename();\r
-        if (selection != null && selection.length > 0) {\r
-            Path csvFile = Paths.get(selection[0]);\r
-            if (!Files.exists(csvFile)) {\r
-                setErrorMessage("File " + csvFile.toAbsolutePath() + " does not exist");\r
-            } else {\r
-                model.setSource(csvFile);\r
-                updateHeaders();\r
-                setPageComplete(true);\r
-            }\r
-        } else {\r
-            setPageComplete(false);\r
-        }\r
-    }\r
-\r
-    private void updateHeaders() {\r
-        if (headerTable != null)\r
-            headerTable.dispose();\r
-        headerTable = new Table(tableComposite, SWT.NONE);\r
-        headerTable.setHeaderVisible(true);\r
-        headerTable.setLinesVisible(true);\r
-        GridDataFactory.fillDefaults().grab(true, true).align(SWT.FILL, SWT.FILL).applyTo(tableComposite);\r
-        for (int i = 0; i < headerTable.getColumns().length; i++) {\r
-            TableColumn column = headerTable.getColumns()[i];\r
-            column.dispose();\r
-        }\r
-        for (int i = 0; i < headerTable.getItemCount(); i++) {\r
-            TableItem item = headerTable.getItem(i);\r
-            item.dispose();\r
-        }\r
-        try {\r
-            Map<CSVHeader, List<String>> headerAndValues = model.getHeaderAndRows(5);\r
-            \r
-            int coo = headerTable.getColumns().length;\r
-            int count = headerTable.getColumnCount();\r
-            \r
-            for (Map.Entry<CSVHeader, List<String>> entr : headerAndValues.entrySet()) {\r
-                CSVHeader he = entr.getKey();\r
-                int index = he.getIndex();\r
-                TableColumn headerCol = new TableColumn(headerTable, SWT.NONE);\r
-                headerCol.setText(he.getHeader());\r
-                \r
-                tableColumnLayout.setColumnData(headerCol, new ColumnWeightData(10));\r
-                headerCol.pack();\r
-                \r
-                for (String val : entr.getValue()) {\r
-                    TableItem item = new TableItem(headerTable, SWT.NONE);\r
-                    item.setText(val);\r
-                }\r
-            }\r
-        } catch (IOException e) {\r
-            setErrorMessage(e.getMessage());\r
-        }\r
-    }\r
-\r
-}\r
+package org.simantics.district.imports.ui;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+
+import org.apache.commons.csv.CSVRecord;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.layout.TableColumnLayout;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.simantics.district.network.ui.function.Functions;
+import org.simantics.utils.ui.widgets.FileOrDirectorySelectionWidget;
+import org.simantics.utils.ui.widgets.FileSelectionListener;
+import org.simantics.utils.ui.widgets.FileSelectionWidget;
+
+
+public class CSVImportWizardPage extends WizardPage implements FileSelectionListener {
+
+    private CSVImportModel model;
+    private FileSelectionWidget csvSelection;
+    private Table headerTable;
+    private Button firstAsHeader;
+    
+    private Combo diagramCombo;
+    
+    
+    private Combo delimiterCombo;
+    private Combo delimiterdCombo;
+    private TableColumnLayout tableColumnLayout;
+    private TableViewer tableViewer;
+    private Composite tableComposite;
+    private FileSelectionWidget wktFileSelection;
+    
+    private Path wktFile;
+
+    protected CSVImportWizardPage(CSVImportModel model) {
+        super("Import CSV Data");
+        this.model = model;
+        setMessage("Select CSV file to import");
+    }
+
+    @Override
+    public void createControl(Composite parent) {
+        Composite composite = new Composite(parent, SWT.NONE);
+        composite.setLayout(new GridLayout(1,false));
+        GridDataFactory.fillDefaults().grab(true, true).align(SWT.FILL, SWT.FILL).applyTo(composite);
+        
+        diagramCombo = new Combo(composite, SWT.DROP_DOWN | SWT.READ_ONLY);
+        diagramCombo.setItems(getDistrictDiagrams());
+        
+        
+        csvSelection = new FileSelectionWidget(composite, "CSV file", SWT.OPEN);
+        csvSelection.addListener(this);
+        
+        delimiterCombo = new Combo(composite, SWT.DROP_DOWN | SWT.READ_ONLY);
+        delimiterCombo.setItems(model.getDelimiterFormats());
+        delimiterCombo.addSelectionListener(new SelectionListener() {
+            
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                model.setDelimiterByLabel(delimiterCombo.getItem(delimiterCombo.getSelectionIndex()));
+                updateHeaders();
+            }
+            
+            @Override
+            public void widgetDefaultSelected(SelectionEvent e) {
+                
+            }
+        });
+        
+        firstAsHeader = new Button(composite, SWT.CHECK);
+        firstAsHeader.setText("Read first row as header");
+        firstAsHeader.setSelection(model.getReadFirstAsHeader());
+        firstAsHeader.addSelectionListener(new SelectionListener() {
+            
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                model.setReadFirstAsHeader(firstAsHeader.getSelection());
+                updateHeaders();
+            }
+            
+            @Override
+            public void widgetDefaultSelected(SelectionEvent e) {
+                
+            }
+        });
+        
+        
+        tableComposite = new Composite(composite, SWT.BORDER);
+        tableColumnLayout = new TableColumnLayout();
+        tableComposite.setLayout(tableColumnLayout);
+
+        
+        
+        wktFileSelection = new FileSelectionWidget(composite, "WKT file", SWT.OPEN);
+        wktFileSelection.addListener(new FileSelectionListener() {
+            
+            @Override
+            public void fileSelected(FileOrDirectorySelectionWidget source, String[] filename) {
+                String[] selection = wktFileSelection.getFilename();
+                if (selection != null && selection.length > 0) {
+                    Path wktFilee = Paths.get(selection[0]);
+                    if (!Files.exists(wktFilee)) {
+                        setErrorMessage("File " + wktFilee.toAbsolutePath() + " does not exist");
+                    } else {
+                        wktFile = wktFilee;
+                        setPageComplete(true);
+                    }
+                } else {
+                    setPageComplete(false);
+                } 
+            }
+        });
+        
+        updateHeaders();
+        
+        
+        
+        setControl(composite);
+        
+        
+        
+        setPageComplete(false);
+    }
+
+    private String[] getDistrictDiagrams() {
+        Functions.getDistrictDiagrams(null);
+        return null;
+    }
+
+    @Override
+    public void fileSelected(FileOrDirectorySelectionWidget source, String[] filename) {
+        String[] selection = csvSelection.getFilename();
+        if (selection != null && selection.length > 0) {
+            Path csvFile = Paths.get(selection[0]);
+            if (!Files.exists(csvFile)) {
+                setErrorMessage("File " + csvFile.toAbsolutePath() + " does not exist");
+            } else {
+                model.setSource(csvFile);
+                updateHeaders();
+                setPageComplete(true);
+            }
+        } else {
+            setPageComplete(false);
+        }
+    }
+
+    private void updateHeaders() {
+        if (headerTable != null)
+            headerTable.dispose();
+        headerTable = new Table(tableComposite, SWT.NONE);
+        headerTable.setHeaderVisible(true);
+        headerTable.setLinesVisible(true);
+        GridDataFactory.fillDefaults().grab(true, true).align(SWT.FILL, SWT.FILL).applyTo(tableComposite);
+        for (int i = 0; i < headerTable.getColumns().length; i++) {
+            TableColumn column = headerTable.getColumns()[i];
+            column.dispose();
+        }
+        for (int i = 0; i < headerTable.getItemCount(); i++) {
+            TableItem item = headerTable.getItem(i);
+            item.dispose();
+        }
+        try {
+            List<CSVRecord> rows = model.getRows(5);
+            
+            for (int k = 0; k < rows.size(); k++) {
+                CSVRecord row = rows.get(k);
+                
+                int columnCount = row.size();
+                for (int i = 0; i < columnCount; i++) {
+                    String value = row.get(i);
+                    if (k == 0) {
+                        TableColumn headerCol = new TableColumn(headerTable, SWT.NONE);
+                        headerCol.setText(value);
+                        
+                        tableColumnLayout.setColumnData(headerCol, new ColumnWeightData(10));
+                        headerCol.pack();
+                    } else {
+                        int actualK = k - 1;
+                        TableItem item;
+                        int itemCount = headerTable.getItemCount();
+                        if (actualK >= itemCount) {
+                            item = new TableItem(headerTable, SWT.NONE);
+                        } else {
+                            item = headerTable.getItem(actualK);
+                        }
+                        item.setText(i, value);
+                    }
+                }
+            }
+            
+//            Map<CSVHeader, List<String>> headerAndValues = model.getHeaderAndRows(5);
+//            
+//            int coo = headerTable.getColumns().length;
+//            int count = headerTable.getColumnCount();
+//            
+//            for (Map.Entry<CSVHeader, List<String>> entr : headerAndValues.entrySet()) {
+//                CSVHeader he = entr.getKey();
+//                int index = he.getIndex();
+//                TableColumn headerCol = new TableColumn(headerTable, SWT.NONE);
+//                headerCol.setText(he.getHeader());
+//                
+//                tableColumnLayout.setColumnData(headerCol, new ColumnWeightData(10));
+//                headerCol.pack();
+//                
+//                for (String val : entr.getValue()) {
+//                    TableItem item = new TableItem(headerTable, SWT.NONE);
+//                    item.setText(val);
+//                }
+//            }
+        } catch (IOException e) {
+            setErrorMessage(e.getMessage());
+        }
+    }
+
+}