OpenJDK / graal / graal-jvmci-8
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(); +}