diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/ClassBrowserPanel.java	Sat Dec 01 00:00:00 2007 +0000
@@ -0,0 +1,159 @@
+/*
+ * Copyright 2002-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ *
+ */
+
+package sun.jvm.hotspot.ui.classbrowser;
+
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+import javax.swing.event.*;
+import sun.jvm.hotspot.oops.*;
+import sun.jvm.hotspot.ui.*;
+import sun.jvm.hotspot.ui.action.*;
+import sun.jvm.hotspot.utilities.*;
+
+import com.sun.java.swing.ui.StatusBar;
+import com.sun.java.swing.ui.CommonToolBar;
+
+import com.sun.java.swing.action.ActionManager;
+import com.sun.java.swing.action.DelegateAction;
+
+public class ClassBrowserPanel extends JPanel implements ActionListener {
+   private StatusBar           statusBar;
+   private ClassBrowserToolBar toolBar;
+   private JSplitPane          splitPane;
+   private SAEditorPane        classesEditor;
+   private SAEditorPane        contentEditor;
+   private HTMLGenerator       htmlGen;
+
+   public ClassBrowserPanel() {
+      htmlGen = new HTMLGenerator();
+
+      HyperlinkListener hyperListener = new HyperlinkListener() {
+                         public void hyperlinkUpdate(HyperlinkEvent e) {
+                            if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
+                               contentEditor.setText(htmlGen.genHTMLForHyperlink(e.getDescription()));
+                            }
+                         }
+                      };
+
+      classesEditor = new SAEditorPane();
+      classesEditor.addHyperlinkListener(hyperListener);
+
+      contentEditor = new SAEditorPane();
+      contentEditor.addHyperlinkListener(hyperListener);
+
+      JPanel topPanel = new JPanel();
+      topPanel.setLayout(new BorderLayout());
+      topPanel.add(new JScrollPane(classesEditor), BorderLayout.CENTER);
+
+      JPanel bottomPanel = new JPanel();
+      bottomPanel.setLayout(new BorderLayout());
+      bottomPanel.add(new JScrollPane(contentEditor), BorderLayout.CENTER);
+
+      splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, topPanel, bottomPanel);
+      splitPane.setDividerLocation(0);
+
+      setLayout(new BorderLayout());
+      add(splitPane, BorderLayout.CENTER);
+      statusBar = new StatusBar();
+      add(statusBar, BorderLayout.SOUTH);
+      toolBar = new ClassBrowserToolBar(statusBar);
+      add(toolBar, BorderLayout.NORTH);
+      registerActions();
+   }
+
+   public void setClassesText(String text) {
+      classesEditor.setText(text);
+      splitPane.setDividerLocation(0.5);
+   }
+
+   public void setContentText(String text) {
+      contentEditor.setText(text);
+      splitPane.setDividerLocation(0.5);
+   }
+
+   private class ClassBrowserToolBar extends CommonToolBar {
+       private JTextField searchTF;
+
+       public ClassBrowserToolBar(StatusBar status) {
+          super(HSDBActionManager.getInstance(), status);
+       }
+
+       protected void addComponents() {
+          searchTF = new JTextField();
+          searchTF.setToolTipText("Find classes");
+
+          // Pressing Enter on the text field will search
+          InputMap im = searchTF.getInputMap();
+          im.put(KeyStroke.getKeyStroke("ENTER"), "enterPressed");
+          ActionMap am = searchTF.getActionMap();
+          am.put("enterPressed", manager.getAction(FindClassesAction.VALUE_COMMAND));
+
+          add(searchTF);
+          addButton(manager.getAction(FindClassesAction.VALUE_COMMAND));
+       }
+
+       public String getFindText() {
+          return searchTF.getText();
+       }
+   }
+
+   //
+   // ActionListener implementation and actions support
+   //
+
+   public void actionPerformed(ActionEvent evt) {
+      String command = evt.getActionCommand();
+
+      if (command.equals(FindClassesAction.VALUE_COMMAND)) {
+         findClasses();
+      }
+   }
+
+   protected void registerActions() {
+      registerAction(FindClassesAction.VALUE_COMMAND);
+   }
+
+   private void registerAction(String actionName) {
+      ActionManager manager = ActionManager.getInstance();
+      DelegateAction action = manager.getDelegateAction(actionName);
+      action.addActionListener(this);
+   }
+
+   private void findClasses() {
+      String findText = toolBar.getFindText();
+      if (findText == null || findText.equals("")) {
+         return;
+      }
+
+      setContentText(htmlGen.genHTMLForWait("Finding classes ..."));
+      InstanceKlass[] klasses = SystemDictionaryHelper.findInstanceKlasses(findText);
+      if (klasses.length == 0) {
+         setContentText(htmlGen.genHTMLForMessage("No class found with name containing '" + findText + "'"));
+      } else {
+         setContentText(htmlGen.genHTMLForKlassNames(klasses));
+      }
+   }
+}