]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - support/sdk/java/net/tinyos/mviz/DShape.java
Updated files.
[tinyos-2.x.git] / support / sdk / java / net / tinyos / mviz / DShape.java
diff --git a/support/sdk/java/net/tinyos/mviz/DShape.java b/support/sdk/java/net/tinyos/mviz/DShape.java
new file mode 100644 (file)
index 0000000..a4222af
--- /dev/null
@@ -0,0 +1,150 @@
+/*\r
+ * Copyright (c) 2006 Stanford University.\r
+ * All rights reserved.\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions\r
+ * are met:\r
+ * - Redistributions of source code must retain the above copyright\r
+ *   notice, this list of conditions and the following disclaimer.\r
+ * - Redistributions in binary form must reproduce the above copyright\r
+ *   notice, this list of conditions and the following disclaimer in the\r
+ *   documentation and/or other materials provided with the\r
+ *   distribution.\r
+ * - Neither the name of the Stanford University nor the names of\r
+ *   its contributors may be used to endorse or promote products derived\r
+ *   from this software without specific prior written permission.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS\r
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL STANFORD\r
+ * UNIVERSITY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\r
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\r
+ * OF THE POSSIBILITY OF SUCH DAMAGE.\r
+ */\r
+\r
+package net.tinyos.mviz;\r
+\r
+\r
+// DShape.java\r
+import java.awt.*;\r
+import java.util.*;\r
+import javax.swing.*;\r
+import java.awt.event.*;\r
+\r
+abstract class DShape \r
+extends JComponent \r
+implements DMoteModelListener\r
+{\r
+       \r
+       protected DMoteModel model;\r
+       protected DDocument document;\r
+       public Image img;\r
+       \r
+\r
+       \r
+    // remember the last point for mouse tracking\r
+       private int lastX, lastY;\r
+       protected DLayer layer;\r
+       \r
+       // Move or Resize ?\r
+       private int action;\r
+    private static final int MOVE = 0;\r
+       //=========================================================================//\r
+       public DShape(DMoteModel model, DDocument document, DLayer layer) {\r
+               super();\r
+               this.model = model;\r
+               this.img = document.image;\r
+               this.document = document;\r
+               this.layer = layer;\r
+               model.addListener(this);\r
+\r
+               addMouseMotionListener( \r
+                       new MouseMotionAdapter() \r
+                       {\r
+                           public void mouseDragged(MouseEvent e) {\r
+                               \r
+                               int x = e.getX()+getX();\r
+                               int y = e.getY()+getY();\r
+                               // compute delta from last point\r
+                               int dx = x-lastX;\r
+                               int dy = y-lastY;\r
+                               lastX = x;\r
+                               lastY = y;\r
+                               \r
+                               switch(action){\r
+                               case MOVE: DoAction(dx, dy); break;\r
+                               }\r
+                           }\r
+                       }\r
+               );\r
+               \r
+               synchToModel();         \r
+       }\r
+   \r
+       //=========================================================================//\r
+       public DMoteModel getModel() {\r
+               return(model);\r
+       }\r
+       \r
+       //=========================================================================//\r
+       public void shapeChanged(DMoteModel changed, int type) {\r
+           synchToModel();\r
+           repaint();\r
+       }\r
+       //=========================================================================//\r
+       public abstract void paintShape(Graphics g);\r
+       //=========================================================================//\r
+    public void paintComponent(Graphics g) {\r
+    }\r
+       //=========================================================================//\r
+       private void DetermineAction(int x, int y){\r
+        action = MOVE;         \r
+       }\r
+       //=========================================================================//\r
+       private void DoAction(int dx, int dy){\r
+           model.applyDeltas(dx, dy);\r
+       }\r
+       //=========================================================================//\r
+       private void synchToModel(){\r
+               int x=0, y=0, w=0, h=0;\r
+               switch(layer.paintMode){\r
+               case DLayer.IMG:\r
+               x = model.getLocX();\r
+               y = model.getLocY();\r
+               //w = model.getWidth(layer.index);\r
+               //h = model.getHeight(layer.index);\r
+               w = 250;\r
+               h = 250;\r
+                       break;\r
+               case DLayer.OVAL:\r
+                       x = model.getLocX();\r
+               y= model.getLocY();\r
+               w = 10;\r
+               h = 10;\r
+                       break;\r
+               case DLayer.TXT_MOTE:\r
+                       x = model.getLocX();\r
+               y= model.getLocY();\r
+               w = 250;\r
+               h = 250;\r
+                       break;\r
+               }\r
+               //setLocation(x, y);\r
+               setBounds(0, 0, 0, 0);\r
+       }\r
+       //=========================================================================//\r
+       private void selected(){\r
+           document.setSelected(this);     \r
+       }\r
+\r
+}\r
+\r
+\r
+\r