Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

StructureView.java 2.8KB

před 21 roky
před 21 roky
před 21 roky
před 21 roky
před 21 roky
před 21 roky
před 21 roky
před 21 roky
před 21 roky
před 21 roky
před 21 roky
před 21 roky
před 21 roky
před 21 roky
před 21 roky
před 21 roky
před 21 roky
před 21 roky
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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. /**
  16. * @author Mik Kersten
  17. */
  18. public abstract class StructureView {
  19. private IStructureViewNode rootNode = null;
  20. private IStructureViewNode activeNode = null;
  21. protected StructureViewProperties viewProperties = null;
  22. protected StructureViewRenderer renderer = null;
  23. public StructureViewProperties getViewProperties() {
  24. return viewProperties;
  25. }
  26. public IStructureViewNode getRootNode() {
  27. return rootNode;
  28. }
  29. public void setRootNode(IStructureViewNode rootNode) {
  30. this.rootNode = rootNode;
  31. }
  32. public void setViewProperties(StructureViewProperties viewProperties) {
  33. this.viewProperties = viewProperties;
  34. }
  35. public void setRenderer(StructureViewRenderer renderer) {
  36. this.renderer = renderer;
  37. }
  38. protected void notifyViewUpdated() {
  39. if (renderer != null) renderer.updateView(this);
  40. }
  41. /**
  42. * @return the view node corresponding to the active ProgramElementNode or null
  43. */
  44. public IStructureViewNode getActiveNode() {
  45. if (activeNode != null
  46. && activeNode.getStructureNode()!=null) {
  47. return activeNode;
  48. } else {
  49. return null;
  50. }
  51. }
  52. /**
  53. * Searches from the root node of the view down in order to find matches.
  54. *
  55. * @return the first match
  56. */
  57. public IStructureViewNode findCorrespondingViewNode(IProgramElement node) {
  58. return findCorrespondingViewNodeHelper(rootNode, node);
  59. }
  60. private IStructureViewNode findCorrespondingViewNodeHelper(IStructureViewNode node, IProgramElement pNode) {
  61. if (node != null
  62. && node.getStructureNode() != null
  63. && node.getStructureNode().equals(pNode)
  64. && node.getKind() == IStructureViewNode.Kind.DECLARATION) {
  65. return node;
  66. }
  67. if (node != null && node.getChildren() != null) {
  68. for (Object o : node.getChildren()) {
  69. IStructureViewNode foundNode = findCorrespondingViewNodeHelper((IStructureViewNode) o, pNode);
  70. if (foundNode != null) return foundNode;
  71. }
  72. }
  73. return null;
  74. }
  75. public void setActiveNode(IStructureViewNode activeNode) {
  76. this.activeNode = activeNode;
  77. if (renderer != null) renderer.setActiveNode(activeNode);
  78. }
  79. public void setActiveNode(IStructureViewNode activeNode, int sourceLine) {
  80. this.activeNode = activeNode;
  81. if (renderer != null) renderer.setActiveNode(activeNode, sourceLine);
  82. }
  83. }