blob: 74776351b823fa76b37d891df5469e627c566aeb [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2015 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui;
/**
* The workbench's global registry of perspectives.
* <p>
* This registry contains a descriptor for each perspectives in the workbench.
* It is initially populated with stock perspectives from the workbench's
* perspective extension point (<code>"org.eclipse.ui.perspectives"</code>) and
* with custom perspectives defined by the user.
* </p>
* <p>
* This interface is not intended to be implemented by clients.
* </p>
*
* @see IWorkbench#getPerspectiveRegistry
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface IPerspectiveRegistry {
/**
* Clones an existing perspective.
*
* @param id the id for the cloned perspective, which must not already be
* used by any registered perspective
* @param label the label assigned to the cloned perspective
* @param desc the perspective to clone
* @return the cloned perspective descriptor
* @throws IllegalArgumentException if there is already a perspective with the
* given id
*
* @since 3.0
*/
IPerspectiveDescriptor clonePerspective(String id, String label, IPerspectiveDescriptor desc)
throws IllegalArgumentException;
/**
* Deletes a perspective. Has no effect if the perspective is defined in an
* extension.
*
* @param persp the perspective to delete
* @since 3.2
*/
void deletePerspective(IPerspectiveDescriptor persp);
/**
* Finds and returns the registered perspective with the given perspective id.
*
* @param perspectiveId the perspective id
* @return the perspective, or <code>null</code> if none
* @see IPerspectiveDescriptor#getId
*/
IPerspectiveDescriptor findPerspectiveWithId(String perspectiveId);
/**
* Finds and returns the registered perspective with the given label.
*
* @param label the label
* @return the perspective, or <code>null</code> if none
* @see IPerspectiveDescriptor#getLabel
*/
IPerspectiveDescriptor findPerspectiveWithLabel(String label);
/**
* Returns the id of the default perspective for the workbench. This identifies
* one perspective extension within the workbench's perspective registry.
* <p>
* Returns <code>null</code> if there is no default perspective.
* </p>
*
* @return the default perspective id, or <code>null</code>
*/
String getDefaultPerspective();
/**
* Returns a list of the perspectives known to the workbench.
*
* @return a list of perspectives
*/
IPerspectiveDescriptor[] getPerspectives();
/**
* Sets the default perspective for the workbench to the given perspective id.
* If non-<code>null</code>, the id must correspond to a perspective extension
* within the workbench's perspective registry.
* <p>
* A <code>null</code> id indicates no default perspective.
* </p>
*
* @param id a perspective id, or <code>null</code>
*/
void setDefaultPerspective(String id);
/**
* Reverts a perspective back to its original definition as specified in the
* plug-in manifest.
*
* @param perspToRevert the perspective to revert
*
* @since 3.0
*/
void revertPerspective(IPerspectiveDescriptor perspToRevert);
}