de.bmw.yamaica.ea.ui.EALabelProvider.java Source code

Java tutorial

Introduction

Here is the source code for de.bmw.yamaica.ea.ui.EALabelProvider.java

Source

/* Copyright (C) 2013-2015 BMW Group
 * Author: Manfred Bathelt (manfred.bathelt@bmw.de)
 * Author: Juergen Gehring (juergen.gehring@bmw.de)
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package de.bmw.yamaica.ea.ui;

import java.util.HashMap;
import java.util.List;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.DecorationOverlayIcon;
import org.eclipse.jface.viewers.IDecoration;
import org.eclipse.swt.graphics.Image;

import de.bmw.yamaica.ea.core.EAConstants;
import de.bmw.yamaica.ea.core.containers.EAContainerWithNamespace;
import de.bmw.yamaica.ea.core.containers.EAPackageContainer;
import de.bmw.yamaica.ea.ui.internal.Activator;

public class EALabelProvider extends ColumnLabelProvider {
    public EALabelProvider() {

    }

    @Override
    public Image getImage(Object element) {
        if (!(element instanceof EAContainerWithNamespace)) {
            return null;
        }

        ImageRegistry imageRegistry = Activator.getDefault().getImageRegistry();
        EAPackageContainer p = (EAPackageContainer) element;

        if (p.isModel()) {
            return imageRegistry.get("MODEL_PACKAGE");
        } else {
            Image image;
            Flags flags = new Flags(p.getFlags());

            if (flags.isModel()) {
                String iconName;

                switch (flags.getPackageType()) {
                case Flags.SIMPLE:
                    iconName = "SIMPLE_PACKAGE";
                    break;

                case Flags.USE_CASE:
                    iconName = "USE_CASE_PACKAGE";
                    break;

                case Flags.DYNAMIC:
                    iconName = "DYNAMIC_PACKAGE";
                    break;

                case Flags.CLASS_VIEW:
                    iconName = "CLASS_VIEW_PACKAGE";
                    break;

                case Flags.COMPONENT:
                    iconName = "COMPONENT_PACKAGE";
                    break;

                case Flags.DEPLOYMENT:
                    iconName = "DEPLOYMENT_PACKAGE";
                    break;

                default:
                    iconName = "PACKAGE";
                    break;
                }

                image = imageRegistry.get(iconName);
            } else {
                image = imageRegistry.get("PACKAGE");
            }

            if (p.isNamespaceRoot()) {
                ImageDescriptor imageDescriptor = imageRegistry.getDescriptor("NS_ROOT_OVERLAY");

                image = new DecorationOverlayIcon(image, imageDescriptor, IDecoration.BOTTOM_RIGHT).createImage();
            }

            return image;
        }
    }

    @Override
    public String getText(Object element) {
        if (!(element instanceof EAPackageContainer)) {
            return null;
        }

        EAPackageContainer p = (EAPackageContainer) element;

        List<String> stereotypes = p.getStereotypes();
        String joinedStereotype = "";

        for (String stereotype : stereotypes) {
            joinedStereotype += ", " + stereotype;
        }

        joinedStereotype = (joinedStereotype.length() > 0) ? "" + joinedStereotype.substring(2) + " "
                : joinedStereotype;

        return joinedStereotype + p.getName();
    }

    public class Flags {
        public static final int SIMPLE = 0;
        public static final int USE_CASE = 1;
        public static final int DYNAMIC = 2;
        public static final int CLASS_VIEW = 3;
        public static final int COMPONENT = 4;
        public static final int DEPLOYMENT = 5;

        protected HashMap<String, String> flags = new HashMap<String, String>();

        public Flags(String flagString) {
            String[] keyValuePairs = flagString.split(";");

            for (String keyValuePair : keyValuePairs) {
                String[] keyValuePairArray = keyValuePair.split("=");

                if (keyValuePairArray.length > 1) {
                    flags.put(keyValuePairArray[0], keyValuePairArray[1]);
                }
            }
        }

        public boolean isModel() {
            String value = flags.get(EAConstants.FLAG_IS_MODEL);

            if (null != value && value.equals("1")) {
                return true;
            }

            return false;
        }

        public int getPackageType() {
            String value = flags.get(EAConstants.FLAG_VICON);

            if (null != value) {
                return new Integer(value);
            }

            return SIMPLE;
        }
    }
}