]> git.uio.no Git - ifi-stolz-refaktor.git/blobdiff - case-study/jdt-after/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/sef/SelfEncapsulateFieldInputPage.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / jdt-after / ui refactoring / org / eclipse / jdt / internal / ui / refactoring / sef / SelfEncapsulateFieldInputPage.java
diff --git a/case-study/jdt-after/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/sef/SelfEncapsulateFieldInputPage.java b/case-study/jdt-after/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/sef/SelfEncapsulateFieldInputPage.java
new file mode 100644 (file)
index 0000000..a9c2910
--- /dev/null
@@ -0,0 +1,257 @@
+/*******************************************************************************
+ * 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.refactoring.sef;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogSettings;
+
+import org.eclipse.ui.PlatformUI;
+
+import org.eclipse.ltk.core.refactoring.RefactoringStatus;
+import org.eclipse.ltk.ui.refactoring.UserInputWizardPage;
+
+import org.eclipse.jdt.core.Flags;
+import org.eclipse.jdt.core.IField;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+
+import org.eclipse.jdt.internal.corext.refactoring.sef.SelfEncapsulateFieldRefactoring;
+import org.eclipse.jdt.internal.corext.util.JdtFlags;
+
+import org.eclipse.jdt.ui.JavaElementLabels;
+import org.eclipse.jdt.ui.PreferenceConstants;
+
+import org.eclipse.jdt.internal.ui.IJavaHelpContextIds;
+import org.eclipse.jdt.internal.ui.JavaPluginImages;
+import org.eclipse.jdt.internal.ui.dialogs.TextFieldNavigationHandler;
+import org.eclipse.jdt.internal.ui.preferences.JavaPreferencesSettings;
+import org.eclipse.jdt.internal.ui.refactoring.RefactoringMessages;
+
+public class SelfEncapsulateFieldInputPage extends UserInputWizardPage {
+
+       public SelfEncapsulateFieldRefactoring fRefactoring;
+       private IDialogSettings fSettings;
+       public List<Control> fEnablements;
+
+       public Text fGetterName;
+       public Text fSetterName;
+
+       public Label fGetterInfo;
+       public Label fSetterInfo;
+
+       private static final String GENERATE_JAVADOC= "GenerateJavadoc";  //$NON-NLS-1$
+
+       public SelfEncapsulateFieldInputPage() {
+               super("InputPage"); //$NON-NLS-1$
+               setDescription(RefactoringMessages.SelfEncapsulateFieldInputPage_description);
+               setImageDescriptor(JavaPluginImages.DESC_WIZBAN_REFACTOR_CU);
+       }
+
+       public void createControl(Composite parent) {
+               fRefactoring= (SelfEncapsulateFieldRefactoring)getRefactoring();
+
+               fEnablements= new ArrayList<Control>();
+               loadSettings();
+
+               Composite result= new Composite(parent, SWT.NONE);
+               setControl(result);
+               initializeDialogUnits(result);
+
+               result.setLayout(new GridLayout(3, false));
+
+               Composite nameComposite= new Composite(result, SWT.NONE);
+               nameComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));
+
+               GridLayout gridLayout= new GridLayout(3, false);
+               gridLayout.marginHeight= 0;
+               gridLayout.marginWidth= 0;
+
+               nameComposite.setLayout(gridLayout);
+
+               Label label= new Label(nameComposite, SWT.LEAD);
+               label.setText(RefactoringMessages.SelfEncapsulateFieldInputPage_getter_name);
+
+               fGetterName= new Text(nameComposite, SWT.BORDER);
+               fGetterName.setText(fRefactoring.getGetterName());
+               TextFieldNavigationHandler.install(fGetterName);
+               fGetterName.addModifyListener(new ModifyListener() {
+                       public void modifyText(ModifyEvent e) {
+                               doGetterModified();
+                       }
+               });
+
+               GridData gd= new GridData(GridData.FILL_HORIZONTAL);
+               gd.widthHint= convertWidthInCharsToPixels(25);
+               fGetterName.setLayoutData(gd);
+
+               fGetterInfo= new Label(nameComposite,SWT.LEAD);
+               Button checkBox= fRefactoring.generated_5839747861460611149(this, result, nameComposite);
+               checkBox.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 3, 1));
+
+               fEnablements.add(checkBox);
+
+               updateEnablements();
+
+               processValidation();
+
+               fGetterName.setFocus();
+
+               Dialog.applyDialogFont(result);
+               PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), IJavaHelpContextIds.SEF_WIZARD_PAGE);
+       }
+
+       public void updateUseSetter() {
+               if (fRefactoring.isUsingLocalSetter())
+                       fSetterInfo.setText(RefactoringMessages.SelfEncapsulateFieldInputPage_useexistingsetter_label);
+               else
+                       fSetterInfo.setText(RefactoringMessages.SelfEncapsulateFieldInputPage_usenewgetter_label);
+               updateEnablements();
+       }
+
+       private void updateEnablements() {
+               fRefactoring.generated_1120108998625713785(this);
+       }
+
+       public void updateUseGetter() {
+               if (fRefactoring.isUsingLocalGetter())
+                       fGetterInfo.setText(RefactoringMessages.SelfEncapsulateFieldInputPage_useexistinggetter_label);
+               else
+                       fGetterInfo.setText(RefactoringMessages.SelfEncapsulateFieldInputPage_usenewsetter_label);
+               updateEnablements();
+       }
+
+       private void loadSettings() {
+               fSettings= getDialogSettings().getSection(SelfEncapsulateFieldWizard.DIALOG_SETTING_SECTION);
+               if (fSettings == null) {
+                       fSettings= getDialogSettings().addNewSection(SelfEncapsulateFieldWizard.DIALOG_SETTING_SECTION);
+                       fSettings.put(GENERATE_JAVADOC, JavaPreferencesSettings.getCodeGenerationSettings(fRefactoring.getField().getJavaProject()).createComments);
+               }
+               fRefactoring.setGenerateJavadoc(fSettings.getBoolean(GENERATE_JAVADOC));
+       }
+
+       public void createAccessModifier(Composite result) {
+               fRefactoring.generated_4707012495340476777(this, result);
+       }
+
+       public void createFieldAccessBlock(Composite result) {
+               Label label= new Label(result, SWT.LEFT);
+               label.setText(RefactoringMessages.SelfEncapsulateFieldInputPage_field_access);
+               label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
+
+               Button radio= fRefactoring.generated_2737941035924666987(this, result);
+               radio.setLayoutData(new GridData());
+       }
+
+       public Object[] createData(int visibility) {
+               String pub= RefactoringMessages.SelfEncapsulateFieldInputPage_public;
+               String pro= RefactoringMessages.SelfEncapsulateFieldInputPage_protected;
+               String def= RefactoringMessages.SelfEncapsulateFieldInputPage_default;
+               String priv= RefactoringMessages.SelfEncapsulateFieldInputPage_private;
+
+               String[] labels= null;
+               Integer[] data= null;
+               if (Flags.isPrivate(visibility)) {
+                       labels= new String[] { pub, pro, def, priv };
+                       data= new Integer[] {new Integer(Flags.AccPublic), new Integer(Flags.AccProtected), new Integer(0), new Integer(Flags.AccPrivate) };
+               } else if (Flags.isProtected(visibility)) {
+                       labels= new String[] { pub, pro };
+                       data= new Integer[] {new Integer(Flags.AccPublic), new Integer(Flags.AccProtected)};
+               } else {
+                       labels= new String[] { pub, def };
+                       data= new Integer[] {new Integer(Flags.AccPublic), new Integer(0)};
+               }
+               return new Object[] {labels, data};
+       }
+
+       public void fillWithPossibleInsertPositions(Combo combo, IField field) {
+               int select= 0;
+               combo.add(RefactoringMessages.SelfEncapsulateFieldInputPage_first_method);
+               try {
+                       IMethod[] methods= field.getDeclaringType().getMethods();
+                       for (int i= 0; i < methods.length; i++) {
+                               combo.add(JavaElementLabels.getElementLabel(methods[i], JavaElementLabels.M_PARAMETER_TYPES));
+                       }
+                       if (methods.length > 0)
+                               select= methods.length;
+               } catch (JavaModelException e) {
+                       // Fall through
+               }
+               combo.select(select);
+               fRefactoring.setInsertionIndex(select - 1);
+       }
+
+       public void setGenerateJavadoc(boolean value) {
+               fSettings.put(GENERATE_JAVADOC, value);
+               fRefactoring.setGenerateJavadoc(value);
+       }
+
+       private void processValidation() {
+               RefactoringStatus status= fRefactoring.checkMethodNames();
+               String message= null;
+               boolean valid= true;
+               if (status.hasFatalError()) {
+                       message= status.getMessageMatchingSeverity(RefactoringStatus.FATAL);
+                       valid= false;
+               }
+               setErrorMessage(message);
+               setPageComplete(valid);
+       }
+
+       public boolean needsSetter() {
+               try {
+                       return !JdtFlags.isFinal(fRefactoring.getField());
+               } catch(JavaModelException e) {
+                       return true;
+               }
+       }
+
+       public void doOpenPreference() {
+               fRefactoring.generated_3757629404282508122(this);
+       }
+
+       public String[] getRelevantOptions(IJavaProject project) {
+               return new String[] {
+                       project.getOption(JavaCore.CODEASSIST_FIELD_PREFIXES, true),
+                       project.getOption(JavaCore.CODEASSIST_FIELD_SUFFIXES, true),
+                       PreferenceConstants.getPreference(PreferenceConstants.CODEGEN_IS_FOR_GETTERS, project)
+               };
+       }
+
+       public void doSetterModified() {
+               fRefactoring.setSetterName(fSetterName.getText());
+               updateUseSetter();
+               processValidation();
+       }
+
+       private void doGetterModified() {
+               fRefactoring.setGetterName(fGetterName.getText());
+               updateUseGetter();
+               processValidation();
+       }
+}