예제 #1
0
 public LogicalViewChildren(
     AntProjectHelper helper, PropertyEvaluator evaluator, Project project) {
   assert helper != null;
   this.helper = helper;
   projectDir = helper.getProjectDirectory();
   this.evaluator = evaluator;
   this.project = project;
 }
 private void btnDefinitionActionPerformed(
     java.awt.event.ActionEvent evt) { // GEN-FIRST:event_btnDefinitionActionPerformed
   File f = FileUtil.toFile(helper.getProjectDirectory()); // NOI18N
   String curr = SharableLibrariesUtils.browseForLibraryLocation(getLibraryLocation(), this, f);
   if (curr != null) {
     setLibraryLocation(curr);
   }
 } // GEN-LAST:event_btnDefinitionActionPerformed
  @Messages({
    "WARN_MakeSharable.absolutePath=<html>Please make sure that the absolute path in the Libraries Folder field is valid for all users.<html>",
    "WARN_makeSharable.relativePath=<html>Please make sure that the relative path in the Libraries Folder field is valid for all users.<html>"
  })
  boolean isValidPanel() {
    String location = getLibraryLocation();
    boolean wrong = false;
    if (new File(location).isAbsolute()) {
      settings.putProperty(WizardDescriptor.PROP_ERROR_MESSAGE, WARN_MakeSharable_absolutePath());
      wrong = true;
    } else {
      File projectLoc = FileUtil.toFile(helper.getProjectDirectory());
      File libLoc = PropertyUtils.resolveFile(projectLoc, location);
      if (!CollocationQuery.areCollocated(projectLoc, libLoc)) {
        settings.putProperty(WizardDescriptor.PROP_ERROR_MESSAGE, WARN_makeSharable_relativePath());
        wrong = true;
      }
    }
    if (!wrong) {
      settings.putProperty(WizardDescriptor.PROP_ERROR_MESSAGE, null);
    }

    return true;
  }
  public Set /*<FileObject>*/ instantiate() throws IOException {

    Set<FileObject> resultSet = new LinkedHashSet<FileObject>();
    File dirPr = (File) wiz.getProperty("projdir"); // NOI18N
    if (dirPr != null) {
      dirPr = FileUtil.normalizeFile(dirPr);
    }

    String name = (String) wiz.getProperty("name"); // NOI18N

    final String activePlatform = (String) wiz.getProperty("activePlatform"); // NOI18N
    final String activeDevice = (String) wiz.getProperty("activeDevice"); // NOI18N
    final String activeProfile = (String) wiz.getProperty("activeProfile"); // NOI18N
    Properties props = (Properties) wiz.getProperty("additionalProperties"); // NOI18N
    final FileObject template = Templates.getTemplate(wiz);
    PlatformSelectionPanel.PlatformDescription pd =
        (PlatformSelectionPanel.PlatformDescription)
            wiz.getProperty(PlatformSelectionPanel.PLATFORM_DESCRIPTION);
    AntProjectHelper h =
        J2MEProjectGenerator.createProject(
            dirPr,
            name,
            pd,
            new J2MEProjectGenerator.ProjectGeneratorCallback() {
              public void doPostGeneration(
                  Project p,
                  final AntProjectHelper h,
                  FileObject dir,
                  File projectLocationFile,
                  ArrayList<String> configurations)
                  throws IOException {

                createManifest(dir, MANIFEST_FILE);
                unZipFile(template.getInputStream(), dir);

                final FileObject lib = dir.getFileObject("lib");
                if (lib != null) {
                  final ReferenceHelper refHelper =
                      (ReferenceHelper) p.getLookup().lookup(ReferenceHelper.class);
                  try {
                    ProjectManager.mutex()
                        .writeAccess(
                            new Mutex.ExceptionAction() {
                              public Object run() throws Exception {
                                final List<String> entries = new ArrayList<String>();
                                final FileObject[] libs = lib.getChildren();
                                for (int i = 0; i < libs.length; i++) {
                                  String ref =
                                      refHelper.createForeignFileReference(
                                          FileUtil.normalizeFile(FileUtil.toFile(libs[i])), null);
                                  entries.add(ref + ((i < libs.length - 1) ? ";" : ""));
                                }

                                EditableProperties editableProps =
                                    h.getProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH);
                                editableProps.setProperty(
                                    "extra.classpath", entries.toArray(new String[entries.size()]));
                                editableProps.setProperty(
                                    "libs.classpath", entries.toArray(new String[entries.size()]));
                                h.putProperties(
                                    AntProjectHelper.PROJECT_PROPERTIES_PATH,
                                    editableProps); // #47609
                                return null;
                              }
                            });
                  } catch (MutexException me) {
                    ErrorManager.getDefault().notify(me);
                  }
                }

                final FileObject res = dir.getFileObject("resources");
                if (res != null) {
                  final ReferenceHelper refHelper =
                      (ReferenceHelper) p.getLookup().lookup(ReferenceHelper.class);
                  try {
                    ProjectManager.mutex()
                        .writeAccess(
                            new Mutex.ExceptionAction() {
                              public Object run() throws Exception {
                                String ref =
                                    ";"
                                        + refHelper.createForeignFileReference(
                                            FileUtil.normalizeFile(FileUtil.toFile(res)), null);

                                EditableProperties editableProps =
                                    h.getProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH);
                                editableProps.setProperty(
                                    "libs.classpath",
                                    editableProps.getProperty("libs.classpath") + ref);
                                h.putProperties(
                                    AntProjectHelper.PROJECT_PROPERTIES_PATH,
                                    editableProps); // #47609
                                return null;
                              }
                            });
                  } catch (MutexException me) {
                    ErrorManager.getDefault().notify(me);
                  }
                }

                Properties parsed = parseRicohAdditionalResources(dir);
                if (parsed != null) {
                  Iterator entries = parsed.entrySet().iterator();
                  while (entries.hasNext()) {
                    final Map.Entry elem = (Map.Entry) entries.next();
                    final Object value = elem.getValue();
                    if (value instanceof File) {
                      final ReferenceHelper refHelper =
                          (ReferenceHelper) p.getLookup().lookup(ReferenceHelper.class);
                      if (value != null && ((File) value).exists()) {
                        try {
                          ProjectManager.mutex()
                              .writeAccess(
                                  new Mutex.ExceptionAction() {
                                    public Object run() throws Exception {
                                      String ref =
                                          refHelper.createForeignFileReference(
                                              FileUtil.normalizeFile((File) value), null);
                                      EditableProperties props =
                                          h.getProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH);
                                      props.put((String) elem.getKey(), ref);
                                      h.putProperties(
                                          AntProjectHelper.PROJECT_PROPERTIES_PATH,
                                          props); // #47609
                                      return null;
                                    }
                                  });
                        } catch (MutexException me) {
                          ErrorManager.getDefault().notify(me);
                        }
                      }
                    } else {
                      EditableProperties editableProps =
                          h.getProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH);
                      editableProps.setProperty(
                          (String) elem.getKey(), String.valueOf(elem.getValue()));
                      h.putProperties(
                          AntProjectHelper.PROJECT_PROPERTIES_PATH, editableProps); // #47609
                    }
                  }
                }

                JavaPlatform[] platforms =
                    JavaPlatformManager.getDefault()
                        .getPlatforms(
                            activePlatform,
                            new Specification(CDCPlatform.PLATFORM_CDC, null)); // NOI18N
                if (platforms.length != 0) {
                  CDCPlatform cdcplatform = (CDCPlatform) platforms[0];
                  final EditableProperties ep =
                      h.getProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH);
                  ep.setProperty(
                      CDCPropertiesDescriptor.APPLICATION_NAME,
                      p.getProjectDirectory().getNameExt());
                  ep.setProperty(
                      DefaultPropertiesDescriptor.PLATFORM_ACTIVE,
                      cdcplatform.getAntName()); // NOI18N
                  ep.setProperty(
                      DefaultPropertiesDescriptor.PLATFORM_ACTIVE_DESCRIPTION,
                      cdcplatform.getDisplayName()); // NOI18N
                  ep.setProperty(DefaultPropertiesDescriptor.PLATFORM_TRIGGER, "CDC"); // NOI18N
                  ep.setProperty(
                      DefaultPropertiesDescriptor.PLATFORM_TYPE, cdcplatform.getType()); // NOI18N
                  String classVersion = cdcplatform.getClassVersion();
                  ep.setProperty(
                      DefaultPropertiesDescriptor.PLATFORM_DEVICE, activeDevice); // NOI18N
                  ep.setProperty(
                      DefaultPropertiesDescriptor.PLATFORM_PROFILE, activeProfile); // NOI18N
                  // add bootclasspath
                  NewCDCProjectWizardIterator.generatePlatformProperties(
                      cdcplatform, activeDevice, activeProfile, ep); // NOI18N
                  ep.setProperty(
                      DefaultPropertiesDescriptor.JAVAC_SOURCE,
                      classVersion != null ? classVersion : "1.2"); // NOI18N
                  ep.setProperty(
                      DefaultPropertiesDescriptor.JAVAC_TARGET,
                      classVersion != null ? classVersion : "1.2"); // NOI18N
                  h.putProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH, ep);
                } else {
                  throw new IllegalArgumentException("No CDC platform installed"); // NOI18N
                }
              }
            });

    resultSet.add(h.getProjectDirectory());
    dirPr = (dirPr != null) ? dirPr.getParentFile() : null;
    if (dirPr != null && dirPr.exists()) {
      ProjectChooser.setProjectsFolder(dirPr);
    }
    return resultSet;
  }