亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? workflowmarqueehandler.java

?? 一個很好實用的工作流OSWORKFLOW開發例子.有著非常優秀的靈活性.
?? JAVA
字號:
package com.opensymphony.workflow.designer;import java.awt.*;import java.awt.event.MouseEvent;import java.awt.geom.Point2D;import java.awt.geom.Rectangle2D;import javax.swing.*;import org.jgraph.graph.BasicMarqueeHandler;import org.jgraph.graph.PortView;/** * @author Hani Suleiman (hani@formicary.net) Date: Oct 25 2003 Time: 6:56:10 PM */public class WorkflowMarqueeHandler extends BasicMarqueeHandler{  // Holds the Start and the Current Point  protected Point2D start, current;  // Holds the First and the Current Port  protected PortView port, firstPort;  private WorkflowGraph graph;  //  protected boolean readyToConnect = false;  public WorkflowMarqueeHandler(WorkflowGraph graph)  {    this.graph = graph;  }  // Override to Gain Control (for PopupMenu and ConnectMode)  public boolean isForceMarqueeEvent(MouseEvent e)  {    // If Right Mouse Button we want to Display the PopupMenu    if(SwingUtilities.isRightMouseButton(e) || e.isPopupTrigger())    // Return Immediately      return true;    // Find and Remember Port    port = graph.getPortViewAt(e.getX(), e.getY());    // If Port Found and in ConnectMode (=Ports Visible)    if(port != null && graph.isPortsVisible())    {      WorkflowPort workflowPort = (WorkflowPort)port.getCell();      //int edgeCount = workflowPort.getEdgeCount();      //if we have any edges on this port, then assume we're trying to move the edge, rather      //than create a new one      if(workflowPort.getIndex() == 0)      {        return true;      }    }    // Else Call Superclass    return super.isForceMarqueeEvent(e);  }  // Use Xor-Mode on Graphics to Paint Connector  protected void paintConnector(Color fg, Color bg, Graphics g)  {    // Set Foreground    g.setColor(fg);    // Set Xor-Mode Color    g.setXORMode(bg);    // Highlight the Current Port    paintPort(graph.getGraphics());    // If Valid First Port, Start and Current Point    if(firstPort != null && start != null && current != null)    // Then Draw A Line From Start to Current Point      g.drawLine((int)start.getX(), (int)start.getY(), (int)current.getX(), (int)current.getY());  }  // Use the Preview Flag to Draw a Highlighted Port  protected void paintPort(Graphics g)  {    // If Current Port is Valid    if(port != null)    {      // If Not Floating Port...      //boolean isFloating = (GraphConstants.getOffset(port.getAttributes()) != null);      // ...Then use Parent's Bounds      //Rectangle2D r = isFloating ? port.getBounds() : port.getParentView().getBounds();      Rectangle2D r = port.getBounds();      // Scale from Model to Screen      r = graph.toScreen(r);      // Add Space For the Highlight Border      Rectangle2D growRect = new Rectangle2D.Double(r.getX() - 3, r.getY() - 3, r.getWidth() + 6, r.getHeight() + 6);      //r.setFrame(r.getX() - 3, r.getY() - 3, r.getWidth() + 6, r.getHeight() + 6);      // Paint Port in Preview (=Highlight) Mode      graph.getUI().paintCell(g, port, growRect, true);    }  }  // Display PopupMenu or Remember Start Location and First Port  public void mousePressed(final MouseEvent e)  {    // If Right Mouse Button    if(SwingUtilities.isRightMouseButton(e) || e.isPopupTrigger())    //    if(e.isPopupTrigger())    {      // Scale From Screen to Model      //Point loc = fromScreen(e.getPoint());      // Find Cell in Model Coordinates      Object cell = graph.getFirstCellForLocation(e.getX(), e.getY());      // Create PopupMenu for the Cell      if(cell == null)      {        graph.showMenu(e.getX(), e.getY());      }      else      {        if(!(cell instanceof InitialActionCell))        {          //      		System.out.println(cell);          if(cell instanceof WorkflowEdge)          {            graph.showEdgeMenu(e.getX(), e.getY());          }          else          {            graph.showDelete(e.getX(), e.getY());          }        }      }      // Else if in ConnectMode and Remembered Port is Valid    }    else if(port != null && !e.isConsumed() && graph.isPortsVisible())    {      // Remember Start Location      start = graph.toScreen(port.getLocation(null));      // Remember First Port      firstPort = port;      // Consume Event      e.consume();      readyToConnect = false;    }    else    // Call Superclass      super.mousePressed(e);  }  // Find Port under Mouse and Repaint Connector  public void mouseDragged(MouseEvent e)  {    // If remembered Start Point is Valid    if(start != null && !e.isConsumed())    {      // ready to connect      readyToConnect = true;      // Fetch Graphics from Graph      Graphics g = graph.getGraphics();      // Xor-Paint the old Connector (Hide old Connector)      paintConnector(Color.black, graph.getBackground(), g);      // Reset Remembered Port      PortView newPort = graph.getPortViewAt(e.getX(), e.getY());      if(port != newPort && port != null)      {        paintPort(g);      }      port = newPort;      // If Port was found then Point to Port Location      if(port != null)        current = graph.toScreen(port.getLocation(null));      // Else If no Port was found then Point to Mouse Location      else        current = graph.snap(e.getPoint());      // Xor-Paint the new Connector      paintConnector(graph.getBackground(), Color.black, g);      // Consume Event      e.consume();    }    // Call Superclass    super.mouseDragged(e);  }  // Connect the First Port and the Current Port in the Graph or Repaint  public void mouseReleased(MouseEvent e)  {    // If Valid Event, Current and First Port    // first connect first is OK    if(e != null && !e.isConsumed() && port != null && firstPort != null && readyToConnect)    {      readyToConnect = false;      // Then Establish Connection      WorkflowPort sourcePort = (WorkflowPort)firstPort.getCell();      WorkflowCell source = (WorkflowCell)sourcePort.getParent();      WorkflowPort targetPort = (WorkflowPort)port.getCell();      WorkflowCell target = (WorkflowCell)targetPort.getParent();      source.setSelectedPort(source.getIndex(sourcePort));      target.setSelectedPort(target.getIndex(targetPort));      ConnectHelper.connect(source, target, (WorkflowGraphModel)graph.getModel());      //		System.out.println("connectable "+ ConnectHelper.connect(source, target, (WorkflowGraphModel)graph.getModel()));      //				connect((Port) firstPort.getCell(), (Port) port.getCell());      // Consume Event      e.consume();    }    graph.repaint();    // Reset Global Vars    firstPort = port = null;    start = current = null;    // Call Superclass    super.mouseReleased(e);  }  // Show Special Cursor if Over Port  public void mouseMoved(MouseEvent e)  {    // Check Mode and Find Port    PortView portView = graph.getPortViewAt(e.getX(), e.getY());    if(portView != null && !e.isConsumed())    {      // Set Cusor on Graph (Automatically Reset)      WorkflowPort workflowPort = (WorkflowPort)portView.getCell();      if(workflowPort.getIndex() == 0)      //      //int edgeCount = workflowPort.getEdgeCount();      //if(edgeCount == 0)      {        graph.setCursor(new Cursor(Cursor.HAND_CURSOR));        e.consume();      }    }    // Call Superclass    super.mouseReleased(e);  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲婷婷综合色高清在线| 精品一区二区三区影院在线午夜| 亚洲国产精品久久不卡毛片| 国产丶欧美丶日本不卡视频| 欧美色大人视频| 国产精品美女久久久久久久久| 亚洲激情校园春色| 成人毛片视频在线观看| 日韩女优电影在线观看| 亚洲一二三四久久| 91在线视频官网| 国产欧美日韩视频一区二区| 麻豆freexxxx性91精品| 欧美亚洲动漫另类| 一区二区三区在线视频免费观看 | 国产91精品在线观看| 91精品国产综合久久精品性色| 国产精品久久久久久久午夜片| 国内成人精品2018免费看| 欧美一区在线视频| 日产国产高清一区二区三区 | 久久婷婷色综合| 麻豆91在线观看| 日韩一级片在线观看| 午夜影视日本亚洲欧洲精品| 日本精品一区二区三区高清| 亚洲免费高清视频在线| 97久久精品人人做人人爽50路| 国产精品麻豆欧美日韩ww| 成人网在线播放| 中文字幕一区二区三区乱码在线| 国产精品综合在线视频| 国产视频在线观看一区二区三区 | 中文字幕中文字幕中文字幕亚洲无线| 国模娜娜一区二区三区| 久久久久久久久久电影| 国产成人一区二区精品非洲| 国产日产欧美精品一区二区三区| 国产一区二区三区精品视频| 国产日产欧产精品推荐色 | 狠狠v欧美v日韩v亚洲ⅴ| 日韩欧美一区二区久久婷婷| 免费人成黄页网站在线一区二区| 51久久夜色精品国产麻豆| 日本最新不卡在线| 久久久影视传媒| 91免费视频网址| 亚洲尤物在线视频观看| 欧美美女bb生活片| 久久疯狂做爰流白浆xx| 国产精品私人自拍| 欧美三级乱人伦电影| 久久99精品网久久| 中文字幕在线观看不卡| 91国偷自产一区二区使用方法| 五月综合激情日本mⅴ| 欧美电影免费观看高清完整版 | 国产日韩欧美精品在线| 91丨porny丨蝌蚪视频| 午夜精品成人在线视频| 久久网这里都是精品| 99国产麻豆精品| 亚洲国产wwwccc36天堂| 久久久99精品免费观看| 91高清在线观看| 激情六月婷婷久久| 亚洲精品乱码久久久久久| 日韩欧美国产一区二区三区| av高清久久久| 久久精品噜噜噜成人av农村| 亚洲私人黄色宅男| 精品国产自在久精品国产| 99国内精品久久| 精油按摩中文字幕久久| 一区二区三区资源| 国产亚洲1区2区3区| 欧美日韩国产大片| 成人高清免费在线播放| 日本成人在线视频网站| 亚洲欧美色一区| 久久人人爽爽爽人久久久| 欧美日韩和欧美的一区二区| av动漫一区二区| 国产精品一区二区无线| 日韩影视精彩在线| 日韩美女视频一区二区| 国产三级欧美三级| 精品国产电影一区二区| 欧美日韩综合在线| 成av人片一区二区| 国产精品一区免费在线观看| 日韩精品电影在线| 亚洲伦理在线精品| 国产精品久99| 久久久777精品电影网影网| 日韩欧美国产小视频| 6080日韩午夜伦伦午夜伦| 欧美亚洲动漫制服丝袜| 91浏览器入口在线观看| 成人免费视频一区二区| 国产曰批免费观看久久久| 视频一区二区三区入口| 亚洲一区二区黄色| 午夜欧美大尺度福利影院在线看| 中文在线一区二区| 久久久久久久久岛国免费| 亚洲精品在线网站| 久久久久久久久久久久久夜| 日韩欧美一级在线播放| 日韩视频免费观看高清完整版在线观看| 在线观看视频一区| 日本道精品一区二区三区 | 亚洲国产日韩一区二区| 亚洲综合视频在线| 夜夜操天天操亚洲| 亚洲成人动漫在线观看| 午夜影院久久久| 日本不卡免费在线视频| 精品一区二区三区久久久| 日韩电影在线看| 久久99精品久久久久久久久久久久 | 六月婷婷色综合| 极品销魂美女一区二区三区| 久久er精品视频| 国产乱理伦片在线观看夜一区| 国产一区二区日韩精品| 国产成人免费在线| 91玉足脚交白嫩脚丫在线播放| 91精彩视频在线观看| 欧美一卡2卡3卡4卡| 精品国产免费人成电影在线观看四季 | 欧美麻豆精品久久久久久| 3atv一区二区三区| 2023国产精品| 中文字幕一区二区三| 亚洲美女视频一区| 日本免费在线视频不卡一不卡二| 久久www免费人成看片高清| 懂色av一区二区三区免费看| 91麻豆蜜桃一区二区三区| 欧美色图激情小说| 精品毛片乱码1区2区3区| 中文字幕日韩一区| 日本伊人色综合网| 成人av在线播放网站| 欧美日韩精品欧美日韩精品| 欧美成人精品福利| 日韩毛片高清在线播放| 日韩精品电影一区亚洲| 懂色一区二区三区免费观看| 欧美色综合久久| 久久久久久久免费视频了| 亚洲图片欧美色图| 岛国精品在线观看| 日韩一区二区在线播放| 亚洲欧美综合网| 精品一区二区三区在线观看国产| 91丨porny丨首页| 26uuu亚洲综合色| 亚洲国产综合在线| 粉嫩嫩av羞羞动漫久久久| 精品久久久久久久久久久久久久久 | 国产乱国产乱300精品| 欧美性淫爽ww久久久久无| 久久久久97国产精华液好用吗| 亚洲一卡二卡三卡四卡 | 国产精品视频在线看| 婷婷国产v国产偷v亚洲高清| 99久久精品一区二区| 久久免费精品国产久精品久久久久| 一区二区三区久久久| 成人网在线免费视频| 久久亚洲一区二区三区明星换脸 | 国产伦精品一区二区三区在线观看| 日本精品视频一区二区| 欧美韩国日本一区| 日本va欧美va欧美va精品| 在线观看国产精品网站| 日本一区二区三区四区| 国产原创一区二区| 欧美一区二区二区| 日韩精品久久久久久| 在线免费精品视频| 亚洲天堂a在线| av电影在线不卡| 久久精品视频免费| 狠狠久久亚洲欧美| 精品久久人人做人人爽| 蜜桃91丨九色丨蝌蚪91桃色| 欧美久久婷婷综合色| 亚洲综合免费观看高清完整版| www.av亚洲| 国产精品久久久久7777按摩| 国产精品一色哟哟哟| 91精品国产综合久久精品麻豆| 亚洲夂夂婷婷色拍ww47| 在线看不卡av| 性欧美大战久久久久久久久| 欧美亚洲动漫精品| 午夜精品久久久久久久99樱桃|