/** 读取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(); }