1 package org
.argeo
.app
.ui
.openlayers
;
6 import javax
.jcr
.RepositoryException
;
7 import javax
.jcr
.Session
;
8 import javax
.jcr
.observation
.Event
;
9 import javax
.jcr
.observation
.EventIterator
;
10 import javax
.jcr
.observation
.EventListener
;
11 import javax
.jcr
.query
.Query
;
13 import org
.argeo
.api
.acr
.Content
;
14 import org
.argeo
.api
.cms
.CmsConstants
;
15 import org
.argeo
.app
.api
.EntityType
;
16 import org
.argeo
.cms
.jcr
.acr
.JcrContentProvider
;
17 import org
.argeo
.cms
.swt
.CmsSwtUtils
;
18 import org
.argeo
.cms
.ui
.CmsUiProvider
;
19 import org
.argeo
.jcr
.JcrException
;
20 import org
.argeo
.jcr
.JcrUtils
;
21 import org
.eclipse
.swt
.SWT
;
22 import org
.eclipse
.swt
.layout
.GridLayout
;
23 import org
.eclipse
.swt
.widgets
.Composite
;
24 import org
.eclipse
.swt
.widgets
.Control
;
26 /** Displays an overview map. */
27 public class OverviewMap
implements CmsUiProvider
{
28 private JcrContentProvider jcrContentProvider
;
31 public Control
createUiPart(Composite parent
, Content context
) {
32 parent
.setLayout(new GridLayout());
33 Session session
= jcrContentProvider
.getJcrSession(context
, CmsConstants
.SYS_WORKSPACE
);
36 refreshUi(parent
, session
);
37 String
[] nodeTypes
= { EntityType
.geopoint
.get() };
38 session
.getWorkspace().getObservationManager().addEventListener(new EventListener() {
41 public void onEvent(EventIterator events
) {
42 if (!parent
.isDisposed())
43 parent
.getDisplay().asyncExec(() -> {
45 refreshUi(parent
, session
);
46 } catch (RepositoryException e
) {
47 throw new JcrException(e
);
51 }, Event
.PROPERTY_CHANGED
| Event
.NODE_ADDED
| Event
.NODE_REMOVED
| Event
.PROPERTY_ADDED
, "/", true, null,
53 } catch (RepositoryException e
) {
54 throw new JcrException("Cannot add JCR observer", e
);
60 protected void refreshUi(Composite parent
, Session session
) throws RepositoryException
{
61 CmsSwtUtils
.clear(parent
);
62 Query query
= session
.getWorkspace().getQueryManager()
63 .createQuery("SELECT * FROM [" + EntityType
.geopoint
.get() + "]", Query
.JCR_SQL2
);
64 List
<Node
> geoPoints
= JcrUtils
.nodeIteratorToList(query
.execute().getNodes());
65 OpenLayersMap map
= new OpenLayersMap(parent
, SWT
.NONE
, getClass().getResource("map-osm.html"));
66 map
.setLayoutData(CmsSwtUtils
.fillAll());
68 // apafMap.setZoom(7);
69 // apafMap.setCenter(-2.472, 8.010);
70 map
.addPoints(geoPoints
);
73 public void setJcrContentProvider(JcrContentProvider jcrContentProvider
) {
74 this.jcrContentProvider
= jcrContentProvider
;