/******************************************************************************* * Copyright (c) 2005, 2012 eBay Inc. * 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.vjet.eclipse.internal.ui.text.completion; import org.eclipse.vjet.dsf.jst.IJstMethod; import org.eclipse.vjet.dsf.jst.IJstNode; import org.eclipse.vjet.dsf.jst.IJstProperty; import org.eclipse.vjet.dsf.jst.IJstType; import org.eclipse.vjet.dsf.jst.declaration.JstArg; import org.eclipse.vjet.dsf.jst.declaration.JstModifiers; import org.eclipse.vjet.dsf.jst.declaration.JstPackage; import org.eclipse.vjet.dsf.jst.token.ILHS; import org.eclipse.vjet.eclipse.ui.VjetUIImages; import org.eclipse.vjet.eclipse.ui.VjoElementImageDescriptor; import org.eclipse.vjet.eclipse.ui.VjoElementImageProvider; import org.eclipse.dltk.mod.ast.Modifiers; import org.eclipse.dltk.mod.core.Flags; import org.eclipse.dltk.mod.ui.DLTKPluginImages; import org.eclipse.dltk.mod.ui.ScriptElementImageProvider; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.graphics.Image; public class VjoProposalLabelProvider { public static ImageDescriptor getScriptImageDescriptor(IJstNode node) { String nodeType = node.getClass().getName(); ImageDescriptor descriptor = getBaseImage(node); int adornmentFlags = 0; JstModifiers modifies = VjoProposalLabelUtil.getModifiers(node); adornmentFlags = VjoProposalLabelUtil.getVjoModifierForImage(modifies); String flagsStr = modifies.toString(); String key = nodeType + ":" + flagsStr; if (VjetUIImages.getImage(key) != null) { return VjetUIImages.getImageDescriptor(key); } else { if (modifies != null && adornmentFlags != 0) { descriptor = new VjoElementImageDescriptor(descriptor, adornmentFlags, VjoElementImageProvider.SMALL_SIZE); VjetUIImages.put(key, descriptor); } VjetUIImages.put(key, descriptor); return VjetUIImages.getImageDescriptor(key); } } public static Image getScriptImage(IJstNode node) { String key = node.getClass().getName(); ImageDescriptor descriptor = getBaseImage(node); int adornmentFlags = 0; JstModifiers modifies = VjoProposalLabelUtil.getModifiers(node); adornmentFlags = VjoProposalLabelUtil.getVjoModifierForImage(modifies); if (modifies != null) { key = key + ":" + modifies.toString(); } if (VjetUIImages.getImage(key) != null) { return VjetUIImages.getImage(key); } else { if (modifies != null && adornmentFlags != 0) { descriptor = new VjoElementImageDescriptor(descriptor, adornmentFlags, VjoElementImageProvider.SMALL_SIZE); VjetUIImages.put(key, descriptor); } VjetUIImages.put(key, descriptor); return VjetUIImages.getImage(key); } } public static Image getMethodImage(int flags) { if ((flags & Modifiers.AccPrivate) != 0) { return DLTKPluginImages.get(DLTKPluginImages.IMG_METHOD_PRIVATE); } if ((flags & Modifiers.AccProtected) != 0) { return DLTKPluginImages.get(DLTKPluginImages.IMG_METHOD_PROTECTED); } if ((flags & Modifiers.AccPublic) != 0) { return DLTKPluginImages.get(DLTKPluginImages.IMG_METHOD_PUBLIC); } return DLTKPluginImages.get(DLTKPluginImages.IMG_METHOD_DEFAULT); } public static Image getTypeImageDescriptor(int flags, boolean useLightIcons) { if (Flags.isInterface(flags)) { if (useLightIcons) { return DLTKPluginImages .get(DLTKPluginImages.IMG_OBJS_INTERFACEALT); } } else if (useLightIcons) { return DLTKPluginImages.get(DLTKPluginImages.IMG_OBJS_CLASSALT); } return getClassImageDescriptor(flags); } private static Image getClassImageDescriptor(int flags) { if ((flags & Modifiers.AccTest) != 0) { return DLTKPluginImages.get(DLTKPluginImages.IMG_OBJS_TEST); } if ((flags & Modifiers.AccTestCase) != 0) { return DLTKPluginImages.get(DLTKPluginImages.IMG_OBJS_TESTCASE); } if ((flags & Modifiers.AccNameSpace) != 0) { return DLTKPluginImages.get(DLTKPluginImages.IMG_OBJS_NAMESPACE); } if ((flags & Modifiers.AccModule) != 0) { return DLTKPluginImages.get(DLTKPluginImages.IMG_OBJS_MODULE); } if ((flags & Modifiers.AccInterface) != 0) { return DLTKPluginImages.get(DLTKPluginImages.IMG_OBJS_INTERFACE); } return DLTKPluginImages.get(DLTKPluginImages.IMG_OBJS_CLASS); } private static ImageDescriptor getBaseImage(IJstNode node) { if (node instanceof IJstMethod) { IJstMethod method = (IJstMethod) node; JstModifiers modifies = method.getModifiers(); int flag = VjoProposalLabelUtil.getDltkModifyFlag(modifies); return ScriptElementImageProvider.getMethodImageDescriptor(flag); } else if (node instanceof IJstProperty) { IJstProperty property = (IJstProperty) node; JstModifiers modifies = property.getModifiers(); int flag = VjoProposalLabelUtil.getDltkModifyFlag(modifies); return ScriptElementImageProvider.getFieldImageDescriptor(flag); } else if (node instanceof IJstType) { IJstType type = (IJstType) node; JstModifiers modifies = type.getModifiers(); int flag = VjoProposalLabelUtil.getDltkModifyFlag(modifies); return ScriptElementImageProvider.getTypeImageDescriptor(flag, false); } else if (node instanceof JstArg) { return DLTKPluginImages .getDescriptor(DLTKPluginImages.IMG_OBJS_LOCAL_VARIABLE); } else if (node instanceof ILHS) { return DLTKPluginImages .getDescriptor(DLTKPluginImages.IMG_OBJS_LOCAL_VARIABLE); } else if (node instanceof JstPackage) { return DLTKPluginImages .getDescriptor(DLTKPluginImages.IMG_OBJS_PACKAGE); } else { return null; } } }