/******************************************************************************* * Copyright (c) 2010 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.cdi.ui.wizard; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.dialogs.FilteredItemsSelectionDialog; import org.jboss.tools.cdi.core.ICDIAnnotation; import org.jboss.tools.cdi.core.ICDIProject; import org.jboss.tools.cdi.ui.CDIUIPlugin; import org.jboss.tools.cdi.ui.wizard.SelectCDIAnnotationDialog.CDIAnnotationWrapper; import org.jboss.tools.common.ui.widget.editor.IFieldEditor; import org.jboss.tools.common.ui.widget.editor.ListFieldEditor.ListFieldEditorProvider; public abstract class CDIAnnotationSelectionProvider implements ListFieldEditorProvider<ICDIAnnotation> { protected ICDIProject project; protected IFieldEditor editor; protected boolean multi = true; protected IPackageFragment packageFragment = null; public CDIAnnotationSelectionProvider() {} /** * Defines if selection dialog allows multiselection. * By default set to true since cases when single choice is required are rare. * @param multi */ public void setMulti(boolean multi) { this.multi = multi; } public void setEditorField(IFieldEditor editor) { this.editor = editor; } public void setProject(ICDIProject project) { this.project = project; } public ICDIProject getProject() { return project; } public void setPackageFragment(IPackageFragment f) { packageFragment = f; } public FilteredItemsSelectionDialog createSelectionDialog() { Shell shell = CDIUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getShell(); SelectCDIAnnotationDialog dialog = new SelectCDIAnnotationDialog(shell, multi); dialog.setTitle(getDialogTitle()); dialog.setProvider(this); return dialog; } protected abstract String getDialogTitle(); public ICDIAnnotation getSelected(Object selected) { if(selected instanceof CDIAnnotationWrapper) { return ((CDIAnnotationWrapper)selected).getComponent(); } else if(selected instanceof ICDIAnnotation) { return (ICDIAnnotation)selected; } return null; } public ILabelProvider createLabelProvider() { return new CDIAnnotationLabelProvider(); } }