X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.document.swt.core%2Fsrc%2Forg%2Fsimantics%2Fdocument%2Fswt%2Fcore%2Fscl%2FSCL.java;h=ad5cf709169a75f392e0d12165b416949e3501bb;hp=f8732aebcedffa44571b747c77247a36e143e5f8;hb=fc6a66f7f4f48ce1a6a7f1281d90efd96d6af834;hpb=969bd23cab98a79ca9101af33334000879fb60c5 diff --git a/bundles/org.simantics.document.swt.core/src/org/simantics/document/swt/core/scl/SCL.java b/bundles/org.simantics.document.swt.core/src/org/simantics/document/swt/core/scl/SCL.java index f8732aebc..ad5cf7091 100644 --- a/bundles/org.simantics.document.swt.core/src/org/simantics/document/swt/core/scl/SCL.java +++ b/bundles/org.simantics.document.swt.core/src/org/simantics/document/swt/core/scl/SCL.java @@ -1,108 +1,111 @@ -package org.simantics.document.swt.core.scl; - -import java.util.List; - -import org.simantics.databoard.Bindings; -import org.simantics.db.ReadGraph; -import org.simantics.db.Resource; -import org.simantics.db.WriteGraph; -import org.simantics.db.common.request.WriteRequest; -import org.simantics.db.exception.DatabaseException; -import org.simantics.db.layer0.variable.Variable; -import org.simantics.db.layer0.variable.Variables; -import org.simantics.document.server.handler.AbstractEventHandler; -import org.simantics.document.server.handler.EventHandler; -import org.simantics.document.server.handler.WriteEventHandler; -import org.simantics.document.server.io.CommandContext; -import org.simantics.document.server.io.CommandResult; -import org.simantics.document.server.serverResponse.ServerResponse; -import org.simantics.document.swt.core.SWTViews; -import org.simantics.scl.runtime.SCLContext; -import org.simantics.scl.runtime.function.Function1; -import org.simantics.scl.runtime.reporting.SCLReportingHandler; -import org.simantics.scl.runtime.tuple.Tuple0; -import org.simantics.ui.selection.WorkbenchSelectionElement; -import org.simantics.ui.selection.WorkbenchSelectionUtils; - -public class SCL { - - public static final String SCL_VALUE_PROPERTY = "sclValueProperty"; - - public static EventHandler eventHandler(final Function1 fn) { - return new EventHandler() { - - @Override - protected ServerResponse handle(ReadGraph graph, CommandContext parameters) throws DatabaseException { - - final SCLReportingHandler printer = (SCLReportingHandler)SCLContext.getCurrent().get(SCLReportingHandler.REPORTING_HANDLER); - graph.async(new WriteRequest() { - - @Override - public void perform(WriteGraph graph) throws DatabaseException { - SCLContext sclContext = SCLContext.getCurrent(); - Object oldPrinter = sclContext.put(SCLReportingHandler.REPORTING_HANDLER, printer); - Object oldGraph = sclContext.put("graph", graph); - fn.apply(Tuple0.INSTANCE); - sclContext.put(SCLReportingHandler.REPORTING_HANDLER, oldPrinter); - sclContext.put("graph", oldGraph); - } - - }); - - return null; - - } - - }; - } - - public static String getURI(ReadGraph graph, Variable variable) throws DatabaseException { - return variable.getURI(graph); - } - - public static String propertyDisplayValue(ReadGraph graph, Variable variable, String property) throws DatabaseException { - Variable var = variable.getProperty(graph, property); - Variable var2 = var.getProperty(graph, Variables.DISPLAY_VALUE); - return var2.getValue(graph); - } - - public static AbstractEventHandler propertyValueSetter(ReadGraph graph, Variable variable, String property) throws DatabaseException { - String uri = variable.getURI(graph); - return new ValueSetter(uri, property); - } - - public static String propertyGetter(ReadGraph graph, Variable variable) throws DatabaseException { - String value = variable.getPossiblePropertyValue(graph, SCL_VALUE_PROPERTY); - return value; - } - - static class ValueSetter extends WriteEventHandler { - - private String varUri; - private String property; - - public ValueSetter(String varUri, String property) { - this.varUri = varUri; - this.property = property; - } - - @Override - protected CommandResult handle(WriteGraph graph, CommandContext parameters) throws DatabaseException { - Variable variable = Variables.getVariable(graph, varUri); - Variable var = variable.getPossibleProperty(graph, property); - Variable var2 = var.getPossibleProperty(graph, Variables.DISPLAY_VALUE); - var2.setValue(graph, parameters.getString("text"), Bindings.STRING); - return null; - } - }; - - @SuppressWarnings("unchecked") - public static List decodeWSES(String key) { - return (List)SWTViews.decode(key); - } - - public static Resource wseResource(ReadGraph graph, WorkbenchSelectionElement wse) throws DatabaseException { - return WorkbenchSelectionUtils.getPossibleResource(wse); - } - -} +package org.simantics.document.swt.core.scl; + +import java.util.List; + +import org.simantics.databoard.Bindings; +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.WriteGraph; +import org.simantics.db.common.request.WriteRequest; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.layer0.variable.Variable; +import org.simantics.db.layer0.variable.Variables; +import org.simantics.document.server.handler.AbstractEventHandler; +import org.simantics.document.server.handler.EventHandler; +import org.simantics.document.server.handler.WriteEventHandler; +import org.simantics.document.server.io.CommandContext; +import org.simantics.document.server.io.CommandResult; +import org.simantics.document.server.serverResponse.ServerResponse; +import org.simantics.document.swt.core.SWTViews; +import org.simantics.scl.runtime.SCLContext; +import org.simantics.scl.runtime.function.Function1; +import org.simantics.scl.runtime.reporting.SCLReportingHandler; +import org.simantics.scl.runtime.tuple.Tuple0; +import org.simantics.ui.selection.WorkbenchSelectionElement; +import org.simantics.ui.selection.WorkbenchSelectionUtils; + +public class SCL { + + public static final String SCL_VALUE_PROPERTY = "sclValueProperty"; + + public static EventHandler eventHandler(final Function1 fn) { + return new EventHandler() { + + @Override + protected ServerResponse handle(ReadGraph graph, CommandContext parameters) throws DatabaseException { + + final SCLReportingHandler printer = (SCLReportingHandler)SCLContext.getCurrent().get(SCLReportingHandler.REPORTING_HANDLER); + graph.async(new WriteRequest() { + + @Override + public void perform(WriteGraph graph) throws DatabaseException { + SCLContext sclContext = SCLContext.getCurrent(); + Object oldPrinter = sclContext.put(SCLReportingHandler.REPORTING_HANDLER, printer); + Object oldGraph = sclContext.put("graph", graph); + try { + fn.apply(Tuple0.INSTANCE); + } finally { + sclContext.put(SCLReportingHandler.REPORTING_HANDLER, oldPrinter); + sclContext.put("graph", oldGraph); + } + } + + }); + + return null; + + } + + }; + } + + public static String getURI(ReadGraph graph, Variable variable) throws DatabaseException { + return variable.getURI(graph); + } + + public static String propertyDisplayValue(ReadGraph graph, Variable variable, String property) throws DatabaseException { + Variable var = variable.getProperty(graph, property); + Variable var2 = var.getProperty(graph, Variables.DISPLAY_VALUE); + return var2.getValue(graph); + } + + public static AbstractEventHandler propertyValueSetter(ReadGraph graph, Variable variable, String property) throws DatabaseException { + String uri = variable.getURI(graph); + return new ValueSetter(uri, property); + } + + public static String propertyGetter(ReadGraph graph, Variable variable) throws DatabaseException { + String value = variable.getPossiblePropertyValue(graph, SCL_VALUE_PROPERTY); + return value; + } + + static class ValueSetter extends WriteEventHandler { + + private String varUri; + private String property; + + public ValueSetter(String varUri, String property) { + this.varUri = varUri; + this.property = property; + } + + @Override + protected CommandResult handle(WriteGraph graph, CommandContext parameters) throws DatabaseException { + Variable variable = Variables.getVariable(graph, varUri); + Variable var = variable.getPossibleProperty(graph, property); + Variable var2 = var.getPossibleProperty(graph, Variables.DISPLAY_VALUE); + var2.setValue(graph, parameters.getString("text"), Bindings.STRING); + return null; + } + }; + + @SuppressWarnings("unchecked") + public static List decodeWSES(String key) { + return (List)SWTViews.decode(key); + } + + public static Resource wseResource(ReadGraph graph, WorkbenchSelectionElement wse) throws DatabaseException { + return WorkbenchSelectionUtils.getPossibleResource(wse); + } + +}