예제 #1
0
  /**
   * 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;
  }
예제 #2
0
  /** {@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);
  }
예제 #3
0
 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);
       }
     }
   }
 }