Skip to content

Commit e65f035

Browse files
BananeweizenCalixte
authored andcommitted
Improve blueprint selection dialog
Use a more specialized dialog to select the source project for copying a checkstyle configuration. This brings several benefits: * allows filtering the projects via search mask * automatically sets selection to first project in list * filter out closed projects (or otherwise inaccessible projects) * enable OK button only if there is a selection
1 parent a9340bc commit e65f035

File tree

1 file changed

+21
-22
lines changed

1 file changed

+21
-22
lines changed

net.sf.eclipsecs.ui/src/net/sf/eclipsecs/ui/actions/ConfigureProjectFromBluePrintAction.java

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -20,36 +20,36 @@
2020

2121
package net.sf.eclipsecs.ui.actions;
2222

23-
import java.util.ArrayList;
23+
import java.util.Arrays;
2424
import java.util.Collection;
25-
import java.util.Collections;
2625
import java.util.List;
27-
28-
import net.sf.eclipsecs.core.config.CheckConfigurationWorkingCopy;
29-
import net.sf.eclipsecs.core.config.ICheckConfiguration;
30-
import net.sf.eclipsecs.core.config.ICheckConfigurationWorkingSet;
31-
import net.sf.eclipsecs.core.projectconfig.IProjectConfiguration;
32-
import net.sf.eclipsecs.core.projectconfig.ProjectConfigurationFactory;
33-
import net.sf.eclipsecs.core.projectconfig.ProjectConfigurationWorkingCopy;
34-
import net.sf.eclipsecs.core.util.CheckstylePluginException;
35-
import net.sf.eclipsecs.ui.CheckstyleUIPlugin;
36-
import net.sf.eclipsecs.ui.Messages;
26+
import java.util.stream.Collectors;
3727

3828
import org.eclipse.core.resources.IProject;
29+
import org.eclipse.core.resources.ResourcesPlugin;
3930
import org.eclipse.core.resources.WorkspaceJob;
4031
import org.eclipse.core.runtime.IProgressMonitor;
4132
import org.eclipse.core.runtime.IStatus;
4233
import org.eclipse.core.runtime.Status;
4334
import org.eclipse.jface.action.IAction;
44-
import org.eclipse.jface.viewers.ArrayContentProvider;
4535
import org.eclipse.jface.viewers.ISelection;
4636
import org.eclipse.jface.viewers.IStructuredSelection;
4737
import org.eclipse.jface.window.Window;
4838
import org.eclipse.ui.IObjectActionDelegate;
4939
import org.eclipse.ui.IWorkbenchPart;
50-
import org.eclipse.ui.dialogs.ListDialog;
40+
import org.eclipse.ui.dialogs.ElementListSelectionDialog;
5141
import org.eclipse.ui.model.WorkbenchLabelProvider;
5242

43+
import net.sf.eclipsecs.core.config.CheckConfigurationWorkingCopy;
44+
import net.sf.eclipsecs.core.config.ICheckConfiguration;
45+
import net.sf.eclipsecs.core.config.ICheckConfigurationWorkingSet;
46+
import net.sf.eclipsecs.core.projectconfig.IProjectConfiguration;
47+
import net.sf.eclipsecs.core.projectconfig.ProjectConfigurationFactory;
48+
import net.sf.eclipsecs.core.projectconfig.ProjectConfigurationWorkingCopy;
49+
import net.sf.eclipsecs.core.util.CheckstylePluginException;
50+
import net.sf.eclipsecs.ui.CheckstyleUIPlugin;
51+
import net.sf.eclipsecs.ui.Messages;
52+
5353
/**
5454
* Action to configure one ore more projects at once by using another project as
5555
* blueprint.
@@ -79,18 +79,17 @@ public void selectionChanged(IAction action, ISelection selection) {
7979

8080
@Override
8181
public void run(IAction action) {
82-
83-
IProject[] projects = CheckstyleUIPlugin.getWorkspace().getRoot().getProjects();
84-
List<IProject> filteredProjects = new ArrayList<>();
85-
Collections.addAll(filteredProjects, projects);
82+
List<IProject> filteredProjects = Arrays
83+
.stream(ResourcesPlugin.getWorkspace().getRoot().getProjects())
84+
.filter(IProject::isAccessible)
85+
.collect(Collectors.toList());
8686

8787
filteredProjects.removeAll(mSelectedProjects);
8888

89-
ListDialog dialog = new ListDialog(mPart.getSite().getShell());
89+
ElementListSelectionDialog dialog = new ElementListSelectionDialog(mPart.getSite().getShell(),
90+
new WorkbenchLabelProvider());
91+
dialog.setElements(filteredProjects.toArray(new IProject[0]));
9092
dialog.setHelpAvailable(false);
91-
dialog.setInput(filteredProjects);
92-
dialog.setContentProvider(new ArrayContentProvider());
93-
dialog.setLabelProvider(new WorkbenchLabelProvider());
9493
dialog.setMessage(Messages.ConfigureProjectFromBluePrintAction_msgSelectBlueprintProject);
9594
dialog.setTitle(Messages.ConfigureProjectFromBluePrintAction_titleSelectBlueprintProject);
9695
if (Window.OK == dialog.open()) {

0 commit comments

Comments
 (0)