blob: b9c8a5c1d69f6e8cbe28eb191b3d354be6f8e50a [file] [log] [blame]
//------------------------------------------------------------------------------
// 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);
}
}
}