Java tutorial
/******************************************************************************* * 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); } }