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

📄 interactor.java

📁 java开源的企业总线.xmlBlaster
💻 JAVA
字号:
/*------------------------------------------------------------------------------Name:      Interactor.javaProject:   xmlBlaster.orgCopyright: xmlBlaster.org, see xmlBlaster-LICENSE fileComment:   The class which takes care of the user events (mouse events)Version:   $Id: Interactor.java 16476 2007-09-06 22:36:52Z laghi $------------------------------------------------------------------------------*/package javaclients.svg.batik;import java.util.logging.Logger;import java.util.logging.Level;import org.xmlBlaster.util.Global;import org.xmlBlaster.util.XmlBlasterException;import org.apache.batik.swing.JSVGCanvas;import org.apache.batik.gvt.GraphicsNode;import org.apache.batik.bridge.BridgeContext;import org.apache.batik.swing.gvt.InteractorAdapter;import java.awt.event.MouseEvent;import java.awt.event.InputEvent;import java.awt.geom.Point2D;import java.awt.geom.Rectangle2D;import java.awt.Point;import java.util.List;/** * We need to create an extention of JSVGCanvas in order to be able to * retrieve the protected member bridgeContext. Lets call this class * com.eclettic.svg.JSVGCanvasExtended * @author $Author: laghi $ (michele@laghi.eu) */public class Interactor extends InteractorAdapter{   /**    * The JSVGCanvas on which to work on.    */   private final String ME                   = "Interactor";   private static Logger log = Logger.getLogger(Interactor.class.getName());   private JSVGCanvas   canvas               = null;   private GraphicsNode graphicsNode         = null;   // the mouse position where the last mousePressed event occured   private Point        lastMousePosition    = null;   // the graphicsNode on which the mouse hit when mousePressed occured   private GraphicsNode selectedGraphicsNode = null;   private BridgeContext bridgeContext       = null;   private Transceiver   transceiver         = null;   public Interactor ()   {      super();      log.fine("constructor called");   }   public void setTransceiver (Transceiver transceiver)   {      this.transceiver = transceiver;   }   public void setBridgeContext (BridgeContext bridgeContext)   {      this.bridgeContext = bridgeContext;   }   public BridgeContext getBridgeContext ()   {      return this.bridgeContext;   }   /**    * setter method for the canvas. At the same time it adds itself to the    * interactor list of the related canvas object (if it has not been set    * previously). When doing this, it also creates (and retrieves) a new    * BridgeContext for that canvas. This means that you should call this    * method BEFORE you load any document    */   public void setCanvas (JSVGCanvas canvas)   {      log.fine(".setCanvas start");      boolean setInteractorList = false;      System.out.println(ME + ".setCanvas " + canvas + " start");      // if the same canvas is set for the second time, the interactor list      // is unchanged.      if ((canvas != this.canvas) && (canvas != null)) {         log.info(".setCanvas interactor list set");         List interactorList = canvas.getInteractors();         interactorList.add(this);      }      this.canvas   = canvas;      log.fine(".setCanvas end");   }   /**    * The reason why this method is not called together when setting the canvas    * is that the graphics node is different for each new DOM loaded, while the    * canvas is always the same even if a second DOM has been loaded. If you    * invoke this method before a DOM has been completely loaded, it is set to    * null.    */   public void setGraphicsNode () throws XmlBlasterException   {      log.fine(".setGraphicsNode start");      if (this.canvas == null) {         log.severe(".setGraphicsNode canvas is null");         throw new XmlBlasterException(ME, ".setGraphicsNode canvas is null");      }      this.graphicsNode = this.canvas.getGraphicsNode();      if (this.graphicsNode == null)         log.warning(".setGraphicsNode: the graphics node is null");      log.fine(".setGraphicsNode end");   }   public boolean startInteraction (InputEvent ie)   {      log.fine(".startInteraction called");      // don't really know what to return here ...      return true;   }   public JSVGCanvas getCanvas ()   {      return canvas;   }   public void mousePressed (MouseEvent evt)   {      log.fine(".mousePressed");      // this.graphicsNode.getGlobalTransform().deltaTransform(p0, p1);      this.lastMousePosition = evt.getPoint();      Rectangle2D rect = graphicsNode.getBounds();//      double width  = rect.getX() * point.getX() / canvas.getWidth();//      double height = rect.getY() * point.getY() / canvas.getHeight();      Point2D point2D = new Point2D.Double();//      point2D.setLocation(width, height);      point2D.setLocation(this.lastMousePosition.getX(),                          this.lastMousePosition.getY());      this.selectedGraphicsNode = this.graphicsNode.nodeHitAt(point2D);      if (this.selectedGraphicsNode == null) {         log.warning(".mousePressed hit a null object");      }      else {         log.info(".mousePressed hit " + this.selectedGraphicsNode.toString());      }   }   public void mouseDragged (MouseEvent evt)   {//      System.out.println(ME + ".mouseDragged");   }   public void mouseEntered (MouseEvent evt)   {//      System.out.println(ME + ".mouseEntered");   }   public void mouseExited (MouseEvent evt)   {//      System.out.println(ME + ".mouseExited");   }   public void mouseMoved (MouseEvent evt)   {//      System.out.println(ME + ".mouseMoved");   }   public void mouseClicked (MouseEvent evt)   {//      System.out.println(ME + ".mouseClicked");   }   public void mouseReleased (MouseEvent evt)   {      log.info(".mouseReleased");      // here you can perform the tasks which are specific to this implementation      /* In this case translate the current object */      // calculate the translation coordinates ..      if (this.lastMousePosition == null) {         log.severe("the last mouse position was null");      }      else {         if (this.selectedGraphicsNode != null) {            Point p = new Point();            p.x = evt.getX() - this.lastMousePosition.x;            p.y = evt.getY() - this.lastMousePosition.y;            this.transceiver.move(this.selectedGraphicsNode, p);         }         else log.warning(".mouseReleased: selectedGraphicsNode was null");      }      // reset the members      this.selectedGraphicsNode = null;      this.lastMousePosition    = null;   }}

⌨️ 快捷键说明

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