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

📄 jaweselectionmanager.java

📁 jawe的最新版本,基于Java的图形化工作流编辑器。图形化工作流编辑器 。使用JAVA语言开发
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/** * Miroslav Popov, Sep 14, 2005 miroslav.popov@gmail.com */package org.enhydra.jawe.base.controller;import java.util.ArrayList;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Set;import org.enhydra.jawe.XPDLElementChangeInfo;import org.enhydra.shark.xpdl.XMLAttribute;import org.enhydra.shark.xpdl.XMLCollection;import org.enhydra.shark.xpdl.XMLComplexChoice;import org.enhydra.shark.xpdl.XMLComplexElement;import org.enhydra.shark.xpdl.XMLElement;import org.enhydra.shark.xpdl.XMLSimpleElement;import org.enhydra.shark.xpdl.XMLUtil;import org.enhydra.shark.xpdl.elements.Activities;import org.enhydra.shark.xpdl.elements.Activity;import org.enhydra.shark.xpdl.elements.ActivitySet;import org.enhydra.shark.xpdl.elements.Application;import org.enhydra.shark.xpdl.elements.DataField;import org.enhydra.shark.xpdl.elements.FormalParameter;import org.enhydra.shark.xpdl.elements.Package;import org.enhydra.shark.xpdl.elements.Participant;import org.enhydra.shark.xpdl.elements.Transition;import org.enhydra.shark.xpdl.elements.TypeDeclaration;import org.enhydra.shark.xpdl.elements.WorkflowProcess;import org.enhydra.shark.xpdl.elements.WorkflowProcesses;/** * @author Miroslav Popov * @author Sasa Bojanic */public class JaWESelectionManager {   protected JaWEController jc;   protected List selectedElements = new ArrayList();   protected Package workingPKG;   protected WorkflowProcess workingWP;   protected ActivitySet workingAS;   public JaWESelectionManager(JaWEController controller) {      jc = controller;   }   public void clear() {      selectedElements = new ArrayList();      workingPKG = null;      workingWP = null;      workingAS = null;   }   public List getSelectedElements() {      return new ArrayList(selectedElements);   }   public XMLElement getSelectedElement() {      if (selectedElements.size() > 0) {         return (XMLElement) selectedElements.get(0);      }      return null;   }   public void setSelection(XMLElement el, boolean setPkgAndWpAndas) {      selectedElements = new ArrayList();      if (el != null)         selectedElements.add(el);      if (setPkgAndWpAndas)         setPkgWpAndAs();      XPDLElementChangeInfo info = jc.createInfo(el, XPDLElementChangeInfo.SELECTED);      jc.sendEvent(info);   }   public void setSelection(List selection, boolean setPkgAndWpAndas) {      if (checkSelection(selection)) {         if (selection == null) {            selectedElements = new ArrayList();         } else {            selectedElements = selection;         }      } else {         selectedElements = new ArrayList();         selectedElements.add(selection.get(selection.size() - 1));      }      if (setPkgAndWpAndas)         setPkgWpAndAs();      if (selectedElements.size() == 0)         return;      List temp = new ArrayList(selectedElements);      XMLElement firstEl = (XMLElement) temp.get(0);      XMLElement selOwner = firstEl;      if (temp.size() > 1) {         selOwner = firstEl.getParent();         if (selOwner == null) {            selOwner = firstEl;         }      } else {         temp.clear();      }      XPDLElementChangeInfo info = jc.createInfo(selOwner,                                                 temp,                                                 XPDLElementChangeInfo.SELECTED);      jc.sendEvent(info);   }   public void addToSelection(XMLElement el) {      List temp = new ArrayList();      temp.add(el);      addToSelection(temp);   }   public void addToSelection(List elements) {      if (canBeAddedToSelection(elements)) {         selectedElements.addAll(elements);      } else {         selectedElements = new ArrayList();         selectedElements.add(elements.get(elements.size() - 1));      }      setPkgWpAndAs();      if (selectedElements.size() == 0)         return;      List temp = new ArrayList(selectedElements);      XMLElement firstEl = (XMLElement) temp.get(0);      XMLElement selOwner = firstEl;      if (temp.size() > 1) {         selOwner = firstEl.getParent();         if (selOwner == null) {            selOwner = firstEl;         }      } else {         temp.clear();      }      XPDLElementChangeInfo info = jc.createInfo(selOwner,                                                 temp,                                                 XPDLElementChangeInfo.SELECTED);      jc.sendEvent(info);   }   public void removeFromSelection(XMLElement el) {      List temp = new ArrayList();      temp.add(el);      removeFromSelection(temp);   }   public void removeFromSelection(List elements) {      Set elementsToRemove = new HashSet();      for (int i = 0; i < elements.size(); i++) {         XMLElement el = (XMLElement) elements.get(i);         // for (int j = 0; j < selectedElements.size(); j++) {         // XMLElement element = (XMLElement)selectedElements.get(j);         //         // XMLElement parent = element.getParent();         // while (parent != null && parent != el) {         // parent = parent.getParent();         // }         //                     // if (parent != null)         // elementsToRemove.add(element);         // }         elementsToRemove.add(el);      }      for (Iterator it = elementsToRemove.iterator(); it.hasNext();) {         selectedElements.remove(it.next());      }      setPkgWpAndAs();      jc.adjustActions();   }   protected void setPkgWpAndAs() {      if (selectedElements.size() != 0) {         XMLElement el = (XMLElement) selectedElements.get(0);         workingPKG = XMLUtil.getPackage(el);         if (workingPKG != null) {            WorkflowProcess oldWp = workingWP;            if (oldWp != null) {               WorkflowProcesses wprs = (WorkflowProcesses) oldWp.getParent();               if (!wprs.contains(oldWp)) {                  oldWp = null;               }            }            workingWP = XMLUtil.getWorkflowProcess(el);            if (workingWP == null) {               if (oldWp != null && XMLUtil.getPackage(oldWp) == workingPKG) {                  workingWP = oldWp;               } else {                  List wps = workingPKG.getWorkflowProcesses().toElements();                  if (wps.size() != 0) {                     workingWP = (WorkflowProcess) wps.get(0);                  }               }            }            workingAS = XMLUtil.getActivitySet(el);         } else {            workingWP = null;            workingAS = null;         }      } else {         workingPKG = null;         workingWP = null;         workingAS = null;      }   }   public Package getWorkingPKG() {      return workingPKG;   }   public String getWorkingPackageId() {      if (workingPKG != null) {         return workingPKG.getId();      }      return null;   }   public WorkflowProcess getWorkingProcess() {      return workingWP;   }   public String getWorkingWorkflowProcessId() {      if (workingWP != null) {         return workingWP.getId();      }      return null;   }   public ActivitySet getWorkingActivitySet() {      return workingAS;   }   public String getWorkingActivitySetId() {      if (workingAS != null) {         return workingAS.getId();      }      return null;   }   public boolean canBeAddedToSelection(List selection) {      List temp = new ArrayList(selectedElements);      temp.addAll(selection);      return checkSelection(temp);   }   public boolean checkSelection(List selection) {      if (selection == null) {         return true;      }      if (selection.size() <= 1) {         return true;      }      boolean hasActivity = false;      boolean hasTransition = false;      boolean hasSingleSelectionElement = false;      boolean hasOther = false;      Set parents = new HashSet();      Set classes = new HashSet();      for (int i = 0; i < selection.size(); i++) {         XMLElement el = (XMLElement) selection.get(i);

⌨️ 快捷键说明

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