Merge branch 'v2.x'
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 3 May 2021 07:45:47 +0000 (09:45 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 3 May 2021 07:45:47 +0000 (09:45 +0200)
Conflicts:
core/org.argeo.entity.api/pom.xml
core/org.argeo.entity.core/pom.xml
core/org.argeo.entity.ui/pom.xml
core/org.argeo.suite.core/pom.xml
core/org.argeo.suite.theme.default/pom.xml
core/org.argeo.suite.ui.rap/pom.xml
core/org.argeo.suite.ui/pom.xml
core/pom.xml
dep/org.argeo.suite.dep.e4.rap/pom.xml
dep/org.argeo.suite.dep.ui.rap/pom.xml
dep/pom.xml
dist/argeo-office/pom.xml
dist/argeo-suite-demo/pom.xml
dist/pom.xml
environment/org.argeo.geo.ui/pom.xml
environment/pom.xml
knowledge/org.argeo.support.geonames/pom.xml
knowledge/org.argeo.support.odk/pom.xml
knowledge/org.argeo.support.xforms/pom.xml
knowledge/pom.xml
lib/pom.xml
library/org.argeo.documents.ui/pom.xml
library/pom.xml
people/org.argeo.people.ui/pom.xml
people/pom.xml
pom.xml
publishing/org.argeo.publishing.ui/pom.xml
publishing/pom.xml

59 files changed:
core/org.argeo.entity.api/pom.xml
core/org.argeo.entity.api/src/org/argeo/entity/entity.cnd
core/org.argeo.entity.core/pom.xml
core/org.argeo.entity.ui/pom.xml
core/org.argeo.suite.core/pom.xml
core/org.argeo.suite.core/src/org/argeo/suite/core/CustomMaintenanceService.java
core/org.argeo.suite.theme.default/pom.xml
core/org.argeo.suite.ui.rap/pom.xml
core/org.argeo.suite.ui/OSGI-INF/l10n/bundle.properties
core/org.argeo.suite.ui/OSGI-INF/leadPane.xml
core/org.argeo.suite.ui/pom.xml
core/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultLeadPane.java
core/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteUi.java
core/pom.xml
dep/org.argeo.suite.dep.e4.rap/pom.xml
dep/org.argeo.suite.dep.ui.rap/pom.xml
dep/pom.xml
dist/argeo-office/pom.xml
dist/argeo-suite-demo/pom.xml
dist/pom.xml
environment/org.argeo.geo.ui/.project
environment/org.argeo.geo.ui/OSGI-INF/l10n/bundle.properties [new file with mode: 0644]
environment/org.argeo.geo.ui/OSGI-INF/mapLayer.xml [new file with mode: 0644]
environment/org.argeo.geo.ui/OSGI-INF/overviewMap.xml [new file with mode: 0644]
environment/org.argeo.geo.ui/bnd.bnd
environment/org.argeo.geo.ui/config/mapLayer.properties [new file with mode: 0644]
environment/org.argeo.geo.ui/config/overviewMap.properties [new file with mode: 0644]
environment/org.argeo.geo.ui/pom.xml
environment/org.argeo.geo.ui/src/org/argeo/support/openlayers/OverviewMap.java [new file with mode: 0644]
environment/org.argeo.geo.ui/src/org/argeo/support/openlayers/map-osm.html [new file with mode: 0644]
environment/pom.xml
knowledge/org.argeo.support.geonames/pom.xml
knowledge/org.argeo.support.odk/pom.xml
knowledge/org.argeo.support.xforms/pom.xml
knowledge/pom.xml
lib/pom.xml
library/org.argeo.documents.ui/OSGI-INF/l10n/bundle.properties [new file with mode: 0644]
library/org.argeo.documents.ui/config/documentsLayer.properties
library/org.argeo.documents.ui/pom.xml
library/org.argeo.documents.ui/src/org/argeo/documents/ui/DocumentsFolderUiProvider.java
library/pom.xml
people/org.argeo.people.ui/.project
people/org.argeo.people.ui/OSGI-INF/l10n/bundle.properties [new file with mode: 0644]
people/org.argeo.people.ui/OSGI-INF/peopleEntryArea.xml [new file with mode: 0644]
people/org.argeo.people.ui/OSGI-INF/peopleLayer.xml [new file with mode: 0644]
people/org.argeo.people.ui/OSGI-INF/personUiProvider.xml [new file with mode: 0644]
people/org.argeo.people.ui/bnd.bnd
people/org.argeo.people.ui/config/peopleEntryArea.properties [new file with mode: 0644]
people/org.argeo.people.ui/config/peopleLayer.properties [new file with mode: 0644]
people/org.argeo.people.ui/config/personUiProvider.properties [new file with mode: 0644]
people/org.argeo.people.ui/pom.xml
people/org.argeo.people.ui/src/org/argeo/people/ui/PeopleEntryArea.java [new file with mode: 0644]
people/org.argeo.people.ui/src/org/argeo/people/ui/PersonUiProvider.java [new file with mode: 0644]
people/pom.xml
pom.xml
publishing/org.argeo.publishing.ui/pom.xml
publishing/org.argeo.publishing.ui/src/org/argeo/docbook/DbkUtils.java
publishing/pom.xml
sdk/argeo-suite-rap.properties

index 1d2e27f97ff45d610c149fee80eae207fb938c4d..c0723fe8414d98fa6787f767005293bb1e3bbab9 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>core</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>org.argeo.entity.api</artifactId>
index b30657d06c536c12fab0102d85cee7b5518d1702..b64a275a116788f9a5e1fbdf0f83d164e445d07d 100644 (file)
@@ -43,7 +43,7 @@ mixin
 
 [entity:term]
 orderable
-- name (NAME) m
+- name (NAME)
 - * (*)
 + term (entity:term) = entity:term *
 
index 210aa221ee9ea0ad5349cf3443bba265ef8fc941..39b697e72ea132c5bff5fd50249f947f41f11d70 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>core</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>org.argeo.entity.core</artifactId>
@@ -14,7 +14,7 @@
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.entity.api</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
 
                <!-- Argeo Commons -->
index 469fc80ace72c807d013b8f05e4bcf90bc47fbca..d635fbf8664096d7c4b00ed3a490b26239b8844a 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>core</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>org.argeo.entity.ui</artifactId>
@@ -14,7 +14,7 @@
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.entity.core</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
 
                <!-- Argeo Commons -->
index 2ca0e5b9f2a7c612aff4eb08db7d3a6db664f168..0c1d40bef094797c77183662f63583cbd19f02d2 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>core</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>org.argeo.suite.core</artifactId>
@@ -14,7 +14,7 @@
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.entity.core</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
 
                <!-- Argeo Commons -->
index aaaaafacdade2144915884ec11f0524892784c24..5d76eb126ae5ec4c83cf21d7de33316e385d9c88 100644 (file)
@@ -36,6 +36,7 @@ public abstract class CustomMaintenanceService extends AbstractMaintenanceServic
                        for (String terms : typologies) {
                                loadTerms(termsBase, terms);
                        }
+                       // TODO do not save here, so that upper layers can decide when to save
                        termsBase.getSession().save();
                }
        }
