package captor.windowsystem.projectmanager.build; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.awt.event.WindowStateListener; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.JTextArea; import javax.swing.Timer; import captor.lib.intl.MyIntl; import captor.modelsystem.GUI; import captor.modelsystem.Model; import captor.projectsystem.util.LongTask; import captor.windowsystem.MainWindow; public class BuildProgressWindow extends JFrame implements ActionListener, WindowListener, WindowStateListener { public static final long serialVersionUID = 129; public final static int ONE_SECOND = 10; private LongTask task; private Timer timer; private Model model; JProgressBar progressBar; JTextArea taskOutput; public BuildProgressWindow(LongTask task, Model model) { super(); this.task = task; this.model = model; this.setLayout(new BoxLayout(this.getContentPane(), BoxLayout.Y_AXIS)); this.setTitle(MyIntl.PROJECT_BUILD_PROGRESS); this.setResizable(true); this.setCenterSize(280, 124); this.setAlwaysOnTop(true); this.addWindowListener(this); progressBar = new JProgressBar(0, 280); progressBar.setBounds(new Rectangle(20,10, 250, 15)); progressBar.setValue(0); progressBar.setStringPainted(true); progressBar.setString(""); //but don't paint it JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS)); panel.add(progressBar); panel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); add(panel); panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS)); JLabel label = new JLabel(); label.setText(MyIntl.PROJECT_BUILD_PWAIT); label.setFont(new java.awt.Font("Dialog", 1, 11)); JButton cancel = new JButton(MyIntl.PROJECT_BUILD_CANCEL); cancel.addActionListener(this); panel.add(new JLabel(" ")); panel.add(label); panel.add(Box.createHorizontalGlue()); panel.add(cancel); panel.add(new JLabel(" ")); add(panel); add(new JLabel(" ")); model.getGui().setBuildWindow(this); } //------------------------------------------------------------------------- protected void setCenterSize(int width, int height) { Dimension dim = this.getToolkit().getScreenSize(); this.setBounds((dim.width - width) / 2, (dim.height - height) / 2 - 70, width, height); } //------------------------------------------------------------------------- public void play() { GUI gui = model.getGui(); MainWindow mw = gui.getCaptorWindow(); mw.setEnabled(false); setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); progressBar.setIndeterminate(true); timer = new Timer(ONE_SECOND, this); timer.start(); } public void actionPerformed(ActionEvent e) { if ( e!=null && e.getActionCommand() != null && e.getActionCommand().equals(MyIntl.PROJECT_BUILD_CANCEL) ) { model.getGui().setBuildWindow(null); task.setCancelled(true); exit2(); } else if ( task.isDone() ) { timer.stop(); this.setVisible(false); this.dispose(); model.getGui().getCaptorWindow().toFront(); if ( !task.hasError() ) JOptionPane.showMessageDialog(this, MyIntl.MSG90); model.getGui().setBuildWindow(null); model.getGui().getCaptorWindow().setEnabled(true); model.getGui().getCaptorWindow().toFront(); } } //------------------------------------------------------------------------- public void windowClosed(WindowEvent e) {} public void windowOpened(WindowEvent e) {} public void windowIconified(WindowEvent e) {} public void windowDeiconified(WindowEvent e) {} public void windowActivated(WindowEvent e) {} public void windowDeactivated(WindowEvent e) {} public void windowStateChanged(WindowEvent e) {} public void windowClosing(WindowEvent e) { exit2(); } //------------------------------------------------------------------------- private void exit2() { this.setVisible(false); task.setError(true); task.setDone(true); model.getGui().getCaptorWindow().setEnabled(true); model.getGui().getCaptorWindow().toFront(); JOptionPane.showMessageDialog(this, MyIntl.MSG91); model.getGui().setBuildWindow(null); } //------------------------------------------------------------------------- }