initial commit
[instantlauncher.git] / src / main / java / eu / svjatoslav / instantlauncher / MainFrame.java
1 package eu.svjatoslav.instantlauncher;
2
3 import java.awt.BorderLayout;
4 import java.awt.Dimension;
5 import java.awt.Point;
6 import java.awt.event.WindowEvent;
7 import java.awt.event.WindowListener;
8
9 import javax.swing.JFrame;
10
11 import eu.svjatoslav.instantlauncher.menu.MultiLevelMenu;
12
13 public class MainFrame {
14
15     public static class FrameWindowListener implements WindowListener {
16
17         @Override
18         public void windowActivated(final WindowEvent e) {
19         }
20
21         @Override
22         public void windowClosed(final WindowEvent e) {
23         }
24
25         @Override
26         public void windowClosing(final WindowEvent e) {
27             InstantLauncher.exitProgram();
28         }
29
30         @Override
31         public void windowDeactivated(final WindowEvent e) {
32         }
33
34         @Override
35         public void windowDeiconified(final WindowEvent e) {
36         }
37
38         @Override
39         public void windowIconified(final WindowEvent e) {
40         }
41
42         @Override
43         public void windowOpened(final WindowEvent e) {
44         }
45
46     }
47
48     private JFrame frame;
49
50     private boolean isShowing;
51
52     public static final Dimension CONTENT_PANEL_SIZE = new Dimension(1100, 850);
53     public static final Point INITIAL_LOCATION = new Point(100, 30);
54
55     private final InstantLauncher instantLauncher;
56
57     public MainFrame(final InstantLauncher instantLauncher) {
58         this.instantLauncher = instantLauncher;
59     }
60
61     private void buildContentPane() {
62
63         final MultiLevelMenu multiLevelMenu = new MultiLevelMenu(instantLauncher);
64         frame.getContentPane().add(multiLevelMenu.buildContentPanel(), BorderLayout.CENTER);
65
66     }
67
68     public void show() {
69
70         if (!isShowing) {
71             // initialize frame
72             frame = new JFrame("InstantLauncher");
73
74             buildContentPane();
75
76             frame.setSize(CONTENT_PANEL_SIZE);
77             frame.setVisible(true);
78             frame.setLocation(INITIAL_LOCATION);
79
80             // registor window listener
81             final FrameWindowListener windowListener = new FrameWindowListener();
82             frame.addWindowListener(windowListener);
83
84             // maximize window
85             frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
86
87             isShowing = true;
88         }
89
90     }
91
92 }