package com.ibm.nmon.gui;
import javax.swing.AbstractAction;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.KeyStroke;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JDialog;
import javax.swing.JRootPane;
import com.ibm.nmon.gui.main.NMONVisualizerGui;
/**
* Base dialog class that contains a reference to the parent application. This class also adds the
* ability to close the dialog with the ESC key.
*/
public abstract class GUIDialog extends JDialog {
private static final long serialVersionUID = 5717736163308834942L;
protected final NMONVisualizerGui gui;
public GUIDialog(NMONVisualizerGui gui, JFrame parent, String title) {
super(parent, title);
this.gui = gui;
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
setResizable(false);
}
public GUIDialog(NMONVisualizerGui gui) {
this(gui, gui.getMainFrame(), "");
}
@Override
public void setVisible(boolean b) {
if (b) {
pack();
setLocationRelativeTo(gui.getMainFrame());
}
super.setVisible(b);
}
@Override
protected JRootPane createRootPane() {
JRootPane rootPane = super.createRootPane();
rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
"ESCAPE");
rootPane.getActionMap().put("ESCAPE", new AbstractAction() {
private static final long serialVersionUID = 4478727588396940932L;
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
});
return rootPane;
}
}