blob: 076f7e18e318460d5cf944970f52f68679919cef [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2018 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
*
*******************************************************************************/
package org.eclipse.dltk.internal.ui.util;
import org.eclipse.dltk.core.IProjectFragment;
import org.eclipse.dltk.core.search.MethodNameMatch;
import org.eclipse.dltk.core.search.TypeNameMatch;
import org.eclipse.dltk.internal.ui.DLTKUIMessages;
import org.eclipse.dltk.ui.DLTKPluginImages;
import org.eclipse.dltk.ui.IDLTKUILanguageToolkit;
import org.eclipse.dltk.ui.ScriptElementLabels;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
public class MethodNameMatchLabelProvider extends LabelProvider {
public static final int SHOW_FULLYQUALIFIED = 0x01;
public static final int SHOW_PACKAGE_POSTFIX = 0x02;
public static final int SHOW_PACKAGE_ONLY = 0x04;
public static final int SHOW_ROOT_POSTFIX = 0x08;
public static final int SHOW_TYPE_ONLY = 0x10;
public static final int SHOW_TYPE_CONTAINER_ONLY = 0x20;
public static final int SHOW_POST_QUALIFIED = 0x40;
private static final Image METHOD_ICON = DLTKPluginImages
.get(DLTKPluginImages.IMG_METHOD_PUBLIC);
private static final Image PKG_ICON = DLTKPluginImages
.get(DLTKPluginImages.IMG_OBJS_PACKAGE);
private int fFlags;
private IDLTKUILanguageToolkit fToolkit;
public MethodNameMatchLabelProvider(int flags,
IDLTKUILanguageToolkit toolkit) {
fFlags = flags;
this.fToolkit = toolkit;
}
private boolean isSet(int flag) {
return (fFlags & flag) != 0;
}
private String getPackageName(String packName) {
if (packName.length() == 0) {
return DLTKUIMessages.TypeInfoLabelProvider_default_package;
}
return packName;
}
@Override
public String getText(Object element) {
if (!(element instanceof TypeNameMatch))
return super.getText(element);
TypeNameMatch typeRef = (TypeNameMatch) element;
StringBuffer buf = new StringBuffer();
if (isSet(SHOW_TYPE_ONLY)) {
buf.append(typeRef.getSimpleTypeName());
} else if (isSet(SHOW_TYPE_CONTAINER_ONLY)) {
String containerName = typeRef.getTypeContainerName();
buf.append(getPackageName(containerName));
} else if (isSet(SHOW_PACKAGE_ONLY)) {
String packName = typeRef.getPackageName();
buf.append(getPackageName(packName));
} else {
if (isSet(SHOW_FULLYQUALIFIED)) {
buf.append(typeRef.getFullyQualifiedName());
} else if (isSet(SHOW_POST_QUALIFIED)) {
buf.append(typeRef.getSimpleTypeName());
String containerName = typeRef.getTypeContainerName();
if (containerName != null && containerName.length() > 0) {
buf.append(ScriptElementLabels.CONCAT_STRING);
buf.append(containerName);
}
} else {
buf.append(typeRef.getTypeQualifiedName());
}
if (isSet(SHOW_PACKAGE_POSTFIX)) {
buf.append(ScriptElementLabels.CONCAT_STRING);
String packName = typeRef.getPackageName();
buf.append(getPackageName(packName));
}
}
if (isSet(SHOW_ROOT_POSTFIX)) {
buf.append(ScriptElementLabels.CONCAT_STRING);
IProjectFragment root = typeRef.getProjectFragment();
ScriptElementLabels labels = this.fToolkit.getScriptElementLabels();
labels.getProjectFragmentLabel(root,
ScriptElementLabels.ROOT_QUALIFIED, buf);
}
return buf.toString();
}
@Override
public Image getImage(Object element) {
if (!(element instanceof MethodNameMatch))
return super.getImage(element);
if (isSet(SHOW_TYPE_CONTAINER_ONLY)) {
MethodNameMatch methodRef = (MethodNameMatch) element;
if (methodRef.getPackageName()
.equals(methodRef.getMethodContainerName()))
return PKG_ICON;
return METHOD_ICON;
} else if (isSet(SHOW_PACKAGE_ONLY)) {
return PKG_ICON;
} else {
return METHOD_ICON;
}
}
}