com.nokia.tools.variant.confml.ui.views.ConfMLViewLabelProvider.java Source code

Java tutorial

Introduction

Here is the source code for com.nokia.tools.variant.confml.ui.views.ConfMLViewLabelProvider.java

Source

/*
 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
 * which accompanies this distribution, and is available
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
 * 
 * Initial Contributors:
 * Nokia Corporation - Initial contribution
 * 
 * Contributors:
 * 
 * Description: This file is part of com.nokia.tools.variant.confml.ui component.
 */

package com.nokia.tools.variant.confml.ui.views;

import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;

import com.nokia.tools.variant.confml.core.model.metadata.ECPFMetadata;
import com.nokia.tools.variant.confml.core.model.metadata.util.ECPFMetadataResourceFactoryImpl;
import com.nokia.tools.variant.confml.ui.ConfmlUI;
import com.nokia.tools.variant.confml.ui.ConverterUtils;
import com.nokia.tools.variant.confml.ui.IConfmlImages;
import com.nokia.tools.variant.confml.ui.views.ConfMLNavigator.Features;
import com.nokia.tools.variant.confml.ui.views.ConfMLNavigator.Options;
import com.nokia.tools.variant.confml.ui.views.ConfMLNavigator.Parents;
import com.nokia.tools.variant.confml.ui.views.ConfMLNavigator.Resources;
import com.nokia.tools.variant.confml.ui.views.ConfMLNavigator.Views;
import com.nokia.tools.vct.common.appmodel.EAppFeature;
import com.nokia.tools.vct.common.appmodel.EAppGroup;
import com.nokia.tools.vct.common.appmodel.EAppSetting;
import com.nokia.tools.vct.common.appmodel.EAppSettingRef;
import com.nokia.tools.vct.common.appmodel.EAppSettingType;
import com.nokia.tools.vct.common.appmodel.EAppView;
import com.nokia.tools.vct.common.appmodel.EConfMLLayer;
import com.nokia.tools.vct.common.appmodel.EConfigurationProject;
import com.nokia.tools.vct.confml.model.confml1.EConfMLDocument;
import com.nokia.tools.vct.confml.model.confml1.EFeatureData;
import com.nokia.tools.vct.confml.model.confml1.EFeatureElement;
import com.nokia.tools.vct.confml.model.confml1.EFeatureRfs;
import com.nokia.tools.vct.confml.model.confml1.EGroup;
import com.nokia.tools.vct.confml.model.confml1.EOptionElement;
import com.nokia.tools.vct.confml.model.confml1.EPropertyElement;
import com.nokia.tools.vct.confml.model.confml1.ESettingData;
import com.nokia.tools.vct.confml.model.confml1.ESettingElement;
import com.nokia.tools.vct.confml.model.confml1.ESettingRfs;
import com.nokia.tools.vct.confml.model.confml1.EViewElement;

public class ConfMLViewLabelProvider extends LabelProvider {

    public String getText(Object obj) {
        if (obj instanceof IProject)
            return getConfigurationRootName(obj);
        else if (obj instanceof Features) {
            return "All Features";
        } else if (obj instanceof Views) {
            return "Views";
        } else if (obj instanceof Resources) {
            return "Resources";
        } else if (obj instanceof Parents) {
            return "Based on";
        } else if (obj instanceof Resource) {
            return ((Resource) obj).getURI().toString();
        } else if (obj instanceof EConfigurationProject) {
            return "Project: " + ((EConfigurationProject) obj).getName();
        } else if (obj instanceof EConfMLLayer) {
            return "" + ((EConfMLLayer) obj).getName();
        } else if (obj instanceof EViewElement) {
            return ((EViewElement) obj).getName();
        } else if (obj instanceof EAppView) {
            EAppView def = (EAppView) obj;
            Map.Entry<String, EAppView> entry = (Entry<String, EAppView>) def.eContainer();
            return def.getName();// + " (" + entry.getKey() + ")";
        } else if (obj instanceof EAppGroup) {
            return ((EAppGroup) obj).getName();
        } else if (obj instanceof EGroup) {
            return ((EGroup) obj).getName();
        } else if (obj instanceof EAppFeature) {
            EAppFeature feature = (EAppFeature) obj;
            return feature.getName() + " (" + ConverterUtils.getFeatureId(feature) + ")";
        } else if (obj instanceof EAppSetting) {
            EAppSetting setting = (EAppSetting) obj;
            return setting.getTypeInfo().getName() + " (" + ConverterUtils.getSettingId(setting) + ")";
        } else if (obj instanceof EFeatureElement) {
            EFeatureElement type = (EFeatureElement) obj;
            return type.getName() + " (" + type.getRef() + ")";
        } else if (obj instanceof ESettingElement) {
            ESettingElement type = (ESettingElement) obj;
            if (type.getName() != null) {
                return type.getName() + " (" + type.getRef() + ")";
            } else {
                return type.getRef();
            }
        } else if (obj instanceof EOptionElement) {
            EOptionElement opt = (EOptionElement) obj;
            return "Opt: " + opt.getName();
        } else if (obj instanceof EPropertyElement) {
            EPropertyElement prop = (EPropertyElement) obj;
            return "Prop: " + prop.getName();
        } else if (obj instanceof EFeatureRfs) {
            EFeatureRfs type = (EFeatureRfs) obj;
            return type.getRef();
        } else if (obj instanceof ESettingRfs) {
            ESettingRfs type = (ESettingRfs) obj;
            return type.getRef();
        } else if (obj instanceof EFeatureData) {
            return ((EFeatureData) obj).getRef();
        } else if (obj instanceof ESettingData) {
            return ((ESettingData) obj).getRef();
        } else if (obj instanceof EAppSettingRef) {
            EAppSettingRef ref = (EAppSettingRef) obj;
            EAppSetting setting = ref.getResolved();
            EAppFeature feature = ConverterUtils.getAncestor(setting, EAppFeature.class);
            EAppSettingType settingType = setting.getTypeInfo();
            String name = feature.getName() + "/" + settingType.getName() + " ("
                    + ConverterUtils.getFeatureId(feature) + "/" + ConverterUtils.getSettingId(setting) + ")";

            return name;
        }
        if (obj instanceof EObject) {
            return ((EObject) obj).eClass().getName();
        }
        return String.valueOf(obj);
    }

