From: Marko Luukkainen Date: Fri, 29 Mar 2019 10:48:58 +0000 (+0000) Subject: Merge "Improved logic to find imports/includes in SCLTextEditorEnvironement" X-Git-Tag: v1.43.0~136^2~168 X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=commitdiff_plain;h=278798fde2299d295af15addb3053d7101ccb17c;hp=38cd6e562efe2e5a8752924ebc5213e68b352f09 Merge "Improved logic to find imports/includes in SCLTextEditorEnvironement" --- diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/sg/DiagramSceneGraphProvider.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/sg/DiagramSceneGraphProvider.java index 6574b31b6..4ef9c6369 100644 --- a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/sg/DiagramSceneGraphProvider.java +++ b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/sg/DiagramSceneGraphProvider.java @@ -189,7 +189,7 @@ public class DiagramSceneGraphProvider implements ICanvasSceneGraphProvider, IDi return new MappedElementCopyAdvisor(new ElementCopyAdvisor(), new ComponentCopyAdvisor()); } - private void initContext(CanvasContext ctx) { + protected void initContext(CanvasContext ctx) { boolean unlock = false; if (!ctx.isLocked()) { ctx.setLocked(true); diff --git a/bundles/org.simantics.scl.runtime/scl/Prelude.md b/bundles/org.simantics.scl.runtime/scl/Prelude.md index df91f29d1..531a63587 100644 --- a/bundles/org.simantics.scl.runtime/scl/Prelude.md +++ b/bundles/org.simantics.scl.runtime/scl/Prelude.md @@ -81,13 +81,16 @@ ## Monads ::class[Monad] -::value[>>] +::value[>>, >=>] ::class[FunctorM] ::value[repeatForever] ::class[MonadZero] ::value[guard] ::class[MonadPlus, MonadOr] ::value[ignoreM] +::class[MonadE] +::value[compE] +::class[MonadZeroE] # Side-effects diff --git a/bundles/org.simantics.scl.runtime/scl/Prelude.scl b/bundles/org.simantics.scl.runtime/scl/Prelude.scl index e92603bec..f98325109 100644 --- a/bundles/org.simantics.scl.runtime/scl/Prelude.scl +++ b/bundles/org.simantics.scl.runtime/scl/Prelude.scl @@ -1096,6 +1096,7 @@ class (FunctorE f) => FunctorM f where /// MonadE /// class (FunctorE m, Monad m) => MonadE m where + "An effectful version of the bind operator `(>>=)`" bindE :: m a -> (a -> m b) -> m b instance MonadE Maybe where @@ -1109,6 +1110,11 @@ instance MonadE (Either a) where instance MonadE [] where bindE l f = concatMap f l +@inline +"An effectful version of the Kleisli composition operator `(>=>)`" +compE :: MonadE m => (a -> m b) -> (b -> m c) -> a -> m c +compE f g x = (f x) `bindE` g + /// MZeroE /// class (MonadE m, MonadZero m) => MonadZeroE m where diff --git a/bundles/org.simantics.workbench/src/org/simantics/workbench/internal/SimanticsWorkbenchAdvisor.java b/bundles/org.simantics.workbench/src/org/simantics/workbench/internal/SimanticsWorkbenchAdvisor.java index f590b5e0e..6f70bc56e 100644 --- a/bundles/org.simantics.workbench/src/org/simantics/workbench/internal/SimanticsWorkbenchAdvisor.java +++ b/bundles/org.simantics.workbench/src/org/simantics/workbench/internal/SimanticsWorkbenchAdvisor.java @@ -408,6 +408,7 @@ public class SimanticsWorkbenchAdvisor extends WorkbenchAdvisor { if (args.contains(SimanticsArguments.DO_NOT_SYNCHRONIZE_ONTOLOGIES)) { requireSynchronize = false; + ontologyPolicy = OntologyRecoveryPolicy.Bypass; } if (args.contains(SimanticsArguments.DISABLE_INDEX)) { diff --git a/bundles/org.simantics.workbench/src/org/simantics/workbench/internal/SimanticsWorkbenchApplication.java b/bundles/org.simantics.workbench/src/org/simantics/workbench/internal/SimanticsWorkbenchApplication.java index 50e8aada7..e69f90669 100644 --- a/bundles/org.simantics.workbench/src/org/simantics/workbench/internal/SimanticsWorkbenchApplication.java +++ b/bundles/org.simantics.workbench/src/org/simantics/workbench/internal/SimanticsWorkbenchApplication.java @@ -221,6 +221,7 @@ public class SimanticsWorkbenchApplication implements IApplication, IExecutableE SimanticsArguments.EXPERIMENT, SimanticsArguments.DISABLE_INDEX, SimanticsArguments.DATABASE_ID, + SimanticsArguments.DO_NOT_SYNCHRONIZE_ONTOLOGIES }; IArguments result = Arguments.parse(args, accepted); return result; diff --git a/bundles/org.simantics/src/org/simantics/SimanticsPlatform.java b/bundles/org.simantics/src/org/simantics/SimanticsPlatform.java index a4206e7da..2504ba62d 100644 --- a/bundles/org.simantics/src/org/simantics/SimanticsPlatform.java +++ b/bundles/org.simantics/src/org/simantics/SimanticsPlatform.java @@ -153,7 +153,7 @@ public class SimanticsPlatform implements LifecycleListener { * It is applied when the ontology in the database of a workspace doesn't match * a newer ontology in the Eclipse workspace. */ - public static enum OntologyRecoveryPolicy { ThrowError, Merge, ReinstallDatabase } + public static enum OntologyRecoveryPolicy { ThrowError, Merge, ReinstallDatabase, Bypass} /** * This policy dictates how the Simantics platform startup should react if @@ -346,7 +346,7 @@ public class SimanticsPlatform implements LifecycleListener { session.getService(XSupport.class).setServiceMode(true, true); // Throw error - if (ontologyPolicy == OntologyRecoveryPolicy.ThrowError) { + if (ontologyPolicy == OntologyRecoveryPolicy.ThrowError || ontologyPolicy == OntologyRecoveryPolicy.Bypass) { StringBuilder sb = new StringBuilder("The following graphs are not installed in the database: "); if (!installTGs.isEmpty()) { int i = 0; @@ -367,8 +367,12 @@ public class SimanticsPlatform implements LifecycleListener { sb.append(" Database/Platform Bundle version mismatch.\n"); } sb.append("Hint: Use -fixErrors to install the graphs."); - throw new PlatformException(sb.toString()); + if (ontologyPolicy == OntologyRecoveryPolicy.ThrowError) + throw new PlatformException(sb.toString()); + else + log.log(new Status(IStatus.WARNING, Activator.PLUGIN_ID, sb.toString())); } + // Reinstall database if (ontologyPolicy == OntologyRecoveryPolicy.ReinstallDatabase) { log.log(new Status(IStatus.INFO, Activator.PLUGIN_ID, "Reinstalling the database."));