@CheckForNull public String getSelectedProjectKey() { RemoteProject project = (RemoteProject) projectList.getSelectedValue(); return project == null ? null : project.getKey(); }
@Override protected void customizeCellRenderer(JList list, @Nullable RemoteProject value, int index, boolean selected, boolean hasFocus) { if (value == null) { // should never happen return; } SimpleTextAttributes attrs = SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES; append(value.getName(), attrs, true); // it is not working: appendTextPadding append(" "); if (index >= 0) { append("(" + value.getKey() + ")", SimpleTextAttributes.GRAY_ATTRIBUTES, false); } } }
private void setProjectsInList(Collection<RemoteProject> projects) { Comparator<RemoteProject> projectComparator = (o1, o2) -> { int c1 = o1.getName().compareToIgnoreCase(o2.getName()); if (c1 != 0) { return c1; } return o1.getKey().compareToIgnoreCase(o2.getKey()); }; List<RemoteProject> sortedProjects = projects.stream() .sorted(projectComparator) .collect(Collectors.toList()); RemoteProject selected = null; if (lastSelectedProjectKey != null) { selected = sortedProjects.stream() .filter(project -> lastSelectedProjectKey.equals(project.getKey())) .findAny().orElse(null); } CollectionListModel<RemoteProject> projectListModel = new CollectionListModel<>(sortedProjects); projectList.setModel(projectListModel); projectList.setCellRenderer(new ProjectListRenderer()); setSelectedProject(selected); }
public List<RemoteSonarProject> getBoundRemoteProjects(IProgressMonitor monitor) { return ProjectsProviderUtils.allProjects().stream() .filter(ISonarLintProject::isOpen) .map(SonarLintCorePlugin::loadConfig) .map(SonarLintProjectConfiguration::getProjectBinding) .flatMap(o -> o.isPresent() ? Stream.of(o.get()) : Stream.empty()) .filter(c -> c.serverId().equals(id)) .map(ProjectBinding::projectKey) .distinct() .sorted() .map(projectKey -> { Optional<RemoteProject> remoteProject = getRemoteProject(projectKey, monitor); if (remoteProject.isPresent()) { return new RemoteSonarProject(id, remoteProject.get().getKey(), remoteProject.get().getName()); } else { return new RemoteSonarProject(id, projectKey, "<unknown>"); } }) .collect(toList()); }
private void createProjectList() { projectList = new JBList(); projectList.setEmptyText("No projects found in the selected SonarQube Server"); projectList.setCellRenderer(new ProjectListRenderer()); projectList.addListSelectionListener(new ProjectItemListener()); projectList.addMouseListener(new ProjectMouseListener()); projectList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); projectList.setVisibleRowCount(10); projectList.setBorder(IdeBorderFactory.createBorder()); Convertor<Object, String> convertor = o -> { RemoteProject project = (RemoteProject) o; return project.getName() + " " + project.getKey(); }; new ListSpeedSearch(projectList, convertor); scrollPane = new JBScrollPane(projectList); }