1 19 20 package ca.mcgill.sable.soot.cfg.editParts; 21 22 import java.beans.PropertyChangeEvent ; 23 import java.beans.PropertyChangeListener ; 24 25 import org.eclipse.draw2d.IFigure; 26 import org.eclipse.gef.editparts.AbstractGraphicalEditPart; 27 import ca.mcgill.sable.soot.cfg.model.*; 28 import ca.mcgill.sable.soot.cfg.figures.*; 29 import java.util.*; 30 import ca.mcgill.sable.soot.*; 31 import org.eclipse.swt.graphics.*; 32 33 34 public class NodeDataEditPart 35 extends AbstractGraphicalEditPart 36 implements PropertyChangeListener { 37 38 public NodeDataEditPart() { 39 super(); 40 } 41 42 45 protected IFigure createFigure() { 46 return new CFGNodeDataFigure(); 47 } 48 49 52 protected void createEditPolicies() { 53 } 54 55 58 public void propertyChange(PropertyChangeEvent evt) { 59 if (evt.getPropertyName().equals(CFGElement.TEXT)){ 60 ((CFGNodeDataFigure)getFigure()).setData((ArrayList)evt.getNewValue()); 61 ((CFGNodeDataFigure)getFigure()).updateFigure(); 62 ((CFGNodeEditPart)getParent()).updateSize(getFigure().getBounds().width, getFigure().getBounds().height); 63 } 64 else if (evt.getPropertyName().equals(CFGElement.HEAD)){ 65 ((CFGNodeDataFigure)getFigure()).getRect().setBackgroundColor(SootPlugin.getDefault().getColorManager().getColor(new RGB(0,45,200))); 66 } 67 else if (evt.getPropertyName().equals(CFGElement.TAIL)){ 68 ((CFGNodeDataFigure)getFigure()).getRect().setBackgroundColor(SootPlugin.getDefault().getColorManager().getColor(new RGB(0,200,45))); 69 } 70 } 71 72 75 public CFGNodeData getNodeData() { 76 return (CFGNodeData)getModel(); 77 } 78 79 80 81 public void activate(){ 82 super.activate(); 83 getNodeData().addPropertyChangeListener(this); 84 } 85 86 public void deactivate(){ 87 super.deactivate(); 88 getNodeData().removePropertyChangeListener(this); 89 } 90 91 public void markStop(){ 92 ArrayList list = getNodeData().getText(); 93 ((CFGNodeDataFigure)getFigure()).addStopIcon(); 94 soot.toolkits.graph.interaction.InteractionHandler.v().addToStopUnitList(((CFGNodeDataFigure)getFigure()).getUnit()); 96 } 97 98 public void unMarkStop(){ 99 ((CFGNodeDataFigure)getFigure()).removeStopIcon(); 100 soot.toolkits.graph.interaction.InteractionHandler.v().removeFromStopUnitList(((CFGNodeDataFigure)getFigure()).getUnit()); 101 } 102 103 public void resetColors(){ 104 removeIndicator(); 105 } 106 107 public void addIndicator(){ 108 ((CFGNodeDataFigure)getFigure()).addIndicator(); 109 } 110 111 public void removeIndicator(){ 112 ((CFGNodeDataFigure)getFigure()).removeIndicator(); 113 } 114 } 115 | Popular Tags |