@@ -62,6 +63,7 @@ public abstract class CustomMaintenanceService extends AbstractMaintenanceServic
                        }
                        if (log.isDebugEnabled())
                                log.debug("Terms '" + name + "' loaded.");
+                       // TODO do not save here, so that upper layers can decide when to save
                        termsBase.getSession().save();
                } catch (RepositoryException | IOException e) {
                        log.error("Cannot load terms '" + name + "': " + e.getMessage());
index 5afd257e2f7be41d24aef395ac16affae713eef5..e9f009237426d36f0d6d0c0d88f9b731c058a992 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>core</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>org.argeo.suite.theme.default</artifactId>
index 35d1ccf2262642db157371c7703b9a07184e6a24..a8a1e80bef085bf917230586a029dd8af1b01770 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>core</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>org.argeo.suite.ui.rap</artifactId>
@@ -14,7 +14,7 @@
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.suite.ui</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
 
                <!-- Eclipse E4 -->
index 3d0815543fac3bd7e2b3302010f0a14e25f6e068..5716780181a30dccf84dde6a90df9340f661794c 100644 (file)
@@ -1,5 +1,5 @@
 dashboard=dashboard
-people=contacts
+#people=contacts
 documents=documents
 locations=locations
 recentItems=recent items
index 0775c5790f6044fdfefb49254e963f442381ecef..1aeec0ab8efef0d329f9f537b2354dd12d31dfd0 100644 (file)
@@ -7,6 +7,8 @@
    <properties entry="config/leadPane.properties"/>
    <property name="defaultLayers" type="String">argeo.suite.ui.dashboardLayer
 argeo.documents.ui.documentsLayer
+argeo.people.ui.peopleLayer
+argeo.geo.ui.mapLayer
    </property>
    <reference bind="addLayer" cardinality="1..n" interface="org.argeo.suite.ui.SuiteLayer" name="SuiteLayer" policy="dynamic" unbind="removeLayer"/>
 </scr:component>
index c1bf9b456883e086ba0f42564be31b9a2be60068..2436864320daf359a1f7f1879b4515fbfbefe05f 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>core</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>org.argeo.suite.ui</artifactId>
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.suite.core</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.entity.ui</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
 
                <!-- Argeo Commons -->
index b2ebcb297b1e6200d65d937eedb3f02d98023714..46de1770abf67a9eeebab2b61a830f743941f071 100644 (file)
@@ -59,15 +59,20 @@ public class DefaultLeadPane implements CmsUiProvider {
                appLayersC.setLayout(layout);
                appLayersC.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false));
 
-               Composite adminLayersC = new Composite(parent, SWT.NONE);
-               CmsUiUtils.style(adminLayersC, SuiteStyle.leadPane);
-               GridLayout adminLayout = new GridLayout();
-               adminLayout.verticalSpacing = 10;
-               adminLayout.marginBottom = 10;
-               adminLayout.marginLeft = 10;
-               adminLayout.marginRight = 10;
-               adminLayersC.setLayout(adminLayout);
-               adminLayersC.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, false, true));
+               Composite adminLayersC;
+               if (!adminLayers.isEmpty()) {
+                       adminLayersC = new Composite(parent, SWT.NONE);
+                       CmsUiUtils.style(adminLayersC, SuiteStyle.leadPane);
+                       GridLayout adminLayout = new GridLayout();
+                       adminLayout.verticalSpacing = 10;
+                       adminLayout.marginBottom = 10;
+                       adminLayout.marginLeft = 10;
+                       adminLayout.marginRight = 10;
+                       adminLayersC.setLayout(adminLayout);
+                       adminLayersC.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, false, true));
+               } else {
+                       adminLayersC = null;
+               }
 
 //             boolean isAdmin = cmsView.doAs(() -> CurrentUser.isInRole(NodeConstants.ROLE_USER_ADMIN));
                Set<String> userRoles = cmsView.doAs(() -> CurrentUser.roles());
