package org.eclipse.m2e.editor.dialogs; import java.util.Set; import org.eclipse.core.resources.IResource; import org.eclipse.jface.viewers.IColorProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.TreeItem; import org.eclipse.ui.model.WorkbenchLabelProvider; import org.eclipse.m2e.core.ui.internal.wizards.MavenProjectSelectionDialog; import org.eclipse.m2e.editor.internal.Messages; public class MavenModuleSelectionDialog extends MavenProjectSelectionDialog { protected Set<Object> knownModules; protected boolean pomUpdateRequired = false; public MavenModuleSelectionDialog(Shell parent, Set<Object> knownModules) { super(parent, true); this.knownModules = knownModules; setTitle(Messages.OverviewPage_selectModuleProjects); } @Override protected Control createDialogArea(Composite parent) { Control control = super.createDialogArea(parent); final TreeViewer viewer = getViewer(); viewer.setLabelProvider(new ProjectLabelProvider()); viewer.getTree().addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if(e.detail == SWT.CHECK) { TreeItem item = (TreeItem) e.item; Object data = item.getData(); if(item.getChecked() && data instanceof IResource && knownModules.contains(((IResource) data).getLocation())) { item.setChecked(false); } } } }); viewer.getTree().setFocus(); final Button checkbox = new Button((Composite) control, SWT.CHECK); checkbox.setSelection(false); checkbox.setText(Messages.OverviewPage_updateModulePoms); checkbox.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { pomUpdateRequired = checkbox.getSelection(); } }); return control; } public boolean isPomUpdateRequired() { return pomUpdateRequired; } protected class ProjectLabelProvider extends LabelProvider implements IColorProvider { private ILabelProvider labelProvider = WorkbenchLabelProvider.getDecoratingWorkbenchLabelProvider(); @Override public String getText(Object element) { return labelProvider.getText(element); } @Override public Image getImage(Object element) { return labelProvider.getImage(element); } public Color getForeground(Object element) { if(element instanceof IResource && knownModules.contains(((IResource) element).getLocation())) { return Display.getDefault().getSystemColor(SWT.COLOR_GRAY); } return null; } public Color getBackground(Object element) { return null; } } }