/******************************************************************************
* Copyright (c) 2002, 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.gmf.runtime.diagram.ui.figures;
import java.util.Map;
import org.eclipse.draw2d.IFigure;
import org.eclipse.gmf.runtime.diagram.ui.layout.FreeFormLayoutEx;
/**
* Layouts the shape compartment's children. This class provides utility methods
* to layout figure's whose position are undefined.
*
* @see org.eclipse.gmf.runtime.diagram.ui.figures.ICanonicalShapeCompartmentLayout
*
* @author mhanner
*/
public class CanonicalShapeCompartmentLayout
extends FreeFormLayoutEx
implements ICanonicalShapeCompartmentLayout {
/** the [figure,editpart] map. */
private Map _visualPartMap;
/** layout helper instance */
private LayoutHelper _layoutHelper = null;
/**
* Creates an instance
* @param map the [figure,editpart] map.
* @see org.eclipse.gef.EditPartViewer#getVisualPartMap()
*/
public CanonicalShapeCompartmentLayout(Map map) {
setVisualPartMap(map);
}
/**
* Implements the algorithm to layout the components of the given container figure.
* Each component is laid out using it's own layout constraint specifying it's size
* and position. Calls {@link #layoutUndefinedChildren(IFigure)} to layout
* all child figure whose position are <i>undefined</i>
* @see org.eclipse.gmf.runtime.diagram.ui.figures.ICanonicalShapeCompartmentLayout
* @param parent containing figure.
*/
public void layout(IFigure parent) {
layoutUndefinedChildren(parent);
super.layout(parent);
}
/**
* Layout the supplied parent's children whose position is equal to {@link #UNDEFINED}.
* Calls <code>LayoutHelper.layoutUndefinedChildren(ICanonicalShapeCompartmentLayout, IFigure, Map)</code>;
* @param parent the containing figure.
*/
public void layoutUndefinedChildren(IFigure parent) {
GetLayoutHelper().layoutUndefinedChildren(
this,
parent,
getVisualPartMap());
}
/** Return this manager's layout helper. */
private LayoutHelper GetLayoutHelper() {
if (_layoutHelper == null) {
_layoutHelper = new LayoutHelper();
}
return _layoutHelper;
}
/**
* Set the [figure, editpart] map.
* @see org.eclipse.gef.EditPartViewer#getVisualPartMap()
*/
public void setVisualPartMap(Map map) {
_visualPartMap = map;
}
/**
* Return the [figure, editpart] map.
* @see org.eclipse.gef.EditPartViewer#getVisualPartMap()
*/
public Map getVisualPartMap() {
return _visualPartMap;
}
}