package org.chartsy.chatsy; import java.awt.BorderLayout; import javax.swing.JPanel; import javax.swing.JSplitPane; import javax.swing.JToolBar; import org.jivesoftware.smack.XMPPConnection; import org.chartsy.chatsy.chat.ChatsyManager; public final class MainWindow extends JPanel { private boolean focused; private JToolBar topToolbar = new JToolBar(); private JSplitPane splitPane; private static MainWindow singleton; private static final Object LOCK = new Object(); public static MainWindow getInstance() { synchronized (LOCK) { if (null == singleton) { MainWindow controller = new MainWindow(); singleton = controller; } } return singleton; } private MainWindow() { setLayout(new BorderLayout()); setOpaque(false); add(topToolbar, BorderLayout.NORTH); } public void shutdown() { final XMPPConnection connection = ChatsyManager.getConnection(); if (connection.isConnected()) connection.disconnect(); } public void logout() { final XMPPConnection connection = ChatsyManager.getConnection(); if (connection.isConnected()) connection.disconnect(); } public boolean isInFocus() { return focused; } public JToolBar getTopToolBar() { return topToolbar; } public JSplitPane getSplitPane() { if (splitPane == null) splitPane = new JSplitPane(); return this.splitPane; } }