1 package net.sf.openrocket.gui.dialogs;
3 import java.awt.Window;
4 import java.awt.event.ActionEvent;
5 import java.awt.event.ActionListener;
7 import javax.swing.JDialog;
8 import javax.swing.JLabel;
9 import javax.swing.JPanel;
10 import javax.swing.JProgressBar;
11 import javax.swing.Timer;
13 import net.miginfocom.swing.MigLayout;
14 import net.sf.openrocket.database.ThrustCurveMotorSetDatabase;
15 import net.sf.openrocket.l10n.Translator;
16 import net.sf.openrocket.logging.LogHelper;
17 import net.sf.openrocket.startup.Application;
18 import net.sf.openrocket.util.GUIUtil;
20 public class MotorDatabaseLoadingDialog extends JDialog {
21 private static final LogHelper log = Application.getLogger();
22 private static final Translator trans = Application.getTranslator();
25 private MotorDatabaseLoadingDialog(Window parent) {
27 super(parent, trans.get("MotorDbLoadDlg.title"), ModalityType.APPLICATION_MODAL);
29 JPanel panel = new JPanel(new MigLayout("fill"));
30 //// Loading motors...
31 panel.add(new JLabel(trans.get("MotorDbLoadDlg.Loadingmotors")), "wrap para");
33 JProgressBar progress = new JProgressBar();
34 progress.setIndeterminate(true);
35 panel.add(progress, "growx");
39 this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
40 this.setLocationByPlatform(true);
41 GUIUtil.setWindowIcons(this);
46 * Check whether the motor database is loaded and block until it is.
47 * An uncloseable modal dialog window is opened while loading.
49 * @param parent the parent window for the dialog, or <code>null</code>
51 public static void check(Window parent) {
52 final ThrustCurveMotorSetDatabase db = Application.getMotorSetDatabase();
56 log.info(1, "Motor database not loaded yet, displaying dialog");
58 final MotorDatabaseLoadingDialog dialog = new MotorDatabaseLoadingDialog(parent);
60 final Timer timer = new Timer(100, new ActionListener() {
61 private int count = 0;
64 public void actionPerformed(ActionEvent e) {
67 log.debug("Database loaded, closing dialog");
68 dialog.setVisible(false);
69 } else if (count % 10 == 0) {
70 log.debug("Database not loaded, count=" + count);
77 dialog.setVisible(true);
80 log.debug("Motor database now loaded");