X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/ltk/ui/wizards/RenameIdentifierPage.java b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/ltk/ui/wizards/RenameIdentifierPage.java new file mode 100644 index 0000000..e29747b --- /dev/null +++ b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/ltk/ui/wizards/RenameIdentifierPage.java @@ -0,0 +1,181 @@ +// Copyright (c) 2005 by Leif Frenzel. All rights reserved. +// See http://leiffrenzel.de +package net.sourceforge.phpdt.ltk.ui.wizards; + +import net.sourceforge.phpdt.ltk.core.RenameIdentifierInfo; +import net.sourceforge.phpdt.ltk.ui.UITexts; +import net.sourceforge.phpeclipse.PHPeclipsePlugin; +import net.sourceforge.phpeclipse.ui.WebUI; + +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogSettings; +import org.eclipse.ltk.ui.refactoring.UserInputWizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.KeyAdapter; +import org.eclipse.swt.events.KeyEvent; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; + +/** + *

+ * the input page for the Rename Property refactoring, where users can control + * the effects of the refactoring; to be shown in the wizard. + *

+ * + *

+ * We let the user enter the new name for the property, and we let her decide + * whether other property files in the bundle should be affected, and whether + * the operation is supposed to span the entire workspace or only the current + * project. + *

+ * + */ +public class RenameIdentifierPage extends UserInputWizardPage { + + private static final String DS_KEY = RenameIdentifierPage.class.getName(); + + private static final String DS_UPDATE_BUNDLE = "UPDATE_BUNDLE"; //$NON-NLS-1$ + + private static final String DS_ALL_PROJECTS = "ALL_PROJECTS"; //$NON-NLS-1$ + + private final RenameIdentifierInfo info; + + private IDialogSettings dialogSettings; + + private Text txtNewName; + + private Button cbUpdateBundle; + + private Button cbAllProjects; + + public RenameIdentifierPage(final RenameIdentifierInfo info) { + super(RenameIdentifierPage.class.getName()); + this.info = info; + initDialogSettings(); + } + + // interface methods of UserInputWizardPage + // ///////////////////////////////////////// + + public void createControl(final Composite parent) { + Composite composite = createRootComposite(parent); + setControl(composite); + + createLblNewName(composite); + createTxtNewName(composite); + createCbUpdateBundle(composite); + createCbAllProjects(composite); + + validate(); + } + + // UI creation methods + // //////////////////// + + private Composite createRootComposite(final Composite parent) { + Composite result = new Composite(parent, SWT.NONE); + GridLayout gridLayout = new GridLayout(2, false); + gridLayout.marginWidth = 10; + gridLayout.marginHeight = 10; + result.setLayout(gridLayout); + initializeDialogUnits(result); + Dialog.applyDialogFont(result); + return result; + } + + private void createLblNewName(final Composite composite) { + Label lblNewName = new Label(composite, SWT.NONE); + lblNewName.setText(UITexts.renamePropertyInputPage_lblNewName); + } + + private void createTxtNewName(Composite composite) { + txtNewName = new Text(composite, SWT.BORDER); + txtNewName.setText(info.getOldName()); + txtNewName.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + txtNewName.selectAll(); + txtNewName.addKeyListener(new KeyAdapter() { + public void keyReleased(final KeyEvent e) { + info.setNewName(txtNewName.getText()); + validate(); + } + }); + } + + private void createCbUpdateBundle(final Composite composite) { + String texts = UITexts.renamePropertyInputPage_cbUpdateBundle; + cbUpdateBundle = createCheckbox(composite, texts); + cbUpdateBundle.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(final SelectionEvent event) { + boolean selected = cbUpdateBundle.getSelection(); + dialogSettings.put(DS_UPDATE_BUNDLE, selected); + info.setUpdateProject(selected); + } + }); + initUpdateBundleOption(); + } + + private void createCbAllProjects(final Composite composite) { + String text = UITexts.renamePropertyInputPage_cbAllProjects; + cbAllProjects = createCheckbox(composite, text); + cbAllProjects.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(final SelectionEvent event) { + boolean selected = cbAllProjects.getSelection(); + dialogSettings.put(DS_ALL_PROJECTS, selected); + info.setAllProjects(selected); + // for demonstration purposes, we enforce the preview for + // refactorings + // that span the entire workspace + getRefactoringWizard().setForcePreviewReview(selected); + } + }); + initAllProjectsOption(); + } + + private Button createCheckbox(final Composite composite, final String text) { + Button result = new Button(composite, SWT.CHECK); + result.setText(text); + + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + result.setLayoutData(gridData); + + return result; + } + + // helping methods + // //////////////// + + private void initDialogSettings() { + IDialogSettings ds = WebUI.getDefault().getDialogSettings(); + dialogSettings = ds.getSection(DS_KEY); + if (dialogSettings == null) { + dialogSettings = ds.addNewSection(DS_KEY); + // init default values + dialogSettings.put(DS_UPDATE_BUNDLE, true); + dialogSettings.put(DS_ALL_PROJECTS, false); + } + } + + private void validate() { + String txt = txtNewName.getText(); + setPageComplete(txt.length() > 0 && !txt.equals(info.getOldName())); + } + + private void initUpdateBundleOption() { + boolean updateRefs = dialogSettings.getBoolean(DS_UPDATE_BUNDLE); + cbUpdateBundle.setSelection(updateRefs); + info.setUpdateProject(updateRefs); + } + + private void initAllProjectsOption() { + boolean allProjects = dialogSettings.getBoolean(DS_ALL_PROJECTS); + cbAllProjects.setSelection(allProjects); + info.setAllProjects(allProjects); + } +}