Marcus Daniels April 14, 2001 In today's snapshot, there are two new features courtesy of Jason Alexander: 1) NodeItems can change their labels. 2) LinkItems don't need to be directed. Attached is a test case that demonstrates both new features. ftp://ftp.swarm.org/pub/swarm/src/testing/swarm-2001-04-18.tar.gz ftp://ftp.swarm.org/pub/swarm/binaries/w32/latest Thanks, Jason! import swarm.Globals; import swarm.simtoolsgui.GUISwarmImpl; import swarm.defobj.Zone; import swarm.gui.Canvas; import swarm.gui.CanvasC; import swarm.gui.CanvasImpl; import swarm.gui.CanvasCImpl; import swarm.gui.RectangleNodeItem; import swarm.gui.RectangleNodeItemC; import swarm.gui.RectangleNodeItemCImpl; import swarm.gui.RectangleNodeItemImpl; import swarm.gui.OvalNodeItem; import swarm.gui.OvalNodeItemC; import swarm.gui.OvalNodeItemS; import swarm.gui.OvalNodeItemCImpl; import swarm.gui.OvalNodeItemImpl; import swarm.gui.LinkItem; import swarm.gui.LinkItemC; import swarm.gui.LinkItemImpl; import swarm.gui.LinkItemCImpl; public class TestLink extends GUISwarmImpl { static void main (String args[]) { Globals.env.initSwarm ("TestLink", "0.0", "bug-swarm@swarm.org", args); TestLink testLink = new TestLink (Globals.env.globalZone); testLink.buildObjects (); testLink.buildActions (); testLink.activateIn (null); testLink.go (); } public TestLink (Zone aZone) { super (aZone); } Canvas canvas; public Object buildObjects () { super.buildObjects (); CanvasC canvasC = new CanvasCImpl (new CanvasImpl ()); canvasC.createBegin (getZone ()); canvas = (Canvas) canvasC.createEnd (); canvas.setHeight (500); canvas.setWidth (500); canvas.setWindowTitle ("Test Nodes and Links"); canvas.pack (); RectangleNodeItemC rectangleC = new RectangleNodeItemCImpl (new RectangleNodeItemImpl ()); rectangleC.createBegin (getZone ()); rectangleC.setCanvas (canvas); rectangleC.setString ("Reset me"); rectangleC.setX$Y (400, 400); RectangleNodeItem rectangle = (RectangleNodeItem) rectangleC.createEnd (); rectangle.resetString ("Foo"); OvalNodeItemC ovalC = new OvalNodeItemCImpl (new OvalNodeItemImpl ()); ovalC.createBegin (getZone ()); ovalC.setCanvas (canvas); ovalC.setString ("Bar"); ovalC.setX$Y (250, 250); OvalNodeItem oval = (OvalNodeItem) ovalC.createEnd (); LinkItemC linkItemC = new LinkItemCImpl (new LinkItemImpl ()); linkItemC.createBegin (getZone ()); linkItemC.setDirectedFlag (false); linkItemC.setCanvas (canvas); linkItemC.setFrom (oval); linkItemC.setTo (rectangle); linkItemC.createEnd (); return this; } }