From 25b6c25959c1fb3c60bb41cd0e1f0808e7fc3769 Mon Sep 17 00:00:00 2001 From: Tuukka Lehtonen Date: Mon, 29 Aug 2016 13:25:38 +0300 Subject: [PATCH] Sync git svn branch with SVN repository r33153. refs #6475 --- .../org.simantics.databoard/build.properties | 2 +- .../org.simantics.desktop.product/src/.keep | 0 .../src/.keep | 0 .../build.properties | 2 +- .../graph.tg | Bin 16904 -> 16620 bytes .../graph/DocumentUI.pgraph | 99 +++++--------- .../document/ui/DocumentUIResource.java | 6 + .../simantics/document/ui/DocumentView.java | 35 +++++ .../simantics/document/ui/function/All.java | 79 ++++++++++- .../simantics/document/DocumentDialect.java | 126 +++++++++++------- .../org/simantics/document/function/All.java | 1 - .../help/core/SimanticsTocProvider.java | 2 +- .../org.simantics.history/build.properties | 2 +- .../ComponentTypeScriptDocumentProvider.java | 13 +- .../ComponentTypeViewer.java | 14 +- .../PGraphEditorDocumentProvider.java | 34 +---- .../SCLModuleEditorDocumentProvider.java | 12 +- .../SCLQueryEditorDocumentProvider.java | 5 - .../DiagramViewerSelectionProvider.java | 16 ++- .../scl/GraphModuleSourceRepository.java | 11 +- .../org.simantics.scl.data/build.properties | 3 +- .../internal/registry/Namespace.java | 6 +- bundles/org.simantics.scl.ui/plugin.xml | 4 - .../spreadsheet/graph/CellValueVisitor.java | 3 +- .../simantics/spreadsheet/graph/GraphUI.java | 8 +- .../spreadsheet/graph/SpreadsheetBook.java | 10 ++ .../spreadsheet/graph/SpreadsheetCell.java | 10 +- .../SpreadsheetEvaluationEnvironment.java | 2 - .../spreadsheet/ui/SpreadsheetModel.java | 4 + .../structural2/utils/StructuralUtils.java | 15 ++- .../build.properties | 2 +- bundles/org.simantics.views.ontology/graph.tg | Bin 33653 -> 37985 bytes .../graph/Views.pgraph | 39 ++++++ .../views/ontology/ViewsResources.java | 87 ++++++++++++ .../views/swt/client/base/SWTViewUtils.java | 49 ++++++- .../swt/client/base/SingleSWTViewNode.java | 8 +- .../views/swt/client/impl/SWTBrowser.java | 22 ++- .../views/swt/client/impl/SWTComposite.java | 6 +- .../views/swt/client/impl/SWTExplorer.java | 6 +- .../views/swt/client/impl/SWTSashForm.java | 6 +- .../swt/client/impl/SWTScrolledComposite.java | 6 +- .../views/swt/client/impl/SWTTabFolder.java | 6 +- .../src/org/simantics/views/All.java | 14 +- .../src/org/simantics/views/ViewUtils.java | 83 ++++++++++-- bundles/org.simantics/build.properties | 1 - bundles/pom.xml | 28 +++- bundles/winterwell.markdown/build.properties | 2 - .../build.properties | 2 +- .../org.simantics.rcp.feature/feature.xml | 9 +- features/pom.xml | 84 +++++++++++- .../org.simantics.sdk.build.p2.site/README.md | 1 + .../org.simantics.sdk.build.p2.site/pom.xml | 50 ++++++- ...imantics.sdk.build.targetdefinition.target | 34 ++--- .../org.simantics.sdk.repository/category.xml | 2 +- releng/org.simantics.sdk.repository/pom.xml | 4 +- .../org.simantics.tycho.configuration/pom.xml | 7 +- 56 files changed, 812 insertions(+), 270 deletions(-) create mode 100644 bundles/org.simantics.desktop.product/src/.keep create mode 100644 bundles/org.simantics.desktop.ui.ontology/src/.keep create mode 100644 releng/org.simantics.sdk.build.p2.site/README.md diff --git a/bundles/org.simantics.databoard/build.properties b/bundles/org.simantics.databoard/build.properties index 46daf3633..8a9330607 100644 --- a/bundles/org.simantics.databoard/build.properties +++ b/bundles/org.simantics.databoard/build.properties @@ -11,4 +11,4 @@ src.includes = src/org/simantics/databoard/baseUnits.txt,\ src/org/simantics/databoard/standardTypes.dbt,\ examples/,\ testcases/,\ - doc-isv/ + src-isv/ diff --git a/bundles/org.simantics.desktop.product/src/.keep b/bundles/org.simantics.desktop.product/src/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/bundles/org.simantics.desktop.ui.ontology/src/.keep b/bundles/org.simantics.desktop.ui.ontology/src/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/bundles/org.simantics.document.server/build.properties b/bundles/org.simantics.document.server/build.properties index 34f26f886..5a15a6576 100644 --- a/bundles/org.simantics.document.server/build.properties +++ b/bundles/org.simantics.document.server/build.properties @@ -4,6 +4,6 @@ bin.includes = META-INF/,\ .,\ plugin.xml,\ webdefault.xml,\ - scl/,\ + scl/ src.includes = scl/ diff --git a/bundles/org.simantics.document.ui.ontology/graph.tg b/bundles/org.simantics.document.ui.ontology/graph.tg index 0501da80502987c0dafd4f487d754a5686c2a3cf..a32cf12e7b099dd425525150c5fb82651e506854 100644 GIT binary patch literal 16620 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 RNAcYc#ar@K^f#^MzX1XUL*M`a literal 16904 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 Boolean" UI.WikitextContribution.View UI.NoDocument : VIEWS.Composite diff --git a/bundles/org.simantics.document.ui.ontology/src/org/simantics/document/ui/DocumentUIResource.java b/bundles/org.simantics.document.ui.ontology/src/org/simantics/document/ui/DocumentUIResource.java index 7c5b0f455..82375ae2a 100644 --- a/bundles/org.simantics.document.ui.ontology/src/org/simantics/document/ui/DocumentUIResource.java +++ b/bundles/org.simantics.document.ui.ontology/src/org/simantics/document/ui/DocumentUIResource.java @@ -34,9 +34,11 @@ public class DocumentUIResource { public final Resource Functions_horizontalRulerModifier; public final Resource Functions_imageModifier; public final Resource Functions_indentModifier; + public final Resource Functions_internalLinkModifier; public final Resource Functions_isWikitext; public final Resource Functions_italicModifier; public final Resource Functions_linkModifier; + public final Resource Functions_locationChanging; public final Resource Functions_noDocumentText; public final Resource Functions_numberedListModifier; public final Resource Functions_onCreateDocumentButton; @@ -83,9 +85,11 @@ public class DocumentUIResource { public static final String Functions_horizontalRulerModifier = "http://www.simantics.org/DocumentUI-1.1/Functions/horizontalRulerModifier"; public static final String Functions_imageModifier = "http://www.simantics.org/DocumentUI-1.1/Functions/imageModifier"; public static final String Functions_indentModifier = "http://www.simantics.org/DocumentUI-1.1/Functions/indentModifier"; + public static final String Functions_internalLinkModifier = "http://www.simantics.org/DocumentUI-1.1/Functions/internalLinkModifier"; public static final String Functions_isWikitext = "http://www.simantics.org/DocumentUI-1.1/Functions/isWikitext"; public static final String Functions_italicModifier = "http://www.simantics.org/DocumentUI-1.1/Functions/italicModifier"; public static final String Functions_linkModifier = "http://www.simantics.org/DocumentUI-1.1/Functions/linkModifier"; + public static final String Functions_locationChanging = "http://www.simantics.org/DocumentUI-1.1/Functions/locationChanging"; public static final String Functions_noDocumentText = "http://www.simantics.org/DocumentUI-1.1/Functions/noDocumentText"; public static final String Functions_numberedListModifier = "http://www.simantics.org/DocumentUI-1.1/Functions/numberedListModifier"; public static final String Functions_onCreateDocumentButton = "http://www.simantics.org/DocumentUI-1.1/Functions/onCreateDocumentButton"; @@ -142,9 +146,11 @@ public class DocumentUIResource { Functions_horizontalRulerModifier = getResourceOrNull(graph, URIs.Functions_horizontalRulerModifier); Functions_imageModifier = getResourceOrNull(graph, URIs.Functions_imageModifier); Functions_indentModifier = getResourceOrNull(graph, URIs.Functions_indentModifier); + Functions_internalLinkModifier = getResourceOrNull(graph, URIs.Functions_internalLinkModifier); Functions_isWikitext = getResourceOrNull(graph, URIs.Functions_isWikitext); Functions_italicModifier = getResourceOrNull(graph, URIs.Functions_italicModifier); Functions_linkModifier = getResourceOrNull(graph, URIs.Functions_linkModifier); + Functions_locationChanging = getResourceOrNull(graph, URIs.Functions_locationChanging); Functions_noDocumentText = getResourceOrNull(graph, URIs.Functions_noDocumentText); Functions_numberedListModifier = getResourceOrNull(graph, URIs.Functions_numberedListModifier); Functions_onCreateDocumentButton = getResourceOrNull(graph, URIs.Functions_onCreateDocumentButton); diff --git a/bundles/org.simantics.document.ui/src/org/simantics/document/ui/DocumentView.java b/bundles/org.simantics.document.ui/src/org/simantics/document/ui/DocumentView.java index ccbfbd508..025b88b08 100644 --- a/bundles/org.simantics.document.ui/src/org/simantics/document/ui/DocumentView.java +++ b/bundles/org.simantics.document.ui/src/org/simantics/document/ui/DocumentView.java @@ -11,7 +11,12 @@ *******************************************************************************/ package org.simantics.document.ui; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.IWorkbenchPart; import org.simantics.ui.workbench.IPropertyPage; +import org.simantics.utils.ui.BundleUtils; import org.simantics.views.swt.ModelledView; /** @@ -19,6 +24,8 @@ import org.simantics.views.swt.ModelledView; */ public class DocumentView extends ModelledView { + private boolean pinSelection = false; + @Override protected String configurationURI() { return DocumentUIResource.URIs.View; @@ -29,4 +36,32 @@ public class DocumentView extends ModelledView { return null; } + @Override + protected void inputChanged(IWorkbenchPart provider, Object input) { + if (pinSelection) + return; + super.inputChanged(provider, input); + } + + @Override + public void createPartControl(Composite parent) { + super.createPartControl(parent); + getViewSite().getActionBars().getToolBarManager().add(new PinSelection()); + } + + private class PinSelection extends Action { + public PinSelection() { + super("Pin Selection", IAction.AS_CHECK_BOX); + setImageDescriptor( + BundleUtils.getImageDescriptorFromPlugin( + "org.eclipse.ui", + "icons/full/etool16/pin_editor.png")); + } + + @Override + public void run() { + pinSelection = isChecked(); + } + } + } diff --git a/bundles/org.simantics.document.ui/src/org/simantics/document/ui/function/All.java b/bundles/org.simantics.document.ui/src/org/simantics/document/ui/function/All.java index 20b8d3d0e..e5f8b4392 100644 --- a/bundles/org.simantics.document.ui/src/org/simantics/document/ui/function/All.java +++ b/bundles/org.simantics.document.ui/src/org/simantics/document/ui/function/All.java @@ -13,8 +13,11 @@ package org.simantics.document.ui.function; import java.util.TreeMap; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.swt.browser.LocationEvent; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.RGB; @@ -30,19 +33,26 @@ import org.simantics.browsing.ui.NodeContext; import org.simantics.databoard.Bindings; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; +import org.simantics.db.Session; import org.simantics.db.WriteGraph; import org.simantics.db.common.request.ReadRequest; +import org.simantics.db.common.request.UnaryRead; import org.simantics.db.common.request.WriteRequest; import org.simantics.db.common.utils.Logger; import org.simantics.db.common.utils.NameUtils; +import org.simantics.db.common.utils.RequestUtil; import org.simantics.db.exception.DatabaseException; import org.simantics.db.layer0.adapter.Instances; import org.simantics.db.layer0.request.PossibleModel; +import org.simantics.db.layer0.request.PossibleResource; import org.simantics.db.layer0.util.RemoverUtil; import org.simantics.db.layer0.variable.RVI; import org.simantics.db.layer0.variable.Variable; +import org.simantics.db.layer0.variable.Variables; +import org.simantics.document.DocumentDialect; import org.simantics.document.DocumentResource; import org.simantics.document.DocumentUtils; +import org.simantics.document.ui.Activator; import org.simantics.document.ui.CSSEditor; import org.simantics.layer0.Layer0; import org.simantics.scenegraph.INode; @@ -50,9 +60,12 @@ import org.simantics.scenegraph.loader.ScenegraphLoaderProcess; import org.simantics.scenegraph.loader.ScenegraphLoaderUtils; import org.simantics.scenegraph.loader.ScenegraphLoaderUtils.ScenegraphPropertyReference; import org.simantics.scl.reflection.annotations.SCLValue; +import org.simantics.scl.runtime.function.Function1; import org.simantics.scl.runtime.function.FunctionImpl1; import org.simantics.scl.runtime.function.FunctionImpl3; +import org.simantics.ui.SimanticsUI; import org.simantics.ui.workbench.ResourceEditorInput2; +import org.simantics.ui.workbench.action.DefaultActions; import org.simantics.utils.threads.SWTThread; import org.simantics.utils.ui.workbench.WorkbenchUtils; @@ -546,7 +559,7 @@ public class All { @Override void perform(String before, String selected, String after, Point selection) { - textReference.setValue(before + "[[Image:root://Library/image.png|100px]]" + selected + after); + textReference.setValue(before + "[[Image:root://Library/image.png|100px]]" + "\r\n" + selected + after); } @@ -683,6 +696,18 @@ public class All { } + @SCLValue(type = "ReadGraph -> Resource -> Variable -> b") + public static Object internalLinkModifier(ReadGraph graph, Resource resource, final Variable context) throws DatabaseException { + return new WikiButtonModifier(graph, context) { + @Override + void perform(String before, String selected, String after, Point selection) { + textReference.setValue(before + + "[[Media:root://Documents/Document.pdf|Link to a file within the model]]\r\n" + selected + after); + + } + }; + } + @SCLValue(type = "ReadGraph -> Resource -> Variable -> b") public static Object linkModifier(ReadGraph graph, Resource resource, final Variable context) throws DatabaseException { @@ -691,8 +716,8 @@ public class All { @Override void perform(String before, String selected, String after, Point selection) { - textReference.setValue(before + "\r\n" + - "[http://www.simantics.org External Website Link]\r\n" + selected + after); + textReference.setValue(before + + "[http://www.simantics.org External Website Link]\r\n" + selected + after); } @@ -815,5 +840,51 @@ public class All { return true; } - + + private static class ResolveURI extends UnaryRead { + public ResolveURI(String uri) { + super(uri); + } + @Override + public Object perform(ReadGraph graph) throws DatabaseException { + Object result = graph.syncRequest(new PossibleResource(parameter)); + if (result == null) + result = Variables.getPossibleVariable(graph, parameter); + return result; + } + } + + private static final Function1 PERFORM_DEFAULT_ACTION_FOR_URI_RESOURCE = new Function1() { + @Override + public Boolean apply(Object p0) { + LocationEvent le = (LocationEvent) p0; + if (le.location.startsWith(DocumentDialect.SIMANTICS_INTERNAL_URI_PREFIX)) { + // This is not a valid URL anyway so deny relocation. + le.doit = false; + + // Try to execute default action for the resource or variable + // that the URI represents. + String uri = le.location.substring(DocumentDialect.SIMANTICS_INTERNAL_URI_PREFIX.length()); + try { + Session s = Simantics.getSession(); + Object input = RequestUtil.trySyncRequest(s, + SimanticsUI.UI_THREAD_REQUEST_START_TIMEOUT, + SimanticsUI.UI_THREAD_REQUEST_EXECUTION_TIMEOUT, + new ResolveURI(uri)); + if (input != null) { + DefaultActions.asyncPerformDefaultAction(s, input, false, false, false); + } + } catch (DatabaseException | InterruptedException e) { + Activator.getDefault().getLog().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Failed to resolve URI to a database resource or variable: " + uri, e)); + } + } + return true; + } + }; + + @SCLValue(type = "ReadGraph -> Resource -> Variable -> b") + public static Function1 locationChanging(ReadGraph graph, Resource variable, Variable context) throws DatabaseException { + return PERFORM_DEFAULT_ACTION_FOR_URI_RESOURCE; + } + } diff --git a/bundles/org.simantics.document/src/org/simantics/document/DocumentDialect.java b/bundles/org.simantics.document/src/org/simantics/document/DocumentDialect.java index 9fc8e98a7..7cb6bbee0 100644 --- a/bundles/org.simantics.document/src/org/simantics/document/DocumentDialect.java +++ b/bundles/org.simantics.document/src/org/simantics/document/DocumentDialect.java @@ -11,9 +11,10 @@ *******************************************************************************/ package org.simantics.document; -import java.io.File; import java.io.IOException; import java.math.BigInteger; +import java.nio.file.Files; +import java.nio.file.Path; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.regex.Matcher; @@ -26,78 +27,109 @@ import org.simantics.db.Resource; import org.simantics.db.common.request.PossibleIndexRoot; import org.simantics.db.exception.DatabaseException; import org.simantics.image2.ontology.ImageResource; -import org.simantics.utils.FileUtils; - public class DocumentDialect { - - final Pattern imagePattern = Pattern.compile("\\[\\[Image(?::([^\\]]+))?\\]\\]"); final static public DocumentDialect INSTANCE = new DocumentDialect(); - public String transform(ReadGraph graph, Resource res, String options) { - + public static final String SIMANTICS_INTERNAL_URI_PREFIX = "http://simantics-internal/"; + + private static final String HTTP = "http://"; + private static final String ROOT = "root:/"; + private static final String IMAGE = "image"; + private static final String MEDIA = "media"; + + final Pattern imageOrMediaPattern = Pattern.compile("\\[\\[([Ii]mage|[Mm]edia)(?::([^\\]]+))?\\]\\]"); + + private static String digest(byte[] bytes) throws NoSuchAlgorithmException { + MessageDigest md = MessageDigest.getInstance("MD5"); + md.update(bytes); + BigInteger number = new BigInteger(1, md.digest()); + return number.toString(16); + } + + private static String imageExtension(ReadGraph graph, Resource image) throws DatabaseException { + ImageResource IMAGE = ImageResource.getInstance(graph); + if (graph.isInstanceOf(image, IMAGE.PngImage)) + return ".png"; + else if (graph.isInstanceOf(image, IMAGE.JpegImage)) + return ".jpg"; + return null; + } + + public String transform(ReadGraph graph, Resource res, String type, String options) { try { - String[] parts = options.split("\\|"); - if(parts.length > 0) { - + if (parts.length > 0) { String uri = parts[0]; + Resource indexRoot = graph.syncRequest(new PossibleIndexRoot(res)); - if(indexRoot == null) return null; + if (indexRoot == null) return null; String rootURI = graph.getURI(indexRoot); - uri = uri.replace("root:/", rootURI); - // (Apros #12268) For easier image linking, allow users to - // write white space as ' ' in the wiki-style image links. + + uri = uri.replace(ROOT, rootURI); + + // (Apros #12268) For more user-friendly linking, allow users to + // write white space as ' ' in the wiki-style image links instead + // of having to write %20. uri = uri.replace(" ", "%20"); - Resource image = graph.getPossibleResource(uri); - if(image == null) return null; - byte[] bytes = graph.getValue(image, Bindings.BYTE_ARRAY); - MessageDigest md; - md = MessageDigest.getInstance("MD5"); - md.update(bytes); - BigInteger number = new BigInteger(1, md.digest()); - String digest = number.toString(16); - File dir = Simantics.getTemporaryDirectory("documentImages"); - dir.mkdirs(); - - ImageResource IMAGE = ImageResource.getInstance(graph); - - String extension; - if(graph.isInstanceOf(image, IMAGE.PngImage)) extension = ".png"; - else if(graph.isInstanceOf(image, IMAGE.JpegImage)) extension = ".jpg"; - else return null; - - File f = new File(dir, digest + extension); - if(!f.exists()) - FileUtils.writeFile(f, bytes); - StringBuilder sb = new StringBuilder(); - sb.append("[[File: " + f.toURI()); - for(int i=1;i() { @Override diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/PGraphEditorDocumentProvider.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/PGraphEditorDocumentProvider.java index e59d3da0a..2bb8fbf76 100644 --- a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/PGraphEditorDocumentProvider.java +++ b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/PGraphEditorDocumentProvider.java @@ -2,7 +2,6 @@ package org.simantics.modeling.ui.componentTypeEditor; import java.io.PrintWriter; import java.io.StringWriter; -import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -28,13 +27,7 @@ import org.simantics.db.exception.DatabaseException; import org.simantics.db.layer0.util.Layer0Utils; import org.simantics.layer0.Layer0; import org.simantics.scl.compiler.errors.CompilationError; -import org.simantics.scl.compiler.errors.Failable; -import org.simantics.scl.compiler.errors.Failure; import org.simantics.scl.compiler.errors.Locations; -import org.simantics.scl.compiler.module.Module; -import org.simantics.scl.compiler.module.repository.UpdateListener; -import org.simantics.scl.osgi.SCLOsgi; -import org.simantics.scl.runtime.SCLContext; import org.simantics.ui.workbench.ResourceEditorInput; import org.simantics.utils.logging.TimeLogger; @@ -69,31 +62,11 @@ public class PGraphEditorDocumentProvider extends AbstractDocumentProvider { } } - // While this editor is active we do not want that this listener gets collected - private UpdateListener listener = new UpdateListener() { - @Override - public void notifyAboutUpdate() { - updateAnnotations(); - } - }; - protected void updateAnnotations() { Simantics.getSession().asyncRequest(new ReadRequest() { @Override public void run(ReadGraph graph) throws DatabaseException { -// String moduleName = graph.getURI(resource); -// SCLContext context = SCLContext.getCurrent(); -// context.put("graph", graph); -// Failable result = SCLOsgi.MODULE_REPOSITORY.getModule(moduleName, listener); -// -// if(result instanceof Failure) { -// Failure failure = (Failure)result; -// setAnnotations(Arrays.asList(failure.errors)); -// } -// else { -// setAnnotations(Collections.emptyList()); -// } - setAnnotations(Collections.emptyList()); + setAnnotations(Collections.emptyList()); } }); } @@ -155,9 +128,4 @@ public class PGraphEditorDocumentProvider extends AbstractDocumentProvider { return errorHappened; } - @Override - public boolean canSaveDocument(Object element) { - return !errorHappened && !getDocument(element).get().equals(currentText); - } - } diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/SCLModuleEditorDocumentProvider.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/SCLModuleEditorDocumentProvider.java index 35265ce50..c634f89b3 100644 --- a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/SCLModuleEditorDocumentProvider.java +++ b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/SCLModuleEditorDocumentProvider.java @@ -36,6 +36,7 @@ import org.simantics.scl.compiler.module.repository.UpdateListener; import org.simantics.scl.osgi.SCLOsgi; import org.simantics.scl.runtime.SCLContext; import org.simantics.scl.ui.editor.SCLSourceViewerConfigurationNew; +import org.simantics.structural2.utils.StructuralUtils; import org.simantics.ui.workbench.ResourceEditorInput; import org.simantics.utils.logging.TimeLogger; @@ -43,6 +44,7 @@ public class SCLModuleEditorDocumentProvider extends AbstractDocumentProvider { protected Resource resource; protected String currentText; + protected boolean immutable; protected boolean errorHappened; protected AnnotationModel annotationModel = new AnnotationModel(); @@ -62,6 +64,7 @@ public class SCLModuleEditorDocumentProvider extends AbstractDocumentProvider { public Document perform(ReadGraph graph) throws DatabaseException { Layer0 L0 = Layer0.getInstance(graph); currentText = graph.getRelatedValue(resource, L0.SCLModule_definition, Bindings.STRING); + immutable = StructuralUtils.isImmutable(graph, resource); errorHappened = false; return new Document(currentText != null ? currentText : ""); } @@ -156,17 +159,12 @@ public class SCLModuleEditorDocumentProvider extends AbstractDocumentProvider { @Override public boolean isModifiable(Object element) { - return !errorHappened; + return !errorHappened && !immutable; } @Override public boolean isReadOnly(Object element) { - return errorHappened; - } - - @Override - public boolean canSaveDocument(Object element) { - return !errorHappened && !getDocument(element).get().equals(currentText); + return errorHappened || immutable; } } diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/SCLQueryEditorDocumentProvider.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/SCLQueryEditorDocumentProvider.java index 11dec0fcf..5064ba9e6 100644 --- a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/SCLQueryEditorDocumentProvider.java +++ b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/SCLQueryEditorDocumentProvider.java @@ -214,9 +214,4 @@ public class SCLQueryEditorDocumentProvider extends AbstractDocumentProvider { return errorHappened; } - @Override - public boolean canSaveDocument(Object element) { - return !errorHappened && !getDocument(element).get().equals(currentText); - } - } diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/DiagramViewerSelectionProvider.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/DiagramViewerSelectionProvider.java index c3070d9cc..4317f5979 100644 --- a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/DiagramViewerSelectionProvider.java +++ b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/DiagramViewerSelectionProvider.java @@ -62,6 +62,7 @@ public class DiagramViewerSelectionProvider extends WorkbenchSelectionProvider { public Variable perform(ReadGraph graph) throws DatabaseException { DiagramResource DIA = DiagramResource.getInstance(graph); + ModelingResources MOD = ModelingResources.getInstance(graph); String uri = graph.getPossibleRelatedValue(resource, DIA.RuntimeDiagram_HasVariable); if (uri == null) @@ -71,9 +72,20 @@ public class DiagramViewerSelectionProvider extends WorkbenchSelectionProvider { if (var == null) return null; - Resource config = graph.getPossibleObject(resource2, ModelingResources.getInstance(graph).ElementToComponent); - if (config == null) + Resource config = graph.getPossibleObject(resource2, MOD.ElementToComponent); + if (config == null) { + // Apros #9646: if resource2 is the diagram + // itself, return the diagram composite variable + // since it is generally more useful than the + // variable to the diagram. + Resource composite = graph.getPossibleObject(resource2, MOD.DiagramToComposite); + if (composite != null && composite.equals(var.getPossibleRepresents(graph))) { + //return Variables.getPossibleVariable(graph, resource2); + return var; + } + return null; + } return var.browsePossible(graph, config); diff --git a/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java b/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java index a61563411..3edc7bfea 100644 --- a/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java +++ b/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java @@ -19,6 +19,7 @@ import org.simantics.scl.compiler.source.ModuleSource; import org.simantics.scl.compiler.source.StringModuleSource; import org.simantics.scl.compiler.source.repository.ModuleSourceRepository; import org.simantics.scl.runtime.SCLContext; +import org.simantics.structural2.utils.StructuralUtils; import org.simantics.scl.runtime.tuple.Tuple0; import gnu.trove.procedure.TObjectProcedure; @@ -95,13 +96,16 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository { public static class GraphModuleSource extends StringModuleSource { - public GraphModuleSource(String moduleName, ClassLoader classLoader, String moduleText) { + private final boolean immutable; + + public GraphModuleSource(String moduleName, ClassLoader classLoader, String moduleText, boolean immutable) { super(moduleName, classLoader, moduleText); + this.immutable = immutable; } @Override public boolean isUpdateable() { - return true; + return !immutable; } @Override @@ -128,7 +132,8 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository { if(!graph.isInstanceOf(moduleResource, L0.SCLModule)) return null; String text = graph.getRelatedValue(moduleResource, L0.SCLModule_definition); - return new GraphModuleSource(parameter, getClass().getClassLoader(), text); + boolean immutable = StructuralUtils.isImmutable(graph, moduleResource); + return new GraphModuleSource(parameter, getClass().getClassLoader(), text, immutable); } } diff --git a/bundles/org.simantics.scl.data/build.properties b/bundles/org.simantics.scl.data/build.properties index 507256bd7..0a709036f 100644 --- a/bundles/org.simantics.scl.data/build.properties +++ b/bundles/org.simantics.scl.data/build.properties @@ -3,5 +3,4 @@ output.. = bin/ bin.includes = META-INF/,\ .,\ scl/ -src.includes = scl/,\ - jdom-2.0.6.jar +src.includes = scl/ diff --git a/bundles/org.simantics.scl.reflection/src/org/simantics/scl/reflection/internal/registry/Namespace.java b/bundles/org.simantics.scl.reflection/src/org/simantics/scl/reflection/internal/registry/Namespace.java index 73be05f6c..45db13070 100755 --- a/bundles/org.simantics.scl.reflection/src/org/simantics/scl/reflection/internal/registry/Namespace.java +++ b/bundles/org.simantics.scl.reflection/src/org/simantics/scl/reflection/internal/registry/Namespace.java @@ -181,7 +181,7 @@ public class Namespace { } else { Activator.logError("Method " + method.getName() + " in class " + - clazz.getCanonicalName() + " has incompantible SCL type in the SCLValue annotation." + clazz.getCanonicalName() + " has incompatible SCL type in the SCLValue annotation." ); ReflectionUtils.isCompatible(scheme, type, method); } @@ -215,7 +215,7 @@ public class Namespace { } else { Activator.logError("Constructor of " + - clazz.getCanonicalName() + " has incompantible SCL type in the SCLValue annotation." + clazz.getCanonicalName() + " has incompatible SCL type in the SCLValue annotation." ); } } catch (TypeNotFoundException e) { @@ -264,7 +264,7 @@ public class Namespace { } else { Activator.logError("Field " + field.getName() + " in class " + - clazz.getCanonicalName() + " has incompantible SCL type in the SCLValue annotation." + clazz.getCanonicalName() + " has incompatible SCL type in the SCLValue annotation." ); } } catch (TypeNotFoundException e) { diff --git a/bundles/org.simantics.scl.ui/plugin.xml b/bundles/org.simantics.scl.ui/plugin.xml index 3a852b367..2a2f3d934 100755 --- a/bundles/org.simantics.scl.ui/plugin.xml +++ b/bundles/org.simantics.scl.ui/plugin.xml @@ -75,10 +75,6 @@ style="push"> - - diff --git a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/CellValueVisitor.java b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/CellValueVisitor.java index b0abb61b1..385af9938 100644 --- a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/CellValueVisitor.java +++ b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/CellValueVisitor.java @@ -434,7 +434,8 @@ public class CellValueVisitor implements AstValueVisitor { @Override public Object visit(AstIdentifier id) { - throw new IllegalStateException(); + return FormulaError2.NAME.getString(); + //throw new IllegalStateException(); } @Override diff --git a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/GraphUI.java b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/GraphUI.java index 80e9656e3..9a3e87326 100644 --- a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/GraphUI.java +++ b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/GraphUI.java @@ -495,7 +495,13 @@ public class GraphUI implements Adaptable, ListenerSupport, AsyncListenerSupport public void edit(Transaction transaction, String location, String property, T value, Binding binding, Consumer callback) { if (ClientModel.ITERATION_ENABLED.equals(location)) { - + Simantics.getSession().asyncRequest(new ReadRequest() { + @Override + public void run(ReadGraph graph) throws DatabaseException { + getBook(graph).setIterationEnabled((boolean)value); + } + }); + return; } if (ClientModel.MODE.equals(location)) { diff --git a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetBook.java b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetBook.java index caf3cd984..e292fd918 100644 --- a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetBook.java +++ b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetBook.java @@ -57,6 +57,8 @@ public class SpreadsheetBook implements SpreadsheetElement children = new HashMap<>(); + private boolean iterationEnabled; + public int getNewId(SpreadsheetElement element) { int result = idCounter++; children.put(result, element); @@ -401,4 +403,12 @@ public class SpreadsheetBook implements SpreadsheetElement> functions = new HashMap<>(); public int iterationLimit = 100; - public boolean iterationEnabled = false; - public SpreadsheetEvaluationEnvironment(SpreadsheetBook book) { this.book = book; diff --git a/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/SpreadsheetModel.java b/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/SpreadsheetModel.java index 9b4ef34e3..d534c9488 100644 --- a/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/SpreadsheetModel.java +++ b/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/SpreadsheetModel.java @@ -753,6 +753,10 @@ public class SpreadsheetModel { @Override public void actionPerformed(ActionEvent e) { System.out.println("state is " + iterationEnabled.isSelected()); + CellEditor editor = serverInterface.getAdapter(CellEditor.class); + if(editor != null) { + editor.edit(null, ClientModel.ITERATION_ENABLED, ClientModel.ITERATION_ENABLED, iterationEnabled.isSelected(), null, null); + } } }); diff --git a/bundles/org.simantics.structural2/src/org/simantics/structural2/utils/StructuralUtils.java b/bundles/org.simantics.structural2/src/org/simantics/structural2/utils/StructuralUtils.java index 0b0214e61..d029f3ae7 100644 --- a/bundles/org.simantics.structural2/src/org/simantics/structural2/utils/StructuralUtils.java +++ b/bundles/org.simantics.structural2/src/org/simantics/structural2/utils/StructuralUtils.java @@ -16,6 +16,7 @@ import org.simantics.db.Statement; import org.simantics.db.WriteGraph; import org.simantics.db.common.CommentMetadata; import org.simantics.db.common.request.ObjectsWithType; +import org.simantics.db.common.request.PossibleTypedParent; import org.simantics.db.common.utils.NameUtils; import org.simantics.db.exception.DatabaseException; import org.simantics.db.layer0.exception.MissingVariableException; @@ -273,5 +274,17 @@ public class StructuralUtils { } return null; } - + + public static boolean isImmutable(ReadGraph graph, Resource r) throws DatabaseException { + StructuralResource2 STR = StructuralResource2.getInstance(graph); + Resource uc = graph.syncRequest(new PossibleTypedParent(r, STR.ComponentType)); + return graph.isImmutable(r) + // Anything under a published or locked user component is published as well + || (uc != null && (Layer0Utils.isPublished(graph, uc) + || graph.hasStatement(uc, STR.ComponentType_Locked))) + // Anything under a published container (shared library) is published as well + || Layer0Utils.isContainerPublished(graph, r) + ; + } + } diff --git a/bundles/org.simantics.utils.datastructures/build.properties b/bundles/org.simantics.utils.datastructures/build.properties index b088bf189..accbb69ba 100644 --- a/bundles/org.simantics.utils.datastructures/build.properties +++ b/bundles/org.simantics.utils.datastructures/build.properties @@ -12,4 +12,4 @@ source.. = src/ output.. = bin/ bin.includes = META-INF/,\ - . + . \ No newline at end of file diff --git a/bundles/org.simantics.views.ontology/graph.tg b/bundles/org.simantics.views.ontology/graph.tg index ea5e89791c2f201c66c2376e5bb5cf03148cb2f2..a2ec73d89334f9a5a1ca4662daae6a2fc46acf23 100644 GIT binary patch literal 37985 zcmeI52bf${`Ty^o?9TR0BeVbp1Pm>NP^E@65=ntnY0B*GWOrb9W|^5y2&gF73l;hJq~&w0;%?-2xf{Qn+*|0nx++4DK?_kQo`_srcm zw{@^y8XZcKB*l@m@jw2jwWnTg)W+)l<+-)7YO}!X&hp94aBJS~;c`CV1G)9L@8&&lQD_ugsI0B5X=)nm#(R+mM=m9U*R(Q&>_R+MI)s_Tr=HTGCSa{Lp*JjtoFfrWx!wW zFOt*A991RK@Y6f{Wuh#uG}!xZ5?xQT)Hj#In$wuoyqMX=iGHN4U~T<)Ne3jI=p^lZMz6G`60cnXdn00!mEHu7H(%YGLhH>6r z&MO`&Lld!&3U}JRO0JPS++0V8Yjv@fiF!?^TP*z;xRt7F+T6HcE&j}mTg|m(!Mdi` z&t`Wrg)+)+Gr~K?YQpGP-*BZdWX5;;C?j_o>9uS!dT5Bo;P3%U~ zCn$NqNbX?9H9Z4v>$9LTj3pGhzcTv{qq{|P+P`kdoBowM{w+rTJ?GmeYfIM0e`NOe zjP5$8>vuzCNx3?bErZS@UGqQc0&B{ts)-st9`!07iEMXUOK zm$-ixPp2}Y*sT6E$i`t0^uIg&L+&3NvDpV&rcB8 zkSrpz^kwOw&w-C0MBHTX%n z-_aTw=SfMZotv3u)nV>r1|+9#q1#s@*?sc&T7 zQqv$KA}Y#uau#BX-AR3RA1*hm#pa}%IcYDPbcArrS}Y70XE%|KF!E6&-y5+-!kzBZ zh#%3{GjEYOscKHz6S3vOy6;VICN4Mn6OEo9c}^0xJJLFHid~0tjjv)ywT^w&U}n7o z3ot(@$R_It%xW0xIqpQ=G|SF7na|8Q9B-PBs(+uE^RrXaC30%dl5(SgX`)-zlns_H z>EU3-qEH(-v|h#@y)c>CrsdLQqHA%R)|4HdE^F6~FMuN`T{cN`)>N89b4%5Jes)MX z)YD~M{ES~8(GBD=lG!@HUYBjcae{4YO7*I&d?^QVx{R}IZG{`tbQLp}boa@^Ah&D` z=)$JVU1jRY$%qQ!5ljigQJ0azX3Sn=bVrJ=6;E_{!zpY+JkrEDX456yZ@4-aCNaYd z*mQ+c;8Oxy6dqHUu_E(G_Cy9g%hsy$QFiW7sX8bhRAn!^rx9Ku!nW)Kz?YeEMZ4ME z%QorD=A5sJWWsQ*Uz$|hUDN%Bk*^x*7oD5=AaFl(zL-f;ndQYU=?)zn$qrN%JHkg6 z&*axkdZTGUAnndf)1oMQhr-7X6o8L&3KSMIVREtv zyS1EtyZJ-ro}9^2-W!wEz2VA!XIB_UzfL3M&`VZ#%$a}KqNPh0Ej+_VRHBRHIN7}xXckzaZpGi~Jx;?;>K8s+*-@AER|6((cN--b3Yjg;vQylGC=h(pN9ZW0zx`gky!vFRms}hmXm+D;*RG9t7aQf1}x; zb2`qQ##P3z|MKvTKwaMU4?p9jP=#M zM5-}MvZEgVret>N7?4s81)*thKF>~vvic;QqGCyPLojz3O^K?@05NM*(jn4uRoU3i z7T^exapUVP55Q+<_Gv|AQy|kqgc}5}u{FYJ#pq8LJwHXehC?s4Nml0~*&g?oS+~ND zlGn9jO#UD+Dw)a7lG(#M0skbT&lDF+c5y|s?(TS33wQV~kv5$vSreC+Pa3P>NusUM zwhYZQB|J*B<2OmnxyiFzTlF`1b+N|LrBj=_3*`dI8 zb!CO!*J{=Q+XSLyd6{;pwO|2u}Mzc%7;8>ar6h`$x_Hw@G7 zN*t$SUEBh{agP*!19(fM*Emkv{(&E)UytK!I8Az(3#~@8sJ<9{m>Az_7uRxmY^~uW|=k!+?{UW5v zs-NvRr~iV{AA&Sl%X6UPoc{Ahe=yQy)$i{(r@!3jUyd|c%fs@6bNbI2{eDQ3RnPK+ zbNb7SejlXCTAtK#PXAe>-wSE7>T#bU=k%8v{hmmZRll?2oceo5W=|61rlaMBB zd5Vs6`tyyx6=|~ibN+&J`VSd>3({oO&vu;CpJ((1q{&*I)NxLKZl+J3L7J@ok2}uk zKWOw%BTZKQV~%tB4;cMZNRw6nsNta{%6z&ZW9jQ%L3$*O1jfOC4*@pQL8NnVLGS@mom za8CaYqhE z=(&E9RlkMfoc_&5zZueG)pLCW=ky!{THj5OCaZq3gLC@R44;7b z>kOX=#+V9v#$RKYag4EC{1n5CZ!paBu_gySBUuFCeOUc%sZ2iH(e^aLq z{$#94s!v(|6~>?I71{cetv@*UPjUL-PhOts#s5g-k622!{$%S94*pyp$l5;SBh2}` zdA8>>jy@|)#qR|!9{eVIRzEWP-1i5^PL45la*VN)W6lqIKE_UtQ4Zmw{pVL|ap?F? zIER*kwLMrLvaJu<*GIg-T3$YDq&~C{nR7<#!?9(VW5Y80(lXoHGTJi7EWeHO+Tdg% z+IuUcWA^8Vxc3k2uOHZ#FR(9vXs?&z8i$+qn&sKH7vtJq9N%DVkHSRH+W+KNK(FWT z3|^G6j9=6(T%Y|#*80*LY4w+Dk#)Vg!pD`r2tF+Hm-P>0RIi_2h4_5KEdRWWML#!V zDc_uk4~=*>_}B1x90$%#$q(Z9(>PET;XmN_Q#d$Z82=r9KZyfn5q+K8fL47cGWWJMi{LtGn z%MRA-NnI>^eHdS#^ZGO3zd6#ENBsGSzX0CHly4k(@2q?&lH}lj8Pa8^#=$4Hm48% z_M#Msm4;!`5Vo>}9vK2MH#QpU3WVowzGi&35lU>)Dw zFOkuY;qwhy%g^-|tnFVYde-%qjC-c)Wjy1Y;LrOh+4_^MKd&)}>tn7JTAe=3A2Q~K z>czj?_;Y(_h)+XzYnbbjFGKB+4_TnKj$i0{mJ)cdhx#ptp1FVtv}iNgM&ZkHd+12cV}@K z+m<;NEpzNxW?x%=AY!(qjkE5SSyr&_@1!o4y*|XfUtoW|z`i_zeR%`>`sC*GUAVrs z7w7-4GM4uK1-J+EnREY_IKW~3e_zCBfq#y}`^ot~18aXVM%Mm1+_PSv>p9|~zqo#q zwZF(e#bN#L1gk$|Wb041{@~!xwV15_iV`S@3w*KJY&$XVc{^Z*;z4+e-R)5CG)}L(s!NLD8P9OZqKg{&ve=Au186#VN zvh@cCf8J}zT7L2mGQIfU0-lNSx2=zntv}iNgM_Kwd~>E3|C_+-&luVIldV5E z`14*!R)6x1nO^*F0INS^Wb041{@~#Mkkbc$^7WZs{I3J6KVxL;PqzNx;Lr7dtmP+v zKhul<_rU7U7}@%htv@*U|Iz7#Kl!_vUi`lUR)5CG)}L(s!NH&F8(GUwzBbc~|F^;F z&luVIldV5E`2XJNgFpG2EG}!eq-x@K-b}oKX#2j1p ze2xXn>^sYBYs+jKaJYZO?DZk;{Q~>z1@`3$?8_V2*C(*AZ(!dZfqi=g_U#$iw|8LQ zAK`v>3hMSP9KQc$ynGX^#@0h(l#MzeA_xSzA z0;Io&!}iBl!CD{2$hJOYTOV+!&u^SQ)Q9|)OfT*AWw81)Mz;QB>kkh8+>ep9y~tn6 z^y2?Tu=+Dbw*F-64-WqKJALpcUy;S7EiALFmgx-+?H#k%hdA4kdfOjg0NeifJXq_) z7}?f`Z0iFK_2GV&tnEde)oD-Kl0~r*z#Tmp6T}wjFD}5 z$@Y5S;D3+Phw_p?o9U&0F9oYVV`S@3w*KJYf49>IfAS?+T-w$$+rl!-Zkg8thyIM& z>qFf81!mvzeC_{pkiOXP$B_OE4%@yLfwlgOk#|LVZ-?K9d$#pQJk-ZplGSf@{eFCihjFGKB+4_Tn|1X_B_>(`L>Bav-u=+Db zw*F-64-WpnaQfg+MjvQg+S)SP!ZOQlnb!h`{*Kw}L)`lXX5aFBJ3cI*i`Yj^{3A&7 zuzJhXUl7GV47UA$K3Ln2F|utxvTZ-Gwom$Vrw{E%{!pfu{y7h<{)~~WKiT?&ga6N* zKKPSSCyh&4Ez^s2UWoazl{+`btPA7XUJH=^AP(Ce9{_8486(^BlC`|uF0SQCf9m;a zl#vG+b6n%%#W}C#qZiqh=WN4gBK>|GwtQ!SwS0_`ZTZMrzFrsC>!){m*7A|xm+7Uy z-V0WL#>m#6Z2iH(|0hl#`iuOYOfUZL2CF|~Wb041{@~z$htmgtGTKPv(iWCkR?GAT zhxU)z>qDGvNxki#cY(Eh$07aBh~JU1)c5URtuJF_TVJyJ^}4v$C*|`B#6x|_Z_D)J z|5mX2Ge)-lWa|$O{y%d1;7@)F4z2Ggo)`N0L@&mbS$44cC2SkZY#Yn5-us2;U2Ok1 zklIh4$t>b^*n_0w?RJJ|1=y{4-Wd*x_GMk*MMIa z>A^w2!Nr6AWH3F{e-+a7@GR}gGHH78+ml{k zJ)dopW448jv#yr)d~JWuZ`N7sa~0C8v#*c*t&ptsndRfQK8S01(jU5bm@nk@IIRCV zu==+nO}74I>kkh8w>o|BCy)6&rg<&0p1;~N%gC~@uFWhi{nr5d@<@!V<>CI3tbXi2 za463YJZt}v>o{!xk+uKm1=jP$o2>nDCgLaI(CZC54&!sgvyNxRM#&Z?S zJnIh*dS08X{`BTKRu2w()`zTm)|F+ndT`LQZ^)`=Uz`}}!9madB&(id;{>DU{iPBy zwBh=U4@SH;;&Q|T5%)*j7jY@#<0F1`#IK6@Sa1*4vmNo9{ykEgv5->uTey>(N<#+mO5v?YR|x(+eEhlm3=9uJiAmKCb*OFxL?4Pxk)uZy^lJT4tGR zr(yZG8#P5T5q})ad$#u9!=80~JQDGv5kD63KN#`3;FUOZKJj`hGM4$Y96S^AXImd5 z?+V@yzj;3->-ii%U@gCVmjL-{f831tk(plnj{vJbV`S@3w*KJYf0NS(fAX?SFaArx z>dzS2`jf3cIQZY_^ueFJB-4xkVzBx%Mz;QB>kkh8H#mLpC%+=oi~l09`ZGqh{$%S9 z4*u6WeefqQz@g*+FwZ*v>BYD*%Wj!%Wf^^uV~z#H_4=}Ru{;{ZvA4+Ss}YYxjC+4h zzb4}N`o4UjJih#aefXUxoajv}?*YT}!?VsJCpNB*HXJ@46W-R?X z2dw?EBhuhd9(W7u{C``-ZwDWW!~2Wh!Qk1LpVRQ0F|uC&5Tp;pq1SsU(g$SMlkesr zYkj`w;$gh8KKmQ}cO3`+ULV)*VgP(8=j zE=K&_2#W$jv(Yz76`19u*Je1h{WnK?6T?%Go@jUy(%m?;{On(FsNWkSX8YRs znk+StctON-B0ex;tev^?aILfD z15h2>th zB}*8kT*@XU+O*6WpXk@@bD?ov!Tc#nXmhS+S?@47E(sk->`2&+OifOtyO{Jp@=cY= zzj&vYec@D6#Mnt%?fX>Pn1gTf*OyOqliQ*fd$^Z*wPo+|a9?cM7GB$t$cwMqaxc_y z-)P!q-qn$8BIfqh9Ep4ltBCwpF((Cz()@Si$~(j2@8gs&<}KvDk2INvbI0M>#Qp!% z(aeq~d7kWff@j`asPFYW-gCES+-D@->6!Nm>f1eccy96RXHWXt+%HZRFp7+L>+c>&=qIrFi zyDjSbbli=sHM~tp?s6SmrTG2)?rloXdf$A(qmT221H*2_$j^7L9LtTkuo26eB&4`4 z%f0A#q`$4mcr$G3Z{&Mc)}( zB1S$R+VO`oAit82&qh9CiGbzrL{qh~cZm zNX;-->26Y(w1o3_apel{bxU`OGhP;F>=0+XG|t%8Wn|6qk~m{4$;iF#d`m513yQUc z0&1OZu7Ka^W(utRrUJf4rdZ%?ke_sNNKLY*PK=8*KF;WgGrHo84wsQNUVEI;7N620 z8FuM-=HD3ztbskA)+(`*Pg!_U0qvALAy;LGCx4Ghl>9Bu_-mZ;XUWJffe*!^Ke~+2 z7Rm1=BTVAtxA7Uji3ImYd~d|R67D|6{XusQUPE{s>hp8S?OoBt+dhvd*ZIawzQ8&8 zspOj%7XBp8_;H+ZyJW-{_~EnW{vba2<~ZX<$;j$|eZ=37_`Aa0rD?kzJS}U*Yb95D z?puKhVjUtOwK+?!;Rt0gD9`qzYG_pkiZd0&do`+~4tYLm}JlFvr`8R0Fa z`{}=H^qc>#>(kFK`Q-CUKK}fY4~t|%)@FK-Nj~(Pkq=5FYr6M8r}BM~@;$R~Hseq?)2L6XXO}B)M@X6$ethWXKm*LW3UUmu?P3SGJJ>4-yGmgW0%n zpN}Nd03`)_A8+B+3jF;l1*DUB8wRWg_^OV|2;$OI{%o zyO_HjMK*Ta7DA@)ULu~Xb2LAJ_mJRjYw*_KGB$&wL(>jAc$$^kbhbKd%jS^Ybazc1 z{>tLZ%l)tkhP6`reTo&B|u(OR`!ZMvt^wmyZHYH6e_HE3y~ zu55&~LpGQ8a=heo`u7BXo+1uyOG=~h`Qx6ed~NubP~psub^Ht!uzT4kU*KFCR=3uU hRaImtj_Z;EQq3CE*6w+>muX>RpKFi(pYQYZe*pfK@7e$W literal 33653 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 J-K(w={sSGYq^bY_ diff --git a/bundles/org.simantics.views.ontology/graph/Views.pgraph b/bundles/org.simantics.views.ontology/graph/Views.pgraph index c91515096..65f9a4cbb 100644 --- a/bundles/org.simantics.views.ontology/graph/Views.pgraph +++ b/bundles/org.simantics.views.ontology/graph/Views.pgraph @@ -86,6 +86,8 @@ Views.Control.Style.Constant.Check = 32 : L0.Integer Views.Control.Style.Constant.Wrap = 64 : L0.Integer Views.Control.Style.Constant.HScroll = 256 : L0.Integer Views.Control.Style.Constant.VScroll = 512 : L0.Integer +Views.Control.Style.Constant.Horizontal = 256 : L0.Integer +Views.Control.Style.Constant.Vertical = 512 : L0.Integer Views.Control.Style.Constant.Border = 2048 : L0.Integer Views.Control.Style.Constant.FullSelection = 65536 : L0.Integer Views.Control.Style.Constant.NoFocus = 524288 : L0.Integer @@ -220,6 +222,7 @@ Views.Button -- Views.Browser.document ==> "String" -- Views.Browser.variable ==> "Variable" -- Views.Browser.locationChanging ==> "a -> Boolean" -- Views.WikiBrowser.document ==> "String" -- Views.RowLayout.type ==> "Integer" -- Views.RowLayout.spacing ==> "Integer" -- Views.RowLayout.center ==> "Boolean" -- Views.RowLayout.fill ==> "Boolean" -- Views.RowLayout.justify ==> "Boolean" -- Views.RowLayout.pack ==> "Boolean" -- Views.RowLayout.wrap ==> "Boolean" -- Views.RowLayout.extendedMargins ==> "a" -- Views.RowLayout.RowData.width ==> "Integer" -- Views.RowLayout.RowData.height ==> "Integer" extends SWTParentNode implements LoaderNode { @@ -36,7 +36,7 @@ abstract public class SingleSWTViewNode extends SWTParentNode private Map genericProperties = new HashMap(); public Function2 propertyCallback; - public GridDataBean layoutData; + public LayoutDataBean layoutData; public int style; public String text; public RGB.Integer background; @@ -292,8 +292,8 @@ abstract public class SingleSWTViewNode extends SWTParentNode final public void synchronizeStyle(int style) { } - final public void synchronizeLayoutData(GridDataBean layoutData) { - if(layoutData != null) control.setLayoutData(SWTViewUtils.toGridData(layoutData)); + final public void synchronizeLayoutData(LayoutDataBean layoutData) { + if(layoutData != null) control.setLayoutData(SWTViewUtils.toLayoutData(layoutData)); } } diff --git a/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTBrowser.java b/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTBrowser.java index 6df6bdaad..5c4d21269 100644 --- a/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTBrowser.java +++ b/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTBrowser.java @@ -3,8 +3,11 @@ package org.simantics.views.swt.client.impl; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.swt.browser.Browser; +import org.eclipse.swt.browser.LocationEvent; +import org.eclipse.swt.browser.LocationListener; import org.eclipse.swt.widgets.Composite; import org.simantics.db.layer0.variable.Variable; +import org.simantics.scl.runtime.function.Function1; import org.simantics.utils.datastructures.map.Tuple; import org.simantics.views.swt.client.base.SingleSWTViewNode; @@ -12,10 +15,11 @@ public class SWTBrowser extends SingleSWTViewNode { private static final long serialVersionUID = -2704760050046054447L; - public String document; - public Variable variable; + public String document; + public Variable variable; + public Function1 locationChanging; - private Tuple lastAppliedParametrization; + private Tuple lastAppliedParametrization; @Override public void reset() { @@ -32,6 +36,18 @@ public class SWTBrowser extends SingleSWTViewNode { control = new Browser(parent, style); GridDataFactory.fillDefaults().grab(true, true).applyTo(control); + control.addLocationListener(new LocationListener() { + @Override + public void changing(LocationEvent event) { + Function1 lc = locationChanging; + if (lc != null) + lc.apply(event); + } + @Override + public void changed(LocationEvent event) { + } + }); + setProperties(); } diff --git a/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTComposite.java b/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTComposite.java index 5fe825a96..a67d0abf9 100644 --- a/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTComposite.java +++ b/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTComposite.java @@ -1,7 +1,7 @@ package org.simantics.views.swt.client.impl; import org.eclipse.swt.widgets.Composite; -import org.simantics.views.ViewUtils.GridLayoutBean; +import org.simantics.views.ViewUtils.LayoutBean; import org.simantics.views.swt.client.base.SWTViewUtils; import org.simantics.views.swt.client.base.SingleSWTViewNode; @@ -9,7 +9,7 @@ public class SWTComposite extends SingleSWTViewNode { private static final long serialVersionUID = 7932335224632082902L; - public GridLayoutBean layout; + public LayoutBean layout; @Override public void createControls(org.eclipse.swt.widgets.Composite parent) { @@ -22,7 +22,7 @@ public class SWTComposite extends SingleSWTViewNode { } - final public void synchronizeLayout(GridLayoutBean layout) { + final public void synchronizeLayout(LayoutBean layout) { if(layout != null) control.setLayout(SWTViewUtils.toLayout(layout)); } diff --git a/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTExplorer.java b/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTExplorer.java index f448ebde4..3c0ce5a1f 100644 --- a/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTExplorer.java +++ b/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTExplorer.java @@ -23,7 +23,7 @@ import org.simantics.browsing.ui.swt.widgets.ModelBrowser; import org.simantics.browsing.ui.swt.widgets.impl.WidgetSupportImpl; import org.simantics.scl.runtime.function.Function1; import org.simantics.views.ViewUtils.ColumnBean; -import org.simantics.views.ViewUtils.GridLayoutBean; +import org.simantics.views.ViewUtils.LayoutBean; import org.simantics.views.swt.client.base.SWTViewUtils; import org.simantics.views.swt.client.base.SingleSWTViewNode; @@ -31,7 +31,7 @@ public class SWTExplorer extends SingleSWTViewNode { private static final long serialVersionUID = 7932335224632082902L; - public GridLayoutBean layout; + public LayoutBean layout; public String browseContext; public String contextMenuId; public String uiContext; @@ -189,7 +189,7 @@ public class SWTExplorer extends SingleSWTViewNode { } } - final public void synchronizeLayout(GridLayoutBean layout) { + final public void synchronizeLayout(LayoutBean layout) { } } diff --git a/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTSashForm.java b/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTSashForm.java index 5bc8b2366..af79bdc8d 100644 --- a/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTSashForm.java +++ b/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTSashForm.java @@ -3,7 +3,7 @@ package org.simantics.views.swt.client.impl; import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Sash; -import org.simantics.views.ViewUtils.GridLayoutBean; +import org.simantics.views.ViewUtils.LayoutBean; import org.simantics.views.swt.client.base.SWTViewUtils; import org.simantics.views.swt.client.base.SingleSWTViewNode; @@ -11,7 +11,7 @@ public class SWTSashForm extends SingleSWTViewNode { private static final long serialVersionUID = 7932335224632082902L; - public GridLayoutBean layout; + public LayoutBean layout; public int[] weights; public Integer orientation; @@ -26,7 +26,7 @@ public class SWTSashForm extends SingleSWTViewNode { } - final public void synchronizeLayout(GridLayoutBean layout) { + final public void synchronizeLayout(LayoutBean layout) { if(layout != null) control.setLayout(SWTViewUtils.toLayout(layout)); } diff --git a/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTScrolledComposite.java b/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTScrolledComposite.java index 421315f89..1bf86ca12 100644 --- a/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTScrolledComposite.java +++ b/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTScrolledComposite.java @@ -13,7 +13,7 @@ import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; -import org.simantics.views.ViewUtils.GridLayoutBean; +import org.simantics.views.ViewUtils.LayoutBean; import org.simantics.views.swt.client.base.SWTViewUtils; import org.simantics.views.swt.client.base.SingleSWTViewNode; @@ -23,7 +23,7 @@ public class SWTScrolledComposite extends SingleSWTViewNode { private static final long serialVersionUID = 7932335224632082902L; - public GridLayoutBean layout; + public LayoutBean layout; private int minSize = 100; @@ -124,7 +124,7 @@ public class SWTScrolledComposite extends SingleSWTViewNode { } - final public void synchronizeLayout(GridLayoutBean layout) { + final public void synchronizeLayout(LayoutBean layout) { if(layout != null) control.setLayout(SWTViewUtils.toLayout(layout)); } diff --git a/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTTabFolder.java b/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTTabFolder.java index b8aebe537..629f28285 100644 --- a/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTTabFolder.java +++ b/bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTTabFolder.java @@ -14,7 +14,7 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.simantics.browsing.ui.swt.widgets.GraphExplorerComposite; import org.simantics.utils.ui.jface.BasePostSelectionProvider; -import org.simantics.views.ViewUtils.GridLayoutBean; +import org.simantics.views.ViewUtils.LayoutBean; import org.simantics.views.swt.client.base.ISWTViewNode; import org.simantics.views.swt.client.base.SingleSWTViewNode; @@ -24,7 +24,7 @@ public class SWTTabFolder extends SingleSWTViewNode { public List childNames; - public GridLayoutBean layout; + public LayoutBean layout; final BasePostSelectionProvider selectionProvider = new BasePostSelectionProvider(); @@ -119,7 +119,7 @@ public class SWTTabFolder extends SingleSWTViewNode { } - final public void synchronizeLayout(GridLayoutBean layout) { + final public void synchronizeLayout(LayoutBean layout) { } } diff --git a/bundles/org.simantics.views/src/org/simantics/views/All.java b/bundles/org.simantics.views/src/org/simantics/views/All.java index 941213f9c..6d26bb7f8 100644 --- a/bundles/org.simantics.views/src/org/simantics/views/All.java +++ b/bundles/org.simantics.views/src/org/simantics/views/All.java @@ -104,12 +104,22 @@ public class All { @SCLValue(type = "ReadGraph -> Resource -> Variable -> a") public static Object gridData(ReadGraph graph, Resource converter, Variable context) throws DatabaseException { - return ViewUtils.getGridData(graph, converter); + return ViewUtils.getGridData(graph, converter); } @SCLValue(type = "ReadGraph -> Resource -> Variable -> a") public static Object gridLayout(ReadGraph graph, Resource converter, Variable context) throws DatabaseException { - return ViewUtils.getLayout(graph, converter); + return ViewUtils.getLayout(graph, converter); + } + + @SCLValue(type = "ReadGraph -> Resource -> Variable -> a") + public static Object rowData(ReadGraph graph, Resource converter, Variable context) throws DatabaseException { + return ViewUtils.getRowData(graph, converter); + } + + @SCLValue(type = "ReadGraph -> Resource -> Variable -> a") + public static Object rowLayout(ReadGraph graph, Resource converter, Variable context) throws DatabaseException { + return ViewUtils.getRowLayout(graph, converter); } @SCLValue(type = "ReadGraph -> Resource -> Variable -> a") diff --git a/bundles/org.simantics.views/src/org/simantics/views/ViewUtils.java b/bundles/org.simantics.views/src/org/simantics/views/ViewUtils.java index f22e5ad83..749c2856e 100644 --- a/bundles/org.simantics.views/src/org/simantics/views/ViewUtils.java +++ b/bundles/org.simantics.views/src/org/simantics/views/ViewUtils.java @@ -32,20 +32,35 @@ public class ViewUtils { } public static final Binding EXTENDED_MARGINS_BINDING = Bindings.getBindingUnchecked(ExtendedMargins.class); - - public static class GridLayoutBean extends Bean { - - public int numColumns; - public int horizontalSpacing; - public int verticalSpacing; + + public static class LayoutBean extends Bean { public int marginLeft; public int marginRight; public int marginTop; public int marginBottom; + } + + public static class GridLayoutBean extends LayoutBean { + + public int numColumns; + public int horizontalSpacing; + public int verticalSpacing; } - - public static class GridDataBean extends Bean { + + public static class RowLayoutBean extends LayoutBean { + public int type; + public int spacing; + public boolean center; + public boolean fill; + public boolean justify; + public boolean pack; + public boolean wrap; + } + + public static class LayoutDataBean extends Bean {} + + public static class GridDataBean extends LayoutDataBean { public int horizontalSpan; public boolean grabExcessHorizontalSpace; @@ -56,7 +71,12 @@ public class ViewUtils { public int heightHint; } - + + public static class RowDataBean extends LayoutDataBean { + public int width; + public int height; + } + public static class ColumnBean extends Bean { public String key; @@ -128,6 +148,50 @@ public class ViewUtils { } + public static RowLayoutBean getRowLayout(RequestProcessor processor, Resource configuration) throws DatabaseException { + return processor.sync(new ResourceRead(configuration) { + @Override + public RowLayoutBean perform(ReadGraph graph) throws DatabaseException { + ViewsResources VIEW = ViewsResources.getInstance(graph); + Integer type = graph.getPossibleRelatedValue(resource, VIEW.RowLayout_type, Bindings.INTEGER); + Integer spacing = graph.getPossibleRelatedValue(resource, VIEW.RowLayout_spacing, Bindings.INTEGER); + Boolean center = graph.getPossibleRelatedValue(resource, VIEW.RowLayout_center, Bindings.BOOLEAN); + Boolean fill = graph.getPossibleRelatedValue(resource, VIEW.RowLayout_fill, Bindings.BOOLEAN); + Boolean justify = graph.getPossibleRelatedValue(resource, VIEW.RowLayout_justify, Bindings.BOOLEAN); + Boolean pack = graph.getPossibleRelatedValue(resource, VIEW.RowLayout_pack, Bindings.BOOLEAN); + Boolean wrap = graph.getPossibleRelatedValue(resource, VIEW.RowLayout_wrap, Bindings.BOOLEAN); + ExtendedMargins extendedMargins = graph.getPossibleRelatedValue(resource, VIEW.RowLayout_extendedMargins, EXTENDED_MARGINS_BINDING); + + RowLayoutBean layout = new RowLayoutBean(); + layout.type = type; + layout.spacing = spacing; + layout.center = center; + layout.fill = fill; + layout.justify = justify; + layout.pack = pack; + layout.wrap = wrap; + layout.marginLeft = extendedMargins.left; + layout.marginRight = extendedMargins.right; + layout.marginTop = extendedMargins.top; + layout.marginBottom = extendedMargins.bottom; + return layout; + } + }); + } + + public static RowDataBean getRowData(RequestProcessor processor, Resource configuration) throws DatabaseException { + return processor.sync(new ResourceRead(configuration) { + @Override + public RowDataBean perform(ReadGraph graph) throws DatabaseException { + ViewsResources VIEW = ViewsResources.getInstance(graph); + RowDataBean data = new RowDataBean(); + data.width = graph.getPossibleRelatedValue(resource, VIEW.GridLayout_GridData_preferredWidth, Bindings.INTEGER); + data.height = graph.getPossibleRelatedValue(resource, VIEW.GridLayout_GridData_preferredHeight, Bindings.INTEGER); + return data; + } + }); + } + public static int getStyle(RequestProcessor processor, Resource configuration) throws DatabaseException { return processor.sync(new ResourceRead(configuration) { @@ -188,6 +252,7 @@ public class ViewUtils { Simantics.getSession().async(new TernaryRead (configuration, context, relationURI) { + @SuppressWarnings("unchecked") @Override public T perform(ReadGraph graph) throws DatabaseException { Object value = graph.getRelatedValue2(parameter, graph.getResource(parameter3), parameter2); diff --git a/bundles/org.simantics/build.properties b/bundles/org.simantics/build.properties index b2e37f933..09aecee30 100644 --- a/bundles/org.simantics/build.properties +++ b/bundles/org.simantics/build.properties @@ -3,4 +3,3 @@ output.. = bin/ bin.includes = META-INF/,\ .,\ plugin.xml,\ - scl/ diff --git a/bundles/pom.xml b/bundles/pom.xml index aa1e3ebd1..4641096f8 100644 --- a/bundles/pom.xml +++ b/bundles/pom.xml @@ -13,6 +13,32 @@ 1.0.0-SNAPSHOT + + + + org.eclipse.tycho + tycho-compiler-plugin + ${tycho.version} + + -err:-forbidden + + + + org.eclipse.tycho + tycho-source-plugin + ${tycho.version} + + + plugin-source + + plugin-source + + + + + + + com.famfamfam.silk org.simantics @@ -174,4 +200,4 @@ org.simantics.workbench.search winterwell.markdown - \ No newline at end of file + diff --git a/bundles/winterwell.markdown/build.properties b/bundles/winterwell.markdown/build.properties index ccfe656ed..a836df1a4 100644 --- a/bundles/winterwell.markdown/build.properties +++ b/bundles/winterwell.markdown/build.properties @@ -5,8 +5,6 @@ bin.includes = META-INF/,\ .,\ lib/ src.includes = src/,\ - pom.xml,\ - plugin.xml,\ icons/,\ lib/,\ .project,\ diff --git a/features/org.simantics.eclipsec.launcher.feature/build.properties b/features/org.simantics.eclipsec.launcher.feature/build.properties index b91d19e0e..30e90c892 100644 --- a/features/org.simantics.eclipsec.launcher.feature/build.properties +++ b/features/org.simantics.eclipsec.launcher.feature/build.properties @@ -10,6 +10,6 @@ # VTT Technical Research Centre of Finland - initial API and implementation # Semantum Oy - update to Eclipse Mars.1 (4.5.1) ############################################################################### -bin.includes=features.xml +bin.includes=feature.xml root.win32.win32.x86=bin/win32/win32/x86 root.win32.win32.x86_64=bin/win32/win32/x86_64 \ No newline at end of file diff --git a/features/org.simantics.rcp.feature/feature.xml b/features/org.simantics.rcp.feature/feature.xml index 34ab3dbcf..a19e2c230 100644 --- a/features/org.simantics.rcp.feature/feature.xml +++ b/features/org.simantics.rcp.feature/feature.xml @@ -13,7 +13,7 @@ @@ -669,4 +669,11 @@ This Agreement is governed by the laws of the State of New York and the intellec install-size="0" version="0.0.0"/> + + diff --git a/features/pom.xml b/features/pom.xml index 9a61e3cc0..f935cf28e 100644 --- a/features/pom.xml +++ b/features/pom.xml @@ -13,9 +13,91 @@ 1.0.0-SNAPSHOT + + + + org.eclipse.tycho.extras + tycho-source-feature-plugin + ${tycho.extras.version} + + + source-feature + package + + source-feature + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + org.eclipse.tycho + tycho-p2-plugin + ${tycho.version} + + + attach-p2-metadata + package + + p2-metadata + + + + + + + com.lowagie.text.feature org.apache.lucene4.feature + org.jfree.feature org.simantics.browsing.ui.feature org.simantics.charts.feature org.simantics.data.feature @@ -55,4 +137,4 @@ org.simantics.wiki.ui.feature org.simantics.workbench.feature - \ No newline at end of file + diff --git a/releng/org.simantics.sdk.build.p2.site/README.md b/releng/org.simantics.sdk.build.p2.site/README.md new file mode 100644 index 000000000..8114468fb --- /dev/null +++ b/releng/org.simantics.sdk.build.p2.site/README.md @@ -0,0 +1 @@ +Run mvn p2:site to build the P2 repository of the external components listed in pom.xml. \ No newline at end of file diff --git a/releng/org.simantics.sdk.build.p2.site/pom.xml b/releng/org.simantics.sdk.build.p2.site/pom.xml index 2890fb24a..4e17e3765 100644 --- a/releng/org.simantics.sdk.build.p2.site/pom.xml +++ b/releng/org.simantics.sdk.build.p2.site/pom.xml @@ -6,10 +6,12 @@ org.simantics org.simantics.sdk.build.p2.site pom - 1.24.0 + 1.25.0 + 2.1.7.b1 4.9.0 + 4.9.0.b0003 org.apache.lucene4 @@ -107,6 +109,8 @@ true ${lucene.prefix}.core + ${lucene.version.actual} + *;version="${lucene.version}" @@ -114,6 +118,10 @@ true ${lucene.prefix}.queries + ${lucene.version.actual} + ${lucene.prefix}.core;bundle-version="${lucene.version}" + *;version="${lucene.version}" + !org.apache.lucene.*,*;resolution:=optional @@ -121,20 +129,32 @@ true ${lucene.prefix}.sandbox + ${lucene.version.actual} + ${lucene.prefix}.core;bundle-version="${lucene.version}" + *;version="${lucene.version}" + !org.apache.lucene.*,*;resolution:=optional - org.apache.lucene:lucene-queryparser:${lucene.version} + org.apache.lucene:lucene-analyzers-common:${lucene.version} true - ${lucene.prefix}.queryparser + ${lucene.prefix}.analyzers-common + ${lucene.version.actual} + ${lucene.prefix}.core;bundle-version="${lucene.version}" + *;version="${lucene.version}" + !org.apache.lucene.*,*;resolution:=optional - org.apache.lucene:lucene-analyzers-common:${lucene.version} + org.apache.lucene:lucene-queryparser:${lucene.version} true - ${lucene.prefix}.analyzers-common + ${lucene.prefix}.queryparser + ${lucene.version.actual} + ${lucene.prefix}.core;bundle-version="${lucene.version}",${lucene.prefix}.queries;bundle-version="${lucene.version}",${lucene.prefix}.sandbox;bundle-version="${lucene.version}" + *;version="${lucene.version}" + !org.apache.lucene.*,*;resolution:=optional @@ -197,6 +217,10 @@ org.apache.pdfbox:fontbox:2.0.2 true + + org.apache.pdfbox:xmpbox:2.0.2 + true + log4j:log4j:1.2.17 true @@ -218,7 +242,11 @@ org.eclipse.collections:eclipse-collections-api:7.1.0 + true true + + org.eclipse.collections.* + org.eclipse.collections:eclipse-collections:7.1.0 @@ -253,6 +281,7 @@ true com.lowagie.text + ${itext.version.actual} @@ -267,6 +296,14 @@ org.mozilla:rhino:1.7.7.1 true + + net.java.dev.jna:jna:4.2.2 + true + + + net.java.dev.jna:jna-platform:4.2.2 + true + @@ -285,7 +322,6 @@ - @@ -296,4 +332,4 @@ - \ No newline at end of file + diff --git a/releng/org.simantics.sdk.build.targetdefinition/org.simantics.sdk.build.targetdefinition.target b/releng/org.simantics.sdk.build.targetdefinition/org.simantics.sdk.build.targetdefinition.target index 3f8417100..34bfa95c2 100644 --- a/releng/org.simantics.sdk.build.targetdefinition/org.simantics.sdk.build.targetdefinition.target +++ b/releng/org.simantics.sdk.build.targetdefinition/org.simantics.sdk.build.targetdefinition.target @@ -16,7 +16,7 @@ - + @@ -75,9 +75,9 @@ - + - + @@ -91,20 +91,20 @@ - + - + - + - + @@ -121,12 +121,12 @@ - + - + @@ -134,12 +134,12 @@ - + - + @@ -156,13 +156,13 @@ - - - + + + - - + + @@ -180,7 +180,7 @@ - + diff --git a/releng/org.simantics.sdk.repository/category.xml b/releng/org.simantics.sdk.repository/category.xml index 647e31cb5..f97fc7574 100644 --- a/releng/org.simantics.sdk.repository/category.xml +++ b/releng/org.simantics.sdk.repository/category.xml @@ -1,6 +1,6 @@ - + diff --git a/releng/org.simantics.sdk.repository/pom.xml b/releng/org.simantics.sdk.repository/pom.xml index c25ad3ee7..5731d5fd6 100644 --- a/releng/org.simantics.sdk.repository/pom.xml +++ b/releng/org.simantics.sdk.repository/pom.xml @@ -2,7 +2,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 org.simantics.sdk.repository - 1.24.0-SNAPSHOT + 1.25.0-SNAPSHOT eclipse-repository @@ -69,4 +69,4 @@ - \ No newline at end of file + diff --git a/releng/org.simantics.tycho.configuration/pom.xml b/releng/org.simantics.tycho.configuration/pom.xml index 53b07f5e9..81bfafa92 100644 --- a/releng/org.simantics.tycho.configuration/pom.xml +++ b/releng/org.simantics.tycho.configuration/pom.xml @@ -9,6 +9,7 @@ 0.25.0 + 0.25.0 UTF-8 http://download.eclipse.org/releases/mars @@ -44,6 +45,7 @@ + win32 win32 @@ -64,14 +67,16 @@ win32 x86_64 + - \ No newline at end of file + -- 2.47.1