
org.eclipse.draw2d.DelegatingLayout Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of draw2d Show documentation
Show all versions of draw2d Show documentation
Eclipse GEF Draw2D Library
The newest version!
/*******************************************************************************
* Copyright (c) 2000, 2010 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.draw2d;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.draw2d.geometry.Dimension;
/**
* Figures using a DelegatingLayout as their layout manager give location
* responsibilities to their children. The children of a Figure using a
* DelegatingLayout should have a {@link Locator Locator} as a constraint whose
* {@link Locator#relocate(IFigure target) relocate} method is responsible for
* placing the child.
*/
public class DelegatingLayout extends AbstractLayout {
private Map constraints = new HashMap();
/**
* Calculates the preferred size of the given Figure. For the
* DelegatingLayout, this is the largest width and height values of the
* passed Figure's children.
*
* @param parent
* the figure whose preferred size is being calculated
* @param wHint
* the width hint
* @param hHint
* the height hint
* @return the preferred size
* @since 2.0
*/
protected Dimension calculatePreferredSize(IFigure parent, int wHint,
int hHint) {
List children = parent.getChildren();
Dimension d = new Dimension();
for (int i = 0; i < children.size(); i++) {
IFigure child = (IFigure) children.get(i);
d.union(child.getPreferredSize());
}
return d;
}
/**
* @see org.eclipse.draw2d.LayoutManager#getConstraint(org.eclipse.draw2d.IFigure)
*/
public Object getConstraint(IFigure child) {
return constraints.get(child);
}
/**
* Lays out the given figure's children based on their {@link Locator}
* constraint.
*
* @param parent
* the figure whose children should be layed out
*/
public void layout(IFigure parent) {
List children = parent.getChildren();
for (int i = 0; i < children.size(); i++) {
IFigure child = (IFigure) children.get(i);
Locator locator = (Locator) constraints.get(child);
if (locator != null) {
locator.relocate(child);
}
}
}
/**
* Removes the locator for the given figure.
*
* @param child
* the child being removed
*/
public void remove(IFigure child) {
constraints.remove(child);
}
/**
* Sets the constraint for the given figure.
*
* @param figure
* the figure whose contraint is being set
* @param constraint
* the new constraint
*/
public void setConstraint(IFigure figure, Object constraint) {
super.setConstraint(figure, constraint);
if (constraint != null)
constraints.put(figure, constraint);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy