X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling.ui%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fui%2FmodelBrowser2%2Fcontributions%2FSetSubscriptionEnabledContribution.java;h=4943ce35268fe4122769bf946a734d73b9f941b9;hb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;hp=e83a6704a051ad0ffb17f3e788953bfda8aa8cd6;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/modelBrowser2/contributions/SetSubscriptionEnabledContribution.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/modelBrowser2/contributions/SetSubscriptionEnabledContribution.java index e83a6704a..4943ce352 100644 --- a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/modelBrowser2/contributions/SetSubscriptionEnabledContribution.java +++ b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/modelBrowser2/contributions/SetSubscriptionEnabledContribution.java @@ -1,112 +1,112 @@ -package org.simantics.modeling.ui.modelBrowser2.contributions; - -import java.util.Arrays; -import java.util.Collection; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExecutableExtension; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.ActionContributionItem; -import org.eclipse.jface.action.IContributionItem; -import org.eclipse.jface.resource.ImageDescriptor; -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.WriteRequest; -import org.simantics.db.exception.DatabaseException; -import org.simantics.modeling.ModelingResources; -import org.simantics.modeling.requests.SetSubscriptionEnabled; -import org.simantics.modeling.ui.Activator; -import org.simantics.ui.SimanticsUI; -import org.simantics.ui.contribution.DynamicMenuContribution; -import org.simantics.ui.utils.ResourceAdaptionUtils; - -/** - * @author Tuukka Lehtonen - */ -public class SetSubscriptionEnabledContribution extends DynamicMenuContribution implements IExecutableExtension { - - String name = ""; - ImageDescriptor image = null; - boolean include = true; - - @Override - public void setInitializationData(IConfigurationElement config, String propertyName, Object data) - throws CoreException { - if (data instanceof Map) { - @SuppressWarnings("unchecked") - Map args = (Map) data; - name = args.get("name"); - String imageId = args.get("image"); - image = Activator.getDefault().getImageRegistry().getDescriptor(imageId); - include = Boolean.parseBoolean(args.get("include")); - } - } - - private Collection toSubscriptions(ReadGraph graph, Collection resources) throws DatabaseException { - ModelingResources mod = ModelingResources.getInstance(graph); - - Set result = new HashSet(resources.size()); - for (Resource o : resources) { - if (graph.isInstanceOf(o, mod.Subscription)) - result.add(o); - } - - return result; - } - - @Override - protected Object[] getSelectedObjects() { - return ResourceAdaptionUtils.toResources(getSelection()); - } - - @Override - protected IContributionItem[] getContributionItems(ReadGraph graph, Object[] elements) throws DatabaseException { - final Resource[] resources = (Resource[]) elements; - if (resources.length == 0) - return new IContributionItem[0]; - - // Are there any components in the selection whose inclusion state - // is different from the argument 'included'? - final Collection subscriptions = toSubscriptions(graph, Arrays.asList(resources)); - if (subscriptions.isEmpty()) - return new IContributionItem[0]; - - ModelingResources mod = ModelingResources.getInstance(graph); - - boolean foundNonMatchingEnableStates = false; - for (Resource subscription : subscriptions) { - Boolean isIncluded = graph.getPossibleRelatedValue(subscription, mod.Subscription_Enabled); - if (isIncluded == null) - isIncluded = Boolean.TRUE; - if (isIncluded != include) - foundNonMatchingEnableStates = true; - } - if (!foundNonMatchingEnableStates) - return new IContributionItem[0]; - - return new IContributionItem[] { - new ActionContributionItem(new Action(name, image) { - @Override - public void run() { - Session session = SimanticsUI.peekSession(); - if (session == null) - return; - - SimanticsUI.getSession().asyncRequest(new WriteRequest() { - @Override - public void perform(WriteGraph graph) throws DatabaseException { - new SetSubscriptionEnabled(subscriptions, include).perform(graph); - } - }); - } - }) - }; - } - -} +package org.simantics.modeling.ui.modelBrowser2.contributions; + +import java.util.Arrays; +import java.util.Collection; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IExecutableExtension; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.resource.ImageDescriptor; +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.WriteRequest; +import org.simantics.db.exception.DatabaseException; +import org.simantics.modeling.ModelingResources; +import org.simantics.modeling.requests.SetSubscriptionEnabled; +import org.simantics.modeling.ui.Activator; +import org.simantics.ui.SimanticsUI; +import org.simantics.ui.contribution.DynamicMenuContribution; +import org.simantics.ui.utils.ResourceAdaptionUtils; + +/** + * @author Tuukka Lehtonen + */ +public class SetSubscriptionEnabledContribution extends DynamicMenuContribution implements IExecutableExtension { + + String name = ""; + ImageDescriptor image = null; + boolean include = true; + + @Override + public void setInitializationData(IConfigurationElement config, String propertyName, Object data) + throws CoreException { + if (data instanceof Map) { + @SuppressWarnings("unchecked") + Map args = (Map) data; + name = args.get("name"); + String imageId = args.get("image"); + image = Activator.getDefault().getImageRegistry().getDescriptor(imageId); + include = Boolean.parseBoolean(args.get("include")); + } + } + + private Collection toSubscriptions(ReadGraph graph, Collection resources) throws DatabaseException { + ModelingResources mod = ModelingResources.getInstance(graph); + + Set result = new HashSet(resources.size()); + for (Resource o : resources) { + if (graph.isInstanceOf(o, mod.Subscription)) + result.add(o); + } + + return result; + } + + @Override + protected Object[] getSelectedObjects() { + return ResourceAdaptionUtils.toResources(getSelection()); + } + + @Override + protected IContributionItem[] getContributionItems(ReadGraph graph, Object[] elements) throws DatabaseException { + final Resource[] resources = (Resource[]) elements; + if (resources.length == 0) + return new IContributionItem[0]; + + // Are there any components in the selection whose inclusion state + // is different from the argument 'included'? + final Collection subscriptions = toSubscriptions(graph, Arrays.asList(resources)); + if (subscriptions.isEmpty()) + return new IContributionItem[0]; + + ModelingResources mod = ModelingResources.getInstance(graph); + + boolean foundNonMatchingEnableStates = false; + for (Resource subscription : subscriptions) { + Boolean isIncluded = graph.getPossibleRelatedValue(subscription, mod.Subscription_Enabled); + if (isIncluded == null) + isIncluded = Boolean.TRUE; + if (isIncluded != include) + foundNonMatchingEnableStates = true; + } + if (!foundNonMatchingEnableStates) + return new IContributionItem[0]; + + return new IContributionItem[] { + new ActionContributionItem(new Action(name, image) { + @Override + public void run() { + Session session = SimanticsUI.peekSession(); + if (session == null) + return; + + SimanticsUI.getSession().asyncRequest(new WriteRequest() { + @Override + public void perform(WriteGraph graph) throws DatabaseException { + new SetSubscriptionEnabled(subscriptions, include).perform(graph); + } + }); + } + }) + }; + } + +}