a method was created which is charged with the gui loading

cusax-fix
Yana Stamcheva 19 years ago
parent 80f187c80f
commit ccc3a6f458

@ -35,17 +35,15 @@ public class GuiActivator implements BundleActivator {
private static Logger logger = Logger.getLogger(GuiActivator.class.getName());
private static UIServiceImpl uiService = null;
private CommunicatorMain communicatorMain;
private LoginManager loginManager;
public static BundleContext bundleContext;
private static ConfigurationService configService;
private static MessageHistoryService msgHistoryService;
private static MetaContactListService metaCListService;
private static CallHistoryService callHistoryService;
private static AudioNotifierService audioNotifierService;
@ -64,41 +62,21 @@ public void start(BundleContext bundleContext) throws Exception {
GuiActivator.bundleContext = bundleContext;
ConfigurationManager.loadGuiConfigurations();
this.communicatorMain = new CommunicatorMain();
MainFrame mainFrame = communicatorMain.getMainFrame();
this.loginManager = new LoginManager(mainFrame);
try {
ServiceReference clistReference = bundleContext
.getServiceReference(MetaContactListService.class.getName());
MetaContactListService contactListService
= (MetaContactListService) bundleContext
.getService(clistReference);
mainFrame.setContactList(contactListService);
logger.logEntry();
//Create the ui service
this.uiService = new UIServiceImpl(mainFrame);
// Create the ui service
this.uiService = new UIServiceImpl();
logger.info("UI Service...[ STARTED ]");
bundleContext.registerService(UIService.class.getName(),
this.uiService, null);
logger.info("UI Service ...[REGISTERED]");
if(ConfigurationManager.isApplicationVisible())
mainFrame.setVisible(true);
SwingUtilities.invokeLater(new RunLogin());
logger.info("UI Service ...[REGISTERED]");
this.uiService.loadApplicationGui();
uiService.initExportedWindows();
logger.logEntry();
}
finally {
logger.logExit();
@ -119,16 +97,6 @@ public void stop(BundleContext bundleContext) throws Exception {
logger.info("UI Service ...[STOPPED]");
}
/**
* The <tt>RunLogin</tt> implements the Runnable interface and is used to
* shows the login windows in new thread.
*/
private class RunLogin implements Runnable {
public void run() {
loginManager.runLogin(communicatorMain.getMainFrame());
}
}
/**
* Returns all <tt>ProtocolProviderFactory</tt>s obtained from the bundle
* context.
@ -224,6 +192,24 @@ public static MessageHistoryService getMsgHistoryService() {
return msgHistoryService;
}
/**
* Returns the <tt>MetaContactListService</tt> obtained from the bundle
* context.
* @return the <tt>MetaContactListService</tt> obtained from the bundle
* context
*/
public static MetaContactListService getMetaContactListService() {
if (metaCListService == null) {
ServiceReference clistReference = bundleContext
.getServiceReference(MetaContactListService.class.getName());
metaCListService = (MetaContactListService) bundleContext
.getService(clistReference);
}
return metaCListService;
}
/**
* Returns the <tt>CallHistoryService</tt> obtained from the bundle
* context.

@ -16,17 +16,15 @@
*
* @author Yana Stamcheva
*/
public class PopupDialogImpl extends JOptionPane
implements PopupDialog {
private MainFrame parentWindow;
public class PopupDialogImpl
extends JOptionPane
implements PopupDialog
{
/**
* Creates an instance of <tt>PopupDialogImpl</tt>.
* @param parentWindow The main application window.
*/
public PopupDialogImpl(MainFrame parentWindow) {
this.parentWindow = parentWindow;
public PopupDialogImpl()
{
}
/**
@ -34,7 +32,7 @@ public PopupDialogImpl(MainFrame parentWindow) {
* Invokes the corresponding <tt>JOptionPane.showInputDialog</tt> method.
*/
public String showInputPopupDialog(Object message) {
return showInputDialog(parentWindow, message);
return showInputDialog(message);
}
/**
@ -44,8 +42,7 @@ public String showInputPopupDialog(Object message) {
*/
public String showInputPopupDialog(Object message,
String initialSelectionValue) {
return showInputDialog(parentWindow, message,
initialSelectionValue);
return showInputDialog(message, initialSelectionValue);
}
/**
@ -72,8 +69,7 @@ else if (messageType == PopupDialog.WARNING_MESSAGE) {
else {
type = JOptionPane.PLAIN_MESSAGE;
}
return (String)showInputDialog(parentWindow, message,
title, type);
return (String)showInputDialog(null, message, title, type);
}
/**
@ -103,7 +99,7 @@ else if (messageType == PopupDialog.WARNING_MESSAGE) {
type = JOptionPane.PLAIN_MESSAGE;
}
return showInputDialog(parentWindow, message, title, type,
return showInputDialog(null, message, title, type,
null, selectionValues, initialSelectionValue);
}
@ -113,7 +109,7 @@ else if (messageType == PopupDialog.WARNING_MESSAGE) {
* <tt>JOptionPane.showMessageDialog</tt> method.
*/
public void showMessagePopupDialog(Object message) {
showMessageDialog(parentWindow, message);
showMessageDialog(null, message);
}
/**
@ -140,7 +136,7 @@ else if (messageType == PopupDialog.WARNING_MESSAGE) {
type = JOptionPane.PLAIN_MESSAGE;
}
showMessageDialog(parentWindow, message, title, type);
showMessageDialog(null, message, title, type);
}
/**
@ -149,7 +145,7 @@ else if (messageType == PopupDialog.WARNING_MESSAGE) {
* <tt>JOptionPane.showConfirmDialog</tt> method.
*/
public int showConfirmPopupDialog(Object message) {
return showConfirmDialog(parentWindow, message);
return showConfirmDialog(null, message);
}
/**
@ -173,7 +169,7 @@ else if (optionType == PopupDialog.YES_NO_CANCEL_OPTION) {
type = JOptionPane.DEFAULT_OPTION;
}
return showConfirmDialog(parentWindow, message, title, type);
return showConfirmDialog(null, message, title, type);
}
/**
@ -215,7 +211,7 @@ else if (messageType == PopupDialog.WARNING_MESSAGE) {
msgType = JOptionPane.PLAIN_MESSAGE;
}
return showConfirmDialog(parentWindow, message, title,
return showConfirmDialog(null, message, title,
optType, msgType);
}

@ -15,8 +15,11 @@
import java.util.Map;
import java.util.Vector;
import javax.swing.*;
import javax.swing.JFrame;
import net.java.sip.communicator.impl.gui.GuiActivator.*;
import net.java.sip.communicator.impl.gui.lookandfeel.*;
import net.java.sip.communicator.impl.gui.main.*;
import net.java.sip.communicator.impl.gui.main.account.AccountRegWizardContainerImpl;
import net.java.sip.communicator.impl.gui.main.chat.*;
@ -24,6 +27,7 @@
import net.java.sip.communicator.impl.gui.main.contactlist.ContactListPanel;
import net.java.sip.communicator.impl.gui.main.contactlist.addcontact.*;
import net.java.sip.communicator.impl.gui.main.login.*;
import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.service.contactlist.*;
import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.gui.event.PluginComponentEvent;
@ -57,12 +61,15 @@ public class UIServiceImpl
supportedContainers.add(UIService.CONTAINER_MAIN_TOOL_BAR);
supportedContainers.add(UIService.CONTAINER_CONTACT_RIGHT_BUTTON_MENU);
supportedContainers.add(UIService.CONTAINER_GROUP_RIGHT_BUTTON_MENU);
supportedContainers.add(UIService.CONTAINER_TOOLS_MENU);
}
private static final Hashtable exportedWindows = new Hashtable();
private MainFrame mainFrame;
private LoginManager loginManager;
private ContactListPanel contactListPanel;
private ConfigurationFrame configurationFrame;
@ -74,17 +81,36 @@ public class UIServiceImpl
*
* @param mainFrame The main application window.
*/
public UIServiceImpl(MainFrame mainFrame)
public UIServiceImpl()
{}
/**
* Initializes all frames and panels and shows the gui.
*/
public void loadApplicationGui()
{
this.mainFrame = mainFrame;
this.setDefaultThemePack();
this.mainFrame = new MainFrame();
this.loginManager = new LoginManager(mainFrame);
this.contactListPanel = mainFrame.getContactListPanel();
this.popupDialog = new PopupDialogImpl(mainFrame);
this.popupDialog = new PopupDialogImpl();
this.wizardContainer = new AccountRegWizardContainerImpl(mainFrame);
this.configurationFrame = new ConfigurationFrame(mainFrame);
this.configurationFrame = new ConfigurationFrame(mainFrame);
mainFrame.setContactList(GuiActivator.getMetaContactListService());
if(ConfigurationManager.isApplicationVisible())
SwingUtilities.invokeLater(new RunApplicationGui());
SwingUtilities.invokeLater(new RunLoginGui());
this.initExportedWindows();
}
/**
@ -100,10 +126,8 @@ public UIServiceImpl(MainFrame mainFrame)
public void addComponent(ContainerID containerID, Object component)
throws ClassCastException, IllegalArgumentException
{
if (!supportedContainers.contains(containerID))
{
throw new IllegalArgumentException(
"The constraint that you specified is not"
+ " supported by this UIService implementation.");
@ -116,15 +140,12 @@ else if (!(component instanceof Component))
}
else
{
if (registeredPlugins.containsKey(containerID))
{
((Vector) registeredPlugins.get(containerID)).add(component);
}
else
{
Vector plugins = new Vector();
plugins.add(component);
registeredPlugins.put(containerID, plugins);
@ -132,7 +153,6 @@ else if (!(component instanceof Component))
this.firePluginEvent(component, containerID,
PluginComponentEvent.PLUGIN_COMPONENT_ADDED);
}
}
/**
@ -556,4 +576,63 @@ public ExportedWindow getAuthenticationWindow(
return new AuthenticationWindow(mainFrame, protocolProvider,
realm, userCredentials);
}
/**
* Returns the LoginManager.
* @return the LoginManager
*/
public LoginManager getLoginManager()
{
return loginManager;
}
/**
* Returns the <tt>MainFrame</tt>. This is the class defining the main
* application window.
*
* @return the <tt>MainFrame</tt>
*/
public MainFrame getMainFrame()
{
return mainFrame;
}
/**
* The <tt>RunLogin</tt> implements the Runnable interface and is used to
* shows the login windows in a seperate thread.
*/
private class RunLoginGui implements Runnable {
public void run() {
loginManager.runLogin(mainFrame);
}
}
/**
* The <tt>RunApplication</tt> implements the Runnable interface and is used to
* shows the main application window in a separate thread.
*/
private class RunApplicationGui implements Runnable {
public void run() {
mainFrame.setVisible(true);
}
}
/**
* Sets the look&feel and the theme.
*/
private void setDefaultThemePack() {
SIPCommLookAndFeel lf = new SIPCommLookAndFeel();
SIPCommLookAndFeel.setCurrentTheme(new SIPCommDefaultTheme());
// we need to set the UIDefaults class loader so that it may access
// resources packed inside OSGI bundles
UIManager.put("ClassLoader", getClass().getClassLoader());
try {
UIManager.setLookAndFeel(lf);
} catch (UnsupportedLookAndFeelException e) {
logger.error("The provided Look & Feel is not supported.", e);
}
}
}

@ -1,68 +0,0 @@
/*
* SIP Communicator, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package net.java.sip.communicator.impl.gui.main;
import javax.swing.*;
import net.java.sip.communicator.impl.gui.lookandfeel.*;
import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.util.*;
/**
* Starts the GUI application using the SIPCommLookAndFeel with the
* SIPCommDefaultTheme.
*
* @author Yana Stamcheva
*/
public class CommunicatorMain {
private MainFrame mainFrame;
private Logger logger = Logger.getLogger(CommunicatorMain.class.getName());
/**
* Creates an instance of <tt>CommunicatorMain</tt>. Creates the
* <tt>MainFrame</tt>.
*/
public CommunicatorMain() {
this.setDefaultThemePack();
mainFrame = new MainFrame();
// In order to have the same icon when using option panes
JOptionPane.getRootFrame().setIconImage(
ImageLoader.getImage(ImageLoader.SIP_COMMUNICATOR_LOGO));
}
/**
* Sets the look&feel and the theme.
*/
public void setDefaultThemePack() {
SIPCommLookAndFeel lf = new SIPCommLookAndFeel();
SIPCommLookAndFeel.setCurrentTheme(new SIPCommDefaultTheme());
// we need to set the UIDefaults class loader so that it may access
// resources packed inside OSGI bundles
UIManager.put("ClassLoader", getClass().getClassLoader());
try {
UIManager.setLookAndFeel(lf);
} catch (UnsupportedLookAndFeelException e) {
logger.error("The provided Look & Feel is not supported.", e);
}
}
/**
* Returns the main application window.
* @return the main application window.
*/
public MainFrame getMainFrame() {
return mainFrame;
}
}

@ -18,6 +18,7 @@
import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.customcontrols.*;
import net.java.sip.communicator.impl.gui.i18n.*;
import net.java.sip.communicator.impl.gui.lookandfeel.*;
import net.java.sip.communicator.impl.gui.main.call.*;
import net.java.sip.communicator.impl.gui.main.chat.*;
import net.java.sip.communicator.impl.gui.main.chat.conference.*;
@ -100,13 +101,16 @@ public MainFrame()
this.addWindowListener(new MainFrameWindowAdapter());
//this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setInitialBounds();
this.setTitle(Messages.getI18NString("sipCommunicator").getText());
this.setIconImage(
ImageLoader.getImage(ImageLoader.SIP_COMMUNICATOR_LOGO));
// In order to have the same icon when using option panes
JOptionPane.getRootFrame().setIconImage(
ImageLoader.getImage(ImageLoader.SIP_COMMUNICATOR_LOGO));
this.init();
}
@ -138,7 +142,7 @@ private void init()
this.getContentPane().add(mainPanel);
}
/**
* Sets frame size and position.
*/

Loading…
Cancel
Save