/* * JBoss, Home of Professional Open Source * Copyright 2005, JBoss Inc., and individual contributors as indicated * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http:/* * JBoss, Home of Professional Open Source * Copyright 2005, JBoss Inc., and individual contributors as indicated * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.hibernate.eclipse.graph.figures; import org.eclipse.draw2d.ColorConstants; import org.eclipse.draw2d.Figure; import org.eclipse.draw2d.FlowLayout; import org.eclipse.draw2d.Graphics; import org.eclipse.draw2d.Label; import org.eclipse.draw2d.MarginBorder; import org.eclipse.draw2d.ToolbarLayout; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.hibernate.eclipse.console.utils.EclipseImages; // Based on what was found in JBPM GPD 19/4/2006 04:34 AM public class NodeHeaderFigure extends Figure { private static final Font NAMEFONT = new Font(null, "Arial", 9, SWT.BOLD); //$NON-NLS-1$ private Figure embeddedFigure; private Figure typeAndLabelColumn; private Label nameLabel; private Label iconLabel; public NodeHeaderFigure(String nodeName, String nodeType, String iconName, boolean hideName) { FlowLayout flowLayout = new FlowLayout(); flowLayout.setMajorAlignment(FlowLayout.ALIGN_CENTER); setLayoutManager(flowLayout); addEmbeddedParent(nodeName, nodeType, iconName, hideName); } private void addEmbeddedParent(String nodeName, String nodeType, String iconDescriptor, boolean hideName) { embeddedFigure = new Figure(); ToolbarLayout layout = new ToolbarLayout(true); layout.setMinorAlignment(ToolbarLayout.ALIGN_CENTER); embeddedFigure.setLayoutManager(layout); addIconLabel(iconDescriptor); addTypeAndNameColumn(nodeType, nodeName, hideName); add(embeddedFigure); } private void addTypeAndNameColumn(String nodeType, String nodeName, boolean hideName) { ToolbarLayout layout = new ToolbarLayout(); layout.setStretchMinorAxis(false); layout.setMinorAlignment(ToolbarLayout.ALIGN_CENTER); typeAndLabelColumn = new Figure(); typeAndLabelColumn.setLayoutManager(layout); // addTypeLabel(nodeType); if (!hideName) { addNameLabel(nodeName); } embeddedFigure.add(typeAndLabelColumn); } private void addNameLabel(String nodeName) { nameLabel = new Label(); nameLabel.setBorder(new MarginBorder(2)); nameLabel.setForegroundColor(ColorConstants.darkGray); nameLabel.setFont(NAMEFONT); nameLabel.setText(nodeName); typeAndLabelColumn.add(nameLabel); } private void addIconLabel(String iconDescriptor) { iconLabel = new Label(); iconLabel.setBorder(new MarginBorder(2)); iconLabel.setIcon(EclipseImages.getImage(iconDescriptor)); embeddedFigure.add(iconLabel); } protected void paintClientArea(Graphics graphics) { Color foreground = graphics.getForegroundColor(); graphics.setForegroundColor(FiguresConstants.white); graphics.fillGradient(getClientArea(), true); graphics.setForegroundColor(foreground); super.paintClientArea(graphics); } public void setNodeName(String name) { if (name != null && nameLabel != null) { nameLabel.setText(name); } } public Label getNameLabel() { return nameLabel; } }