</util:list>\r
\r
<bean id="suiteWorkbenchService"\r
- class="org.argeo.connect.ui.DefaultSystemWorkbenchService">\r
+ class="org.argeo.connect.workbench.DefaultSystemWorkbenchService">\r
<property name="knownAppWbServices" ref="knownWbServices" />\r
<property name="defaultEditorId"\r
value="org.argeo.suite.workbench.rap.defaultDashboardEditor" />\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.6"?>
-<plugin>
- <!-- RAP workbench main entry point for the Argeo Suite core application -->
- <!--
- <extension
- point="org.eclipse.rap.ui.entrypoint">
- <entrypoint
- id="org.argeo.suite.workbench.rap.entrypoint"
- class="org.argeo.suite.workbench.rap.AsSecureEntryPoint"
- path="/suite"
- brandingId="org.argeo.suite.workbench.rap.defaultBranding">
- </entrypoint>
- </extension>
- -->
- <!-- PERSPECTIVES -->
- <extension
- point="org.eclipse.ui.perspectives">
- </extension>
-
- <!-- VIEWS -->
- <extension
- point="org.eclipse.ui.views">
- </extension>
-
- <!-- EDITORS -->
- <extension
- point="org.eclipse.ui.editors">
- </extension>
-
- <!-- COMMANDS -->
- <extension
- point="org.eclipse.ui.commands">
- </extension>
-
- <!-- MENU CONTRIBUTION -->
- <extension
- id="menu:org.eclipse.ui.main.menu"
- point="org.eclipse.ui.menus">
- </extension>
-
- <!-- BRANDING AND THEMES -->
- <!--
- <extension
- point="org.eclipse.rap.ui.branding">
- <branding
- id="org.argeo.suite.workbench.rap.defaultBranding"
- themeId="org.eclipse.rap.rwt.theme.Default"
- title="Argeo Suite"
- favicon="theme/argeo-classic/icons/favicon.ico">
- <additionalHeaders>
- <link
- href="suite/theme/classic-headerExt.css"
- rel="stylesheet" />
- </additionalHeaders>
- </branding>
- </extension>
-
- <extension
- point="org.eclipse.equinox.http.registry.resources">
- <resource
- alias="/ui/suite/theme/classic-headerExt.css"
- base-name="theme/argeo-classic/workbench-headerExt.css">
- </resource>
- <resource
- alias="/ui/suite/img/logo-argeo.png"
- base-name="theme/argeo-classic/img/logo-argeo.png">
- </resource>
- </extension>
-
- <extension
- point="org.eclipse.rap.ui.themes">
- <themeContribution
- themeId="org.eclipse.rap.rwt.theme.Default"
- file="theme/argeo-classic/workbench-ext.css" />
- </extension>
- -->
-</plugin>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
--- /dev/null
+/bin/
+/target/
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.argeo.suite.cms</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
--- /dev/null
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Cms
+Bundle-SymbolicName: org.argeo.suite.cms
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Service-Component: OSGI-INF/resourcesService.xml,
+ OSGI-INF/activitiesService.xml,
+ OSGI-INF/systemAppService.xml,
+ OSGI-INF/userManagerService.xml,
+ OSGI-INF/peopleService.xml,
+ OSGI-INF/systemMaintenanceService.xml,
+ OSGI-INF/activitiesMaintenanceService.xml,
+ OSGI-INF/resourcesMaintenanceService.xml,
+ OSGI-INF/peopleMaintenanceService.xml
+Import-Package: javax.jcr;version="2.0.0",
+ javax.transaction,
+ org.argeo.activities;version="2.1.79.SNAPSHOT-r201803241506",
+ org.argeo.activities.core;version="2.1.79.SNAPSHOT-r201803241506",
+ org.argeo.connect;version="2.1.79.SNAPSHOT-r201803241506",
+ org.argeo.connect.core;version="2.1.79.SNAPSHOT-r201803241506",
+ org.argeo.connect.resources;version="2.1.79.SNAPSHOT-r201803241506",
+ org.argeo.connect.resources.core;version="2.1.79.SNAPSHOT-r201803241506",
+ org.argeo.people;version="2.1.79.SNAPSHOT-r201803241506",
+ org.argeo.people.core;version="2.1.79.SNAPSHOT-r201803241506",
+ org.osgi.service.useradmin;version="1.1.0"
+Bundle-ActivationPolicy: lazy
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="Activities Maintenance Service">
+ <implementation class="org.argeo.activities.core.ActivitiesMaintenanceService"/>
+ <service>
+ <provide interface="org.argeo.connect.AppMaintenanceService"/>
+ </service>
+</scr:component>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="Activities Service">
+ <implementation class="org.argeo.activities.core.ActivitiesServiceImpl"/>
+ <reference bind="setResourcesService" cardinality="1..1" interface="org.argeo.connect.resources.ResourcesService" name="ResourcesService" policy="static"/>
+ <service>
+ <provide interface="org.argeo.activities.ActivitiesService"/>
+ <provide interface="org.argeo.connect.AppService"/>
+ </service>
+ <reference bind="setUserAdminService" cardinality="1..1" interface="org.argeo.connect.UserAdminService" name="UserAdminService" policy="static"/>
+</scr:component>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="People Maintenance Service">
+ <implementation class="org.argeo.people.core.PeopleMaintenanceService"/>
+ <service>
+ <provide interface="org.argeo.connect.AppMaintenanceService"/>
+ </service>
+</scr:component>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="peopleService">
+ <implementation class="org.argeo.people.core.PeopleServiceImpl"/>
+ <service>
+ <provide interface="org.argeo.connect.AppService"/>
+ <provide interface="org.argeo.people.PeopleService"/>
+ </service>
+ <reference bind="setResourcesService" cardinality="1..1" interface="org.argeo.connect.resources.ResourcesService" name="ResourcesService" policy="static"/>
+</scr:component>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="Resources Maintenance Service">
+ <implementation class="org.argeo.connect.resources.core.ResourcesMaintenanceService"/>
+ <service>
+ <provide interface="org.argeo.connect.AppMaintenanceService"/>
+ </service>
+</scr:component>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="Resources Service">
+ <implementation class="org.argeo.connect.resources.core.ResourcesServiceImpl"/>
+ <service>
+ <provide interface="org.argeo.connect.resources.ResourcesService"/>
+ <provide interface="org.argeo.connect.AppService"/>
+ </service>
+</scr:component>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="System App Service">
+ <implementation class="org.argeo.connect.core.DynamicSystemAppService"/>
+ <service>
+ <provide interface="org.argeo.connect.SystemAppService"/>
+ </service>
+ <reference bind="addAppService" cardinality="0..n" interface="org.argeo.connect.AppService" name="AppService" policy="dynamic" unbind="removeAppService"/>
+</scr:component>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="init" immediate="true" name="System Maintenance Service">
+ <reference bind="setRepository" cardinality="1..1" interface="javax.jcr.Repository" name="Repository" policy="static"/>
+ <service>
+ <provide interface="org.argeo.connect.SystemMaintenanceService"/>
+ </service>
+ <reference bind="addAppService" cardinality="0..n" interface="org.argeo.connect.AppMaintenanceService" name="AppMaintenanceService" policy="static"/>
+ <implementation class="org.argeo.connect.core.DynamicSystemMaintenanceService"/>
+</scr:component>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="User Manager Service">
+ <implementation class="org.argeo.connect.core.UserAdminServiceImpl"/>
+ <service>
+ <provide interface="org.argeo.connect.UserAdminService"/>
+ </service>
+ <reference bind="setUserAdmin" cardinality="1..1" interface="org.osgi.service.useradmin.UserAdmin" name="UserAdmin" policy="static"/>
+ <reference bind="setUserTransaction" cardinality="1..1" interface="javax.transaction.UserTransaction" name="UserTransaction" policy="static"/>
+</scr:component>
--- /dev/null
+Bundle-ActivationPolicy: lazy
+Service-Component: OSGI-INF/systemAppService.xml,\
+ OSGI-INF/userManagerService.xml,\
+ OSGI-INF/resourcesService.xml,\
+ OSGI-INF/activitiesService.xml,\
+ OSGI-INF/peopleService.xml,\
+ OSGI-INF/systemMaintenanceService.xml,\
+ OSGI-INF/activitiesMaintenanceService.xml,\
+ OSGI-INF/resourcesMaintenanceService.xml,\
+ OSGI-INF/peopleMaintenanceService.xml
+
\ No newline at end of file
--- /dev/null
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/resourcesService.xml,\
+ OSGI-INF/activitiesService.xml,\
+ OSGI-INF/systemAppService.xml,\
+ OSGI-INF/userManagerService.xml,\
+ OSGI-INF/peopleService.xml,\
+ OSGI-INF/systemMaintenanceService.xml,\
+ OSGI-INF/activitiesMaintenanceService.xml,\
+ OSGI-INF/resourcesMaintenanceService.xml,\
+ OSGI-INF/peopleMaintenanceService.xml
+source.. = src/
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.argeo.suite.e4.rap</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ds.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
--- /dev/null
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Rap
+Bundle-SymbolicName: org.argeo.suite.e4.rap
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: org.argeo.activities.e4,
+ org.argeo.activities.e4.parts,
+ org.argeo.cms.e4.rap;version="2.1.73.SNAPSHOT-r201803221729",
+ org.argeo.connect.e4,
+ org.argeo.connect.ui;version="2.1.79.SNAPSHOT-r201803241506",
+ org.argeo.people.e4,
+ org.eclipse.rap.rwt.application;version="3.4.0"
+Service-Component: OSGI-INF/argeo-office-rap.xml,OSGI-INF/systemE4Service.xml,OSGI-INF/activitiesE4Service.xml,
+ OSGI-INF/peopleE4Service.xml
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="Activities Service">
+ <implementation class="org.argeo.activities.e4.ActivitiesE4Service"/>
+ <service>
+ <provide interface="org.argeo.connect.ui.AppWorkbenchService"/>
+ </service>
+ <reference bind="setUserAdminService" cardinality="1..1" interface="org.argeo.connect.UserAdminService" name="UserAdminService" policy="static"/>
+ <reference bind="setActivitiesService" cardinality="1..1" interface="org.argeo.activities.ActivitiesService" name="ActivitiesService" policy="static"/>
+</scr:component>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" configuration-policy="optional" name="CMS Admin RAP">
+ <implementation class="org.argeo.suite.e4.rap.ArgeoOfficeRapE4App"/>
+ <service>
+ <provide interface="org.eclipse.rap.rwt.application.ApplicationConfiguration"/>
+ <property name="contextName" type="String" value="suite"/>
+ </service>
+</scr:component>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="People E4 Service">
+ <implementation class="org.argeo.people.e4.PeopleE4Service"/>
+ <service>
+ <provide interface="org.argeo.connect.ui.AppWorkbenchService"/>
+ </service>
+</scr:component>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="System E4 Service">
+ <implementation class="org.argeo.connect.e4.SystemE4Service"/>
+ <service>
+ <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/>
+ </service>
+ <reference bind="addAppService" cardinality="0..n" interface="org.argeo.connect.ui.AppWorkbenchService" name="AppWorkbenchService" policy="dynamic" unbind="removeAppService"/>
+ <property name="service.context.key" type="String" value="org.argeo.connect.ui.SystemWorkbenchService"/>
+</scr:component>
--- /dev/null
+Bundle-ActivationPolicy: lazy
+Service-Component: OSGI-INF/argeo-office-rap.xml
+
+Import-Package: org.argeo.node,\
+org.eclipse.swt,\
+org.eclipse.rap.rwt.client,\
+*
--- /dev/null
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ OSGI-INF/systemE4Service.xml,\
+ OSGI-INF/activitiesE4Service.xml,\
+ OSGI-INF/peopleE4Service.xml
+source.. = src/
--- /dev/null
+package org.argeo.suite.e4.rap;
+
+import org.argeo.cms.e4.rap.AbstractRapE4App;
+
+public class ArgeoOfficeRapE4App extends AbstractRapE4App {
+
+ public ArgeoOfficeRapE4App() {
+ setPageTitle("Argeo Office");
+ setE4Xmi("org.argeo.suite.e4/e4xmi/argeo-office.e4xmi");
+ setPath("/office");
+ }
+
+}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
--- /dev/null
+/bin/
+/target/
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.argeo.suite.e4</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
--- /dev/null
+Manifest-Version: 1.0\r
+Bundle-SymbolicName: org.argeo.suite.e4\r
+Bundle-Name: E4\r
+Bundle-Version: 1.0.0.qualifier\r
+Bundle-ManifestVersion: 2\r
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8\r
+Import-Package: javax.inject;version="1.0.0",\r
+ javax.jcr;version="2.0.0",\r
+ javax.jcr.nodetype;version="2.0.0",\r
+ javax.jcr.observation;version="2.0.0",\r
+ javax.jcr.query;version="2.0.0",\r
+ org.apache.commons.logging;version="1.1.1",\r
+ org.argeo.activities;version="2.1.79.SNAPSHOT-r201803241506",\r
+ org.argeo.activities.ui;version="2.1.79.SNAPSHOT-r201803241506",\r
+ org.argeo.cms.util;version="2.1.73.SNAPSHOT-r201803221729",\r
+ org.argeo.connect;version="2.1.79.SNAPSHOT-r201803241506",\r
+ org.argeo.connect.e4.handlers,\r
+ org.argeo.connect.resources;version="2.1.79.SNAPSHOT-r201803241506",\r
+ org.argeo.connect.ui,\r
+ org.argeo.connect.ui.util;version="2.1.79.SNAPSHOT-r201803241506",\r
+ org.argeo.connect.ui.widgets;version="2.1.79.SNAPSHOT-r201803241506",\r
+ org.argeo.connect.util;version="2.1.79.SNAPSHOT-r201803241506",\r
+ org.argeo.eclipse.ui;version="2.1.73.SNAPSHOT-r201803221729",\r
+ org.argeo.jcr;version="2.1.73.SNAPSHOT-r201803221729",\r
+ org.argeo.people;version="2.1.79.SNAPSHOT-r201803241506",\r
+ org.argeo.people.e4,\r
+ org.argeo.people.e4.parts,\r
+ org.argeo.people.ui.providers;version="2.1.79.SNAPSHOT-r201803241506",\r
+ org.argeo.tracker;version="2.1.79.SNAPSHOT-r201803241506",\r
+ org.argeo.tracker.ui;version="2.1.79.SNAPSHOT-r201803241506",\r
+ org.eclipse.jface,\r
+ org.eclipse.jface.layout,\r
+ org.eclipse.jface.viewers,\r
+ org.eclipse.jface.viewers.deferred,\r
+ org.eclipse.swt,\r
+ org.eclipse.swt.events,\r
+ org.eclipse.swt.graphics,\r
+ org.eclipse.swt.layout,\r
+ org.eclipse.swt.widgets\r
+\r
--- /dev/null
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ e4xmi/argeo-office.e4xmi
+source.. = src/
--- /dev/null
+<?xml version="1.0" encoding="ASCII"?>
+<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:advanced="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_bQjNYDAVEei3AbO1ldMI0w" elementId="org.argeo.suite.e4.application">
+ <children xsi:type="basic:TrimmedWindow" xmi:id="_dKIlMDAVEei3AbO1ldMI0w" elementId="org.argeo.suite.e4.trimmedwindow.0">
+ <persistedState key="styleOverride" value="8"/>
+ <tags>shellMaximized</tags>
+ <children xsi:type="advanced:PerspectiveStack" xmi:id="_gm_toDAVEei3AbO1ldMI0w" elementId="org.argeo.suite.e4.perspectivestack.0">
+ <children xsi:type="advanced:Perspective" xmi:id="_hr-YsDAVEei3AbO1ldMI0w" elementId="org.argeo.suite.e4.perspective.dashboard" label="Dashboard">
+ <children xsi:type="basic:PartSashContainer" xmi:id="_mAC18DAVEei3AbO1ldMI0w" elementId="org.argeo.suite.e4.partsashcontainer.0" horizontal="true">
+ <children xsi:type="basic:PartStack" xmi:id="_orJxUDAVEei3AbO1ldMI0w" elementId="org.argeo.suite.e4.partstack.0" containerData="4000">
+ <children xsi:type="basic:Part" xmi:id="_qAM4sDAVEei3AbO1ldMI0w" elementId="org.argeo.suite.e4.part.search" containerData="" contributionURI="bundleclass://org.argeo.suite.e4/org.argeo.suite.e4.parts.QuickSearchView" label="Search"/>
+ </children>
+ <children xsi:type="basic:PartStack" xmi:id="_vLza4DAVEei3AbO1ldMI0w" elementId="org.argeo.suite.e4.partstack.1" containerData="6000">
+ <tags>entityEditorArea</tags>
+ </children>
+ </children>
+ </children>
+ </children>
+ <trimBars xmi:id="_24OSADArEei3AbO1ldMI0w" elementId="org.argeo.suite.e4.trimbar.0">
+ <children xsi:type="menu:ToolBar" xmi:id="_3e5QcDArEei3AbO1ldMI0w" elementId="org.argeo.suite.e4.toolbar.0">
+ <children xsi:type="menu:HandledToolItem" xmi:id="_4Ssr8DArEei3AbO1ldMI0w" elementId="org.argeo.suite.e4.handledtoolitem.createTask" label="New Task" iconURI="platform:/plugin/org.argeo.theme.argeo2/icons/types/task.png" command="_2Xkt8DApEei3AbO1ldMI0w">
+ <parameters xmi:id="_NYpK8DAsEei3AbO1ldMI0w" elementId="targetNodeType" name="targetNodeType" value="activities:task"/>
+ </children>
+ <children xsi:type="menu:HandledToolItem" xmi:id="_p_MsIDBiEei3AbO1ldMI0w" elementId="org.argeo.suite.e4.handledtoolitem.createPerson" label="New Person" iconURI="platform:/plugin/org.argeo.theme.argeo2/icons/types/person.png" command="_2Xkt8DApEei3AbO1ldMI0w">
+ <parameters xmi:id="_6LHhIDBiEei3AbO1ldMI0w" elementId="org.argeo.suite.e4.parameter.0" name="targetNodeType" value="people:person"/>
+ </children>
+ <children xsi:type="menu:HandledToolItem" xmi:id="_cnaWMDBjEei3AbO1ldMI0w" elementId="org.argeo.suite.e4.handledtoolitem.neworg" label="New Org" iconURI="platform:/plugin/org.argeo.theme.argeo2/icons/types/organisation.png" command="_2Xkt8DApEei3AbO1ldMI0w">
+ <parameters xmi:id="_iEUDwDBjEei3AbO1ldMI0w" elementId="org.argeo.suite.e4.parameter.1" name="targetNodeType" value="people:org"/>
+ </children>
+ </children>
+ </trimBars>
+ </children>
+ <handlers xmi:id="_ipB00DArEei3AbO1ldMI0w" elementId="org.argeo.suite.e4.handler.0" contributionURI="bundleclass://org.argeo.connect.e4/org.argeo.connect.e4.handlers.CreateEntity" command="_2Xkt8DApEei3AbO1ldMI0w"/>
+ <descriptors xmi:id="_pud7kDAtEei3AbO1ldMI0w" elementId="org.argeo.suite.e4.partdescriptor.taskEditor" label="Task" allowMultiple="true" category="entityEditorArea" closeable="true" dirtyable="true" contributionURI="bundleclass://org.argeo.connect.e4/org.argeo.activities.e4.parts.TaskEditor"/>
+ <descriptors xmi:id="_JsNs8DBiEei3AbO1ldMI0w" elementId="org.argeo.suite.e4.partdescriptor.personEditor" label="Person" allowMultiple="true" category="entityEditorArea" closeable="true" dirtyable="true" contributionURI="bundleclass://org.argeo.connect.e4/org.argeo.people.e4.parts.PersonEditor"/>
+ <descriptors xmi:id="_RxqxIDBiEei3AbO1ldMI0w" elementId="org.argeo.suite.e4.partdescriptor.orgEditor" label="Organisation" allowMultiple="true" category="entityEditorArea" closeable="true" dirtyable="true" contributionURI="bundleclass://org.argeo.connect.e4/org.argeo.people.e4.parts.OrgEditor"/>
+ <commands xmi:id="_2Xkt8DApEei3AbO1ldMI0w" elementId="org.argeo.suite.e4.command.createEntity" commandName="Create">
+ <parameters xmi:id="_GnXrcDAsEei3AbO1ldMI0w" elementId="targetNodeType" name="targetNodeType" optional="false"/>
+ </commands>
+ <addons xmi:id="_bQjNYTAVEei3AbO1ldMI0w" elementId="org.eclipse.e4.core.commands.service" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>
+ <addons xmi:id="_bQjNYjAVEei3AbO1ldMI0w" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>
+ <addons xmi:id="_bQjNYzAVEei3AbO1ldMI0w" elementId="org.eclipse.e4.ui.bindings.service" contributionURI="bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/>
+ <addons xmi:id="_bQjNZDAVEei3AbO1ldMI0w" elementId="org.eclipse.e4.ui.workbench.commands.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon"/>
+ <addons xmi:id="_bQjNZTAVEei3AbO1ldMI0w" elementId="org.eclipse.e4.ui.workbench.contexts.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon"/>
+ <addons xmi:id="_bQjNZjAVEei3AbO1ldMI0w" elementId="org.eclipse.e4.ui.workbench.bindings.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.workbench.swt.util.BindingProcessingAddon"/>
+ <addons xmi:id="_bQjNZzAVEei3AbO1ldMI0w" elementId="org.eclipse.e4.ui.workbench.handler.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.HandlerProcessingAddon"/>
+</application:Application>
--- /dev/null
+package org.argeo.suite.e4.parts;
+
+import javax.jcr.Node;
+import javax.jcr.Property;
+import javax.jcr.RepositoryException;
+import javax.jcr.nodetype.NodeType;
+
+import org.argeo.activities.ActivitiesService;
+import org.argeo.activities.ActivitiesTypes;
+import org.argeo.activities.ui.ActivityListLabelProvider;
+import org.argeo.connect.resources.ResourcesService;
+import org.argeo.connect.ui.ConnectUiConstants;
+import org.argeo.connect.ui.SystemWorkbenchService;
+import org.argeo.connect.ui.util.TagLabelProvider;
+import org.argeo.connect.util.ConnectUtils;
+import org.argeo.people.PeopleException;
+import org.argeo.people.PeopleNames;
+import org.argeo.people.PeopleService;
+import org.argeo.people.PeopleTypes;
+import org.argeo.people.ui.providers.GroupLabelProvider;
+import org.argeo.people.ui.providers.OrgListLabelProvider;
+import org.argeo.people.ui.providers.PersonListLabelProvider;
+import org.argeo.tracker.TrackerTypes;
+import org.argeo.tracker.ui.TrackerSingleColLP;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * Provide a single column label provider for entity lists. Icon and displayed
+ * text vary with the element node type
+ */
+public class EntitySingleColumnLabelProvider implements PeopleNames, ILabelProvider {
+ private static final long serialVersionUID = 3111885324210673320L;
+
+ private SystemWorkbenchService systemWorkbenchService;
+
+ private ActivityListLabelProvider activityLP;
+ private TrackerSingleColLP trackerLP;
+ private OrgListLabelProvider orgLp;
+ private PersonListLabelProvider personLp;
+ private GroupLabelProvider groupLp = new GroupLabelProvider(ConnectUiConstants.LIST_TYPE_SMALL);
+ private TagLabelProvider mlInstanceLp;
+
+ public EntitySingleColumnLabelProvider(ResourcesService resourceService, ActivitiesService activitiesService,
+ PeopleService peopleService, SystemWorkbenchService systemWorkbenchService) {
+ this.systemWorkbenchService = systemWorkbenchService;
+ activityLP = new ActivityListLabelProvider(activitiesService);
+ trackerLP = new TrackerSingleColLP(activitiesService);
+ personLp = new PersonListLabelProvider(peopleService);
+ orgLp = new OrgListLabelProvider(resourceService, peopleService);
+ mlInstanceLp = new TagLabelProvider(resourceService, ConnectUiConstants.LIST_TYPE_SMALL);
+ }
+
+ @Override
+ public String getText(Object element) {
+ try {
+ Node entity = (Node) element;
+ String result;
+
+ if (entity.isNodeType(TrackerTypes.TRACKER_TASK) || entity.isNodeType(TrackerTypes.TRACKER_PROJECT)
+ || entity.isNodeType(TrackerTypes.TRACKER_MILESTONE))
+ result = trackerLP.getText(element);
+ else if (entity.isNodeType(ActivitiesTypes.ACTIVITIES_ACTIVITY))
+ result = activityLP.getText(element);
+ else if (entity.isNodeType(PeopleTypes.PEOPLE_PERSON))
+ result = personLp.getText(element);
+ else if (entity.isNodeType(PeopleTypes.PEOPLE_ORG))
+ result = orgLp.getText(element);
+ else if (entity.isNodeType(PeopleTypes.PEOPLE_MAILING_LIST))
+ result = mlInstanceLp.getText(element);
+ else if (entity.isNodeType(PeopleTypes.PEOPLE_GROUP))
+ result = groupLp.getText(element);
+ else if (entity.isNodeType(NodeType.MIX_TITLE) && entity.hasProperty(Property.JCR_TITLE))
+ result = entity.getProperty(Property.JCR_TITLE).getString();
+ else
+ result = "";
+ return ConnectUtils.replaceAmpersand(result);
+ } catch (RepositoryException re) {
+ throw new PeopleException("Unable to get formatted value for node", re);
+ }
+ }
+
+ /** Overwrite this method to provide project specific images */
+ @Override
+ public Image getImage(Object element) {
+ return systemWorkbenchService.getIconForType((Node) element);
+ }
+
+ @Override
+ public void addListener(ILabelProviderListener listener) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void dispose() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean isLabelProperty(Object element, String property) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public void removeListener(ILabelProviderListener listener) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
--- /dev/null
+package org.argeo.suite.e4.parts;
+
+import static org.argeo.eclipse.ui.EclipseUiUtils.notEmpty;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+import javax.jcr.NodeIterator;
+import javax.jcr.Repository;
+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 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.connect.ConnectException;
+import org.argeo.connect.ConnectTypes;
+import org.argeo.connect.resources.ResourcesService;
+import org.argeo.connect.ui.ConnectUiConstants;
+import org.argeo.connect.ui.Refreshable;
+import org.argeo.connect.ui.SystemWorkbenchService;
+import org.argeo.connect.ui.util.BasicNodeListContentProvider;
+import org.argeo.connect.ui.util.JcrViewerDClickListener;
+import org.argeo.connect.ui.widgets.DelayedText;
+import org.argeo.connect.util.ConnectJcrUtils;
+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.jface.layout.TableColumnLayout;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Text;
+
+/** A table with a quick search field. */
+public class QuickSearchView implements Refreshable {
+ private final static Log log = LogFactory.getLog(QuickSearchView.class);
+ // public static final String ID = AsUiPlugin.PLUGIN_ID + ".quickSearchView";
+
+ /* DEPENDENCY INJECTION */
+ @Inject
+ private Repository repository;
+ @Inject
+ private ResourcesService resourcesService;
+ @Inject
+ private ActivitiesService activitiesService;
+ @Inject
+ private PeopleService peopleService;
+ @Inject
+ private SystemWorkbenchService systemWorkbenchService;
+
+ // This page widgets
+ private TableViewer entityViewer;
+ private Text filterTxt;
+
+ private Session session;
+
+ // @Override
+ // public void init(IViewSite site) throws PartInitException {
+ // super.init(site);
+ // }
+
+ @PostConstruct
+ public void createPartControl(Composite parent) {
+ session = ConnectJcrUtils.login(repository);
+ // MainLayout
+ parent.setLayout(new GridLayout());
+ addFilterPanel(parent);
+ entityViewer = createListPart(parent, new EntitySingleColumnLabelProvider(resourcesService, activitiesService,
+ peopleService, systemWorkbenchService));
+ refreshFilteredList();
+
+ try {
+ session.getWorkspace().getObservationManager().addEventListener(new EventListener() {
+
+ @Override
+ public void onEvent(EventIterator events) {
+ parent.getDisplay().asyncExec(() -> refreshFilteredList());
+ }
+ }, Event.PROPERTY_CHANGED | Event.NODE_ADDED | Event.NODE_REMOVED | Event.PROPERTY_ADDED, "/", true, null,
+ new String[] { ConnectTypes.CONNECT_ENTITY }, true);
+ } catch (RepositoryException e) {
+ throw new ConnectException("Cannot add JCR observer", e);
+ }
+
+ }
+
+ private void addFilterPanel(Composite parent) {
+ // Use a delayed text: the query won't be done until the user stop
+ // typing for 800ms
+ int style = SWT.BORDER | SWT.SEARCH | SWT.ICON_CANCEL;
+ DelayedText delayedText = new DelayedText(parent, style, ConnectUiConstants.SEARCH_TEXT_DELAY);
+ filterTxt = delayedText.getText();
+ filterTxt.setLayoutData(EclipseUiUtils.fillWidth());
+
+ // final ServerPushSession pushSession = new ServerPushSession();
+ delayedText.addDelayedModifyListener(null, new ModifyListener() {
+ private static final long serialVersionUID = 5003010530960334977L;
+
+ public void modifyText(ModifyEvent event) {
+ delayedText.getText().getDisplay().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ refreshFilteredList();
+ }
+ });
+ // pushSession.stop();
+ }
+ });
+
+ // Jump to the first item of the list using the down arrow
+ filterTxt.addKeyListener(new KeyListener() {
+ private static final long serialVersionUID = -4523394262771183968L;
+
+ @Override
+ public void keyReleased(KeyEvent e) {
+ }
+
+ @Override
+ public void keyPressed(KeyEvent e) {
+ // boolean shiftPressed = (e.stateMask & SWT.SHIFT) != 0;
+ // boolean altPressed = (e.stateMask & SWT.ALT) != 0;
+ if (e.keyCode == SWT.ARROW_DOWN || e.keyCode == SWT.TAB) {
+ Object first = entityViewer.getElementAt(0);
+ if (first != null) {
+ entityViewer.getTable().setFocus();
+ entityViewer.setSelection(new StructuredSelection(first), true);
+ }
+ e.doit = false;
+ }
+ }
+ });
+ }
+
+ protected TableViewer createListPart(Composite parent, ILabelProvider labelProvider) {
+ parent.setLayout(new GridLayout());
+
+ Composite tableComposite = new Composite(parent, SWT.NONE);
+ GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_VERTICAL
+ | GridData.VERTICAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL);
+ tableComposite.setLayoutData(gd);
+
+ TableViewer v = new TableViewer(tableComposite);
+ v.setLabelProvider(labelProvider);
+
+ TableColumn singleColumn = new TableColumn(v.getTable(), SWT.V_SCROLL);
+ TableColumnLayout tableColumnLayout = new TableColumnLayout();
+ tableColumnLayout.setColumnData(singleColumn, new ColumnWeightData(85));
+ tableComposite.setLayout(tableColumnLayout);
+
+ // Corresponding table & style
+ Table table = v.getTable();
+ table.setLinesVisible(true);
+ table.setHeaderVisible(false);
+ CmsUtils.markup(table);
+ CmsUtils.setItemHeight(table, 26);
+
+ v.setContentProvider(new BasicNodeListContentProvider());
+ v.addDoubleClickListener(new JcrViewerDClickListener(systemWorkbenchService));
+ return v;
+ }
+
+ @PreDestroy
+ public void dispose() {
+ JcrUtils.logoutQuietly(session);
+ }
+
+
+ public void setFocus() {
+ refreshFilteredList();
+ filterTxt.setFocus();
+ }
+
+ @Override
+ public void forceRefresh(Object object) {
+ refreshFilteredList();
+ }
+
+ protected void refreshFilteredList() {
+ try {
+ String filter = filterTxt.getText();
+ // Prevents the query on the full repository
+ // if (isEmpty(filter)) {
+ // entityViewer.setInput(null);
+ // return;
+ // }
+
+ // XPATH Query
+ String xpathQueryStr = "//element(*, " + ConnectTypes.CONNECT_ENTITY + ")";
+ String xpathFilter = XPathUtils.getFreeTextConstraint(filter);
+ if (notEmpty(xpathFilter))
+ xpathQueryStr += "[" + xpathFilter + "]";
+
+ // boolean doOrder = orderResultsBtn != null
+ // && !(orderResultsBtn.isDisposed())
+ // && orderResultsBtn.getSelection();
+ // if (doOrder) {
+ // xpathQueryStr += " order by jcr:title";
+ // }
+
+ long begin = System.currentTimeMillis();
+ Query xpathQuery = XPathUtils.createQuery(session, xpathQueryStr);
+
+ xpathQuery.setLimit(ConnectUiConstants.SEARCH_DEFAULT_LIMIT);
+ QueryResult result = xpathQuery.execute();
+
+ NodeIterator nit = result.getNodes();
+ entityViewer.setInput(JcrUtils.nodeIteratorToList(nit));
+ if (log.isDebugEnabled()) {
+ long end = System.currentTimeMillis();
+ log.debug("Quick Search - Found: " + nit.getSize() + " in " + (end - begin)
+ + " ms by executing XPath query (" + xpathQueryStr + ").");
+ }
+ } catch (RepositoryException e) {
+ throw new ConnectException("Unable to list entities", e);
+ }
+ }
+
+// 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;
+// }
+}
--- /dev/null
+argeo.osgi.start.2.node=\
+org.eclipse.equinox.http.servlet,\
+org.eclipse.equinox.http.jetty,\
+org.eclipse.equinox.metatype,\
+org.eclipse.equinox.cm,\
+org.eclipse.rap.rwt.osgi
+
+argeo.osgi.start.3.node=\
+org.argeo.cms,\
+org.argeo.suite.cms
+
+argeo.osgi.start.5.node=\
+org.argeo.suite.e4.rap
+
+# Local
+argeo.node.repo.type=h2
+org.osgi.service.http.port=7070
+#org.osgi.service.http.port.secure=7073
+
+# Logging
+log4j.configuration=file:../../log4j.properties
+
+# DON'T CHANGE BELOW
+org.eclipse.equinox.http.jetty.autostart=false
+org.osgi.framework.bootdelegation=com.sun.jndi.ldap,\
+com.sun.jndi.ldap.sasl,\
+com.sun.security.jgss,\
+com.sun.jndi.dns,\
+com.sun.nio.file,\
+com.sun.nio.sctp