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.9KB

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