Added a new refactoring action: net.sourceforge.phpdt.ltk.ui.actions.RenameLocalVariable
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / ltk / ui / wizards / RenameLocalVariablePage.java
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ltk/ui/wizards/RenameLocalVariablePage.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ltk/ui/wizards/RenameLocalVariablePage.java
new file mode 100644 (file)
index 0000000..366def6
--- /dev/null
@@ -0,0 +1,154 @@
+// 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 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;
+
+
+/** <p>the input page for the Rename Property refactoring, where users can
+  * control the effects of the refactoring; to be shown in the wizard.</p>
+  *
+  * <p>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.</p>
+  *
+  */
+public class RenameLocalVariablePage extends UserInputWizardPage {
+
+  private static final String DS_KEY = RenameLocalVariablePage.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;
+
+
+  public RenameLocalVariablePage( final RenameIdentifierInfo info ) {
+    super( RenameLocalVariablePage.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;
+    initUpdateBundleOption();
+  }
+
+  private void createCbAllProjects( final Composite composite ) {
+    String text = UITexts.renamePropertyInputPage_cbAllProjects;
+    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 = PHPeclipsePlugin.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 );
+  }
+}