//------------------------------------------------------------------------------ // 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 implementation //------------------------------------------------------------------------------ package org.eclipse.epf.authoring.gef.figures; import org.eclipse.draw2d.Figure; import org.eclipse.draw2d.FlowLayout; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.geometry.Dimension; import org.eclipse.epf.authoring.gef.edit.RaisedMarginBorder; import org.eclipse.epf.diagram.model.RoleTaskComposite; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.widgets.Display; /** * Figure for {@link RoleTaskComposite}. * @author Phong Nguyen Le * @since 1.0 */ public class RoleTaskCompositeFigure extends Figure { private static final Color BG_COLOR = new Color(Display.getCurrent(), 255, 255, 156); private static final int MAX_WIDTH = 500; private static final int MINOR_SPACING = 20; private Figure tasksFigure; /** * */ public RoleTaskCompositeFigure() { FlowLayout layout = new FlowLayout(true); layout.setMinorAlignment(FlowLayout.ALIGN_CENTER); layout.setMajorAlignment(FlowLayout.ALIGN_LEFTTOP); layout.setStretchMinorAxis(false); layout.setMinorSpacing(MINOR_SPACING); layout.setObserveVisibility(true); setLayoutManager(layout); setBorder(new RaisedMarginBorder()); setBackgroundColor(BG_COLOR); setOpaque(true); tasksFigure = new Figure() { /** * @see org.eclipse.draw2d.Figure#getPreferredSize(int, int) */ public Dimension getPreferredSize(int wHint, int hHint) { IFigure firstChild = (IFigure) getChildren().get(0); if (firstChild != this) { int offset = firstChild.getSize().width; // firstChild.getSize().width // + // RoleTaskCompositeFigure.this.getInsets().getWidth() // + // MINOR_SPACING; if (wHint < offset) { } wHint = wHint - offset; if (wHint > MAX_WIDTH) { wHint = MAX_WIDTH; } } Dimension dim = super.getPreferredSize(wHint, hHint); return dim; } }; FlowLayout flowLayout = new FlowLayout(); flowLayout.setMinorSpacing(10); flowLayout.setMinorAlignment(FlowLayout.ALIGN_CENTER); tasksFigure.setLayoutManager(flowLayout); tasksFigure.setOpaque(true); super.add(tasksFigure, null, -1); } /** * @see org.eclipse.draw2d.Figure#add(IFigure, Object, int) */ public void add(IFigure figure, Object constraint, int index) { if (getChildren().size() == 1) { super.add(figure, constraint, 0); } else { tasksFigure.add(figure, constraint); } } }