X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.document.linking.ui%2Fsrc%2Forg%2Fsimantics%2Fdocument%2Flinking%2Factions%2FSearchLinksAction.java;fp=bundles%2Forg.simantics.document.linking.ui%2Fsrc%2Forg%2Fsimantics%2Fdocument%2Flinking%2Factions%2FSearchLinksAction.java;h=82c9e12c6b7aa8d26eb1c02b90803b1147b1e2f0;hb=969bd23cab98a79ca9101af33334000879fb60c5;hp=0000000000000000000000000000000000000000;hpb=866dba5cd5a3929bbeae85991796acb212338a08;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/actions/SearchLinksAction.java b/bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/actions/SearchLinksAction.java new file mode 100644 index 000000000..82c9e12c6 --- /dev/null +++ b/bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/actions/SearchLinksAction.java @@ -0,0 +1,56 @@ +package org.simantics.document.linking.actions; + +import org.eclipse.ui.PlatformUI; +import org.simantics.Simantics; +import org.simantics.databoard.Bindings; +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.layer0.adapter.ActionFactory; +import org.simantics.db.request.Read; +import org.simantics.document.linking.ontology.DocumentLink; +import org.simantics.layer0.Layer0; +import org.simantics.utils.ui.ExceptionUtils; +import org.simantics.workbench.search.ISearchService; +import org.simantics.workbench.search.SearchQuery; + +public class SearchLinksAction implements ActionFactory { + + + + @Override + public Runnable create(Object target) { + if(!(target instanceof Resource)) + return null; + final Resource resource = (Resource)target; + return new Runnable() { + + @Override + public void run() { + try { + String name = Simantics.getSession().syncRequest(new Read() { + @Override + public String perform(ReadGraph graph) + throws DatabaseException { + Layer0 l0 = Layer0.getInstance(graph); + String s = graph.getPossibleRelatedValue(resource, l0.HasLabel, Bindings.STRING); + if (s == null) + s = graph.getRelatedValue(resource, l0.HasName, Bindings.STRING); + return s; + } + }); + ISearchService searchService = (ISearchService)PlatformUI.getWorkbench().getService(ISearchService.class); + SearchQuery query = new SearchQuery(name); + query.setSearchFlag("Name", "on"); + query.setSearchFlag(DocumentLink.URIs.SearchFunction, "on"); + searchService.performQuery(query, ISearchService.ResultBrowser.VIEW, true); + } catch (DatabaseException e) { + ExceptionUtils.logAndShowError("Cannot perform search",e); + } + + + } + }; + } + +}