]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTExplorer.java
Revert "Usability fixes for GraphExplorerImpl -related WB selection propagation"
[simantics/platform.git] / bundles / org.simantics.views.swt.client / src / org / simantics / views / swt / client / impl / SWTExplorer.java
index 3c0ce5a1f0504273960714cb0d470ff2159893e8..1666413e9c56d45ee16e8afeda3baf3e07e17446 100644 (file)
-package org.simantics.views.swt.client.impl;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Collections;\r
-import java.util.HashMap;\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import org.eclipse.jface.viewers.IPostSelectionProvider;\r
-import org.eclipse.jface.viewers.ISelection;\r
-import org.eclipse.jface.viewers.ISelectionChangedListener;\r
-import org.eclipse.jface.viewers.ISelectionProvider;\r
-import org.eclipse.jface.viewers.SelectionChangedEvent;\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.ui.IWorkbenchSite;\r
-import org.simantics.browsing.ui.Column;\r
-import org.simantics.browsing.ui.StatePersistor;\r
-import org.simantics.browsing.ui.swt.PassThruInputSource;\r
-import org.simantics.browsing.ui.swt.widgets.ModelBrowser;\r
-import org.simantics.browsing.ui.swt.widgets.impl.WidgetSupportImpl;\r
-import org.simantics.scl.runtime.function.Function1;\r
-import org.simantics.views.ViewUtils.ColumnBean;\r
-import org.simantics.views.ViewUtils.LayoutBean;\r
-import org.simantics.views.swt.client.base.SWTViewUtils;\r
-import org.simantics.views.swt.client.base.SingleSWTViewNode;\r
-\r
-public class SWTExplorer extends SingleSWTViewNode<ModelBrowser> {\r
-       \r
-       private static final long serialVersionUID = 7932335224632082902L;\r
-       \r
-       public LayoutBean layout;\r
-       public String browseContext;\r
-       public String contextMenuId;\r
-       public String uiContext;\r
-       public Function1<Object, Boolean> selectionListener;\r
-       public Object input;\r
-       public List<ColumnBean> columns;\r
-       public List<ColumnBean> editingColumns;\r
-       public Boolean columnsVisible;\r
-       public Boolean displayFilter;\r
-       public Boolean publishSelection;\r
-       public Boolean useNodeBrowseContexts;\r
-       public Boolean useNodeActionContexts;\r
-       public StatePersistor persistor;\r
-       \r
-       public ISelection lastSelection;\r
-       \r
-       @Override\r
-       public void createControls(Composite parent) {\r
-\r
-               if(browseContext == null) return;\r
-               \r
-               final IWorkbenchSite site = getSite();\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
-               if(useNodeBrowseContexts != null && useNodeBrowseContexts) {\r
-                       args.put("useNodeBrowseContexts", true);\r
-               }\r
-               if(useNodeActionContexts != null && useNodeActionContexts) {\r
-                       args.put("useNodeActionContexts", true);\r
-               }\r
-\r
-               control = new ModelBrowser(Collections.singleton(browseContext), args, site, parent, new WidgetSupportImpl(), style);\r
-               control.setContextMenuId(contextMenuId);\r
-               if (uiContext != null) {\r
-                       control.setUiContexts(Collections.singleton(uiContext));\r
-               }\r
-               \r
-               control.setStatePersistor(persistor);\r
-               \r
-               control.finish();\r
-\r
-               setProperties();\r
-               \r
-               control.setInputSource(PassThruInputSource.INSTANCE);\r
-\r
-               ISelectionProvider sp = (ISelectionProvider)control.getExplorer().getAdapter(ISelectionProvider.class);\r
-               sp.addSelectionChangedListener(new ISelectionChangedListener() {\r
-                       \r
-                       @Override\r
-                       public void selectionChanged(SelectionChangedEvent event) {\r
-                               if (site != null) {\r
-                                       ISelectionProvider sp = site.getSelectionProvider();\r
-                                       if (sp != null) {\r
-                                               sp.setSelection(event.getSelection());\r
-                                       }\r
-                               }\r
-                       }\r
-                       \r
-               });\r
-               \r
-               IPostSelectionProvider psp = (IPostSelectionProvider)control.getExplorer().getAdapter(IPostSelectionProvider.class);\r
-               psp.addPostSelectionChangedListener(new ISelectionChangedListener() {\r
-                       \r
-                       @Override\r
-                       public void selectionChanged(SelectionChangedEvent event) {\r
-                               \r
-//                             ISelection selection = (ISelection)control.getExplorer().getWidgetSelection();\r
-                               if (site != null) {\r
-                                       ISelectionProvider sp = site.getSelectionProvider();\r
-                                       if (sp != null) {\r
-                                               sp.setSelection(event.getSelection());\r
-                                       }\r
-                               }\r
-                               \r
-                       }\r
-                       \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
-                               // [Tuukka@2012-04-08] Disabled this because it was causing\r
-                               // horrible selection feedback effects in the Model Browser\r
-                               // view that is using it. It causes the browser to react to\r
-                               // external selections which were initially published as its own\r
-                               // with a delay.\r
-                               //System.out.println("selection: " + selection);\r
-//                             if(publishSelection != null && publishSelection) {\r
-//                                     if (site != null) {\r
-//                                             ISelectionProvider sp = site.getSelectionProvider();\r
-//                                             if (sp != null) {\r
-//                                                     sp.setSelection(selection);\r
-//                                             }\r
-//                                     }\r
-//                             }\r
-                               \r
-                               propertyCallback.apply("selection", selection);\r
-                               \r
-                               lastSelection = selection;\r
-                               \r
-                       }\r
-                       \r
-               });\r
-                       \r
-       }\r
-\r
-       public void synchronizeColumnsVisible(Boolean columnsVisible) {\r
-               if(columnsVisible != null) control.setColumnsVisible(columnsVisible);\r
-       }\r
-       \r
-       public void synchronizeDisplayFilter(Boolean displayFilter) {\r
-//             if(displayFilter != null) control.setColumnsVisible(displayFilter);\r
-       }\r
-\r
-       public void synchronizePublishSelection(Boolean publishSelection) {\r
-       }\r
-\r
-       public void synchronizeInput(Object input) {\r
-               if(input != null) control.setInput(input, false);\r
-       }\r
-       \r
-       public void synchronizeBrowseContext(String browseContext) {\r
-       }\r
-       \r
-       public void synchronizeContextMenuId(String contextMenuId) {\r
-       }\r
-\r
-       public void synchronizeSelectionListener(Function1<Object, Boolean> selectionListener) {\r
-       }\r
-\r
-       public void synchronizePersistor(StatePersistor persistor) {\r
-       }\r
-\r
-       public void synchronizeColumns(ArrayList<ColumnBean> columns) {\r
-               if(columns != null) {\r
-                       Column[] cols = new Column[columns.size()];\r
-                       for(int i=0;i<columns.size();i++) cols[i] = SWTViewUtils.toColumn(columns.get(i));\r
-                       control.setColumns(cols);\r
-               }\r
-       }\r
-\r
-       public void synchronizeEditingColumns(ArrayList<ColumnBean> columns) {\r
-               if(columns != null) {\r
-                       String[] ecs = new String[columns.size()];\r
-                       for(int i=0;i<columns.size();i++) ecs[i] = columns.get(i).key;\r
-                       control.setEditingColumn(ecs);\r
-               }\r
-       }\r
-\r
-       final public void synchronizeLayout(LayoutBean layout) {\r
-       }\r
-       \r
-}\r
+package org.simantics.views.swt.client.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.jface.viewers.IPostSelectionProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+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.ui.IWorkbenchSite;
+import org.simantics.browsing.ui.Column;
+import org.simantics.browsing.ui.StatePersistor;
+import org.simantics.browsing.ui.swt.PassThruInputSource;
+import org.simantics.browsing.ui.swt.widgets.ModelBrowser;
+import org.simantics.browsing.ui.swt.widgets.impl.WidgetSupportImpl;
+import org.simantics.scl.runtime.function.Function1;
+import org.simantics.views.ViewUtils.ColumnBean;
+import org.simantics.views.ViewUtils.LayoutBean;
+import org.simantics.views.swt.client.base.SWTViewUtils;
+import org.simantics.views.swt.client.base.SingleSWTViewNode;
+
+public class SWTExplorer extends SingleSWTViewNode<ModelBrowser> {
+       
+       private static final long serialVersionUID = 7932335224632082902L;
+       
+       public LayoutBean layout;
+       public String browseContext;
+       public String contextMenuId;
+       public String uiContext;
+       public Function1<Object, Boolean> selectionListener;
+       public Object input;
+       public List<ColumnBean> columns;
+       public List<ColumnBean> editingColumns;
+       public Boolean columnsVisible;
+       public Boolean displayFilter;
+       public Boolean publishSelection;
+       public Boolean useNodeBrowseContexts;
+       public Boolean useNodeActionContexts;
+       public StatePersistor persistor;
+       
+       public ISelection lastSelection;
+       
+       @Override
+       public void createControls(Composite parent) {
+
+               if(browseContext == null) return;
+               
+               final IWorkbenchSite site = getSite();
+
+               Map<String, Object> args = new HashMap<String, Object>();
+               args.put("displaySelectors", Boolean.FALSE);
+               args.put("displayFilter", displayFilter != null ? displayFilter : Boolean.FALSE);
+               if(useNodeBrowseContexts != null && useNodeBrowseContexts) {
+                       args.put("useNodeBrowseContexts", true);
+               }
+               if(useNodeActionContexts != null && useNodeActionContexts) {
+                       args.put("useNodeActionContexts", true);
+               }
+
+               control = new ModelBrowser(Collections.singleton(browseContext), args, site, parent, new WidgetSupportImpl(), style);
+               control.setContextMenuId(contextMenuId);
+               if (uiContext != null) {
+                       control.setUiContexts(Collections.singleton(uiContext));
+               }
+               
+               control.setStatePersistor(persistor);
+               
+               control.finish();
+
+               setProperties();
+               
+               control.setInputSource(PassThruInputSource.INSTANCE);
+
+               ISelectionProvider sp = (ISelectionProvider)control.getExplorer().getAdapter(ISelectionProvider.class);
+               sp.addSelectionChangedListener(new ISelectionChangedListener() {
+                       
+                       @Override
+                       public void selectionChanged(SelectionChangedEvent event) {
+                               if (site != null) {
+                                       ISelectionProvider sp = site.getSelectionProvider();
+                                       if (sp != null) {
+                                               sp.setSelection(event.getSelection());
+                                       }
+                               }
+                       }
+                       
+               });
+               
+               IPostSelectionProvider psp = (IPostSelectionProvider)control.getExplorer().getAdapter(IPostSelectionProvider.class);
+               psp.addPostSelectionChangedListener(new ISelectionChangedListener() {
+                       
+                       @Override
+                       public void selectionChanged(SelectionChangedEvent event) {
+                               
+//                             ISelection selection = (ISelection)control.getExplorer().getWidgetSelection();
+                               if (site != null) {
+                                       ISelectionProvider sp = site.getSelectionProvider();
+                                       if (sp != null) {
+                                               sp.setSelection(event.getSelection());
+                                       }
+                               }
+                               
+                       }
+                       
+               });
+               
+               control.addListenerToControl(SWT.Selection, new Listener() {
+
+                       @Override
+                       public void handleEvent(Event event) {
+                               
+                               if(selectionListener != null)
+                                       selectionListener.apply(event);
+                               
+                               ISelection selection = (ISelection)control.getExplorer().getWidgetSelection();
+                               // [Tuukka@2012-04-08] Disabled this because it was causing
+                               // horrible selection feedback effects in the Model Browser
+                               // view that is using it. It causes the browser to react to
+                               // external selections which were initially published as its own
+                               // with a delay.
+                               //System.out.println("selection: " + selection);
+//                             if(publishSelection != null && publishSelection) {
+//                                     if (site != null) {
+//                                             ISelectionProvider sp = site.getSelectionProvider();
+//                                             if (sp != null) {
+//                                                     sp.setSelection(selection);
+//                                             }
+//                                     }
+//                             }
+                               
+                               propertyCallback.apply("selection", selection);
+                               
+                               lastSelection = selection;
+                               
+                       }
+                       
+               });
+                       
+       }
+
+       public void synchronizeColumnsVisible(Boolean columnsVisible) {
+               if(columnsVisible != null) control.setColumnsVisible(columnsVisible);
+       }
+       
+       public void synchronizeDisplayFilter(Boolean displayFilter) {
+//             if(displayFilter != null) control.setColumnsVisible(displayFilter);
+       }
+
+       public void synchronizePublishSelection(Boolean publishSelection) {
+       }
+
+       public void synchronizeInput(Object input) {
+               if(input != null) control.setInput(input, false);
+       }
+       
+       public void synchronizeBrowseContext(String browseContext) {
+       }
+       
+       public void synchronizeContextMenuId(String contextMenuId) {
+       }
+
+       public void synchronizeSelectionListener(Function1<Object, Boolean> selectionListener) {
+       }
+
+       public void synchronizePersistor(StatePersistor persistor) {
+       }
+
+       public void synchronizeColumns(ArrayList<ColumnBean> columns) {
+               if(columns != null) {
+                       Column[] cols = new Column[columns.size()];
+                       for(int i=0;i<columns.size();i++) cols[i] = SWTViewUtils.toColumn(columns.get(i));
+                       control.setColumns(cols);
+               }
+       }
+
+       public void synchronizeEditingColumns(ArrayList<ColumnBean> columns) {
+               if(columns != null) {
+                       String[] ecs = new String[columns.size()];
+                       for(int i=0;i<columns.size();i++) ecs[i] = columns.get(i).key;
+                       control.setEditingColumn(ecs);
+               }
+       }
+
+       final public void synchronizeLayout(LayoutBean layout) {
+       }
+       
+}