/* ******************************************************************* * Copyright (c) 1999-2001 Xerox Corporation, * 2002 Palo Alto Research Center, Incorporated (PARC). * 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: * Xerox/PARC initial implementation * ******************************************************************/ package org.aspectj.ajde.ui; import org.aspectj.asm.IProgramElement; import org.aspectj.asm.IRelationship; /** * Uses the factory pattern. * * @author Mik Kersten */ public abstract class AbstractIconRegistry { protected final String RESOURCE_PATH = "org/aspectj/ajde/resources/"; protected final String STRUCTURE_PATH = RESOURCE_PATH + "structure/"; protected final AbstractIcon PROJECT = createIcon(STRUCTURE_PATH + "project.gif"); protected final AbstractIcon PACKAGE = createIcon(STRUCTURE_PATH + "package.gif"); protected final AbstractIcon ASPECT = createIcon(STRUCTURE_PATH + "aspect.gif"); protected final AbstractIcon INITIALIZER = createIcon(STRUCTURE_PATH + "code.gif"); protected final AbstractIcon INTRODUCTION = createIcon(STRUCTURE_PATH + "introduction.gif"); protected final AbstractIcon CONSTRUCTOR = createIcon(STRUCTURE_PATH + "method.gif"); protected final AbstractIcon POINTCUT = createIcon(STRUCTURE_PATH + "pointcut.gif"); protected final AbstractIcon ADVICE = createIcon(STRUCTURE_PATH + "advice.gif"); protected final AbstractIcon DECLARE_PARENTS = createIcon(STRUCTURE_PATH + "declareParents.gif"); protected final AbstractIcon DECLARE_WARNING = createIcon(STRUCTURE_PATH + "declareWarning.gif"); protected final AbstractIcon DECLARE_ERROR = createIcon(STRUCTURE_PATH + "declareError.gif"); protected final AbstractIcon DECLARE_SOFT = createIcon(STRUCTURE_PATH + "declareSoft.gif"); protected final AbstractIcon CODE = createIcon(STRUCTURE_PATH + "code.gif"); protected final AbstractIcon ERROR = createIcon(STRUCTURE_PATH + "error.gif"); protected final AbstractIcon FILE = createIcon(STRUCTURE_PATH + "file.gif"); protected final AbstractIcon FILE_JAVA = createIcon(STRUCTURE_PATH + "file-java.gif"); protected final AbstractIcon FILE_ASPECTJ = createIcon(STRUCTURE_PATH + "file-aspectj.gif"); protected final AbstractIcon FILE_LST = createIcon(STRUCTURE_PATH + "file-lst.gif"); protected final AbstractIcon METHOD = createIcon(STRUCTURE_PATH + "method.gif"); protected final AbstractIcon FIELD = createIcon(STRUCTURE_PATH + "field.gif"); protected final AbstractIcon ENUM_VALUE = createIcon(STRUCTURE_PATH + "field.gif"); // ??? should be enum value icon protected final AbstractIcon ENUM = createIcon(STRUCTURE_PATH + "enum.gif"); protected final AbstractIcon ANNOTATION = createIcon(STRUCTURE_PATH + "annotation.gif"); protected final AbstractIcon CLASS = createIcon(STRUCTURE_PATH + "class.gif"); protected final AbstractIcon INTERFACE = createIcon(STRUCTURE_PATH + "interface.gif"); protected final AbstractIcon RELATION_ADVICE_FORWARD = createIcon(STRUCTURE_PATH + "adviceForward.gif"); protected final AbstractIcon RELATION_ADVICE_BACK = createIcon(STRUCTURE_PATH + "adviceBack.gif"); protected final AbstractIcon RELATION_INHERITANCE_FORWARD = createIcon(STRUCTURE_PATH + "inheritanceForward.gif"); protected final AbstractIcon RELATION_INHERITANCE_BACK = createIcon(STRUCTURE_PATH + "inheritanceBack.gif"); protected final AbstractIcon RELATION_REFERENCE_FORWARD = createIcon(STRUCTURE_PATH + "referenceForward.gif"); protected final AbstractIcon RELATION_REFERENCE_BACK = createIcon(STRUCTURE_PATH + "referenceBack.gif"); public AbstractIcon getIcon(IRelationship.Kind relationship) { if (relationship == IRelationship.Kind.ADVICE) { return RELATION_ADVICE_FORWARD; } else if (relationship == IRelationship.Kind.DECLARE) { return RELATION_ADVICE_FORWARD; // } else if (relationship == IRelationship.Kind.INHERITANCE) { // return RELATION_INHERITANCE_FORWARD; } else { return RELATION_REFERENCE_FORWARD; } } /** * @return null if the kind could not be resolved */ protected abstract AbstractIcon getStructureIcon(IProgramElement.Kind kind, IProgramElement.Accessibility accessibility); /** * Assumes "public" visibility for the icon. * * @return null if the kind could not be resolved */ public AbstractIcon getIcon(IProgramElement.Kind kind) { if (kind == IProgramElement.Kind.PROJECT) { return PROJECT; } else if (kind == IProgramElement.Kind.PACKAGE) { return PACKAGE; } else if (kind == IProgramElement.Kind.FILE) { return FILE; } else if (kind == IProgramElement.Kind.FILE_JAVA) { return FILE_JAVA; } else if (kind == IProgramElement.Kind.FILE_ASPECTJ) { return FILE_ASPECTJ; } else if (kind == IProgramElement.Kind.FILE_LST) { return FILE_LST; } else if (kind == IProgramElement.Kind.CLASS) { return CLASS; } else if (kind == IProgramElement.Kind.INTERFACE) { return INTERFACE; } else if (kind == IProgramElement.Kind.ASPECT) { return ASPECT; } else if (kind == IProgramElement.Kind.INITIALIZER) { return INITIALIZER; } else if (kind == IProgramElement.Kind.INTER_TYPE_CONSTRUCTOR) { return INTRODUCTION; } else if (kind == IProgramElement.Kind.INTER_TYPE_FIELD) { return INTRODUCTION; } else if (kind == IProgramElement.Kind.INTER_TYPE_METHOD) { return INTRODUCTION; } else if (kind == IProgramElement.Kind.CONSTRUCTOR) { return CONSTRUCTOR; } else if (kind == IProgramElement.Kind.METHOD) { return METHOD; } else if (kind == IProgramElement.Kind.FIELD) { return FIELD; } else if (kind == IProgramElement.Kind.ENUM_VALUE) { return ENUM_VALUE; } else if (kind == IProgramElement.Kind.POINTCUT) { return POINTCUT; } else if (kind == IProgramElement.Kind.ADVICE) { return ADVICE; } else if (kind == IProgramElement.Kind.DECLARE_PARENTS) { return DECLARE_PARENTS; } else if (kind == IProgramElement.Kind.DECLARE_WARNING) { return DECLARE_WARNING; } else if (kind == IProgramElement.Kind.DECLARE_ERROR) { return DECLARE_ERROR; } else if (kind == IProgramElement.Kind.DECLARE_SOFT) { return DECLARE_SOFT; } else if (kind == IProgramElement.Kind.DECLARE_PRECEDENCE) { return DECLARE_SOFT; } else if (kind == IProgramElement.Kind.CODE) { return CODE; } else if (kind == IProgramElement.Kind.ERROR) { return ERROR; } else if (kind == IProgramElement.Kind.IMPORT_REFERENCE) { return RELATION_REFERENCE_FORWARD; } else if (kind == IProgramElement.Kind.ANNOTATION) { return ANNOTATION; } else if (kind == IProgramElement.Kind.ENUM) { return ENUM; } else { System.err.println("AJDE Message: unresolved icon kind " + kind); return null; } } /** * Implement to create platform-specific icons. */ protected abstract AbstractIcon createIcon(String path); }