1 2 25 26 package org.aspectj.ajde.ui.swing; 27 28 import java.awt.*; 29 import java.awt.event.*; 30 import java.io.File ; 31 32 import javax.swing.*; 33 import javax.swing.event.*; 34 import java.util.*; 35 import org.aspectj.ajde.*; 36 import org.aspectj.asm.*; 37 import org.aspectj.asm.views.*; 38 import org.aspectj.ajde.ui.*; 39 import javax.swing.border.*; 40 41 47 public class StructureViewPanel extends JPanel implements StructureViewRenderer { 48 49 protected StructureTreeManager treeManager = new StructureTreeManager(); 50 protected StructureView currentView = null; 51 private java.util.List structureViews = null; 52 53 protected Border border1; 54 protected Border border2; 55 JScrollPane tree_ScrollPane = new JScrollPane(); 56 JPanel structureToolBar_panel = null; 57 BorderLayout borderLayout1 = new BorderLayout(); 58 59 public StructureViewPanel(FileStructureView structureView) { 60 currentView = structureView; 61 initView(structureView); 62 structureToolBar_panel = new SimpleStructureViewToolPanel(currentView); 63 init(); 64 } 65 66 public StructureViewPanel(java.util.List structureViews) { 67 this.structureViews = structureViews; 68 69 for (Iterator it = structureViews.iterator(); it.hasNext(); ) { 70 initView((StructureView)it.next()); 71 } 72 currentView = (StructureView)structureViews.get(0); 73 structureToolBar_panel = new BrowserStructureViewToolPanel(structureViews, currentView, this); 74 init(); 75 } 76 77 private void init() { 78 try { 79 jbInit(); 80 } catch (Exception e) { 81 Ajde.getDefault().getErrorHandler().handleError("Could not initialize view panel.", e); 82 } 83 updateView(currentView); 84 } 85 86 public void setCurrentView(StructureView view) { 87 currentView = view; 88 treeManager.updateTree(view); 89 } 90 91 public void updateView(StructureView structureView) { 92 if (structureView == currentView) { 93 treeManager.updateTree(structureView); 94 } 95 } 96 97 private void initView(StructureView view) { 98 view.setRenderer(this); 99 } 100 101 public void setActiveNode(StructureViewNode node) { 102 setActiveNode(node, 0); 103 } 104 105 public void setActiveNode(StructureViewNode node, int lineOffset) { 106 if (node == null) return; 107 if (!(node.getStructureNode() instanceof ProgramElementNode)) return; 108 ProgramElementNode pNode = (ProgramElementNode)node.getStructureNode(); 109 treeManager.highlightNode(pNode); 110 if (pNode.getSourceLocation() != null) { 111 Ajde.getDefault().getEditorManager().showSourceLine( 112 pNode.getSourceLocation().getSourceFilePath(), 113 pNode.getSourceLocation().getLineNumber() + lineOffset, 114 true 115 ); 116 } 117 } 118 119 public void highlightActiveNode() { 120 if (currentView.getActiveNode() == null) return; 121 StructureNode node = currentView.getActiveNode().getStructureNode(); 122 if (node instanceof ProgramElementNode) { 123 treeManager.highlightNode((ProgramElementNode)node); 124 } 125 } 126 127 protected void jbInit() { 128 border1 = BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.white,Color.white,new Color(156, 156, 158),new Color(109, 109, 110)); 129 border2 = BorderFactory.createEmptyBorder(0,1,0,0); 130 131 this.setLayout(borderLayout1); 132 this.add(tree_ScrollPane, BorderLayout.CENTER); 133 this.add(structureToolBar_panel, BorderLayout.NORTH); 134 135 tree_ScrollPane.getViewport().add(treeManager.getStructureTree(), null); 136 } 137 } | Popular Tags |