package edu.brown.oltpgenerator.gui; import java.awt.*; import javax.swing.*; import edu.brown.gui.AbstractViewer; import edu.brown.utils.ArgumentsParser; import edu.brown.oltpgenerator.env.BenchmarkEnv; import edu.brown.oltpgenerator.gui.common.Notifier; import edu.brown.oltpgenerator.gui.common.RandomDistribution.RandomDistributionEditor; /** * @author zhe zhang */ public class GuiMain extends AbstractViewer { private static final long serialVersionUID = 1L; private final JLabel m_lblMsg = new JLabel(" "); private Notifier m_notifier; public GuiMain(ArgumentsParser args, String title) { super(args, title); this.init(); RandomDistributionEditor.setNotifier(m_notifier); } @Override public void quit() { super.quit(); } public void addMenu(JMenu menu) { this.menuBar.add(menu); } @Override protected void viewerInit() { initNotifier(); // main frame JPanel paneMain = new JPanel(new BorderLayout()); getContentPane().add(paneMain); int nWidth = (int) ((double) getWidth() * 0.95); int nHeight = (int) ((double) getHeight() * 0.88); paneMain.setSize(nWidth, nHeight); // menu menuHandler = new MenuHandler(this); // tabs JTabbedPane paneTab = new JTabbedPane(); paneMain.add(paneTab); paneTab.setSize(nWidth, nHeight); paneTab.add("Init Config", new InitConfigGui()); paneTab.add("Table", new TableGui(paneTab, m_notifier)); paneTab.add("Procedure", new ProcGui(paneTab, m_notifier)); // paneTab.setBorder(BorderFactory.createLineBorder(Color.blue)); // message bar m_lblMsg.setHorizontalAlignment(SwingConstants.CENTER); paneMain.add(m_lblMsg, BorderLayout.SOUTH); // m_lblMsg.setBorder(BorderFactory.createLineBorder(Color.green)); setLocationRelativeTo(this.getOwner()); } public static void main(String[] vargs) throws Exception { final ArgumentsParser args = ArgumentsParser.load(vargs); BenchmarkEnv.setExternalArgs(args); javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { GuiMain viewer = new GuiMain(args, "OLTP Workload Generator"); viewer.setVisible(true); viewer.setResizable(false); } // RUN }); } private void initNotifier() { m_notifier = new Notifier() { @Override public void showMsg(final String msg, boolean alwaysDisplay) { if (alwaysDisplay) { m_lblMsg.setText(msg); } else { new Thread() { public void run() { m_lblMsg.setText(msg); try { sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } m_lblMsg.setText(" "); } }.start(); } } }; } }