eu.esdihumboldt.hale.ui.common.graph.figures.EntityFigure.java Source code

Java tutorial

Introduction

Here is the source code for eu.esdihumboldt.hale.ui.common.graph.figures.EntityFigure.java

Source

/*
 * Copyright (c) 2012 Data Harmonisation Panel
 * 
 * All rights reserved. This program and the accompanying materials are made
 * available under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation, either version 3 of the License,
 * or (at your option) any later version.
 * 
 * You should have received a copy of the GNU Lesser General Public License
 * along with this distribution. If not, see <http://www.gnu.org/licenses/>.
 * 
 * Contributors:
 *     HUMBOLDT EU Integrated Project #030962
 *     Data Harmonisation Panel <http://www.dhpanel.eu>
 */

package eu.esdihumboldt.hale.ui.common.graph.figures;

import org.eclipse.draw2d.GridData;
import org.eclipse.draw2d.GridLayout;
import org.eclipse.draw2d.Label;
import org.eclipse.jface.preference.JFacePreferences;
import org.eclipse.jface.resource.ColorRegistry;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Font;

import eu.esdihumboldt.hale.ui.util.graph.CustomShapeFigure;

/**
 * Figure for entities displaying an optional context text additional to the
 * entity name and icon.
 * 
 * @author Simon Templer
 */
public class EntityFigure extends CustomShapeFigure {

    /**
     * Create a entity figure.
     * 
     * @param painter the shape
     * @param contextText the context text, may be <code>null</code>
     * @param cardinalityText the cardinality text, may be <code>null</code>
     * @param customFont a custom font to use, may be <code>null</code>
     */
    public EntityFigure(ShapePainter painter, final String contextText, final String cardinalityText,
            final Font customFont) {
        super(painter, customFont);

        setAntialias(SWT.ON);

        GridLayout gridLayout = new GridLayout();
        gridLayout.numColumns = 1;
        if (cardinalityText != null)
            gridLayout.numColumns++;
        if (contextText != null)
            gridLayout.numColumns++;
        gridLayout.marginHeight = 3;
        gridLayout.marginWidth = 3;
        gridLayout.makeColumnsEqualWidth = true;
        setLayoutManager(gridLayout);

        // the label for the label provider text and image
        Label label = new EndSubTextLabel();
        GridData gridData = new GridData(GridData.FILL, GridData.FILL, true, true);
        add(label, gridData);

        // the additional label for the cardinality text
        if (cardinalityText != null) {
            Label cardLabel = new Label();
            ColorRegistry colorRegistry = JFaceResources.getColorRegistry();
            // XXX uses the same color as in schema explorer label provider -
            // centralize this?
            cardLabel.setForegroundColor(colorRegistry.get(JFacePreferences.COUNTER_COLOR));
            if (customFont != null) {
                cardLabel.setFont(customFont);
            }
            cardLabel.setText(cardinalityText);
            GridData cardGridData = new GridData(GridData.END, GridData.CENTER, false, true);
            add(cardLabel, cardGridData);
        }

        // the additional label for the context text
        if (contextText != null) {
            Label contextLabel = new Label();
            ColorRegistry colorRegistry = JFaceResources.getColorRegistry();
            // XXX uses the same color as in schema explorer label provider -
            // centralize this?
            contextLabel.setForegroundColor(colorRegistry.get(JFacePreferences.DECORATIONS_COLOR));
            if (customFont != null) {
                contextLabel.setFont(customFont);
            }
            contextLabel.setText(contextText);
            contextLabel.setToolTip(new Label(contextText));
            GridData contextGridData = new GridData(GridData.END, GridData.CENTER, true, true);
            add(contextLabel, contextGridData);
        }

        setTextLabel(label);
        setIconLabel(label);
    }

}