package call.gui;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JSplitPane;
import call.AbstractId;
import call.CallUi;
public class MainWindow extends AbstractId {
private static final String WINDOW_TITLE = "Call";
// swing components
private final JFrame window;
private final JSplitPane horizontalSplitPane;
// GUI classes
private final MainTabs tabs;
private final MainMenu menu;
private final ConsoleTab console;
private final SettingsAudioTab codecs;
private final ContactListGui contacts;
public MainWindow() {
CallUi.register(new GuiAdapter(this));
tabs = new MainTabs(this);
contacts = new ContactListGui(this);
window = new JFrame();
window.setTitle(WINDOW_TITLE);
menu = new MainMenu(this);
window.setJMenuBar(menu.getJMenuBar());
horizontalSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
horizontalSplitPane.setOneTouchExpandable(true);
JComponent contactsPanel = contacts.getComponent();
horizontalSplitPane.setDividerLocation(contactsPanel.getPreferredSize().width);
horizontalSplitPane.add(contactsPanel);
horizontalSplitPane.add(tabs.getComponent());
window.add(BorderLayout.CENTER, horizontalSplitPane);
console = new ConsoleTab(this);
codecs = new SettingsAudioTab(this);
}
public Component getWindow() {
return window;
}
public void setTitle(String title) {
if (title == null || title.length() == 0)
window.setTitle(WINDOW_TITLE);
else
window.setTitle(title);
}
public void runGui() {
tabs.tabs.setPreferredSize(new Dimension(750, 350));
window.pack();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
int x = (int) ((dimension.getWidth() - window.getWidth()) / 2);
int y = (int) ((dimension.getHeight() - window.getHeight()) / 2);
window.setLocation(x, y);
window.setIconImage(new ImageIcon("img/icon.png").getImage());
window.setVisible(true);
}
public MainTabs getTabs() {
return tabs;
}
public MainMenu getMenu() {
return menu;
}
public ConsoleTab getConsole() {
return console;
}
public ContactListGui getContacts() {
return contacts;
}
public SettingsAudioTab getCodecs() {
return codecs;
}
@Override
public String getId() {
return "MainGui";
}
}