/** * Checks if the JAR file can be overwritten. If the JAR package setting does not allow to * overwrite the JAR then a dialog will ask the user again. * * @param parent the parent for the dialog, or <code>null</code> if no dialog should be presented * @return <code>true</code> if it is OK to create the JAR */ protected boolean canCreateJar(Shell parent) { File file = fJarPackage.getAbsolutePharLocation().toFile(); if (file.exists()) { if (!file.canWrite()) return false; if (fJarPackage.allowOverwrite()) return true; return parent != null && PharUIUtil.askForOverwritePermission( parent, fJarPackage.getAbsolutePharLocation(), true); } // Test if directory exists String path = file.getAbsolutePath(); int separatorIndex = path.lastIndexOf(File.separator); if (separatorIndex == -1) // i.e.- default directory, which is fine return true; File directory = new File(path.substring(0, separatorIndex)); if (!directory.exists()) { if (PharUIUtil.askToCreateDirectory(parent, directory)) return directory.mkdirs(); else return false; } return true; }
/** {@inheritDoc} */ public void open(PharPackage jarPackage, Shell displayShell, MultiStatus statusMsg) throws CoreException { super.open(jarPackage, displayShell, statusMsg); fJarPackage = jarPackage; Assert.isTrue( fJarPackage.isValid(), "The PHAR package specification is invalid"); // $NON-NLS-1$ if (!canCreateJar(displayShell)) throw new OperationCanceledException(); try { fileExporter = PharExportHelper.createFileExporter(fJarPackage); } catch (IOException ex) { throw PharUIUtil.createCoreException(ex.getLocalizedMessage(), ex); } // fJarWriter= new PharWriter3(fJarPackage, displayShell); }
private void registerInWorkspaceIfNeeded() { IPath jarPath = fJarPackage.getAbsolutePharLocation(); IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects(); for (int i = 0; i < projects.length; i++) { IProject project = projects[i]; // The Jar is always put into the local file system. So it can only be // part of a project if the project is local as well. So using getLocation // is currently save here. IPath projectLocation = project.getLocation(); if (projectLocation != null && projectLocation.isPrefixOf(jarPath)) { try { jarPath = jarPath.removeFirstSegments(projectLocation.segmentCount()); jarPath = jarPath.removeLastSegments(1); IResource containingFolder = project.findMember(jarPath); if (containingFolder != null && containingFolder.isAccessible()) containingFolder.refreshLocal(IResource.DEPTH_ONE, null); } catch (CoreException ex) { // don't refresh the folder but log the problem PHPUiPlugin.log(ex); } } } }