Mercurial > hg > graal-jvmci-8
view visualizer/ControlFlowEditor/src/at/ssw/visualizer/cfg/graph/EdgeWidget.java @ 4512:015fb895586b
Moved visualizer to new directory.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Tue, 07 Feb 2012 22:41:09 +0100 |
parents | |
children |
line wrap: on
line source
package at.ssw.visualizer.cfg.graph; import at.ssw.visualizer.cfg.model.CfgEdge; import at.ssw.visualizer.cfg.preferences.CfgPreferences; import at.ssw.visualizer.cfg.visual.BezierWidget; import at.ssw.visualizer.cfg.visual.SplineConnectionWidget; import org.netbeans.api.visual.anchor.AnchorShapeFactory; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Stroke; import org.netbeans.api.visual.anchor.AnchorShape; import org.netbeans.api.visual.model.ObjectState; //public class EdgeWidget extends BezierWidget { public class EdgeWidget extends SplineConnectionWidget { private boolean visible=true;//to store the visible state when entering the preview protected static final Stroke selectedStroke = new BasicStroke(3.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); protected static final Stroke defaultStroke = new BasicStroke(1.5f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); protected static final Stroke previewStroke = new BasicStroke( 0.5f, // Width BasicStroke.CAP_SQUARE, // End cap BasicStroke.JOIN_MITER, // Join style 10.0f, // Miter limit new float[] {5.0f, 5.0f}, // Dash pattern 0.0f); public EdgeWidget(CfgScene scene, CfgEdge edge) { super(scene); Color lineColor; CfgPreferences prefs = CfgPreferences.getInstance(); if(edge.isBackEdge()) lineColor = prefs.getBackedgeColor(); else if (edge.isXhandler()) lineColor = prefs.getExceptionEdgeColor(); else lineColor = prefs.getEdgeColor(); setLineColor(lineColor); AnchorShape as; if(edge.isReflexive())//small Arrow as = AnchorShapeFactory.createTriangleAnchorShape(6, true, false, 5); else as =AnchorShapeFactory.createTriangleAnchorShape(10, true, false, 9); setTargetAnchorShape(as); setToolTipText(edge.toString()); } public CfgEdge getEdgeModel() { CfgScene scene = (CfgScene) this.getScene(); return (CfgEdge) scene.findObject(this); } public void setEdgeVisible(boolean visible) { this.visible=visible; this.setVisible(visible); this.reroute(); this.revalidate(); } public boolean isEdgeVisible(){ return visible; } @Override public void notifyStateChanged(ObjectState oldState, ObjectState newState) { setForeground (getLineColor()); if(newState.isHighlighted() && !oldState.isHighlighted()){ this.setStroke(previewStroke); this.setVisible(true); } else { if(newState.isSelected()){ this.setStroke(selectedStroke); } else { this.setStroke(defaultStroke); } if(this.isEdgeVisible()){ this.setVisible(true); } else { this.setVisible(false); } } } @Override public String toString(){ return "EdgeWidget[" + getEdgeModel().toString() + "]"; } }