Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/refactoring/reorg/RenameTypeWizardSimilarElementsPage.java')
-rw-r--r--bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/refactoring/reorg/RenameTypeWizardSimilarElementsPage.java778
1 files changed, 0 insertions, 778 deletions
diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/refactoring/reorg/RenameTypeWizardSimilarElementsPage.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/refactoring/reorg/RenameTypeWizardSimilarElementsPage.java
deleted file mode 100644
index 992f7090..00000000
--- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/refactoring/reorg/RenameTypeWizardSimilarElementsPage.java
+++ /dev/null
@@ -1,778 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 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.wst.jsdt.internal.ui.refactoring.reorg;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.StatusDialog;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.text.Document;
-import org.eclipse.jface.text.source.SourceViewer;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.ltk.core.refactoring.participants.RefactoringProcessor;
-import org.eclipse.ltk.core.refactoring.participants.RenameRefactoring;
-import org.eclipse.ltk.ui.refactoring.UserInputWizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.custom.SashForm;
-import org.eclipse.swt.custom.ViewForm;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Image;
-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.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.dialogs.ContainerCheckedTreeViewer;
-import org.eclipse.wst.jsdt.core.IJavaScriptUnit;
-import org.eclipse.wst.jsdt.core.IField;
-import org.eclipse.wst.jsdt.core.IJavaScriptElement;
-import org.eclipse.wst.jsdt.core.ILocalVariable;
-import org.eclipse.wst.jsdt.core.IMember;
-import org.eclipse.wst.jsdt.core.IFunction;
-import org.eclipse.wst.jsdt.core.ISourceRange;
-import org.eclipse.wst.jsdt.core.IType;
-import org.eclipse.wst.jsdt.core.JavaScriptConventions;
-import org.eclipse.wst.jsdt.core.JavaScriptModelException;
-import org.eclipse.wst.jsdt.internal.corext.refactoring.Checks;
-import org.eclipse.wst.jsdt.internal.corext.refactoring.rename.RenameCompilationUnitProcessor;
-import org.eclipse.wst.jsdt.internal.corext.refactoring.rename.RenameTypeProcessor;
-import org.eclipse.wst.jsdt.internal.corext.util.Messages;
-import org.eclipse.wst.jsdt.internal.ui.IJavaHelpContextIds;
-import org.eclipse.wst.jsdt.internal.ui.JavaScriptPlugin;
-import org.eclipse.wst.jsdt.internal.ui.JavaPluginImages;
-import org.eclipse.wst.jsdt.internal.ui.dialogs.StatusInfo;
-import org.eclipse.wst.jsdt.internal.ui.dialogs.TextFieldNavigationHandler;
-import org.eclipse.wst.jsdt.internal.ui.javaeditor.JavaSourceViewer;
-import org.eclipse.wst.jsdt.internal.ui.refactoring.RefactoringMessages;
-import org.eclipse.wst.jsdt.internal.ui.util.ExceptionHandler;
-import org.eclipse.wst.jsdt.internal.ui.util.SWTUtil;
-import org.eclipse.wst.jsdt.internal.ui.viewsupport.JavaElementImageProvider;
-import org.eclipse.wst.jsdt.internal.ui.wizards.dialogfields.DialogField;
-import org.eclipse.wst.jsdt.internal.ui.wizards.dialogfields.IDialogFieldListener;
-import org.eclipse.wst.jsdt.internal.ui.wizards.dialogfields.LayoutUtil;
-import org.eclipse.wst.jsdt.internal.ui.wizards.dialogfields.StringDialogField;
-import org.eclipse.wst.jsdt.ui.JavaScriptElementComparator;
-import org.eclipse.wst.jsdt.ui.JavaScriptElementLabelProvider;
-import org.eclipse.wst.jsdt.ui.JavaScriptElementLabels;
-import org.eclipse.wst.jsdt.ui.PreferenceConstants;
-import org.eclipse.wst.jsdt.ui.text.JavaScriptSourceViewerConfiguration;
-import org.eclipse.wst.jsdt.ui.text.JavaScriptTextTools;
-
-/**
- *
- * Wizard page for displaying a tree of similarly named elements renamed along with a
- * type.
- *
- *
- *
- */
-class RenameTypeWizardSimilarElementsPage extends UserInputWizardPage {
-
- public static class EditElementDialog extends StatusDialog implements IDialogFieldListener {
-
- private StringDialogField fNameField;
- private IJavaScriptElement fElementToEdit;
-
- public EditElementDialog(Shell parent, IJavaScriptElement elementToEdit, String newName) {
- super(parent);
- setTitle(RefactoringMessages.RenameTypeWizardSimilarElementsPage_change_element_name);
- setShellStyle(getShellStyle() | SWT.RESIZE);
-
- fElementToEdit= elementToEdit;
-
- fNameField= new StringDialogField();
- fNameField.setDialogFieldListener(this);
- fNameField.setLabelText(RefactoringMessages.RenameTypeWizardSimilarElementsPage_enter_new_name);
-
- fNameField.setText(newName);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
- */
- protected Control createDialogArea(Composite parent) {
- final Composite composite= (Composite) super.createDialogArea(parent);
- LayoutUtil.doDefaultLayout(composite, new DialogField[] { fNameField }, true, SWT.DEFAULT, SWT.DEFAULT);
- fNameField.postSetFocusOnDialogField(parent.getDisplay());
-
- LayoutUtil.setWidthHint(fNameField.getLabelControl(null), convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH));
- Text text= fNameField.getTextControl(null);
- LayoutUtil.setHorizontalGrabbing(text);
- TextFieldNavigationHandler.install(text);
-
- Dialog.applyDialogFont(composite);
- return composite;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.wst.jsdt.internal.ui.wizards.dialogfields.IDialogFieldListener#dialogFieldChanged(org.eclipse.wst.jsdt.internal.ui.wizards.dialogfields.DialogField)
- */
- public void dialogFieldChanged(DialogField field) {
- if (field == fNameField)
- updateStatus(validateSettings());
- }
-
- private IStatus validateSettings() {
- final String name= fNameField.getText();
- if (name.length() == 0) {
- return new StatusInfo(IStatus.ERROR, RefactoringMessages.RenameTypeWizardSimilarElementsPage_name_empty);
- }
- IStatus status= JavaScriptConventions.validateIdentifier(name);
- if (status.matches(IStatus.ERROR))
- return status;
- if (!Checks.startsWithLowerCase(name))
- return new StatusInfo(IStatus.WARNING, RefactoringMessages.RenameTypeWizardSimilarElementsPage_name_should_start_lowercase);
-
- if (fElementToEdit instanceof IMember && ((IMember) fElementToEdit).getDeclaringType() != null) {
- IType type= ((IMember) fElementToEdit).getDeclaringType();
- if (fElementToEdit instanceof IField) {
- final IField f= type.getField(name);
- if (f.exists())
- return new StatusInfo(IStatus.ERROR, RefactoringMessages.RenameTypeWizardSimilarElementsPage_field_exists);
- }
- if (fElementToEdit instanceof IFunction) {
- final IFunction m= type.getFunction(name, ((IFunction) fElementToEdit).getParameterTypes());
- if (m.exists())
- return new StatusInfo(IStatus.ERROR, RefactoringMessages.RenameTypeWizardSimilarElementsPage_method_exists);
- }
- }
-
- // cannot check local variables; no .getLocalVariable(String) in IMember
-
- return StatusInfo.OK_STATUS;
- }
-
- public String getNewName() {
- return fNameField.getText();
- }
- }
-
- private static class SimilarElementTreeContentProvider implements ITreeContentProvider {
-
- private Map/* <IJavaScriptElement,Set<IJavaScriptElement>> */fTreeElementMap;
- private Set/* <IJavaScriptUnit> */fTopLevelElements;
-
- /*
- * @see ITreeContentProvider#getChildren(Object)
- */
- public Object[] getChildren(Object parentElement) {
- final Set children= (Set) fTreeElementMap.get(parentElement);
- if (children != null)
- return children.toArray();
- else
- return new Object[0];
- }
-
- /*
- * @see ITreeContentProvider#getParent(Object)
- */
- public Object getParent(Object element) {
- if (element instanceof IMember || element instanceof ILocalVariable) {
- return ((IJavaScriptElement) element).getParent();
- }
- if (element instanceof IJavaScriptUnit)
- return null;
- Assert.isTrue(false, "Should not get here"); //$NON-NLS-1$
- return null;
- }
-
- /*
- * @see ITreeContentProvider#hasChildren(Object)
- */
- public boolean hasChildren(Object element) {
- return fTreeElementMap.containsKey(element);
- }
-
- /*
- * @see IStructuredContentProvider#getElements(Object)
- */
- public Object[] getElements(Object inputElement) {
- Assert.isTrue(inputElement == null || inputElement instanceof Map);
- return fTopLevelElements.toArray();
- }
-
- /*
- * @see IContentProvider#dispose()
- */
- public void dispose() {
- fTreeElementMap.clear();
- fTreeElementMap= null;
- fTopLevelElements= null;
- }
-
- /*
- * @see IContentProvider#inputChanged(Viewer, Object, Object)
- */
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- Assert.isTrue(newInput == null || newInput instanceof Map);
- if (newInput == null)
- return;
- final Map similarElementsMap= (Map) newInput;
- final IJavaScriptElement[] similarElements= (IJavaScriptElement[]) similarElementsMap.keySet().toArray(new IJavaScriptElement[0]);
- fTreeElementMap= new HashMap();
- fTopLevelElements= new HashSet();
- for (int i= 0; i < similarElements.length; i++) {
- final IType declaring= (IType) similarElements[i].getAncestor(IJavaScriptElement.TYPE);
- if (similarElements[i] instanceof IMember) {
- // methods, fields, initializers, inner types
- addToMap(declaring, similarElements[i]);
- } else {
- // local variables
- final IJavaScriptElement parent= similarElements[i].getParent();
- if (parent instanceof IMember) {
- // parent is a method or an initializer
- addToMap(parent, similarElements[i]);
- addToMap(declaring, parent);
- }
- }
- handleDeclaring(declaring);
- }
- }
-
- private void handleDeclaring(final IJavaScriptElement someType) {
-
- final IJavaScriptElement enclosing= someType.getParent();
- if (enclosing instanceof IJavaScriptUnit) {
- fTopLevelElements.add(someType.getParent());
- addToMap(someType.getParent(), someType);
- } else {
- addToMap(enclosing, someType);
- handleDeclaring(enclosing);
- }
- }
-
- private void addToMap(final IJavaScriptElement key, final IJavaScriptElement element) {
- Set elements= (Set) fTreeElementMap.get(key);
- if (elements == null) {
- elements= new HashSet();
- fTreeElementMap.put(key, elements);
- }
- elements.add(element);
- }
-
- }
-
- private static class SimilarLabelProvider extends JavaScriptElementLabelProvider {
-
- private Map fDescriptorImageMap= new HashMap();
- private Map fElementToNewName;
-
- public SimilarLabelProvider() {
- super(JavaScriptElementLabelProvider.SHOW_DEFAULT | JavaScriptElementLabelProvider.SHOW_SMALL_ICONS);
- }
-
- public void initialize(Map elementToNewName) {
- this.fElementToNewName= elementToNewName;
- }
-
- public void dispose() {
- for (Iterator iter= fDescriptorImageMap.values().iterator(); iter.hasNext();) {
- Image image= (Image) iter.next();
- image.dispose();
- }
- super.dispose();
- }
-
- private Image manageImageDescriptor(ImageDescriptor descriptor) {
- Image image= (Image) fDescriptorImageMap.get(descriptor);
- if (image == null) {
- image= descriptor.createImage();
- fDescriptorImageMap.put(descriptor, image);
- }
- return image;
- }
-
- public Image getImage(Object element) {
- if (isSimilarElement(element))
- return manageImageDescriptor(JavaPluginImages.DESC_OBJS_DEFAULT_CHANGE);
- return super.getImage(element);
- }
-
- public Image getJavaImage(Object element) {
- return super.getImage(element);
- }
-
- public String getText(Object element) {
- if (isSimilarElement(element)) {
- return Messages.format(RefactoringMessages.RenameTypeWizardSimilarElementsPage_rename_to, new String[] { super.getText(element), (String)fElementToNewName.get(element) } );
- }
- return super.getText(element);
- }
-
- private boolean isSimilarElement(Object element) {
- return fElementToNewName.containsKey(element);
- }
-
- }
-
- private static class SimilarElementComparator extends JavaScriptElementComparator {
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.wst.jsdt.ui.JavaElementSorter#category(java.lang.Object)
- */
- public int category(Object element) {
-
- /*
- * We'd like to present the elements in the same order as they
- * appear in the source. This can be achieved by assigning a
- * distinct category to every element; the category being derived
- * from the source position of the element.
- */
-
- ISourceRange sourceRange= null;
- if (element instanceof IMember) {
- IMember member= (IMember) element;
- try {
- sourceRange= member.getNameRange();
- } catch (JavaScriptModelException e) {
- // fall through
- }
- }
- if (element instanceof ILocalVariable) {
- ILocalVariable var= (ILocalVariable) element;
- sourceRange= var.getNameRange();
- }
-
- if (sourceRange != null)
- return 100 + sourceRange.getOffset(); // +100: safe distance from all other categories.
-
- return super.category(element);
- }
- }
-
- public static final String PAGE_NAME= "SimilarElementSelectionPage"; //$NON-NLS-1$
-
- private final long LABEL_FLAGS= JavaScriptElementLabels.DEFAULT_QUALIFIED | JavaScriptElementLabels.ROOT_POST_QUALIFIED | JavaScriptElementLabels.APPEND_ROOT_PATH | JavaScriptElementLabels.M_PARAMETER_TYPES
- | JavaScriptElementLabels.M_PARAMETER_NAMES | JavaScriptElementLabels.M_APP_RETURNTYPE | JavaScriptElementLabels.M_EXCEPTIONS | JavaScriptElementLabels.F_APP_TYPE_SIGNATURE | JavaScriptElementLabels.T_TYPE_PARAMETERS;
-
- private Label fSimilarElementsLabel;
- private SourceViewer fSourceViewer;
- private ContainerCheckedTreeViewer fTreeViewer;
- private SimilarLabelProvider fTreeViewerLabelProvider;
- private Map fSimilarElementsToNewName;
- private Button fEditElementButton;
- private boolean fWasInitialized;
- private CLabel fCurrentElementLabel;
-
- public RenameTypeWizardSimilarElementsPage() {
- super(PAGE_NAME);
- }
-
- // --- UI creation
-
- public void createControl(Composite parent) {
-
- ViewForm viewForm= new ViewForm(parent, SWT.BORDER | SWT.FLAT);
-
- Composite inner= new Composite(viewForm, SWT.NULL);
- GridLayout layout= new GridLayout();
- inner.setLayout(layout);
-
- createTreeAndSourceViewer(inner);
- createButtonComposite(inner);
- viewForm.setContent(inner);
-
- setControl(viewForm);
-
- Dialog.applyDialogFont(viewForm);
- PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), IJavaHelpContextIds.RENAME_TYPE_WIZARD_PAGE);
- }
-
- private void createTreeAndSourceViewer(Composite superComposite) {
- SashForm composite= new SashForm(superComposite, SWT.HORIZONTAL);
- initializeDialogUnits(superComposite);
- GridData gd= new GridData(GridData.FILL_BOTH);
- gd.heightHint= convertHeightInCharsToPixels(20);
- gd.widthHint= convertWidthInCharsToPixels(10);
- composite.setLayoutData(gd);
- GridLayout layout= new GridLayout();
- layout.numColumns= 2;
- layout.marginWidth= 0;
- layout.marginHeight= 0;
- composite.setLayout(layout);
-
- createSimilarElementTreeComposite(composite);
- createSourceViewerComposite(composite);
- composite.setWeights(new int[] { 50, 50 });
- }
-
- private void createSimilarElementTreeComposite(Composite parent) {
- Composite composite= new Composite(parent, SWT.NONE);
- composite.setLayoutData(new GridData(GridData.FILL_BOTH));
- GridLayout layout= new GridLayout();
- layout.marginWidth= 0;
- layout.marginHeight= 0;
- composite.setLayout(layout);
-
- createTypeHierarchyLabel(composite);
- createTreeViewer(composite);
- }
-
- private void createTypeHierarchyLabel(Composite composite) {
- fSimilarElementsLabel= new Label(composite, SWT.WRAP);
- GridData gd= new GridData(GridData.FILL_HORIZONTAL);
- gd.heightHint= JavaElementImageProvider.SMALL_SIZE.x;
- fSimilarElementsLabel.setLayoutData(gd);
- fSimilarElementsLabel.setText(RefactoringMessages.RenameTypeWizardSimilarElementsPage_review_similar_elements);
- }
-
- private void createTreeViewer(Composite composite) {
- Tree tree= new Tree(composite, SWT.CHECK | SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL);
- tree.setLayoutData(new GridData(GridData.FILL_BOTH));
- fTreeViewer= new ContainerCheckedTreeViewer(tree);
- fTreeViewer.setUseHashlookup(true);
- fTreeViewer.setComparator(new SimilarElementComparator());
- fTreeViewer.setContentProvider(new SimilarElementTreeContentProvider());
- fTreeViewerLabelProvider= new SimilarLabelProvider();
- fTreeViewer.setLabelProvider(fTreeViewerLabelProvider);
- fTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
-
- public void selectionChanged(SelectionChangedEvent event) {
- RenameTypeWizardSimilarElementsPage.this.treeViewerSelectionChanged(event);
- }
- });
- fTreeViewer.addDoubleClickListener(new IDoubleClickListener() {
-
- public void doubleClick(DoubleClickEvent event) {
- RenameTypeWizardSimilarElementsPage.this.editCurrentElement();
- }
- });
- }
-
- private void createSourceViewerComposite(Composite parent) {
- Composite c= new Composite(parent, SWT.NONE);
- c.setLayoutData(new GridData(GridData.FILL_BOTH));
- GridLayout layout= new GridLayout();
- layout.marginWidth= 0;
- layout.marginHeight= 0;
- c.setLayout(layout);
-
- createSourceViewerLabel(c);
- createSourceViewer(c);
- }
-
- private void createSourceViewerLabel(Composite c) {
- fCurrentElementLabel= new CLabel(c, SWT.NONE);
- GridData gd= new GridData(GridData.FILL_HORIZONTAL);
- gd.heightHint= JavaElementImageProvider.SMALL_SIZE.x;
- fCurrentElementLabel.setText(RefactoringMessages.RenameTypeWizardSimilarElementsPage_select_element_to_view_source);
- fCurrentElementLabel.setLayoutData(gd);
- }
-
- private void createSourceViewer(Composite c) {
- IPreferenceStore store= JavaScriptPlugin.getDefault().getCombinedPreferenceStore();
- fSourceViewer= new JavaSourceViewer(c, null, null, false, SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION, store);
- fSourceViewer.configure(new JavaScriptSourceViewerConfiguration(getJavaTextTools().getColorManager(), store, null, null));
- fSourceViewer.setEditable(false);
- fSourceViewer.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));
- fSourceViewer.getControl().setFont(JFaceResources.getFont(PreferenceConstants.EDITOR_TEXT_FONT));
- Document document= new Document();
- getJavaTextTools().setupJavaDocumentPartitioner(document);
- fSourceViewer.setDocument(document);
- }
-
- private static JavaScriptTextTools getJavaTextTools() {
- return JavaScriptPlugin.getDefault().getJavaTextTools();
- }
-
- private void createButtonComposite(Composite superComposite) {
- Composite buttonComposite= new Composite(superComposite, SWT.NONE);
- buttonComposite.setLayoutData(new GridData());
- GridLayout layout= new GridLayout(2, false);
- layout.marginWidth= 0;
- buttonComposite.setLayout(layout);
-
- Button returnToDefaults= new Button(buttonComposite, SWT.PUSH);
- returnToDefaults.setText(RefactoringMessages.RenameTypeWizardSimilarElementsPage_restore_defaults);
- returnToDefaults.setLayoutData(new GridData());
- SWTUtil.setButtonDimensionHint(returnToDefaults);
- returnToDefaults.addSelectionListener(new SelectionAdapter() {
-
- public void widgetSelected(SelectionEvent e) {
- RenameTypeWizardSimilarElementsPage.this.resetDataInRefAndUI();
- }
- });
- fEditElementButton= new Button(buttonComposite, SWT.PUSH);
- fEditElementButton.setText(RefactoringMessages.RenameTypeWizardSimilarElementsPage_change_name);
- fEditElementButton.setLayoutData(new GridData());
- fEditElementButton.setEnabled(false);
- SWTUtil.setButtonDimensionHint(fEditElementButton);
- fEditElementButton.addSelectionListener(new SelectionAdapter() {
-
- public void widgetSelected(SelectionEvent e) {
- RenameTypeWizardSimilarElementsPage.this.editCurrentElement();
- }
- });
- }
-
-
- // ---------------------- Acting
-
- public void setVisible(boolean visible) {
- if (visible) {
- initializeUIFromRef();
- }
- super.setVisible(visible);
- selectFirstElement();
- }
-
- private void selectFirstElement() {
- if (fTreeViewer.getTree().getItemCount() > 0) {
- TreeItem item= fTreeViewer.getTree().getItem(0);
- if (item.getData() != null) {
- fTreeViewer.reveal(item.getData());
- Object data= getFirstSimilarElement(item);
- if (data != null) {
- fTreeViewer.setSelection(new StructuredSelection(data));
- }
- }
- }
- fTreeViewer.getTree().setFocus();
- }
-
- private Object getFirstSimilarElement(TreeItem item) {
- Object data= item.getData();
- if (isSimilarElement(data)) {
- return data;
- } else {
- TreeItem[] children= item.getItems();
- for (int i= 0; i < children.length; i++) {
- Object childData= getFirstSimilarElement(children[i]);
- if (childData != null)
- return childData;
- }
- }
- return null;
- }
-
- private void initializeUIFromRef() {
- // Get data from the refactoring
- final Map elementsToNewNames= getRenameTypeProcessor().getSimilarElementsToNewNames();
- try {
- // To prevent flickering, stop redrawing
- getShell().setRedraw(false);
- if (fSimilarElementsToNewName == null || elementsToNewNames != fSimilarElementsToNewName) {
- fSimilarElementsToNewName= elementsToNewNames;
- fTreeViewerLabelProvider.initialize(fSimilarElementsToNewName);
- fTreeViewer.setInput(fSimilarElementsToNewName);
- }
- fTreeViewer.expandAll();
- restoreSelectionAndNames(getRenameTypeProcessor().getSimilarElementsToSelection());
- } finally {
- getShell().setRedraw(true);
- }
- fWasInitialized= true;
- }
-
- private void initializeRefFromUI() {
- IJavaScriptElement[] selected= getCheckedSimilarElements();
- Map selection= getRenameTypeProcessor().getSimilarElementsToSelection();
- for (Iterator iter= selection.keySet().iterator(); iter.hasNext();) {
- IJavaScriptElement element= (IJavaScriptElement) iter.next();
- selection.put(element, Boolean.FALSE);
- }
- for (int i= 0; i < selected.length; i++)
- selection.put(selected[i], Boolean.TRUE);
-
- }
-
- private void resetDataInRefAndUI() {
- getRenameTypeProcessor().resetSelectedSimilarElements();
- restoreSelectionAndNames(getRenameTypeProcessor().getSimilarElementsToSelection());
- }
-
- protected void editCurrentElement() {
- IStructuredSelection selection= (IStructuredSelection) fTreeViewer.getSelection();
- if ( (selection != null) && isSimilarElement(selection.getFirstElement())) {
- IJavaScriptElement element= (IJavaScriptElement) selection.getFirstElement();
- String newName= (String) fSimilarElementsToNewName.get(element);
- if (newName == null)
- return;
- EditElementDialog dialog= new EditElementDialog(getShell(), element, newName);
- if (dialog.open() == Window.OK) {
- String changedName= dialog.getNewName();
- if (!changedName.equals(newName)) {
- fSimilarElementsToNewName.put(element, changedName);
- fTreeViewer.update(element, null);
- }
- }
- }
- }
-
- private void restoreSelectionAndNames(final Map selection) {
- final Map selectedElements= selection;
- for (Iterator iter= selectedElements.keySet().iterator(); iter.hasNext();) {
- IJavaScriptElement element= (IJavaScriptElement) iter.next();
- boolean isSelected= ((Boolean) selectedElements.get(element)).booleanValue();
- fTreeViewer.setChecked(element, isSelected);
- fTreeViewer.update(element, null);
- }
- }
-
- // ------------ Navigation
-
- /*
- * @see IWizardPage#getNextPage()
- */
- public IWizardPage getNextPage() {
- if (fWasInitialized)
- initializeRefFromUI();
- // computes the input successor page
- // (=create changes)
- IWizardPage nextPage= super.getNextPage();
- if (nextPage != this) // if user pressed cancel, then the next page is the current page
- nextPage.setPreviousPage(this);
- return nextPage;
- }
-
-
- /*
- * @see IWizardPage#getPreviousPage()
- */
- public IWizardPage getPreviousPage() {
- if (fWasInitialized)
- initializeRefFromUI();
- return super.getPreviousPage();
- }
-
- /*
- * @see RefactoringWizardPage#performFinish()
- */
- protected boolean performFinish() {
- initializeRefFromUI();
- return super.performFinish();
- }
-
- // ------------ Helper
-
- private boolean isSimilarElement(Object element) {
- if (!fWasInitialized)
- return false;
-
- return fSimilarElementsToNewName.containsKey(element);
- }
-
- private void treeViewerSelectionChanged(SelectionChangedEvent event) {
- try {
- final IJavaScriptElement selection= getFirstSelectedSourceReference(event);
- setSourceViewerContents(selection);
- fEditElementButton.setEnabled(selection != null && (isSimilarElement(selection)));
- fCurrentElementLabel.setText(selection != null ? JavaScriptElementLabels.getElementLabel(selection, LABEL_FLAGS) : RefactoringMessages.RenameTypeWizardSimilarElementsPage_select_element_to_view_source);
- fCurrentElementLabel.setImage(selection != null ? fTreeViewerLabelProvider.getJavaImage(selection) : null);
- } catch (JavaScriptModelException e) {
- ExceptionHandler.handle(e, RefactoringMessages.RenameTypeWizard_defaultPageTitle, RefactoringMessages.RenameTypeWizard_unexpected_exception);
- }
- }
-
- private IJavaScriptElement getFirstSelectedSourceReference(SelectionChangedEvent event) {
- ISelection s= event.getSelection();
- if (! (s instanceof IStructuredSelection))
- return null;
- IStructuredSelection strSel= (IStructuredSelection) s;
- if (strSel.size() != 1)
- return null;
- Object first= strSel.getFirstElement();
- if (! (first instanceof IJavaScriptElement))
- return null;
- return (IJavaScriptElement) first;
- }
-
- private void setSourceViewerContents(IJavaScriptElement el) throws JavaScriptModelException {
- String EMPTY= ""; //$NON-NLS-1$
- if (el == null) {
- fSourceViewer.getDocument().set(EMPTY);
- return;
- }
- IJavaScriptUnit element= (IJavaScriptUnit) el.getAncestor(IJavaScriptElement.JAVASCRIPT_UNIT);
- if (element == null) {
- fSourceViewer.getDocument().set(EMPTY);
- return;
- }
-
- String contents= element.getSource();
- try {
- fSourceViewer.setRedraw(false);
- fSourceViewer.getDocument().set(contents == null ? EMPTY : contents);
- ISourceRange sr= getNameRange(el);
- if (sr != null) {
- fSourceViewer.setSelectedRange(sr.getOffset(), sr.getLength());
- }
- } finally {
- fSourceViewer.setRedraw(true);
- }
- }
-
- private ISourceRange getNameRange(IJavaScriptElement element) throws JavaScriptModelException {
- if (element instanceof IMember)
- return ((IMember) element).getNameRange();
- else if (element instanceof ILocalVariable)
- return ((ILocalVariable) element).getNameRange();
- else
- return null;
- }
-
- private IJavaScriptElement[] getCheckedSimilarElements() {
- Object[] checked= fTreeViewer.getCheckedElements();
- List elements= new ArrayList(checked.length);
- for (int i= 0; i < checked.length; i++) {
- if (isSimilarElement(checked[i]))
- elements.add(checked[i]);
- }
- return (IJavaScriptElement[]) elements.toArray(new IJavaScriptElement[elements.size()]);
- }
-
- public RenameTypeProcessor getRenameTypeProcessor() {
- RefactoringProcessor proc= ((RenameRefactoring) getRefactoring()).getProcessor();
- if (proc instanceof RenameTypeProcessor)
- return (RenameTypeProcessor) proc;
- else if (proc instanceof RenameCompilationUnitProcessor) {
- RenameCompilationUnitProcessor rcu= (RenameCompilationUnitProcessor) proc;
- return rcu.getRenameTypeProcessor();
- }
- Assert.isTrue(false); // Should never get here
- return null;
- }
-}

Back to the top