mbtarranger.explorers.MarLabelProvider.java Source code

Java tutorial

Introduction

Here is the source code for mbtarranger.explorers.MarLabelProvider.java

Source

/*******************************************************************************
 * Copyright (c) 2013, 2014 ETAS GmbH.
 * 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:
 * Dennis Eder (ETAS GmbH) - initial API and implementation and/or initial documentation
 *******************************************************************************/
package mbtarranger.explorers;

import java.net.URL;

import mbtarranger.languages.arrange.gen.ArrangeParser.AdaptContext;
import mbtarranger.languages.arrange.gen.ArrangeParser.ConfigContext;
import mbtarranger.languages.arrange.gen.ArrangeParser.ExpressContext;
import mbtarranger.languages.arrange.gen.ArrangeParser.LabelrefContext;
import mbtarranger.languages.arrange.gen.ArrangeParser.Ltlctl_specContext;
import mbtarranger.languages.arrange.gen.ArrangeParser.RootContext;
import mbtarranger.languages.arrange.gen.ArrangeParser.ScenariosContext;
import mbtarranger.languages.arrange.gen.ArrangeParser.SmvFileRefContext;
import mbtarranger.languages.arrange.gen.ArrangeParser.TestContext;
import mbtarranger.languages.arrange.gen.ArrangeParser.TestsetContext;
import mbtarranger.util.polymorphism.DynamicPolymorphDispatcherTypesafe;
import mbtarranger.util.polymorphism.DynamicPolymorphDispatcherTypesafe.DispatchSelectionMethod;
import mbtarranger.util.polymorphism.DynamicPolymorphDispatcherTypesafeTest.Test_A;
import mbtarranger.util.polymorphism.DynamicPolymorphDispatcherTypesafeTest.Test_B;
import mbtarranger.util.polymorphism.DynamicPolymorphDispatcherTypesafeTest.Test_BASE;
import mbtarranger.util.polymorphism.DynamicPolymorphDispatcherTypesafeTest.Test_C;

import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.tree.TerminalNode;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import org.junit.Assert;
import org.osgi.framework.Bundle;

public class MarLabelProvider extends LabelProvider {
    private DynamicPolymorphDispatcherTypesafe<Object, Image> dpdimg;
    private DynamicPolymorphDispatcherTypesafe<Object, String> dpdtxt;

    public MarLabelProvider() {
        dpdimg = new DynamicPolymorphDispatcherTypesafe<>(DispatchSelectionMethod.INSTANCE_OF);
        dpdimg.handle(AdaptContext.class, x -> icon("adapter16.gif"));
        dpdimg.handle(ConfigContext.class, x -> icon("cfg16.gif"));
        dpdimg.handle(ExpressContext.class, x -> icon("express16.gif"));
        dpdimg.handle(TestsetContext.class, x -> icon("testset16.gif"));
        dpdimg.handle(TestContext.class, x -> icon("tx16.gif"));
        dpdimg.handle(ScenariosContext.class, x -> icon("package16.gif"));
        dpdimg.handle(SmvFileRefContext.class, x -> icon("fileImport16.gif"));
        dpdimg.handle(Ltlctl_specContext.class, x -> icon("cov16.gif"));
        dpdimg.handle(LabelrefContext.class, x -> icon("import16.gif"));
        dpdimg.handle(RootContext.class, x -> icon("arrange16.gif"));
        dpdimg.handle(ParserRuleContext.class, x -> icon("compose16.gif"));
        dpdimg.handleDefault(Object.class, x -> icon("sample.gif"));
        dpdtxt = new DynamicPolymorphDispatcherTypesafe<>(DispatchSelectionMethod.INSTANCE_OF);
        dpdtxt.handle(AdaptContext.class, x -> String.format("%s", x.name.getText()));
        dpdtxt.handle(ConfigContext.class, x -> String.format("%s", x.name.getText()));
        dpdtxt.handle(ExpressContext.class, x -> String.format("%s", x.name.getText()));
        dpdtxt.handle(ScenariosContext.class, x -> String.format("%s", x.name.getText()));
        dpdtxt.handle(ParserRuleContext.class, x -> String.format("%s", x.getClass().getSimpleName()));
        dpdtxt.handle(TerminalNode.class, x -> String.format("%s", x.getSymbol().toString()));
        dpdtxt.handleDefault(Object.class, x -> "--");
    }

    @Override
    public String getText(Object o) {
        return dpdtxt.dispatch(o);
    }

    public Image icon(String iconName) {
        Bundle bundle = Platform.getBundle(mbtarranger.Activator.PLUGIN_ID);
        URL url = FileLocator.find(bundle, new Path("icons/" + iconName), null);
        ImageDescriptor imageDescriptor = ImageDescriptor.createFromURL(url);
        return imageDescriptor.createImage();
    }

    @Override
    public Image getImage(Object o) {
        return dpdimg.dispatch(o);
    }

}