< prev index next >

agent/src/share/classes/sun/jvm/hotspot/HSDB.java

Print this page

        

@@ -123,16 +123,20 @@
       System.out.println("HSDB Error: Too many options specified");
       doUsage();
     }
   }
 
-  // close this tool without calling System.exit
-  protected void closeUI() {
+  private class CloseUI extends WindowAdapter {
+
+      @Override
+      public void windowClosing(WindowEvent e) {
       workerThread.shutdown();
       frame.dispose();
   }
 
+  }
+
   public void run() {
     // Don't start the UI if there were bad arguments.
     if (argError) {
         return;
     }

@@ -142,11 +146,12 @@
     attachMenuItems = new java.util.ArrayList();
     detachMenuItems = new java.util.ArrayList();
 
     frame = new JFrame("HSDB - HotSpot Debugger");
     frame.setSize(800, 600);
-    frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
+    frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
+    frame.addWindowListener(new CloseUI());
 
     JMenuBar menuBar = new JMenuBar();
 
     //
     // File menu

@@ -205,11 +210,12 @@
     menu.addSeparator();
 
     item = createMenuItem("Exit",
                             new ActionListener() {
                                 public void actionPerformed(ActionEvent e) {
-                                  closeUI();
+                                  workerThread.shutdown();
+                                  frame.dispose();
                                 }
                               });
     item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.ALT_MASK));
     item.setMnemonic(KeyEvent.VK_X);
     menu.add(item);
< prev index next >