/*
*------------------------------------------------------------------------------
* Copyright (C) 2006-2015 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.agents.treeviewer.view;
import java.awt.Component;
import java.awt.Point;
import java.io.File;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.swing.JFrame;
import org.openmicroscopy.shoola.agents.treeviewer.ImageChecker.ImageCheckerType;
import org.openmicroscopy.shoola.agents.treeviewer.browser.Browser;
import org.openmicroscopy.shoola.agents.util.DataObjectRegistration;
import org.openmicroscopy.shoola.agents.util.browser.TreeImageDisplay;
import org.openmicroscopy.shoola.agents.util.browser.TreeImageSet;
import org.openmicroscopy.shoola.agents.util.browser.TreeImageTimeSet;
import org.openmicroscopy.shoola.env.LookupNames;
import org.openmicroscopy.shoola.env.data.model.AdminObject;
import org.openmicroscopy.shoola.env.data.model.ApplicationData;
import org.openmicroscopy.shoola.env.data.model.ImageCheckerResult;
import org.openmicroscopy.shoola.env.data.model.ScriptObject;
import org.openmicroscopy.shoola.env.data.model.TimeRefObject;
import omero.gateway.SecurityContext;
import org.openmicroscopy.shoola.env.rnd.RndProxyDef;
import org.openmicroscopy.shoola.env.ui.ActivityComponent;
import org.openmicroscopy.shoola.util.ui.component.ObservableComponent;
import omero.gateway.model.DataObject;
import omero.gateway.model.ExperimenterData;
import omero.gateway.model.GroupData;
import omero.gateway.model.ImageData;
/**
* Defines the interface provided by the tree viewer component.
* The tree viewer provides a top-level window to host different types of
* hierarchy display and let the user interact with it.
* A display is a view with a visualization tree. A visualization tree
* is a graphical tree that represents objects in a given <i>OME</i> hierarchy,
* like Project/Dataset/Image, Screen/Plate/Wells or simply Images.
* The component follows the <code>Lazy loading rule</code> i.e. the leaves
* of a given hierarchy are only retrieved if the parent is selected.
* In practice, this means that we only display a Project/Dataset hierarchy
* if a given Dataset is selected, then the images in this Dataset are
* retrieved.
* <p>The typical life-cycle of a tree viewer is as follows. The object
* is first created using the {@link TreeViewerFactory}, the
* {@link Browser}s hosting a hierarchy view are created. After
* creation the object is in the {@link #NEW} state and is waiting for the
* {@link #activate() activate} method to be called.
* The data retrieval happens in the {@link Browser}.
*
* When the user quits the window, the {@link #discard() discard} method is
* invoked and the object transitions to the {@link #DISCARDED} state.
* At which point, all clients should de-reference the component to allow for
* garbage collection.
*
* </p>
*
* @see Browser
*
* @author Jean-Marie Burel
* <a href="mailto:j.burel@dundee.ac.uk">j.burel@dundee.ac.uk</a>
* @version 2.2
* @since OME2.2
*/
public interface TreeViewer
extends ObservableComponent
{
/** Indicates to display the data per experimenter.*/
public static final int EXPERIMENTER_DISPLAY =
LookupNames.EXPERIMENTER_DISPLAY;
/** Indicates to display the data per group.*/
public static final int GROUP_DISPLAY = LookupNames.GROUP_DISPLAY;
/**
* Indicates that the {@link TreeViewer} displayed the various explorers.
*/
public static final int EXPLORER_MODE = 100;
/**
* Indicates that the {@link TreeViewer} displayed the various explorers.
*/
public static final int SEARCH_MODE = 101;
/** Flag to denote the <i>New</i> state. */
public static final int NEW = 1;
/** Flag to denote the <i>Discarded</i> state. */
public static final int DISCARDED = 2;
/** Flag to denote the <i>Save Edition</i> state. */
public static final int SAVE = 3;
/** Flag to denote the <i>Loading Thumbnail</i> state. */
public static final int LOADING_THUMBNAIL = 4;
/** Flag to denote the <i>Loading Data</i> state. */
public static final int LOADING_DATA = 5;
/** Flag to denote the <i>Loading Selection</i> state. */
public static final int LOADING_SELECTION = 6;
/** Flag to denote the <i>Ready</i> state. */
public static final int READY = 7;
/** Flag to denote the <i>Settings rendering</i> state. */
public static final int SETTINGS_RND = 8;
/** Flag to denote the <i>Settings rendering</i> state. */
public static final int RND_SET = 9;
/** Identifies the <code>Create</code> type for the editor. */
public static final int CREATE_EDITOR = 100;
/** Identifies the <code>Edit</code> type for the editor. */
public static final int PROPERTIES_EDITOR = 101;
/** Identifies the <code>No Editor</code> type for the editor. */
public static final int NO_EDITOR = 102;
/** Identifies the <code>Delete Object</code> operation. */
public static final int REMOVE_OBJECT = 302;
/** Identifies the <code>Manager</code> menu. */
public static final int MANAGER_MENU = 0;
/** Identifies the <code>Full popUp menu</code> menu. */
public static final int FULL_POP_UP_MENU = 1;
/** Identifies the <code>Partial popUp menu</code> menu. */
public static final int PARTIAL_POP_UP_MENU = 2;
/** Identifies the <code>Create popUp menu</code> menu. */
public static final int CREATE_MENU_CONTAINERS = 3;
/** Identifies the <code>Create popUp menu</code> menu. */
public static final int CREATE_MENU_TAGS = 4;
/** Identifies the <code>Personal</code> menu. */
public static final int PERSONAL_MENU = 5;
/** Identifies the <code>Create popUp menu</code> menu. */
public static final int CREATE_MENU_ADMIN = 6;
/** Identifies the <code>Create popUp menu</code> menu. */
public static final int ADMIN_MENU = 7;
/** Identifies the <code>Create popUp menu</code> menu. */
public static final int CREATE_MENU_SCREENS = 8;
/** Identifies the <code>View pop-up menu</code> menu. */
public static final int VIEW_MENU = 9;
/** Identifies the <code>Available Scripts</code> menu. */
public static final int AVAILABLE_SCRIPTS_MENU = 10;
/** Identifies the <code>Copy and Paste</code> action. */
public static final int COPY_AND_PASTE = 400;
/** Identifies the <code>Cut and Paste</code> action. */
public static final int CUT_AND_PASTE = 401;
/** Bounds property to indicate that the data retrieval is cancelled. */
public static final String CANCEL_LOADING_PROPERTY = "cancelLoading";
/** Bounds property to indicate to load a thumbnail for a given image. */
public static final String THUMBNAIL_LOADING_PROPERTY =
"thumbnailLoading";
/**
* Bound properties indicating that {@link Browser} is selected or
* <code>null</code> if no there is no {@link Browser} currently selected.
*
*/
public static final String SELECTED_BROWSER_PROPERTY =
"selectedBrowser";
/**
* Bound properties to indicate to remove the currently displayed editor.
*/
public static final String REMOVE_EDITOR_PROPERTY = "removeEditor";
/** Bound property name indicating to set the filters nodes. */
public static final String FILTER_NODES_PROPERTY = "filterNodes";
/**
* Bound property name indicating to show/hide the component from the
* display.
*/
public static final String FINDER_VISIBLE_PROPERTY = "finderVisible";
/** Bound property indicating to change the root of the hierarchy. */
public static final String HIERARCHY_ROOT_PROPERTY = "hierarchyRoot";
/** Bound property indicating to state of the components has changed. */
public static final String ON_COMPONENT_STATE_CHANGED_PROPERTY =
"onComponentStateChanged";
/** Bound property indicating to the group has been modified. */
public static final String GROUP_CHANGED_PROPERTY = "groupChanged";
/** Bound property indicating that the mode. */
public static final String DISPLAY_MODE_PROPERTY = "searchMode";
/** Bound property indicating to import data. */
public static final String IMPORT_PROPERTY = "importImages";
/** Bound property indicating that the images have been imported. */
public static final String IMPORTED_PROPERTY = "imported";
/**
* Bound property indicating that the nodes have been selected
* automatically.
*/
public static final String SELECTION_PROPERTY = "selection";
/**
* Bound property indicating the start of the available scripts loading.
*/
public static final String SCRIPTS_LOADING_PROPERTY = "scriptsLoading";
/**
* Bound property indicating the start of the available scripts are loaded.
*/
public static final String SCRIPTS_LOADED_PROPERTY = "scriptsLoaded";
/**
* The title displayed in the {@link LoadingWindow} during the saving
* process.
*/
public static final String SAVING_TITLE = "Saving Data";
/**
* The title displayed in the {@link LoadingWindow} during the saving
* process.
*/
public static final String LOADING_TITLE = "Loading Data...";
/** Identifies the <code>Create Object</code> operation. */
public static final int CREATE_OBJECT = 300;
/** Identifies the <code>Update Object</code> operation. */
public static final int UPDATE_OBJECT = 301;
/** Identifies the <code>Update Object</code> operation. */
public static final int DELETE_OBJECT = 302;
/**
* Returns the currently selected {@link Browser} or <code>null</code>
* if no {@link Browser} is selected.
*
* @return See above.
*/
Browser getSelectedBrowser();
/**
* Returns the {@link Browser} displayed when the application is first
* launched. This should not be <code>null</code>.
*
* @return See above.
*/
Browser getDefaultBrowser();
/**
* Sets the currently selected {@link Browser} or <code>null</code>
* if no {@link Browser} is selected.
*
* @param browser The selected {@link Browser}.
* @param activate Passed <code>true</code> to activate the browser,
* <code>false</code> otherwise.
*/
void setSelectedBrowser(Browser browser, boolean activate);
/**
* Queries the current state.
*
* @return One of the state flags defined by this interface.
*/
public int getState();
/**
* Starts the initialization sequence when the current state is {@link #NEW}
* and puts the window on screen.
* If the state is not {@link #NEW}, then this method simply moves the
* window to front.
*
* @throws IllegalStateException If the current state is {@link #DISCARDED}.
*/
public void activate();
/**
* Returns the available {@link Browser}s.
*
* @return See above.
*/
public Map<Integer, Browser> getBrowsers();
/**
* Transitions the viewer to the {@link #DISCARDED} state.
* Any ongoing data loading is cancelled.
*/
public void discard();
/**
* Adds or removes the {@link Browser} corresponding to the specified type
* to the display depending on the actual status of the browser.
*
* @param browserType The browser's type.
*/
public void displayBrowser(int browserType);
/**
* Brings up the editor to create a data object.
*
* @param object The {@link DataObject} to create.
* @param withParent Sets to <code>true</code> if the object will
* have a parent, <code>false</code> otherwise.
*/
public void createDataObject(DataObject object, boolean withParent);
/** Cancels any ongoing data loading. */
public void cancel();
/** Removes the displayed editor from the panel. */
public void removeEditor();
/**
* Returns the user's details. Helper method
*
* @return See above.
*/
public ExperimenterData getUserDetails();
/**
* Shows if the passed parameter is <code>true</code>, hides
* otherwise.
*
* @param b <code>true</code> to show the component, <code>false</code>
* to hide.
*/
public void showFinder(boolean b);
/** Hides the window and cancels any on-going data loading. */
public void closeWindow();
/**
* Reacts to a node selection in the currently selected {@link Browser}.
*/
public void onSelectedDisplay();
/**
* Updates the views when the data object is saved.
* The method only supports map of size one.
* The key is one the following constants:
* <code>CREATE_OBJECT</code>, <code>UPDATE_OBJECT</code> or
* <code>REMOVE_OBJECT</code>.
* The value is the <code>DataObject</code> created, removed or updated.
*
* @param data The save <code>DataObject</code>. Mustn't be
* <code>null</code>.
* @param operation The type of operation.
*/
public void onDataObjectSave(DataObject data, int operation);
/**
* Updates the views when the data object is saved.
* The method only supports map of size one.
* The key is one the following constants:
* <code>CREATE_OBJECT</code>, <code>UPDATE_OBJECT</code> or
* <code>REMOVE_OBJECT</code>.
* The value is the <code>DataObject</code> created, removed or updated.
*
* @param data The save <code>DataObject</code>. Mustn't be
* <code>null</code>.
* @param parent The parent of the <code>DataObject</code>.
* @param op The type of operation.
*/
public void onDataObjectSave(DataObject data, DataObject parent, int op);
/**
* Updates the views when the data object is saved.
* The method only supports map of size one.
* The key is one the following constants:
* <code>CREATE_OBJECT</code>, <code>UPDATE_OBJECT</code> or
* <code>REMOVE_OBJECT</code>.
* The value is the <code>DataObject</code> created, removed or updated.
*
* @param data The save <code>DataObject</code>. Mustn't be
* <code>null</code>.
* @param operation The type of operation.
*/
public void onDataObjectSave(List data, int operation);
/** Clears the result of a previous find action. */
public void clearFoundResults();
/**
* Moves the window to the back.
* @throws IllegalStateException If the current state is not
* {@link #DISCARDED}.
*/
public void moveToBack();
/**
* Moves the window to the front.
* @throws IllegalStateException If the current state is not
* {@link #DISCARDED}.
*/
public void moveToFront();
/**
* Sets the root of the retrieved hierarchies.
*
* @param rootID The Id of the root.
* @param experimenters The experimenters or <code>null</code>.
*/
public void setHierarchyRoot(long rootID,
List<ExperimenterData> experimenters);
/**
* Returns <code>true</code> if the specified object can be moved to another
* group, <code>false</code> otherwise, depending on the permission.
*
* @param ho The data object to check.
* @return See above.
*/
public boolean canChgrp(Object ho);
/**
* Returns <code>true</code> if the specified object can be deleted.
* <code>false</code> otherwise, depending on the permission.
*
* @param ho The data object to check.
* @return See above.
*/
public boolean canDelete(Object ho);
/**
* Returns <code>true</code> if the specified object can be edited.
* <code>false</code> otherwise, depending on the permission.
*
* @param ho The data object to check.
* @return See above.
*/
public boolean canEdit(Object ho);
/**
* Returns <code>true</code> if the specified object can be annotated,
* <code>false</code> otherwise, depending on the permission.
*
* @param ho The data object to check.
* @return See above.
*/
public boolean canAnnotate(Object ho);
/**
* Returns <code>true</code> if the specified object can have hard links
* i.e. image added to dataset, <code>false</code> otherwise,
* depending on the permission.
*
* @param ho The data object to check.
* @return See above.
*/
public boolean canLink(Object ho);
/**
* Adds existing objects to the currently selected node.
*
* @param ho The node the objects are added to.
*/
public void addExistingObjects(DataObject ho);
/**
* Displays the collection of existing o.
*
* @param nodes The nodes to display.
*/
public void setExistingObjects(List nodes);
/**
* Adds the specified notes to the tree.
*
* @param set The nodes to add.
*/
public void addExistingObjects(Set set);
/**
* Brings up the menu on top of the specified component at
* the specified location.
*
* @param menuID The id of the menu.
* @param invoker The component that requested the pop-up menu.
* @param loc The point at which to display the menu, relative to the
* <code>component</code>'s coordinates.
*/
public void showMenu(int menuID, Component invoker, Point loc);
/**
* Sets the text in the status bar and modifies display.
*
* @param enable Pass <code>true</code> to allow cancellation,
* <code>false</code> otherwise.
* @param text The text to display.
* @param hide Pass <code>true</code> to hide the progress bar.
* <code>false</code> otherwise.
*/
public void setStatus(boolean enable, String text, boolean hide);
/**
* Enables the components composing the display depending on the specified
* parameter.
*
* @param b Pass <code>true</code> to enable the component,
* <code>false</code> otherwise.
*/
public void onComponentStateChange(boolean b);
/**
* Sets the nodes to copy or cut depending on the passed index.
*
* @param nodes The nodes to copy or paste.
* @param index One of the constants:
* {@link #CUT_AND_PASTE} or {@link #COPY_AND_PASTE}.
*/
public void setNodesToCopy(TreeImageDisplay[] nodes, int index);
/**
* Pastes the nodes to copy into the specified parents.
*
* @param parents The parents of the nodes to copy.
* @see #setNodesToCopy(TreeImageDisplay[], int)
*/
public void paste(TreeImageDisplay[] parents);
/**
* Returns the {@link TreeViewer} view.
*
* @return See above.
*/
public JFrame getUI();
/**
* Returns <code>true</code> if some data has to be saved before
* selecting a new node, <code>false</code> otherwise.
*
* @return See above.
*/
public boolean hasDataToSave();
/**
* Brings up a dialog to save or not the data before switching to a
* another object.
*/
public void showPreSavingDialog();
/**
* Saves the metadata
*/
public void saveMetadata();
/**
* Retrieves the user groups.
*
* @param location The location of the mouse pressed.
* @param group The group to handle.
*/
public void retrieveUserGroups(Point location, GroupData group);
/**
* Returns the first name and the last name of the currently
* selected experimenter as a String.
*
* @return See above.
*/
public String getExperimenterNames();
/**
* Returns the currently selected experimenter.
*
* @return See above.
*/
public ExperimenterData getSelectedExperimenter();
/**
* Returns <code>true</code> if the viewer is recycled, <code>false</code>
* otherwise.
*
* @return See above.
*/
public boolean isRecycled();
/**
* Returns <code>true</code> if the editor is updated when the user mouses
* over a node in the tree, <code>false</code> otherwise.
*
* @return See above.
*/
public boolean isRollOver();
/**
* Sets to <code>true</code> if the editor is updated when the user mouses
* over a node in the tree, to <code>false</code> otherwise.
*
* @param rollOver The value to set.
*/
public void setRollOver(boolean rollOver);
/** Removes the experimenter from the display. */
public void removeExperimenterData();
/**
* Returns <code>true</code> if we can paste some rendering settings,
* <code>false</code> otherwise.
*
* @return See above.
*/
public boolean hasRndSettings();
/**
* Pastes the stored rendering settings across the selected images.
*
* @param ids Collection of node ids.
* @param klass Either dataset, image or category.
*/
public void pasteRndSettings(List<Long> ids, Class klass);
/**
* Pastes the stored rendering settings across the selected images.
*
* @param ref The time reference object.
*/
public void pasteRndSettings(TimeRefObject ref);
/**
* Resets the rendering settings across the selected images.
*
* @param ids Collection of node ids.
* @param klass Either dataset, image or category.
*/
public void resetRndSettings(List<Long> ids, Class klass);
/**
* Resets the rendering settings across the selected images.
*
* @param ref The time reference object.
*/
public void resetRndSettings(TimeRefObject ref);
/**
* Notifies the user that the save is done.
*
* @param map The value to set.
*/
public void rndSettingsPasted(Map map);
/**
* Creates the passed object.
*
* @param object The object to create.
* @param withParent Sets to <code>true</code> if the object will
* have a parent, <code>false</code> otherwise.
*/
public void createObject(DataObject object, boolean withParent);
/**
* Sets the leaves linked to the specified parent.
*
* @param parent The node the leaves are related to.
* @param leaves The leaves to convert and add to the node.
*/
public void setLeaves(TreeImageSet parent, Collection leaves);
/**
* Sets the selected node.
*
* @param node The value to set.
*/
public void setSelectedNode(Object node);
/**
* Browses the passed hierarchy.
*
* @param parent The parent of the node.
* @param nodes The value to set.
*/
public void browseHierarchyRoots(Object parent, Collection nodes);
/**
* Adds a dataset without project.
*
* @param data The object to add.
*/
public void onOrphanDataObjectCreated(DataObject data);
/**
* Unselects the passed node.
*
* @param node The node to deselect.
*/
public void setUnselectedNode(Object node);
/**
* Copies the rendering settings.
*
* @param image The image to copy the rendering settings from
* or <code>null</code>.
*/
public void copyRndSettings(ImageData image);
/**
* Sets the original rendering settings for the images identified by
* the specified parameters.
*
* @param ids The collection of objects id.
* @param klass The class identifying the object.
*/
public void setMinMax(List<Long> ids, Class klass);
/**
* Sets the original rendering settings for images
* imported during the specified period of time.
*
* @param ref The object storing the time interval information.
*/
public void setOriginalRndSettings(TimeRefObject ref);
/**
* Sets the rendering settings used by the owner,
* for the images identified by the specified parameters.
*
* @param ids The collection of objects id.
* @param klass The class identifying the object.
*/
public void setOwnerRndSettings(List<Long> ids, Class klass);
/**
* Sets the original rendering settings used by the owner, for images
* imported during the specified period of time.
*
* @param ref The object storing the time interval information.
*/
public void setOwnerRndSettings(TimeRefObject ref);
/** Shows or hides the searching component. */
public void showSearch();
/** Handles a search event */
public void handleSearchEvent(SearchEvent evt);
/** Handles a search result selection event */
public void handleSearchSelectionEvent(SearchSelectionEvent evt);
/**
* Sets the result of the search.
*
* @param result Either a collection of objects or
* or an integer with the maximum number of results
*/
public void setSearchResult(Object result);
/**
* Brings up the dialog used to add metadata to a collection of
* images selected either by the user or as linked to a dataset
* or tag.
*/
public void addMetadata();
/** Refreshes the selected tree. */
public void refreshTree();
/**
* Browses the images acquired during the passed time interval.
*
* @param node The node holding the time information.
* @param set The elements to add.
*/
public void browseTimeInterval(TreeImageTimeSet node, Set set);
/**
* Sets the wells linked to the specified plates.
*
* @param plates The parents to handle.
* @param withThumbnails Pass <code>true</code> to load the thumbnails,
* <code>false</code> otherwise.
*/
public void setPlates(Map<TreeImageSet, Set> plates, boolean withThumbnails);
/**
* Browses the passed node.
*
* @param node The reference node to browse.
* @param data The object to browse.
* @param withThumbnails Pass <code>true</code> to load the thumbnails,
* <code>false</code> otherwise.
*/
public void browse(TreeImageDisplay node, DataObject data,
boolean withThumbnails);
/**
* Deletes the {@link DataObject}s hosted by the passed nodes.
*
* @param nodes The nodes hosting the {@link DataObject}s to delete.
*/
public void deleteObjects(List nodes);
/**
* Returns the objects to copy or <code>null</code>.
*
* @return See above.
*/
public List<DataObject> getDataToCopy();
/**
* Refreshes the view when nodes have been deleted. A collection of nodes
* that could not be deleted is passed. If the collection is
* <code>null</code> or of size <code>0</code> all the nodes have been
* deleted.
*
* @param notDeleted The collection of nodes that couldn't be deleted.
*/
public void onNodesDeleted(Collection<DataObject> notDeleted);
/**
* Refreshes the view when nodes have been <code>Cut/Paste</code> or
* <code>Copy/Paste</code>.
*
* @param target The target node (can be <code>null</code>)
*/
public void onNodesMoved(DataObject target);
/** Displays the tag wizard. */
public void showTagWizard();
/**
* Sets the selected field of a well.
*
* @param node The selected field.
*/
public void setSelectedField(Object node);
/** Shows or hides the Tree Viewer. */
public void setInspectorVisibility();
/**
* Returns all the images currently displayed in the
* <code>data browser</code>.
*
* @return See above.
*/
public Collection getDisplayedImages();
/**
* Indicates that an activity has just terminated.
*
* @param activity The activity to handle.
* @param finished Pass <code>true</code> to indicate the activity is
* finished, <code>false</code> otherwise.
*/
void onActivityProcessed(ActivityComponent activity, boolean finished);
/**
* Downloads the currently selected files to the specified folder.
*
* @param folder The folder where to download the files.
* @param override Flag indicating to override the existing file if it
* exists, <code>false</code> otherwise.
*/
void download(File folder, boolean override);
/**
* Sets the collection of archived files.
*
* @param folder The folder where to save the files.
* @param data The third party application or <code>null</code>.
* @param o The collection of files to handle.
*/
void setDownloadedFiles(File folder, ApplicationData data, Collection o);
/**
* Indicates to view the image with another application.
* This will only possible if the image has been archived.
*
* @param data The application to use to open the file.
*/
void openWith(ApplicationData data);
/**
* Adds/Removes the groups to/from the display.
*
* @param groups The groups to set.
*/
void setUserGroup(List<GroupData> groups);
/** Opens the image in a separate window or in the main viewer. */
void setFullScreen();
/** Shows or hides the Metadata View. */
void setMetadataVisibility();
/**
* Returns <code>true</code> if the currently logged in user is
* a leader of the specified group, <code>false</code> otherwise.
*
* @return See above.
*/
public boolean isLeaderOfGroup(GroupData group);
/**
* Manages the passed object.
*
* @param object The object to handle.
*/
void administrate(AdminObject object);
/**
* Registers the passed file and updates the annotation.
*
* @param file The file to register..
*/
void register(DataObjectRegistration file);
/**
* Returns the permission level of the selected group. One of the constants
* defined by the <code>AdminObject</code> class.
*
* @param group The group to handle.
* @return See above.
*/
int getGroupPermissions(GroupData group);
/**
* Resets the password of the selected experimenters.
*
* @param value The new password.
*/
void resetPassword(String value);
/**
* Indicates that the group has been successfully switched if
* <code>true</code>, unsuccessfully if <code>false</code>.
*
* @param success Pass <code>true</code> if successful,
* <code>false</code> otherwise.
*/
void onGroupSwitched(boolean success);
/**
* Finds the specified object.
*
* @param type The type of data object to find.
* @param id The identifier of the data object.
* @param selectTab Pass <code>true</code> to select the tab corresponding
* to the passed type, <code>false</code> otherwise.
*/
void findDataObject(Class type, long id, boolean selectTab);
/**
* Returns <code>true</code> if there is an on-going import,
* <code>false</code> otherwise.
*
* @return See above.
*/
boolean isImporting();
/**
* Sets the flag indicating of any on-going imports.
*
* @param importing The value to set.
* @param containers The containers that need to be refreshed.
* @param refresh Pass <code>true</code> to mark the node to refresh,
* <code>false</code> otherwise.
* @param importedObject The result of the import.
*/
void setImporting(boolean importing, List<DataObject> containers, boolean
refresh, Object importedObject);
/**
* Marks the passed nodes.
*
* @param containers The containers that need to be refreshed.
* @param refresh Pass <code>true</code> to mark the node to refresh,
* <code>false</code> otherwise.
*/
void indicateToRefresh(List<DataObject> containers, boolean refresh);
/**
* Browses the specified container.
*
* @param data The data object to browse.
* @param node The node hosting the object to browse or <code>null</code>.
*/
void browseContainer(Object data, Object node);
/**
* Activates the user or de-activates the user.
*
* @param exp The experimenter to handle.
*/
void activateUser(ExperimenterData exp);
/**
* Creates the specified data object and links the selected children
* to it.
*
* @param data The object to create.
*/
void createDataObjectWithChildren(DataObject data);
/**
* Sets the collection of available scripts.
*
* @param result The available scripts.
* @param location The location of the mouse click.
*/
void setAvailableScripts(List result, Point location);
/**
* Loads the specified script.
*
* @param scriptID The identifier of the script to load.
*/
void loadScript(long scriptID);
/**
* Sets the script.
*
* @param object The object hosting the script.
*/
void setScript(ScriptObject object);
/** Transfers the nodes.
*
* @param target The target.
* @param nodes The nodes to transfer.
* @param transferAction The transfer action.
*/
void transfer(TreeImageDisplay target, List<TreeImageDisplay> nodes, int
transferAction);
/**
* Sets the selected nodes, the nodes selected from middle panel.
*
* @param nodes The value to set.
*/
void setSelectedNodes(Object nodes);
/**
* Returns the selected group.
*
* @return See above.
*/
GroupData getSelectedGroup();
/**
* Returns the only group displayed if any.
*
* @return See above.
*/
GroupData getSingleGroupDisplayed();
/**
* Removes group.
*
* @param groupID The id of the group.
*/
void removeGroup(long groupID);
/**
* Moves the selected data to the specified group.
*
* @param group The data to move.
*/
void moveTo(GroupData group, List<DataObject> nodes);
/**
* Displays the groups to select.
*
* @param point The location of the mouse pressed.
*/
void displayUserGroups(Point point);
/** Returns the security context.
*
* @return See above.
*/
SecurityContext getSecurityContext();
/**
* Returns <code>true</code> if the image to copy the rendering settings
* from is in the specified group, <code>false</code> otherwise.
*
* @param groupID The group to handle.
* @return See above.
*/
boolean areSettingsCompatible(long groupID);
/**
* Returns the groups the user is a member of.
*
* @return See above.
*/
Collection getGroups();
/**
* Returns the display mode. One of the constants defined by
* {@link TreeViewer}.
*
* @return See above.
*/
int getDisplayMode();
/**
* Sets the display mode.
*
* @param index The mode to set.
*/
void setDisplayMode(int index);
/**
* Handles the result checking if images to delete/move are split or not
*
* @param result The result to handle.
* @param action The action to do after the check.
* @param index The type of action.
*/
void handleSplitImage(ImageCheckerResult result, Object action,
ImageCheckerType index);
/**
* Returns <code>true</code> if the user is a system user e.g. root
* <code>false</code> otherwise.
*
* @param userID The identifier of the user.
* @return See above.
*/
boolean isSystemUser(long userID);
/**
* Returns <code>true</code> if the user is a system user e.g. root
* <code>false</code> otherwise.
*
* @param userID The identifier of the user.
* @param key One of the constants defined by GroupData.
* @return See above.
*/
boolean isSystemUser(long userID, String key);
/**
* Returns <code>true</code> if the group is a system group,
* <code>false</code> otherwise.
*
* @param groupID The identifier of the group.
* @param key One of the constants defined by GroupData.
* @return See above.
*/
boolean isSystemGroup(long groupID, String key);
/**
* Returns the objects selected in the central panel.
*
* @return See above.
*/
Collection<DataObject> getSelectedObjectsFromBrowser();
/**
* Resets the rendering settings.
*
* @param imageID The image id.
* @param settings The settings to reset
*/
void resetRndSettings(long imageID, RndProxyDef settings);
/**
* Returns the rendering setting of the selected viewed by item if any.
*
* @return See above.
*/
RndProxyDef getSelectedViewedBy();
}