# HG changeset patch # User Peter Hofer # Date 1306940214 -7200 # Node ID e55543ff91fd79148b678e4d48ab1b3c610ff084 # Parent fa6fd3974058a35c136fbe665dc27ab9d9b07c13 IdealGraphVisualizer: add core classes missing in last commit diff -r fa6fd3974058 -r e55543ff91fd src/share/tools/IdealGraphVisualizer/Text Editor/src/at/ssw/visualizer/core/selection/Selection.java --- /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 elements; + private List listeners; + private Timer eventTimer; + + private ActionListener eventTimerListener = new ActionListener() { + public void actionPerformed(ActionEvent event) { + doFireChangeEvent(); + } + }; + + public Selection() { + elements = new HashMap(); + listeners = new ArrayList(); + 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 get(Class 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); + } +} diff -r fa6fd3974058 -r e55543ff91fd src/share/tools/IdealGraphVisualizer/Text Editor/src/at/ssw/visualizer/core/selection/SelectionManager.java --- /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); + } +} diff -r fa6fd3974058 -r e55543ff91fd src/share/tools/IdealGraphVisualizer/Text Editor/src/at/ssw/visualizer/core/selection/SelectionProvider.java --- /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(); +}