📄 jaweselectionmanager.java
字号:
XMLElement parent = el.getParent(); Class cls = el.getClass(); if (el instanceof Activity) { hasActivity = true; } else if (el instanceof Transition) { hasTransition = true; } else if (!(parent instanceof XMLCollection)) { hasSingleSelectionElement = true; } else { hasOther = true; } if (parent != null) { parents.add(parent); } classes.add(cls); } // only one other component is allowed if (hasSingleSelectionElement) { return false; } // if only activities and transitions are selected, check if they // are contained in the same WorkflowProcess/ActivitySet if (hasActivity && hasTransition && !hasOther) { Set parentsParents = new HashSet(); for (int i = 0; i < selection.size(); i++) { XMLElement elParentParent = ((XMLElement) selection.get(i)).getParent() .getParent(); parentsParents.add(elParentParent); } if (parentsParents.size() != 1) { return false; } return true; } // if there are more than one parent, or more than one type of object class, return // false return !(parents.size() > 1 || classes.size() > 1); } public boolean canEditProperties() { if (getSelectedElements().size() == 1) { XMLElement firstSelected = (XMLElement) selectedElements.get(0); if (XMLUtil.getPackage(firstSelected) != null) { return true; } } return false; } public boolean canCut() { return checkCutOrCopySelection(true); } public boolean canCopy() { return checkCutOrCopySelection(false); } public boolean canDuplicate() { if (selectedElements.size() != 1) { return false; } XMLElement firstSelected = (XMLElement) selectedElements.get(0); XMLElement parent = firstSelected.getParent(); if (!(parent instanceof XMLCollection)) { return false; } return jc.canDuplicateElement((XMLCollection) parent, firstSelected); } public boolean canInsertNew() { if (selectedElements.size() == 0) { return false; } XMLElement firstSelected = (XMLElement) selectedElements.get(0); XMLElement parent = firstSelected.getParent(); if (!(firstSelected instanceof XMLCollection || parent instanceof XMLCollection || firstSelected instanceof Package)) { return false; } if (firstSelected instanceof XMLCollection) { return jc.canCreateElement((XMLCollection) firstSelected); } else if (parent instanceof XMLCollection) { return jc.canCreateElement((XMLCollection) parent); } else if (firstSelected instanceof Package && !((Package) firstSelected).isReadOnly()) { return true; } return false; } public boolean canPaste() { if (jc.getEdit().getClipboard().size() == 0) { return false; } if (selectedElements.size() == 0) { return false; } Class clipboardParentsClass1 = null; Class clipboardParentsClass2 = null; Class clipboardElementsClass1 = null; Class clipboardElementsClass2 = null; for (int i = 0; i < jc.getEdit().getClipboard().size(); i++) { XMLElement el = (XMLElement) jc.getEdit().getClipboard().get(i); XMLElement parent = el.getParent(); if (el instanceof Transition) { clipboardParentsClass2 = parent.getClass(); clipboardElementsClass2 = el.getClass(); } else { clipboardParentsClass1 = parent.getClass(); clipboardElementsClass1 = el.getClass(); } } Class selectionElementsClass1 = null; Class selectionElementsClass2 = null; for (int i = 0; i < selectedElements.size(); i++) { XMLElement el = (XMLElement) selectedElements.get(i); if (el.isReadOnly()) { return false; } if (el instanceof Transition) { selectionElementsClass2 = el.getClass(); } else { selectionElementsClass1 = el.getClass(); } } // System.err.println("CEC1="+clipboardElementsClass1+", // CEC2="+clipboardElementsClass2); // System.err.println("SEC1="+selectionElementsClass1+", // SEC2="+selectionElementsClass2); boolean allowPaste1 = clipboardElementsClass1 == null ? false : (selectionElementsClass1 == null ? false : clipboardElementsClass1 == selectionElementsClass1); // System.err.println("AP1="+allowPaste1); boolean allowPaste2 = clipboardElementsClass2 == null ? false : (selectionElementsClass2 == null ? false : clipboardElementsClass2 == selectionElementsClass2); // System.err.println("AP2="+allowPaste2); boolean allowPaste = (allowPaste1 || allowPaste2); if (allowPaste) return true; if (selectedElements.size() > 1) return false; XMLElement firstSelected = (XMLElement) selectedElements.get(0); if (firstSelected instanceof XMLAttribute || firstSelected instanceof XMLSimpleElement || firstSelected instanceof XMLComplexChoice) { return false; } if (firstSelected instanceof XMLCollection) { Class selectionElementClass = selectionElementsClass1; if (selectionElementClass == null) { selectionElementClass = selectionElementsClass2; } if (selectionElementClass == clipboardParentsClass1 || selectionElementClass == clipboardParentsClass2) return true; return false; } if (firstSelected instanceof XMLComplexElement) { Class clipboardParentsClass = clipboardParentsClass1; if (clipboardParentsClass == null) { clipboardParentsClass = clipboardParentsClass2; } List subEls = ((XMLComplexElement) firstSelected).toElements(); for (int i = 0; i < subEls.size(); i++) { if (subEls.get(i).getClass() == clipboardParentsClass) { return true; } } return false; } return false; } public boolean canDelete() { if (selectedElements.size() == 0) { return false; } for (int i = 0; i < selectedElements.size(); i++) { XMLElement selected = (XMLElement) selectedElements.get(i); XMLElement parent = selected.getParent(); if (!(parent instanceof XMLCollection)) { return false; } if (!jc.canRemoveElement((XMLCollection) parent, selected)) { return false; } } return true; } public boolean canGetReferences() { if (selectedElements.size() != 1) { return false; } XMLElement selected = (XMLElement) selectedElements.get(0); if (selected instanceof TypeDeclaration || selected instanceof Participant || selected instanceof Application || selected instanceof WorkflowProcess || selected instanceof ActivitySet || selected instanceof DataField || (selected instanceof FormalParameter && selected.getParent().getParent() instanceof WorkflowProcess) || selected instanceof Activity || selected instanceof Transition || selected instanceof Package) { return true; } return false; } protected boolean checkCutOrCopySelection(boolean isCut) { if (selectedElements.size() == 0) { return false; } for (int i = 0; i < selectedElements.size(); i++) { XMLElement el = (XMLElement) selectedElements.get(i); XMLElement parent = el.getParent(); if (el instanceof Transition) { Activities acts = (Activities) ((XMLComplexElement) el.getParent() .getParent()).get("Activities"); Activity from = acts.getActivity(((Transition) el).getFrom()); Activity to = acts.getActivity(((Transition) el).getTo()); if (!(selectedElements.contains(from) && selectedElements.contains(to))) { return false; } } else if (!(parent instanceof XMLCollection)) { return false; } XMLCollection col = (XMLCollection) parent; if ((!(el instanceof Transition) && !jc.canDuplicateElement(col, el, false)) || !jc.canInsertElement(col, el, false) || !jc.canCreateElement(col, false)) { return false; } if (isCut && !jc.canRemoveElement(col, el)) { return false; } } return true; } protected void removeNonExistingElementsFromSelection(List selection, List removedElements) { Set removeFromSelection = new HashSet(); for (int i = 0; i < removedElements.size(); i++) { XMLElement removedEl = (XMLElement) removedElements.get(i); for (int j = 0; j < selection.size(); j++) { XMLElement selEl = (XMLElement) selection.get(j); if (XMLUtil.isParentsChild(removedEl, selEl)) { removeFromSelection.add(selEl); } } } selection.removeAll(removeFromSelection); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -