/*
* #%~
* org.overture.ide.ui
* %%
* Copyright (C) 2008 - 2014 Overture
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #~%
*/
package org.overture.ide.ui.internal.viewsupport;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.ui.model.IWorkbenchAdapter;
import org.overture.ast.definitions.AClassClassDefinition;
import org.overture.ast.definitions.AExplicitFunctionDefinition;
import org.overture.ast.definitions.AExplicitOperationDefinition;
import org.overture.ast.definitions.AImplicitFunctionDefinition;
import org.overture.ast.definitions.AImplicitOperationDefinition;
import org.overture.ast.definitions.AInheritedDefinition;
import org.overture.ast.definitions.AInstanceVariableDefinition;
import org.overture.ast.definitions.ALocalDefinition;
import org.overture.ast.definitions.ANamedTraceDefinition;
import org.overture.ast.definitions.APerSyncDefinition;
import org.overture.ast.definitions.ARenamedDefinition;
import org.overture.ast.definitions.ASystemClassDefinition;
import org.overture.ast.definitions.ATypeDefinition;
import org.overture.ast.definitions.AUntypedDefinition;
import org.overture.ast.definitions.AValueDefinition;
import org.overture.ast.definitions.PDefinition;
import org.overture.ast.definitions.SClassDefinition;
import org.overture.ast.modules.AFromModuleImports;
import org.overture.ast.modules.AModuleImports;
import org.overture.ast.modules.AModuleModules;
import org.overture.ast.modules.AOperationValueImport;
import org.overture.ast.types.AAccessSpecifierAccessSpecifier;
import org.overture.ast.types.AFieldField;
import org.overture.ide.ui.VdmPluginImages;
import org.overture.ide.ui.VdmUIPlugin;
public class VdmElementImageProvider {
/**
* Flags for the JavaImageLabelProvider: Generate images with overlays.
*/
public final static int OVERLAY_ICONS = 0x1;
/**
* Generate small sized images.
*/
public final static int SMALL_ICONS = 0x2;
/**
* Use the 'light' style for rendering types.
*/
public final static int LIGHT_TYPE_ICONS = 0x4;
public static final Point SMALL_SIZE = new Point(16, 16);
public static final Point BIG_SIZE = new Point(22, 16);
private ImageDescriptorRegistry fRegistry;
public VdmElementImageProvider() {
fRegistry = null; // lazy initialization
}
/**
* Returns the icon for a given element. The icon depends on the element
* type and element properties. If configured, overlay icons are constructed
* for <code>ISourceReference</code>s.
*
* @param element
* the element
* @param flags
* Flags as defined by the JavaImageLabelProvider
* @return return the image or <code>null</code>
*/
public Image getImageLabel(Object element, int flags) {
return getImageLabel(computeDescriptor(element, flags));
}
private Image getImageLabel(ImageDescriptor descriptor) {
if (descriptor == null)
return null;
return getRegistry().get(descriptor);
}
private ImageDescriptorRegistry getRegistry() {
if (fRegistry == null) {
fRegistry = VdmUIPlugin.getImageDescriptorRegistry();
}
return fRegistry;
}
//TODO: this map should be deleted when the AST fix is made
//so that definitions contain a reference to the module they belong
static Map<String,AModuleModules> activeModule = new HashMap<String,AModuleModules>();
protected ImageDescriptor computeDescriptor(Object element, int flags) {
int adornmentFlags = 0;
adornmentFlags = computeVdmAdornmentFlags(element);
if (element instanceof ASystemClassDefinition) {
// activeModule = null;
return VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_OBJS_SYSTEM);
} else if (element instanceof AClassClassDefinition) {
// activeModule = null;
return VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_OBJS_CLASS);
} else if (element instanceof AModuleModules) {
activeModule.put(((AModuleModules)element).getName().getName(), ((AModuleModules)element));
return VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_OBJS_MODULE);
} else if (element instanceof ATypeDefinition) {
return getTypeDefinitionImage((ATypeDefinition) element,
SMALL_ICONS, adornmentFlags);
} else if (element instanceof AInstanceVariableDefinition) {
return getInstanceVariableDefinitionImage(
(AInstanceVariableDefinition) element, SMALL_ICONS,
adornmentFlags);
} else if (element instanceof AExplicitOperationDefinition) {
return getExplicitOperationDefinitionImage(
(AExplicitOperationDefinition) element, SMALL_ICONS,
adornmentFlags);
} else if (element instanceof AExplicitFunctionDefinition) {
return getExplicitFunctionDefinitionImage(
(AExplicitFunctionDefinition) element, SMALL_ICONS,
adornmentFlags);
} else if(element instanceof AImplicitFunctionDefinition){
return getImplicitFunctionDefinitionImage(
(AImplicitFunctionDefinition) element, SMALL_ICONS,
adornmentFlags);
}else if(element instanceof AImplicitOperationDefinition){
return getImplicitOperationDefinitionImage(
(AImplicitOperationDefinition) element, SMALL_ICONS,
adornmentFlags);
}else if(element instanceof APerSyncDefinition){
return getPerSyncDefinitionImage(
(APerSyncDefinition) element, SMALL_ICONS,
adornmentFlags);
}
else if (element instanceof ALocalDefinition) {
return getLocalDefinitionImage((ALocalDefinition) element,
SMALL_ICONS, adornmentFlags);
} else if (element instanceof AValueDefinition) {
return getValueDefinitionImage((AValueDefinition) element,
SMALL_ICONS, adornmentFlags);
} else if (element instanceof ANamedTraceDefinition) {
return getNamedTraceDefinitionImage((ANamedTraceDefinition) element,
SMALL_ICONS, adornmentFlags);
} else if (element instanceof AUntypedDefinition) {
List<PDefinition> definitions = null;
if (((AUntypedDefinition) element).getClassDefinition() != null) {
SClassDefinition classDef = ((AUntypedDefinition) element).getClassDefinition();
definitions = classDef.getDefinitions();
} else {
if (activeModule != null){
AUntypedDefinition untypedDef = (AUntypedDefinition) element;
definitions = activeModule.get(untypedDef.getName().getModule()).getDefs();
}
}
if (definitions != null) {
for (PDefinition def : definitions) {
if (def instanceof AValueDefinition) {
for (int i = 0; i < ((AValueDefinition)def).getDefs().size(); i++) {
if (((AValueDefinition)def).getDefs().get(i).getLocation()
.equals(
((AUntypedDefinition) element)
.getLocation())) {
return getValueDefinitionImage(
(AValueDefinition) def, SMALL_ICONS,
adornmentFlags);
}
}
}
}
}
}
else if (element instanceof AModuleImports) {
return VdmPluginImages.DESC_OBJS_IMPCONT;
}
else if (element instanceof AFromModuleImports) {
return VdmPluginImages.DESC_OBJS_IMPDECL;
}
else if(element instanceof ImportsContainer){
return computeDescriptor(((ImportsContainer) element).getImports(), adornmentFlags);
}
else if (element instanceof IFile) {
IFile file = (IFile) element;
// if (JavaCore.isJavaLikeFileName(file.getName())) {
// return getCUResourceImageDescriptor(file, flags); // image for a
// CU not on the build path
// }
return getWorkbenchImageDescriptor(file, flags);
} else if (element instanceof IAdaptable) {
return getWorkbenchImageDescriptor((IAdaptable) element, flags);
} else if (element instanceof AFieldField){
return getFieldImage((AFieldField) element,
SMALL_ICONS, adornmentFlags);
} else if (element instanceof AInheritedDefinition){
return getInheritedDefinitionImage((AInheritedDefinition)element,SMALL_ICONS,adornmentFlags);
} else if (element instanceof ARenamedDefinition){
return VdmPluginImages.DESC_OBJS_IMPDECL;
} else if(element instanceof AOperationValueImport){
return VdmPluginImages.DESC_METHOD_DEFAULT;
}
return null;
}
private ImageDescriptor getFieldImage(AFieldField element, int smallIcons,
int adornmentFlags) {
ImageDescriptor result = null;
AAccessSpecifierAccessSpecifier as = element.getAccess();
if(as == null)
return result;
Point size = useSmallSize(smallIcons) ? SMALL_SIZE : BIG_SIZE;
if (as.getAccess().toString().equals("private")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_METHOD_PRIVATE),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("public")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_METHOD_PUBLIC),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("protected")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_METHOD_PROTECTED),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("default")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_METHOD_DEFAULT),
adornmentFlags, size);
}
return result;
}
private ImageDescriptor getInheritedDefinitionImage(
AInheritedDefinition element, int smallIcons, int adornmentFlags) {
Point size = useSmallSize(smallIcons) ? SMALL_SIZE : BIG_SIZE;
ImageDescriptor desc = computeDescriptor(element.getSuperdef(),adornmentFlags);
return new VdmElementImageDescriptor(desc, adornmentFlags, size);
}
private ImageDescriptor getImplicitOperationDefinitionImage(
AImplicitOperationDefinition element, int smallIcons,
int adornmentFlags) {
ImageDescriptor result = null;
AAccessSpecifierAccessSpecifier as = element.getAccess();
Point size = useSmallSize(smallIcons) ? SMALL_SIZE : BIG_SIZE;
// result =
// VdmPluginImages.getDescriptor(VdmPluginImages.IMG_METHOD_PRIVATE);
adornmentFlags = adornmentFlags | VdmElementImageDescriptor.FINAL;
if (as.getAccess().toString().equals("private")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_METHOD_PRIVATE),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("public")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_METHOD_PUBLIC),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("protected")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_METHOD_PROTECTED),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("default")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_METHOD_DEFAULT),
adornmentFlags, size);
}
return result;
}
private ImageDescriptor getImplicitFunctionDefinitionImage(
AImplicitFunctionDefinition element, int smallIcons,
int adornmentFlags) {
ImageDescriptor result = null;
AAccessSpecifierAccessSpecifier as = element.getAccess();
Point size = useSmallSize(smallIcons) ? SMALL_SIZE : BIG_SIZE;
// result =
// VdmPluginImages.getDescriptor(VdmPluginImages.IMG_METHOD_PRIVATE);
adornmentFlags = adornmentFlags | VdmElementImageDescriptor.FINAL;
if (as.getAccess().toString().equals("private")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_FUNC_PRIVATE),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("public")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_FUNC_PUBLIC),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("protected")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_FUNC_PROTECTED),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("default")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_FUNC_DEFAULT),
adornmentFlags, size);
}
return result;
}
private ImageDescriptor getExplicitFunctionDefinitionImage(
AExplicitFunctionDefinition element, int renderFlags,
int adornmentFlags) {
ImageDescriptor result = null;
AAccessSpecifierAccessSpecifier as = element.getAccess();
Point size = useSmallSize(renderFlags) ? SMALL_SIZE : BIG_SIZE;
// result =
// VdmPluginImages.getDescriptor(VdmPluginImages.IMG_METHOD_PRIVATE);
//adornmentFlags = adornmentFlags | VdmElementImageDescriptor.FINAL;
if (as.getAccess().toString().equals("private")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_FUNC_PRIVATE),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("public")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_FUNC_PUBLIC),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("protected")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_FUNC_PROTECTED),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("default")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_FUNC_DEFAULT),
adornmentFlags, size);
}
return result;
}
private ImageDescriptor getNamedTraceDefinitionImage(
ANamedTraceDefinition element, int renderFlags, int adornmentFlags) {
//ImageDescriptor result = null;
Point size = useSmallSize(renderFlags) ? SMALL_SIZE : BIG_SIZE;
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_TRACE_DEFAULT),
adornmentFlags, size);
}
private ImageDescriptor getPerSyncDefinitionImage(
APerSyncDefinition element, int renderFlags, int adornmentFlags) {
//ImageDescriptor result = null;
Point size = useSmallSize(renderFlags) ? SMALL_SIZE : BIG_SIZE;
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_OBJS_LOCK),
adornmentFlags, size);
}
private ImageDescriptor getTypeDefinitionImage(ATypeDefinition element,
int renderFlags, int adornmentFlags) {
ImageDescriptor result = null;
AAccessSpecifierAccessSpecifier as = element.getAccess();
Point size = useSmallSize(renderFlags) ? SMALL_SIZE : BIG_SIZE;
if (as.getAccess().toString().equals("private")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_TYPE_PRIVATE),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("public")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_TYPE_PUBLIC),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("protected")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_TYPE_PROTECTED),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("default")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_TYPE_DEFAULT),
adornmentFlags, size);
}
return result;
}
private ImageDescriptor getValueDefinitionImage(AValueDefinition element,
int renderFlags, int adornmentFlags) {
ImageDescriptor result = null;
AAccessSpecifierAccessSpecifier as = element.getAccess();
Point size = useSmallSize(renderFlags) ? SMALL_SIZE : BIG_SIZE;
adornmentFlags |= VdmElementImageDescriptor.FINAL;
if (as.getAccess().toString().equals("private")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_FIELD_PRIVATE),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("public")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_FIELD_PUBLIC),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("protected")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_FIELD_PROTECTED),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("default")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_FIELD_DEFAULT),
adornmentFlags, size);
}
return result;
}
private ImageDescriptor getLocalDefinitionImage(ALocalDefinition element,
int renderFlags, int adornmentFlags) {
ImageDescriptor result = null;
AAccessSpecifierAccessSpecifier as = element.getAccess();
Point size = useSmallSize(renderFlags) ? SMALL_SIZE : BIG_SIZE;
if (as.getAccess().toString().equals("private")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_FIELD_PRIVATE),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("public")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_FIELD_PUBLIC),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("protected")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_FIELD_PROTECTED),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("default")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_FIELD_DEFAULT),
adornmentFlags, size);
}
return result;
}
private ImageDescriptor getExplicitOperationDefinitionImage(
AExplicitOperationDefinition element, int renderFlags,
int adornmentFlags) {
ImageDescriptor result = null;
AAccessSpecifierAccessSpecifier as = element.getAccess();
Point size = useSmallSize(renderFlags) ? SMALL_SIZE : BIG_SIZE;
// result =
// VdmPluginImages.getDescriptor(VdmPluginImages.IMG_METHOD_PRIVATE);
if (as.getAccess().toString().equals("private")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_METHOD_PRIVATE),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("public")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_METHOD_PUBLIC),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("protected")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_METHOD_PROTECTED),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("default")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_METHOD_DEFAULT),
adornmentFlags, size);
}
return result;
//
// return new
// VdmElementImageDescriptor(VdmPluginImages.getDescriptor(VdmPluginImages.IMG_METHOD_PROTECTED),
// 0,
// size);
}
private ImageDescriptor getInstanceVariableDefinitionImage(
AInstanceVariableDefinition element, int renderFlags,
int adornmentFlags) {
ImageDescriptor result = null;
AAccessSpecifierAccessSpecifier as = element.getAccess();
Point size = useSmallSize(renderFlags) ? SMALL_SIZE : BIG_SIZE;
if (as.getAccess().toString().equals("private")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_FIELD_PRIVATE),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("public")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_FIELD_PUBLIC),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("protected")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_FIELD_PROTECTED),
adornmentFlags, size);
} else if (as.getAccess().toString().equals("default")) {
return new VdmElementImageDescriptor(VdmPluginImages
.getDescriptor(VdmPluginImages.IMG_FIELD_DEFAULT),
adornmentFlags, size);
}
return result;
}
// private static boolean showOverlayIcons(int flags) {
// return (flags & OVERLAY_ICONS) != 0;
// }
protected static boolean useSmallSize(int flags) {
return (flags & SMALL_ICONS) != 0;
}
// private static boolean useLightIcons(int flags) {
// return (flags & LIGHT_TYPE_ICONS) != 0;
// }
/**
* Returns an image descriptor for a compilation unit not on the class path.
* The descriptor includes overlays, if specified.
*
* @param file
* the cu resource file
* @param flags
* the image flags
* @return returns the image descriptor
*/
public ImageDescriptor getCUResourceImageDescriptor(IFile file, int flags) {
Point size = useSmallSize(flags) ? SMALL_SIZE : BIG_SIZE;
return new VdmElementImageDescriptor(
VdmPluginImages.DESC_OBJS_CUNIT_RESOURCE, 0, size);
}
/**
* Returns an image descriptor for a IAdaptable. The descriptor includes
* overlays, if specified (only error ticks apply). Returns
* <code>null</code> if no image could be found.
*
* @param adaptable
* the adaptable
* @param flags
* the image flags
* @return returns the image descriptor
*/
public ImageDescriptor getWorkbenchImageDescriptor(IAdaptable adaptable,
int flags) {
IWorkbenchAdapter wbAdapter = (IWorkbenchAdapter) adaptable
.getAdapter(IWorkbenchAdapter.class);
if (wbAdapter == null) {
return null;
}
ImageDescriptor descriptor = wbAdapter.getImageDescriptor(adaptable);
if (descriptor == null) {
return null;
}
Point size = useSmallSize(flags) ? SMALL_SIZE : BIG_SIZE;
return new VdmElementImageDescriptor(descriptor, 0, size);
}
public int computeVdmAdornmentFlags(Object element) {
int flags = 0;
if (element instanceof AClassClassDefinition) {
flags = getClassDefinitionFlags((AClassClassDefinition) element);
} else if (element instanceof AInstanceVariableDefinition) {
flags = getInstanceVariableDefinitionFlags((AInstanceVariableDefinition) element);
} else if (element instanceof AExplicitOperationDefinition) {
flags = getExplicitOperationDefinitionFlags((AExplicitOperationDefinition) element);
} else if (element instanceof ALocalDefinition) {
flags = getLocalDefinitionFlags((ALocalDefinition) element);
} else if (element instanceof AInheritedDefinition){
flags = getInheritedDefinitionFlags((AInheritedDefinition)element);
}
return flags;
}
private int getInheritedDefinitionFlags(AInheritedDefinition element) {
int flags = 0;
flags |= VdmElementImageDescriptor.OVERRIDES;
return flags;
}
private int getLocalDefinitionFlags(ALocalDefinition element) {
int flags = 0;
//flags |= VdmElementImageDescriptor.STATIC;
flags |= VdmElementImageDescriptor.FINAL;
return flags;
}
private int getInstanceVariableDefinitionFlags(
AInstanceVariableDefinition element) {
int flags = 0;
if (element.getAccess().getStatic()!=null) {
flags |= VdmElementImageDescriptor.STATIC;
}
return flags;
}
private int getExplicitOperationDefinitionFlags(
AExplicitOperationDefinition element) {
int flags = 0;
if (element.getIsConstructor()) {
flags |= VdmElementImageDescriptor.CONSTRUCTOR;
}
if (element.getAccess().getStatic()!=null) {
flags |= VdmElementImageDescriptor.STATIC;
}
if(element.getName().getName() != null){
String s = element.getName().getName();
if(s.equals("thread")){
flags |= VdmElementImageDescriptor.RUNNABLE;
}
}
return flags;
}
private int getClassDefinitionFlags(AClassClassDefinition element) {
int flags = 0;
if (element.getIsAbstract()) {
flags |= VdmElementImageDescriptor.ABSTRACT;
}
return flags;
}
public void dispose() {
}
}