X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.app.ui%2Fsrc%2Forg%2Fargeo%2Fapp%2Fui%2Fopenlayers%2FOverviewMap.java;h=e4e63b86eb030f889561c2cefe76bb038926bab6;hp=dbb3119ae2bc4d680bad1e9e79c777243cd5dfd1;hb=97286adeb9f00e02c4a245674ff45628f8aaa9de;hpb=8317c50a86ebb2d50add224816e3dd6103e36150 diff --git a/org.argeo.app.ui/src/org/argeo/app/ui/openlayers/OverviewMap.java b/org.argeo.app.ui/src/org/argeo/app/ui/openlayers/OverviewMap.java index dbb3119..e4e63b8 100644 --- a/org.argeo.app.ui/src/org/argeo/app/ui/openlayers/OverviewMap.java +++ b/org.argeo.app.ui/src/org/argeo/app/ui/openlayers/OverviewMap.java @@ -4,12 +4,16 @@ import java.util.List; import javax.jcr.Node; import javax.jcr.RepositoryException; +import javax.jcr.Session; import javax.jcr.observation.Event; import javax.jcr.observation.EventIterator; import javax.jcr.observation.EventListener; import javax.jcr.query.Query; +import org.argeo.api.acr.Content; +import org.argeo.api.cms.CmsConstants; import org.argeo.app.api.EntityType; +import org.argeo.cms.jcr.acr.JcrContentProvider; import org.argeo.cms.swt.CmsSwtUtils; import org.argeo.cms.ui.CmsUiProvider; import org.argeo.jcr.JcrException; @@ -21,22 +25,24 @@ import org.eclipse.swt.widgets.Control; /** Displays an overview map. */ public class OverviewMap implements CmsUiProvider { + private JcrContentProvider jcrContentProvider; @Override - public Control createUi(Composite parent, Node context) throws RepositoryException { + public Control createUiPart(Composite parent, Content context) { parent.setLayout(new GridLayout()); - refreshUi(parent, context); + Session session = jcrContentProvider.getJcrSession(context, CmsConstants.SYS_WORKSPACE); try { + refreshUi(parent, session); String[] nodeTypes = { EntityType.geopoint.get() }; - context.getSession().getWorkspace().getObservationManager().addEventListener(new EventListener() { + session.getWorkspace().getObservationManager().addEventListener(new EventListener() { @Override public void onEvent(EventIterator events) { if (!parent.isDisposed()) parent.getDisplay().asyncExec(() -> { try { - refreshUi(parent, context); + refreshUi(parent, session); } catch (RepositoryException e) { throw new JcrException(e); } @@ -45,15 +51,15 @@ public class OverviewMap implements CmsUiProvider { }, Event.PROPERTY_CHANGED | Event.NODE_ADDED | Event.NODE_REMOVED | Event.PROPERTY_ADDED, "/", true, null, nodeTypes, false); } catch (RepositoryException e) { - throw new IllegalStateException("Cannot add JCR observer", e); + throw new JcrException("Cannot add JCR observer", e); } return parent; } - protected void refreshUi(Composite parent, Node context) throws RepositoryException { + protected void refreshUi(Composite parent, Session session) throws RepositoryException { CmsSwtUtils.clear(parent); - Query query = context.getSession().getWorkspace().getQueryManager() + Query query = session.getWorkspace().getQueryManager() .createQuery("SELECT * FROM [" + EntityType.geopoint.get() + "]", Query.JCR_SQL2); List geoPoints = JcrUtils.nodeIteratorToList(query.execute().getNodes()); OpenLayersMap map = new OpenLayersMap(parent, SWT.NONE, getClass().getResource("map-osm.html")); @@ -63,4 +69,9 @@ public class OverviewMap implements CmsUiProvider { // apafMap.setCenter(-2.472, 8.010); map.addPoints(geoPoints); } + + public void setJcrContentProvider(JcrContentProvider jcrContentProvider) { + this.jcrContentProvider = jcrContentProvider; + } + }