package com.jbidwatcher.ui.util;
import javax.swing.*;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import java.awt.BorderLayout;
import java.awt.event.*;
public abstract class BasicDialog extends JDialog {
private boolean cancelled=false;
private JPanel basicContentPane;
private JButton buttonOK;
private JButton buttonCancel;
public BasicDialog(Frame frame, String s, boolean b, GraphicsConfiguration currentGraphicsConfiguration) {
super(frame, s, b, currentGraphicsConfiguration);
establishBasicUI();
}
public BasicDialog() {
super();
establishBasicUI();
}
private void establishBasicUI() {
buttonOK = new JButton();
buttonOK.setText("OK");
buttonCancel = new JButton();
buttonCancel.setText("Cancel");
}
protected void addBehavior() {
setContentPane(getBasicContentPane());
setLocationRelativeTo(null);
getRootPane().setDefaultButton(getButtonOK());
getButtonOK().addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
cancelled = false;
onOK();
}
});
getButtonCancel().addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
cancelled = true;
onCancel();
}
});
// call onCancel() when cross is clicked
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
cancelled = true;
onCancel();
}
});
// call onCancel() on ESCAPE
getBasicContentPane().registerKeyboardAction(new ActionListener() {
public void actionPerformed(ActionEvent e) {
cancelled = true;
onCancel();
}
}, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);
}
public boolean isCancelled() {
return cancelled;
}
abstract protected void onOK();
abstract protected void onCancel();
protected JButton getButtonOK() {
return buttonOK;
}
protected void setButtonOK(JButton ok) {
buttonOK = ok;
}
protected JButton getButtonCancel() {
return buttonCancel;
}
protected void setButtonCancel(JButton cancel) {
buttonCancel = cancel;
}
public JPanel getBasicContentPane() {
if(basicContentPane == null) basicContentPane = new JPanel(new BorderLayout());
return basicContentPane;
}
public void setBasicContentPane(JPanel contentPane) {
basicContentPane = contentPane;
}
}