index 816c65818605761c73d4713d3fda98471ba48806..ca2d9c38378321042e3997468a40bf431a3f8060 100644 (file)
@@ -32,7 +32,7 @@ class SuiteUi extends Composite {
        private Composite dynamicArea;
 
        private Session sysSession;
-//     private Session homeSession;
+       private Session homeSession;
        private Node userDir;
 
        private Map<String, SuiteLayer> layers = new HashMap<>();
@@ -205,11 +205,11 @@ class SuiteUi extends Composite {
 //
        synchronized void initSessions(Repository repository, String userDirPath) throws RepositoryException {
                this.sysSession = repository.login();
-//             this.homeSession = repository.login(NodeConstants.HOME_WORKSPACE);
+               this.homeSession = repository.login(NodeConstants.HOME_WORKSPACE);
                userDir = sysSession.getNode(userDirPath);
                addDisposeListener((e) -> {
                        Jcr.logout(sysSession);
-//                     Jcr.logout(homeSession);
+                       Jcr.logout(homeSession);
                });
        }
 
@@ -226,8 +226,8 @@ class SuiteUi extends Composite {
                        return sysSession;
                if (NodeConstants.SYS_WORKSPACE.equals(workspaceName))
                        return sysSession;
-//             else if (NodeConstants.HOME_WORKSPACE.equals(workspaceName))
-//                     return homeSession;
+               else if (NodeConstants.HOME_WORKSPACE.equals(workspaceName))
+                       return homeSession;
                else
                        throw new IllegalArgumentException("Unknown workspace " + workspaceName);
        }
index 89a70489abbda6a4c45e1a0cc7c03f94dc354dc8..a8ef5a0355662cf19ca29d2b89c61e221aa17c93 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>argeo-suite</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>core</artifactId>
index 16f134a09e20cc195b67f6d4ead62af4343866d9..30ff3b6bea805afe043965317b45ee180d047dc8 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>dep</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>org.argeo.suite.dep.e4.rap</artifactId>
@@ -15,7 +15,7 @@
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.suite.dep.ui.rap</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                        <type>pom</type>
                </dependency>
 
index da08a36987dc668a39e882e7dab8008d6ecf9515..a70a582902de3525625afe0a2f05c5253b46b037 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>dep</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>org.argeo.suite.dep.ui.rap</artifactId>
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.entity.api</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.entity.core</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.entity.ui</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
 
                <!-- Argeo Suite Icons -->
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.suite.core</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.suite.ui</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.suite.theme.default</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.suite.ui.rap</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
 
                <!-- Argeo People -->
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.people.ui</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
 
                <!-- Argeo Library -->
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.documents.ui</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
 
                <!-- Argeo Environment -->
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.geo.ui</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
 
                <!-- Argeo Publishing -->
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.publishing.ui</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
 
                <!-- Argeo Knowledge -->
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.support.xforms</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.support.odk</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.support.geonames</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
 
                <!-- Additional Third Parties -->
index 8db55f65bf2bc861ff42ecda41ae84d8302aa74e..60dc03490ecca4a50f22501d700131fbfc721d10 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>argeo-suite</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>dep</artifactId>
index 0d3aba3507e87176b4fdd6d18bfda66c06cf0156..dc4c578342dd7de45cc195f3cb347fb210ea40ca 100644 (file)
@@ -3,7 +3,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>dist</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>argeo-office</artifactId>
@@ -28,7 +28,7 @@
                                <dependency>
                                        <groupId>org.argeo.suite</groupId>
                                        <artifactId>org.argeo.suite.dep.e4.rap</artifactId>
-                                       <version>2.1.23-SNAPSHOT</version>
+                                       <version>2.3.1-SNAPSHOT</version>
                                </dependency>
                                <dependency>
                                        <groupId>org.argeo.commons</groupId>
index 53caf85004bbfd9c3a350d02141b16855102ce75..c31fc7dedb6a8fb60fa3b433b534b5f6706997ae 100644 (file)
@@ -3,7 +3,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>dist</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>argeo-suite-demo</artifactId>
index 83c971b965a932dc6e7696e8f1a19ea292e787df..38c2521bfd38c7e756b3b4dcecfc43e3860f4a44 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>argeo-suite</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>dist</artifactId>
index 7956c3413c069b551427fc0c1e019eeb4fd62dac..a25e06f913454f03db66c43d48cbdbe9e91bdb83 100644 (file)
                        <arguments>
                        </arguments>
                </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.ds.core.builder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
        </buildSpec>
        <natures>
                <nature>org.eclipse.pde.PluginNature</nature>
diff --git a/environment/org.argeo.geo.ui/OSGI-INF/l10n/bundle.properties b/environment/org.argeo.geo.ui/OSGI-INF/l10n/bundle.properties
new file mode 100644 (file)
index 0000000..3ded5eb
--- /dev/null
@@ -0,0 +1 @@
+map=map
diff --git a/environment/org.argeo.geo.ui/OSGI-INF/mapLayer.xml b/environment/org.argeo.geo.ui/OSGI-INF/mapLayer.xml
new file mode 100644 (file)
index 0000000..7cf8487
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="init" deactivate="destroy">
+   <implementation class="org.argeo.suite.ui.DefaultEditionLayer"/>
+   <properties entry="config/mapLayer.properties"/>
+   <service>
+      <provide interface="org.argeo.suite.ui.SuiteLayer"/>
+   </service>
+   <reference bind="setWorkArea" cardinality="1..1" interface="org.argeo.cms.ui.CmsUiProvider" name="CmsUiProvider" policy="dynamic" target="(service.pid=argeo.geo.ui.overviewMap)"/>
+</scr:component>
diff --git a/environment/org.argeo.geo.ui/OSGI-INF/overviewMap.xml b/environment/org.argeo.geo.ui/OSGI-INF/overviewMap.xml
new file mode 100644 (file)
index 0000000..c75200a
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0">
+   <implementation class="org.argeo.support.openlayers.OverviewMap"/>
+   <properties entry="config/overviewMap.properties"/>
+   <service>
+      <provide interface="org.argeo.cms.ui.CmsUiProvider"/>
+   </service>
+</scr:component>
index 9a3ff7b250253711e818b06c8b81f9a84b4579a5..a50ed4316ed5fbf11471f50e2d8b12a806e7bd2e 100644 (file)
@@ -8,3 +8,7 @@ org.eclipse.swt,\
 org.eclipse.jface.viewers,\
 org.osgi.framework,\
 *
+
+Service-Component:\
+OSGI-INF/mapLayer.xml,\
+OSGI-INF/overviewMap.xml
diff --git a/environment/org.argeo.geo.ui/config/mapLayer.properties b/environment/org.argeo.geo.ui/config/mapLayer.properties
new file mode 100644 (file)
index 0000000..37bf3c7
--- /dev/null
@@ -0,0 +1,6 @@
+service.pid=argeo.geo.ui.mapLayer
+
+title=%map
+icon=map
+
+entity.type=entity:geopoint
diff --git a/environment/org.argeo.geo.ui/config/overviewMap.properties b/environment/org.argeo.geo.ui/config/overviewMap.properties
new file mode 100644 (file)
index 0000000..d842c98
--- /dev/null
@@ -0,0 +1 @@
+service.pid=argeo.geo.ui.overviewMap
index 01c8d3d77b551d27bd14f38601839377d66c7612..a5a4711db8257aad207f5721336fb343ada01c34 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>environment</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>org.argeo.geo.ui</artifactId>
@@ -14,7 +14,7 @@
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.suite.ui</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
 
                <!-- Eclipse E4 -->
diff --git a/environment/org.argeo.geo.ui/src/org/argeo/support/openlayers/OverviewMap.java b/environment/org.argeo.geo.ui/src/org/argeo/support/openlayers/OverviewMap.java
new file mode 100644 (file)
index 0000000..8ecdc1c
--- /dev/null
@@ -0,0 +1,66 @@
+package org.argeo.support.openlayers;
+
+import java.util.List;
+
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import javax.jcr.observation.Event;
+import javax.jcr.observation.EventIterator;
+import javax.jcr.observation.EventListener;
+import javax.jcr.query.Query;
+
+import org.argeo.cms.ui.CmsUiProvider;
+import org.argeo.cms.ui.util.CmsUiUtils;
+import org.argeo.entity.EntityType;
+import org.argeo.jcr.JcrException;
+import org.argeo.jcr.JcrUtils;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+
+/** Displays an overview map. */
+public class OverviewMap implements CmsUiProvider {
+
+       @Override
+       public Control createUi(Composite parent, Node context) throws RepositoryException {
+               parent.setLayout(new GridLayout());
+               refreshUi(parent, context);
+
+               try {
+                       String[] nodeTypes = { EntityType.geopoint.get() };
+                       context.getSession().getWorkspace().getObservationManager().addEventListener(new EventListener() {
+
+                               @Override
+                               public void onEvent(EventIterator events) {
+                                       if (!parent.isDisposed())
+                                               parent.getDisplay().asyncExec(() -> {
+                                                       try {
+                                                               refreshUi(parent, context);
+                                                       } catch (RepositoryException e) {
+                                                               throw new JcrException(e);
+                                                       }
+                                               });
+                               }
+                       }, 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);
+               }
+
+               return parent;
+       }
+
+       protected void refreshUi(Composite parent, Node context) throws RepositoryException {
+               CmsUiUtils.clear(parent);
+               Query query = context.getSession().getWorkspace().getQueryManager()
+                               .createQuery("SELECT * FROM [" + EntityType.geopoint.get() + "]", Query.JCR_SQL2);
+               List<Node> geoPoints = JcrUtils.nodeIteratorToList(query.execute().getNodes());
+               OpenLayersMap apafMap = new OpenLayersMap(parent, SWT.NONE, getClass().getResource("map-osm.html"));
+               apafMap.setLayoutData(CmsUiUtils.fillAll());
+
+               // apafMap.setZoom(7);
+               // apafMap.setCenter(-2.472, 8.010);
+               apafMap.addPoints(geoPoints);
+       }
+}
diff --git a/environment/org.argeo.geo.ui/src/org/argeo/support/openlayers/map-osm.html b/environment/org.argeo.geo.ui/src/org/argeo/support/openlayers/map-osm.html
new file mode 100644 (file)
index 0000000..157d708
--- /dev/null
@@ -0,0 +1,41 @@
+<html lang="en">
+<head>
+<link rel="stylesheet"
+       href="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.4.3/css/ol.css"
+       type="text/css">
+<style>
+</style>
+<script
+       src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.4.3/build/ol.js"></script>
+</head>
+<body>
+       <div id="map" class="map"></div>
+       <script type="text/javascript">
+       // default OSM
+       var source_OSM = new ol.source.OSM();
+       
+       var map = new ol.Map({
+                       target : 'map',
+                       layers : [ new ol.layer.Tile({
+                               source : source_OSM
+                       }) ],
+                       view : new ol.View({
+                               center : ol.proj.fromLonLat([ 34, 34 ]),
+                               zoom : 4
+                       })
+               });
+               map.on('rendercomplete', e => {
+                       console.log('Render completed.');
+                       renderCompleted();
+               });
+               var select = new ol.interaction.Select();
+               map.addInteraction(select);
+           select.on('select',function (e) {
+               if(e.selected.length>0){
+                               console.log('Feature selected: '+e.selected[0].get('path'));
+                       onFeatureSelect(e.selected[0].get('path'));
+               }
+           });
+       </script>
+</body>
+</html>
\ No newline at end of file
index 1fc61bd78a9daa8e399c3fe6920ea1a3c0f06819..7e13702d56a5fca8f60e97d81431bdb927448625 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>argeo-suite</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>environment</artifactId>
index 6f725fabf20af99fe6bcc68e160f0c33440a4803..7587ef365e78d51fabd5bf6d08a2ca3a4cfc4165 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>knowledge</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>org.argeo.support.geonames</artifactId>
index 76f855c7fe9ea730c22708e5cdf9f22c9eb531ab..2b6834770523505f5f2a2f59c5623230e345a163 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>knowledge</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>org.argeo.support.odk</artifactId>
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.suite.core</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.support.xforms</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
        </dependencies>
 </project>
index f02a5022b882c03d6bf738d808e4963da2c9a1ae..d97f8c72da9bd613416608275d26fed9f96eeb87 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>knowledge</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>org.argeo.support.xforms</artifactId>
@@ -14,7 +14,7 @@
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.suite.core</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
        </dependencies>
 </project>
index e5079d9261f5a3a210fe111b8627c3beae126357..6a0890ef7d9008c6311bfd1223d455b6726fd02e 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>argeo-suite</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>knowledge</artifactId>
index 4f5cbca6486b3c7785d7a02fffd5d48f3d83fd44..81d3d89020defd42827f4f5bd8e535ea6a446ba4 100644 (file)
@@ -10,7 +10,7 @@
        <packaging>pom</packaging>
        <name>Parent POM for Argeo Suite Extensions</name>
        <description />
-       <version>2.1.23-SNAPSHOT</version>
+       <version>2.3.1-SNAPSHOT</version>
        <properties>
                <!-- Dependencies -->
                <version.argeo-tp>2.1.27</version.argeo-tp>
@@ -18,7 +18,7 @@
                <version.argeo-commons>[2.1.102,2.3.0-SNAPSHOT)</version.argeo-commons>
                <version.argeo-suite-icons>[2.1.1,2.3.0-SNAPSHOT)</version.argeo-suite-icons>
 
-               <argeo.rpm.stagingRepository>/srv/rpmfactory/testing/argeo</argeo.rpm.stagingRepository>
+               <argeo.rpm.stagingRepository>/srv/rpmfactory/unstable/argeo</argeo.rpm.stagingRepository>
                <git.rw />
        </properties>
        <dependencies>
@@ -30,7 +30,7 @@
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.suite.dep.ui.rap</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                        <scope>provided</scope>
                        <exclusions>
                                <exclusion>
                                <enabled>false</enabled>
                        </snapshots>
                </repository>
+               <repository>
+                       <id>argeo-unstable</id>
+                       <url>http://forge.argeo.org/data/java/argeo-2.3/</url>
+                       <releases>
+                               <enabled>true</enabled>
+                               <updatePolicy>never</updatePolicy>
+                               <checksumPolicy>warn</checksumPolicy>
+                       </releases>
+                       <snapshots>
+                               <enabled>false</enabled>
+                       </snapshots>
+               </repository>
        </repositories>
        <reporting>
                <plugins>
                        </plugin>
                </plugins>
        </reporting>
-
-  <scm>
-    <tag>v2.x</tag>
-  </scm>
 </project>
diff --git a/library/org.argeo.documents.ui/OSGI-INF/l10n/bundle.properties b/library/org.argeo.documents.ui/OSGI-INF/l10n/bundle.properties
new file mode 100644 (file)
index 0000000..8015421
--- /dev/null
@@ -0,0 +1 @@
+content=content
index 1c6222298cbc7099f428577a6fc5cfa78592c37f..78382a6952585ec7d76374ec106cb9b748f04ba0 100644 (file)
@@ -1,4 +1,6 @@
 service.pid=argeo.documents.ui.documentsLayer
 
-title=Documents
-icon=documents
\ No newline at end of file
+title=%content
+icon=documents
+
+entity.type=nt:folder
index a5da9fb85738dd0c87a3c0f929cee35d48fd8d70..2c59ff32c35c2039f502325a56a0236b1e862e47 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>library</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>org.argeo.documents.ui</artifactId>
@@ -14,7 +14,7 @@
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.suite.ui</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
 
                <!-- Eclipse E4 -->
index 2210b9fec8ac3b420f59cad3eabc87b08a1ebf86..e525a9e61cff9b43e75bb53b751e88b45361a4a1 100644 (file)
@@ -1,5 +1,6 @@
 package org.argeo.documents.ui;
 
+import java.nio.file.Path;
 import java.nio.file.spi.FileSystemProvider;
 
 import javax.jcr.Node;
@@ -9,6 +10,8 @@ import org.argeo.cms.fs.CmsFsUtils;
 import org.argeo.cms.ui.CmsUiProvider;
 import org.argeo.cms.ui.CmsView;
 import org.argeo.cms.ui.util.CmsUiUtils;
+import org.argeo.jcr.Jcr;
+import org.argeo.suite.ui.SuiteEvent;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
@@ -20,7 +23,15 @@ public class DocumentsFolderUiProvider implements CmsUiProvider {
        @Override
        public Control createUi(Composite parent, Node context) throws RepositoryException {
                CmsView cmsView = CmsView.getCmsView(parent);
-               DocumentsFolderComposite dfc = new DocumentsFolderComposite(parent, SWT.NONE, context);
+               DocumentsFolderComposite dfc = new DocumentsFolderComposite(parent, SWT.NONE, context) {
+
+                       @Override
+                       protected void externalNavigateTo(Path path) {
+                               Node folderNode = cmsView.doAs(() -> CmsFsUtils.getNode(Jcr.getSession(context).getRepository(), path));
+                               parent.addDisposeListener((e1) -> Jcr.logout(folderNode));
+                               cmsView.sendEvent(SuiteEvent.openNewPart.topic(), SuiteEvent.eventProperties(folderNode));
+                       }
+               };
                dfc.setLayoutData(CmsUiUtils.fillAll());
                dfc.populate(cmsView.doAs(() -> CmsFsUtils.getPath(nodeFileSystemProvider, context)));
                return dfc;
index 4d2e6a7fb6a32027546866659147ad9b7c4fbd81..ea3ef63ea4395507d25c3de28695f60f2faebdf3 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>argeo-suite</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>library</artifactId>
index 1df2bced95f444aec1f7efc4a88e5afa8ed7f2e0..b3d17dfd4aaf985a4e3f56c665b3b320330663a7 100644 (file)
                        <arguments>
                        </arguments>
                </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.ds.core.builder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
        </buildSpec>
        <natures>
                <nature>org.eclipse.pde.PluginNature</nature>
diff --git a/people/org.argeo.people.ui/OSGI-INF/l10n/bundle.properties b/people/org.argeo.people.ui/OSGI-INF/l10n/bundle.properties
new file mode 100644 (file)
index 0000000..e619de4
--- /dev/null
@@ -0,0 +1 @@
+people=people
diff --git a/people/org.argeo.people.ui/OSGI-INF/peopleEntryArea.xml b/people/org.argeo.people.ui/OSGI-INF/peopleEntryArea.xml
new file mode 100644 (file)
index 0000000..9601294
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0">
+   <implementation class="org.argeo.people.ui.PeopleEntryArea"/>
+   <service>
+      <provide interface="org.argeo.cms.ui.CmsUiProvider"/>
+   </service>
+   <properties entry="config/peopleEntryArea.properties"/>
+   <reference bind="setCmsUserManager" cardinality="1..1" interface="org.argeo.cms.CmsUserManager" name="CmsUserManager" policy="static"/>
+</scr:component>
diff --git a/people/org.argeo.people.ui/OSGI-INF/peopleLayer.xml b/people/org.argeo.people.ui/OSGI-INF/peopleLayer.xml
new file mode 100644 (file)
index 0000000..09392aa
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="init" deactivate="destroy">
+   <implementation class="org.argeo.suite.ui.DefaultEditionLayer"/>
+   <properties entry="config/peopleLayer.properties"/>
+   <service>
+      <provide interface="org.argeo.suite.ui.SuiteLayer"/>
+   </service>
+   <reference bind="setEntryArea" cardinality="1..1" interface="org.argeo.cms.ui.CmsUiProvider" name="CmsUiProvider" policy="dynamic" target="(service.pid=argeo.people.ui.peopleEntryArea)"/>
+</scr:component>
diff --git a/people/org.argeo.people.ui/OSGI-INF/personUiProvider.xml b/people/org.argeo.people.ui/OSGI-INF/personUiProvider.xml
new file mode 100644 (file)
index 0000000..f727bf8
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="init">
+   <implementation class="org.argeo.people.ui.PersonUiProvider"/>
+   <service>
+      <provide interface="org.argeo.cms.ui.CmsUiProvider"/>
+   </service>
+   <properties entry="config/personUiProvider.properties"/>
+   <property name="availableRoles" type="String">
+cn=APAF Internationale,ou=Groups,dc=apaf,dc=on,dc=djapps,dc=org
+cn=APAF Côte d'Ivoire Admin,ou=Groups,dc=apaf,dc=on,dc=djapps,dc=org
+cn=APAF Côte d'Ivoire,ou=Groups,dc=apaf,dc=on,dc=djapps,dc=org
+cn=APAF Togo Admin,ou=Groups,dc=apaf,dc=on,dc=djapps,dc=org
+cn=APAF Togo,ou=Groups,dc=apaf,dc=on,dc=djapps,dc=org
+   </property>
+   <reference bind="setCmsUserManager" cardinality="1..1" interface="org.argeo.cms.CmsUserManager" name="CmsUserManager" policy="static"/>
+</scr:component>
index 50f43644e62d4f921cc7134008c77e07c85b132d..1b92ebbbde79a8000f995d1ef0f1849ee6a663e4 100644 (file)
@@ -8,3 +8,9 @@ org.eclipse.jface.viewers,\
 org.eclipse.jface.window,\
 org.osgi.framework,\
 *
+
+Service-Component:\
+OSGI-INF/peopleLayer.xml,\
+OSGI-INF/personUiProvider.xml,\
+OSGI-INF/peopleEntryArea.xml
+
diff --git a/people/org.argeo.people.ui/config/peopleEntryArea.properties b/people/org.argeo.people.ui/config/peopleEntryArea.properties
new file mode 100644 (file)
index 0000000..37b28f9
--- /dev/null
@@ -0,0 +1 @@
+service.pid=argeo.people.ui.peopleEntryArea
diff --git a/people/org.argeo.people.ui/config/peopleLayer.properties b/people/org.argeo.people.ui/config/peopleLayer.properties
new file mode 100644 (file)
index 0000000..adadb7b
--- /dev/null
@@ -0,0 +1,7 @@
+service.pid=argeo.people.ui.peopleLayer
+
+icon=people
+weights=5000,5000
+title=%people
+
+entity.type=entity:person
\ No newline at end of file
diff --git a/people/org.argeo.people.ui/config/personUiProvider.properties b/people/org.argeo.people.ui/config/personUiProvider.properties
new file mode 100644 (file)
index 0000000..8c40c7d
--- /dev/null
@@ -0,0 +1,3 @@
+service.pid=argeo.people.ui.personUiProvider
+
+entity.type=entity:person
\ No newline at end of file
index b96cf4cd249ea1af1d3d8c2845e0ad27d94ca828..07589a464c9a9b2b597a938ebde2d941b7aa28ee 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>people</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>org.argeo.people.ui</artifactId>
@@ -14,7 +14,7 @@
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.suite.ui</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
 
                <!-- Eclipse E4 -->
diff --git a/people/org.argeo.people.ui/src/org/argeo/people/ui/PeopleEntryArea.java b/people/org.argeo.people.ui/src/org/argeo/people/ui/PeopleEntryArea.java
new file mode 100644 (file)
index 0000000..2fd38da
--- /dev/null
@@ -0,0 +1,184 @@
+package org.argeo.people.ui;
+
+import java.util.Set;
+
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+
+import org.argeo.cms.CmsUserManager;
+import org.argeo.cms.ui.CmsTheme;
+import org.argeo.cms.ui.CmsUiProvider;
+import org.argeo.cms.ui.CmsView;
+import org.argeo.cms.ui.dialogs.CmsWizardDialog;
+import org.argeo.cms.ui.util.CmsUiUtils;
+import org.argeo.eclipse.ui.Selected;
+import org.argeo.naming.LdapAttrs;
+import org.argeo.suite.SuiteRole;
+import org.argeo.suite.ui.SuiteEvent;
+import org.argeo.suite.ui.SuiteIcon;
+import org.argeo.suite.ui.dialogs.NewUserWizard;
+import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.window.Window;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.ToolItem;
+import org.osgi.service.useradmin.User;
+
+/** Entry to the admin area. */
+public class PeopleEntryArea implements CmsUiProvider {
+
+       private CmsUserManager cmsUserManager;
+
+       @Override
+       public Control createUi(Composite parent, Node context) throws RepositoryException {
+               CmsTheme theme = CmsTheme.getCmsTheme(parent);
+               parent.setLayout(new GridLayout());
+               TableViewer usersViewer = new TableViewer(parent);
+               usersViewer.setContentProvider(new UsersContentProvider());
+
+               TableViewerColumn idCol = new TableViewerColumn(usersViewer, SWT.NONE);
+               idCol.getColumn().setWidth(70);
+               idCol.setLabelProvider(new ColumnLabelProvider() {
+
+                       @Override
+                       public String getText(Object element) {
+
+                               return getUserProperty(element, LdapAttrs.uid.name());
+                       }
+               });
+
+               TableViewerColumn givenNameCol = new TableViewerColumn(usersViewer, SWT.NONE);
+               givenNameCol.getColumn().setWidth(150);
+               givenNameCol.setLabelProvider(new ColumnLabelProvider() {
+
+                       @Override
+                       public String getText(Object element) {
+
+                               return getUserProperty(element, LdapAttrs.givenName.name());
+                       }
+               });
+
+               TableViewerColumn snCol = new TableViewerColumn(usersViewer, SWT.NONE);
+               snCol.getColumn().setWidth(150);
+               snCol.setLabelProvider(new ColumnLabelProvider() {
+
+                       @Override
+                       public String getText(Object element) {
+
+                               return getUserProperty(element, LdapAttrs.sn.name());
+                       }
+               });
+
+               TableViewerColumn mailCol = new TableViewerColumn(usersViewer, SWT.NONE);
+               mailCol.getColumn().setWidth(400);
+               mailCol.setLabelProvider(new ColumnLabelProvider() {
+
+                       @Override
+                       public String getText(Object element) {
+
+                               return getUserProperty(element, LdapAttrs.mail.name());
+                       }
+               });
+
+               Composite bottom = new Composite(parent, SWT.NONE);
+               bottom.setLayoutData(CmsUiUtils.fillWidth());
+               bottom.setLayout(CmsUiUtils.noSpaceGridLayout());
+               ToolBar bottomToolBar = new ToolBar(bottom, SWT.NONE);
+               bottomToolBar.setLayoutData(new GridData(SWT.END, SWT.FILL, true, false));
+               ToolItem deleteItem = new ToolItem(bottomToolBar, SWT.FLAT);
+               deleteItem.setEnabled(false);
+//             CmsUiUtils.style(deleteItem, SuiteStyle.recentItems);
+               deleteItem.setImage(SuiteIcon.delete.getSmallIcon(theme));
+               ToolItem addItem = new ToolItem(bottomToolBar, SWT.FLAT);
+               addItem.setImage(SuiteIcon.add.getSmallIcon(theme));
+               usersViewer.addDoubleClickListener(new IDoubleClickListener() {
+
+                       @Override
+                       public void doubleClick(DoubleClickEvent event) {
+                               User user = (User) usersViewer.getStructuredSelection().getFirstElement();
+                               if (user != null) {
+//                                     Node userNode = getOrCreateUserNode(user, context);
+                                       CmsView.getCmsView(parent).sendEvent(SuiteEvent.openNewPart.topic(),
+                                                       SuiteEvent.eventProperties(user));
+                               }
+
+                       }
+               });
+               usersViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+                       public void selectionChanged(SelectionChangedEvent event) {
+                               User user = (User) usersViewer.getStructuredSelection().getFirstElement();
+                               if (user != null) {
+//                                     Node userNode = getOrCreateUserNode(user, context);
+                                       CmsView.getCmsView(parent).sendEvent(SuiteEvent.refreshPart.topic(),
+                                                       SuiteEvent.eventProperties(user));
+                                       deleteItem.setEnabled(true);
+                               } else {
+                                       deleteItem.setEnabled(false);
+                               }
+                       }
+               });
+
+               addItem.addSelectionListener((Selected) (e) -> {
+                       // SuiteUtils.getOrCreateUserNode(adminSession, userDn);
+                       Wizard wizard = new NewUserWizard(null);
+                       CmsWizardDialog dialog = new CmsWizardDialog(parent.getShell(), wizard);
+                       // WizardDialog dialog = new WizardDialog(shell, wizard);
+                       if (dialog.open() == Window.OK) {
+                               // TODO create
+                       }
+               });
+
+               usersViewer.getTable().setLayoutData(CmsUiUtils.fillAll());
+               usersViewer.setInput(cmsUserManager);
+
+               return usersViewer.getTable();
+       }
+
+//     private Node getOrCreateUserNode(User user, Node context) {
+//             return JcrUtils.mkdirs(Jcr.getSession(context),
+//                             "/" + EntityType.user.name() + "/" + getUserProperty(user, LdapAttrs.uid.name()),
+//                             EntityType.user.get());
+//     }
+
+       private String getUserProperty(Object element, String key) {
+               Object value = ((User) element).getProperties().get(key);
+               return value != null ? value.toString() : null;
+       }
+
+       class UsersContentProvider implements IStructuredContentProvider {
+
+               @Override
+               public Object[] getElements(Object inputElement) {
+                       CmsUserManager cum = (CmsUserManager) inputElement;
+                       Set<User> users = cum.listUsersInGroup(SuiteRole.coworker.dn(), null);
+                       return users.toArray();
+               }
+
+               @Override
+               public void dispose() {
+               }
+
+               @Override
+               public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+               }
+
+       }
+
+       public void setCmsUserManager(CmsUserManager cmsUserManager) {
+               this.cmsUserManager = cmsUserManager;
+       }
+
+}
diff --git a/people/org.argeo.people.ui/src/org/argeo/people/ui/PersonUiProvider.java b/people/org.argeo.people.ui/src/org/argeo/people/ui/PersonUiProvider.java
new file mode 100644 (file)
index 0000000..d2ea2fe
--- /dev/null
@@ -0,0 +1,88 @@
+package org.argeo.people.ui;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+
+import org.argeo.cms.CmsUserManager;
+import org.argeo.cms.ui.CmsUiProvider;
+import org.argeo.cms.ui.util.CmsUiUtils;
+import org.argeo.cms.ui.viewers.Section;
+import org.argeo.naming.LdapAttrs;
+import org.argeo.suite.ui.SuiteMsg;
+import org.argeo.suite.ui.SuiteUiUtils;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Text;
+import org.osgi.service.useradmin.User;
+
+/** Edit a suite user. */
+public class PersonUiProvider implements CmsUiProvider {
+       private String[] availableRoles;
+       private CmsUserManager cmsUserManager;
+
+       @Override
+       public Control createUi(Composite parent, Node context) throws RepositoryException {
+               Section main = new Section(parent, SWT.NONE, context);
+               main.setLayoutData(CmsUiUtils.fillAll());
+
+               String uid = context.getName();
+               User user = cmsUserManager.getUserFromLocalId(uid);
+
+//             Text givenName = new Text(main, SWT.SINGLE);
+//             givenName.setText(getUserProperty(user, LdapAttrs.givenName.name()));
+               Text givenName = SuiteUiUtils.addFormInput(main, SuiteMsg.firstName.lead(),
+                               getUserProperty(user, LdapAttrs.givenName.name()));
+
+               Text sn = SuiteUiUtils.addFormInput(main, SuiteMsg.lastName.lead(), getUserProperty(user, LdapAttrs.sn.name()));
+               // sn.setText(getUserProperty(user, LdapAttrs.sn.name()));
+
+               Text email = SuiteUiUtils.addFormInput(main, SuiteMsg.email.lead(),
+                               getUserProperty(user, LdapAttrs.mail.name()));
+               // email.setText(getUserProperty(user, LdapAttrs.mail.name()));
+
+               Text uidT = SuiteUiUtils.addFormLine(main, "uid", getUserProperty(user, LdapAttrs.uid.name()));
+               uidT.setText(uid);
+
+//             Label dnL = new Label(main, SWT.NONE);
+//             dnL.setText(user.getName());
+
+               // roles
+               // Section rolesSection = new Section(main, SWT.NONE, context);
+               Group rolesSection = new Group(main, SWT.NONE);
+               rolesSection.setText("Roles");
+               rolesSection.setLayoutData(CmsUiUtils.fillWidth());
+               rolesSection.setLayout(new GridLayout());
+               // new Label(rolesSection, SWT.NONE).setText("Roles:");
+               List<String> roles = Arrays.asList(cmsUserManager.getUserRoles(user.getName()));
+               for (String role : availableRoles) {
+                       // new Label(rolesSection, SWT.NONE).setText(role);
+                       Button radio = new Button(rolesSection, SWT.CHECK);
+                       radio.setText(role);
+                       if (roles.contains(role))
+                               radio.setSelection(true);
+               }
+
+               return main;
+       }
+
+       public void setCmsUserManager(CmsUserManager cmsUserManager) {
+               this.cmsUserManager = cmsUserManager;
+       }
+
+       private String getUserProperty(Object element, String key) {
+               Object value = ((User) element).getProperties().get(key);
+               return value != null ? value.toString() : null;
+       }
+
+       public void init(Map<String, Object> properties) {
+               availableRoles = (String[]) properties.get("availableRoles");
+       }
+}
index c422ff7de83269f4b442b8e76dc31601a88e5f6d..193f6337c8dae04a8a1b1e1e623c195a6aec24f3 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>argeo-suite</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>people</artifactId>
diff --git a/pom.xml b/pom.xml
index 4355c457d8ff5e8fd9658c8372149177ecdebee9..bee12d0551187087f7005b79effdfd62c57ad4b3 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -1,4 +1,6 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
                <groupId>org.argeo.maven</groupId>
@@ -7,7 +9,7 @@
        </parent>
        <groupId>org.argeo.suite</groupId>
        <artifactId>argeo-suite</artifactId>
-       <version>2.1.23-SNAPSHOT</version>
+       <version>2.3.1-SNAPSHOT</version>
        <name>Argeo Suite</name>
        <packaging>pom</packaging>
        <url>http://www.argeo.org/</url>
@@ -18,7 +20,7 @@
                <version.argeo-commons>[2.1.102,2.3.0-SNAPSHOT)</version.argeo-commons>
                <version.argeo-suite-icons>[2.1.1,2.3.0-SNAPSHOT)</version.argeo-suite-icons>
 
-               <argeo.rpm.stagingRepository>/srv/rpmfactory/testing/argeo-osgi-2/argeo</argeo.rpm.stagingRepository>
+               <argeo.rpm.stagingRepository>/srv/rpmfactory/unstable/argeo-osgi-2/argeo</argeo.rpm.stagingRepository>
                <git.rw />
        </properties>
        <modules>
@@ -39,7 +41,7 @@
                <connection>scm:git:http://git.argeo.org/gpl/argeo-suite.git</connection>
                <url>http://git.argeo.org/?p=gpl/argeo-suite.git;a=summary</url>
                <developerConnection>scm:git:https://code.argeo.org/git/gpl/argeo-suite.git</developerConnection>
-               <tag>v2.x</tag>
+               <tag>HEAD</tag>
        </scm>
        <organization>
                <name>Argeo GmbH</name>
                                <enabled>false</enabled>
                        </snapshots>
                </repository>
+               <repository>
+                       <id>argeo-unstable</id>
+                       <url>http://forge.argeo.org/data/java/argeo-2.3/</url>
+                       <releases>
+                               <enabled>true</enabled>
+                               <updatePolicy>never</updatePolicy>
+                               <checksumPolicy>warn</checksumPolicy>
+                       </releases>
+                       <snapshots>
+                               <enabled>false</enabled>
+                       </snapshots>
+               </repository>
        </repositories>
        <reporting>
                <plugins>
        <distributionManagement>
                <repository>
                        <id>staging</id>
-                       <url>dav:https://forge.argeo.org/data/java/argeo-2.1</url>
+                       <url>dav:https://forge.argeo.org/data/java/argeo-2.3</url>
                        <uniqueVersion>false</uniqueVersion>
                </repository>
                <site>
index 96a759e1fbda99b679a3c24e0eb12b2c1f2a70b8..b70057c7a7801c39d48a972083f31e0a13a58dd1 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>publishing</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>org.argeo.publishing.ui</artifactId>
@@ -14,7 +14,7 @@
                <dependency>
                        <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.suite.ui</artifactId>
-                       <version>2.1.23-SNAPSHOT</version>
+                       <version>2.3.1-SNAPSHOT</version>
                </dependency>
 
                <!-- Eclipse E4 -->
index 226df4b544786178fe21107741247b5c7cfd818b..6bcecb7b3e9fec2d3efa61161f8d94acffe57210 100644 (file)
@@ -3,10 +3,12 @@ package org.argeo.docbook;
 import static org.argeo.docbook.DbkType.para;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.OutputStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
 
+import javax.jcr.ImportUUIDBehavior;
 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
 import javax.jcr.RepositoryException;
@@ -151,6 +153,16 @@ public class DbkUtils {
                }
        }
 
