Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1362)

Unified Diff: editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/refactoring/ChangeParametersControl_NEW.java

Issue 554143003: Integrate the EXTRACT_METHOD refactoring into Editor. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/refactoring/ChangeParametersControl_NEW.java
diff --git a/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/refactoring/ChangeParametersControl.java b/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/refactoring/ChangeParametersControl_NEW.java
similarity index 78%
copy from editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/refactoring/ChangeParametersControl.java
copy to editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/refactoring/ChangeParametersControl_NEW.java
index c72c9ea8dbde3c005890bedae9c36784a258cdce..35a478ebd02a75b5f2614fac141618da876a4b0d 100644
--- a/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/refactoring/ChangeParametersControl.java
+++ b/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/internal/refactoring/ChangeParametersControl_NEW.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, the Dart project authors.
+ * Copyright (c) 2014, the Dart project authors.
*
* Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
@@ -13,7 +13,8 @@
*/
package com.google.dart.tools.ui.internal.refactoring;
-import com.google.dart.engine.services.refactoring.Parameter;
+import com.google.common.collect.Lists;
+import com.google.dart.server.generated.types.RefactoringMethodParameter;
import com.google.dart.tools.ui.internal.dialogs.TableTextCellEditor;
import com.google.dart.tools.ui.internal.dialogs.TextFieldNavigationHandler;
import com.google.dart.tools.ui.internal.refactoring.contentassist.VariableNamesProcessor;
@@ -21,11 +22,12 @@ import com.google.dart.tools.ui.internal.util.ControlContentAssistHelper;
import com.google.dart.tools.ui.internal.util.SWTUtil;
import com.google.dart.tools.ui.internal.util.TableLayoutComposite;
+import org.apache.commons.lang3.StringUtils;
import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.contentassist.SubjectControlContentAssistant;
-import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.jface.viewers.IElementComparer;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
@@ -57,7 +59,6 @@ import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.contentassist.ContentAssistHandler;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
@@ -69,7 +70,7 @@ import java.util.List;
* @coverage dart.editor.ui.refactoring.ui
*/
@SuppressWarnings("deprecation")
-public class ChangeParametersControl extends Composite {
+public class ChangeParametersControl_NEW extends Composite {
public static class Mode {
private final String fName;
@@ -108,24 +109,14 @@ public class ChangeParametersControl extends Composite {
@Override
@SuppressWarnings("unchecked")
public Object[] getElements(Object inputElement) {
- return removeMarkedAsDeleted((List<Parameter>) inputElement);
+ List<RefactoringMethodParameter> parameters = (List<RefactoringMethodParameter>) inputElement;
+ return parameters.toArray(new RefactoringMethodParameter[parameters.size()]);
}
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// do nothing
}
-
- private Parameter[] removeMarkedAsDeleted(List<Parameter> parameters) {
- List<Parameter> result = new ArrayList<Parameter>(parameters.size());
- for (Iterator<Parameter> iter = parameters.iterator(); iter.hasNext();) {
- Parameter parameter = iter.next();
- if (!parameter.isDeleted()) {
- result.add(parameter);
- }
- }
- return result.toArray(new Parameter[result.size()]);
- }
}
private static class ParameterInfoLabelProvider extends LabelProvider implements
@@ -137,18 +128,20 @@ public class ChangeParametersControl extends Composite {
@Override
public String getColumnText(Object element, int columnIndex) {
- Parameter parameter = (Parameter) element;
+ RefactoringMethodParameter parameter = (RefactoringMethodParameter) element;
switch (columnIndex) {
case TYPE_PROP:
- return parameter.getNewTypeName();
- case NEWNAME_PROP:
- return parameter.getNewName();
+ return parameter.getType();
+ case NAME_PROP:
+ return parameter.getName();
case DEFAULT_PROP:
- if (parameter.isAdded()) {
- return parameter.getDefaultValue();
- } else {
- return "-"; //$NON-NLS-1$
- }
+ // TODO(scheglov) implement in future refactorings
+ return "-";
+// if (parameter.isAdded()) {
+// return parameter.getDefaultValue();
+// } else {
+// return "-"; //$NON-NLS-1$
+// }
default:
throw new IllegalArgumentException(columnIndex + ": " + element); //$NON-NLS-1$
}
@@ -156,25 +149,28 @@ public class ChangeParametersControl extends Composite {
@Override
public Font getFont(Object element, int columnIndex) {
- Parameter parameter = (Parameter) element;
- if (parameter.isAdded()) {
- return JFaceResources.getFontRegistry().getBold(JFaceResources.DIALOG_FONT);
- } else {
- return null;
- }
+ // TODO(scheglov) implement in future refactorings
+ return null;
+// RefactoringMethodParameter parameter = (RefactoringMethodParameter) element;
+// if (parameter.isAdded()) {
+// return JFaceResources.getFontRegistry().getBold(JFaceResources.DIALOG_FONT);
+// } else {
+// return null;
+// }
}
}
private class ParametersCellModifier implements ICellModifier {
@Override
public boolean canModify(Object element, String property) {
- Assert.isTrue(element instanceof Parameter);
+ Assert.isTrue(element instanceof RefactoringMethodParameter);
if (property.equals(PROPERTIES[TYPE_PROP])) {
return fMode.canChangeTypes();
- } else if (property.equals(PROPERTIES[NEWNAME_PROP])) {
+ } else if (property.equals(PROPERTIES[NAME_PROP])) {
return true;
} else if (property.equals(PROPERTIES[DEFAULT_PROP])) {
- return (((Parameter) element).isAdded());
+ // TODO(scheglov) implement in future refactorings
+// return (((RefactoringMethodParameter) element).isAdded());
}
Assert.isTrue(false);
return false;
@@ -182,13 +178,15 @@ public class ChangeParametersControl extends Composite {
@Override
public Object getValue(Object element, String property) {
- Assert.isTrue(element instanceof Parameter);
+ Assert.isTrue(element instanceof RefactoringMethodParameter);
if (property.equals(PROPERTIES[TYPE_PROP])) {
- return ((Parameter) element).getNewTypeName();
- } else if (property.equals(PROPERTIES[NEWNAME_PROP])) {
- return ((Parameter) element).getNewName();
+ return ((RefactoringMethodParameter) element).getType();
+ } else if (property.equals(PROPERTIES[NAME_PROP])) {
+ return ((RefactoringMethodParameter) element).getName();
} else if (property.equals(PROPERTIES[DEFAULT_PROP])) {
- return ((Parameter) element).getDefaultValue();
+ // TODO(scheglov) implement in future refactorings
+ return null;
+// return ((RefactoringMethodParameter) element).getDefaultValue();
}
Assert.isTrue(false);
return null;
@@ -199,48 +197,71 @@ public class ChangeParametersControl extends Composite {
if (element instanceof TableItem) {
element = ((TableItem) element).getData();
}
- if (!(element instanceof Parameter)) {
+ if (!(element instanceof RefactoringMethodParameter)) {
return;
}
boolean unchanged;
- Parameter parameter = (Parameter) element;
- if (property.equals(PROPERTIES[NEWNAME_PROP])) {
- unchanged = parameter.getNewName().equals(value);
- parameter.setNewName((String) value);
+ RefactoringMethodParameter parameter = (RefactoringMethodParameter) element;
+ if (property.equals(PROPERTIES[NAME_PROP])) {
+ unchanged = parameter.getName().equals(value);
+ parameter.setName((String) value);
} else if (property.equals(PROPERTIES[DEFAULT_PROP])) {
- unchanged = parameter.getDefaultValue().equals(value);
- parameter.setDefaultValue((String) value);
+ // TODO(scheglov) implement in future refactorings
+ unchanged = true;
+// unchanged = parameter.getDefaultValue().equals(value);
+// parameter.setDefaultValue((String) value);
} else if (property.equals(PROPERTIES[TYPE_PROP])) {
- unchanged = parameter.getNewTypeName().equals(value);
- parameter.setNewTypeName((String) value);
+ unchanged = parameter.getType().equals(value);
+ parameter.setType((String) value);
} else {
throw new IllegalStateException();
}
if (!unchanged) {
- ChangeParametersControl.this.fListener.parameterChanged(parameter);
- ChangeParametersControl.this.fTableViewer.update(parameter, new String[] {property});
+ ChangeParametersControl_NEW.this.fListener.parameterChanged(parameter);
+ ChangeParametersControl_NEW.this.fTableViewer.update(parameter, new String[] {property});
}
}
}
- private static final String[] PROPERTIES = {"type", "new", "default"}; //$NON-NLS-2$ //$NON-NLS-1$ //$NON-NLS-3$
- private static final int TYPE_PROP = 0;
- private static final int NEWNAME_PROP = 1;
+ private static final IElementComparer PARAMETER_COMPARER = new IElementComparer() {
+ @Override
+ public boolean equals(Object a, Object b) {
+ if (a == b) {
+ return true;
+ }
+ if (!(a instanceof RefactoringMethodParameter) || !(b instanceof RefactoringMethodParameter)) {
+ return false;
+ }
+ RefactoringMethodParameter pa = (RefactoringMethodParameter) a;
+ RefactoringMethodParameter pb = (RefactoringMethodParameter) b;
+ return StringUtils.equals(pa.getId(), pb.getId());
+ }
+
+ @Override
+ public int hashCode(Object element) {
+ String id = ((RefactoringMethodParameter) element).getId();
+ if (id == null) {
+ return 0;
+ }
+ return id.hashCode();
+ }
+ };
+ private static final String[] PROPERTIES = {"type", "name", "default"};
+ private static final int TYPE_PROP = 0;
+ private static final int NAME_PROP = 1;
private static final int DEFAULT_PROP = 2;
private static final int ROW_COUNT = 7;
- private static void moveUp(List<Parameter> elements, List<Parameter> move) {
- List<Parameter> res = new ArrayList<Parameter>(elements.size());
- List<Parameter> deleted = new ArrayList<Parameter>();
- Parameter floating = null;
- for (Iterator<Parameter> iter = elements.iterator(); iter.hasNext();) {
- Parameter curr = iter.next();
+ private static void moveUp(List<RefactoringMethodParameter> elements,
+ List<RefactoringMethodParameter> move) {
+ List<RefactoringMethodParameter> res = Lists.newArrayList();
+ RefactoringMethodParameter floating = null;
+ for (Iterator<RefactoringMethodParameter> iter = elements.iterator(); iter.hasNext();) {
+ RefactoringMethodParameter curr = iter.next();
if (move.contains(curr)) {
res.add(curr);
- } else if (curr.isDeleted()) {
- deleted.add(curr);
} else {
if (floating != null) {
res.add(floating);
@@ -251,16 +272,15 @@ public class ChangeParametersControl extends Composite {
if (floating != null) {
res.add(floating);
}
- res.addAll(deleted);
elements.clear();
- for (Iterator<Parameter> iter = res.iterator(); iter.hasNext();) {
+ for (Iterator<RefactoringMethodParameter> iter = res.iterator(); iter.hasNext();) {
elements.add(iter.next());
}
}
private final Mode fMode;
- private final IParameterListChangeListener fListener;
- private List<Parameter> fParameters;
+ private final IParameterListChangeListener_NEW fListener;
+ private List<RefactoringMethodParameter> fParameters;
private final String[] fParamNameProposals;
private ContentAssistHandler fNameContentAssistHandler;
@@ -273,8 +293,8 @@ public class ChangeParametersControl extends Composite {
private Button fRemoveButton;
- public ChangeParametersControl(Composite parent, int style, String label,
- IParameterListChangeListener listener, Mode mode) {
+ public ChangeParametersControl_NEW(Composite parent, int style, String label,
+ IParameterListChangeListener_NEW listener, Mode mode) {
this(parent, style, label, listener, mode, new String[0]);
}
@@ -282,8 +302,8 @@ public class ChangeParametersControl extends Composite {
* @param label the label before the table or <code>null</code>
* @param typeContext the package in which to complete types
*/
- public ChangeParametersControl(Composite parent, int style, String label,
- IParameterListChangeListener listener, Mode mode, String[] paramNameProposals) {
+ public ChangeParametersControl_NEW(Composite parent, int style, String label,
+ IParameterListChangeListener_NEW listener, Mode mode, String[] paramNameProposals) {
super(parent, style);
Assert.isNotNull(listener);
fListener = listener;
@@ -308,19 +328,16 @@ public class ChangeParametersControl extends Composite {
createButtonComposite(this);
}
- public void editParameter(Parameter parameter) {
+ public void editParameter(RefactoringMethodParameter parameter) {
fTableViewer.getControl().setFocus();
- if (!parameter.isDeleted()) {
- fTableViewer.setSelection(new StructuredSelection(parameter), true);
- updateButtonsEnabledState();
- editColumnOrNextPossible(NEWNAME_PROP);
- return;
- }
+ fTableViewer.setSelection(new StructuredSelection(parameter), true);
+ updateButtonsEnabledState();
+ editColumnOrNextPossible(NAME_PROP);
}
// ---- Parameter table -----------------------------------------------------------------------------------
- public void setInput(List<Parameter> parameters) {
+ public void setInput(List<RefactoringMethodParameter> parameters) {
Assert.isNotNull(parameters);
fParameters = parameters;
fTableViewer.setInput(fParameters);
@@ -335,7 +352,7 @@ public class ChangeParametersControl extends Composite {
final TableTextCellEditor editors[] = new TableTextCellEditor[PROPERTIES.length];
editors[TYPE_PROP] = new TableTextCellEditor(fTableViewer, TYPE_PROP);
- editors[NEWNAME_PROP] = new TableTextCellEditor(fTableViewer, NEWNAME_PROP);
+ editors[NAME_PROP] = new TableTextCellEditor(fTableViewer, NAME_PROP);
editors[DEFAULT_PROP] = new TableTextCellEditor(fTableViewer, DEFAULT_PROP);
if (fMode.canChangeTypes()) {
@@ -344,8 +361,8 @@ public class ChangeParametersControl extends Composite {
// editors[TYPE_PROP].setContentAssistant(assistant);
}
if (fParamNameProposals.length > 0) {
- SubjectControlContentAssistant assistant = installParameterNameContentAssist(editors[NEWNAME_PROP].getText());
- editors[NEWNAME_PROP].setContentAssistant(assistant);
+ SubjectControlContentAssistant assistant = installParameterNameContentAssist(editors[NAME_PROP].getText());
+ editors[NAME_PROP].setContentAssistant(assistant);
}
for (int i = 0; i < editors.length; i++) {
@@ -374,13 +391,14 @@ public class ChangeParametersControl extends Composite {
TextFieldNavigationHandler.install(editor.getText());
}
- editors[NEWNAME_PROP].setActivationListener(new TableTextCellEditor.IActivationListener() {
+ editors[NAME_PROP].setActivationListener(new TableTextCellEditor.IActivationListener() {
@Override
public void activate() {
- Parameter[] selected = getSelectedElements();
- if (selected.length == 1 && fNameContentAssistHandler != null) {
- fNameContentAssistHandler.setEnabled(selected[0].isAdded());
- }
+ // TODO(scheglov) not used in "Extract Method"
+// RefactoringMethodParameter[] selected = getSelectedElements();
+// if (selected.length == 1 && fNameContentAssistHandler != null) {
+// fNameContentAssistHandler.setEnabled(selected[0].isAdded());
+// }
}
});
@@ -477,7 +495,7 @@ public class ChangeParametersControl extends Composite {
if (savedSelection == null) {
return;
}
- Parameter[] selection = getSelectedElements();
+ RefactoringMethodParameter[] selection = getSelectedElements();
if (selection.length == 0) {
return;
}
@@ -541,10 +559,10 @@ public class ChangeParametersControl extends Composite {
@Override
public void widgetSelected(SelectionEvent e) {
try {
- Parameter[] selected = getSelectedElements();
+ RefactoringMethodParameter[] selected = getSelectedElements();
Assert.isTrue(selected.length == 1);
- Parameter parameter = selected[0];
- ParameterEditDialog dialog = new ParameterEditDialog(
+ RefactoringMethodParameter parameter = selected[0];
+ ParameterEditDialog_NEW dialog = new ParameterEditDialog_NEW(
getShell(),
parameter,
fMode.canChangeTypes(),
@@ -572,7 +590,7 @@ public class ChangeParametersControl extends Composite {
tc.setResizable(true);
tc.setText(RefactoringMessages.ChangeParametersControl_table_type);
- tc = new TableColumn(table, SWT.NONE, NEWNAME_PROP);
+ tc = new TableColumn(table, SWT.NONE, NAME_PROP);
tc.setResizable(true);
tc.setText(RefactoringMessages.ChangeParametersControl_table_name);
@@ -589,6 +607,7 @@ public class ChangeParametersControl extends Composite {
fTableViewer = new TableViewer(table);
fTableViewer.setUseHashlookup(true);
+ fTableViewer.setComparer(PARAMETER_COMPARER);
fTableViewer.setContentProvider(new ParameterInfoContentProvider());
fTableViewer.setLabelProvider(new ParameterInfoLabelProvider());
fTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
@@ -659,7 +678,7 @@ public class ChangeParametersControl extends Composite {
}
private void editColumnOrNextPossible(int column) {
- Parameter[] selected = getSelectedElements();
+ RefactoringMethodParameter[] selected = getSelectedElements();
if (selected.length != 1) {
return;
}
@@ -674,7 +693,7 @@ public class ChangeParametersControl extends Composite {
}
private void editColumnOrPrevPossible(int column) {
- Parameter[] selected = getSelectedElements();
+ RefactoringMethodParameter[] selected = getSelectedElements();
if (selected.length != 1) {
return;
}
@@ -692,28 +711,21 @@ public class ChangeParametersControl extends Composite {
if (fParameters == null) {
return 0;
}
- int result = 0;
- for (Iterator<Parameter> iter = fParameters.iterator(); iter.hasNext();) {
- Parameter parameter = iter.next();
- if (!parameter.isDeleted()) {
- result++;
- }
- }
- return result;
+ return fParameters.size();
}
- private Parameter[] getSelectedElements() {
+ private RefactoringMethodParameter[] getSelectedElements() {
ISelection selection = fTableViewer.getSelection();
if (selection == null) {
- return new Parameter[0];
+ return new RefactoringMethodParameter[0];
}
if (!(selection instanceof IStructuredSelection)) {
- return new Parameter[0];
+ return new RefactoringMethodParameter[0];
}
List<?> selected = ((IStructuredSelection) selection).toList();
- return selected.toArray(new Parameter[selected.size()]);
+ return selected.toArray(new RefactoringMethodParameter[selected.size()]);
}
private Table getTable() {
@@ -755,13 +767,13 @@ public class ChangeParametersControl extends Composite {
//---- change order ----------------------------------------------------------------------------------------
- private void moveDown(Parameter[] selection) {
+ private void moveDown(RefactoringMethodParameter[] selection) {
Collections.reverse(fParameters);
moveUp(fParameters, Arrays.asList(selection));
Collections.reverse(fParameters);
}
- private void moveUp(Parameter[] selection) {
+ private void moveUp(RefactoringMethodParameter[] selection) {
moveUp(fParameters, Arrays.asList(selection));
}

Powered by Google App Engine
This is Rietveld 408576698