package com.redhat.ceylon.eclipse.code.select;
import static com.redhat.ceylon.eclipse.ui.CeylonResources.PROJECT;
import static org.eclipse.core.resources.ResourcesPlugin.getWorkspace;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.dialogs.ElementListSelectionDialog;
import com.redhat.ceylon.eclipse.core.builder.CeylonNature;
public class ProjectSelectionDialog extends ElementListSelectionDialog {
private ProjectSelectionDialog(Shell parent) {
super(parent, new ILabelProvider() {
@Override
public void removeListener(ILabelProviderListener listener) {}
@Override
public boolean isLabelProperty(Object element, String property) {
return false;
}
@Override
public void dispose() {}
@Override
public void addListener(ILabelProviderListener listener) {}
@Override
public String getText(Object element) {
return ((IProject) element).getName();
}
@Override
public Image getImage(Object element) {
return PROJECT;
}
});
}
@Override
public int open() {
List<IProject> elements = new ArrayList<IProject>();
for (IProject project: getWorkspace().getRoot().getProjects()) {
if (project.isOpen() &&
CeylonNature.isEnabled(project)) {
elements.add(project);
}
}
/*Collections.sort(elements, new Comparator<IPackageFragment>() {
@Override
public int compare(IPackageFragment pf1, IPackageFragment pf2) {
return pf1.getElementName().compareTo(pf2.getElementName());
}
});*/
setElements(elements.toArray());
return super.open();
}
public static IProject selectProject(Shell shell) {
ProjectSelectionDialog dialog =
new ProjectSelectionDialog(shell);
dialog.setMultipleSelection(false);
dialog.setTitle("Project Selection");
dialog.setMessage("Select a project:");
if (dialog.open() == Window.OK) {
return (IProject) dialog.getFirstResult();
}
else {
return null;
}
}
}