org.eclipse.buckminster.ui.dependency.visualizer.viewer.figures.BOMNodeTooltipFigure.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.buckminster.ui.dependency.visualizer.viewer.figures.BOMNodeTooltipFigure.java

Source

/*******************************************************************************
 * Copyright (c) 2009 Johannes Utzig.
 * 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:
 *    Johannes Utzig - initial API and implementation
 *******************************************************************************/
package org.eclipse.buckminster.ui.dependency.visualizer.viewer.figures;

import java.text.DateFormat;

import org.eclipse.buckminster.core.cspec.model.ComponentRequest;
import org.eclipse.buckminster.core.metadata.model.BOMNode;
import org.eclipse.buckminster.core.metadata.model.Resolution;
import org.eclipse.buckminster.core.version.VersionSelector;
import org.eclipse.buckminster.ui.dependency.visualizer.Messages;
import org.eclipse.buckminster.ui.dependency.visualizer.viewer.provider.DependencyLabelProvider;
import org.eclipse.draw2d.BorderLayout;
import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.GridLayout;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.Label;
import org.eclipse.draw2d.MarginBorder;
import org.eclipse.draw2d.RectangleFigure;
import org.eclipse.draw2d.SchemeBorder;
import org.eclipse.draw2d.SchemeBorder.SCHEMES;
import org.eclipse.equinox.p2.metadata.VersionRange;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;

/**
 * creates a Tooltip figure for a {@link BOMNode}
 * 
 * @author Johannes Utzig
 * 
 */
public class BOMNodeTooltipFigure extends RectangleFigure {

    private BOMNode node;

    public BOMNodeTooltipFigure(BOMNode node) {
        this.node = node;
        setBackgroundColor(ColorConstants.tooltipBackground);
        setForegroundColor(ColorConstants.tooltipForeground);
        setLayoutManager(new BorderLayout());
        setBorder(new MarginBorder(5, 5, 5, 5));
        add(createHeadFigure(), BorderLayout.TOP);
        add(createBodyFigure(), BorderLayout.CENTER);
    }

    private IFigure createBodyFigure() {
        Figure figure = new Figure();
        figure.setBorder(new SchemeBorder(SCHEMES.RIDGED));
        figure.setLayoutManager(new GridLayout(2, false));
        Resolution resolution = node.getResolution();

        if (resolution != null) {
            Label label = new Label(Messages.Type);
            figure.add(label);
            label = new Label(resolution.getComponentTypeId());
            figure.add(label);
            if (resolution.getVersion() != null) {
                label = new Label(Messages.Version);
                figure.add(label);
                label = new Label(resolution.getVersionMatch().toString());
                figure.add(label);
            }

            VersionRange designator = node.getRequest().getVersionRange();
            if (designator != null) {
                label = new Label(Messages.VersionRange);
                figure.add(label);

                label = new Label(designator.toString());
                figure.add(label);

            }

            label = new Label(Messages.ReaderType);
            figure.add(label);
            label = new Label(node.getResolution().getReaderTypeId());
            figure.add(label);
            if (resolution.getRepository() != null) {
                label = new Label(Messages.Repository);
                figure.add(label);
                label = new Label(node.getResolution().getRepository());
                figure.add(label);
            }

            if (resolution.getMatchedBranchOrTag() != null) {
                VersionSelector selector = resolution.getMatchedBranchOrTag();
                if (selector.getType() == VersionSelector.BRANCH) {
                    label = new Label(Messages.Branch);
                } else {
                    label = new Label(Messages.Tag);
                }

                figure.add(label);
                label = new Label(resolution.getMatchedBranchOrTag().getName());
                figure.add(label);
            }

            if (resolution.getSelectedRevision() != null) {
                label = new Label(Messages.SelectedRevision);
                figure.add(label);
                label = new Label(resolution.getSelectedRevision());
                figure.add(label);
            }
            if (resolution.getSelectedTimestamp() != null) {
                label = new Label(Messages.SelectedDate);
                figure.add(label);
                label = new Label(DateFormat.getInstance().format(resolution.getSelectedTimestamp()));
                figure.add(label);
            }

        } else {

            ComponentRequest request = node.getRequest();
            Label label = new Label(Messages.Type);
            figure.add(label);
            label = new Label(request.getComponentTypeID());
            figure.add(label);

            VersionRange designator = node.getRequest().getVersionRange();
            if (designator != null) {
                label = new Label(Messages.VersionRange);
                figure.add(label);

                label = new Label(designator.toString());
                figure.add(label);

            }

            label = new Label(Messages.UnresolvedNode);
            figure.add(label);
        }
        return figure;
    }

    private IFigure createHeadFigure() {
        LabelProvider provider = new DependencyLabelProvider();
        Image image = provider.getImage(node);
        String text = provider.getText(node);
        Label label = new Label(text, image);
        return label;
    }

}