/******************************************************************************* * Copyright (c) 2005, 2006 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.ui.internal.layout; import java.util.List; import org.eclipse.swt.SWT; /** * Allow programmatic access to the workbench window trim areas. * * <p> * <b>Note:</b> This is highly experimental and will change between M4 and M5. * For example, the current trim area IDs will be changes to Strings, amongst * other things. * </p> * * @since 3.2 */ public interface ITrimManager { /** * Trim area location. */ public static final int TOP = SWT.TOP; /** * Trim area location. */ public static final int BOTTOM = SWT.BOTTOM; /** * Trim area location. */ public static final int LEFT = SWT.LEFT; /** * Trim area location. */ public static final int RIGHT = SWT.RIGHT; /** * Trim area location. */ public static final int NONTRIM = SWT.DEFAULT; /** * Adds the given control to the layout's trim. The same as calling * addTrim(areaId, trim, null); * * @param trim * new window trim to be added * @param areaId * the area ID * @see #getAreaIds() * @see #addTrim(int, IWindowTrim, IWindowTrim) */ public void addTrim(int areaId, IWindowTrim trim); /** * Adds the given control to the layout's trim. Note that this must be * called for every trim control. If the given widget is already a trim * widget, it will be moved to the new position. Specifying a position * allows a new widget to be inserted between existing trim widgets. * * <p> * For example, this method allows the caller to say "insert this new * control as trim along the bottom of the layout, to the left of this * existing control". * </p> * * @param trim * new window trim to be added * @param areaId * the area ID * @param beforeMe * trim to insert before, <code>null</code> to insert at the * end * @see #getAreaIds() */ public void addTrim(int areaId, IWindowTrim trim, IWindowTrim beforeMe); /** * Removes the given window trim. Note that this has no effect if window * trim is not our window trim. * * @param toRemove * a piece of trim. */ public void removeTrim(IWindowTrim toRemove); /** * Return the window trim for a given id. * * @param id * the id * @return the window trim, or <code>null</code> if not found. */ public IWindowTrim getTrim(String id); /** * Return all of the IDs for the currently supported trim areas. This is * <b>experimental</b> and will be changing. * * @return the list of IDs that can be used with area descriptions. We * currently support SWT.TOP, SWT.BOTTOM, SWT.LEFT, and SWT.RIGHT. * @since 3.2 */ public int[] getAreaIds(); /** * Return a copy of the IWindowTrim in an ordered array. This will not * return <code>null</code>. This array can be used to shuffle items * around in {@link #updateAreaTrim(int, List, boolean) }. * * @param areaId * the trim area id * @return the IWindowTrim array * @since 3.2 * @see #getAreaIds() */ public List getAreaTrim(int areaId); /** * Update ID's area description with the new window trim ordering. This * applies the IWindowTrim contains in the array to the trim area named * "ID". * * @param id * the trim area ID * @param trim * the trim array must not be <code>null</code>. * @param removeExtra * if <code>true</code> the any trim in the specified trim area * that's not contained in the List is removed from the window * trim (but not disposed()). If <code>false</code> then the * extra trim is shuffled to the beginning of the trim area. * @since 3.2 * @see #getAreaIds() */ public void updateAreaTrim(int id, List trim, boolean removeExtra); /** * This method returns an aggregate array of all trim items known to this * TrimLayout. * * @return The List of all IWindowTrim elements * @since 3.2 */ public List getAllTrim(); /** * Update the visibility of the trim controls. It updates any docking * handles as well. It has no effect on visiblity if the window trim doesn't * belong to this TrimLayout. * * @param trim * the trim to update * @param visible * visible or not * @since 3.2 */ public void setTrimVisible(IWindowTrim trim, boolean visible); /** * Force the trim areas to layout to pick up changes * * @since 3.2 */ public void forceLayout(); }