package devopsdistilled.operp.client.main; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Rectangle; import javax.annotation.PostConstruct; import javax.inject.Inject; import javax.swing.JFrame; import javax.swing.JSplitPane; import devopsdistilled.operp.client.abstracts.TaskPane; public class MainWindow implements MainModelObserver { private static MainWindow mainWindow = new MainWindow(); @Inject private MainWindowController controller; @Inject private MainModel model; @Inject private NavigationPane navigationPane; private JFrame frame; private JSplitPane splitPane; private MainWindow() { } public static MainWindow getInstance() { return mainWindow; } @PostConstruct private void registerObserver() { model.registerObserver(this); } public void init() { EventQueue.invokeLater(new Runnable() { @Override public void run() { initComponents(); frame.getContentPane().add(splitPane); splitPane.setLeftComponent(navigationPane.getPane()); splitPane.setRightComponent(model.getSelectedTaskPane() .getPane()); frame.setVisible(true); } }); } private void initComponents() { frame = new JFrame(model.getTitle()); Dimension d=new Dimension(750,600); frame.setBounds(new Rectangle(d)); frame.setLocationRelativeTo(null); frame.setResizable(false); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); splitPane = new JSplitPane(); splitPane.setDividerLocation(250); } @Override public void updateTaskPane(TaskPane taskPane) { splitPane.setRightComponent(taskPane.getPane()); splitPane.setDividerLocation(250); } @Override public void updateTitle(String title) { frame.setTitle(title); } public MainModel getModel() { return model; } public MainWindowController getController() { return controller; } }