You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AbstractIconRegistry.java 6.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. /* *******************************************************************
  2. * Copyright (c) 1999-2001 Xerox Corporation,
  3. * 2002 Palo Alto Research Center, Incorporated (PARC).
  4. * All rights reserved.
  5. * This program and the accompanying materials are made available
  6. * under the terms of the Eclipse Public License v1.0
  7. * which accompanies this distribution and is available at
  8. * http://www.eclipse.org/legal/epl-v10.html
  9. *
  10. * Contributors:
  11. * Xerox/PARC initial implementation
  12. * ******************************************************************/
  13. package org.aspectj.ajde.ui;
  14. import org.aspectj.asm.*;
  15. /**
  16. * Uses the factory pattern.
  17. *
  18. * @author Mik Kersten
  19. */
  20. public abstract class AbstractIconRegistry {
  21. protected final String RESOURCE_PATH = "org/aspectj/ajde/resources/";
  22. protected final String STRUCTURE_PATH = RESOURCE_PATH + "structure/";
  23. protected final AbstractIcon PROJECT = createIcon(STRUCTURE_PATH + "project.gif");
  24. protected final AbstractIcon PACKAGE = createIcon(STRUCTURE_PATH + "package.gif");
  25. protected final AbstractIcon ASPECT = createIcon(STRUCTURE_PATH + "aspect.gif");
  26. protected final AbstractIcon INITIALIZER = createIcon(STRUCTURE_PATH + "code.gif");
  27. protected final AbstractIcon INTRODUCTION = createIcon(STRUCTURE_PATH + "introduction.gif");
  28. protected final AbstractIcon CONSTRUCTOR = createIcon(STRUCTURE_PATH + "method.gif");
  29. protected final AbstractIcon POINTCUT = createIcon(STRUCTURE_PATH + "pointcut.gif");
  30. protected final AbstractIcon ADVICE = createIcon(STRUCTURE_PATH + "advice.gif");
  31. protected final AbstractIcon DECLARE_PARENTS = createIcon(STRUCTURE_PATH + "declareParents.gif");
  32. protected final AbstractIcon DECLARE_WARNING = createIcon(STRUCTURE_PATH + "declareWarning.gif");
  33. protected final AbstractIcon DECLARE_ERROR = createIcon(STRUCTURE_PATH + "declareError.gif");
  34. protected final AbstractIcon DECLARE_SOFT = createIcon(STRUCTURE_PATH + "declareSoft.gif");
  35. protected final AbstractIcon CODE = createIcon(STRUCTURE_PATH + "code.gif");
  36. protected final AbstractIcon ERROR = createIcon(STRUCTURE_PATH + "error.gif");
  37. protected final AbstractIcon FILE = createIcon(STRUCTURE_PATH + "file.gif");
  38. protected final AbstractIcon FILE_JAVA = createIcon(STRUCTURE_PATH + "file-java.gif");
  39. protected final AbstractIcon FILE_ASPECTJ = createIcon(STRUCTURE_PATH + "file-aspectj.gif");
  40. protected final AbstractIcon FILE_LST = createIcon(STRUCTURE_PATH + "file-lst.gif");
  41. protected final AbstractIcon METHOD = createIcon(STRUCTURE_PATH + "method.gif");
  42. protected final AbstractIcon FIELD = createIcon(STRUCTURE_PATH + "field.gif");
  43. protected final AbstractIcon ENUM_VALUE = createIcon(STRUCTURE_PATH + "field.gif"); // ??? should be enum value icon
  44. protected final AbstractIcon ENUM = createIcon(STRUCTURE_PATH + "enum.gif");
  45. protected final AbstractIcon ANNOTATION = createIcon(STRUCTURE_PATH + "annotation.gif");
  46. protected final AbstractIcon CLASS = createIcon(STRUCTURE_PATH + "class.gif");
  47. protected final AbstractIcon INTERFACE = createIcon(STRUCTURE_PATH + "interface.gif");
  48. protected final AbstractIcon RELATION_ADVICE_FORWARD = createIcon(STRUCTURE_PATH + "adviceForward.gif");
  49. protected final AbstractIcon RELATION_ADVICE_BACK = createIcon(STRUCTURE_PATH + "adviceBack.gif");
  50. protected final AbstractIcon RELATION_INHERITANCE_FORWARD = createIcon(STRUCTURE_PATH + "inheritanceForward.gif");
  51. protected final AbstractIcon RELATION_INHERITANCE_BACK = createIcon(STRUCTURE_PATH + "inheritanceBack.gif");
  52. protected final AbstractIcon RELATION_REFERENCE_FORWARD = createIcon(STRUCTURE_PATH + "referenceForward.gif");
  53. protected final AbstractIcon RELATION_REFERENCE_BACK = createIcon(STRUCTURE_PATH + "referenceBack.gif");
  54. public AbstractIcon getIcon(IRelationship.Kind relationship) {
  55. if (relationship == IRelationship.Kind.ADVICE) {
  56. return RELATION_ADVICE_FORWARD;
  57. } else if (relationship == IRelationship.Kind.DECLARE) {
  58. return RELATION_ADVICE_FORWARD;
  59. // } else if (relationship == IRelationship.Kind.INHERITANCE) {
  60. // return RELATION_INHERITANCE_FORWARD;
  61. } else {
  62. return RELATION_REFERENCE_FORWARD;
  63. }
  64. }
  65. /**
  66. * @return null if the kind could not be resolved
  67. */
  68. protected abstract AbstractIcon getStructureIcon(IProgramElement.Kind kind, IProgramElement.Accessibility accessibility);
  69. /**
  70. * Assumes "public" visibility for the icon.
  71. *
  72. * @return null if the kind could not be resolved
  73. */
  74. public AbstractIcon getIcon(IProgramElement.Kind kind) {
  75. if (kind == IProgramElement.Kind.PROJECT) {
  76. return PROJECT;
  77. } else if (kind == IProgramElement.Kind.PACKAGE) {
  78. return PACKAGE;
  79. } else if (kind == IProgramElement.Kind.FILE) {
  80. return FILE;
  81. } else if (kind == IProgramElement.Kind.FILE_JAVA) {
  82. return FILE_JAVA;
  83. } else if (kind == IProgramElement.Kind.FILE_ASPECTJ) {
  84. return FILE_ASPECTJ;
  85. } else if (kind == IProgramElement.Kind.FILE_LST) {
  86. return FILE_LST;
  87. } else if (kind == IProgramElement.Kind.CLASS) {
  88. return CLASS;
  89. } else if (kind == IProgramElement.Kind.INTERFACE) {
  90. return INTERFACE;
  91. } else if (kind == IProgramElement.Kind.ASPECT) {
  92. return ASPECT;
  93. } else if (kind == IProgramElement.Kind.INITIALIZER) {
  94. return INITIALIZER;
  95. } else if (kind == IProgramElement.Kind.INTER_TYPE_CONSTRUCTOR) {
  96. return INTRODUCTION;
  97. } else if (kind == IProgramElement.Kind.INTER_TYPE_FIELD) {
  98. return INTRODUCTION;
  99. } else if (kind == IProgramElement.Kind.INTER_TYPE_METHOD) {
  100. return INTRODUCTION;
  101. } else if (kind == IProgramElement.Kind.CONSTRUCTOR) {
  102. return CONSTRUCTOR;
  103. } else if (kind == IProgramElement.Kind.METHOD) {
  104. return METHOD;
  105. } else if (kind == IProgramElement.Kind.FIELD) {
  106. return FIELD;
  107. } else if (kind == IProgramElement.Kind.ENUM_VALUE) {
  108. return ENUM_VALUE;
  109. } else if (kind == IProgramElement.Kind.POINTCUT) {
  110. return POINTCUT;
  111. } else if (kind == IProgramElement.Kind.ADVICE) {
  112. return ADVICE;
  113. } else if (kind == IProgramElement.Kind.DECLARE_PARENTS) {
  114. return DECLARE_PARENTS;
  115. } else if (kind == IProgramElement.Kind.DECLARE_WARNING) {
  116. return DECLARE_WARNING;
  117. } else if (kind == IProgramElement.Kind.DECLARE_ERROR) {
  118. return DECLARE_ERROR;
  119. } else if (kind == IProgramElement.Kind.DECLARE_SOFT) {
  120. return DECLARE_SOFT;
  121. } else if (kind == IProgramElement.Kind.DECLARE_PRECEDENCE) {
  122. return DECLARE_SOFT;
  123. } else if (kind == IProgramElement.Kind.CODE) {
  124. return CODE;
  125. } else if (kind == IProgramElement.Kind.ERROR) {
  126. return ERROR;
  127. } else if (kind == IProgramElement.Kind.IMPORT_REFERENCE) {
  128. return RELATION_REFERENCE_FORWARD;
  129. } else if (kind == IProgramElement.Kind.ANNOTATION) {
  130. return ANNOTATION;
  131. } else if (kind == IProgramElement.Kind.ENUM) {
  132. return ENUM;
  133. } else {
  134. System.err.println("AJDE Message: unresolved icon kind " + kind);
  135. return null;
  136. }
  137. }
  138. /**
  139. * Implement to create platform-specific icons.
  140. */
  141. protected abstract AbstractIcon createIcon(String path);
  142. }