/* * org.openmicroscopy.shoola.env.ui.TaskBar * *------------------------------------------------------------------------------ * Copyright (C) 2006 University of Dundee. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * *------------------------------------------------------------------------------ */ package org.openmicroscopy.shoola.env.ui; import java.util.List; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; /** * Defines the functionality of the task bar UI. * <p>The task bar is a top level window that contains a menu bar and a series * of toolbars. The container brings this window up after initialization for * the user to control some of the container's tasks — like the connection * to remote services or quitting the application.</p> * <p>Agents that have a UI typically add an entry to the {@link #WINDOW_MENU} * (during the linking phase) for top * level windows that the user can bring up.<br> * The {@link TopWindow} class has built-in functionality to provide this * linkage as well as functionality to manage the display state of the window. * So agents with a single top level window may want to have their window * inherit from {@link TopWindow}. If an agent allows multiple simultaneous * instances of the same top level window, then it can use the * {@link TopWindowGroup} to group all those instances together in the task bar * under a common {@link #WINDOW_MENU} entry. Like {@link TopWindow}, * {@link TopWindowGroup} also takes care of managing the display state of its * windows; however, it doesn't require its managed windows to inherit from * {@link TopWindow}.</p> * * @see org.openmicroscopy.shoola.env.ui.TopWindow * @see org.openmicroscopy.shoola.env.ui.TopWindowGroup * @author Jean-Marie Burel      * <a href="mailto:j.burel@dundee.ac.uk">j.burel@dundee.ac.uk</a> * @author <br>Andrea Falconi      * <a href="mailto:a.falconi@dundee.ac.uk"> * a.falconi@dundee.ac.uk</a> * @version 2.2 * @since OME2.2 */ public interface TaskBar { //NOTE: The TaskBarView uses these constants to do direct indexing. //So changing these values requires a review of TaskBarView as well. /** * Identifies the tasks menu within the menu bar. * Entries in this menu trigger actions related to the application * workflow. */ //public static final int TASKS_MENU = 0; /** * Identifies the connect menu within the menu bar. * Entries in this menu trigger actions to connect/disconnect to/from * remote services. */ //public static final int CONNECT_MENU = 1; /** * Identifies the window menu within the menu bar. * Entries in this menu trigger actions to bring up top level windows. */ public static final int WINDOW_MENU = 0; /** Identifies the help menu within the menu bar. */ public static final int HELP_MENU = 1; /** Identifies the file menu within the menu bar. */ public static final int FILE_MENU = 2; /** Identifies the <code>Send Comment</code> menu item. */ public static final int COMMENT = 100; /** Identifies the <code>Help content</code> menu item. */ public static final int HELP_CONTENTS = 101; /** Identifies the <code>Agents</code> tool bar. */ public static final int AGENTS = 201; /** Identifies the <code>Agents</code> tool bar. */ public static final int ANALYSIS = 202; /** * Adds the component to the specified toolbar, This is the way to register * to agents. * * @param toolBarID The identifier of the tool bar. * @param entry The item to add. */ public void addToToolBar(int toolBarID, JComponent entry); /** * Returns the collection of the entries registered for that tool bar. * * @param toolBarID The identifier of the tool bar. * @return See above. */ public List<JComponent> getToolBarEntries(int toolBarID); /** * Adds <code>entry</code> to the specified menu. * * @param menuID ID of one of the menus supported by the task bar. Must * be one of the constants defined by this interface. * @param entry The item to add. * @throws IllegalArgumentException If <code>menuID</code> is not valid. * @throws NullPointerException If <code>entry</code> is <code>null</code>. */ public void addToMenu(int menuID, JMenuItem entry); /** * Removes <code>entry</code> from the specified menu. * * @param menuID ID of one of the menus supported by the task bar. Must * be one of the constants defined by this interface. * @param entry The item to remove. * @throws IllegalArgumentException If <code>menuID</code> is not valid. */ public void removeFromMenu(int menuID, JMenuItem entry); /** * Returns a reference to the task bar window. * * @return See above. */ public JFrame getFrame(); /** * Returns the <code>JMenuBar</code> of the task bar. * * @return See above. */ public JMenuBar getTaskBarMenuBar(); /** * Builds and returns a copy of the menu item specified by the passed index. * If the passed value is not supported, a <code>null</code> value * is returned. * * @param index The index of the item to copy. * @return See above. */ public JMenuItem getCopyMenuItem(int index); /** * Returns <code>true</code> if already connected, * <code>false</code> otherwise. * * @return See above. */ public boolean login(); /** * Opens the passed URL if possible. * * @param path The path to handle. */ public void openURL(String path); /** * Invokes when an error has occurred and the connection is lost. * * @param index One of the constants defined by this class. */ public void sessionExpired(int index); /** * Returns the menu corresponding to the specified value or * <code>null</code>. * * @param menuID The identifier of the menu. * @return See above. */ public JMenu getMenu(int menuID); /** * Returns the relative path for file in the libs folder. * * @param file The file to handle. * @return See above. */ public String getLibFileRelative(String file); }