package krasa.frameswitcher; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; import com.intellij.ui.CheckBoxList; import com.intellij.util.Function; import javax.swing.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * @author Vojtech Krasa */ public class CloseProjectsForm { private JPanel root; private CheckBoxList<Project> list; public CloseProjectsForm(Project project) { Project[] openProjects = ProjectManager.getInstance().getOpenProjects(); list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); //IJ 12 compatibility list.setItems(Arrays.asList(openProjects), new Function<Project, String>() { @Override public String fun(Project project) { return project.getName(); } }); for (int i = 0; i < openProjects.length; i++) { Project openProject = openProjects[i]; if (openProject != project) { list.setItemSelected(openProject, true); } } } public JPanel getRoot() { return root; } public List<Project> getCheckProjects() { DefaultListModel model = (DefaultListModel) list.getModel(); final ArrayList<Project> selected = new ArrayList<Project>(); Object[] objects = model.toArray(); for (int i = 0; i < objects.length; i++) { Object object = objects[i]; final JCheckBox cb = (JCheckBox) object; if (cb.isSelected()) { //IJ 12 compatibility selected.add((Project) list.getItemAt(i)); } } return selected; } }