X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.suite.e4%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fe4%2Fparts%2FQuickSearchView.java;h=5cfbc39517ea159ea9fcb674128e834ce029ebc4;hb=a55bb0dc7e9fbcefb645d34ce24b326d1506a623;hp=3f95d8c4715ec1fd45579f92df20b6f1c4458bb4;hpb=0508f30bba143164a0fe83e3e7343e9375a4b6f4;p=gpl%2Fargeo-suite.git diff --git a/org.argeo.suite.e4/src/org/argeo/suite/e4/parts/QuickSearchView.java b/org.argeo.suite.e4/src/org/argeo/suite/e4/parts/QuickSearchView.java index 3f95d8c..5cfbc39 100644 --- a/org.argeo.suite.e4/src/org/argeo/suite/e4/parts/QuickSearchView.java +++ b/org.argeo.suite.e4/src/org/argeo/suite/e4/parts/QuickSearchView.java @@ -2,6 +2,8 @@ package org.argeo.suite.e4.parts; import static org.argeo.eclipse.ui.EclipseUiUtils.notEmpty; +import java.util.List; + import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.inject.Inject; @@ -18,7 +20,7 @@ import javax.jcr.query.QueryResult; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.activities.ActivitiesService; -import org.argeo.cms.util.CmsUtils; +import org.argeo.cms.ui.util.CmsUiUtils; import org.argeo.connect.ConnectException; import org.argeo.connect.ConnectTypes; import org.argeo.connect.resources.ResourcesService; @@ -33,9 +35,14 @@ import org.argeo.connect.util.XPathUtils; import org.argeo.eclipse.ui.EclipseUiUtils; import org.argeo.jcr.JcrUtils; import org.argeo.people.PeopleService; +import org.eclipse.e4.ui.di.Focus; +import org.eclipse.e4.ui.workbench.modeling.ESelectionService; import org.eclipse.jface.layout.TableColumnLayout; import org.eclipse.jface.viewers.ColumnWeightData; import org.eclipse.jface.viewers.ILabelProvider; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; @@ -67,6 +74,9 @@ public class QuickSearchView implements Refreshable { @Inject private SystemWorkbenchService systemWorkbenchService; + @Inject + private ESelectionService selectionService; + // This page widgets private TableViewer entityViewer; private Text filterTxt; @@ -89,6 +99,7 @@ public class QuickSearchView implements Refreshable { refreshFilteredList(); try { + // new String[] { ConnectTypes.CONNECT_ENTITY } session.getWorkspace().getObservationManager().addEventListener(new EventListener() { @Override @@ -96,7 +107,7 @@ public class QuickSearchView implements Refreshable { parent.getDisplay().asyncExec(() -> refreshFilteredList()); } }, Event.PROPERTY_CHANGED | Event.NODE_ADDED | Event.NODE_REMOVED | Event.PROPERTY_ADDED, "/", true, null, - new String[] { ConnectTypes.CONNECT_ENTITY }, true); + null, false); } catch (RepositoryException e) { throw new ConnectException("Cannot add JCR observer", e); } @@ -170,11 +181,21 @@ public class QuickSearchView implements Refreshable { Table table = v.getTable(); table.setLinesVisible(true); table.setHeaderVisible(false); - CmsUtils.markup(table); - CmsUtils.setItemHeight(table, 26); + CmsUiUtils.markup(table); + CmsUiUtils.setItemHeight(table, 26); v.setContentProvider(new BasicNodeListContentProvider()); v.addDoubleClickListener(new JcrViewerDClickListener(systemWorkbenchService)); + v.addSelectionChangedListener(new ISelectionChangedListener() { + public void selectionChanged(SelectionChangedEvent event) { + IStructuredSelection selection = (IStructuredSelection) event.getSelection(); + List lst = selection.toList(); + if (lst != null && !lst.isEmpty()) + selectionService.setSelection(selection.toList()); + else + selectionService.setSelection(null); + } + }); return v; } @@ -183,7 +204,7 @@ public class QuickSearchView implements Refreshable { JcrUtils.logoutQuietly(session); } - + @Focus public void setFocus() { refreshFilteredList(); filterTxt.setFocus(); @@ -217,6 +238,7 @@ public class QuickSearchView implements Refreshable { // } long begin = System.currentTimeMillis(); + // session.refresh(false); Query xpathQuery = XPathUtils.createQuery(session, xpathQueryStr); xpathQuery.setLimit(ConnectUiConstants.SEARCH_DEFAULT_LIMIT); @@ -224,9 +246,9 @@ public class QuickSearchView implements Refreshable { NodeIterator nit = result.getNodes(); entityViewer.setInput(JcrUtils.nodeIteratorToList(nit)); - if (log.isDebugEnabled()) { + if (log.isTraceEnabled()) { long end = System.currentTimeMillis(); - log.debug("Quick Search - Found: " + nit.getSize() + " in " + (end - begin) + log.trace("Quick Search - Found: " + nit.getSize() + " in " + (end - begin) + " ms by executing XPath query (" + xpathQueryStr + ")."); } } catch (RepositoryException e) { @@ -234,23 +256,24 @@ public class QuickSearchView implements Refreshable { } } -// public void setRepository(Repository repository) { -// this.repository = repository; -// } -// -// public void setResourcesService(ResourcesService resourcesService) { -// this.resourcesService = resourcesService; -// } -// -// public void setActivitiesService(ActivitiesService activitiesService) { -// this.activitiesService = activitiesService; -// } -// -// public void setPeopleService(PeopleService peopleService) { -// this.peopleService = peopleService; -// } -// -// public void setSystemWorkbenchService(SystemWorkbenchService systemWorkbenchService) { -// this.systemWorkbenchService = systemWorkbenchService; -// } + // public void setRepository(Repository repository) { + // this.repository = repository; + // } + // + // public void setResourcesService(ResourcesService resourcesService) { + // this.resourcesService = resourcesService; + // } + // + // public void setActivitiesService(ActivitiesService activitiesService) { + // this.activitiesService = activitiesService; + // } + // + // public void setPeopleService(PeopleService peopleService) { + // this.peopleService = peopleService; + // } + // + // public void setSystemWorkbenchService(SystemWorkbenchService + // systemWorkbenchService) { + // this.systemWorkbenchService = systemWorkbenchService; + // } }