blob: b76a95e1f9c194eb9da5c937cb3a2df430482628 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005 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.bpel.common.ui.tray;
import java.util.List;
import org.eclipse.bpel.common.ui.CommonUIPlugin;
import org.eclipse.bpel.common.ui.details.IDetailsColors;
import org.eclipse.draw2d.AbstractLayout;
import org.eclipse.draw2d.Graphics;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.Label;
import org.eclipse.draw2d.MarginBorder;
import org.eclipse.draw2d.PositionConstants;
import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.draw2d.geometry.Insets;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.swt.graphics.Color;
public class TrayCategoryEntryFigure extends SelectionBorderFigure {
public static final int BORDER = 3;
/**
* Used to align the text of this entry with the text on the categories.
*/
protected class EntryLayout extends AbstractLayout {
public void layout(IFigure container) {
List elements = container.getChildren();
Label text = (Label)elements.get(0);
Rectangle containerBounds = container.getBounds();
Rectangle constraint = getCategoryTitleLabelBounds();
int width = containerBounds.width - constraint.x;
text.setBounds(new Rectangle(constraint.x, containerBounds.y, width, containerBounds.height));
}
@Override
protected Dimension calculatePreferredSize(IFigure container, int wHint, int hHint) {
// use the minimum width and the preferred height plus some spacing
Dimension result = new Dimension();
result.width = nameLabel.getMinimumSize(wHint, hHint).width;
result.height = nameLabel.getPreferredSize(wHint, hHint).height;
result.height += (BORDER * 2);
return result;
}
}
protected Label nameLabel;
protected IFigure labelPositionReference;
protected TrayCategoryEntryEditPart part;
public TrayCategoryEntryFigure(IFigure labelPositionReference, TrayCategoryEntryEditPart part) {
super();
this.labelPositionReference = labelPositionReference;
this.part = part;
setLayoutManager(new EntryLayout());
setBorder(new MarginBorder(BORDER) {
@Override
public void paint(IFigure figure, Graphics graphics, Insets in) {
Rectangle rect = figure.getBounds().getCopy();
Color color = CommonUIPlugin.getDefault().getColorRegistry().get(IDetailsColors.COLOR_LIGHT_BACKGROUND);
graphics.setForegroundColor(color);
graphics.drawLine(rect.x, rect.y + rect.height - 1, rect.x + rect.width, rect.y + rect.height - 1);
}
});
nameLabel = new Label();
nameLabel.setLabelAlignment(PositionConstants.LEFT);
add(nameLabel);
}
public void setText(String text) {
nameLabel.setText(text);
}
public String getText() {
return nameLabel.getText();
}
protected Rectangle getCategoryTitleLabelBounds() {
return labelPositionReference.getBounds();
}
public Label getLabel() {
return nameLabel;
}
public TrayCategoryEntryEditPart getEditPart() {
return part;
}
}