+       public static void importXml(Node baseNode, InputStream in) throws IOException {
+               try {
+                       baseNode.getSession().importXML(baseNode.getPath(), in,
+                                       ImportUUIDBehavior.IMPORT_UUID_COLLISION_REPLACE_EXISTING);
+               } catch (RepositoryException e) {
+                       throw new JcrException("Cannot import XML to " + baseNode, e);
+               }
+
+       }
+
        /** Singleton. */
        private DbkUtils() {
        }
index 27360153096d6b0d5efeb63f078de3e323c3d765..5dfdd446d4e3f56c45ec8229f71b6136dcb246f7 100644 (file)
@@ -4,7 +4,7 @@
        <parent>
                <groupId>org.argeo.suite</groupId>
                <artifactId>argeo-suite</artifactId>
-               <version>2.1.23-SNAPSHOT</version>
+               <version>2.3.1-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>publishing</artifactId>
index b9981f98cf1c070588222b3dc9554c4f0ba560d5..60f0b9b0b62984c44451308b654bc3bf2d2bc8b9 100644 (file)
@@ -17,7 +17,10 @@ org.argeo.suite.theme.default,\
 org.argeo.suite.ui.rap
 
 argeo.osgi.start.6.suite=\
-org.argeo.documents.ui
+org.argeo.documents.ui,\
+org.argeo.people.ui,\
+org.argeo.geo.ui
+
 
 # Local
 argeo.node.repo.type=h2