/** * @see * edu.buffalo.cse.green.RefactorHandler#handleMove(edu.buffalo.cse.green.editor.model.RootModel, * org.eclipse.jdt.core.IJavaElement, org.eclipse.jdt.core.IJavaElement) */ public void handleMove(RootModel root, E sourceElement, E targetElement) { root.changeProjectElement(sourceElement, targetElement); try { List<IJavaElement> packages = root.getElementsOfKind(PACKAGE_FRAGMENT); // look through packages to match up source and destination elements for (IJavaElement packElement : packages) { IPackageFragment packFrag = (IPackageFragment) packElement; if (JavaModelListener.sameElements( packFrag.getAncestor(JAVA_PROJECT), sourceElement.getPrimaryElement())) { for (IPackageFragment packFrags : targetElement.getPackageFragments()) { // check for the same name of the two packages if (packFrag.getElementName().equals(packFrags.getElementName())) { PackageRefactorHandler.instance().handleMove(root, packFrag, packFrags); } } } } root.dispose(); } catch (JavaModelException e) { e.printStackTrace(); } }
public void initFromSelection() { IJavaElement je = getSelectedJavaElement(selection); if (je instanceof IJavaProject) { IJavaProject jp = (IJavaProject) je; if (jp.isOpen()) { // default to the first source dir // we find in the selected project try { for (IPackageFragmentRoot pfr : jp.getAllPackageFragmentRoots()) { if (!pfr.isExternal() && !pfr.isArchive()) { je = pfr; break; } } } catch (JavaModelException e) { } } } if (je instanceof IPackageFragmentRoot) { sourceDir = (IPackageFragmentRoot) je; packageFragment = sourceDir.getPackageFragment(""); packageName = packageFragment.getElementName(); } else if (je instanceof IPackageFragment) { packageFragment = (IPackageFragment) je; packageName = packageFragment.getElementName(); sourceDir = (IPackageFragmentRoot) packageFragment.getAncestor(PACKAGE_FRAGMENT_ROOT); } }
protected boolean initialize(Object element) { try { if (element instanceof IPackageFragment) { IPackageFragment fragment = (IPackageFragment) element; if (!fragment.containsJavaResources()) return false; IJavaProject javaProject = (IJavaProject) fragment.getAncestor(IJavaElement.JAVA_PROJECT); IProject project = javaProject.getProject(); if (WorkspaceModelManager.isPluginProject(project)) { fProject = javaProject.getProject(); fElements = new HashMap(); fElements.put(fragment, getArguments().getNewName()); return true; } } } catch (JavaModelException e) { } return false; }
public IJavaElement getElementAtConsideringSibling(int position) throws JavaModelException { IPackageFragment fragment = (IPackageFragment) getParent(); PackageFragmentRoot root = (PackageFragmentRoot) fragment.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); SourceMapper mapper = root.getSourceMapper(); if (mapper == null) { return null; } else { int index = this.name.indexOf('$'); int prefixLength = index < 0 ? this.name.length() : index; IType type = null; int start = -1; int end = Integer.MAX_VALUE; IJavaElement[] children = fragment.getChildren(); for (int i = 0; i < children.length; i++) { String childName = children[i].getElementName(); int childIndex = childName.indexOf('$'); int childPrefixLength = childIndex < 0 ? childName.indexOf('.') : childIndex; if (prefixLength == childPrefixLength && this.name.regionMatches(0, childName, 0, prefixLength)) { IClassFile classFile = (IClassFile) children[i]; // ensure this class file's buffer is open so that source ranges are computed classFile.getBuffer(); SourceRange range = mapper.getSourceRange(classFile.getType()); if (range == SourceMapper.UNKNOWN_RANGE) continue; int newStart = range.getOffset(); int newEnd = newStart + range.getLength() - 1; if (newStart > start && newEnd < end && newStart <= position && newEnd >= position) { type = classFile.getType(); start = newStart; end = newEnd; } } } if (type != null) { return findElement(type, position, mapper); } return null; } }