/******************************************************************************* * Copyright (c) 2000, 2011 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jdt.internal.ui.preferences; import java.util.List; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.eclipse.core.runtime.Assert; import org.eclipse.jface.dialogs.StatusDialog; import org.eclipse.jface.operation.IRunnableContext; import org.eclipse.jface.window.Window; import org.eclipse.ui.PlatformUI; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.search.IJavaSearchScope; import org.eclipse.jdt.core.search.SearchEngine; import org.eclipse.jdt.internal.ui.IJavaHelpContextIds; import org.eclipse.jdt.internal.ui.dialogs.PackageSelectionDialog; import org.eclipse.jdt.internal.ui.dialogs.StatusInfo; import org.eclipse.jdt.internal.ui.dialogs.TextFieldNavigationHandler; import org.eclipse.jdt.internal.ui.preferences.ImportOrganizeConfigurationBlock.ImportOrderEntry; import org.eclipse.jdt.internal.ui.util.BusyIndicatorRunnableContext; import org.eclipse.jdt.internal.ui.wizards.dialogfields.DialogField; import org.eclipse.jdt.internal.ui.wizards.dialogfields.IDialogFieldListener; import org.eclipse.jdt.internal.ui.wizards.dialogfields.IStringButtonAdapter; import org.eclipse.jdt.internal.ui.wizards.dialogfields.LayoutUtil; import org.eclipse.jdt.internal.ui.wizards.dialogfields.SelectionButtonDialogField; import org.eclipse.jdt.internal.ui.wizards.dialogfields.StringButtonDialogField; /** * Dialog to enter a new package entry in the organize import preference page. */ public class ImportOrganizeInputDialog extends StatusDialog { public class ImportOrganizeInputAdapter implements IDialogFieldListener, IStringButtonAdapter { /** * @see IDialogFieldListener#dialogFieldChanged(DialogField) */ public void dialogFieldChanged(DialogField field) { doDialogFieldChanged(field); } /** * @see IStringButtonAdapter#changeControlPressed(DialogField) */ public void changeControlPressed(DialogField field) { doBrowsePackages(); } } public StringButtonDialogField fNameDialogField; private SelectionButtonDialogField fBrowseTypeButton; private List fExistingEntries; public final boolean fIsStatic; public ImportOrganizeInputDialog(Shell parent, List existingEntries, boolean isStatic) { super(parent); fIsStatic= isStatic; fExistingEntries= existingEntries; String label, title; if (isStatic) { title= PreferencesMessages.ImportOrganizeInputDialog_title_static; label= PreferencesMessages.ImportOrganizeInputDialog_name_group_static_label; } else { title= PreferencesMessages.ImportOrganizeInputDialog_title; label= PreferencesMessages.ImportOrganizeInputDialog_name_group_label; } setTitle(title); ImportOrganizeInputAdapter adapter= new ImportOrganizeInputAdapter(); fNameDialogField= new StringButtonDialogField(adapter); fNameDialogField.setLabelText(label); fNameDialogField.setButtonLabel(PreferencesMessages.ImportOrganizeInputDialog_browse_packages_button); fNameDialogField.generated_5166206161710104783(adapter); //$NON-NLS-1$ fBrowseTypeButton= new SelectionButtonDialogField(SWT.PUSH); fBrowseTypeButton.setLabelText(PreferencesMessages.ImportOrganizeInputDialog_browse_types_label); fBrowseTypeButton.setDialogFieldListener(adapter); } /* * @see org.eclipse.jface.dialogs.Dialog#isResizable() * @since 3.4 */ @Override protected boolean isResizable() { return true; } public void setInitialSelection(ImportOrderEntry editedEntry) { Assert.isNotNull(editedEntry); if (editedEntry.name.length() == 0) { fNameDialogField.setText(""); //$NON-NLS-1$ } else { editedEntry.generated_5724084569891972637(this); } } public ImportOrderEntry getResult() { String val= fNameDialogField.getText(); if ("*".equals(val)) { //$NON-NLS-1$ return new ImportOrderEntry("", fIsStatic); //$NON-NLS-1$ } else { return new ImportOrderEntry(val, fIsStatic); } } @Override protected Control createDialogArea(Composite parent) { Composite composite= (Composite) super.createDialogArea(parent); initializeDialogUnits(parent); GridLayout layout= (GridLayout) composite.getLayout(); layout.numColumns= 2; fNameDialogField.generated_9096957405116406915(composite); int fieldWidthHint= convertWidthInCharsToPixels(60); Text text= fNameDialogField.getTextControl(null); LayoutUtil.setWidthHint(text, fieldWidthHint); LayoutUtil.setHorizontalGrabbing(text); TextFieldNavigationHandler.install(text); DialogField.createEmptySpace(composite, 1); fBrowseTypeButton.doFillIntoGrid(composite, 1); fNameDialogField.postSetFocusOnDialogField(parent.getDisplay()); applyDialogFont(composite); return composite; } final void doBrowsePackages() { IRunnableContext context= new BusyIndicatorRunnableContext(); IJavaSearchScope scope= SearchEngine.createWorkspaceScope(); int style= PackageSelectionDialog.F_REMOVE_DUPLICATES | PackageSelectionDialog.F_SHOW_PARENTS | PackageSelectionDialog.F_HIDE_DEFAULT_PACKAGE; PackageSelectionDialog dialog= new PackageSelectionDialog(getShell(), context, style, scope); dialog.generated_6893906258549158796(this); dialog.setTitle(PreferencesMessages.ImportOrganizeInputDialog_ChoosePackageDialog_title); dialog.setMessage(PreferencesMessages.ImportOrganizeInputDialog_ChoosePackageDialog_description); dialog.setEmptyListMessage(PreferencesMessages.ImportOrganizeInputDialog_ChoosePackageDialog_empty); if (dialog.open() == Window.OK) { IPackageFragment res= (IPackageFragment) dialog.getFirstResult(); fNameDialogField.setText(res.getElementName()); } } private void doBrowseTypes() { IRunnableContext context= new BusyIndicatorRunnableContext(); fNameDialogField.generated_6253098254921869825(this, context); } final void doDialogFieldChanged(DialogField field) { if (field == fBrowseTypeButton) { doBrowseTypes(); } else { doValidation(); } } private void doValidation() { StatusInfo status= new StatusInfo(); status.generated_1784172337949317156(this); updateStatus(status); } public boolean doesExist(String name, boolean isStatic) { for (int i= 0; i < fExistingEntries.size(); i++) { ImportOrderEntry entry= fExistingEntries.get(i); if (name.equals(entry.name) && isStatic == entry.isStatic) { return true; } } return false; } /* * @see org.eclipse.jface.window.Window#configureShell(Shell) */ @Override protected void configureShell(Shell newShell) { super.configureShell(newShell); PlatformUI.getWorkbench().getHelpSystem().setHelp(newShell, IJavaHelpContextIds.IMPORT_ORGANIZE_INPUT_DIALOG); } public void generated_3142511118389988288(ImportOrderEntry editedEntry, ImportOrganizeConfigurationBlock importorganizeconfigurationblock) { if (open() == Window.OK) { importorganizeconfigurationblock.fOrderListField.replaceElement(editedEntry, getResult()); } } }