From f27f7a23df4b8b1c11df1ac3742f3855ed86f3c1 Mon Sep 17 00:00:00 2001 From: villberg Date: Mon, 5 May 2014 07:45:04 +0000 Subject: [PATCH] refs #4833 git-svn-id: https://www.simantics.org/svn/simantics/sysdyn/trunk@29403 ac1ea38d-2e2b-0410-8846-a27921b304fc --- org.simantics.sysdyn.ontology/graph.tg | Bin 182186 -> 182267 bytes .../graph/Sysdyn.pgraph | 4 +- org.simantics.sysdyn.ui/META-INF/MANIFEST.MF | 4 +- org.simantics.sysdyn.ui/plugin.xml | 146 ++++++++++++++++++ .../contributions/AnnotationContribution.java | 57 +++++++ .../contributions/AnnotationTypeImager.java | 25 +++ .../contributions/AnnotationTypeLabeler.java | 31 ++++ .../contributions/AnnotationValueImager.java | 25 +++ .../contributions/AnnotationValueLabeler.java | 27 ++++ .../contributions/LibraryContribution.java | 51 ++++++ .../browser/contributions/LibraryImager.java | 25 +++ .../browser/contributions/LibraryLabeler.java | 27 ++++ .../ui/browser/nodes/AnnotationType.java | 69 +++++++++ .../ui/browser/nodes/AnnotationValue.java | 62 ++++++++ .../sysdyn/ui/browser/nodes/Library.java | 62 ++++++++ .../ui/browser/nodes/SCLModulesFolder.java | 3 +- .../ui/handlers/NewAnnotationTypeHandler.java | 47 ++++++ .../handlers/NewAnnotationValueHandler.java | 41 +++++ .../sysdyn/ui/handlers/NewLibraryHandler.java | 44 ++++++ 19 files changed, 745 insertions(+), 5 deletions(-) create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/AnnotationContribution.java create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/AnnotationTypeImager.java create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/AnnotationTypeLabeler.java create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/AnnotationValueImager.java create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/AnnotationValueLabeler.java create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/LibraryContribution.java create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/LibraryImager.java create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/LibraryLabeler.java create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/nodes/AnnotationType.java create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/nodes/AnnotationValue.java create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/nodes/Library.java create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/handlers/NewAnnotationTypeHandler.java create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/handlers/NewAnnotationValueHandler.java create mode 100644 org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/handlers/NewLibraryHandler.java diff --git a/org.simantics.sysdyn.ontology/graph.tg b/org.simantics.sysdyn.ontology/graph.tg index 7b31d5bc1a974664a03f4191763baa7cd35da067..307eb73628b490ae77df9f572e801ccf3183d63b 100644 GIT binary patch literal 182267 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 NKH%2MnaTV5{|i&}u3rEE literal 182186 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 diff --git a/org.simantics.sysdyn.ontology/graph/Sysdyn.pgraph b/org.simantics.sysdyn.ontology/graph/Sysdyn.pgraph index e5f34635..15b72b1b 100644 --- a/org.simantics.sysdyn.ontology/graph/Sysdyn.pgraph +++ b/org.simantics.sysdyn.ontology/graph/Sysdyn.pgraph @@ -24,9 +24,7 @@ SYSDYN.ImportedOntologies : PROJ.NamespaceRequirement "http://www.simantics.org/Sysdyn-1.1" : L0.URI "http://www.simantics.org/Layer0-1.1" : L0.URI "http://www.simantics.org/SelectionView-1.2" : L0.URI -// "http://www.semantum.fi/Simupedia-1.0" : L0.URI // Experimental Simupedia -// "http://www.semantum.fi/SimupediaWorkbench-1.0" : L0.URI // Experimental Simupedia -// "http://www.simantics.org/Documentation-1.2" : L0.URI // Experimental Simupedia + "http://www.simantics.org/Annotation-1.0" : L0.URI SYSDYN.SharedFunctionOntology + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1831,6 +1897,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2383,6 +2497,14 @@ class="org.simantics.sysdyn.ui.browser.contributions.Model" preference="2.0"> + + + + @@ -2622,6 +2744,18 @@ class="org.simantics.sysdyn.ui.browser.contributions.SCLModuleLabeler" preference="2"> + + + + + + @@ -2722,6 +2856,18 @@ class="org.simantics.sysdyn.ui.browser.contributions.SharedOntologyImager" preference="3.0"> + + + + + + diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/AnnotationContribution.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/AnnotationContribution.java new file mode 100644 index 00000000..3ec613f8 --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/AnnotationContribution.java @@ -0,0 +1,57 @@ +/******************************************************************************* + * Copyright (c) 2010, 2011 Association for Decentralized Information Management in + * Industry THTH ry. + * 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: + * VTT Technical Research Centre of Finland - initial API and implementation + *******************************************************************************/ +package org.simantics.sysdyn.ui.browser.contributions; + +import java.util.ArrayList; +import java.util.Collection; + +import org.simantics.annotation.ontology.AnnotationResource; +import org.simantics.browsing.ui.common.node.AbstractNode; +import org.simantics.browsing.ui.common.node.ISpecialFolder; +import org.simantics.browsing.ui.graph.contributor.viewpoint.ViewpointContributor; +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.common.request.ObjectsWithType; +import org.simantics.db.exception.DatabaseException; +import org.simantics.layer0.Layer0; +import org.simantics.sysdyn.ui.browser.nodes.AnnotationType; +import org.simantics.sysdyn.ui.browser.nodes.AnnotationValue; + +public class AnnotationContribution extends ViewpointContributor> { + + @Override + public Collection getContribution(ReadGraph graph, AbstractNode node) throws DatabaseException { + + ArrayList> result = new ArrayList>(); + + if(node instanceof ISpecialFolder) return result; + + Layer0 L0 = Layer0.getInstance(graph); + AnnotationResource ANNO = AnnotationResource.getInstance(graph); + if(graph.isInstanceOf(node.data, L0.Library)) { + for(Resource anno : graph.syncRequest(new ObjectsWithType(node.data, L0.ConsistsOf, ANNO.AnnotationType))) { + result.add(new AnnotationType(anno)); + } + } + for(Resource anno : graph.syncRequest(new ObjectsWithType(node.data, L0.ConsistsOf, ANNO.Annotation))) { + result.add(new AnnotationValue(anno)); + } + + return result; + + } + + @Override + public String getViewpointId() { + return "Standard"; + } +} diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/AnnotationTypeImager.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/AnnotationTypeImager.java new file mode 100644 index 00000000..660fd9d2 --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/AnnotationTypeImager.java @@ -0,0 +1,25 @@ +package org.simantics.sysdyn.ui.browser.contributions; + +import java.net.MalformedURLException; +import java.net.URL; + +import org.eclipse.jface.resource.ImageDescriptor; +import org.simantics.browsing.ui.swt.ImagerContributor; +import org.simantics.db.ReadGraph; +import org.simantics.db.exception.DatabaseException; +import org.simantics.sysdyn.ui.browser.nodes.AnnotationType; + +public class AnnotationTypeImager extends ImagerContributor { + + @Override + public ImageDescriptor getDescriptor(ReadGraph graph, AnnotationType node) throws DatabaseException { + + try { + return ImageDescriptor.createFromURL(new URL("platform:/plugin/com.famfamfam.silk/icons/note.png")); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + return null; + + } +} diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/AnnotationTypeLabeler.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/AnnotationTypeLabeler.java new file mode 100644 index 00000000..96221a02 --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/AnnotationTypeLabeler.java @@ -0,0 +1,31 @@ +/******************************************************************************* + * Copyright (c) 2013 Association for Decentralized Information Management in + * Industry THTH ry. + * 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: + * Semantum Oy - initial API and implementation + *******************************************************************************/ +package org.simantics.sysdyn.ui.browser.contributions; + +import org.simantics.browsing.ui.graph.contributor.labeler.LabelerContributor; +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.common.utils.NameUtils; +import org.simantics.db.exception.DatabaseException; +import org.simantics.layer0.Layer0; +import org.simantics.sysdyn.ui.browser.nodes.AnnotationType; + +public class AnnotationTypeLabeler extends LabelerContributor{ + + @Override + public String getLabel(ReadGraph graph, AnnotationType input) throws DatabaseException { + Layer0 L0 = Layer0.getInstance(graph); + Resource relation = graph.getSingleObject(input.data, L0.HasRange_Inverse); + return NameUtils.getSafeName(graph, relation); + } + +} diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/AnnotationValueImager.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/AnnotationValueImager.java new file mode 100644 index 00000000..b6a88abc --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/AnnotationValueImager.java @@ -0,0 +1,25 @@ +package org.simantics.sysdyn.ui.browser.contributions; + +import java.net.MalformedURLException; +import java.net.URL; + +import org.eclipse.jface.resource.ImageDescriptor; +import org.simantics.browsing.ui.swt.ImagerContributor; +import org.simantics.db.ReadGraph; +import org.simantics.db.exception.DatabaseException; +import org.simantics.sysdyn.ui.browser.nodes.AnnotationValue; + +public class AnnotationValueImager extends ImagerContributor { + + @Override + public ImageDescriptor getDescriptor(ReadGraph graph, AnnotationValue node) throws DatabaseException { + + try { + return ImageDescriptor.createFromURL(new URL("platform:/plugin/com.famfamfam.silk/icons/note.png")); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + return null; + + } +} diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/AnnotationValueLabeler.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/AnnotationValueLabeler.java new file mode 100644 index 00000000..320b36ba --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/AnnotationValueLabeler.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013 Association for Decentralized Information Management in + * Industry THTH ry. + * 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: + * Semantum Oy - initial API and implementation + *******************************************************************************/ +package org.simantics.sysdyn.ui.browser.contributions; + +import org.simantics.browsing.ui.graph.contributor.labeler.LabelerContributor; +import org.simantics.db.ReadGraph; +import org.simantics.db.common.utils.NameUtils; +import org.simantics.db.exception.DatabaseException; +import org.simantics.sysdyn.ui.browser.nodes.AnnotationValue; + +public class AnnotationValueLabeler extends LabelerContributor{ + + @Override + public String getLabel(ReadGraph graph, AnnotationValue input) throws DatabaseException { + return NameUtils.getSafeName(graph, input.data); + } + +} diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/LibraryContribution.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/LibraryContribution.java new file mode 100644 index 00000000..e35d00f0 --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/LibraryContribution.java @@ -0,0 +1,51 @@ +/******************************************************************************* + * Copyright (c) 2010, 2011 Association for Decentralized Information Management in + * Industry THTH ry. + * 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: + * VTT Technical Research Centre of Finland - initial API and implementation + *******************************************************************************/ +package org.simantics.sysdyn.ui.browser.contributions; + +import java.util.ArrayList; +import java.util.Collection; + +import org.simantics.browsing.ui.common.node.AbstractNode; +import org.simantics.browsing.ui.common.node.ISpecialFolder; +import org.simantics.browsing.ui.graph.contributor.viewpoint.ViewpointContributor; +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.common.request.ObjectsWithType; +import org.simantics.db.exception.DatabaseException; +import org.simantics.layer0.Layer0; +import org.simantics.sysdyn.ui.browser.nodes.Library; + +public class LibraryContribution extends ViewpointContributor> { + + @Override + public Collection getContribution(ReadGraph graph, AbstractNode node) throws DatabaseException { + + ArrayList> result = new ArrayList>(); + + if(node instanceof ISpecialFolder) return result; + + Layer0 L0 = Layer0.getInstance(graph); + if(graph.isInstanceOf(node.data, L0.Library)) { + for(Resource lib : graph.syncRequest(new ObjectsWithType(node.data, L0.ConsistsOf, L0.Library))) { + result.add(new Library(lib)); + } + } + + return result; + + } + + @Override + public String getViewpointId() { + return "Standard"; + } +} diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/LibraryImager.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/LibraryImager.java new file mode 100644 index 00000000..b8c6df41 --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/LibraryImager.java @@ -0,0 +1,25 @@ +package org.simantics.sysdyn.ui.browser.contributions; + +import java.net.MalformedURLException; +import java.net.URL; + +import org.eclipse.jface.resource.ImageDescriptor; +import org.simantics.browsing.ui.swt.ImagerContributor; +import org.simantics.db.ReadGraph; +import org.simantics.db.exception.DatabaseException; +import org.simantics.sysdyn.ui.browser.nodes.Library; + +public class LibraryImager extends ImagerContributor { + + @Override + public ImageDescriptor getDescriptor(ReadGraph graph, Library node) throws DatabaseException { + + try { + return ImageDescriptor.createFromURL(new URL("platform:/plugin/com.famfamfam.silk/icons/folder.png")); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + return null; + + } +} diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/LibraryLabeler.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/LibraryLabeler.java new file mode 100644 index 00000000..ce2daf2e --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/contributions/LibraryLabeler.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2013 Association for Decentralized Information Management in + * Industry THTH ry. + * 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: + * Semantum Oy - initial API and implementation + *******************************************************************************/ +package org.simantics.sysdyn.ui.browser.contributions; + +import org.simantics.browsing.ui.graph.contributor.labeler.LabelerContributor; +import org.simantics.db.ReadGraph; +import org.simantics.db.common.utils.NameUtils; +import org.simantics.db.exception.DatabaseException; +import org.simantics.sysdyn.ui.browser.nodes.Library; + +public class LibraryLabeler extends LabelerContributor { + + @Override + public String getLabel(ReadGraph graph, Library input) throws DatabaseException { + return NameUtils.getSafeName(graph, input.data); + } + +} diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/nodes/AnnotationType.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/nodes/AnnotationType.java new file mode 100644 index 00000000..8b608c99 --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/nodes/AnnotationType.java @@ -0,0 +1,69 @@ +/******************************************************************************* + * Copyright (c) 2013 Association for Decentralized Information Management in + * Industry THTH ry. + * 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: + * Semantum Oy - initial API and implementation + *******************************************************************************/ +package org.simantics.sysdyn.ui.browser.nodes; + +import org.simantics.Simantics; +import org.simantics.browsing.ui.common.node.AbstractNode; +import org.simantics.browsing.ui.common.node.DeleteException; +import org.simantics.browsing.ui.common.node.IDeletableNode; +import org.simantics.browsing.ui.common.node.IModifiableNode; +import org.simantics.browsing.ui.content.Labeler.Modifier; +import org.simantics.browsing.ui.graph.impl.LabelModifier; +import org.simantics.db.Resource; +import org.simantics.db.Session; +import org.simantics.db.WriteGraph; +import org.simantics.db.common.primitiverequest.PossibleObject; +import org.simantics.db.common.request.WriteRequest; +import org.simantics.db.common.utils.Logger; +import org.simantics.db.exception.CancelTransactionException; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.exception.ServiceNotFoundException; +import org.simantics.db.layer0.util.RemoverUtil; +import org.simantics.layer0.Layer0; +import org.simantics.ui.SimanticsUI; +import org.simantics.utils.ui.ExceptionUtils; + +public class AnnotationType extends AbstractNode implements IDeletableNode, IModifiableNode { + + public AnnotationType(Resource resource) { + super(resource); + } + + @Override + public void delete() throws DeleteException { + try { + SimanticsUI.getSession().syncRequest(new WriteRequest() { + @Override + public void perform(WriteGraph graph) throws DatabaseException, CancelTransactionException { + RemoverUtil.remove(graph, data); + } + }); + } catch (DatabaseException e) { + ExceptionUtils.logAndShowError(e); + } + + } + + @Override + public Modifier getModifier(String columnId) { + Session session = Simantics.getSession(); + try { + Resource relation = session.syncRequest(new PossibleObject(data, session.getService(Layer0.class).HasRange_Inverse)); + if(relation != null) + return new LabelModifier(session, relation, session.getService(Layer0.class).HasName); + } catch (Exception e) { + Logger.defaultLogError(e); + } + return null; + } + +} diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/nodes/AnnotationValue.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/nodes/AnnotationValue.java new file mode 100644 index 00000000..b97ad52e --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/nodes/AnnotationValue.java @@ -0,0 +1,62 @@ +/******************************************************************************* + * Copyright (c) 2013 Association for Decentralized Information Management in + * Industry THTH ry. + * 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: + * Semantum Oy - initial API and implementation + *******************************************************************************/ +package org.simantics.sysdyn.ui.browser.nodes; + +import org.simantics.Simantics; +import org.simantics.browsing.ui.common.node.AbstractNode; +import org.simantics.browsing.ui.common.node.DeleteException; +import org.simantics.browsing.ui.common.node.IDeletableNode; +import org.simantics.browsing.ui.common.node.IModifiableNode; +import org.simantics.browsing.ui.content.Labeler.Modifier; +import org.simantics.browsing.ui.graph.impl.LabelModifier; +import org.simantics.db.Resource; +import org.simantics.db.Session; +import org.simantics.db.WriteGraph; +import org.simantics.db.common.primitiverequest.PossibleObject; +import org.simantics.db.common.request.WriteRequest; +import org.simantics.db.common.utils.Logger; +import org.simantics.db.exception.CancelTransactionException; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.exception.ServiceNotFoundException; +import org.simantics.db.layer0.util.RemoverUtil; +import org.simantics.layer0.Layer0; +import org.simantics.ui.SimanticsUI; +import org.simantics.utils.ui.ExceptionUtils; + +public class AnnotationValue extends AbstractNode implements IDeletableNode, IModifiableNode { + + public AnnotationValue(Resource resource) { + super(resource); + } + + @Override + public void delete() throws DeleteException { + try { + SimanticsUI.getSession().syncRequest(new WriteRequest() { + @Override + public void perform(WriteGraph graph) throws DatabaseException, CancelTransactionException { + RemoverUtil.remove(graph, data); + } + }); + } catch (DatabaseException e) { + ExceptionUtils.logAndShowError(e); + } + + } + + @Override + public Modifier getModifier(String columnId) { + Session session = Simantics.getSession(); + return new LabelModifier(session, data, session.getService(Layer0.class).HasName); + } + +} diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/nodes/Library.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/nodes/Library.java new file mode 100644 index 00000000..c62f6c66 --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/nodes/Library.java @@ -0,0 +1,62 @@ +/******************************************************************************* + * Copyright (c) 2013 Association for Decentralized Information Management in + * Industry THTH ry. + * 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: + * Semantum Oy - initial API and implementation + *******************************************************************************/ +package org.simantics.sysdyn.ui.browser.nodes; + +import org.simantics.Simantics; +import org.simantics.browsing.ui.common.node.AbstractNode; +import org.simantics.browsing.ui.common.node.DeleteException; +import org.simantics.browsing.ui.common.node.IDeletableNode; +import org.simantics.browsing.ui.common.node.IModifiableNode; +import org.simantics.browsing.ui.content.Labeler.Modifier; +import org.simantics.browsing.ui.graph.impl.LabelModifier; +import org.simantics.db.Resource; +import org.simantics.db.Session; +import org.simantics.db.WriteGraph; +import org.simantics.db.common.primitiverequest.PossibleObject; +import org.simantics.db.common.request.WriteRequest; +import org.simantics.db.common.utils.Logger; +import org.simantics.db.exception.CancelTransactionException; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.exception.ServiceNotFoundException; +import org.simantics.db.layer0.util.RemoverUtil; +import org.simantics.layer0.Layer0; +import org.simantics.ui.SimanticsUI; +import org.simantics.utils.ui.ExceptionUtils; + +public class Library extends AbstractNode implements IDeletableNode, IModifiableNode { + + public Library(Resource resource) { + super(resource); + } + + @Override + public void delete() throws DeleteException { + try { + SimanticsUI.getSession().syncRequest(new WriteRequest() { + @Override + public void perform(WriteGraph graph) throws DatabaseException, CancelTransactionException { + RemoverUtil.remove(graph, data); + } + }); + } catch (DatabaseException e) { + ExceptionUtils.logAndShowError(e); + } + + } + + @Override + public Modifier getModifier(String columnId) { + Session session = Simantics.getSession(); + return new LabelModifier(session, data, session.getService(Layer0.class).HasName); + } + +} diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/nodes/SCLModulesFolder.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/nodes/SCLModulesFolder.java index 9900d886..425a602e 100644 --- a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/nodes/SCLModulesFolder.java +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/browser/nodes/SCLModulesFolder.java @@ -12,9 +12,10 @@ package org.simantics.sysdyn.ui.browser.nodes; import org.simantics.browsing.ui.common.node.AbstractNode; +import org.simantics.browsing.ui.common.node.ISpecialFolder; import org.simantics.db.Resource; -public class SCLModulesFolder extends AbstractNode { +public class SCLModulesFolder extends AbstractNode implements ISpecialFolder { public SCLModulesFolder(Resource resource) { super(resource); diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/handlers/NewAnnotationTypeHandler.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/handlers/NewAnnotationTypeHandler.java new file mode 100644 index 00000000..133962ee --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/handlers/NewAnnotationTypeHandler.java @@ -0,0 +1,47 @@ +package org.simantics.sysdyn.ui.handlers; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.handlers.HandlerUtil; +import org.simantics.annotation.ui.AnnotationUtils; +import org.simantics.browsing.ui.common.node.AbstractNode; +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.ui.SimanticsUI; +import org.simantics.utils.ui.AdaptionUtils; + +public class NewAnnotationTypeHandler extends AbstractHandler { + + /** + * Assumes to be called from a node with SysdynModel, Library or SysdynModelicaFunction as its resource + */ + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + + ISelection sel = HandlerUtil.getCurrentSelection(event); + + @SuppressWarnings("unchecked") + AbstractNode node = AdaptionUtils.adaptToSingle(sel, AbstractNode.class); + if (node == null) + return null; + + final Resource parent = node.data; + + SimanticsUI.getSession().asyncRequest(new WriteRequest() { + + @Override + public void perform(WriteGraph graph) throws DatabaseException { + AnnotationUtils.newAnnotationType(graph, parent); + } + + }); + + return null; + + } + +} diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/handlers/NewAnnotationValueHandler.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/handlers/NewAnnotationValueHandler.java new file mode 100644 index 00000000..2f679c1c --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/handlers/NewAnnotationValueHandler.java @@ -0,0 +1,41 @@ +package org.simantics.sysdyn.ui.handlers; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.handlers.HandlerUtil; +import org.simantics.Simantics; +import org.simantics.annotation.ui.AnnotationUtils; +import org.simantics.browsing.ui.common.node.AbstractNode; +import org.simantics.db.Resource; +import org.simantics.db.common.request.PossibleIndexRoot; +import org.simantics.db.exception.DatabaseException; +import org.simantics.utils.ui.AdaptionUtils; + +public class NewAnnotationValueHandler extends AbstractHandler { + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + + ISelection sel = HandlerUtil.getCurrentSelection(event); + + @SuppressWarnings("unchecked") + AbstractNode node = AdaptionUtils.adaptToSingle(sel, AbstractNode.class); + if (node == null) + return null; + + final Resource parent = node.data; + try { + Resource model = Simantics.getSession().syncRequest(new PossibleIndexRoot(parent)); + if(model == null) return null; + AnnotationUtils.newAnnotationInstance(parent, model); + } catch (DatabaseException e) { + throw new ExecutionException(e.getMessage()); + } + + return null; + + } + +} diff --git a/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/handlers/NewLibraryHandler.java b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/handlers/NewLibraryHandler.java new file mode 100644 index 00000000..ae1b2933 --- /dev/null +++ b/org.simantics.sysdyn.ui/src/org/simantics/sysdyn/ui/handlers/NewLibraryHandler.java @@ -0,0 +1,44 @@ +package org.simantics.sysdyn.ui.handlers; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.handlers.HandlerUtil; +import org.simantics.browsing.ui.common.node.AbstractNode; +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.modeling.ui.actions.NewLibrary; +import org.simantics.ui.SimanticsUI; +import org.simantics.utils.ui.AdaptionUtils; + +public class NewLibraryHandler extends AbstractHandler { + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + + ISelection sel = HandlerUtil.getCurrentSelection(event); + + @SuppressWarnings("unchecked") + AbstractNode node = AdaptionUtils.adaptToSingle(sel, AbstractNode.class); + if (node == null) + return null; + + final Resource parent = node.data; + + SimanticsUI.getSession().asyncRequest(new WriteRequest() { + + @Override + public void perform(WriteGraph graph) throws DatabaseException { + NewLibrary.createLibrary(graph, parent); + } + + }); + + return null; + + } + +} -- 2.47.1