]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.utils.ui/src/org/simantics/utils/ui/jface/BasePostSelectionProvider.java
Usability fixes for GraphExplorerImpl -related WB selection propagation
[simantics/platform.git] / bundles / org.simantics.utils.ui / src / org / simantics / utils / ui / jface / BasePostSelectionProvider.java
index c5ca0e754cada161035bbcee68289b4dc135062a..b06143bf6ee23cc82574666390a0d49c3c99de4a 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * Copyright (c) 2007, 2018 Association for Decentralized Information Management
  * in Industry THTH ry.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -21,8 +21,6 @@ import org.eclipse.jface.viewers.IPostSelectionProvider;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.simantics.utils.ObjectUtils;
 
 /**
  * BaseSelectionProvider is a base implementation ISelectionProvider -interface.
@@ -36,40 +34,21 @@ import org.simantics.utils.ObjectUtils;
  * </p>
  * 
  * @author Toni Kalajainen
+ * @author Tuukka Lehtonen
  */
-public class BasePostSelectionProvider implements IPostSelectionProvider {
+public class BasePostSelectionProvider extends BaseSelectionProvider implements IPostSelectionProvider {
 
-    protected ListenerList selectionListeners = new ListenerList();
-
-    protected ListenerList postSelectionListeners = new ListenerList();
-
-    protected ISelection selection = StructuredSelection.EMPTY;
-
-    public void addSelectionChangedListener(ISelectionChangedListener listener) {
-        selectionListeners.add(listener);
-    }
-
-    public ISelection getSelection() {
-        return selection;
-    }
+    protected ListenerList<ISelectionChangedListener> postSelectionListeners = new ListenerList<>();
 
     public void clearListeners() {
-        selectionListeners.clear();
-        postSelectionListeners.clear();
-    }
-
-    public void clearSelectionChangedListeners() {
-        postSelectionListeners.clear();
+        super.clearListeners();
+        clearPostSelectionChangedListeners();
     }
 
     public void clearPostSelectionChangedListeners() {
         postSelectionListeners.clear();
     }
 
-    public void removeSelectionChangedListener(ISelectionChangedListener listener) {
-        selectionListeners.remove(listener);
-    }
-
     @Override
     public void addPostSelectionChangedListener(ISelectionChangedListener listener) {
         postSelectionListeners.add(listener);
@@ -80,30 +59,10 @@ public class BasePostSelectionProvider implements IPostSelectionProvider {
         postSelectionListeners.remove(listener);
     }
 
-    public void setSelection(ISelection selection) {
-        setSelectionWithoutFiring(selection);
-    }
-
-    protected Object[] getListeners() {
-        return selectionListeners.getListeners();
-    }
-
     protected Object[] getPostListeners() {
         return postSelectionListeners.getListeners();
     }
 
-    /**
-     * Notify other UIs that selection has changed
-     * @param selection new selection
-     */
-    public void fireSelection(ISelection selection) {
-        if (selection == null)
-            return;
-        SelectionChangedEvent e = new SelectionChangedEvent(this, selection);
-        for (Object l : getListeners())
-            ((ISelectionChangedListener) l).selectionChanged(e);
-    }
-
     /**
      * Notify other UIs that selection has changed
      * @param selection new selection
@@ -123,46 +82,4 @@ public class BasePostSelectionProvider implements IPostSelectionProvider {
         }
     }
 
-    public void setSelectionWithoutFiring(ISelection selection) {
-        this.selection = selection;
-    }
-
-
-    /**
-     * Sets a new selection and always fires a SelectionChangedEvent about it.
-     * 
-     * @param selection the new selection
-     */
-    public void setAndFireSelection(ISelection selection) {
-        setSelection(selection);
-        fireSelection(selection);
-    }
-
-    /**
-     * Sets the new selection for this provider and fires all selection change
-     * listeners if the specified selection differs from the current selection.
-     * If the selection is either the same object or considered equal to the
-     * current selection, the listeners are not fired.
-     * 
-     * @param selection the new selection
-     */
-    public void setAndFireNonEqualSelection(ISelection selection) {
-        ISelection old = getSelection();
-        if (ObjectUtils.objectEquals(old, selection))
-            return;
-
-        this.selection = selection;
-        if (selection != null && !selection.equals(old))
-            fireSelection(selection);
-    }
-
-    public boolean selectionEquals(ISelection s) {
-        if (s == selection)
-            return true;
-        if (s == null)
-            // Old selection had to be non-null
-            return true;
-        return s.equals(selection);
-    }
-
 }