コード例 #1
0
  /** 读取project目录并完成初始化 */
  private void init() {
    contentBox.removeAll(); // clear
    projectPanels.clear(); // clear
    publicLibraries.clear(); // clear

    File projectsDir = new File("projects");
    if (!projectsDir.exists()) projectsDir.mkdir();
    File libraryDir = new File("libProjects");
    if (!libraryDir.exists()) libraryDir.mkdir();

    syncProjectConfig();

    File[] libFiles = libraryDir.listFiles(new ProjectFileFilter());
    File[] projectFiles = projectsDir.listFiles(new ProjectFileFilter());

    List<File> projects = new ArrayList<File>();
    if (projectFiles != null) projects.addAll(Arrays.asList(projectFiles));
    if (libFiles != null) projects.addAll(Arrays.asList(libFiles));

    EditProjectHandler editHandler = new EditProjectHandler();
    for (File projectFile : projects) {
      if (projectFile.getName().equals(".project")) continue; // 加强容错性
      BatchPack pack = new BatchPack(projectFile.getAbsolutePath());
      String fullName = projectFile.getName();
      String fileName = fullName.substring(0, fullName.lastIndexOf('.'));
      if (pack.needImport()) {
        batchButton.setEnabled(false);
        progressBar.setString("正在同步导入" + fileName);
        progressBar.setIndeterminate(true);
        pack.importFromSVN();
        records.setProjectVersion(
            projectFile.getAbsolutePath(), pack.getSVNVersion()); // ensure latest version
        records.saveRecords();
        progressBar.setIndeterminate(false);
        progressBar.setString("");
        batchButton.setEnabled(true);
      }
      ProjectPanel projectPanel = new ProjectPanel(pack, fileName);
      projectPanel.setEditProjectListener(editHandler);
      projectPanel.updateUI();
      projectPanels.add(projectPanel);
      contentBox.add(projectPanel);
    }

    // prepare library
    for (ProjectPanel panel : projectPanels) {
      BatchPack pack = panel.getProjectBatch();
      if (!pack.isLibrary()) continue;
      Attributes attributes = pack.getAttributes();
      String projectPath = attributes.getProperty("projectPath");
      String projectName = new File(projectPath).getName();
      publicLibraries.put(projectName, projectPath);
    }
    // modify project to reference public library
    for (ProjectPanel panel : projectPanels) {
      prepareProjectPanel(panel);
    }
    contentBox.updateUI();
  }