JDBToolBar.java revision 2362
643a14a5271ed19ec30a9882d4b9e9ae1c357fb1Lennart Poettering/*
643a14a5271ed19ec30a9882d4b9e9ae1c357fb1Lennart Poettering * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering *
3e2147858f21943d5f4a781c60f33ac22c6096edKay Sievers * This code is free software; you can redistribute it and/or modify it
3e2147858f21943d5f4a781c60f33ac22c6096edKay Sievers * under the terms of the GNU General Public License version 2 only, as
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering * published by the Free Software Foundation. Oracle designates this
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering * particular file as subject to the "Classpath" exception as provided
5430f7f2bc7330f3088b894166bf3524a067e3d8Lennart Poettering * by Oracle in the LICENSE file that accompanied this code.
5430f7f2bc7330f3088b894166bf3524a067e3d8Lennart Poettering *
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering * This code is distributed in the hope that it will be useful, but WITHOUT
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering * version 2 for more details (a copy is included in the LICENSE file that
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering * accompanied this code).
5430f7f2bc7330f3088b894166bf3524a067e3d8Lennart Poettering *
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering * You should have received a copy of the GNU General Public License version
5430f7f2bc7330f3088b894166bf3524a067e3d8Lennart Poettering * 2 along with this work; if not, write to the Free Software Foundation,
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering *
3e2147858f21943d5f4a781c60f33ac22c6096edKay Sievers * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
3e2147858f21943d5f4a781c60f33ac22c6096edKay Sievers * or visit www.oracle.com if you need additional information or have any
47be870bd83fb3719dffc3ee9348a409ab762a14Lennart Poettering * questions.
3e2147858f21943d5f4a781c60f33ac22c6096edKay Sievers */
3e2147858f21943d5f4a781c60f33ac22c6096edKay Sievers
3e2147858f21943d5f4a781c60f33ac22c6096edKay Sieverspackage com.sun.tools.example.debug.gui;
2d13da8821b8197e62f819b5b996750800e910abKay Sievers
3e2147858f21943d5f4a781c60f33ac22c6096edKay Sieversimport javax.swing.*;
3e2147858f21943d5f4a781c60f33ac22c6096edKay Sieversimport java.awt.*;
3e2147858f21943d5f4a781c60f33ac22c6096edKay Sieversimport java.awt.event.*;
3e2147858f21943d5f4a781c60f33ac22c6096edKay Sievers
3e2147858f21943d5f4a781c60f33ac22c6096edKay Sieversimport com.sun.jdi.*;
1c7dde3e475978c569a982d65fd86d4b4e3caad8Bastien Noceraimport com.sun.tools.example.debug.bdi.*;
437b7dee328738b7aca89a9c7527f228ff8f2d34Lennart Poettering
16f1239e1ece27257c0deedcf01aa39474f66241Lennart Poetteringclass JDBToolBar extends JToolBar {
437b7dee328738b7aca89a9c7527f228ff8f2d34Lennart Poettering
74b91131ed09850ed487a2f7849147ff6f80194dLennart Poettering Environment env;
114a50f898a89bd7784c215ac5df95ec8c45a905Lennart Poettering
45a7b8bd24b743d5d1c4e46c61d6145e96501a13Lennart Poettering ExecutionManager runtime;
114a50f898a89bd7784c215ac5df95ec8c45a905Lennart Poettering ClassManager classManager;
114a50f898a89bd7784c215ac5df95ec8c45a905Lennart Poettering SourceManager sourceManager;
4b2d99d9f4258a29f0bf8b1a78d17836e75bc378Lennart Poettering
16f1239e1ece27257c0deedcf01aa39474f66241Lennart Poettering CommandInterpreter interpreter;
4b2d99d9f4258a29f0bf8b1a78d17836e75bc378Lennart Poettering
4b2d99d9f4258a29f0bf8b1a78d17836e75bc378Lennart Poettering JDBToolBar(Environment env) {
4b2d99d9f4258a29f0bf8b1a78d17836e75bc378Lennart Poettering
16f1239e1ece27257c0deedcf01aa39474f66241Lennart Poettering this.env = env;
4b2d99d9f4258a29f0bf8b1a78d17836e75bc378Lennart Poettering this.runtime = env.getExecutionManager();
4b2d99d9f4258a29f0bf8b1a78d17836e75bc378Lennart Poettering this.classManager = env.getClassManager();
8c4a3079a7f358c179430d1aec59de8b670b5f6eLennart Poettering this.sourceManager = env.getSourceManager();
d122948d6fbaac4505cf14a08f1237daa89efdd0Lennart Poettering this.interpreter = new CommandInterpreter(env, true);
d122948d6fbaac4505cf14a08f1237daa89efdd0Lennart Poettering
d122948d6fbaac4505cf14a08f1237daa89efdd0Lennart Poettering //===== Configure toolbar here =====
d122948d6fbaac4505cf14a08f1237daa89efdd0Lennart Poettering
8c6db8336536916d0476ff8233e0abf40a2f6aabLennart Poettering addTool("Run application", "run", "run");
8c6db8336536916d0476ff8233e0abf40a2f6aabLennart Poettering addTool("Connect to application", "connect", "connect");
02f130cbd943c5c177cb0e711db0447cac685d67Lennart Poettering addSeparator();
490aed584944b684026a3fd01f8d81f2881e38d6Lennart Poettering
5a1e99375d03bc88795d68c66bf3933dd04c1015Lennart Poettering addTool("Step into next line", "step", "step");
036643a247c659db8e1b3df1778d51553a816ec9Lennart Poettering addTool("Step over next line", "next", "next");
8c4a3079a7f358c179430d1aec59de8b670b5f6eLennart Poettering// addSeparator();
d1ab0ca07372649dad70a0348d75e394f254e1b6Lennart Poettering
32d0463d5c9982cc0c98a6e2867f94c764a496c2Lennart Poettering// addTool("Step into next instruction", "stepi", "stepi");
772f83719e3c2262d948a4c4e70fe9babc4c4610Kay Sievers// addTool("Step over next instruction", "nexti", "nexti");
f5e04665ebf7124f3ea17dcf258793ed73a95fe1Lennart Poettering// addSeparator();
af2d49f70bcff20efaf2d69aecaf4b3e898ff1faLennart Poettering
74b91131ed09850ed487a2f7849147ff6f80194dLennart Poettering addTool("Step out of current method call", "step up", "step up");
8ece4cab426cce6759ff240504dc876502f4c483Kay Sievers addSeparator();
8ece4cab426cce6759ff240504dc876502f4c483Kay Sievers
8ece4cab426cce6759ff240504dc876502f4c483Kay Sievers addTool("Suspend execution", "interrupt", "interrupt");
3e2147858f21943d5f4a781c60f33ac22c6096edKay Sievers addTool("Continue execution", "cont", "cont");
8ece4cab426cce6759ff240504dc876502f4c483Kay Sievers addSeparator();
8ece4cab426cce6759ff240504dc876502f4c483Kay Sievers
8c4a3079a7f358c179430d1aec59de8b670b5f6eLennart Poettering// addTool("Display current stack", "where", "where");
8c4a3079a7f358c179430d1aec59de8b670b5f6eLennart Poettering// addSeparator();
b8079ae19b41c9b61850c796dddc601b826850e0Kay Sievers
b8079ae19b41c9b61850c796dddc601b826850e0Kay Sievers addTool("Move up one stack frame", "up", "up");
b8079ae19b41c9b61850c796dddc601b826850e0Kay Sievers addTool("Move down one stack frame", "down", "down");
70fcff314feff469a8e61dbe5017ed74f5e0a09dLennart Poettering// addSeparator();
2a018e83ded29c9719b2478a65ee6245c829c0f5Kay Sievers
2a018e83ded29c9719b2478a65ee6245c829c0f5Kay Sievers// addTool("Display command list", "help", "help");
3e2147858f21943d5f4a781c60f33ac22c6096edKay Sievers// addSeparator();
2a018e83ded29c9719b2478a65ee6245c829c0f5Kay Sievers
2a018e83ded29c9719b2478a65ee6245c829c0f5Kay Sievers// addTool("Exit debugger", "exit", "exit");
2a018e83ded29c9719b2478a65ee6245c829c0f5Kay Sievers
3e2147858f21943d5f4a781c60f33ac22c6096edKay Sievers //==================================
48d437bbf10aa80d37b280ed946a51dee5bc69b8Kay Sievers
04a9d3a00a9290cbf254d0b0ba2ce4521be632aeKay Sievers }
0237edf7d24a53792122ec1c8225babf2ad3e227Kay Sievers
3e2147858f21943d5f4a781c60f33ac22c6096edKay Sievers private void addTool(String toolTip, String labelText, String command) {
0237edf7d24a53792122ec1c8225babf2ad3e227Kay Sievers JButton button = new JButton(labelText);
2a018e83ded29c9719b2478a65ee6245c829c0f5Kay Sievers button.setToolTipText(toolTip);
131a4dcfd4375f235a1f512339c0909e8bcc730bKay Sievers final String cmd = command;
3e2147858f21943d5f4a781c60f33ac22c6096edKay Sievers button.addActionListener(new ActionListener() {
3e2147858f21943d5f4a781c60f33ac22c6096edKay Sievers public void actionPerformed(ActionEvent e) {
90ccc3fca7e53a60a9e67b9d5812e1d4a27fc07dKay Sievers interpreter.executeCommand(cmd);
90ccc3fca7e53a60a9e67b9d5812e1d4a27fc07dKay Sievers }
90ccc3fca7e53a60a9e67b9d5812e1d4a27fc07dKay Sievers });
90ccc3fca7e53a60a9e67b9d5812e1d4a27fc07dKay Sievers this.add(button);
6cbf079f10ba998e4d8debb7f5b7dab4efaae3d0Kay Sievers }
9b80f05fb727edc70a305d912ab6cf1c3bdbf67eKay Sievers
9b80f05fb727edc70a305d912ab6cf1c3bdbf67eKay Sievers}
6b8b149a215ba49f96907aedd01a42f3fcdb95baKay Sievers