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;
public Boolean useNodeBrowseContexts;
public Boolean useNodeActionContexts;
public StatePersistor persistor;
-
+
public ISelection lastSelection;
-
- private ISelectionChangedListener internalToExternalSelectionPropagator = event -> {
- IWorkbenchSite site = getSite();
- if (site != null) {
- ISelectionProvider sp = site.getSelectionProvider();
- if (sp != null) {
- sp.setSelection(event.getSelection());
- }
- }
- };
-
+
@Override
public void createControls(Composite parent) {
if (uiContext != null) {
control.setUiContexts(Collections.singleton(uiContext));
}
-
+
control.setStatePersistor(persistor);
-
+
control.finish();
setProperties();
-
+
control.setInputSource(PassThruInputSource.INSTANCE);
- ISelectionProvider isp = (ISelectionProvider)control.getExplorer().getAdapter(ISelectionProvider.class);
- if (isp instanceof IPostSelectionProvider) {
- ((IPostSelectionProvider) isp).addPostSelectionChangedListener(internalToExternalSelectionPropagator);
- } else {
- isp.addSelectionChangedListener(internalToExternalSelectionPropagator);
- }
-
- control.addListenerToControl(SWT.Selection, event -> {
- if(selectionListener != null)
- selectionListener.apply(event);
- ISelection selection = (ISelection)control.getExplorer().getWidgetSelection();
- propertyCallback.apply("selection", selection);
- lastSelection = selection;
+ 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) {
final public void synchronizeLayout(LayoutBean layout) {
}
-
- @Override
- public void dispose() {
- ISelectionProvider isp = (ISelectionProvider)control.getExplorer().getAdapter(ISelectionProvider.class);
- if (isp instanceof IPostSelectionProvider) {
- ((IPostSelectionProvider) isp).removePostSelectionChangedListener(internalToExternalSelectionPropagator);
- } else {
- isp.removeSelectionChangedListener(internalToExternalSelectionPropagator);
- }
- super.dispose();
- }
-
+
}