blob: 0196c6f41759e6322a04a13cea11f7f63793a740 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2003 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui;
/**
* A page layout defines the initial layout for a page in a workbench window.
* <p>
* This interface is not intended to be implemented by clients.
* </p>
* <p>
* When the workbench needs to create a new page, it uses a perspective to
* creates a new page layout with a single editor area. This layout is then
* passed to client code (implementation of
* <code>IPerspectiveFactory.createInitialLayout</code>) where
* additional views can be added, using the existing editor area as the initial
* point of reference.
* </p>
* <p>
* Example of populating a layout with standard workbench views:
* <pre>
* IPageLayout layout = ...
* // Get the editor area.
* String editorArea = layout.getEditorArea();
*
* // Top left: Resource Navigator view and Bookmarks view placeholder
* IFolderLayout topLeft = layout.createFolder("topLeft", IPageLayout.LEFT, 0.25f,
* editorArea);
* topLeft.addView(IPageLayout.ID_RES_NAV);
* topLeft.addPlaceholder(IPageLayout.ID_BOOKMARKS);
*
* // Bottom left: Outline view and Property Sheet view
* IFolderLayout bottomLeft = layout.createFolder("bottomLeft", IPageLayout.BOTTOM, 0.50f,
* "topLeft");
* bottomLeft.addView(IPageLayout.ID_OUTLINE);
* bottomLeft.addView(IPageLayout.ID_PROP_SHEET);
*
* // Bottom right: Task List view
* layout.addView(IPageLayout.ID_TASK_LIST, IPageLayout.BOTTOM, 0.66f, editorArea);
* </pre>
* </p>
*/
public interface IPageLayout {
/**
* The part id for the workbench's editor area. This may only be used
* as a reference part for view addition.
*/
public static String ID_EDITOR_AREA = "org.eclipse.ui.editorss"; //$NON-NLS-1$
/**
* The view id for the workbench's Resource Navigator standard component.
*/
public static String ID_RES_NAV = "org.eclipse.ui.views.ResourceNavigator"; //$NON-NLS-1$
/**
* The view id for the workbench's Property Sheet standard component.
*/
public static String ID_PROP_SHEET = "org.eclipse.ui.views.PropertySheet"; //$NON-NLS-1$
/**
* The view id for the workbench's Content Outline standard component.
*/
public static String ID_OUTLINE = "org.eclipse.ui.views.ContentOutline"; //$NON-NLS-1$
/**
* The view id for the workbench's Bookmark Navigator standard component.
*/
public static String ID_BOOKMARKS = "org.eclipse.ui.views.BookmarkView"; //$NON-NLS-1$
/**
* The view id for the workbench's Problems View standard component.
* @since 3.0
*/
public static String ID_PROBLEM_VIEW = "org.eclipse.ui.views.ProblemView"; //$NON-NLS-1$
/**
* The view id for the workbench's Task List standard component.
*/
public static String ID_TASK_LIST = "org.eclipse.ui.views.TaskList"; //$NON-NLS-1$
/**
* Id of the navigate action set.
* (value <code>"org.eclipse.ui.NavigateActionSet"</code>)
* @since 2.1
*/
public static final String ID_NAVIGATE_ACTION_SET = "org.eclipse.ui.NavigateActionSet"; //$NON-NLS-1$
/**
* Relationship constant indicating a part should be placed to the left of
* its relative.
*/
public static final int LEFT = 1;
/**
* Relationship constant indicating a part should be placed to the right of
* its relative.
*/
public static final int RIGHT = 2;
/**
* Relationship constant indicating a part should be placed above its
* relative.
*/
public static final int TOP = 3;
/**
* Relationship constant indicating a part should be placed below its
* relative.
*/
public static final int BOTTOM = 4;
/**
* Minimum acceptable ratio value when adding a view
* @since 2.0
*/
public static final float RATIO_MIN = 0.05f;
/**
* Maximum acceptable ratio value when adding a view
* @since 2.0
*/
public static final float RATIO_MAX = 0.95f;
/**
* The default fast view ratio width.
* @since 2.0
*/
public static final float DEFAULT_FASTVIEW_RATIO = 0.3f;
/**
* The default view ratio width for regular (non-fast) views.
* @since 2.0
*/
public static final float DEFAULT_VIEW_RATIO = 0.5f;
/**
* A variable used to represent invalid ratios.
* @since 2.0
*/
public static final float INVALID_RATIO = -1f;
/**
* A variable used to represent a ratio which has not been specified.
* @since 2.0
*/
public static final float NULL_RATIO = -2f;
/**
* Adds an action set with the given id to this page layout.
* The id must name an action set contributed to the workbench's extension
* point (named <code>"org.eclipse.ui.actionSet"</code>).
*
* @param actionSetId the action set id
*/
public void addActionSet(String actionSetId);
/**
* Adds the view with the given id to the page layout as a fast view.
* The id must name a view contributed to the workbench's view extension
* point (named <code>"org.eclipse.ui.views"</code>).
*
* @param id the id of the view to be added
* @since 2.0
*/
public void addFastView(String id);
/**
* Adds the view with the given id to the page layout as a fast view
* with the given width ratio. The id must name a view contributed to
* the workbench's view extension point (named <code>"org.eclipse.ui.views"</code>).
*
* @param id the id of the view to be added
* @param ratio the percentage of the workbench the fast view will cover
* @since 2.0
*/
public void addFastView(String id, float ratio);
/**
* Adds a creation wizard to the File New menu.
* The id must name a new wizard extension contributed to the
* workbench's extension point (named <code>"org.eclipse.ui.newWizards"</code>).
*
* @param id the wizard id
*/
public void addNewWizardShortcut(String id);
/**
* Adds a perspective shortcut to the Perspective menu.
* The id must name a perspective extension contributed to the
* workbench's extension point (named <code>"org.eclipse.ui.perspectives"</code>).
*
* @param id the perspective id
*/
public void addPerspectiveShortcut(String id);
/**
* Adds a placeholder for a view with the given id to this page layout.
* A view placeholder is used to define the position of a view before the view
* appears. Initially, it is invisible; however, if the user ever opens a view
* with the same id as a placeholder, the view will replace the placeholder
* as it is being made visible.
* The id must name a view contributed to the workbench's view extension point
* (named <code>"org.eclipse.ui.views"</code>).
*
* @param viewId the view id
* @param relationship the position relative to the reference part;
* one of <code>TOP</code>, <code>BOTTOM</code>, <code>LEFT</code>,
* or <code>RIGHT</code>
* @param ratio a ratio specifying how to divide the space currently occupied by the reference part,
* in the range <code>0.05f</code> to <code>0.95f</code>.
* Values outside this range will be clipped to facilitate direct manipulation.
* For a vertical split, the part on top gets the specified ratio of the current space
* and the part on bottom gets the rest.
* Likewise, for a horizontal split, the part at left gets the specified ratio of the current space
* and the part at right gets the rest.
* @param refId the id of the reference part; either a view id, a folder id,
* or the special editor area id returned by <code>getEditorArea</code>
*/
public void addPlaceholder(String viewId, int relationship, float ratio, String refId);
/**
* Adds an item to the Show In prompter.
* The id must name a view contributed to the workbench's view extension point
* (named <code>"org.eclipse.ui.views"</code>).
*
* @param id the view id
*
* @since 2.1
*/
public void addShowInPart(String id);
/**
* Adds a view to the Show View menu.
* The id must name a view contributed to the workbench's view extension point
* (named <code>"org.eclipse.ui.views"</code>).
*
* @param id the view id
*/
public void addShowViewShortcut(String id);
/**
* Adds a view with the given id to this page layout.
* The id must name a view contributed to the workbench's view extension point
* (named <code>"org.eclipse.ui.views"</code>).
*
* @param viewId the view id
* @param relationship the position relative to the reference part;
* one of <code>TOP</code>, <code>BOTTOM</code>, <code>LEFT</code>,
* or <code>RIGHT</code>
* @param ratio a ratio specifying how to divide the space currently occupied by the reference part,
* in the range <code>0.05f</code> to <code>0.95f</code>.
* Values outside this range will be clipped to facilitate direct manipulation.
* For a vertical split, the part on top gets the specified ratio of the current space
* and the part on bottom gets the rest.
* Likewise, for a horizontal split, the part at left gets the specified ratio of the current space
* and the part at right gets the rest.
* @param refId the id of the reference part; either a view id, a folder id,
* or the special editor area id returned by <code>getEditorArea</code>
*/
public void addView(String viewId, int relationship, float ratio, String refId);
/**
* Creates and adds a new folder with the given id to this page layout.
* The position and relative size of the folder is expressed relative to
* a reference part.
*
* @param folderId the id for the new folder. This must be unique within
* the layout to avoid collision with other parts.
* @param relationship the position relative to the reference part;
* one of <code>TOP</code>, <code>BOTTOM</code>, <code>LEFT</code>,
* or <code>RIGHT</code>
* @param ratio a ratio specifying how to divide the space currently occupied by the reference part,
* in the range <code>0.05f</code> to <code>0.95f</code>.
* Values outside this range will be clipped to facilitate direct manipulation.
* For a vertical split, the part on top gets the specified ratio of the current space
* and the part on bottom gets the rest.
* Likewise, for a horizontal split, the part at left gets the specified ratio of the current space
* and the part at right gets the rest.
* @param refId the id of the reference part; either a view id, a folder id,
* or the special editor area id returned by <code>getEditorArea</code>
* @return the new folder
*/
public IFolderLayout createFolder(String folderId, int relationship, float ratio, String refId);
/**
* Creates and adds a placeholder for a new folder with the given id to this page layout.
* The position and relative size of the folder is expressed relative to
* a reference part.
*
* @param folderId the id for the new folder. This must be unique within
* the layout to avoid collision with other parts.
* @param relationship the position relative to the reference part;
* one of <code>TOP</code>, <code>BOTTOM</code>, <code>LEFT</code>,
* or <code>RIGHT</code>
* @param ratio a ratio specifying how to divide the space currently occupied by the reference part,
* in the range <code>0.05f</code> to <code>0.95f</code>.
* Values outside this range will be clipped to facilitate direct manipulation.
* For a vertical split, the part on top gets the specified ratio of the current space
* and the part on bottom gets the rest.
* Likewise, for a horizontal split, the part at left gets the specified ratio of the current space
* and the part at right gets the rest.
* @param refId the id of the reference part; either a view id, a folder id,
* or the special editor area id returned by <code>getEditorArea</code>
* @return a placeholder for the new folder
* @since 2.0
*/
public IPlaceholderFolderLayout createPlaceholderFolder(String folderId, int relationship, float ratio, String refId);
/**
* Returns the special identifier for the editor area in this page
* layout. The identifier for the editor area is also stored in
* <code>ID_EDITOR_AREA</code>.
* <p>
* The editor area is automatically added to each layout before anything else.
* It should be used as the point of reference when adding views to a layout.
* </p>
*
* @return the special id of the editor area
*/
public String getEditorArea();
/**
* Returns whether the page's layout will show
* the editor area.
*
* @return <code>true</code> when editor area visible, <code>false</code> otherwise
*/
public boolean isEditorAreaVisible();
/**
* Show or hide the editor area for the page's layout.
*
* @param showEditorArea <code>true</code> to show the editor area, <code>false</code> to hide the editor area
*/
public void setEditorAreaVisible(boolean showEditorArea);
/**
* Returns the number of open editors before reusing editors or -1 if the
* preference settings should be used instead.
*
* @return the number of open editors before reusing editors or -1 if the
* preference settings should be used instead.
*
* @deprecated this always returns -1 as of Eclipse 2.1
*/
public int getEditorReuseThreshold();
/**
* Sets the number of open editors before reusing editors.
* If < 0 the user preference settings will be used.
*
* @param openEditors the number of open editors
*
* @deprecated this method has no effect, as of Eclipse 2.1
*/
public void setEditorReuseThreshold(int openEditors);
/**
* Sets whether this layout is fixed.
* In a fixed layout, layout parts cannot be moved or zoomed, and the initial
* set of views cannot be closed.
*
* @param isFixed <code>true</code> if this layout is fixed, <code>false</code> if not
* @since 3.0
*/
public void setFixed(boolean isFixed);
/**
* Returns <code>true</code> if this layout is fixed, <code>false</code> if not.
* In a fixed layout, layout parts cannot be moved or zoomed, and the initial
* set of views cannot be closed.
* The default is <code>false</code>.
*
* @return <code>true</code> if this layout is fixed, <code>false</code> if not.
* @since 3.0
*/
public boolean isFixed();
/**
* Returns the layout for the view or placeholder with the given id in
* this page layout.
* Returns <code>null</code> if the specified view or placeholder is unknown to the layout.
*
* @param viewId the view id
* @return the view layout, or <code>null</code>
* @since 3.0
*/
public IViewLayout getViewLayout(String viewId);
/**
* Adds a standalone view with the given id to this page layout.
* A standalone view cannot be docked together with other views.
* A standalone view's title can optionally be hidden. If hidden,
* then any controls typically shown with the title (such as the close button)
* are also hidden.
* <p>
* The id must name a view contributed to the workbench's view extension point
* (named <code>"org.eclipse.ui.views"</code>).
* </p>
*
* @param viewId the view id
* @param showTitle <code>true</code> to show the title and related controls,
* <code>false</code> to hide them
* @param relationship the position relative to the reference part;
* one of <code>TOP</code>, <code>BOTTOM</code>, <code>LEFT</code>,
* or <code>RIGHT</code>
* @param ratio a ratio specifying how to divide the space currently occupied by the reference part,
* in the range <code>0.05f</code> to <code>0.95f</code>.
* Values outside this range will be clipped to facilitate direct manipulation.
* For a vertical split, the part on top gets the specified ratio of the current space
* and the part on bottom gets the rest.
* Likewise, for a horizontal split, the part at left gets the specified ratio of the current space
* and the part at right gets the rest.
* @param refId the id of the reference part; either a view id, a folder id,
* or the special editor area id returned by <code>getEditorArea</code>
*
* @since 3.0
* @issue should we allow regular views' titles to be hidden?
*/
public void addStandaloneView(String viewId, boolean showTitle,
int relationship, float ratio, String refId);
}