@Override public void fillContextMenu(IMenuManager menu) { // MOD mzhao user readonly role on svn repository mode. if (!isShowMenu()) { return; } TreeSelection treeSelection = ((TreeSelection) this.getContext().getSelection()); if (!treeSelection.isEmpty()) { Iterator iterator = treeSelection.iterator(); while (iterator.hasNext()) { Object obj = iterator.next(); if (obj instanceof ReportAnalysisRepNode) { ReportAnalysisRepNode repAnaNode = (ReportAnalysisRepNode) obj; TDQReportItem reportItem = repAnaNode.getReportItem(); if (CorePlugin.getDefault().itemIsOpening(reportItem, false)) { // if the report's editor is opening, don't show the menu return; } } else { // if include other type node, don't show the menu return; } } } // show the menu menu.add(new RemoveAnalysisAction()); }
private String getOperationType(TreeSelection selection) { String operation = null; for (Iterator<?> i = selection.iterator(); i.hasNext(); ) { String tmpOperation = null; Object next = i.next(); if (next instanceof GitModelWorkingFile) tmpOperation = STAGE_OP; else if (next instanceof GitModelCacheFile) tmpOperation = UNSTAGE_OP; else if (next instanceof GitModelCacheTree) { if (((GitModelCacheTree) next).isWorkingTree()) tmpOperation = STAGE_OP; else tmpOperation = UNSTAGE_OP; } else { operation = UNSUPPORTED_OP; break; } if (operation == null) operation = tmpOperation; else if (!operation.equals(tmpOperation)) { operation = UNSUPPORTED_OP; break; } } return operation; }
/* * (non-Javadoc) * * @see org.talend.designer.fileoutputxml.ui.footer.AbstractTreeNodeButton#updateButtonStatus() */ @Override protected void updateStatus(TreeSelection selection) { if (selection.isEmpty()) { getButton().setEnabled(false); return; } final TreePath[] paths = selection.getPaths(); boolean sameSegment = true; for (int i = 0; i < paths.length - 1; i++) { if (paths[i].getSegmentCount() != paths[i + 1].getSegmentCount()) { sameSegment = false; } } if (sameSegment) { getButton().setEnabled(true); } else { getButton().setEnabled(false); return; } // if same segment ,they have the same parent and parent must be an element final Element parent = (Element) ((FOXTreeNode) selection.getFirstElement()).getParent(); if (parent == null) { getButton().setEnabled(false); return; } final List<? extends FOXTreeNode> attrChildren = parent.getAttributeChildren(); final List<? extends FOXTreeNode> nameSpaceChildren = parent.getNameSpaceChildren(); final List<FOXTreeNode> elementChildren = parent.getElementChildren(); final Iterator iterator = selection.iterator(); while (iterator.hasNext()) { final Object next = iterator.next(); if (next instanceof Attribute) { if (attrChildren.contains(next) && attrChildren.indexOf(next) == 0) { getButton().setEnabled(false); return; } } else if (next instanceof NameSpaceNode) { if (nameSpaceChildren.contains(next) && nameSpaceChildren.indexOf(next) == 0) { getButton().setEnabled(false); return; } } else if (next instanceof Element) { if (elementChildren.contains(next) && elementChildren.indexOf(next) == 0) { getButton().setEnabled(false); return; } } } }
/* * (non-Javadoc) * * @see org.talend.designer.fileoutputxml.ui.footer.AbstractTreeNodeButton#handleSelectionEvent() */ @Override protected void handleSelectionEvent(TreeSelection selection) { if (!selection.isEmpty()) { final Element parentNode = (Element) ((FOXTreeNode) selection.getFirstElement()).getParent(); final List<? extends FOXTreeNode> attrChildren = parentNode.getAttributeChildren(); final List<? extends FOXTreeNode> nameSpaceChildren = parentNode.getNameSpaceChildren(); final List<FOXTreeNode> elementChildren = parentNode.getElementChildren(); List<Integer> attrIndices = new ArrayList<Integer>(); List<Integer> nameSpaceIndices = new ArrayList<Integer>(); List<Integer> elementIndices = new ArrayList<Integer>(); final Iterator iterator = selection.iterator(); while (iterator.hasNext()) { final Object next = iterator.next(); if (next instanceof Attribute) { if (attrChildren.contains(next)) { attrIndices.add(attrChildren.indexOf(next)); } } else if (next instanceof NameSpaceNode) { if (nameSpaceChildren.contains(next)) { nameSpaceIndices.add(nameSpaceChildren.indexOf(next)); } } else if (next instanceof Element) { if (elementChildren.contains(next)) { elementIndices.add(elementChildren.indexOf(next)); } } } Collections.sort(attrIndices); Collections.sort(nameSpaceIndices); Collections.sort(elementIndices); swapElements(attrChildren, attrIndices); swapElements(nameSpaceChildren, nameSpaceIndices); swapElements(elementChildren, elementIndices); treeViewer.refresh(parentNode); treeViewer.expandAll(); manager.getUiManager().getFoxUI().redrawLinkers(); treeViewer.setSelection(selection); } }