# HG changeset patch # User Thomas Wuerthinger # Date 1328301331 -3600 # Node ID bf4c1e7d71b386adfcc7d7a5b1c288b90dacab56 # Parent e55e2fca50fae88aa379d5339370979e520a7d14 Experiments with Actions API. diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/AbstractCfgEditorAction.java --- a/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/AbstractCfgEditorAction.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/AbstractCfgEditorAction.java Fri Feb 03 21:35:31 2012 +0100 @@ -1,16 +1,12 @@ package at.ssw.visualizer.cfg.action; -import at.ssw.visualizer.cfg.graph.CfgEventListener; -import at.ssw.visualizer.cfg.editor.CfgEditorTopComponent; import at.ssw.visualizer.cfg.graph.CfgScene; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JMenuItem; +import org.openide.util.Utilities; import org.openide.util.actions.CallableSystemAction; -import org.openide.windows.TopComponent; /** * The common superclass of all concrete actions related to the CFG visualizer. @@ -18,36 +14,19 @@ * @author Bernhard Stiftner * @author Rumpfhuber Stefan */ -public abstract class AbstractCfgEditorAction extends CallableSystemAction implements CfgEventListener , PropertyChangeListener { +public abstract class AbstractCfgEditorAction extends CallableSystemAction { - CfgEditorTopComponent topComponent = null; + CfgScene topComponent = null; public AbstractCfgEditorAction() { - TopComponent.getRegistry().addPropertyChangeListener(this); setEnabled(false); } - protected CfgEditorTopComponent getEditor() { - return topComponent; + protected CfgScene getEditor() { + return Utilities.actionsGlobalContext().lookup(CfgScene.class); } - protected void setEditor(CfgEditorTopComponent newTopComponent) { - CfgEditorTopComponent oldTopComponent = getEditor(); - if(newTopComponent != oldTopComponent){ - if(oldTopComponent != null) { - oldTopComponent.getCfgScene().removeCfgEventListener(this); - } - this.topComponent = newTopComponent; - if (newTopComponent != null) { - newTopComponent.getCfgScene().addCfgEventListener(this); - selectionChanged(newTopComponent.getCfgScene()); - } - this.setEnabled(newTopComponent!=null); - } - } - - @Override public JMenuItem getMenuPresenter() { return new JMenuItem(this); @@ -75,20 +54,4 @@ protected boolean asynchronous() { return false; } - - - public void propertyChange(PropertyChangeEvent e) { - if ( e.getPropertyName().equals(TopComponent.Registry.PROP_ACTIVATED)) { - if(e.getNewValue() instanceof CfgEditorTopComponent){ - CfgEditorTopComponent tc = (CfgEditorTopComponent)e.getNewValue(); - setEditor(tc); - selectionChanged(tc.getCfgScene()); - } - } - } - - - public void selectionChanged(CfgScene scene) { - } - } diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/AbstractRouterAction.java --- a/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/AbstractRouterAction.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/AbstractRouterAction.java Fri Feb 03 21:35:31 2012 +0100 @@ -1,6 +1,6 @@ package at.ssw.visualizer.cfg.action; -import at.ssw.visualizer.cfg.editor.CfgEditorTopComponent; +import at.ssw.visualizer.cfg.graph.CfgScene; import javax.swing.JComponent; import javax.swing.JMenuItem; import javax.swing.JRadioButtonMenuItem; @@ -16,13 +16,13 @@ public abstract class AbstractRouterAction extends AbstractCfgEditorAction implements Presenter.Menu, Presenter.Popup, Presenter.Toolbar { public void performAction() { - CfgEditorTopComponent tc = getEditor(); + CfgScene tc = getEditor(); if (tc != null) { setLinkRouter(tc); } } - protected abstract void setLinkRouter(CfgEditorTopComponent editor); + protected abstract void setLinkRouter(CfgScene editor); @Override public JMenuItem getMenuPresenter() { diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/Bundle.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/Bundle.properties Fri Feb 03 21:35:31 2012 +0100 @@ -0,0 +1,2 @@ +CTL_SomeAction=test +CTL_SomeAction2=test diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ColorAction.java --- a/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ColorAction.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ColorAction.java Fri Feb 03 21:35:31 2012 +0100 @@ -1,7 +1,6 @@ package at.ssw.visualizer.cfg.action; import at.ssw.visualizer.cfg.graph.CfgEventListener; -import at.ssw.visualizer.cfg.editor.CfgEditorTopComponent; import at.ssw.visualizer.cfg.graph.CfgScene; import at.ssw.visualizer.cfg.model.CfgNode; import java.awt.Color; @@ -12,15 +11,7 @@ import java.awt.event.MouseListener; import java.awt.image.BufferedImage; import java.util.Set; -import javax.swing.AbstractAction; -import javax.swing.Icon; -import javax.swing.ImageIcon; -import javax.swing.JButton; -import javax.swing.JComponent; -import javax.swing.JMenu; -import javax.swing.JMenuItem; -import javax.swing.JPopupMenu; -import javax.swing.SwingConstants; +import javax.swing.*; import javax.swing.plaf.basic.BasicArrowButton; import org.openide.util.HelpCtx; import org.openide.util.actions.Presenter; @@ -53,9 +44,9 @@ } protected void performAction(Color color) { - CfgEditorTopComponent tc = getEditor(); + CfgScene tc = getEditor(); if (tc != null) { - tc.getCfgScene().setSelectedNodesColor(color); + tc.setSelectedNodesColor(color); } } @@ -95,8 +86,8 @@ } protected void initGUI() { - CfgEditorTopComponent tc = getEditor(); - if( tc != null && tc.getCfgScene().getSelectedNodes().size()==0) { + CfgScene tc = getEditor(); + if( tc != null && tc.getSelectedNodes().size()==0) { //no node selected setEnabled(false); } else { diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ExportAction.java --- a/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ExportAction.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ExportAction.java Fri Feb 03 21:35:31 2012 +0100 @@ -1,6 +1,5 @@ package at.ssw.visualizer.cfg.action; -import at.ssw.visualizer.cfg.editor.CfgEditorTopComponent; import at.ssw.visualizer.cfg.graph.CfgScene; import java.io.File; import javax.swing.JComponent; @@ -26,8 +25,7 @@ @Override public void performAction() { - CfgEditorTopComponent tc = this.getEditor(); - CfgScene scene = tc.getCfgScene(); + CfgScene scene = this.getEditor(); JComponent view = scene.getView(); JFileChooser chooser = new JFileChooser (); @@ -41,10 +39,11 @@ chooser.addChoosableFileFilter(new FileNameExtensionFilter(DESCRIPTION_GIF, EXT_GIF)); if(lastDirectory != null) chooser.setCurrentDirectory(new File(lastDirectory)); - chooser.setSelectedFile(new File(tc.getName())); + // TODO: chose file. + chooser.setSelectedFile(new File("output")); - if (chooser.showSaveDialog (tc) != JFileChooser.APPROVE_OPTION) + if (chooser.showSaveDialog (scene.getView()) != JFileChooser.APPROVE_OPTION) return; File file = chooser.getSelectedFile (); diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/HideEdgesAction.java --- a/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/HideEdgesAction.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/HideEdgesAction.java Fri Feb 03 21:35:31 2012 +0100 @@ -1,7 +1,6 @@ package at.ssw.visualizer.cfg.action; -import at.ssw.visualizer.cfg.editor.CfgEditorTopComponent; import at.ssw.visualizer.cfg.graph.CfgScene; import at.ssw.visualizer.cfg.graph.EdgeWidget; import at.ssw.visualizer.cfg.model.CfgEdge; @@ -17,9 +16,9 @@ public class HideEdgesAction extends AbstractCfgEditorAction { public void performAction() { - CfgEditorTopComponent tc = getEditor(); + CfgScene tc = getEditor(); if (tc != null) { - tc.getCfgScene().setSelectedEdgesVisibility(false); + tc.setSelectedEdgesVisibility(false); } } @@ -35,18 +34,4 @@ public HelpCtx getHelpCtx() { return HelpCtx.DEFAULT_HELP; } - - @Override - public void selectionChanged(CfgScene scene) { - for (CfgNode n : scene.getSelectedNodes()) { - for (CfgEdge e : scene.findNodeEdges(n, true, true) ){ - EdgeWidget ew = (EdgeWidget) scene.findWidget(e); - if(ew.isVisible()) { - setEnabled(true); - return; - } - } - } - setEnabled(false); - } } diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/HierarchicalCompoundLayoutAction.java --- a/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/HierarchicalCompoundLayoutAction.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/HierarchicalCompoundLayoutAction.java Fri Feb 03 21:35:31 2012 +0100 @@ -1,7 +1,6 @@ package at.ssw.visualizer.cfg.action; import at.ssw.visualizer.cfg.CfgEditorContext; -import at.ssw.visualizer.cfg.editor.CfgEditorTopComponent; import at.ssw.visualizer.cfg.graph.CfgScene; import org.openide.util.HelpCtx; @@ -9,11 +8,10 @@ public class HierarchicalCompoundLayoutAction extends AbstractCfgEditorAction { public void performAction() { - CfgEditorTopComponent tc = getEditor(); + CfgScene tc = getEditor(); if (tc != null) { - CfgScene scene = tc.getCfgScene(); - scene.setSceneLayout(CfgEditorContext.LAYOUT_HIERARCHICALCOMPOUNDLAYOUT); - scene.applyLayout(); + tc.setSceneLayout(CfgEditorContext.LAYOUT_HIERARCHICALCOMPOUNDLAYOUT); + tc.applyLayout(); } } diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/HierarchicalNodeLayoutAction.java --- a/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/HierarchicalNodeLayoutAction.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/HierarchicalNodeLayoutAction.java Fri Feb 03 21:35:31 2012 +0100 @@ -1,7 +1,6 @@ package at.ssw.visualizer.cfg.action; import at.ssw.visualizer.cfg.CfgEditorContext; -import at.ssw.visualizer.cfg.editor.CfgEditorTopComponent; import at.ssw.visualizer.cfg.graph.CfgScene; import org.openide.util.HelpCtx; @@ -10,9 +9,9 @@ @Override public void performAction() { - CfgEditorTopComponent tc = getEditor(); + CfgScene tc = getEditor(); if (tc != null) { - CfgScene scene = tc.getCfgScene(); + CfgScene scene = tc; scene.setSceneLayout(CfgEditorContext.LAYOUT_HIERARCHICALNODELAYOUT); scene.applyLayout(); } diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ShowAllAction.java --- a/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ShowAllAction.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ShowAllAction.java Fri Feb 03 21:35:31 2012 +0100 @@ -1,6 +1,5 @@ package at.ssw.visualizer.cfg.action; -import at.ssw.visualizer.cfg.editor.CfgEditorTopComponent; import at.ssw.visualizer.cfg.graph.CfgScene; import org.openide.util.HelpCtx; @@ -14,9 +13,9 @@ @Override public void performAction() { - CfgEditorTopComponent tc = getEditor(); + CfgScene tc = getEditor(); if (tc != null) { - CfgScene scene = tc.getCfgScene(); + CfgScene scene = tc; scene.zoomScene(); } diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ShowCFGEditorAction.java --- a/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ShowCFGEditorAction.java Thu Feb 02 17:51:39 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -package at.ssw.visualizer.cfg.action; - -import at.ssw.visualizer.cfg.editor.CfgEditorSupport; -import at.ssw.visualizer.cfg.editor.CfgEditorTopComponent; -import at.ssw.visualizer.cfg.icons.Icons; -import at.ssw.visualizer.model.cfg.ControlFlowGraph; -import org.openide.nodes.Node; -import org.openide.util.HelpCtx; -import org.openide.util.actions.CookieAction; -import org.openide.windows.TopComponent; - -/** - * Shows the CFG visualizer for the currently selected compilation. - * - * @author Bernhard Stiftner - * @author Christian Wimmer - */ -public final class ShowCFGEditorAction extends CookieAction { - - protected void performAction(Node[] activatedNodes) { - ControlFlowGraph cfg = activatedNodes[0].getLookup().lookup(ControlFlowGraph.class); - CfgEditorSupport editor = new CfgEditorSupport(cfg); - editor.open(); - } - - @Override - protected boolean enable(Node[] activatedNodes) { - if (!super.enable(activatedNodes)) { - return false; - } - ControlFlowGraph cfg = activatedNodes[0].getLookup().lookup(ControlFlowGraph.class); - return cfg.getBasicBlocks().size() > 0; - } - - public String getName() { - return "Open Control Flow Graph"; - } - - @Override - protected String iconResource() { - return Icons.CFG; - } - - protected int mode() { - return CookieAction.MODE_EXACTLY_ONE; - } - - protected Class[] cookieClasses() { - return new Class[]{ControlFlowGraph.class}; - } - - public HelpCtx getHelpCtx() { - return HelpCtx.DEFAULT_HELP; - } - - @Override - protected boolean asynchronous() { - return false; - } -} diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ShowEdgesAction.java --- a/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ShowEdgesAction.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ShowEdgesAction.java Fri Feb 03 21:35:31 2012 +0100 @@ -1,6 +1,5 @@ package at.ssw.visualizer.cfg.action; -import at.ssw.visualizer.cfg.editor.CfgEditorTopComponent; import at.ssw.visualizer.cfg.graph.CfgScene; import at.ssw.visualizer.cfg.graph.EdgeWidget; import at.ssw.visualizer.cfg.model.CfgEdge; @@ -16,9 +15,9 @@ public class ShowEdgesAction extends AbstractCfgEditorAction { public void performAction() { - CfgEditorTopComponent tc = getEditor(); + CfgScene tc = getEditor(); if (tc != null) { - tc.getCfgScene().setSelectedEdgesVisibility(true); + tc.setSelectedEdgesVisibility(true); } } @@ -35,18 +34,4 @@ public HelpCtx getHelpCtx() { return HelpCtx.DEFAULT_HELP; } - - @Override - public void selectionChanged(CfgScene scene) { - for (CfgNode n : scene.getSelectedNodes()) { - for (CfgEdge e : scene.findNodeEdges(n, true, true) ){ - EdgeWidget ew = (EdgeWidget) scene.findWidget(e); - if(!ew.isVisible()) { - setEnabled(true); - return; - } - } - } - setEnabled(false); - } } diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/SwitchLoopClustersAction.java --- a/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/SwitchLoopClustersAction.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/SwitchLoopClustersAction.java Fri Feb 03 21:35:31 2012 +0100 @@ -1,6 +1,5 @@ package at.ssw.visualizer.cfg.action; -import at.ssw.visualizer.cfg.editor.CfgEditorTopComponent; import at.ssw.visualizer.cfg.graph.CfgScene; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; @@ -13,9 +12,9 @@ @Override public void performAction() { - CfgEditorTopComponent tc = getEditor(); + CfgScene tc = getEditor(); if (tc != null) { - CfgScene scene = tc.getCfgScene(); + CfgScene scene = tc; boolean visible = scene.isLoopClusterVisible(); scene.setLoopWidgets(!visible); } diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/UseBezierRouterAction.java --- a/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/UseBezierRouterAction.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/UseBezierRouterAction.java Fri Feb 03 21:35:31 2012 +0100 @@ -1,15 +1,15 @@ package at.ssw.visualizer.cfg.action; import at.ssw.visualizer.cfg.CfgEditorContext; -import at.ssw.visualizer.cfg.editor.CfgEditorTopComponent; +import at.ssw.visualizer.cfg.graph.CfgScene; import org.openide.util.HelpCtx; public class UseBezierRouterAction extends AbstractRouterAction { @Override - protected void setLinkRouter(CfgEditorTopComponent editor) { - editor.getCfgScene().setRouter(CfgEditorContext.ROUTING_BEZIER); + protected void setLinkRouter(CfgScene editor) { + editor.setRouter(CfgEditorContext.ROUTING_BEZIER); } @Override diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/UseDirectLineRouterAction.java --- a/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/UseDirectLineRouterAction.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/UseDirectLineRouterAction.java Fri Feb 03 21:35:31 2012 +0100 @@ -1,15 +1,15 @@ package at.ssw.visualizer.cfg.action; import at.ssw.visualizer.cfg.CfgEditorContext; -import at.ssw.visualizer.cfg.editor.CfgEditorTopComponent; +import at.ssw.visualizer.cfg.graph.CfgScene; import org.openide.util.HelpCtx; public class UseDirectLineRouterAction extends AbstractRouterAction { @Override - protected void setLinkRouter(CfgEditorTopComponent editor) { - editor.getCfgScene().setRouter(CfgEditorContext.ROUTING_DIRECTLINES); + protected void setLinkRouter(CfgScene editor) { + editor.setRouter(CfgEditorContext.ROUTING_DIRECTLINES); } @Override diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ZoominAction.java --- a/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ZoominAction.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ZoominAction.java Fri Feb 03 21:35:31 2012 +0100 @@ -1,6 +1,5 @@ package at.ssw.visualizer.cfg.action; -import at.ssw.visualizer.cfg.editor.CfgEditorTopComponent; import at.ssw.visualizer.cfg.graph.CfgScene; import org.openide.util.HelpCtx; @@ -9,9 +8,9 @@ @Override public void performAction() { - CfgEditorTopComponent tc = getEditor(); + CfgScene tc = getEditor(); if (tc != null) { - CfgScene scene = tc.getCfgScene(); + CfgScene scene = tc; scene.animateZoom(1.1); } } diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ZoomoutAction.java --- a/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ZoomoutAction.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/action/ZoomoutAction.java Fri Feb 03 21:35:31 2012 +0100 @@ -1,6 +1,5 @@ package at.ssw.visualizer.cfg.action; -import at.ssw.visualizer.cfg.editor.CfgEditorTopComponent; import at.ssw.visualizer.cfg.graph.CfgScene; import org.openide.util.HelpCtx; @@ -8,9 +7,9 @@ @Override public void performAction() { - CfgEditorTopComponent tc = getEditor(); + CfgScene tc = getEditor(); if (tc != null) { - CfgScene scene = tc.getCfgScene(); + CfgScene scene = tc; scene.animateZoom(0.9); } } diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/editor/CfgEditorSupport.java --- a/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/editor/CfgEditorSupport.java Thu Feb 02 17:51:39 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -package at.ssw.visualizer.cfg.editor; - -import at.ssw.visualizer.model.cfg.ControlFlowGraph; -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; -import java.beans.VetoableChangeListener; -import java.beans.VetoableChangeSupport; -import java.io.IOException; -import org.openide.cookies.OpenCookie; -import org.openide.windows.CloneableOpenSupport; -import org.openide.windows.CloneableTopComponent; - - -public class CfgEditorSupport extends CloneableOpenSupport implements OpenCookie { - private ControlFlowGraph cfg; - - public CfgEditorSupport(ControlFlowGraph cfg) { - super(new Env()); - ((Env) env).editorSupport = this; - this.cfg = cfg; - } - - protected CloneableTopComponent createCloneableTopComponent() { - return new CfgEditorTopComponent(cfg); - } - - public String messageOpened() { - return "Opened " + cfg.getName(); - } - - public String messageOpening() { - return "Opening " + cfg.getName(); - } - - - public static class Env implements CloneableOpenSupport.Env { - private PropertyChangeSupport prop = new PropertyChangeSupport(this); - private VetoableChangeSupport veto = new VetoableChangeSupport(this); - private CfgEditorSupport editorSupport; - - public boolean isValid() { - return true; - } - - public boolean isModified() { - return false; - } - - public void markModified() throws IOException { - throw new IOException("Editor is readonly"); - } - - public void unmarkModified() { - // Nothing to do. - } - - public CloneableOpenSupport findCloneableOpenSupport() { - return editorSupport; - } - - public void addPropertyChangeListener(PropertyChangeListener l) { - prop.addPropertyChangeListener(l); - } - - public void removePropertyChangeListener(PropertyChangeListener l) { - prop.removePropertyChangeListener(l); - } - - public void addVetoableChangeListener(VetoableChangeListener l) { - veto.addVetoableChangeListener(l); - } - - public void removeVetoableChangeListener(VetoableChangeListener l) { - veto.removeVetoableChangeListener(l); - } - } -} diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/editor/CfgEditorTopComponent.java --- a/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/editor/CfgEditorTopComponent.java Thu Feb 02 17:51:39 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,254 +0,0 @@ -package at.ssw.visualizer.cfg.editor; - -import at.ssw.visualizer.cfg.action.ShowAllAction; -import at.ssw.visualizer.cfg.action.ColorAction; -import at.ssw.visualizer.cfg.action.ExportAction; -import at.ssw.visualizer.cfg.action.HideEdgesAction; -import at.ssw.visualizer.cfg.action.HierarchicalCompoundLayoutAction; -import at.ssw.visualizer.cfg.action.HierarchicalNodeLayoutAction; -import at.ssw.visualizer.cfg.action.ShowEdgesAction; -import at.ssw.visualizer.cfg.action.SwitchLoopClustersAction; -import at.ssw.visualizer.cfg.action.UseBezierRouterAction; -import at.ssw.visualizer.cfg.action.UseDirectLineRouterAction; -import at.ssw.visualizer.cfg.action.ZoominAction; -import at.ssw.visualizer.cfg.action.ZoomoutAction; -import at.ssw.visualizer.cfg.graph.CfgEventListener; -import at.ssw.visualizer.cfg.graph.CfgScene; -import at.ssw.visualizer.cfg.graph.EdgeWidget; -import at.ssw.visualizer.cfg.graph.NodeWidget; -import at.ssw.visualizer.cfg.model.CfgEdge; -import at.ssw.visualizer.cfg.model.CfgNode; -import at.ssw.visualizer.cfg.preferences.CfgPreferences; -import at.ssw.visualizer.cfg.preferences.FlagsSetting; -import javax.swing.ScrollPaneConstants; -import at.ssw.visualizer.model.cfg.ControlFlowGraph; -import java.awt.BorderLayout; -import java.awt.Color; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import javax.swing.BorderFactory; -import javax.swing.ButtonGroup; -import javax.swing.JComponent; -import javax.swing.JScrollPane; -import javax.swing.JToggleButton; -import javax.swing.UIManager; -import javax.swing.border.Border; -import org.netbeans.api.visual.widget.Widget; -import org.openide.awt.Toolbar; -import org.openide.util.ImageUtilities; -import org.openide.windows.CloneableTopComponent; -import org.openide.windows.TopComponent; -import org.openide.util.actions.SystemAction; - -public class CfgEditorTopComponent extends CloneableTopComponent implements PropertyChangeListener { - - private CfgScene scene; - private JScrollPane jScrollPane; - private ControlFlowGraph cfg; - private JComponent myView; - - public CfgEditorTopComponent(ControlFlowGraph cfg) { - this.cfg = cfg; - - setIcon(ImageUtilities.loadImage("at/ssw/visualizer/cfg/icons/cfg.gif")); -// setName(cfg.getParent().getShortName()); -// setToolTipText(cfg.getCompilation().getMethod() + " - " + cfg.getName()); - // TODO(tw): Add title. - - //panel setup - this.jScrollPane = new JScrollPane(); - this.jScrollPane.setOpaque(true); - this.jScrollPane.setBorder(BorderFactory.createEmptyBorder()); - this.jScrollPane.setViewportBorder(BorderFactory.createEmptyBorder()); - this.scene = new CfgScene(jScrollPane, cfg); - this.myView = scene.createView(); - this.jScrollPane.setViewportView(myView); - this.setLayout(new BorderLayout()); - this.add(createToolbar(), BorderLayout.NORTH); - this.add(jScrollPane, BorderLayout.CENTER); - jScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); - jScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); - jScrollPane.getVerticalScrollBar().setEnabled(true); - jScrollPane.getHorizontalScrollBar().setEnabled(true); - - //setup enviroment,register listeners - // TODO(tw): Add to lookup. -// selection = new Selection(); -// selection.put(cfg); -// selection.put(scene); -// selection.addChangeListener(scene); - - scene.validate(); - scene.applyLayout(); - } - - public ControlFlowGraph getCfg() { - return cfg; - } - - public JScrollPane getJScrollPanel() { - return jScrollPane; - } - - public CfgScene getCfgScene() { - return scene; - } - - @Override - public int getPersistenceType() { - return TopComponent.PERSISTENCE_NEVER; - } - - @Override - protected void componentOpened() { - super.componentOpened(); - CfgPreferences.getInstance().addPropertyChangeListener(this); - } - - @Override - protected void componentActivated() { - super.componentActivated(); -// SelectionManager.getDefault().setSelection(selection); - this.getCfgScene().updateGlobalSelection(); - this.getCfgScene().fireSelectionChanged(); - } - - @Override - protected void componentClosed() { - super.componentClosed(); -// SelectionManager.getDefault().removeSelection(selection); - CfgPreferences.getInstance().removePropertyChangeListener(this); - } - - @Override - protected CloneableTopComponent createClonedObject() { - CfgEditorTopComponent component = new CfgEditorTopComponent(cfg); - component.setActivatedNodes(getActivatedNodes()); - return component; - } - - public void propertyChange(PropertyChangeEvent evt) { - if (this.scene != null) { - - String propName = evt.getPropertyName(); - CfgPreferences prefs = CfgPreferences.getInstance(); - if (propName.equals(CfgPreferences.PROP_BACKGROUND_COLOR)) { - scene.setBackground(prefs.getBackgroundColor()); - scene.revalidate(); - } else if (propName.equals(CfgPreferences.PROP_NODE_COLOR)) { - for (NodeWidget nw : scene.getNodeWidgets()) { - //only change the node color if its not a custom color - if (!nw.isNodeColorCustomized()) { - nw.setNodeColor(prefs.getNodeColor(), false); - } - } - } else if (propName.equals(CfgPreferences.PROP_EDGE_COLOR)) { - for (CfgEdge e : scene.getEdges()) { - if (!e.isBackEdge() && !e.isXhandler()) { - EdgeWidget w = (EdgeWidget) scene.findWidget(e); - w.setLineColor(prefs.getEdgeColor()); - } - } - } else if (propName.equals(CfgPreferences.PROP_BACK_EDGE_COLOR)) { - for (CfgEdge e : scene.getEdges()) { - if (e.isBackEdge()) { - EdgeWidget w = (EdgeWidget) scene.findWidget(e); - w.setLineColor(prefs.getBackedgeColor()); - } - } - } else if (propName.equals(CfgPreferences.PROP_EXCEPTION_EDGE_COLOR)) { - for (CfgEdge e : scene.getEdges()) { - if (e.isXhandler()) { - EdgeWidget w = (EdgeWidget) scene.findWidget(e); - w.setLineColor(prefs.getExceptionEdgeColor()); - } - } - } else if (propName.equals(CfgPreferences.PROP_BORDER_COLOR)) { - for (CfgNode n : scene.getNodes()) { - NodeWidget nw = (NodeWidget) scene.findWidget(n); - nw.setBorderColor(prefs.getBorderColor()); - } - } else if (propName.equals(CfgPreferences.PROP_TEXT_FONT)) { - for (CfgNode n : scene.getNodes()) { - NodeWidget nw = (NodeWidget) scene.findWidget(n); - nw.adjustFont(prefs.getTextFont()); - } - } else if (propName.equals(CfgPreferences.PROP_TEXT_COLOR)) { - for (CfgNode n : scene.getNodes()) { - NodeWidget nw = (NodeWidget) scene.findWidget(n); - nw.setForeground(prefs.getTextColor()); - } - } else if (propName.equals(CfgPreferences.PROP_FLAGS)) { - FlagsSetting fs = CfgPreferences.getInstance().getFlagsSetting(); - for (CfgNode n : scene.getNodes()) { - NodeWidget nw = (NodeWidget) scene.findWidget(n); - Color nodeColor = fs.getColor(n.getBasicBlock().getFlags()); - if (nodeColor != null) { - nw.setNodeColor(nodeColor, true); - } else { - nw.setNodeColor(CfgPreferences.getInstance().getNodeColor(), false); - } - } - } else if (propName.equals(CfgPreferences.PROP_SELECTION_COLOR_BG) || propName.equals(CfgPreferences.PROP_SELECTION_COLOR_FG)) { - for (CfgNode n : scene.getNodes()) { - Widget w = scene.findWidget(n); - w.revalidate(); - } - } - scene.validate(); - } - - } - - private Toolbar createToolbar() { - Toolbar tb = new Toolbar("CfgToolbar"); - - tb.setBorder((Border) UIManager.get("Nb.Editor.Toolbar.border")); - - //zoomin/zoomout buttons - tb.add(SystemAction.get(ZoominAction.class).getToolbarPresenter()); - tb.add(SystemAction.get(ZoomoutAction.class).getToolbarPresenter()); - tb.addSeparator(); - - //router buttons - ButtonGroup routerButtons = new ButtonGroup(); - UseDirectLineRouterAction direct = SystemAction.get(UseDirectLineRouterAction.class); - UseBezierRouterAction bezier = SystemAction.get(UseBezierRouterAction.class); - JToggleButton button = (JToggleButton) direct.getToolbarPresenter(); - button.getModel().setGroup(routerButtons); - button.setSelected(true); - tb.add(button); - button = (JToggleButton) bezier.getToolbarPresenter(); - button.getModel().setGroup(routerButtons); - tb.add(button); - tb.addSeparator(); - - //layout buttons - tb.add(SystemAction.get(HierarchicalNodeLayoutAction.class).getToolbarPresenter()); - tb.add(SystemAction.get(HierarchicalCompoundLayoutAction.class).getToolbarPresenter()); - - tb.addSeparator(); - tb.add(SystemAction.get(ShowAllAction.class).getToolbarPresenter()); - tb.addSeparator(); - - //cluster button - tb.add(SystemAction.get(SwitchLoopClustersAction.class).getToolbarPresenter()); - tb.addSeparator(); - - //show/hide edge button - tb.add(SystemAction.get(ShowEdgesAction.class).getToolbarPresenter()); - tb.add(SystemAction.get(HideEdgesAction.class).getToolbarPresenter()); - tb.addSeparator(); - - //color button - JComponent colorButton = SystemAction.get(ColorAction.class).getToolbarPresenter(); - getCfgScene().addCfgEventListener((CfgEventListener) colorButton); - tb.add(colorButton); - - //export button - tb.add(SystemAction.get(ExportAction.class).getToolbarPresenter()); - tb.doLayout(); - - return tb; - } -} diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/CfgScene.java --- a/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/CfgScene.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/CfgScene.java Fri Feb 03 21:35:31 2012 +0100 @@ -6,7 +6,6 @@ import at.ssw.visualizer.cfg.action.ColorAction; import at.ssw.visualizer.cfg.action.HideEdgesAction; import at.ssw.visualizer.cfg.action.ShowEdgesAction; -import at.ssw.visualizer.cfg.editor.CfgEditorTopComponent; import at.ssw.visualizer.cfg.graph.layout.HierarchicalCompoundLayout; import at.ssw.visualizer.cfg.graph.layout.HierarchicalNodeLayout; import at.ssw.visualizer.cfg.model.CfgEnv; diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/layer.xml --- a/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/layer.xml Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/layer.xml Fri Feb 03 21:35:31 2012 +0100 @@ -51,6 +51,11 @@ + + + + + diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/CfgPreferences.java --- a/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/CfgPreferences.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/preferences/CfgPreferences.java Fri Feb 03 21:35:31 2012 +0100 @@ -1,6 +1,5 @@ package at.ssw.visualizer.cfg.preferences; -import at.ssw.visualizer.cfg.editor.CfgEditorTopComponent; import java.awt.Color; import java.awt.Font; import java.beans.PropertyChangeEvent; @@ -58,14 +57,6 @@ return instance; } - public void addPropertyChangeListener(CfgEditorTopComponent listener) { - listenerList.add(PropertyChangeListener.class, listener); - } - - public void removePropertyChangeListener(CfgEditorTopComponent listener) { - listenerList.remove(PropertyChangeListener.class, listener); - } - protected final Preferences getPreferences() { return NbPreferences.forModule(this.getClass()).node("options").node(nodeName); } diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/Editor/src/com/oracle/graal/visualizer/editor/DiagramViewModel.java --- a/src/share/tools/IdealGraphVisualizer/Editor/src/com/oracle/graal/visualizer/editor/DiagramViewModel.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/Editor/src/com/oracle/graal/visualizer/editor/DiagramViewModel.java Fri Feb 03 21:35:31 2012 +0100 @@ -42,8 +42,6 @@ */ public class DiagramViewModel { - // Warning: Update setData method if fields are added - private Group group; private Set hiddenNodes; private Set onScreenNodes; private Set selectedNodes; @@ -80,7 +78,6 @@ this.firstGraph = firstGraph; this.secondGraph = secondGraph; this.showNodeHull = true; - this.group = g; assert filterChain != null; this.filterChain = filterChain; assert sequenceFilterChain != null; diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/Editor/src/com/oracle/graal/visualizer/editor/EditorTopComponent.java --- a/src/share/tools/IdealGraphVisualizer/Editor/src/com/oracle/graal/visualizer/editor/EditorTopComponent.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/Editor/src/com/oracle/graal/visualizer/editor/EditorTopComponent.java Fri Feb 03 21:35:31 2012 +0100 @@ -48,6 +48,8 @@ import org.openide.awt.Toolbar; import org.openide.awt.ToolbarPool; import org.openide.awt.UndoRedo; +import org.openide.filesystems.FileUtil; +import org.openide.util.ContextAwareAction; import org.openide.util.Lookup; import org.openide.util.Lookup.Provider; import org.openide.util.NbBundle; @@ -57,9 +59,7 @@ import org.openide.util.lookup.InstanceContent; import org.openide.util.lookup.Lookups; import org.openide.util.lookup.ProxyLookup; -import org.openide.windows.Mode; -import org.openide.windows.TopComponent; -import org.openide.windows.WindowManager; +import org.openide.windows.*; /** * @@ -80,14 +80,23 @@ private final CardLayout viewerPanelCardLayout; private final Map createdComponents = new HashMap<>(); private final Lookup proxyLookup; + private Lookup currentLookup = Lookups.fixed(); private final Lookup.Provider currentViewLookupProvider = new Lookup.Provider() { @Override public Lookup getLookup() { - return (activeViewer == null) ? Lookups.fixed() : activeViewer.getLookup(); + return currentLookup; } }; + + private InputGraph getFirstGraph() { + return group.getGraphs().get(getModel().getFirstPosition()); + } + + private InputGraph getSecondGraph() { + return group.getGraphs().get(getModel().getSecondPosition()); + } private void updateDisplayName() { int first = getModel().getFirstPosition(); @@ -125,8 +134,7 @@ rangeSliderModel = new RangeSliderModel(calculateStringList(group)); int graphPos = group.getGraphs().indexOf(graph); rangeSliderModel.setPositions(graphPos, graphPos); - rangeSlider = new RangeSlider(); - rangeSlider.setModel(rangeSliderModel); + rangeSlider = new RangeSlider(rangeSliderModel); Collection factories = Lookup.getDefault().lookupAll(CompilationViewerFactory.class); content = new InstanceContent(); @@ -142,6 +150,10 @@ toolBar.add(UndoAction.get(UndoAction.class)); toolBar.add(RedoAction.get(RedoAction.class)); + ContextAwareAction a = FileUtil.getConfigObject("Actions/View/com-oracle-graal-visualizer-editor-actions-TestAction.instance", ContextAwareAction.class); + FileUtil.getConfigFile("Actions/View/com-oracle-graal-visualizer-editor-actions-TestAction.instance"); + toolBar.add(a.createContextAwareInstance(proxyLookup)); + ButtonGroup factoryButtonGroup = new ButtonGroup(); for (CompilationViewerFactory factory : factories) { AbstractButton button = createFactoryChangeButton(factory); @@ -207,7 +219,7 @@ } return null; } - + /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is @@ -259,7 +271,7 @@ updateDisplayName(); String id = getViewStringIdentifier(); if (!createdComponents.containsKey(id)) { - CompilationViewer newViewer = createViewer(activeFactory, getModel().getFirstPosition(), getModel().getSecondPosition()); + CompilationViewer newViewer = createViewer(activeFactory); createdComponents.put(id, newViewer); viewerPanel.add(newViewer.getComponent(), id); viewerToolBarPanel.add(newViewer.getToolBarComponent(), id); @@ -272,6 +284,7 @@ viewerToolBarPanelCardLayout.show(viewerToolBarPanel, id); // Make sure that lookup is updated. + currentLookup = new ProxyLookup(activeViewer.getLookup(), Lookups.fixed(getFirstGraph(), getSecondGraph())); proxyLookup.lookup(Object.class); } } @@ -292,9 +305,9 @@ return toggleButton; } - private CompilationViewer createViewer(CompilationViewerFactory activeFactory, int firstPosition, int secondPosition) { - InputGraph firstSnapshot = group.getGraphs().get(firstPosition); - InputGraph secondSnapshot = group.getGraphs().get(secondPosition); + private CompilationViewer createViewer(CompilationViewerFactory activeFactory) { + InputGraph firstSnapshot = getFirstGraph(); + InputGraph secondSnapshot = getSecondGraph(); return activeFactory.createViewer(firstSnapshot, secondSnapshot); } } diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/Editor/src/com/oracle/graal/visualizer/editor/SplitCompilationViewer.java --- a/src/share/tools/IdealGraphVisualizer/Editor/src/com/oracle/graal/visualizer/editor/SplitCompilationViewer.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/Editor/src/com/oracle/graal/visualizer/editor/SplitCompilationViewer.java Fri Feb 03 21:35:31 2012 +0100 @@ -44,6 +44,8 @@ splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); firstPanel = createPanel(firstViewer); secondPanel = createPanel(secondViewer); + splitPane.add(firstPanel); + splitPane.add(secondPanel); } @Override diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/Editor/src/com/oracle/graal/visualizer/editor/actions/TestAction.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/tools/IdealGraphVisualizer/Editor/src/com/oracle/graal/visualizer/editor/actions/TestAction.java Fri Feb 03 21:35:31 2012 +0100 @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ +package com.oracle.graal.visualizer.editor.actions; + +import com.sun.hotspot.igv.data.InputGraph; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.List; +import javax.swing.JOptionPane; +import org.openide.awt.ActionID; +import org.openide.awt.ActionReference; +import org.openide.awt.ActionRegistration; + +/** + * + * @author Thomas Wuerthinger + */ +@ActionID(id = "com.oracle.graal.visualizer.editor.actions.TestAction", category = "View") +@ActionRegistration(displayName = "My test action", iconBase="com/sun/hotspot/igv/view/images/next_diagram.png") +@ActionReference(path = "Menu/View", position = 150) +public final class TestAction implements ActionListener { + + List inputs; + + public TestAction(List inputs) { + this.inputs = inputs; + } + + @Override + public void actionPerformed(ActionEvent e) { + JOptionPane.showMessageDialog(null, "number of input graphs: " + inputs.size()); + + } + +} diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/Util/src/com/sun/hotspot/igv/util/BoundedZoomAction.java --- a/src/share/tools/IdealGraphVisualizer/Util/src/com/sun/hotspot/igv/util/BoundedZoomAction.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/Util/src/com/sun/hotspot/igv/util/BoundedZoomAction.java Fri Feb 03 21:35:31 2012 +0100 @@ -93,13 +93,11 @@ Point mouseLocation = scene.convertSceneToView(event.getPoint()); int xOffset = 0; int yOffset = 0; - Point oldViewPosition = null; Rectangle bounds = new Rectangle(scene.getBounds()); Dimension componentSize = new Dimension(scene.getView().getPreferredSize()); if (scrollPane != null) { viewPosition = new Point(scrollPane.getViewport().getViewPosition()); - oldViewPosition = new Point(viewPosition); xOffset = (mouseLocation.x - viewPosition.x); yOffset = (mouseLocation.y - viewPosition.y); viewPosition.x += xOffset; diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/Util/src/com/sun/hotspot/igv/util/RangeSlider.java --- a/src/share/tools/IdealGraphVisualizer/Util/src/com/sun/hotspot/igv/util/RangeSlider.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/Util/src/com/sun/hotspot/igv/util/RangeSlider.java Fri Feb 03 21:35:31 2012 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,11 +32,7 @@ import java.util.List; import javax.swing.JComponent; -/** - * - * @author Thomas Wuerthinger - */ -public class RangeSlider extends JComponent implements ChangedListener, MouseListener, MouseMotionListener { +public class RangeSlider extends JComponent { public static final int BAR_THICKNESS = 2; public static final int BAR_CIRCLE_SIZE = 9; @@ -52,22 +48,11 @@ private RangeSliderModel tempModel; private Point lastMouseMove; - public RangeSlider() { - this.addMouseMotionListener(this); - this.addMouseListener(this); - } - - public void setModel(RangeSliderModel newModel) { - if (model != null) { - model.getChangedEvent().removeListener(this); - model.getColorChangedEvent().removeListener(this); - } - if (newModel != null) { - newModel.getChangedEvent().addListener(this); - newModel.getColorChangedEvent().addListener(this); - } + public RangeSlider(RangeSliderModel newModel) { + this.addMouseMotionListener(mouseMotionListener); + this.addMouseListener(mouseListener); + newModel.getChangedEvent().addListener(modelChangedListener); this.model = newModel; - update(); } private RangeSliderModel getPaintingModel() { @@ -97,11 +82,13 @@ d.height = ITEM_HEIGHT * list.size(); return d; } - - @Override - public void changed(RangeSliderModel source) { - update(); - } + + private ChangedListener modelChangedListener = new ChangedListener() { + @Override + public void changed(RangeSliderModel source) { + update(); + } + }; private void update() { this.repaint(); @@ -191,15 +178,6 @@ return new Rectangle(0, startY, getWidth(), endY - startY); } - @Override - public void mouseDragged(MouseEvent e) { - if (startPoint != null) { - int startIndex = getIndexFromPosition(startPoint.y); - int curIndex = getIndexFromPosition(e.getPoint().y); - tempModel.setPositions(startIndex, curIndex); - } - } - private int getIndexFromPosition(int y) { for (int i = 0; i < getPaintingModel().getPositions().size() - 1; i++) { Rectangle bounds = getItemBounds(i); @@ -209,42 +187,57 @@ } return getPaintingModel().getPositions().size() - 1; } + private final MouseMotionListener mouseMotionListener = new MouseMotionListener() { - @Override - public void mouseMoved(MouseEvent e) { - lastMouseMove = e.getPoint(); - update(); - } + @Override + public void mouseDragged(MouseEvent e) { + if (startPoint != null) { + int startIndex = getIndexFromPosition(startPoint.y); + int curIndex = getIndexFromPosition(e.getPoint().y); + tempModel.setPositions(startIndex, curIndex); + } + } - @Override - public void mouseClicked(MouseEvent e) { - int index = getIndexFromPosition(e.getPoint().y); - model.setPositions(index, index); - } + @Override + public void mouseMoved(MouseEvent e) { + lastMouseMove = e.getPoint(); + update(); + } + }; + private final MouseListener mouseListener = new MouseListener() { + + @Override + public void mouseClicked(MouseEvent e) { + int index = getIndexFromPosition(e.getPoint().y); + model.setPositions(index, index); + } - @Override - public void mousePressed(MouseEvent e) { - int index = getIndexFromPosition(e.getPoint().y); - startPoint = e.getPoint(); - tempModel = model.copy(); - tempModel.getChangedEvent().addListener(this); - tempModel.setPositions(index, index); - } + @Override + public void mousePressed(MouseEvent e) { + int index = getIndexFromPosition(e.getPoint().y); + startPoint = e.getPoint(); + tempModel = model.copy(); + tempModel.getChangedEvent().addListener(modelChangedListener); + tempModel.setPositions(index, index); + } - @Override - public void mouseReleased(MouseEvent e) { - model.setPositions(tempModel.getFirstPosition(), tempModel.getSecondPosition()); - tempModel = null; - startPoint = null; - } + @Override + public void mouseReleased(MouseEvent e) { + if (tempModel != null) { + model.setPositions(tempModel.getFirstPosition(), tempModel.getSecondPosition()); + tempModel = null; + startPoint = null; + } + } - @Override - public void mouseEntered(MouseEvent e) { - } + @Override + public void mouseEntered(MouseEvent e) { + } - @Override - public void mouseExited(MouseEvent e) { - lastMouseMove = null; - repaint(); - } + @Override + public void mouseExited(MouseEvent e) { + lastMouseMove = null; + repaint(); + } + }; } diff -r e55e2fca50fa -r bf4c1e7d71b3 src/share/tools/IdealGraphVisualizer/Util/src/com/sun/hotspot/igv/util/RangeSliderModel.java --- a/src/share/tools/IdealGraphVisualizer/Util/src/com/sun/hotspot/igv/util/RangeSliderModel.java Thu Feb 02 17:51:39 2012 +0100 +++ b/src/share/tools/IdealGraphVisualizer/Util/src/com/sun/hotspot/igv/util/RangeSliderModel.java Fri Feb 03 21:35:31 2012 +0100 @@ -39,7 +39,6 @@ // Warning: Update setData method if fields are added private ChangedEvent changedEvent; - private ChangedEvent colorChangedEvent; private List positions; private int firstPosition; private int secondPosition; @@ -53,20 +52,16 @@ firstPosition = model.firstPosition; changed |= (secondPosition != model.secondPosition); secondPosition = model.secondPosition; - boolean colorChanged = (colors != model.colors); + changed |= (colors != model.colors); colors = model.colors; if (changed) { changedEvent.fire(); } - if (colorChanged) { - colorChangedEvent.fire(); - } } public RangeSliderModel(List positions) { assert positions.size() > 0; this.changedEvent = new ChangedEvent<>(this); - this.colorChangedEvent = new ChangedEvent<>(this); setPositions(positions); } @@ -79,12 +74,11 @@ firstPosition = Math.min(firstPosition, positions.size() - 1); secondPosition = Math.min(secondPosition, positions.size() - 1); changedEvent.fire(); - colorChangedEvent.fire(); } public void setColors(List colors) { this.colors = colors; - colorChangedEvent.fire(); + changedEvent.fire(); } public List getColors() { @@ -126,10 +120,6 @@ } } - public ChangedEvent getColorChangedEvent() { - return colorChangedEvent; - } - @Override public ChangedEvent getChangedEvent() { return changedEvent;