]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.utils.ui.workbench/src/org/simantics/utils/ui/workbench/dialogs/PropertyDialog.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.utils.ui.workbench / src / org / simantics / utils / ui / workbench / dialogs / PropertyDialog.java
diff --git a/bundles/org.simantics.utils.ui.workbench/src/org/simantics/utils/ui/workbench/dialogs/PropertyDialog.java b/bundles/org.simantics.utils.ui.workbench/src/org/simantics/utils/ui/workbench/dialogs/PropertyDialog.java
new file mode 100644 (file)
index 0000000..e0825c7
--- /dev/null
@@ -0,0 +1,126 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
+ * in Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+/*\r
+ * Created on 13.10.2005\r
+ * @author Toni Kalajainen \r
+ */\r
+package org.simantics.utils.ui.workbench.dialogs;\r
+\r
+import java.util.List;\r
+import java.util.Map;\r
+\r
+import org.eclipse.jface.viewers.IStructuredContentProvider;\r
+import org.eclipse.jface.viewers.TableViewer;\r
+import org.eclipse.jface.viewers.Viewer;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Control;\r
+import org.eclipse.swt.widgets.Shell;\r
+import org.eclipse.swt.widgets.Table;\r
+import org.eclipse.swt.widgets.TableColumn;\r
+import org.eclipse.ui.dialogs.ListDialog;\r
+import org.simantics.utils.ui.jface.StringListLabelProvider;\r
+import org.simantics.utils.ui.workbench.ui.TableColumnSorter;\r
+\r
+\r
+\r
+/**\r
+ * PropertyDialog is a dialog window popup for properties (key, value pairs)\r
+ *\r
+ */\r
+public class PropertyDialog extends ListDialog {\r
+\r
+    public final static String KEY_COLUMN_NAME = "Key";\r
+    public final static String VALUE_COLUMN_NAME = "Value";\r
+    \r
+    protected List<String[]>data;\r
+    protected StringListLabelProvider labelProvider;\r
+    \r
+    public PropertyDialog(Shell parent) {\r
+        super(parent);\r
+        \r
+        this.setContentProvider(new IStructuredContentProvider() {\r
+            public Object[] getElements(Object inputElement) {\r
+                List<?> lines = (List<?>) inputElement;\r
+                return lines.toArray(new String[0][0]);\r
+            }\r
+            public void dispose() {\r
+            }\r
+            public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {\r
+            }\r
+        });\r
+    }\r
+\r
+    public int columnNameToColumn(String name) {\r
+        if (name.equals(KEY_COLUMN_NAME)) return 0;\r
+        if (name.equals(VALUE_COLUMN_NAME)) return 1;\r
+        return -1;\r
+    }\r
+    \r
+    @Override\r
+    protected Control createDialogArea(Composite container) {\r
+        Control composite = super.createDialogArea(container);\r
+        TableViewer viewer = getTableViewer();\r
+        Table table = viewer.getTable();\r
+        \r
+        //viewer.setUseHashlookup(true);\r
+        table.setHeaderVisible(true);\r
+        table.setLinesVisible(true);\r
+        \r
+        \r
+        \r
+        final TableColumn tableColumn = new TableColumn(table, table.getStyle(), 0);\r
+        tableColumn.setWidth(100);\r
+        tableColumn.setText(KEY_COLUMN_NAME);\r
+\r
+        final TableColumn tableColumn_2 = new TableColumn(table, table.getStyle(), 1);\r
+        tableColumn_2.setWidth(190);\r
+        tableColumn_2.setText(VALUE_COLUMN_NAME);\r
+        \r
+        // Dialog area is created when dialog.open is called\r
+        // which is after input has been set\r
+        // Therefore there columns have not been created at the time\r
+        // of setting input object before columns have been set.\r
+        // Re-setting input forces to read columns\r
+        viewer.setInput( getTableViewer().getInput() );\r
+        viewer.setColumnProperties(new String[] {KEY_COLUMN_NAME, VALUE_COLUMN_NAME});\r
+\r
+        TableColumnSorter.attachTableColumnSorter( viewer );\r
+\r
+        return composite;\r
+    }\r
+    \r
+    public void setInput(String lines[][]) {\r
+        labelProvider = new StringListLabelProvider(lines);\r
+        this.setLabelProvider( labelProvider );\r
+        data = labelProvider.getData();\r
+        super.setInput(data);\r
+    }\r
+    \r
+    @Override\r
+    protected int getTableStyle()\r
+    {\r
+        return SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION; \r
+    }\r
+    \r
+    public void setInput(Map<String, String> properties) {\r
+        String lines[][] = new String[properties.size()][];\r
+        int i = 0;\r
+        for (String key : properties.keySet()) {\r
+            String line[] = new String[] {key, properties.get(key)};\r
+            lines[i++] = line;\r
+        }\r
+        setInput(lines);\r
+    }\r
+}\r
+\r
+\r