| 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));
|
| }
|
|
|
|
|