changeset 2845:e55543ff91fd

IdealGraphVisualizer: add core classes missing in last commit
author Peter Hofer <peter.hofer@jku.at>
date Wed, 01 Jun 2011 16:56:54 +0200
parents fa6fd3974058
children 9b8c194c1b1f 7474789a8120 7f14e6b48a9c
files src/share/tools/IdealGraphVisualizer/Text Editor/src/at/ssw/visualizer/core/selection/Selection.java src/share/tools/IdealGraphVisualizer/Text Editor/src/at/ssw/visualizer/core/selection/SelectionManager.java src/share/tools/IdealGraphVisualizer/Text Editor/src/at/ssw/visualizer/core/selection/SelectionProvider.java
diffstat 3 files changed, 137 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/IdealGraphVisualizer/Text Editor/src/at/ssw/visualizer/core/selection/Selection.java	Wed Jun 01 16:56:54 2011 +0200
@@ -0,0 +1,72 @@
+package at.ssw.visualizer.core.selection;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.swing.Timer;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+/**
+ *
+ * @author Christian Wimmer
+ */
+public class Selection {
+    private Map<Class, Object> elements;
+    private List<ChangeListener> listeners;
+    private Timer eventTimer;
+
+    private ActionListener eventTimerListener = new ActionListener() {
+        public void actionPerformed(ActionEvent event) {
+            doFireChangeEvent();
+        }
+    };
+
+    public Selection() {
+        elements = new HashMap<Class, Object>();
+        listeners = new ArrayList<ChangeListener>();
+        eventTimer = new Timer(100, eventTimerListener);
+        eventTimer.setRepeats(false);
+    }
+
+    private void doPut(Class<?> clazz, Object element) {
+        elements.put(clazz, element);
+        for (Class<?> i : clazz.getInterfaces()) {
+            doPut(i, element);
+        }
+    }
+    
+    public void put(Object element) {
+        doPut(element.getClass(), element);
+        fireChangeEvent();
+        SelectionManager.getDefault().fireChangeEvent();
+    }
+
+    @SuppressWarnings(value = "unchecked")
+    public <T> T get(Class<T> clazz) {
+        return (T) elements.get(clazz);
+    }
+
+
+    protected void doFireChangeEvent() {
+        ChangeEvent event = new ChangeEvent(this);
+        for (ChangeListener listener : listeners.toArray(new ChangeListener[listeners.size()])) {
+            listener.stateChanged(event);
+        }
+    }
+
+    protected void fireChangeEvent() {
+        eventTimer.restart();
+    }
+
+    public void addChangeListener(ChangeListener listener) {
+        listeners.add(listener);
+    }
+
+    public void removeChangeListener(ChangeListener listener) {
+        listeners.remove(listener);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/IdealGraphVisualizer/Text Editor/src/at/ssw/visualizer/core/selection/SelectionManager.java	Wed Jun 01 16:56:54 2011 +0200
@@ -0,0 +1,56 @@
+package at.ssw.visualizer.core.selection;
+
+import javax.swing.event.ChangeListener;
+
+/**
+ *
+ * @author Christian Wimmer
+ */
+public class SelectionManager {
+    private static final SelectionManager SINGLETON = new SelectionManager();
+
+    public static SelectionManager getDefault() {
+        return SINGLETON;
+    }
+
+
+    /** Default selection returned when no TopComponent is active.
+     * It is also used to maintain listeners added to the selection manager. */
+    private final Selection emptySelection;
+    private Selection curSelection;
+
+    private SelectionManager() {
+        emptySelection = new Selection();
+        curSelection = emptySelection;
+    }
+
+    public Selection getCurSelection() {
+        return curSelection;
+    }
+
+    public void setSelection(Selection sel) {
+        if (curSelection != sel) {
+            curSelection = sel;
+            fireChangeEvent();
+        }
+    }
+
+    public void removeSelection(Selection sel) {
+        if (curSelection == sel) {
+            curSelection = emptySelection;
+            fireChangeEvent();
+        }
+    }
+
+    protected void fireChangeEvent() {
+        emptySelection.fireChangeEvent();
+    }
+
+    public void addChangeListener(ChangeListener listener) {
+        emptySelection.addChangeListener(listener);
+    }
+
+    public void removeChangeListener(ChangeListener listener) {
+        emptySelection.removeChangeListener(listener);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/tools/IdealGraphVisualizer/Text Editor/src/at/ssw/visualizer/core/selection/SelectionProvider.java	Wed Jun 01 16:56:54 2011 +0200
@@ -0,0 +1,9 @@
+package at.ssw.visualizer.core.selection;
+
+/**
+ *
+ * @author Christian Wimmer
+ */
+public interface SelectionProvider {
+    public Selection getSelection();
+}