From 8bed289ec9ce05f20ae69061d0f5072370dc0448 Mon Sep 17 00:00:00 2001 From: Johannes Eder <eder@fortiss.org> Date: Wed, 14 Mar 2018 15:36:20 +0000 Subject: [PATCH] YELLOW --- .../fortiss/tooling/base/ui/viewers/.ratings | 2 +- .../AbstractIntegerSpinnerEditingSupport.java | 2 +- .../tooling/kernel/ui/internal/.ratings | 2 +- .../kernel/ui/internal/TutorialUIService.java | 96 ++++++++++--------- 4 files changed, 54 insertions(+), 48 deletions(-) diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/viewers/.ratings b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/viewers/.ratings index 71596176d..f408be906 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/viewers/.ratings +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/viewers/.ratings @@ -1,4 +1,4 @@ -AbstractIntegerSpinnerEditingSupport.java a67466d39ebb90b73a5f245120e4db51f8b4eca9 YELLOW +AbstractIntegerSpinnerEditingSupport.java 78492c72af2f63c6edc1fc9addd1ef2f750ffe72 YELLOW CheckBoxEditingSupport.java 9abe8e0d0f16193dc512a67d9f2c95643335c68a GREEN CheckBoxLabelProvider.java 89b9104de4cae67b646ad75c4ee3382e4f8bd401 GREEN IconNameLabelProvider.java 04e0fbbfd41f33295ae83744df6af52c11fda167 GREEN diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/viewers/AbstractIntegerSpinnerEditingSupport.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/viewers/AbstractIntegerSpinnerEditingSupport.java index d988a52e8..7391e5b0d 100644 --- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/viewers/AbstractIntegerSpinnerEditingSupport.java +++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/viewers/AbstractIntegerSpinnerEditingSupport.java @@ -25,7 +25,7 @@ import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Spinner; /** - * Base class for {@link EditingSupport}s that provide a integer {@link Spinner}. + * Base class for {@link EditingSupport}s that provides a integer {@link Spinner}. * * @author eder */ diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/.ratings b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/.ratings index 636c49496..0e56e9055 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/.ratings +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/.ratings @@ -9,4 +9,4 @@ ModelEditorBindingService.java 67cb577e2b89a9c0479698a3f45cef681885227e YELLOW ModelElementHandlerService.java 6a15bf65b8bf7879293556125e3d2224e58e24f0 GREEN NavigatorService.java 9a042a0ff9a21a45d98d14fe39b66e90ab974269 GREEN ToolingKernelUIInternal.java aefc9a6a7ebcd6ff689558ffc4300992cca89ad6 GREEN -TutorialUIService.java 0f7124393b900ca8e1a87e7f985c0b440f2716fe RED +TutorialUIService.java d0f6ae47d6405bb2ac1407b377c86cf7772be353 YELLOW diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/TutorialUIService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/TutorialUIService.java index cf703cbaf..f5ca1de51 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/TutorialUIService.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/TutorialUIService.java @@ -22,17 +22,26 @@ import java.net.MalformedURLException; import java.net.URI; import java.net.URL; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.Map.Entry; +import java.util.Optional; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Platform; +import org.eclipse.core.runtime.Status; import org.eclipse.emf.ecore.EObject; import org.eclipse.jface.action.IContributionItem; +import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.progress.UIJob; import org.fortiss.tooling.kernel.extension.ITutorialProvider; import org.fortiss.tooling.kernel.extension.data.TutorialStepBase; import org.fortiss.tooling.kernel.introspection.IIntrospectionDetailsItem; @@ -131,46 +140,48 @@ public final class TutorialUIService implements ITutorialUIService, ITutorialUIW } // start tutorial immediately if command line arguments have been given - // TODO(JE): commented out due to problems in the build version -> Display.getCurrent() == - // null - // UIJob uiJob = new UIJob(Display.getCurrent(), "TutorialJob") { - // - // @Override - // public IStatus runInUIThread(IProgressMonitor monitor) { - // - // final String getenv = System.getProperty("sun.java.command"); - // List<String> split = Arrays.asList(getenv.split(" ")); - // // search for Tutorial - // Optional<String> cmdLineArgument = - // split.stream().filter(s -> s.contains("tutorial")).findFirst(); - // - // if(!cmdLineArgument.isPresent()) { - // return CANCEL_STATUS; - // } - // - // // 'tutorial = <Class name of tutorial root provider>' - // String cmdLineString = cmdLineArgument.get(); - // String[] split2 = cmdLineString.split("="); - // String className = split2[split2.length - 1]; - // - // Optional<Entry<Class<? extends ITutorialProvider>, Class<? extends ITutorialUIProvider>>> - // tutorialProvider = - // providerMap.entrySet().stream() - // .filter(c -> c.getKey().toString().contains(className)).findFirst(); - // - // if(!tutorialProvider.isPresent()) { - // return null; - // } - // - // Class<? extends ITutorialProvider> clazz = tutorialProvider.get().getKey(); - // Display.getCurrent().asyncExec( - // () -> ITutorialService.getInstance().startTutorial(clazz)); - // - // return OK_STATUS; - // } - // }; - - // uiJob.schedule(); + Display display = Display.getCurrent(); + if(display == null) { + // Stop here if display is still null + // Then no tutorial is started on startup of AF3 + return; + } + UIJob uiJob = new UIJob(display, "TutorialJob") { + + @Override + public IStatus runInUIThread(IProgressMonitor monitor) { + + final String getenv = System.getProperty("sun.java.command"); + List<String> split = Arrays.asList(getenv.split(" ")); + // search for Tutorial + Optional<String> cmdLineArgument = + split.stream().filter(s -> s.contains("tutorial")).findFirst(); + + if(!cmdLineArgument.isPresent()) { + return Status.CANCEL_STATUS; + } + + // 'tutorial = <Class name of tutorial root provider>' + String cmdLineString = cmdLineArgument.get(); + String[] split2 = cmdLineString.split("="); + String className = split2[split2.length - 1]; + + Optional<Entry<Class<? extends ITutorialProvider>, Class<? extends ITutorialUIProvider>>> tutorialProvider = + providerMap.entrySet().stream() + .filter(c -> c.getKey().toString().contains(className)).findFirst(); + + if(!tutorialProvider.isPresent()) { + return null; + } + + Class<? extends ITutorialProvider> clazz = tutorialProvider.get().getKey(); + display.asyncExec(() -> ITutorialService.getInstance().startTutorial(clazz)); + + return Status.OK_STATUS; + } + }; + + uiJob.schedule(); } /** Tests for existence of META-INF sub-directory. */ @@ -218,11 +229,6 @@ public final class TutorialUIService implements ITutorialUIService, ITutorialUIW } /** {@inheritDoc} */ - // TODO(VA) So I understand only now why composite steps are necessary. - // There is the idea that every element which is displayed in a parent step is going to be - // displayed in the children-steps. I guess that's to prevent tedious redundancies? In any case - // that would be worth explaining somewhere, maybe in TutorialCompositeStep? - // TODO(VA) Methods below could be factorized by using lambdas @Override public boolean elementVisibleInNavigator(EObject element) { TutorialStepBase step = ITutorialService.getInstance().getActiveTutorialStep(); -- GitLab