View Javadoc
1 package com.bonevich.erj.diagram; 2 3 import com.bonevich.erj.model.Relation; 4 import com.bonevich.erj.model.ForeignKey; 5 import com.bonevich.erj.ui.ErjFrame; 6 import com.bonevich.erj.app.Project; 7 8 import org.tigris.gef.base.LayerPerspective; 9 import org.tigris.gef.graph.GraphEvent; 10 import org.tigris.gef.graph.GraphModel; 11 import org.tigris.gef.presentation.Fig; 12 13 /*** 14 * Overrides <code>LayerPerspective</code> since the latter 15 * has a bad implementation - relies too much on the Net example 16 * used in GEF - and <code>LayerPerspectiveMutable</code> does 17 * not do what I want it to do in terms of adding and removing 18 * model elements (nodes). 19 */ 20 public class ERDiagramLayerPerspective extends LayerPerspective 21 { 22 ////////////////////////////////////////////////////////// 23 // Attributes 24 private ERDiagramGraphModel _erdgm; 25 26 public ERDiagramLayerPerspective(String name, ERDiagramGraphModel mgm) 27 { 28 super(name, mgm); 29 _erdgm = mgm; 30 } 31 32 public GraphModel getGraphModel() 33 { 34 return getERDiagramGraphModel(); 35 } 36 37 public void setGraphModel(GraphModel gm) 38 { 39 setERDiagramGraphModel((ERDiagramGraphModel)gm); 40 } 41 42 public ERDiagramGraphModel getERDiagramGraphModel() 43 { 44 return _erdgm; 45 } 46 public void setERDiagramGraphModel(ERDiagramGraphModel mgm) 47 { 48 super.setGraphModel(mgm); 49 _erdgm = mgm; 50 } 51 52 public void nodeAdded(GraphEvent ge) 53 { 54 super.nodeAdded(ge); 55 } 56 57 public void nodeRemoved(GraphEvent ge) 58 { 59 Object node = ge.getArg(); 60 if (node instanceof Relation) 61 { 62 Fig f = presentationFor(node); 63 remove(f); 64 f.dispose(); 65 } 66 } 67 68 public void edgeAdded(GraphEvent ge) 69 { 70 super.edgeAdded(ge); 71 } 72 73 public void edgeRemoved(GraphEvent ge) 74 { 75 Object edge = ge.getArg(); 76 if (edge instanceof ForeignKey) 77 { 78 Fig f = presentationFor(edge); 79 remove(f); 80 f.dispose(); 81 } 82 } 83 84 public void graphChanged(GraphEvent ge) 85 { 86 //System.err.println("(layer) graphChanged called!"); 87 ErjFrame.getInstance().getApplication().getCurrentProject().markAsModified(); 88 } 89 90 public void add(Fig f) 91 { 92 // we use the current Project tracked by the Project class 93 // cuz we are more than likely in the midst of loading a 94 // new project which has not been passed off to ErjFrame yet. 95 f.addPropertyChangeListener(ErjFrame.getInstance().getApplication().getCurrentProject()); 96 super.add(f); 97 } 98 99 } /* end class ERDiagramLayerPerspective */

This page was automatically generated by Maven