private CPElement removePathFromResourceGroups(CPElement element, List<CPElementGroup> groups) { CPElement Inherited = element.getInherited(); CPElementGroup resGroup = element.getParent(); resGroup.removeChild(element); if (Inherited != null) { // applied exclusion to orig. IPath exclude = element.getPath().removeFirstSegments(Inherited.getPath().segmentCount()); IPath[] exclusions = (IPath[]) Inherited.getAttribute(CPElement.EXCLUSION); IPath[] newExlusions = new IPath[exclusions.length + 1]; System.arraycopy(exclusions, 0, newExlusions, 0, exclusions.length); newExlusions[exclusions.length] = exclude; Inherited.setAttribute(CPElement.EXCLUSION, newExlusions); return null; } // remove all inherited for (int i = 0; i < groups.size(); i++) { CPElementGroup group = groups.get(i); CPElement elements[] = group.getChildren(element.getEntryKind()); for (CPElement element2 : elements) { if (element2.getInherited() == element) { group.removeChild(element2); break; } } } return element; }
private void updatePathOnResourceGroups(CPElement element, List<CPElementGroup> groups) { CPElementGroup parent = element.getParent(); IPath resPath = element.getPath(); IPath[] exclusions = (IPath[]) element.getAttribute(CPElement.EXCLUSION); for (int i = 0; i < groups.size(); i++) { CPElementGroup group = groups.get(i); if (group != parent) { boolean found = false; CPElement[] elements = group.getChildren(element.getEntryKind()); for (CPElement element2 : elements) { if (element2.getInherited() == element) { found = true; if (!CoreModelUtil.isExcludedPath( group.getResource().getFullPath().removeFirstSegments(resPath.segmentCount()), exclusions)) { group.replaceChild( element2, new CPElement(element, group.getPath(), group.getResource())); } else { group.removeChild(element2); } break; } } if (!found) { addPathToResourceGroup(element, parent, group); } } } }
private boolean canMoveDown(List<?> selected) { if (!canMove(selected)) { return false; } CPElement last = (CPElement) selected.get(selected.size() - 1); CPElementGroup parent = last.getParent(); CPElement children[] = parent.getChildren(last.getEntryKind()); int indx = Arrays.asList(children).indexOf(last); if (indx >= children.length - 1 || children[indx + 1].getInherited() != null) { return false; } return true; }
private boolean canMoveUp(List<?> selected) { if (!canMove(selected)) { return false; } CPElement first = (CPElement) selected.get(0); CPElementGroup parent = first.getParent(); CPElement children[] = parent.getChildren(first.getEntryKind()); int indx = Arrays.asList(children).indexOf(first); if (indx <= 0) { return false; } return true; }
private void removeEntry() { List<?> selected = getSelection(); Object elem = selected.get(0); if (elem instanceof CPElement) { CPElement element = (CPElement) elem; CPElementGroup parent = element.getParent(); if (removePathFromResourceGroups(element, fIncludeSymPathsList.getElements()) == null) { updatePathOnResourceGroups(element.getInherited(), fIncludeSymPathsList.getElements()); } fIncludeSymPathsList.refresh(); fIncludeSymPathsList.selectElements(new StructuredSelection(parent)); } else if (elem instanceof CPElementAttribute) { CPElementAttribute attrib = (CPElementAttribute) elem; String key = attrib.getKey(); Object value = key.equals(CPElement.EXCLUSION) ? new Path[0] : null; attrib.getParent().setAttribute(key, value); updatePathOnResourceGroups(attrib.getParent(), fIncludeSymPathsList.getElements()); fIncludeSymPathsList.refresh(); } updateStatus(); }