/******************************************************************************* * 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; /** * Manages the internal piece of trim for each trim area. * * @since 3.2 */ public class TrimDescriptor { /** * The window trim object. */ private IWindowTrim fTrim; /** * The cache for the window trim object's control. */ private SizeCache fCache; /** * The cache for the common drag affordance, if available. */ private SizeCache fDockingHandle = null; /** * The current area that we belong to. * * @see TrimLayout#getAreaIds() */ private int fAreaId; /** * Create a trim descriptor for the trim manager. * * @param trim * the window trim * @param areaId * the trim area we belong to. */ public TrimDescriptor(IWindowTrim trim, int areaId) { fTrim = trim; fAreaId = areaId; } /** * @return Returns the fCache. */ public SizeCache getCache() { return fCache; } /** * Set the trim cache. Because of the requirements of possibly changing * orientation when docking on a different side, the same IWindowTrim * sometimes needs to have it's control SizeCache replaced. * * @param c * cache. */ public void setCache(SizeCache c) { fCache = c; } /** * @return Returns the fTrim. */ public IWindowTrim getTrim() { return fTrim; } /** * Return the cache for the common drag affordance. * * @return return the docking handle cache */ public SizeCache getDockingCache() { return fDockingHandle; } /** * The trim ID. * * @return the trim ID. This should not be <code>null</code>. */ public String getId() { return fTrim.getId(); } /** * Returns whether the control for this trim is visible. * * @return <code>true</code> if the control is visible. */ public boolean isVisible() { if (!fTrim.getControl().isDisposed()) { return fTrim.getControl().isVisible(); } return false; } /** * Set the cache for the common drag affordance. * * @param cache * the sizecache for the docking control */ public void setDockingCache(SizeCache cache) { fDockingHandle = cache; } /** * The area ID this descriptor belongs to. * * @return the ID * @see TrimLayout#getAreaIds() */ public int getAreaId() { return fAreaId; } /** * Set the current area this descriptor belongs to. * * @param id * the area ID. * @see TrimLayout#getAreaIds() */ public void setAreaId(int id) { fAreaId = id; } /** * Flush any contained size caches. */ public void flush() { if (fCache != null) { fCache.flush(); } if (fDockingHandle != null) { fDockingHandle.flush(); } } /** * Update the visibility of the trim controls. * * @param visible * visible or not. */ public void setVisible(boolean visible) { if (fTrim.getControl() != null && !fTrim.getControl().isDisposed()) { fTrim.getControl().setVisible(visible); } if (fDockingHandle != null && fDockingHandle.getControl() != null && !fDockingHandle.getControl().isDisposed()) { fDockingHandle.getControl().setVisible(visible); } } }