|
|
|
|
@ -6,157 +6,147 @@
|
|
|
|
|
*/
|
|
|
|
|
package net.java.sip.communicator.service.gui;
|
|
|
|
|
|
|
|
|
|
import net.java.sip.communicator.service.protocol.*;
|
|
|
|
|
import java.util.Iterator;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* The UIService provides an interface towards towards that part of the
|
|
|
|
|
* SIP Communicator that interacts with users and offers them a way to make,
|
|
|
|
|
* accept, manage or handup calls.
|
|
|
|
|
*
|
|
|
|
|
* In order for the UIService to support a communications protocol, a
|
|
|
|
|
* Provider implementation of the specified protocol needs to be registered with
|
|
|
|
|
* the service.
|
|
|
|
|
*
|
|
|
|
|
* Plugins using the service in order to add featuress to the user interface
|
|
|
|
|
* may do that using one of the addXxx() methods.
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* @author Emil Ivov
|
|
|
|
|
* @author Yana Stamcheva
|
|
|
|
|
*/
|
|
|
|
|
public interface UIService
|
|
|
|
|
{
|
|
|
|
|
public static final String COMPONENT_CONSTRAINT_MENU_FILE = "File";
|
|
|
|
|
public static final String COMPONENT_CONSTRAINT_MENU_VIEW = "View";
|
|
|
|
|
public static final String COMPONENT_CONSTRAINT_MENU_TOOLS = "Tools";
|
|
|
|
|
public static final String COMPONENT_CONSTRAINT_MENU_SETTINGS = "Settings";
|
|
|
|
|
public static final String COMPONENT_CONSTRAINT_MENU_HELP = "Help";
|
|
|
|
|
public static final String COMPONENT_CONSTRAINT_MENU_CALL = "Call";
|
|
|
|
|
public static final String COMPONENT_CONSTRAINT_MENU_ACCOUNT = "Account";
|
|
|
|
|
public static final String COMPONENT_CONSTRAINT_MENU_CONTACT = "Contact";
|
|
|
|
|
public static final String COMPONENT_CONSTRAINT_MENU_BAR = "Menu Bar";
|
|
|
|
|
|
|
|
|
|
public static final String UI_LIB_SWING = "Swing";
|
|
|
|
|
public static final String UI_LIB_SWT = "SWT";
|
|
|
|
|
public static final String UI_LIB_AWT = "AWT";
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Registers the specified telephony provider with the user interface. The
|
|
|
|
|
* PhoneUIService implementation will automatically add itself as a state
|
|
|
|
|
* listener of the specified provider and react in accordance with states
|
|
|
|
|
* coming from that listener. It will also deliver all relevant user
|
|
|
|
|
* call control requests to that provider.
|
|
|
|
|
* @param provider the provider to register.
|
|
|
|
|
*/
|
|
|
|
|
public void registerProvider(ProtocolProviderService provider);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Specifies whether or not the phone ui should be visible (In case for
|
|
|
|
|
* example we'd only like a sys tray icon or a contact list to show).
|
|
|
|
|
* @param visible a boolean specifying whether the phone ui should be visible
|
|
|
|
|
*/
|
|
|
|
|
public void setVisible(boolean visible);
|
|
|
|
|
|
|
|
|
|
//services offered to bundles/plugins that would like to interact with the
|
|
|
|
|
//gui.
|
|
|
|
|
public static final ContainerID CONTAINER_FILE_MENU
|
|
|
|
|
= new ContainerID("File");
|
|
|
|
|
public static final ContainerID CONTAINER_TOOLS_MENU
|
|
|
|
|
= new ContainerID("Tools");
|
|
|
|
|
public static final ContainerID CONTAINER_VIEW_MENU
|
|
|
|
|
= new ContainerID("View");
|
|
|
|
|
public static final ContainerID CONTAINER_HELP_MENU
|
|
|
|
|
= new ContainerID("Help");
|
|
|
|
|
public static final ContainerID CONTAINER_SETTINGS_MENU
|
|
|
|
|
= new ContainerID("Settings");
|
|
|
|
|
public static final ContainerID CONTAINER_MAIN_TOOL_BAR
|
|
|
|
|
= new ContainerID("MainToolBar");
|
|
|
|
|
public static final ContainerID CONTAINER_CHAT_TOOL_BAR
|
|
|
|
|
= new ContainerID("ChatToolBar");
|
|
|
|
|
public static final ContainerID CONTAINER_CHAT_NEW_TOOL_BAR
|
|
|
|
|
= new ContainerID("NewChatToolBar");
|
|
|
|
|
public static final ContainerID CONTAINER_RIGHT_BUTTON_MENU
|
|
|
|
|
= new ContainerID("RightButtonMenu");
|
|
|
|
|
public static final ContainerID CONTAINER_CONFIGURATION_MENU
|
|
|
|
|
= new ContainerID("ConfigurationMenu");
|
|
|
|
|
public static final ContainerID CONTAINER_CHAT_MENU_BAR
|
|
|
|
|
= new ContainerID("ChatMenuBar");
|
|
|
|
|
public static final ContainerID CONTAINER_CHAT_FILE_MENU
|
|
|
|
|
= new ContainerID("ChatFileMenu");
|
|
|
|
|
public static final ContainerID CONTAINER_CHAT_EDIT_MENU
|
|
|
|
|
= new ContainerID("ChatEditMenu");
|
|
|
|
|
public static final ContainerID CONTAINER_CHAT_SETTINGS_MENU
|
|
|
|
|
= new ContainerID("ChatSettingsMenu");
|
|
|
|
|
public static final ContainerID CONTAINER_CHAT_HELP_MENU
|
|
|
|
|
= new ContainerID("ChatHelpMenu");
|
|
|
|
|
|
|
|
|
|
public static final String START = "Start";
|
|
|
|
|
public static final String END = "End";
|
|
|
|
|
public static final String TOP = "Top";
|
|
|
|
|
public static final String BOTTOM = "Bottom";
|
|
|
|
|
public static final String LEFT = "Left";
|
|
|
|
|
public static final String RIGHT = "Right";
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns an array of Call objects containing the current set of ongoing
|
|
|
|
|
* calls. One could obtain specific call participants through by querying
|
|
|
|
|
* Call methods
|
|
|
|
|
* @return an array of Call objects reflecting on-going calls.
|
|
|
|
|
*/
|
|
|
|
|
public Call[] getActiveCalls();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns the name of the library used to implement the service. In case
|
|
|
|
|
* the implementation is using Swing, SWT, or pure AWT it MUST return one of
|
|
|
|
|
* the UI_LIB_XXX constants. The method may be used by plugins that would
|
|
|
|
|
* like to retrieve ui components
|
|
|
|
|
* @return String
|
|
|
|
|
*/
|
|
|
|
|
public String getUiLibName();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns an array of UI lib names indicating that the implementation is
|
|
|
|
|
* able to handle components registered by external plugins/bungles in case
|
|
|
|
|
* they are implemented using one of the returned lib names. The lib names
|
|
|
|
|
* returned by this method should be one or more of the UI_LIB_XXX constants,
|
|
|
|
|
* but callers of this method must properly handle unknown Strings which might
|
|
|
|
|
* be returned by implementations of future versions of this service.
|
|
|
|
|
*
|
|
|
|
|
* @return an array containing one or more UI_LIB_XXX constants.
|
|
|
|
|
*/
|
|
|
|
|
public String[] getSupportedUiLibNames();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Adds the specified menuItem to the specified parent menu. The parent String
|
|
|
|
|
* MUST be one of the MENU_XXX constants. It is up to the service
|
|
|
|
|
* implementation to verify that "menuItem" is an instance of a class
|
|
|
|
|
* compatible with the gui library used by it. If this is not the case and
|
|
|
|
|
* adding the requested object would not be possible the implementation
|
|
|
|
|
* MUST through an exception.
|
|
|
|
|
*
|
|
|
|
|
* @param parent one of the MENU_XXX string constants indicating the parent
|
|
|
|
|
* menu that this menuItem should be added to.
|
|
|
|
|
* @param menuItem the item to add.
|
|
|
|
|
* @throws ClassCastException if the menuItem is an
|
|
|
|
|
* instance of a class not supported by the service implementation.
|
|
|
|
|
* @throws IllegalArgumentException if the specified parent is not
|
|
|
|
|
* recognized by the implementation (note that implementations MUST properly
|
|
|
|
|
* handle all MENU_XXX strings as eventual parents even if they do not
|
|
|
|
|
* correspond to a menu with the same title and may be organized at the will
|
|
|
|
|
* of the implementor).
|
|
|
|
|
* Adds the specified UI component to the container given by ContainerID.
|
|
|
|
|
* The method is meant to be used by plugins or bundles that would like to add
|
|
|
|
|
* components to the user interface. The <tt>containerID</tt> is used by the
|
|
|
|
|
* implementation to determine the place where the component should be added.
|
|
|
|
|
* The <tt>containerID</tt> SHOULD be one of the CONTAINER_XXX constants. It is up
|
|
|
|
|
* to the service implementation to verify that <tt>component</tt> is an
|
|
|
|
|
* instance of a class compatible with the gui library used by it. If this
|
|
|
|
|
* is not the case and adding the requested object would not be possible the
|
|
|
|
|
* implementation MUST through a ClassCastException exception.
|
|
|
|
|
* Implementations of this service MUST understand and know how to handle
|
|
|
|
|
* all ContainerID-s defined by this interface, they MAY also define additional constraints.
|
|
|
|
|
* In case the addComponent method is called with a <tt>containerID</tt> that the
|
|
|
|
|
* implementation does not understand it MUST through a java.lang.IllegalArgumentException
|
|
|
|
|
* <br>
|
|
|
|
|
* @param containerID One of the CONTAINER_XXX ContainerID-s.
|
|
|
|
|
* @param component The component to be added.
|
|
|
|
|
* @throws ClassCastException if <tt>component</tt> is not an
|
|
|
|
|
* instance of a class supported by the service implementation. An SWT impl
|
|
|
|
|
* would, for example through a ClassCastException if handed a
|
|
|
|
|
* java.awt.Component
|
|
|
|
|
* @throws IllegalArgumentException if the specified <tt>containerID</tt>
|
|
|
|
|
* is not recognized by the implementation (note that implementations
|
|
|
|
|
* MUST properly handle all CONTAINER_XXX containerID-s.
|
|
|
|
|
*/
|
|
|
|
|
public void addMenuItem(String parent, Object menuItem)
|
|
|
|
|
public void addComponent(ContainerID containerID, Object component)
|
|
|
|
|
throws ClassCastException, IllegalArgumentException;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Adds the specified UI component to the user interface according to the
|
|
|
|
|
* provided string constraint. The method is meant to be used by plugins or
|
|
|
|
|
* bundles that would like to add components to the user interface. The
|
|
|
|
|
* <tt>constraint</tt> string is used by the implementation to determine
|
|
|
|
|
* the place where the component should be added. The <tt>constraint</tt>
|
|
|
|
|
* String SHOULD be one of the COMPONENT_CONSTRAINT_XXX constants. It is up
|
|
|
|
|
* to the service implementation to verify that <tt>component</tt> is an
|
|
|
|
|
* Adds the specified UI component to the container given by <tt>containerID</tt> at
|
|
|
|
|
* the position specified by <tt>constraint</tt> String. The method is meant to be used
|
|
|
|
|
* by plugins or bundles that would like to add components to the user interface.
|
|
|
|
|
* The <tt>containerID</tt> is used by the implementation to determine the place where
|
|
|
|
|
* the component should be added. The <tt>containerID</tt> SHOULD be one of the
|
|
|
|
|
* CONTAINER_XXX constants. The <tt>constraint</tt> String is used to determine the
|
|
|
|
|
* exact position of the component in the container (LEFT, RIGHT, START, etc.). The
|
|
|
|
|
* <tt>constraint</tt> String SHOULD be one of the START, END, TOP, BOTTOM, etc.
|
|
|
|
|
* String constants.
|
|
|
|
|
* <br>
|
|
|
|
|
* It is up to the service implementation to verify that <tt>component</tt> is an
|
|
|
|
|
* instance of a class compatible with the gui library used by it. If this
|
|
|
|
|
* is not the case and adding the requested object would not be possible the
|
|
|
|
|
* implementation MUST through a ClassCastException exception.
|
|
|
|
|
* Implementations of this service MUST understant and know how to handle
|
|
|
|
|
* all COMPONENT_CONSTRAINT_XXX Strings defined by this interface, they
|
|
|
|
|
* MAY also define additional constraints. In case the addComponent method
|
|
|
|
|
* is called with a <tt>constraint</tt> that the implementation does
|
|
|
|
|
* not understand it MUST through a java.lang.IllegalArgumentException <br>
|
|
|
|
|
* Implementations of this service MUST understand and know how to handle
|
|
|
|
|
* all ContainerID-s defined by this interface, they MAY also define additional constraints.
|
|
|
|
|
* In case the addComponent method is called with a <tt>containerID</tt> that the
|
|
|
|
|
* implementation does not understand it MUST through a java.lang.IllegalArgumentException
|
|
|
|
|
* <br>
|
|
|
|
|
* @param component the component we'd like to add
|
|
|
|
|
* @param constraint a String (possibly one of the COMPONENT_CONSTRAINT_XXX
|
|
|
|
|
* strings) indicating the place where the component should be added.
|
|
|
|
|
* @param containerID One of the CONTAINER_XXX ContainerID-s.
|
|
|
|
|
* @param component The component to be added.
|
|
|
|
|
* @throws ClassCastException if <tt>component</tt> is not an
|
|
|
|
|
* instance of a class supported by the service implementation. An SWT impl
|
|
|
|
|
* would, for example through a ClassCastException if handed a
|
|
|
|
|
* java.awt.Component
|
|
|
|
|
* @throws IllegalArgumentException if the specified <tt>constraint</tt>
|
|
|
|
|
* @throws IllegalArgumentException if the specified <tt>containerID</tt>
|
|
|
|
|
* is not recognized by the implementation (note that implementations
|
|
|
|
|
* MUST properly handle all COMPONENT_CONSTRAINT_XXX strings.
|
|
|
|
|
* MUST properly handle all CONTAINER_XXX containerID-s.
|
|
|
|
|
*/
|
|
|
|
|
public void addComponent(Object component, String constraint)
|
|
|
|
|
public void addComponent(ContainerID containerID, String constraint, Object component)
|
|
|
|
|
throws ClassCastException, IllegalArgumentException;
|
|
|
|
|
|
|
|
|
|
public void addUserActionListener();
|
|
|
|
|
|
|
|
|
|
//========================== CONFIG FORM CONTAINER =============================
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns the ConfigurationContainer object. The method is meant to be used to
|
|
|
|
|
* add or remove configuration form to or from the currently used configuration dialog.
|
|
|
|
|
*/
|
|
|
|
|
public ConfigurationContainer getConfigurationContainer();
|
|
|
|
|
* Returns an iterator to a set containing containerID-s pointing to containers
|
|
|
|
|
* supported by the current UI implementation. Each containerID in the set
|
|
|
|
|
* is one of the CONTAINER_XXX constants. The method is meant to be used by plugins
|
|
|
|
|
* or bundles that would like to add components to the user interface. Before adding
|
|
|
|
|
* any component they should use this method to obtain all possible places, which could
|
|
|
|
|
* contain external components, like different menus, toolbars, etc.
|
|
|
|
|
*
|
|
|
|
|
* @return Iterator An iterator to a set containing containerID-s representing all
|
|
|
|
|
* containers supported by the current UI implementation.
|
|
|
|
|
*/
|
|
|
|
|
public Iterator getSupportedContainers();
|
|
|
|
|
|
|
|
|
|
//========================== CONFIG ======================================
|
|
|
|
|
//maybe add a method to show the config dialog
|
|
|
|
|
|
|
|
|
|
//========================== AuthenticationService =======================
|
|
|
|
|
//these should probably go to a different service
|
|
|
|
|
public void requestAuthentication(String realm, String userName,
|
|
|
|
|
char[] password);
|
|
|
|
|
public String getAuthenticationUserName();
|
|
|
|
|
|
|
|
|
|
//get main frame (for dialogs)
|
|
|
|
|
/**
|
|
|
|
|
* Returns an iterator to a set containing all constraints supported by the given
|
|
|
|
|
* <tt>containerID</tt>. Each constraint in the set is one of the START, END, TOP,
|
|
|
|
|
* BOTTOM, etc. constants. This method is meant to be used to obtain all layout
|
|
|
|
|
* constraints supported by a given container.
|
|
|
|
|
*
|
|
|
|
|
* @param containerID The containerID pointing to the desired container.
|
|
|
|
|
* @return Iterator An iterator to a set containing all component constraints
|
|
|
|
|
*/
|
|
|
|
|
public Iterator getConstraintsForContainer(ContainerID containerID);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns an Iterator to a set containing all components added to a given constraint.
|
|
|
|
|
* Meant to be called in the process of initialization of the container, defined by the
|
|
|
|
|
* given constraint in order to obtain all external components that should be added in it.
|
|
|
|
|
*
|
|
|
|
|
* @param constraint One of the constraints supported by the current UI implementation.
|
|
|
|
|
* @return An Iterator to a set containing all components added to a given constraint.
|
|
|
|
|
*/
|
|
|
|
|
public Iterator getComponentsForContainer(ContainerID containerID)
|
|
|
|
|
throws IllegalArgumentException;
|
|
|
|
|
}
|
|
|
|
|
|