/** * Copyright (c) Red Hat, Inc., contributors and others 2013 - 2014. All rights reserved * * Licensed under the Eclipse Public License version 1.0, available at * http://www.eclipse.org/legal/epl-v10.html */ package org.jboss.tools.forge.ui.internal.ext.control; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.search.IJavaSearchScope; import org.eclipse.jdt.core.search.SearchEngine; import org.eclipse.jdt.ui.IJavaElementSearchConstants; import org.eclipse.jdt.ui.JavaUI; import org.eclipse.jface.operation.IRunnableContext; import org.eclipse.jface.window.Window; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.dialogs.SelectionDialog; import org.jboss.forge.addon.ui.hints.InputType; import org.jboss.forge.addon.ui.input.InputComponent; import org.jboss.forge.addon.ui.input.UIInput; import org.jboss.tools.forge.ui.internal.ForgeUIPlugin; import org.jboss.tools.forge.ui.internal.ext.util.BusyIndicatorRunnableContext; import org.jboss.tools.forge.ui.internal.ext.wizards.ForgeWizardPage; public class JavaClassChooserControlBuilder extends AbstractTextButtonControl { @Override protected void browseButtonPressed(ForgeWizardPage page, InputComponent<?, ?> input, Text containerText) { IRunnableContext context = new BusyIndicatorRunnableContext(); IJavaSearchScope scope = SearchEngine.createWorkspaceScope(); int style = IJavaElementSearchConstants.CONSIDER_ALL_TYPES; try { SelectionDialog dialog = JavaUI.createTypeDialog(page.getShell(), context, scope, style, false, containerText.getText()); dialog.setTitle("Type Selection"); dialog.setMessage("Choose type name:"); if (dialog.open() == Window.OK) { IType res = (IType) dialog.getResult()[0]; containerText.setText(res.getFullyQualifiedName('.')); } } catch (JavaModelException ex) { ForgeUIPlugin.log(ex); } } @Override protected Class<String> getProducedType() { return String.class; } @Override protected String getSupportedInputType() { return InputType.JAVA_CLASS_PICKER; } @Override protected Class<?>[] getSupportedInputComponentTypes() { return new Class<?>[] { UIInput.class }; } }