⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mousehandler.java

📁 传感器网络中的嵌入式操作系统源代码
💻 JAVA
字号:
// $Id: MouseHandler.java,v 1.3.4.3 2003/08/26 09:08:11 cssharp Exp $/*									tab:2 * * * "Copyright (c) 2000 and The Regents of the University  * of California.  All rights reserved. * * Permission to use, copy, modify, and distribute this software and * its documentation for any purpose, without fee, and without written * agreement is hereby granted, provided that the above copyright * notice and the following two paragraphs appear in all copies of * this software. *  * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL * DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS * DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *  * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF * CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, * UPDATES, ENHANCEMENTS, OR MODIFICATIONS." * * Authors:	Phil Levis, Nelson Lee * Date:        October 11 2002 * Desc:        Template for Java classes in the sim package. * *//** * @author Phil Levis * @author Nelson Lee */package net.tinyos.sim;import net.tinyos.sim.event.*;import java.awt.*;import java.awt.event.*;import java.util.*;public class MouseHandler implements MouseListener, MouseMotionListener {  private MotePanel motePanel;  private int pressedX;  private int pressedY;  private int lastX;  private int lastY;  private Vector objectsMoved = new Vector();  private boolean objectMoved = false;    private boolean selected = false;    private boolean highlighting = false;  private SimEventBus eventBus = null;  private SimState state = null;  private CoordinateTransformer cT;  public MouseHandler(MotePanel motePanel, TinyViz tv) {    this.motePanel = motePanel;    this.eventBus = tv.getEventBus();    this.state = tv.getSimState();    this.cT = tv.getCoordTransformer();  }    public void draw(Graphics graphics) {      int cornerX;      int cornerY;      int widthX;      int widthY;      if (highlighting) {	if (pressedX > lastX) {	  cornerX = lastX;	  widthX = pressedX-lastX;	}	else {	  cornerX = pressedX;	  widthX = lastX-pressedX;	}	if (pressedY > lastY) {	  cornerY = lastY;	  widthY = pressedY-lastY;	}	else {	  cornerY = pressedY;	  widthY = lastY-pressedY;	}		//System.out.println("drawing in mousehandler");	graphics.setColor(Color.lightGray);	//System.out.println("pressedX = " + pressedX + ", pressedY = " + pressedY);	graphics.drawRect(cornerX, cornerY, widthX, widthY);      }    }      public void selectAllSimObjects() {    double x1,x2,y1,y2;    if (pressedX > lastX) {      x1 = lastX;      x2 = pressedX;    }    else {      x1 = pressedX;      x2 = lastX;    }    if (pressedY > lastY) {      y1 = lastY;      y2 = pressedY;    }    else {      y1 = pressedY;      y2 = lastY;    }    //System.out.println("before getSimObjects");    Iterator it = state.getSimObjects().iterator();    //System.out.println("before while loop");    while (it.hasNext()) {	//System.out.println("getting next sim object");	  	SimObject s = (SimObject)it.next();	//System.out.println("checking if in object space");	if (s.simObjectInQuad(x1,y1,x2,y2,cT)) {	    //System.out.println("selecting object");	    s.setSelected();	    selected = true;	    //System.out.println("done selecting object");	}	//System.out.println("done with if check");    }  }  public void unselectAllSimObjects() {    Iterator it = state.getSimObjects().iterator();    while (it.hasNext()) {      SimObject s = (SimObject)it.next();      s.setUnselected();    }    selected = false;  }  public void mousePressed(MouseEvent e) {      //System.err.println("Mouse pressed.");      synchronized (eventBus) {	  if ((e.getModifiers() & MouseEvent.BUTTON1_MASK) != 0) {	      SimObject s = state.getSimObject(e.getX(), e.getY(), cT);	      if (s == null) {		  unselectAllSimObjects();		  highlighting = true;	      }	      else {		  highlighting = false;		  if (!s.isSelected()) {		      unselectAllSimObjects();		      s.setSelected();		      selected = true;		  }	      }	      pressedX = e.getX();	      pressedY = e.getY();	      lastX = pressedX;	      lastY = pressedY;	  }	  else if ((e.getModifiers() & MouseEvent.BUTTON3_MASK) != 0) {	      if (e.isPopupTrigger()) {		  //System.out.println("PopupTriggered in MousePressedEvent");		  SimObject s = state.getSimObject(e.getX(), e.getY(), cT);		  if (s != null) {		      s.activatePopupMenu(e);		  }	      }	  }	  motePanel.refresh();      }  }      public void mouseReleased(MouseEvent e) {      //System.err.println("Mouse released.");      synchronized (eventBus) {      	  if ((e.getModifiers() & MouseEvent.BUTTON1_MASK) != 0) {	      // once mouse button 1 is released, there is no way highlighting can still be occuring	      highlighting = false;	      if (selected) {		  eventBus.addEvent(new SimObjectsSelectedEvent(state.getSelectedSimObjects()));	      }	      if (objectMoved) {		  Enumeration enum = objectsMoved.elements();		  while (enum.hasMoreElements()) {		      SimObject s = (SimObject)enum.nextElement();		      		      s.addCoordinateChangedEvent();		      objectMoved = false;		  }		  objectsMoved = new Vector();	      }	  }	  else if ((e.getModifiers() & MouseEvent.BUTTON3_MASK) != 0) {	      if (e.isPopupTrigger()) {		  //System.out.println("PopupTriggered in MouseReleasedEvent");		  SimObject s = state.getSimObject(e.getX(), e.getY(), cT);		  if (s != null) {		      s.activatePopupMenu(e);		  }		  	      }	  }	  motePanel.refresh();      }  }      public void mouseEntered(MouseEvent e) {/* do nothing */}  public void mouseExited(MouseEvent e) {/* do nothing */}  public void mouseClicked(MouseEvent e) {      //System.err.println("Mouse clicked.");      // On left mouseclock, select the node      synchronized (eventBus) {      	  if ((e.getModifiers() & MouseEvent.BUTTON1_MASK) != 0) {	      SimObject s = state.getSimObject(e.getX(), e.getY(), cT);	      if (s == null) 		  unselectAllSimObjects();	  }	  // On middle mouseclick, delete the mote	  else if ((e.getModifiers() & MouseEvent.BUTTON2_MASK) != 0) {	      SimObject s = state.getSimObject(e.getX(), e.getY(), cT);	      if (s != null) {		  //System.err.println("Removing SimObject " + s);		  state.removeSimObject(s);	      }	  }	  // On right mouseclick, place new SimObject	  else if ((e.getModifiers() & MouseEvent.BUTTON3_MASK) != 0) {	      if (e.isPopupTrigger()) {		  //System.out.println("PopupTriggered in MouseClickedEvent");		  SimObject s = state.getSimObject(e.getX(), e.getY(), cT);		  if (s != null) {		      s.activatePopupMenu(e);		  }		  	      }	      //if (s == null) {	      //System.err.println("Placing new GenericSimObject.");	      //MoteSimObjectGenerator generator = state.getMoteSimObjectGenerator();	      //generator.create(e.getX(), e.getY());	      //}	  }	  motePanel.refresh();      }  }  public void mouseDragged(MouseEvent e) {      boolean simObjectDragged = false;      //System.err.println("Mouse dragged called.");      synchronized (eventBus) {      	  lastX = e.getX();	  lastY = e.getY();	  //System.err.println("Mouse dragged.");	  if ((e.getModifiers() & MouseEvent.BUTTON1_MASK) != 0) {	      if (!highlighting) {		  Iterator it = state.getSimObjects().iterator();		  while (it.hasNext()) {		      simObjectDragged = true;		      SimObject s = (SimObject)it.next();		      MoteCoordinateAttribute coordAttrib = (MoteCoordinateAttribute)s.getAttribute("net.tinyos.sim.MoteCoordinateAttribute");		      if (s.isSelected()) {			  s.moveSimObject(lastX-pressedX, lastY-pressedY, cT);			  if (!objectsMoved.contains(s))			      objectsMoved.add(s);			  objectMoved = true;		      }		  }		  if (simObjectDragged) {		      eventBus.addEvent(new SimObjectDraggedEvent());		  }		  pressedX = lastX;		  pressedY = lastY;	      }	      else {		  synchronized (state) {		      //System.out.println("before unselect");		      unselectAllSimObjects();		      //System.out.println("before select");		      selectAllSimObjects();		      //System.out.println("after select");		  }	      }	      motePanel.refresh();	  }	  	  else if ((e.getModifiers() & MouseEvent.BUTTON3_MASK) != 0) {	      if (e.isPopupTrigger()) {		  //System.out.println("PopupTriggered in MouseDraggedEvent");		  SimObject s = state.getSimObject(e.getX(), e.getY(), cT);	      if (s != null) {		  s.activatePopupMenu(e);	      }	      motePanel.refresh();	      }	  }      }      //System.err.println("Mouse dragged done.");  }      public void mouseMoved(MouseEvent e) {}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -