comparison agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/ClassBrowserPanel.java @ 0:a61af66fc99e jdk7-b24

Initial load
author duke
date Sat, 01 Dec 2007 00:00:00 +0000
parents
children c18cbe5936b8
comparison
equal deleted inserted replaced
-1:000000000000 0:a61af66fc99e
1 /*
2 * Copyright 2002-2004 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
20 * CA 95054 USA or visit www.sun.com if you need additional information or
21 * have any questions.
22 *
23 */
24
25 package sun.jvm.hotspot.ui.classbrowser;
26
27 import java.awt.*;
28 import java.awt.event.*;
29 import javax.swing.*;
30 import javax.swing.event.*;
31 import sun.jvm.hotspot.oops.*;
32 import sun.jvm.hotspot.ui.*;
33 import sun.jvm.hotspot.ui.action.*;
34 import sun.jvm.hotspot.utilities.*;
35
36 import com.sun.java.swing.ui.StatusBar;
37 import com.sun.java.swing.ui.CommonToolBar;
38
39 import com.sun.java.swing.action.ActionManager;
40 import com.sun.java.swing.action.DelegateAction;
41
42 public class ClassBrowserPanel extends JPanel implements ActionListener {
43 private StatusBar statusBar;
44 private ClassBrowserToolBar toolBar;
45 private JSplitPane splitPane;
46 private SAEditorPane classesEditor;
47 private SAEditorPane contentEditor;
48 private HTMLGenerator htmlGen;
49
50 public ClassBrowserPanel() {
51 htmlGen = new HTMLGenerator();
52
53 HyperlinkListener hyperListener = new HyperlinkListener() {
54 public void hyperlinkUpdate(HyperlinkEvent e) {
55 if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
56 contentEditor.setText(htmlGen.genHTMLForHyperlink(e.getDescription()));
57 }
58 }
59 };
60
61 classesEditor = new SAEditorPane();
62 classesEditor.addHyperlinkListener(hyperListener);
63
64 contentEditor = new SAEditorPane();
65 contentEditor.addHyperlinkListener(hyperListener);
66
67 JPanel topPanel = new JPanel();
68 topPanel.setLayout(new BorderLayout());
69 topPanel.add(new JScrollPane(classesEditor), BorderLayout.CENTER);
70
71 JPanel bottomPanel = new JPanel();
72 bottomPanel.setLayout(new BorderLayout());
73 bottomPanel.add(new JScrollPane(contentEditor), BorderLayout.CENTER);
74
75 splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, topPanel, bottomPanel);
76 splitPane.setDividerLocation(0);
77
78 setLayout(new BorderLayout());
79 add(splitPane, BorderLayout.CENTER);
80 statusBar = new StatusBar();
81 add(statusBar, BorderLayout.SOUTH);
82 toolBar = new ClassBrowserToolBar(statusBar);
83 add(toolBar, BorderLayout.NORTH);
84 registerActions();
85 }
86
87 public void setClassesText(String text) {
88 classesEditor.setText(text);
89 splitPane.setDividerLocation(0.5);
90 }
91
92 public void setContentText(String text) {
93 contentEditor.setText(text);
94 splitPane.setDividerLocation(0.5);
95 }
96
97 private class ClassBrowserToolBar extends CommonToolBar {
98 private JTextField searchTF;
99
100 public ClassBrowserToolBar(StatusBar status) {
101 super(HSDBActionManager.getInstance(), status);
102 }
103
104 protected void addComponents() {
105 searchTF = new JTextField();
106 searchTF.setToolTipText("Find classes");
107
108 // Pressing Enter on the text field will search
109 InputMap im = searchTF.getInputMap();
110 im.put(KeyStroke.getKeyStroke("ENTER"), "enterPressed");
111 ActionMap am = searchTF.getActionMap();
112 am.put("enterPressed", manager.getAction(FindClassesAction.VALUE_COMMAND));
113
114 add(searchTF);
115 addButton(manager.getAction(FindClassesAction.VALUE_COMMAND));
116 }
117
118 public String getFindText() {
119 return searchTF.getText();
120 }
121 }
122
123 //
124 // ActionListener implementation and actions support
125 //
126
127 public void actionPerformed(ActionEvent evt) {
128 String command = evt.getActionCommand();
129
130 if (command.equals(FindClassesAction.VALUE_COMMAND)) {
131 findClasses();
132 }
133 }
134
135 protected void registerActions() {
136 registerAction(FindClassesAction.VALUE_COMMAND);
137 }
138
139 private void registerAction(String actionName) {
140 ActionManager manager = ActionManager.getInstance();
141 DelegateAction action = manager.getDelegateAction(actionName);
142 action.addActionListener(this);
143 }
144
145 private void findClasses() {
146 String findText = toolBar.getFindText();
147 if (findText == null || findText.equals("")) {
148 return;
149 }
150
151 setContentText(htmlGen.genHTMLForWait("Finding classes ..."));
152 InstanceKlass[] klasses = SystemDictionaryHelper.findInstanceKlasses(findText);
153 if (klasses.length == 0) {
154 setContentText(htmlGen.genHTMLForMessage("No class found with name containing '" + findText + "'"));
155 } else {
156 setContentText(htmlGen.genHTMLForKlassNames(klasses));
157 }
158 }
159 }