-package org.simantics.document.swt.core.widget;\r
-\r
-import java.util.Collections;\r
-import java.util.HashMap;\r
-import java.util.Map;\r
-\r
-import org.eclipse.jface.viewers.ISelection;\r
-import org.eclipse.jface.viewers.ISelectionProvider;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Event;\r
-import org.eclipse.swt.widgets.Listener;\r
-import org.eclipse.swt.widgets.Tree;\r
-import org.eclipse.ui.IWorkbenchSite;\r
-import org.simantics.Simantics;\r
-import org.simantics.browsing.ui.Column;\r
-import org.simantics.browsing.ui.Column.Align;\r
-import org.simantics.browsing.ui.StatePersistor;\r
-import org.simantics.browsing.ui.swt.InputSourceImpl;\r
-import org.simantics.browsing.ui.swt.widgets.DragSourceListenerFactory;\r
-import org.simantics.browsing.ui.swt.widgets.ModelBrowser;\r
-import org.simantics.browsing.ui.swt.widgets.impl.WidgetSupportImpl;\r
-import org.simantics.db.layer0.variable.VariableBean;\r
-import org.simantics.db.management.ISessionContext;\r
-import org.simantics.document.server.JSONObject;\r
-import org.simantics.document.swt.core.SWTDocument;\r
-import org.simantics.document.swt.core.SWTViews;\r
-import org.simantics.document.swt.core.base.LeafWidgetManager;\r
-import org.simantics.document.swt.core.base.WidgetContainer;\r
-import org.simantics.document.swt.core.bean.ColumnBean;\r
-import org.simantics.document.swt.core.bean.ColumnsBean;\r
-import org.simantics.scl.runtime.function.Function1;\r
-import org.simantics.ui.selection.WorkbenchSelectionUtils;\r
-\r
-public class Explorer extends LeafWidgetManager<ModelBrowser> {\r
-\r
- @Override\r
- protected void doUpdateProperties(SWTDocument document, ModelBrowser control, JSONObject object) {\r
- // String text = object.getField("text");\r
- // control.setText(text);\r
- }\r
-\r
- protected Column[] getColumns(ColumnsBean bean) {\r
- Column[] result = new Column[bean.columns.length];\r
- for(int i=0;i<bean.columns.length;i++) {\r
- ColumnBean cb = bean.columns[i];\r
- result[i] = new Column(cb.key, cb.label, Align.valueOf(cb.alignment), cb.width, cb.tooltip, cb.grab, cb.weight);\r
- }\r
- return result;\r
- }\r
- \r
- @Override\r
- protected ModelBrowser doCreateControl(SWTDocument document, Composite parent, JSONObject object) {\r
- \r
- String browseContext = object.getJSONField("browseContext");\r
- if(browseContext == null) return null;\r
-\r
- String contextMenuId = object.getJSONField("contextMenuId");\r
- \r
- Boolean displayFilter = object.getJSONField("displayFilter");\r
- Boolean displayHeader = object.getJSONField("displayHeader");\r
- Integer style = object.getJSONField("style");\r
- if(style == null) style = SWT.FULL_SELECTION;\r
- \r
- Boolean vscroll = object.getJSONFieldDefault("VScroll", false);\r
- if(Boolean.TRUE.equals(vscroll))\r
- style |= SWT.V_SCROLL;\r
- \r
- Boolean hscroll = object.getJSONFieldDefault("HScroll", false);\r
- if(Boolean.TRUE.equals(hscroll))\r
- style |= SWT.H_SCROLL;\r
-\r
- Boolean noscroll = object.getJSONFieldDefault("NoScroll", false);\r
- if(Boolean.TRUE.equals(noscroll))\r
- style |= SWT.NO_SCROLL;\r
- \r
- StatePersistor persistor = object.getJSONField("persistor");\r
- final Function1<Object, Boolean> selectionListener = object.getJSONField("selectionListener");\r
-\r
- DragSourceListenerFactory dragSourceListenerFactory = object.getJSONField("dragSourceListenerFactory");\r
- \r
- final IWorkbenchSite site = document.getSite();\r
- final ISelectionProvider selectionProvider = document.getSelectionProvider();\r
-\r
- Map<String, Object> args = new HashMap<String, Object>();\r
- args.put("displaySelectors", Boolean.FALSE);\r
- args.put("displayFilter", displayFilter != null ? displayFilter : Boolean.FALSE);\r
-\r
-// GridLayoutFactory.fillDefaults().applyTo(parent);\r
-\r
- ColumnsBean columns = object.getBeanJSONFieldDefault("columns", ColumnsBean.BINDING, null);\r
- String editingColumn = object.getJSONFieldDefault("editingColumn", null);\r
- \r
-// Column[] COLUMNS = new Column[] {\r
-// new Column("HasDisplayProperty", "Parameter description", Align.LEFT, 80, "Input parameter name", true),\r
-// new Column("HasDisplayValue", "Value", Align.RIGHT, 65, "Value"),\r
-// new Column("HasDisplayUnit", "Unit", Align.RIGHT, 100, "Unit") \r
-// };\r
- \r
-// parent.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_RED));\r
- \r
- final ModelBrowser control = new ModelBrowser(Collections.singleton(browseContext), args, site, parent, new WidgetSupportImpl(), style);\r
-\r
- Tree tree = control.getExplorerControl();\r
- tree.addListener(SWT.SetData, new Listener() {\r
- \r
- @Override\r
- public void handleEvent(Event event) {\r
- SWTViews.notifyScrolledComposite(control);\r
- }\r
- \r
- });\r
- \r
- if(columns != null)\r
- control.setColumns(getColumns(columns));\r
- if(editingColumn != null)\r
- control.setEditingColumn(editingColumn);\r
- if(contextMenuId != null)\r
- control.setContextMenuId(contextMenuId);\r
- if(dragSourceListenerFactory != null)\r
- control.setDragSourceListenerFactory(dragSourceListenerFactory);\r
- if(displayHeader != null)\r
- tree.setHeaderVisible(displayHeader);\r
- \r
- control.setStatePersistor(persistor);\r
-\r
- control.finish();\r
- \r
- control.setInputSource(new InputSourceImpl<Object>() {\r
-\r
- @Override\r
- public Object get(ISessionContext ctx, Object selection) {\r
- return selection;\r
- }\r
-\r
- });\r
- \r
- // TODO: fixme!\r
- Object i = object.getJSONField("explorerInput");\r
- if(i instanceof VariableBean) {\r
- control.setInput(Simantics.getSessionContext(), ((VariableBean)i).getVariable());\r
- } else {\r
- control.setInput(Simantics.getSessionContext(), i);\r
- }\r
- \r
- control.addListenerToControl(SWT.Selection, new Listener() {\r
-\r
- @Override\r
- public void handleEvent(Event event) {\r
-\r
- if(selectionListener != null)\r
- selectionListener.apply(event);\r
- \r
- ISelection selection = (ISelection)control.getExplorer().getWidgetSelection();\r
- \r
- // TODO: refactor this!\r
-\r
- if(selectionProvider != null) {\r
- selectionProvider.setSelection(selection);\r
- }\r
- \r
-// if (site != null) {\r
-// ISelectionProvider sp = site.getSelectionProvider();\r
-// if (sp != null) {\r
-// sp.setSelection(selection);\r
-// }\r
-// }\r
-\r
- }\r
-\r
- }); \r
-\r
- return control;\r
-\r
- }\r
- \r
- @Override\r
- public String getProperty(SWTDocument document, JSONObject object, WidgetContainer<ModelBrowser> widget, String property) {\r
- if("selection".equals(property)) {\r
- ISelection selection = (ISelection)widget.getControl().getExplorer().getWidgetSelection();\r
- return SWTViews.encode(object, property, WorkbenchSelectionUtils.getWorkbenchSelectionElements(selection));\r
- }\r
- return null;\r
- }\r
-\r
-}\r
+package org.simantics.document.swt.core.widget;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.ui.IWorkbenchSite;
+import org.simantics.Simantics;
+import org.simantics.browsing.ui.Column;
+import org.simantics.browsing.ui.Column.Align;
+import org.simantics.browsing.ui.StatePersistor;
+import org.simantics.browsing.ui.swt.InputSourceImpl;
+import org.simantics.browsing.ui.swt.widgets.DragSourceListenerFactory;
+import org.simantics.browsing.ui.swt.widgets.ModelBrowser;
+import org.simantics.browsing.ui.swt.widgets.impl.WidgetSupportImpl;
+import org.simantics.db.layer0.variable.VariableBean;
+import org.simantics.db.management.ISessionContext;
+import org.simantics.document.server.JSONObject;
+import org.simantics.document.swt.core.SWTDocument;
+import org.simantics.document.swt.core.SWTViews;
+import org.simantics.document.swt.core.base.LeafWidgetManager;
+import org.simantics.document.swt.core.base.WidgetContainer;
+import org.simantics.document.swt.core.bean.ColumnBean;
+import org.simantics.document.swt.core.bean.ColumnsBean;
+import org.simantics.scl.runtime.function.Function1;
+import org.simantics.ui.selection.WorkbenchSelectionUtils;
+
+public class Explorer extends LeafWidgetManager<ModelBrowser> {
+
+ @Override
+ protected void doUpdateProperties(SWTDocument document, ModelBrowser control, JSONObject object) {
+ // String text = object.getField("text");
+ // control.setText(text);
+ }
+
+ protected Column[] getColumns(ColumnsBean bean) {
+ Column[] result = new Column[bean.columns.length];
+ for(int i=0;i<bean.columns.length;i++) {
+ ColumnBean cb = bean.columns[i];
+ result[i] = new Column(cb.key, cb.label, Align.valueOf(cb.alignment), cb.width, cb.tooltip, cb.grab, cb.weight);
+ }
+ return result;
+ }
+
+ @Override
+ protected ModelBrowser doCreateControl(SWTDocument document, Composite parent, JSONObject object) {
+
+ String browseContext = object.getJSONField("browseContext");
+ if(browseContext == null) return null;
+
+ String contextMenuId = object.getJSONField("contextMenuId");
+
+ Boolean displayFilter = object.getJSONField("displayFilter");
+ Boolean displayHeader = object.getJSONField("displayHeader");
+ Integer style = object.getJSONField("style");
+ if(style == null) style = SWT.FULL_SELECTION;
+
+ Boolean vscroll = object.getJSONFieldDefault("VScroll", false);
+ if(Boolean.TRUE.equals(vscroll))
+ style |= SWT.V_SCROLL;
+
+ Boolean hscroll = object.getJSONFieldDefault("HScroll", false);
+ if(Boolean.TRUE.equals(hscroll))
+ style |= SWT.H_SCROLL;
+
+ Boolean noscroll = object.getJSONFieldDefault("NoScroll", false);
+ if(Boolean.TRUE.equals(noscroll))
+ style |= SWT.NO_SCROLL;
+
+ StatePersistor persistor = object.getJSONField("persistor");
+ final Function1<Object, Boolean> selectionListener = object.getJSONField("selectionListener");
+
+ DragSourceListenerFactory dragSourceListenerFactory = object.getJSONField("dragSourceListenerFactory");
+
+ final IWorkbenchSite site = document.getSite();
+ final ISelectionProvider selectionProvider = document.getSelectionProvider();
+
+ Map<String, Object> args = new HashMap<String, Object>();
+ args.put("displaySelectors", Boolean.FALSE);
+ args.put("displayFilter", displayFilter != null ? displayFilter : Boolean.FALSE);
+
+// GridLayoutFactory.fillDefaults().applyTo(parent);
+
+ ColumnsBean columns = object.getBeanJSONFieldDefault("columns", ColumnsBean.BINDING, null);
+ String editingColumn = object.getJSONFieldDefault("editingColumn", null);
+
+// Column[] COLUMNS = new Column[] {
+// new Column("HasDisplayProperty", "Parameter description", Align.LEFT, 80, "Input parameter name", true),
+// new Column("HasDisplayValue", "Value", Align.RIGHT, 65, "Value"),
+// new Column("HasDisplayUnit", "Unit", Align.RIGHT, 100, "Unit")
+// };
+
+// parent.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_RED));
+
+ final ModelBrowser control = new ModelBrowser(Collections.singleton(browseContext), args, site, parent, new WidgetSupportImpl(), style);
+
+ Tree tree = control.getExplorerControl();
+ tree.addListener(SWT.SetData, new Listener() {
+
+ @Override
+ public void handleEvent(Event event) {
+ SWTViews.notifyScrolledComposite(control);
+ }
+
+ });
+
+ if(columns != null)
+ control.setColumns(getColumns(columns));
+ if(editingColumn != null)
+ control.setEditingColumn(editingColumn);
+ if(contextMenuId != null)
+ control.setContextMenuId(contextMenuId);
+ if(dragSourceListenerFactory != null)
+ control.setDragSourceListenerFactory(dragSourceListenerFactory);
+ if(displayHeader != null)
+ tree.setHeaderVisible(displayHeader);
+
+ control.setStatePersistor(persistor);
+
+ control.finish();
+
+ control.setInputSource(new InputSourceImpl<Object>() {
+
+ @Override
+ public Object get(ISessionContext ctx, Object selection) {
+ return selection;
+ }
+
+ });
+
+ // TODO: fixme!
+ Object i = object.getJSONField("explorerInput");
+ if(i instanceof VariableBean) {
+ control.setInput(Simantics.getSessionContext(), ((VariableBean)i).getVariable());
+ } else {
+ control.setInput(Simantics.getSessionContext(), i);
+ }
+
+ control.addListenerToControl(SWT.Selection, new Listener() {
+
+ @Override
+ public void handleEvent(Event event) {
+
+ if(selectionListener != null)
+ selectionListener.apply(event);
+
+ ISelection selection = (ISelection)control.getExplorer().getWidgetSelection();
+
+ // TODO: refactor this!
+
+ if(selectionProvider != null) {
+ selectionProvider.setSelection(selection);
+ }
+
+// if (site != null) {
+// ISelectionProvider sp = site.getSelectionProvider();
+// if (sp != null) {
+// sp.setSelection(selection);
+// }
+// }
+
+ }
+
+ });
+
+ return control;
+
+ }
+
+ @Override
+ public String getProperty(SWTDocument document, JSONObject object, WidgetContainer<ModelBrowser> widget, String property) {
+ if("selection".equals(property)) {
+ ISelection selection = (ISelection)widget.getControl().getExplorer().getWidgetSelection();
+ return SWTViews.encode(object, property, WorkbenchSelectionUtils.getWorkbenchSelectionElements(selection));
+ }
+ return null;
+ }
+
+}