package net.sourceforge.pain.tools.guitool; import net.sourceforge.pain.tools.guitool.menu.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; public class ApplicationFrame extends JFrame { private static final int PREFERRED_WIDTH = 720; private static final int PREFERRED_HEIGHT = 600; private JPanel appPanel = null; private JWindow splashScreen = null; private JLabel splashLabel = null; public MainMenu mainMenu = null; public ToolBar toolbar = null; public StatusBar statusBar = null; public WorkspacePanel workspacePanel = null; public ApplicationFrame(GraphicsConfiguration grc) { super(grc); } void go(){ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); createSplashScreen(); SwingUtilities.invokeLater(new Runnable() { public void run() { splashScreen.show(); } }); initialize(); SwingUtilities.invokeLater(new Runnable() { public void run() { showGuiTool(); hideSplash(); } }); } private void initialize() { appPanel = new JPanel(); appPanel.setPreferredSize(new Dimension(PREFERRED_WIDTH, PREFERRED_HEIGHT)); appPanel.setLayout(new BorderLayout()); JPanel top = new JPanel(); top.setLayout(new BorderLayout()); appPanel.add(top, BorderLayout.NORTH); mainMenu = new MainMenu(); top.add(mainMenu.menuBar ,BorderLayout.NORTH ); JPanel centerPanel = new JPanel(new BorderLayout()); appPanel.add(centerPanel, BorderLayout.CENTER); statusBar = new StatusBar(); appPanel.add(statusBar, BorderLayout.SOUTH); toolbar = new ToolBar(); centerPanel.add(toolbar.getJToolBar(), BorderLayout.NORTH); workspacePanel = new WorkspacePanel(); centerPanel.add(workspacePanel, BorderLayout.CENTER); getContentPane().add(appPanel, BorderLayout.CENTER); } public void createSplashScreen() { splashLabel = new JLabel(GuiTool.loadImage("Splash.jpg", "desc")); splashScreen = new JWindow(this); splashScreen.getContentPane().add(splashLabel); splashScreen.pack(); Rectangle screenRect = getGraphicsConfiguration().getBounds(); splashScreen.setLocation( screenRect.x + screenRect.width / 2 - splashScreen.getSize().width / 2, screenRect.y + screenRect.height / 2 - splashScreen.getSize().height / 2); } public void hideSplash() { splashScreen.setVisible(false); splashScreen = null; splashLabel = null; } public void showGuiTool() { // put management in a frame and show it setTitle("PAiN Management Tool"); pack(); Rectangle screenRect = getGraphicsConfiguration().getBounds(); Insets screenInsets = Toolkit.getDefaultToolkit().getScreenInsets( getGraphicsConfiguration()); // Make sure we don't place the demo off the screen. int centerWidth = screenRect.width < getSize().width ? screenRect.x : screenRect.x + screenRect.width / 2 - getSize().width / 2; int centerHeight = screenRect.height < getSize().height ? screenRect.y : screenRect.y + screenRect.height / 2 - getSize().height / 2; centerHeight = centerHeight < screenInsets.top ? screenInsets.top : centerHeight; setLocation(centerWidth, centerHeight); // workspacePanel.vSplitPane.setDividerLocation(5/6D); workspacePanel.hSplitPane.setDividerLocation(workspacePanel.hSplitPane.getResizeWeight()); workspacePanel.vSplitPane.setDividerLocation(workspacePanel.vSplitPane.getResizeWeight()); show(); } public WorkspacePanel getWorkspacePanel(){ return workspacePanel; } public StatusBar getStatusBar() { return statusBar; } //-------------INNERS ----------------// class TabListener implements ChangeListener { public void stateChanged(ChangeEvent e) { SingleSelectionModel model = (SingleSelectionModel) e.getSource(); boolean logSelected = model.getSelectedIndex() == 1; if (logSelected) { statusBar.setContextMessage("log window"); } else { statusBar.setContextMessage("main window"); } } } }