package kaaass.es2k.mission;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class TimeDialog {
public final static int OK_BUTTON = 0;
public final static int NO_BUTTON = 1;
public final static int TIMEOUT = 2;
@SuppressWarnings("unused")
private String message = null;
private int secends = 0;
private JLabel label = new JLabel();
private JButton confirm, cancel;
private JDialog dialog = null;
int result = -5;
/**
* ����һ����ʱ�رմ��ڲ����ؽ����
* @param father ������
* @param message ��ʾ��Ϣ
* @param sec �ȴ�����
* @return
*/
public int showDialog(JFrame father, String message, int sec) {
this.message = message;
secends = sec;
label.setText(message);
label.setBounds(80, 6, 200, 20);
ScheduledExecutorService s = Executors
.newSingleThreadScheduledExecutor();
confirm = new JButton("ȷ��");
confirm.setBounds(100, 40, 60, 20);
confirm.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
result = OK_BUTTON;
TimeDialog.this.dialog.dispose();
}
});
cancel = new JButton("ȡ��");
cancel.setBounds(190, 40, 60, 20);
cancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
result = NO_BUTTON;
TimeDialog.this.dialog.dispose();
}
});
dialog = new JDialog(father, true);
dialog.setTitle("�����ڽ���" + secends + "����Զ��ر�");
dialog.setLayout(null);
dialog.add(label);
dialog.add(confirm);
dialog.add(cancel);
s.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
TimeDialog.this.secends--;
if (TimeDialog.this.secends == 0) {
result = TIMEOUT;
TimeDialog.this.dialog.dispose();
} else {
dialog.setTitle("�����ڽ���" + secends + "����Զ��ر�");
}
}
}, 1, 1, TimeUnit.SECONDS);
dialog.pack();
dialog.setSize(new Dimension(350, 100));
dialog.setLocationRelativeTo(father);
dialog.setVisible(true);
return result;
}
}