    public Image getImage(Object obj) {
        String imageKey = ISharedImages.IMG_OBJ_ELEMENT;
        if (obj instanceof EConfMLLayer) {
            return ConfmlUI.getImage(IConfmlImages.FLD_PROJECT);
            // } else if (obj instanceof ResourcesWrapper) {
            // imageKey = ISharedImages.IMG_OBJ_FOLDER;
            // } else if (obj instanceof ApplicationWrapper) {
            // imageKey = ISharedImages.IMG_OBJ_FOLDER;
            // } else if (obj instanceof ViewsWrapper) {
            // imageKey = ISharedImages.IMG_OBJ_FOLDER;
        } else if (obj instanceof EConfigurationProject) {
            imageKey = ISharedImages.IMG_OBJ_FOLDER;
        } else if (obj instanceof EConfMLDocument) {
            return ConfmlUI.getImage(IConfmlImages.FIL_CONFML);
        } else if (obj instanceof Resource) {
            imageKey = ISharedImages.IMG_OBJ_FILE;
        } else if (obj instanceof Parents) {
            return ConfmlUI.getImage(IConfmlImages.FLD_PARENTS);
        } else if (obj instanceof Resources) {
            return ConfmlUI.getImage(IConfmlImages.FLD_RESOURCES);
        } else if (obj instanceof Views) {
            return ConfmlUI.getImage(IConfmlImages.FLD_VIEWSET);
        } else if (obj instanceof Features) {
            return ConfmlUI.getImage(IConfmlImages.FLD_FEATURESET);
        } else if (obj instanceof Options) {
            imageKey = ISharedImages.IMG_OBJ_FOLDER;
        } else if (obj instanceof EAppFeature) {
            return ConfmlUI.getImage(IConfmlImages.EDI_FEATURE);
        } else if (obj instanceof EAppSetting) {
            return ConfmlUI.getImage(IConfmlImages.EDI_SETTING);
        } else if (obj instanceof EFeatureElement) {
            return ConfmlUI.getImage(IConfmlImages.TYP_FEATURE);
        } else if (obj instanceof ESettingElement) {
            ESettingElement setting = (ESettingElement) obj;
            String ref = setting.getRef();
            if (setting.eContainer() instanceof EGroup) {
                if (ref.contains("*")) {
                    return ConfmlUI.getImage(IConfmlImages.EDI_FEATURE);
                } else {
                    return ConfmlUI.getImage(IConfmlImages.EDI_SETTING);
                }
            } else {
                return ConfmlUI.getImage(IConfmlImages.TYP_SETTING);
            }
        } else if (obj instanceof EFeatureData) {
            return ConfmlUI.getImage(IConfmlImages.DAT_FEATURE);
        } else if (obj instanceof EFeatureRfs) {
            return ConfmlUI.getImage(IConfmlImages.RFS_FEATURE);
        } else if (obj instanceof ESettingData) {
            return ConfmlUI.getImage(IConfmlImages.DAT_SETTING);
        } else if (obj instanceof ESettingRfs) {
            return ConfmlUI.getImage(IConfmlImages.RFS_SETTING);
        } else if (obj instanceof EAppView) {
            return ConfmlUI.getImage(IConfmlImages.EDI_VIEW);
        } else if (obj instanceof EViewElement) {
            return ConfmlUI.getImage(IConfmlImages.EDI_VIEW);
        } else if (obj instanceof EAppGroup) {
            return ConfmlUI.getImage(IConfmlImages.EDI_GROUP);
        } else if (obj instanceof EGroup) {
            return ConfmlUI.getImage(IConfmlImages.EDI_GROUP);
        } else if (obj instanceof EAppSettingRef) {
            return ConfmlUI.getImage(IConfmlImages.EDI_SETTING);
        }
        return PlatformUI.getWorkbench().getSharedImages().getImage(imageKey);
    }

    private String getConfigurationRootName(Object obj) {
        IProject project = (IProject) obj;
        IFile metadataFile = project.getFile(".metadata");
        URI metadataFileURI = URI.createPlatformResourceURI(metadataFile.getFullPath().toString(), true);
        Resource resource = new ECPFMetadataResourceFactoryImpl().createResource(metadataFileURI);
        ECPFMetadata metadata = null;
        if (metadataFile.isAccessible()) {
            try {
                resource.load(null);
                metadata = (ECPFMetadata) resource.getContents().get(0);
            } catch (IOException e) {
                // e.printStackTrace();
            }
        }

        if (metadata == null || metadata.getCpfRootFile() == null)
            return project.getName();
        else
            return project.getName() + "  (" + metadata.getCpfRootFile() + ")";
    }

}