/* * (non-Javadoc) * * @see * org.eclipse.ecf.core.IContainerListener#handleEvent(org.eclipse.ecf * .core.events.IContainerEvent) */ public void handleEvent(IContainerEvent event) { final IContainerManager containerManager = (IContainerManager) ContainerFactory.getDefault(); if (containerManager == null) return; IContainer container = containerManager.getContainer(event.getLocalContainerID()); if (container == null) return; if (event instanceof IContainerConnectedEvent || event instanceof IContainerDisconnectedEvent) { // connected IChannelContainerAdapter cca = (IChannelContainerAdapter) container.getAdapter(IChannelContainerAdapter.class); if (cca == null) return; ID containerID = container.getID(); if (event instanceof IContainerConnectedEvent) { try { if (!TeamSynchronization.contains(containerID)) { TeamSynchronization.put(containerID, new WorkbenchAwareRemoteShare(cca)); } } catch (ECFException e) { TeamSynchronization.log( "RemoteShare could not be added or created", e); // $NON-NLS-1$ } } else if (event instanceof IContainerDisconnectedEvent) { // disconnected TeamSynchronization.removeShare(containerID); } } else if (event instanceof IContainerDisposeEvent) { containerManager.removeListener(containerManagerListener); container.removeListener(containerListener); } }
/** * Final check before the actual refactoring * * @return status * @throws OperationCanceledException */ public RefactoringStatus checkFinalConditions() throws OperationCanceledException { RefactoringStatus status = new RefactoringStatus(); IContainer destination = fProcessor.getDestination(); IProject sourceProject = fProcessor.getSourceSelection()[0].getProject(); IProject destinationProject = destination.getProject(); if (sourceProject != destinationProject) status.merge(MoveUtils.checkMove(phpFiles, sourceProject, destination)); // Checks if one of the resources already exists with the same name in // the destination IPath dest = fProcessor.getDestination().getFullPath(); IResource[] sourceResources = fProcessor.getSourceSelection(); for (IResource element : sourceResources) { String newFilePath = dest.toOSString() + File.separatorChar + element.getName(); IResource resource = ResourcesPlugin.getWorkspace().getRoot().findMember(new Path(newFilePath)); if (resource != null && resource.exists()) { status.merge( RefactoringStatus.createFatalErrorStatus( NLS.bind( PhpRefactoringCoreMessages.getString("MoveDelegate.6"), element.getName(), dest.toOSString()))); // $NON-NLS-1$ } } return status; }
private void copyFile(final String from, final IContainer container, final String fileName) throws CoreException { IPath path = new Path(fileName); IFile file = container.getFile(path); if (!file.exists()) { file.create(getFileStream(from), true, null); } }
public void createWebInf() throws CoreException { if (webInfDir == null) { IPath webInfPath = new Path(WEB_INF_PATH); webInfDir = rootFolder.getFolder(webInfPath); if (!webInfDir.exists()) { webInfDir.create(true, false, null); refreshWebInf(); } } }
/** * The worker method. It will find the container, create the file if missing or just replace its * contents, and open the editor on the newly created file. */ private void doFinish(String containerName, String fileName, IProgressMonitor monitor) throws CoreException { // create a sample file monitor.beginTask("Creating " + fileName, 2); IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); IResource resource = root.findMember(new Path(containerName)); if (!resource.exists() || !(resource instanceof IContainer)) { throwCoreException("Container \"" + containerName + "\" does not exist."); } IContainer container = (IContainer) resource; final IFile file = container.getFile(new Path(fileName)); try { InputStream stream = openContentStream(); if (file.exists()) { file.setContents(stream, true, true, monitor); } else { file.create(stream, true, monitor); } stream.close(); } catch (IOException e) { } monitor.worked(1); monitor.setTaskName("Opening file for editing..."); getShell() .getDisplay() .asyncExec( new Runnable() { public void run() { IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); try { IDE.openEditor(page, file, true); } catch (PartInitException e) { } } }); monitor.worked(1); }
protected void removeClassFile(IPath typePath, IContainer outputFolder) throws CoreException { if (typePath.lastSegment().indexOf('$') == -1) { // is not a nested type this.newState.removeQualifiedTypeName(typePath.toString()); // add dependents even when the type thinks it does not exist to be on the safe side if (JavaBuilder.DEBUG) System.out.println("Found removed type " + typePath); // $NON-NLS-1$ addDependentsOf( typePath, true); // when member types are removed, their enclosing type is structurally changed } IFile classFile = outputFolder.getFile(typePath.addFileExtension(SuffixConstants.EXTENSION_class)); if (classFile.exists()) { if (JavaBuilder.DEBUG) System.out.println("Deleting class file of removed type " + typePath); // $NON-NLS-1$ classFile.delete(IResource.FORCE, null); } }
/* * (non-Javadoc) * * @see * org.eclipse.ecf.core.IContainerManagerListener#containerRemoved(org * .eclipse.ecf.core.IContainer) */ public void containerRemoved(IContainer container) { container.removeListener(containerListener); }
/* * (non-Javadoc) * * @see * org.eclipse.ecf.core.IContainerManagerListener#containerAdded(org * .eclipse.ecf.core.IContainer) */ public void containerAdded(IContainer container) { IChannelContainerAdapter cca = (IChannelContainerAdapter) container.getAdapter(IChannelContainerAdapter.class); if (cca == null) return; container.addListener(containerListener); }
protected void cleanOutputFolders(boolean copyBack) throws CoreException { boolean deleteAll = JavaCore.CLEAN.equals( this.javaBuilder.javaProject.getOption( JavaCore.CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER, true)); if (deleteAll) { if (this.javaBuilder.participants != null) for (int i = 0, l = this.javaBuilder.participants.length; i < l; i++) this.javaBuilder.participants[i].cleanStarting(this.javaBuilder.javaProject); ArrayList visited = new ArrayList(this.sourceLocations.length); for (int i = 0, l = this.sourceLocations.length; i < l; i++) { this.notifier.subTask( Messages.bind( Messages.build_cleaningOutput, this.javaBuilder.currentProject.getName())); ClasspathMultiDirectory sourceLocation = this.sourceLocations[i]; if (sourceLocation.hasIndependentOutputFolder) { IContainer outputFolder = sourceLocation.binaryFolder; if (!visited.contains(outputFolder)) { visited.add(outputFolder); IResource[] members = outputFolder.members(); for (int j = 0, m = members.length; j < m; j++) { IResource member = members[j]; if (!member.isDerived()) { member.accept( new IResourceVisitor() { public boolean visit(IResource resource) throws CoreException { resource.setDerived(true, null); return resource.getType() != IResource.FILE; } }); } member.delete(IResource.FORCE, null); } } this.notifier.checkCancel(); if (copyBack) copyExtraResourcesBack(sourceLocation, true); } else { boolean isOutputFolder = sourceLocation.sourceFolder.equals(sourceLocation.binaryFolder); final char[][] exclusionPatterns = isOutputFolder ? sourceLocation.exclusionPatterns : null; // ignore exclusionPatterns if output folder == another source folder... // not this one final char[][] inclusionPatterns = isOutputFolder ? sourceLocation.inclusionPatterns : null; // ignore inclusionPatterns if output folder == another source folder... // not this one sourceLocation.binaryFolder.accept( new IResourceProxyVisitor() { public boolean visit(IResourceProxy proxy) throws CoreException { if (proxy.getType() == IResource.FILE) { if (org.eclipse.jdt.internal.compiler.util.Util.isClassFileName( proxy.getName())) { IResource resource = proxy.requestResource(); if (exclusionPatterns != null || inclusionPatterns != null) if (Util.isExcluded( resource.getFullPath(), inclusionPatterns, exclusionPatterns, false)) return false; if (!resource.isDerived()) resource.setDerived(true, null); resource.delete(IResource.FORCE, null); } return false; } if (exclusionPatterns != null && inclusionPatterns == null) // must walk children if inclusionPatterns != null if (Util.isExcluded(proxy.requestFullPath(), null, exclusionPatterns, true)) return false; BatchImageBuilder.this.notifier.checkCancel(); return true; } }, IResource.NONE); this.notifier.checkCancel(); } this.notifier.checkCancel(); } } else if (copyBack) { for (int i = 0, l = this.sourceLocations.length; i < l; i++) { ClasspathMultiDirectory sourceLocation = this.sourceLocations[i]; if (sourceLocation.hasIndependentOutputFolder) copyExtraResourcesBack(sourceLocation, false); this.notifier.checkCancel(); } } // GROOVY start LanguageSupportFactory.getEventHandler() .handle(this.javaBuilder.javaProject, "cleanOutputFolders"); // GROOVY end }