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

📄 selectiontool.java

📁 一个图形编辑器
💻 JAVA
字号:
/* * Diagram Editor Application * -------------------------- * * *** Java version *** * * FILE:     SelectionTool.java * * JDK:      Compatible with JDK 1.5 * * AUTHOR:   Zhangyi *  * HISTORY:  Written October 2004 */import java.awt.* ;import java.util.* ;public class SelectionTool extends Tool{  final static int Locating = 0 ;  final static int Moving   = 1 ;  final static int Resizing = 2 ;  final static int Error    = 3 ;  int state ;  Point lastPoint ;  Vector selected = new Vector(16) ;  Element resizing ;    SelectionTool(Diagram d) {    super(d) ;    state = Locating ;  }  void draw( Graphics g )  {    Enumeration cnum = selected.elements() ;    while (cnum.hasMoreElements()) {      Element e = (Element) cnum.nextElement() ;      e.highlight(g) ;    }  }  void delete()  {    switch (state) {      case Locating:        Enumeration cnum = selected.elements() ;        while (cnum.hasMoreElements()) {          Element e = (Element) cnum.nextElement() ;	  // The following line is suggested by the sequence diagram.          // However, use of "removeElement" in an iteration corrupts	  // the vector "selected", so it's replaced by a call to 	  // removeAllElements() after the iteration is complete.          // unselect(e) ;          diagram.remove(e) ;        }        selected.removeAllElements() ; // see comment above        break ;      case Moving:        break ;      case Resizing:        break ;      case Error:        break ;    }  }    void move( Point p )  {    current = p ;    switch (state) {      case Locating:        break ;      case Moving:        Enumeration cnum = selected.elements() ;        while (cnum.hasMoreElements()) {          Element e = (Element) cnum.nextElement() ;          e.move(current.x-lastPoint.x, current.y-lastPoint.y) ;        }        break ;      case Resizing:        resizing.moveControl(current.x-lastPoint.x, current.y-lastPoint.y) ;        break ;      case Error:        break ;    }    lastPoint = current ;  }  void press()  {    switch (state) {      case Locating:        Enumeration cnum = selected.elements() ;        while (cnum.hasMoreElements()) {          Element el = (Element) cnum.nextElement() ;          if (el.findControl(current)) {            resizing = el ;            break ;          }        }        if (resizing != null) {          state = Resizing ;        } else {          Element el = diagram.find(current) ;          if (el != null) {            select(el) ;            state = Moving ;          } else {            state = Error ;          }        }      case Moving:        break ;      case Resizing:        break ;      case Error:        break ;    }  }  void select(Element e)  {    if (!selected.contains(e)) {      selected.addElement(e) ;    }  }  void unselect(Element e)  {    selected.removeElement(e) ;  }  void release()  {    switch (state) {      case Locating:        break ;      case Moving:        state = Locating ;        break ;      case Resizing:        resizing = null ;        state = Locating ;        break ;      case Error:        state = Locating ;        break ;    }  }}

⌨️ 快捷键说明

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