| /******************************************************************************* |
| * Copyright (c) 2000, 2004 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Common Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/cpl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.ltk.internal.ui.refactoring; |
| |
| import java.util.HashMap; |
| import java.util.Iterator; |
| import java.util.Map; |
| |
| import org.eclipse.core.runtime.IAdaptable; |
| |
| import org.eclipse.core.resources.IFile; |
| |
| import org.eclipse.swt.graphics.Image; |
| |
| import org.eclipse.jface.resource.ImageDescriptor; |
| import org.eclipse.jface.viewers.LabelProvider; |
| import org.eclipse.jface.viewers.LabelProviderChangedEvent; |
| |
| import org.eclipse.ui.model.IWorkbenchAdapter; |
| |
| import org.eclipse.ltk.core.refactoring.Change; |
| import org.eclipse.ltk.core.refactoring.CompositeChange; |
| import org.eclipse.ltk.core.refactoring.TextFileChange; |
| |
| class ChangeElementLabelProvider extends LabelProvider { |
| |
| private Map fDescriptorImageMap= new HashMap(); |
| private boolean fShowQualification= true; |
| |
| public ChangeElementLabelProvider() { |
| } |
| |
| public void setShowQualification(boolean showQualification) { |
| fShowQualification= showQualification; |
| LabelProviderChangedEvent event= new LabelProviderChangedEvent(this, null); |
| fireLabelProviderChanged(event); |
| } |
| |
| public Image getImage(Object object) { |
| if (object instanceof DefaultChangeElement) { |
| Object element= ((DefaultChangeElement)object).getChange(); |
| return doGetImage(element); |
| } else if (object instanceof TextEditChangeElement) { |
| Object element= ((TextEditChangeElement)object).getTextEditChange(); |
| return doGetImage(element); |
| } else if (object instanceof PseudoJavaChangeElement) { |
| PseudoJavaChangeElement element= (PseudoJavaChangeElement)object; |
| IAdaptable jElement= element.getJavaElement(); |
| IWorkbenchAdapter adapter= (IWorkbenchAdapter)jElement.getAdapter(IWorkbenchAdapter.class); |
| if (adapter != null) { |
| return manageImageDescriptor(adapter.getImageDescriptor(jElement)); |
| } |
| } |
| return super.getImage(object); |
| } |
| |
| public String getText(Object object) { |
| if (object instanceof DefaultChangeElement) { |
| Change change= ((DefaultChangeElement)object).getChange(); |
| if (!fShowQualification) |
| return change.getName(); |
| |
| if (change instanceof TextFileChange) { |
| IFile file= ((TextFileChange)change).getFile(); |
| return RefactoringUIMessages.getFormattedString( |
| "PreviewWizardPage.changeElementLabelProvider.textFormat", //$NON-NLS-1$ |
| new String[] {file.getName(), getPath(file)}); |
| } else { |
| return change.getName(); |
| } |
| } else if (object instanceof TextEditChangeElement) { |
| TextEditChangeElement element= (TextEditChangeElement)object; |
| String result= element.getTextEditChange().getName(); |
| /* |
| if ((fJavaElementFlags & JavaElementLabelProvider.SHOW_POST_QUALIFIED) != 0) { |
| ChangeElement parent= getParent(element); |
| if (parent != null) |
| result= RefactoringUIMessages.getFormattedString( |
| "PreviewWizardPage.changeElementLabelProvider.textFormatEdit", //$NON-NLS-1$ |
| new String[] {getText(parent), result}); |
| } |
| */ |
| return result; |
| } else if (object instanceof PseudoJavaChangeElement) { |
| PseudoJavaChangeElement element= (PseudoJavaChangeElement)object; |
| IAdaptable jElement= element.getJavaElement(); |
| IWorkbenchAdapter adapter= (IWorkbenchAdapter)jElement.getAdapter(IWorkbenchAdapter.class); |
| if (adapter != null) { |
| return adapter.getLabel(jElement); |
| } |
| } |
| return super.getText(object); |
| } |
| |
| public void dispose() { |
| for (Iterator iter= fDescriptorImageMap.values().iterator(); iter.hasNext(); ) { |
| Image image= (Image)iter.next(); |
| image.dispose(); |
| } |
| super.dispose(); |
| } |
| |
| private Image doGetImage(Object element) { |
| ImageDescriptor descriptor= null; |
| if (descriptor == null) { |
| if (element instanceof TextEditChangeElement) { |
| descriptor= RefactoringPluginImages.DESC_OBJS_TEXT_EDIT; |
| } else if (element instanceof CompositeChange) { |
| descriptor= RefactoringPluginImages.DESC_OBJS_COMPOSITE_CHANGE; |
| } /* else if (element instanceof CompilationUnitChange) { |
| descriptor= RefactoringPluginImages.DESC_OBJS_CU_CHANGE; |
| } */ else if (element instanceof TextFileChange) { |
| descriptor= RefactoringPluginImages.DESC_OBJS_FILE_CHANGE; |
| } else { |
| descriptor= RefactoringPluginImages.DESC_OBJS_DEFAULT_CHANGE; |
| } |
| } |
| return manageImageDescriptor(descriptor); |
| } |
| |
| private Image manageImageDescriptor(ImageDescriptor descriptor) { |
| Image image= (Image)fDescriptorImageMap.get(descriptor); |
| if (image == null) { |
| image= descriptor.createImage(); |
| fDescriptorImageMap.put(descriptor, image); |
| } |
| return image; |
| } |
| |
| private String getPath(IFile file) { |
| StringBuffer result= new StringBuffer(file.getProject().getName()); |
| String projectRelativePath= file.getParent().getProjectRelativePath().toString(); |
| if (projectRelativePath.length() > 0) { |
| result.append('/'); |
| result.append(projectRelativePath); |
| } |
| return result.toString(); |
| } |
| } |
| |