From 972528f4de2d00690362c01d3ce843ca9cd10250 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Wed, 14 Sep 2016 16:18:54 +0000 Subject: [PATCH] Split CMS and CMS UI git-svn-id: https://svn.argeo.org/commons/trunk@9141 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- dep/org.argeo.dep.cms.node/pom.xml | 5 + dep/org.argeo.dep.cms.platform/pom.xml | 5 - org.argeo.cms.ui.workbench.rap/pom.xml | 12 +- org.argeo.cms.ui.workbench/pom.xml | 2 +- org.argeo.cms.ui/.classpath | 7 + org.argeo.cms.ui/.project | 28 ++++ org.argeo.cms.ui/bnd.bnd | 11 ++ org.argeo.cms.ui/build.properties | 4 + org.argeo.cms.ui/pom.xml | 26 ++++ .../src/org/argeo/cms/forms/EditableLink.java | 0 .../forms/EditableMultiStringProperty.java | 0 .../argeo/cms/forms/EditablePropertyDate.java | 0 .../cms/forms/EditablePropertyString.java | 0 .../org/argeo/cms/forms/FormConstants.java | 0 .../org/argeo/cms/forms/FormEditorHeader.java | 0 .../org/argeo/cms/forms/FormPageViewer.java | 2 +- .../src/org/argeo/cms/forms/FormStyle.java | 0 .../src/org/argeo/cms/forms/FormUtils.java | 0 .../maintenance/AbstractOsgiComposite.java | 0 .../src/org/argeo/cms/maintenance/Browse.java | 0 .../maintenance/ConnectivityDeploymentUi.java | 0 .../cms/maintenance/DataDeploymentUi.java | 92 ++++++------- .../cms/maintenance/DeploymentEntryPoint.java | 0 .../cms/maintenance/LogDeploymentUi.java | 0 .../cms/maintenance/MaintenanceStyles.java | 0 .../argeo/cms/maintenance/MaintenanceUi.java | 0 .../argeo/cms/maintenance/NonAdminPage.java | 0 .../cms/maintenance/SecurityDeploymentUi.java | 0 .../org/argeo/cms/text/CustomTextEditor.java | 2 +- .../cms/text/IdentityTextInterpreter.java | 0 .../src/org/argeo/cms/text/Img.java | 2 +- .../src/org/argeo/cms/text/Paragraph.java | 0 .../argeo/cms/text/StandardTextEditor.java | 2 +- .../org/argeo/cms/text/TextEditorHeader.java | 0 .../org/argeo/cms/text/TextInterpreter.java | 0 .../src/org/argeo/cms/text/TextSection.java | 0 .../src/org/argeo/cms/text/TextStyles.java | 0 .../src/org/argeo/cms/text/WikiPage.java | 0 .../org/argeo/cms/ui/internal/Activator.java | 42 ++++++ .../cms/ui}/internal/ImageManagerImpl.java | 2 +- .../cms/ui}/internal/JcrContentProvider.java | 2 +- .../ui}/internal/JcrFileUploadReceiver.java | 2 +- .../cms/ui}/internal/SimpleEditableImage.java | 2 +- .../argeo/cms/ui/internal/rwt}/UserUi.java | 2 +- .../ui}/internal/text/AbstractTextViewer.java | 2 +- .../internal/text/MarkupValidatorCopy.java | 2 +- .../cms/ui}/internal/text/SectionTitle.java | 2 +- .../ui}/internal/text/TextContextMenu.java | 2 +- .../internal/text/TextInterpreterImpl.java | 2 +- .../argeo/cms/util/BundleResourceLoader.java | 0 .../src/org/argeo/cms/util/CmsLink.java | 0 .../src/org/argeo/cms/util/CmsUtils.java | 38 +++--- .../org/argeo/cms/util/LoginEntryPoint.java | 2 +- .../src/org/argeo/cms/util/MenuLink.java | 0 .../src/org/argeo/cms/util/OpenUserMenu.java | 0 .../src/org/argeo/cms/util/SimpleApp.java | 0 .../org/argeo/cms/util/SimpleCmsHeader.java | 0 .../argeo/cms/util/SimpleDynamicPages.java | 0 .../org/argeo/cms/util/SimpleErgonomics.java | 4 +- .../org/argeo/cms/util/SimpleStaticPage.java | 0 .../org/argeo/cms/util/SimpleUxContext.java | 2 +- .../cms/util/StyleSheetResourceLoader.java | 0 .../argeo/cms/util/SystemNotifications.java | 0 .../src/org/argeo/cms/util/UserMenu.java | 0 .../src/org/argeo/cms/util/UserMenuLink.java | 0 .../cms/util/useradmin/UserAdminUtils.java | 0 .../cms/util/useradmin/UserAdminWrapper.java | 0 .../argeo/cms/viewers/AbstractPageViewer.java | 0 .../org/argeo/cms/viewers/EditablePart.java | 0 .../src/org/argeo/cms/viewers/ItemPart.java | 0 .../cms/viewers/JcrVersionCmsEditable.java | 0 .../src/org/argeo/cms/viewers/NodePart.java | 0 .../org/argeo/cms/viewers/PropertyPart.java | 0 .../src/org/argeo/cms/viewers/Section.java | 0 .../org/argeo/cms/viewers/SectionPart.java | 0 .../org/argeo/cms/widgets/EditableImage.java | 0 .../org/argeo/cms/widgets/EditableText.java | 0 .../org/argeo/cms/widgets/JcrComposite.java | 0 .../org/argeo/cms/widgets/ScrolledPage.java | 0 .../org/argeo/cms/widgets/StyledControl.java | 0 .../cms/widgets/auth/AbstractLoginDialog.java | 0 .../org/argeo/cms/widgets/auth/CmsLogin.java | 44 +++--- .../argeo/cms/widgets/auth/CmsLoginShell.java | 0 .../auth/CompositeCallbackHandler.java | 1 - .../cms/widgets/auth/DefaultLoginDialog.java | 0 .../argeo/cms/widgets}/auth/LocaleChoice.java | 37 +---- .../core/AbstractSystemExecution.java | 0 ...catedApplicationContextInitialization.java | 0 .../argeo/security/core/OsgiModuleLabel.java | 0 .../security/core/SimpleRoleRegistration.java | 0 org.argeo.cms/bnd.bnd | 17 --- org.argeo.cms/src/org/argeo/cms/CmsView.java | 2 - .../cms/{maintenance => }/DataMigration.java | 2 +- .../src/org/argeo/cms/{ui => }/UxContext.java | 2 +- .../src/org/argeo/cms/auth/CurrentUser.java | 24 ++-- .../src/org/argeo/cms/i18n/LocaleUtils.java | 129 ++++-------------- .../internal/auth/ConsoleCallbackHandler.java | 30 ++-- .../internal/backup/RepositoryMigration.java | 2 +- .../argeo/cms/internal/kernel/CmsState.java | 12 +- .../cms/internal/kernel/KernelUtils.java | 60 ++++++++ .../argeo/cms/internal/kernel/NodeHttp.java | 5 +- pom.xml | 2 +- 102 files changed, 343 insertions(+), 334 deletions(-) create mode 100644 org.argeo.cms.ui/.classpath create mode 100644 org.argeo.cms.ui/.project create mode 100644 org.argeo.cms.ui/bnd.bnd create mode 100644 org.argeo.cms.ui/build.properties create mode 100644 org.argeo.cms.ui/pom.xml rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/forms/EditableLink.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/forms/EditableMultiStringProperty.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/forms/EditablePropertyDate.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/forms/EditablePropertyString.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/forms/FormConstants.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/forms/FormEditorHeader.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/forms/FormPageViewer.java (99%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/forms/FormStyle.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/forms/FormUtils.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/maintenance/AbstractOsgiComposite.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/maintenance/Browse.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/maintenance/ConnectivityDeploymentUi.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/maintenance/DataDeploymentUi.java (63%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/maintenance/DeploymentEntryPoint.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/maintenance/LogDeploymentUi.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/maintenance/MaintenanceStyles.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/maintenance/MaintenanceUi.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/maintenance/NonAdminPage.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/maintenance/SecurityDeploymentUi.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/text/CustomTextEditor.java (94%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/text/IdentityTextInterpreter.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/text/Img.java (98%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/text/Paragraph.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/text/StandardTextEditor.java (96%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/text/TextEditorHeader.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/text/TextInterpreter.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/text/TextSection.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/text/TextStyles.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/text/WikiPage.java (100%) create mode 100644 org.argeo.cms.ui/src/org/argeo/cms/ui/internal/Activator.java rename {org.argeo.cms/src/org/argeo/cms => org.argeo.cms.ui/src/org/argeo/cms/ui}/internal/ImageManagerImpl.java (99%) rename {org.argeo.cms/src/org/argeo/cms => org.argeo.cms.ui/src/org/argeo/cms/ui}/internal/JcrContentProvider.java (98%) rename {org.argeo.cms/src/org/argeo/cms => org.argeo.cms.ui/src/org/argeo/cms/ui}/internal/JcrFileUploadReceiver.java (98%) rename {org.argeo.cms/src/org/argeo/cms => org.argeo.cms.ui/src/org/argeo/cms/ui}/internal/SimpleEditableImage.java (97%) rename {org.argeo.cms/src/org/argeo/cms/internal/kernel => org.argeo.cms.ui/src/org/argeo/cms/ui/internal/rwt}/UserUi.java (92%) rename {org.argeo.cms/src/org/argeo/cms => org.argeo.cms.ui/src/org/argeo/cms/ui}/internal/text/AbstractTextViewer.java (99%) rename {org.argeo.cms/src/org/argeo/cms => org.argeo.cms.ui/src/org/argeo/cms/ui}/internal/text/MarkupValidatorCopy.java (99%) rename {org.argeo.cms/src/org/argeo/cms => org.argeo.cms.ui/src/org/argeo/cms/ui}/internal/text/SectionTitle.java (96%) rename {org.argeo.cms/src/org/argeo/cms => org.argeo.cms.ui/src/org/argeo/cms/ui}/internal/text/TextContextMenu.java (99%) rename {org.argeo.cms/src/org/argeo/cms => org.argeo.cms.ui/src/org/argeo/cms/ui}/internal/text/TextInterpreterImpl.java (95%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/util/BundleResourceLoader.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/util/CmsLink.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/util/CmsUtils.java (88%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/util/LoginEntryPoint.java (99%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/util/MenuLink.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/util/OpenUserMenu.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/util/SimpleApp.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/util/SimpleCmsHeader.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/util/SimpleDynamicPages.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/util/SimpleErgonomics.java (97%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/util/SimpleStaticPage.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/util/SimpleUxContext.java (95%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/util/StyleSheetResourceLoader.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/util/SystemNotifications.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/util/UserMenu.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/util/UserMenuLink.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/util/useradmin/UserAdminUtils.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/util/useradmin/UserAdminWrapper.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/viewers/AbstractPageViewer.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/viewers/EditablePart.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/viewers/ItemPart.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/viewers/JcrVersionCmsEditable.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/viewers/NodePart.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/viewers/PropertyPart.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/viewers/Section.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/viewers/SectionPart.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/widgets/EditableImage.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/widgets/EditableText.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/widgets/JcrComposite.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/widgets/ScrolledPage.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/widgets/StyledControl.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/widgets/auth/AbstractLoginDialog.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/widgets/auth/CmsLogin.java (88%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/widgets/auth/CmsLoginShell.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/widgets/auth/CompositeCallbackHandler.java (99%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/cms/widgets/auth/DefaultLoginDialog.java (100%) rename {org.argeo.cms/src/org/argeo/cms/internal => org.argeo.cms.ui/src/org/argeo/cms/widgets}/auth/LocaleChoice.java (73%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/security/core/AbstractSystemExecution.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/security/core/AuthenticatedApplicationContextInitialization.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/security/core/OsgiModuleLabel.java (100%) rename {org.argeo.cms => org.argeo.cms.ui}/src/org/argeo/security/core/SimpleRoleRegistration.java (100%) rename org.argeo.cms/src/org/argeo/cms/{maintenance => }/DataMigration.java (92%) rename org.argeo.cms/src/org/argeo/cms/{ui => }/UxContext.java (82%) diff --git a/dep/org.argeo.dep.cms.node/pom.xml b/dep/org.argeo.dep.cms.node/pom.xml index 1c0808965..21c8c4297 100644 --- a/dep/org.argeo.dep.cms.node/pom.xml +++ b/dep/org.argeo.dep.cms.node/pom.xml @@ -27,6 +27,11 @@ org.argeo.cms 2.1.46-SNAPSHOT + + org.argeo.commons + org.argeo.cms.ui + 2.1.46-SNAPSHOT + org.argeo.commons org.argeo.enterprise diff --git a/dep/org.argeo.dep.cms.platform/pom.xml b/dep/org.argeo.dep.cms.platform/pom.xml index 91a354198..25590aa82 100644 --- a/dep/org.argeo.dep.cms.platform/pom.xml +++ b/dep/org.argeo.dep.cms.platform/pom.xml @@ -17,11 +17,6 @@ org.argeo.dep.cms.node 2.1.46-SNAPSHOT - - org.argeo.commons - org.argeo.security.ui - 2.1.46-SNAPSHOT - org.argeo.commons org.argeo.eclipse.ui.workbench diff --git a/org.argeo.cms.ui.workbench.rap/pom.xml b/org.argeo.cms.ui.workbench.rap/pom.xml index 2822051e2..7fcce46ba 100644 --- a/org.argeo.cms.ui.workbench.rap/pom.xml +++ b/org.argeo.cms.ui.workbench.rap/pom.xml @@ -13,12 +13,7 @@ org.argeo.commons - org.argeo.util - 2.1.46-SNAPSHOT - - - org.argeo.commons - org.argeo.security.ui + org.argeo.cms.ui.workbench 2.1.46-SNAPSHOT @@ -26,10 +21,5 @@ org.argeo.eclipse.ui.rap 2.1.46-SNAPSHOT - - org.argeo.commons - org.argeo.cms - 2.1.46-SNAPSHOT - \ No newline at end of file diff --git a/org.argeo.cms.ui.workbench/pom.xml b/org.argeo.cms.ui.workbench/pom.xml index 2dccd6a3f..1a2cd3429 100644 --- a/org.argeo.cms.ui.workbench/pom.xml +++ b/org.argeo.cms.ui.workbench/pom.xml @@ -13,7 +13,7 @@ org.argeo.commons - org.argeo.cms + org.argeo.cms.ui 2.1.46-SNAPSHOT diff --git a/org.argeo.cms.ui/.classpath b/org.argeo.cms.ui/.classpath new file mode 100644 index 000000000..eca7bdba8 --- /dev/null +++ b/org.argeo.cms.ui/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/org.argeo.cms.ui/.project b/org.argeo.cms.ui/.project new file mode 100644 index 000000000..e52eb8ef7 --- /dev/null +++ b/org.argeo.cms.ui/.project @@ -0,0 +1,28 @@ + + + org.argeo.cms.ui + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/org.argeo.cms.ui/bnd.bnd b/org.argeo.cms.ui/bnd.bnd new file mode 100644 index 000000000..e472a2c52 --- /dev/null +++ b/org.argeo.cms.ui/bnd.bnd @@ -0,0 +1,11 @@ +Bundle-Activator: org.argeo.cms.ui.internal.Activator +Bundle-ActivationPolicy: lazy + +Import-Package: org.eclipse.swt,\ +org.eclipse.jface.window,\ +org.eclipse.core.commands,\ +javax.jcr.security,\ +org.argeo.eclipse.ui.dialogs,\ +org.springframework.context,\ +org.springframework.core.io,\ +* \ No newline at end of file diff --git a/org.argeo.cms.ui/build.properties b/org.argeo.cms.ui/build.properties new file mode 100644 index 000000000..34d2e4d2d --- /dev/null +++ b/org.argeo.cms.ui/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/org.argeo.cms.ui/pom.xml b/org.argeo.cms.ui/pom.xml new file mode 100644 index 000000000..90fffa5be --- /dev/null +++ b/org.argeo.cms.ui/pom.xml @@ -0,0 +1,26 @@ + + + 4.0.0 + + org.argeo.commons + argeo-commons + 2.1.46-SNAPSHOT + .. + + org.argeo.cms.ui + Argeo CMS UI + jar + + + org.argeo.commons + org.argeo.cms + 2.1.46-SNAPSHOT + + + org.argeo.commons + org.argeo.eclipse.ui.rap + 2.1.46-SNAPSHOT + provided + + + \ No newline at end of file diff --git a/org.argeo.cms/src/org/argeo/cms/forms/EditableLink.java b/org.argeo.cms.ui/src/org/argeo/cms/forms/EditableLink.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/forms/EditableLink.java rename to org.argeo.cms.ui/src/org/argeo/cms/forms/EditableLink.java diff --git a/org.argeo.cms/src/org/argeo/cms/forms/EditableMultiStringProperty.java b/org.argeo.cms.ui/src/org/argeo/cms/forms/EditableMultiStringProperty.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/forms/EditableMultiStringProperty.java rename to org.argeo.cms.ui/src/org/argeo/cms/forms/EditableMultiStringProperty.java diff --git a/org.argeo.cms/src/org/argeo/cms/forms/EditablePropertyDate.java b/org.argeo.cms.ui/src/org/argeo/cms/forms/EditablePropertyDate.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/forms/EditablePropertyDate.java rename to org.argeo.cms.ui/src/org/argeo/cms/forms/EditablePropertyDate.java diff --git a/org.argeo.cms/src/org/argeo/cms/forms/EditablePropertyString.java b/org.argeo.cms.ui/src/org/argeo/cms/forms/EditablePropertyString.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/forms/EditablePropertyString.java rename to org.argeo.cms.ui/src/org/argeo/cms/forms/EditablePropertyString.java diff --git a/org.argeo.cms/src/org/argeo/cms/forms/FormConstants.java b/org.argeo.cms.ui/src/org/argeo/cms/forms/FormConstants.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/forms/FormConstants.java rename to org.argeo.cms.ui/src/org/argeo/cms/forms/FormConstants.java diff --git a/org.argeo.cms/src/org/argeo/cms/forms/FormEditorHeader.java b/org.argeo.cms.ui/src/org/argeo/cms/forms/FormEditorHeader.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/forms/FormEditorHeader.java rename to org.argeo.cms.ui/src/org/argeo/cms/forms/FormEditorHeader.java diff --git a/org.argeo.cms/src/org/argeo/cms/forms/FormPageViewer.java b/org.argeo.cms.ui/src/org/argeo/cms/forms/FormPageViewer.java similarity index 99% rename from org.argeo.cms/src/org/argeo/cms/forms/FormPageViewer.java rename to org.argeo.cms.ui/src/org/argeo/cms/forms/FormPageViewer.java index b4d24bf95..8526fcaca 100644 --- a/org.argeo.cms/src/org/argeo/cms/forms/FormPageViewer.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/forms/FormPageViewer.java @@ -20,8 +20,8 @@ import org.argeo.cms.CmsEditable; import org.argeo.cms.CmsException; import org.argeo.cms.CmsImageManager; import org.argeo.cms.CmsNames; -import org.argeo.cms.internal.text.MarkupValidatorCopy; import org.argeo.cms.text.Img; +import org.argeo.cms.ui.internal.text.MarkupValidatorCopy; import org.argeo.cms.util.CmsUtils; import org.argeo.cms.viewers.AbstractPageViewer; import org.argeo.cms.viewers.EditablePart; diff --git a/org.argeo.cms/src/org/argeo/cms/forms/FormStyle.java b/org.argeo.cms.ui/src/org/argeo/cms/forms/FormStyle.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/forms/FormStyle.java rename to org.argeo.cms.ui/src/org/argeo/cms/forms/FormStyle.java diff --git a/org.argeo.cms/src/org/argeo/cms/forms/FormUtils.java b/org.argeo.cms.ui/src/org/argeo/cms/forms/FormUtils.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/forms/FormUtils.java rename to org.argeo.cms.ui/src/org/argeo/cms/forms/FormUtils.java diff --git a/org.argeo.cms/src/org/argeo/cms/maintenance/AbstractOsgiComposite.java b/org.argeo.cms.ui/src/org/argeo/cms/maintenance/AbstractOsgiComposite.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/maintenance/AbstractOsgiComposite.java rename to org.argeo.cms.ui/src/org/argeo/cms/maintenance/AbstractOsgiComposite.java diff --git a/org.argeo.cms/src/org/argeo/cms/maintenance/Browse.java b/org.argeo.cms.ui/src/org/argeo/cms/maintenance/Browse.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/maintenance/Browse.java rename to org.argeo.cms.ui/src/org/argeo/cms/maintenance/Browse.java diff --git a/org.argeo.cms/src/org/argeo/cms/maintenance/ConnectivityDeploymentUi.java b/org.argeo.cms.ui/src/org/argeo/cms/maintenance/ConnectivityDeploymentUi.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/maintenance/ConnectivityDeploymentUi.java rename to org.argeo.cms.ui/src/org/argeo/cms/maintenance/ConnectivityDeploymentUi.java diff --git a/org.argeo.cms/src/org/argeo/cms/maintenance/DataDeploymentUi.java b/org.argeo.cms.ui/src/org/argeo/cms/maintenance/DataDeploymentUi.java similarity index 63% rename from org.argeo.cms/src/org/argeo/cms/maintenance/DataDeploymentUi.java rename to org.argeo.cms.ui/src/org/argeo/cms/maintenance/DataDeploymentUi.java index 49f3fc351..efcbaa991 100644 --- a/org.argeo.cms/src/org/argeo/cms/maintenance/DataDeploymentUi.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/maintenance/DataDeploymentUi.java @@ -9,24 +9,14 @@ import java.util.Collection; import org.apache.jackrabbit.core.RepositoryContext; import org.apache.jackrabbit.core.config.RepositoryConfig; -import org.argeo.cms.CmsException; -import org.argeo.cms.internal.kernel.JackrabbitType; import org.argeo.cms.util.CmsUtils; import org.argeo.jcr.ArgeoJcrConstants; -import org.argeo.node.NodeConstants; import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.osgi.framework.ServiceReference; -import org.osgi.service.cm.Configuration; -import org.osgi.service.cm.ConfigurationAdmin; class DataDeploymentUi extends AbstractOsgiComposite { private static final long serialVersionUID = 590221539553514693L; @@ -45,47 +35,47 @@ class DataDeploymentUi extends AbstractOsgiComposite { } private void initNewUi(Composite parent) { - try { - ConfigurationAdmin confAdmin = bc.getService(bc.getServiceReference(ConfigurationAdmin.class)); - Configuration[] confs = confAdmin.listConfigurations( - "(" + ConfigurationAdmin.SERVICE_FACTORYPID + "=" + NodeConstants.NODE_REPOS_FACTORY_PID + ")"); - if (confs == null || confs.length == 0) { - Group buttonGroup = new Group(parent, SWT.NONE); - buttonGroup.setText("Repository Type"); - buttonGroup.setLayout(new GridLayout(2, true)); - buttonGroup.setLayoutData(new GridData(GridData.FILL_VERTICAL)); - - SelectionListener selectionListener = new SelectionAdapter() { - private static final long serialVersionUID = 6247064348421088092L; - - public void widgetSelected(SelectionEvent event) { - Button radio = (Button) event.widget; - if (!radio.getSelection()) - return; - log.debug(event); - JackrabbitType nodeType = (JackrabbitType) radio.getData(); - if (log.isDebugEnabled()) - log.debug(" selected = " + nodeType.name()); - }; - }; - - for (JackrabbitType nodeType : JackrabbitType.values()) { - Button radio = new Button(buttonGroup, SWT.RADIO); - radio.setText(nodeType.name()); - radio.setData(nodeType); - if (nodeType.equals(JackrabbitType.localfs)) - radio.setSelection(true); - radio.addSelectionListener(selectionListener); - } - - } else if (confs.length == 1) { - - } else { - throw new CmsException("Multiple repos not yet supported"); - } - } catch (Exception e) { - throw new CmsException("Cannot initialize UI", e); - } +// try { +// ConfigurationAdmin confAdmin = bc.getService(bc.getServiceReference(ConfigurationAdmin.class)); +// Configuration[] confs = confAdmin.listConfigurations( +// "(" + ConfigurationAdmin.SERVICE_FACTORYPID + "=" + NodeConstants.NODE_REPOS_FACTORY_PID + ")"); +// if (confs == null || confs.length == 0) { +// Group buttonGroup = new Group(parent, SWT.NONE); +// buttonGroup.setText("Repository Type"); +// buttonGroup.setLayout(new GridLayout(2, true)); +// buttonGroup.setLayoutData(new GridData(GridData.FILL_VERTICAL)); +// +// SelectionListener selectionListener = new SelectionAdapter() { +// private static final long serialVersionUID = 6247064348421088092L; +// +// public void widgetSelected(SelectionEvent event) { +// Button radio = (Button) event.widget; +// if (!radio.getSelection()) +// return; +// log.debug(event); +// JackrabbitType nodeType = (JackrabbitType) radio.getData(); +// if (log.isDebugEnabled()) +// log.debug(" selected = " + nodeType.name()); +// }; +// }; +// +// for (JackrabbitType nodeType : JackrabbitType.values()) { +// Button radio = new Button(buttonGroup, SWT.RADIO); +// radio.setText(nodeType.name()); +// radio.setData(nodeType); +// if (nodeType.equals(JackrabbitType.localfs)) +// radio.setSelection(true); +// radio.addSelectionListener(selectionListener); +// } +// +// } else if (confs.length == 1) { +// +// } else { +// throw new CmsException("Multiple repos not yet supported"); +// } +// } catch (Exception e) { +// throw new CmsException("Cannot initialize UI", e); +// } } diff --git a/org.argeo.cms/src/org/argeo/cms/maintenance/DeploymentEntryPoint.java b/org.argeo.cms.ui/src/org/argeo/cms/maintenance/DeploymentEntryPoint.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/maintenance/DeploymentEntryPoint.java rename to org.argeo.cms.ui/src/org/argeo/cms/maintenance/DeploymentEntryPoint.java diff --git a/org.argeo.cms/src/org/argeo/cms/maintenance/LogDeploymentUi.java b/org.argeo.cms.ui/src/org/argeo/cms/maintenance/LogDeploymentUi.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/maintenance/LogDeploymentUi.java rename to org.argeo.cms.ui/src/org/argeo/cms/maintenance/LogDeploymentUi.java diff --git a/org.argeo.cms/src/org/argeo/cms/maintenance/MaintenanceStyles.java b/org.argeo.cms.ui/src/org/argeo/cms/maintenance/MaintenanceStyles.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/maintenance/MaintenanceStyles.java rename to org.argeo.cms.ui/src/org/argeo/cms/maintenance/MaintenanceStyles.java diff --git a/org.argeo.cms/src/org/argeo/cms/maintenance/MaintenanceUi.java b/org.argeo.cms.ui/src/org/argeo/cms/maintenance/MaintenanceUi.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/maintenance/MaintenanceUi.java rename to org.argeo.cms.ui/src/org/argeo/cms/maintenance/MaintenanceUi.java diff --git a/org.argeo.cms/src/org/argeo/cms/maintenance/NonAdminPage.java b/org.argeo.cms.ui/src/org/argeo/cms/maintenance/NonAdminPage.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/maintenance/NonAdminPage.java rename to org.argeo.cms.ui/src/org/argeo/cms/maintenance/NonAdminPage.java diff --git a/org.argeo.cms/src/org/argeo/cms/maintenance/SecurityDeploymentUi.java b/org.argeo.cms.ui/src/org/argeo/cms/maintenance/SecurityDeploymentUi.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/maintenance/SecurityDeploymentUi.java rename to org.argeo.cms.ui/src/org/argeo/cms/maintenance/SecurityDeploymentUi.java diff --git a/org.argeo.cms/src/org/argeo/cms/text/CustomTextEditor.java b/org.argeo.cms.ui/src/org/argeo/cms/text/CustomTextEditor.java similarity index 94% rename from org.argeo.cms/src/org/argeo/cms/text/CustomTextEditor.java rename to org.argeo.cms.ui/src/org/argeo/cms/text/CustomTextEditor.java index 900dce2ae..c7491e02c 100644 --- a/org.argeo.cms/src/org/argeo/cms/text/CustomTextEditor.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/text/CustomTextEditor.java @@ -6,7 +6,7 @@ import javax.jcr.Node; import javax.jcr.RepositoryException; import org.argeo.cms.CmsEditable; -import org.argeo.cms.internal.text.AbstractTextViewer; +import org.argeo.cms.ui.internal.text.AbstractTextViewer; import org.argeo.cms.viewers.Section; import org.eclipse.swt.widgets.Composite; diff --git a/org.argeo.cms/src/org/argeo/cms/text/IdentityTextInterpreter.java b/org.argeo.cms.ui/src/org/argeo/cms/text/IdentityTextInterpreter.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/text/IdentityTextInterpreter.java rename to org.argeo.cms.ui/src/org/argeo/cms/text/IdentityTextInterpreter.java diff --git a/org.argeo.cms/src/org/argeo/cms/text/Img.java b/org.argeo.cms.ui/src/org/argeo/cms/text/Img.java similarity index 98% rename from org.argeo.cms/src/org/argeo/cms/text/Img.java rename to org.argeo.cms.ui/src/org/argeo/cms/text/Img.java index 8c23109bf..e0cf21624 100644 --- a/org.argeo.cms/src/org/argeo/cms/text/Img.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/text/Img.java @@ -5,7 +5,7 @@ import javax.jcr.RepositoryException; import org.argeo.cms.CmsException; import org.argeo.cms.CmsImageManager; -import org.argeo.cms.internal.JcrFileUploadReceiver; +import org.argeo.cms.ui.internal.JcrFileUploadReceiver; import org.argeo.cms.util.CmsUtils; import org.argeo.cms.viewers.NodePart; import org.argeo.cms.viewers.Section; diff --git a/org.argeo.cms/src/org/argeo/cms/text/Paragraph.java b/org.argeo.cms.ui/src/org/argeo/cms/text/Paragraph.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/text/Paragraph.java rename to org.argeo.cms.ui/src/org/argeo/cms/text/Paragraph.java diff --git a/org.argeo.cms/src/org/argeo/cms/text/StandardTextEditor.java b/org.argeo.cms.ui/src/org/argeo/cms/text/StandardTextEditor.java similarity index 96% rename from org.argeo.cms/src/org/argeo/cms/text/StandardTextEditor.java rename to org.argeo.cms.ui/src/org/argeo/cms/text/StandardTextEditor.java index 4ce8d1fd9..3d1dc3f6f 100644 --- a/org.argeo.cms/src/org/argeo/cms/text/StandardTextEditor.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/text/StandardTextEditor.java @@ -8,7 +8,7 @@ import javax.jcr.RepositoryException; import org.argeo.cms.CmsEditable; import org.argeo.cms.CmsTypes; -import org.argeo.cms.internal.text.AbstractTextViewer; +import org.argeo.cms.ui.internal.text.AbstractTextViewer; import org.argeo.cms.util.CmsUtils; import org.argeo.cms.viewers.Section; import org.eclipse.swt.widgets.Composite; diff --git a/org.argeo.cms/src/org/argeo/cms/text/TextEditorHeader.java b/org.argeo.cms.ui/src/org/argeo/cms/text/TextEditorHeader.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/text/TextEditorHeader.java rename to org.argeo.cms.ui/src/org/argeo/cms/text/TextEditorHeader.java diff --git a/org.argeo.cms/src/org/argeo/cms/text/TextInterpreter.java b/org.argeo.cms.ui/src/org/argeo/cms/text/TextInterpreter.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/text/TextInterpreter.java rename to org.argeo.cms.ui/src/org/argeo/cms/text/TextInterpreter.java diff --git a/org.argeo.cms/src/org/argeo/cms/text/TextSection.java b/org.argeo.cms.ui/src/org/argeo/cms/text/TextSection.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/text/TextSection.java rename to org.argeo.cms.ui/src/org/argeo/cms/text/TextSection.java diff --git a/org.argeo.cms/src/org/argeo/cms/text/TextStyles.java b/org.argeo.cms.ui/src/org/argeo/cms/text/TextStyles.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/text/TextStyles.java rename to org.argeo.cms.ui/src/org/argeo/cms/text/TextStyles.java diff --git a/org.argeo.cms/src/org/argeo/cms/text/WikiPage.java b/org.argeo.cms.ui/src/org/argeo/cms/text/WikiPage.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/text/WikiPage.java rename to org.argeo.cms.ui/src/org/argeo/cms/text/WikiPage.java diff --git a/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/Activator.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/Activator.java new file mode 100644 index 000000000..ffc162b0f --- /dev/null +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/Activator.java @@ -0,0 +1,42 @@ +package org.argeo.cms.ui.internal; + +import org.argeo.cms.CmsStyles; +import org.argeo.cms.maintenance.MaintenanceUi; +import org.argeo.cms.ui.internal.rwt.UserUi; +import org.argeo.node.NodeState; +import org.argeo.util.LangUtils; +import org.eclipse.rap.rwt.application.ApplicationConfiguration; +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.util.tracker.ServiceTracker; + +public class Activator implements BundleActivator { + + // avoid dependency to RWT OSGi + private final static String CONTEXT_NAME_PROP = "contextName"; + + private static ServiceTracker nodeState; + + // @Override + public void start(BundleContext bc) throws Exception { + // UI + bc.registerService(ApplicationConfiguration.class, new MaintenanceUi(), + LangUtils.init(CONTEXT_NAME_PROP, "system")); + bc.registerService(ApplicationConfiguration.class, new UserUi(), LangUtils.init(CONTEXT_NAME_PROP, "user")); + + nodeState = new ServiceTracker<>(bc, NodeState.class, null); + nodeState.open(); + } + + @Override + public void stop(BundleContext context) throws Exception { + if (nodeState != null) { + nodeState.close(); + nodeState = null; + } + } + + public static NodeState getNodeState() { + return nodeState.getService(); + } +} diff --git a/org.argeo.cms/src/org/argeo/cms/internal/ImageManagerImpl.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/ImageManagerImpl.java similarity index 99% rename from org.argeo.cms/src/org/argeo/cms/internal/ImageManagerImpl.java rename to org.argeo.cms.ui/src/org/argeo/cms/ui/internal/ImageManagerImpl.java index 122c24e35..92f237a4c 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/ImageManagerImpl.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/ImageManagerImpl.java @@ -1,4 +1,4 @@ -package org.argeo.cms.internal; +package org.argeo.cms.ui.internal; import static javax.jcr.Node.JCR_CONTENT; import static javax.jcr.Property.JCR_DATA; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/JcrContentProvider.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/JcrContentProvider.java similarity index 98% rename from org.argeo.cms/src/org/argeo/cms/internal/JcrContentProvider.java rename to org.argeo.cms.ui/src/org/argeo/cms/ui/internal/JcrContentProvider.java index fd8eb2c75..3892f94df 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/JcrContentProvider.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/JcrContentProvider.java @@ -1,4 +1,4 @@ -package org.argeo.cms.internal; +package org.argeo.cms.ui.internal; import java.util.ArrayList; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/JcrFileUploadReceiver.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/JcrFileUploadReceiver.java similarity index 98% rename from org.argeo.cms/src/org/argeo/cms/internal/JcrFileUploadReceiver.java rename to org.argeo.cms.ui/src/org/argeo/cms/ui/internal/JcrFileUploadReceiver.java index a2ff49624..2b157eb61 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/JcrFileUploadReceiver.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/JcrFileUploadReceiver.java @@ -1,4 +1,4 @@ -package org.argeo.cms.internal; +package org.argeo.cms.ui.internal; import static javax.jcr.nodetype.NodeType.NT_FILE; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/SimpleEditableImage.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/SimpleEditableImage.java similarity index 97% rename from org.argeo.cms/src/org/argeo/cms/internal/SimpleEditableImage.java rename to org.argeo.cms.ui/src/org/argeo/cms/ui/internal/SimpleEditableImage.java index 67e500ffc..3bb1fdf15 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/SimpleEditableImage.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/SimpleEditableImage.java @@ -1,4 +1,4 @@ -package org.argeo.cms.internal; +package org.argeo.cms.ui.internal; import javax.jcr.RepositoryException; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/UserUi.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/rwt/UserUi.java similarity index 92% rename from org.argeo.cms/src/org/argeo/cms/internal/kernel/UserUi.java rename to org.argeo.cms.ui/src/org/argeo/cms/ui/internal/rwt/UserUi.java index fd332eee1..88cd17b81 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/UserUi.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/rwt/UserUi.java @@ -1,4 +1,4 @@ -package org.argeo.cms.internal.kernel; +package org.argeo.cms.ui.internal.rwt; import org.argeo.cms.util.LoginEntryPoint; import org.eclipse.rap.rwt.application.Application; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/text/AbstractTextViewer.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/text/AbstractTextViewer.java similarity index 99% rename from org.argeo.cms/src/org/argeo/cms/internal/text/AbstractTextViewer.java rename to org.argeo.cms.ui/src/org/argeo/cms/ui/internal/text/AbstractTextViewer.java index cb0b3a974..c4b6060f9 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/text/AbstractTextViewer.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/text/AbstractTextViewer.java @@ -1,4 +1,4 @@ -package org.argeo.cms.internal.text; +package org.argeo.cms.ui.internal.text; import static javax.jcr.Property.JCR_TITLE; import static org.argeo.cms.util.CmsUtils.fillWidth; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/text/MarkupValidatorCopy.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/text/MarkupValidatorCopy.java similarity index 99% rename from org.argeo.cms/src/org/argeo/cms/internal/text/MarkupValidatorCopy.java rename to org.argeo.cms.ui/src/org/argeo/cms/ui/internal/text/MarkupValidatorCopy.java index e28d3704c..9bced0d5e 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/text/MarkupValidatorCopy.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/text/MarkupValidatorCopy.java @@ -1,4 +1,4 @@ -package org.argeo.cms.internal.text; +package org.argeo.cms.ui.internal.text; import java.io.StringReader; import java.text.MessageFormat; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/text/SectionTitle.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/text/SectionTitle.java similarity index 96% rename from org.argeo.cms/src/org/argeo/cms/internal/text/SectionTitle.java rename to org.argeo.cms.ui/src/org/argeo/cms/ui/internal/text/SectionTitle.java index 160060ea3..24861ee06 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/text/SectionTitle.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/text/SectionTitle.java @@ -1,4 +1,4 @@ -package org.argeo.cms.internal.text; +package org.argeo.cms.ui.internal.text; import javax.jcr.Property; import javax.jcr.RepositoryException; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/text/TextContextMenu.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/text/TextContextMenu.java similarity index 99% rename from org.argeo.cms/src/org/argeo/cms/internal/text/TextContextMenu.java rename to org.argeo.cms.ui/src/org/argeo/cms/ui/internal/text/TextContextMenu.java index 8afad1629..4868b765a 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/text/TextContextMenu.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/text/TextContextMenu.java @@ -1,4 +1,4 @@ -package org.argeo.cms.internal.text; +package org.argeo.cms.ui.internal.text; import java.util.ArrayList; import java.util.List; diff --git a/org.argeo.cms/src/org/argeo/cms/internal/text/TextInterpreterImpl.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/text/TextInterpreterImpl.java similarity index 95% rename from org.argeo.cms/src/org/argeo/cms/internal/text/TextInterpreterImpl.java rename to org.argeo.cms.ui/src/org/argeo/cms/ui/internal/text/TextInterpreterImpl.java index c252efe4f..4a646c3fc 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/text/TextInterpreterImpl.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/internal/text/TextInterpreterImpl.java @@ -1,4 +1,4 @@ -package org.argeo.cms.internal.text; +package org.argeo.cms.ui.internal.text; import javax.jcr.Item; import javax.jcr.RepositoryException; diff --git a/org.argeo.cms/src/org/argeo/cms/util/BundleResourceLoader.java b/org.argeo.cms.ui/src/org/argeo/cms/util/BundleResourceLoader.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/util/BundleResourceLoader.java rename to org.argeo.cms.ui/src/org/argeo/cms/util/BundleResourceLoader.java diff --git a/org.argeo.cms/src/org/argeo/cms/util/CmsLink.java b/org.argeo.cms.ui/src/org/argeo/cms/util/CmsLink.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/util/CmsLink.java rename to org.argeo.cms.ui/src/org/argeo/cms/util/CmsLink.java diff --git a/org.argeo.cms/src/org/argeo/cms/util/CmsUtils.java b/org.argeo.cms.ui/src/org/argeo/cms/util/CmsUtils.java similarity index 88% rename from org.argeo.cms/src/org/argeo/cms/util/CmsUtils.java rename to org.argeo.cms.ui/src/org/argeo/cms/util/CmsUtils.java index e5d30262c..78279cd4b 100644 --- a/org.argeo.cms/src/org/argeo/cms/util/CmsUtils.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/util/CmsUtils.java @@ -1,9 +1,5 @@ package org.argeo.cms.util; -import static org.argeo.cms.internal.kernel.KernelConstants.WEBDAV_PRIVATE; -import static org.argeo.cms.internal.kernel.KernelConstants.WEBDAV_PUBLIC; -import static org.argeo.jcr.ArgeoJcrConstants.ALIAS_NODE; - import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; @@ -22,6 +18,7 @@ import org.argeo.cms.CmsException; import org.argeo.cms.CmsView; import org.argeo.cms.auth.AuthConstants; import org.argeo.eclipse.ui.specific.UiContext; +import org.argeo.jcr.ArgeoJcrConstants; import org.argeo.jcr.JcrUtils; import org.eclipse.rap.rwt.RWT; import org.eclipse.rap.rwt.service.ResourceManager; @@ -62,7 +59,7 @@ public class CmsUtils implements CmsConstants { throw new CmsException("Cannot extract server base URL from " + request.getRequestURL(), e); } } - +// public static String getDataUrl(Node node, HttpServletRequest request) throws RepositoryException { try { StringBuilder buf = getServerBaseUrl(request); @@ -72,7 +69,10 @@ public class CmsUtils implements CmsConstants { throw new CmsException("Cannot build data URL for " + node, e); } } - +// FIXME + private final static String PATH_DATA = "/data"; + private final static String WEBDAV_PUBLIC = PATH_DATA + "/public"; + private final static String WEBDAV_PRIVATE = PATH_DATA + "/files"; public static String getDataPath(Node node) throws RepositoryException { assert node != null; String userId = node.getSession().getUserID(); @@ -85,21 +85,21 @@ public class CmsUtils implements CmsConstants { else buf.append(WEBDAV_PRIVATE); // TODO convey repo alias vie repository properties - return buf.append('/').append(ALIAS_NODE).append('/').append(node.getSession().getWorkspace().getName()) + return buf.append('/').append(ArgeoJcrConstants.ALIAS_NODE).append('/').append(node.getSession().getWorkspace().getName()) .append(node.getPath()).toString(); } - - public static String getCanonicalUrl(Node node, HttpServletRequest request) throws RepositoryException { - try { - StringBuilder buf = getServerBaseUrl(request); - buf.append('/').append('!').append(node.getPath()); - return new URL(buf.toString()).toString(); - } catch (MalformedURLException e) { - throw new CmsException("Cannot build data URL for " + node, e); - } - // return request.getRequestURL().append('!').append(node.getPath()) - // .toString(); - } +// +// public static String getCanonicalUrl(Node node, HttpServletRequest request) throws RepositoryException { +// try { +// StringBuilder buf = getServerBaseUrl(request); +// buf.append('/').append('!').append(node.getPath()); +// return new URL(buf.toString()).toString(); +// } catch (MalformedURLException e) { +// throw new CmsException("Cannot build data URL for " + node, e); +// } +// // return request.getRequestURL().append('!').append(node.getPath()) +// // .toString(); +// } /** @deprecated Use rowData16px() instead. GridData should not be reused. */ @Deprecated diff --git a/org.argeo.cms/src/org/argeo/cms/util/LoginEntryPoint.java b/org.argeo.cms.ui/src/org/argeo/cms/util/LoginEntryPoint.java similarity index 99% rename from org.argeo.cms/src/org/argeo/cms/util/LoginEntryPoint.java rename to org.argeo.cms.ui/src/org/argeo/cms/util/LoginEntryPoint.java index 2ccb3ca06..07a139730 100644 --- a/org.argeo.cms/src/org/argeo/cms/util/LoginEntryPoint.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/util/LoginEntryPoint.java @@ -11,10 +11,10 @@ import javax.servlet.http.HttpServletRequest; import org.argeo.cms.CmsException; import org.argeo.cms.CmsImageManager; import org.argeo.cms.CmsView; +import org.argeo.cms.UxContext; import org.argeo.cms.auth.AuthConstants; import org.argeo.cms.auth.CurrentUser; import org.argeo.cms.auth.HttpRequestCallbackHandler; -import org.argeo.cms.ui.UxContext; import org.argeo.cms.widgets.auth.CmsLogin; import org.argeo.cms.widgets.auth.CmsLoginShell; import org.argeo.eclipse.ui.specific.UiContext; diff --git a/org.argeo.cms/src/org/argeo/cms/util/MenuLink.java b/org.argeo.cms.ui/src/org/argeo/cms/util/MenuLink.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/util/MenuLink.java rename to org.argeo.cms.ui/src/org/argeo/cms/util/MenuLink.java diff --git a/org.argeo.cms/src/org/argeo/cms/util/OpenUserMenu.java b/org.argeo.cms.ui/src/org/argeo/cms/util/OpenUserMenu.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/util/OpenUserMenu.java rename to org.argeo.cms.ui/src/org/argeo/cms/util/OpenUserMenu.java diff --git a/org.argeo.cms/src/org/argeo/cms/util/SimpleApp.java b/org.argeo.cms.ui/src/org/argeo/cms/util/SimpleApp.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/util/SimpleApp.java rename to org.argeo.cms.ui/src/org/argeo/cms/util/SimpleApp.java diff --git a/org.argeo.cms/src/org/argeo/cms/util/SimpleCmsHeader.java b/org.argeo.cms.ui/src/org/argeo/cms/util/SimpleCmsHeader.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/util/SimpleCmsHeader.java rename to org.argeo.cms.ui/src/org/argeo/cms/util/SimpleCmsHeader.java diff --git a/org.argeo.cms/src/org/argeo/cms/util/SimpleDynamicPages.java b/org.argeo.cms.ui/src/org/argeo/cms/util/SimpleDynamicPages.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/util/SimpleDynamicPages.java rename to org.argeo.cms.ui/src/org/argeo/cms/util/SimpleDynamicPages.java diff --git a/org.argeo.cms/src/org/argeo/cms/util/SimpleErgonomics.java b/org.argeo.cms.ui/src/org/argeo/cms/util/SimpleErgonomics.java similarity index 97% rename from org.argeo.cms/src/org/argeo/cms/util/SimpleErgonomics.java rename to org.argeo.cms.ui/src/org/argeo/cms/util/SimpleErgonomics.java index e7192af0f..8ada61fdf 100644 --- a/org.argeo.cms/src/org/argeo/cms/util/SimpleErgonomics.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/util/SimpleErgonomics.java @@ -12,8 +12,8 @@ import org.argeo.cms.CmsException; import org.argeo.cms.CmsImageManager; import org.argeo.cms.CmsStyles; import org.argeo.cms.CmsUiProvider; -import org.argeo.cms.internal.ImageManagerImpl; -import org.argeo.cms.ui.UxContext; +import org.argeo.cms.UxContext; +import org.argeo.cms.ui.internal.ImageManagerImpl; import org.eclipse.rap.rwt.RWT; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; diff --git a/org.argeo.cms/src/org/argeo/cms/util/SimpleStaticPage.java b/org.argeo.cms.ui/src/org/argeo/cms/util/SimpleStaticPage.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/util/SimpleStaticPage.java rename to org.argeo.cms.ui/src/org/argeo/cms/util/SimpleStaticPage.java diff --git a/org.argeo.cms/src/org/argeo/cms/util/SimpleUxContext.java b/org.argeo.cms.ui/src/org/argeo/cms/util/SimpleUxContext.java similarity index 95% rename from org.argeo.cms/src/org/argeo/cms/util/SimpleUxContext.java rename to org.argeo.cms.ui/src/org/argeo/cms/util/SimpleUxContext.java index 6cb37bde4..c5a6e6f4c 100644 --- a/org.argeo.cms/src/org/argeo/cms/util/SimpleUxContext.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/util/SimpleUxContext.java @@ -1,6 +1,6 @@ package org.argeo.cms.util; -import org.argeo.cms.ui.UxContext; +import org.argeo.cms.UxContext; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Display; diff --git a/org.argeo.cms/src/org/argeo/cms/util/StyleSheetResourceLoader.java b/org.argeo.cms.ui/src/org/argeo/cms/util/StyleSheetResourceLoader.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/util/StyleSheetResourceLoader.java rename to org.argeo.cms.ui/src/org/argeo/cms/util/StyleSheetResourceLoader.java diff --git a/org.argeo.cms/src/org/argeo/cms/util/SystemNotifications.java b/org.argeo.cms.ui/src/org/argeo/cms/util/SystemNotifications.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/util/SystemNotifications.java rename to org.argeo.cms.ui/src/org/argeo/cms/util/SystemNotifications.java diff --git a/org.argeo.cms/src/org/argeo/cms/util/UserMenu.java b/org.argeo.cms.ui/src/org/argeo/cms/util/UserMenu.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/util/UserMenu.java rename to org.argeo.cms.ui/src/org/argeo/cms/util/UserMenu.java diff --git a/org.argeo.cms/src/org/argeo/cms/util/UserMenuLink.java b/org.argeo.cms.ui/src/org/argeo/cms/util/UserMenuLink.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/util/UserMenuLink.java rename to org.argeo.cms.ui/src/org/argeo/cms/util/UserMenuLink.java diff --git a/org.argeo.cms/src/org/argeo/cms/util/useradmin/UserAdminUtils.java b/org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminUtils.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/util/useradmin/UserAdminUtils.java rename to org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminUtils.java diff --git a/org.argeo.cms/src/org/argeo/cms/util/useradmin/UserAdminWrapper.java b/org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminWrapper.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/util/useradmin/UserAdminWrapper.java rename to org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminWrapper.java diff --git a/org.argeo.cms/src/org/argeo/cms/viewers/AbstractPageViewer.java b/org.argeo.cms.ui/src/org/argeo/cms/viewers/AbstractPageViewer.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/viewers/AbstractPageViewer.java rename to org.argeo.cms.ui/src/org/argeo/cms/viewers/AbstractPageViewer.java diff --git a/org.argeo.cms/src/org/argeo/cms/viewers/EditablePart.java b/org.argeo.cms.ui/src/org/argeo/cms/viewers/EditablePart.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/viewers/EditablePart.java rename to org.argeo.cms.ui/src/org/argeo/cms/viewers/EditablePart.java diff --git a/org.argeo.cms/src/org/argeo/cms/viewers/ItemPart.java b/org.argeo.cms.ui/src/org/argeo/cms/viewers/ItemPart.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/viewers/ItemPart.java rename to org.argeo.cms.ui/src/org/argeo/cms/viewers/ItemPart.java diff --git a/org.argeo.cms/src/org/argeo/cms/viewers/JcrVersionCmsEditable.java b/org.argeo.cms.ui/src/org/argeo/cms/viewers/JcrVersionCmsEditable.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/viewers/JcrVersionCmsEditable.java rename to org.argeo.cms.ui/src/org/argeo/cms/viewers/JcrVersionCmsEditable.java diff --git a/org.argeo.cms/src/org/argeo/cms/viewers/NodePart.java b/org.argeo.cms.ui/src/org/argeo/cms/viewers/NodePart.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/viewers/NodePart.java rename to org.argeo.cms.ui/src/org/argeo/cms/viewers/NodePart.java diff --git a/org.argeo.cms/src/org/argeo/cms/viewers/PropertyPart.java b/org.argeo.cms.ui/src/org/argeo/cms/viewers/PropertyPart.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/viewers/PropertyPart.java rename to org.argeo.cms.ui/src/org/argeo/cms/viewers/PropertyPart.java diff --git a/org.argeo.cms/src/org/argeo/cms/viewers/Section.java b/org.argeo.cms.ui/src/org/argeo/cms/viewers/Section.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/viewers/Section.java rename to org.argeo.cms.ui/src/org/argeo/cms/viewers/Section.java diff --git a/org.argeo.cms/src/org/argeo/cms/viewers/SectionPart.java b/org.argeo.cms.ui/src/org/argeo/cms/viewers/SectionPart.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/viewers/SectionPart.java rename to org.argeo.cms.ui/src/org/argeo/cms/viewers/SectionPart.java diff --git a/org.argeo.cms/src/org/argeo/cms/widgets/EditableImage.java b/org.argeo.cms.ui/src/org/argeo/cms/widgets/EditableImage.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/widgets/EditableImage.java rename to org.argeo.cms.ui/src/org/argeo/cms/widgets/EditableImage.java diff --git a/org.argeo.cms/src/org/argeo/cms/widgets/EditableText.java b/org.argeo.cms.ui/src/org/argeo/cms/widgets/EditableText.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/widgets/EditableText.java rename to org.argeo.cms.ui/src/org/argeo/cms/widgets/EditableText.java diff --git a/org.argeo.cms/src/org/argeo/cms/widgets/JcrComposite.java b/org.argeo.cms.ui/src/org/argeo/cms/widgets/JcrComposite.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/widgets/JcrComposite.java rename to org.argeo.cms.ui/src/org/argeo/cms/widgets/JcrComposite.java diff --git a/org.argeo.cms/src/org/argeo/cms/widgets/ScrolledPage.java b/org.argeo.cms.ui/src/org/argeo/cms/widgets/ScrolledPage.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/widgets/ScrolledPage.java rename to org.argeo.cms.ui/src/org/argeo/cms/widgets/ScrolledPage.java diff --git a/org.argeo.cms/src/org/argeo/cms/widgets/StyledControl.java b/org.argeo.cms.ui/src/org/argeo/cms/widgets/StyledControl.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/widgets/StyledControl.java rename to org.argeo.cms.ui/src/org/argeo/cms/widgets/StyledControl.java diff --git a/org.argeo.cms/src/org/argeo/cms/widgets/auth/AbstractLoginDialog.java b/org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/AbstractLoginDialog.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/widgets/auth/AbstractLoginDialog.java rename to org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/AbstractLoginDialog.java diff --git a/org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLogin.java b/org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/CmsLogin.java similarity index 88% rename from org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLogin.java rename to org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/CmsLogin.java index 8f00c4577..21f101aea 100644 --- a/org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLogin.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/CmsLogin.java @@ -4,7 +4,6 @@ import static org.argeo.cms.CmsMsg.password; import static org.argeo.cms.CmsMsg.username; import static org.argeo.cms.auth.AuthConstants.LOGIN_CONTEXT_ANONYMOUS; import static org.argeo.cms.auth.AuthConstants.LOGIN_CONTEXT_USER; -import static org.argeo.cms.internal.kernel.Activator.getNodeState; import java.io.IOException; import java.util.List; @@ -29,9 +28,8 @@ import org.argeo.cms.CmsView; import org.argeo.cms.auth.CurrentUser; import org.argeo.cms.auth.HttpRequestCallback; import org.argeo.cms.i18n.LocaleUtils; -import org.argeo.cms.internal.auth.LocaleChoice; +import org.argeo.cms.ui.internal.Activator; import org.argeo.cms.util.CmsUtils; -import org.argeo.eclipse.ui.dialogs.ErrorFeedback; import org.eclipse.rap.rwt.RWT; import org.eclipse.swt.SWT; import org.eclipse.swt.events.MouseAdapter; @@ -65,8 +63,8 @@ public class CmsLogin implements CmsStyles, CallbackHandler { public CmsLogin(CmsView cmsView) { this.cmsView = cmsView; - defaultLocale = getNodeState().getDefaultLocale(); - List locales = getNodeState().getLocales(); + defaultLocale = Activator.getNodeState().getDefaultLocale(); + List locales = Activator.getNodeState().getLocales(); if (locales != null) localeChoice = new LocaleChoice(locales, defaultLocale); loginSelectionListener = new SelectionListener() { @@ -100,8 +98,7 @@ public class CmsLogin implements CmsStyles, CallbackHandler { parent.setLayout(CmsUtils.noSpaceGridLayout()); Composite credentialsBlock = createCredentialsBlock(parent); if (parent instanceof Shell) { - credentialsBlock.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, - true, true)); + credentialsBlock.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true)); } } @@ -118,8 +115,7 @@ public class CmsLogin implements CmsStyles, CallbackHandler { } protected Composite userUi(Composite parent) { - Locale locale = localeChoice == null ? this.defaultLocale - : localeChoice.getSelectedLocale(); + Locale locale = localeChoice == null ? this.defaultLocale : localeChoice.getSelectedLocale(); credentialsBlock = new Composite(parent, SWT.NONE); credentialsBlock.setLayout(new GridLayout()); credentialsBlock.setLayoutData(CmsUtils.fillAll()); @@ -149,8 +145,7 @@ public class CmsLogin implements CmsStyles, CallbackHandler { } protected Composite anonymousUi(Composite parent) { - Locale locale = localeChoice == null ? this.defaultLocale - : localeChoice.getSelectedLocale(); + Locale locale = localeChoice == null ? this.defaultLocale : localeChoice.getSelectedLocale(); // We need a composite for the traversal credentialsBlock = new Composite(parent, SWT.NONE); credentialsBlock.setLayout(new GridLayout()); @@ -190,8 +185,7 @@ public class CmsLogin implements CmsStyles, CallbackHandler { credentialsBlock.setTabList(new Control[] { usernameT, passwordT }); // credentialsBlock.setFocus(); - extendsCredentialsBlock(credentialsBlock, locale, - loginSelectionListener); + extendsCredentialsBlock(credentialsBlock, locale, loginSelectionListener); if (localeChoice != null) createLocalesBlock(credentialsBlock); return credentialsBlock; @@ -201,8 +195,8 @@ public class CmsLogin implements CmsStyles, CallbackHandler { * To be overridden in order to provide custome login button and other * links. */ - protected void extendsCredentialsBlock(Composite credentialsBlock, - Locale selectedLocale, SelectionListener loginSelectionListener) { + protected void extendsCredentialsBlock(Composite credentialsBlock, Locale selectedLocale, + SelectionListener loginSelectionListener) { } @@ -233,8 +227,7 @@ public class CmsLogin implements CmsStyles, CallbackHandler { public void widgetSelected(SelectionEvent event) { Button button = (Button) event.widget; if (button.getSelection()) { - localeChoice.setSelectedIndex((Integer) event.widget - .getData()); + localeChoice.setSelectedIndex((Integer) event.widget.getData()); updateLocale(localeChoice.getSelectedLocale()); } }; @@ -245,8 +238,7 @@ public class CmsLogin implements CmsStyles, CallbackHandler { Locale locale = locales.get(i); Button button = new Button(c, SWT.RADIO); button.setData(i); - button.setText(LocaleUtils.lead(locale.getDisplayName(locale), - locale) + " (" + locale + ")"); + button.setText(LocaleUtils.lead(locale.getDisplayName(locale), locale) + " (" + locale + ")"); // button.addListener(SWT.Selection, listener); button.addSelectionListener(selectionListener); if (i == localeChoice.getSelectedIndex()) @@ -272,7 +264,7 @@ public class CmsLogin implements CmsStyles, CallbackHandler { } catch (InterruptedException e2) { // silent } -// ErrorFeedback.show("Login failed", e); + // ErrorFeedback.show("Login failed", e); return false; } catch (LoginException e) { log.error("Cannot login", e); @@ -288,20 +280,16 @@ public class CmsLogin implements CmsStyles, CallbackHandler { } @Override - public void handle(Callback[] callbacks) throws IOException, - UnsupportedCallbackException { + public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { for (Callback callback : callbacks) { if (callback instanceof NameCallback) ((NameCallback) callback).setName(usernameT.getText()); else if (callback instanceof PasswordCallback) - ((PasswordCallback) callback).setPassword(passwordT - .getTextChars()); + ((PasswordCallback) callback).setPassword(passwordT.getTextChars()); else if (callback instanceof HttpRequestCallback) ((HttpRequestCallback) callback).setRequest(RWT.getRequest()); - else if (callback instanceof LanguageCallback - && localeChoice != null) - ((LanguageCallback) callback).setLocale(localeChoice - .getSelectedLocale()); + else if (callback instanceof LanguageCallback && localeChoice != null) + ((LanguageCallback) callback).setLocale(localeChoice.getSelectedLocale()); } } diff --git a/org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLoginShell.java b/org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/CmsLoginShell.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLoginShell.java rename to org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/CmsLoginShell.java diff --git a/org.argeo.cms/src/org/argeo/cms/widgets/auth/CompositeCallbackHandler.java b/org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/CompositeCallbackHandler.java similarity index 99% rename from org.argeo.cms/src/org/argeo/cms/widgets/auth/CompositeCallbackHandler.java rename to org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/CompositeCallbackHandler.java index 55190d39c..4cb85b755 100644 --- a/org.argeo.cms/src/org/argeo/cms/widgets/auth/CompositeCallbackHandler.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/CompositeCallbackHandler.java @@ -10,7 +10,6 @@ import javax.security.auth.callback.PasswordCallback; import javax.security.auth.callback.TextOutputCallback; import javax.security.auth.callback.UnsupportedCallbackException; -import org.argeo.cms.internal.auth.LocaleChoice; import org.eclipse.swt.SWT; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.KeyListener; diff --git a/org.argeo.cms/src/org/argeo/cms/widgets/auth/DefaultLoginDialog.java b/org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/DefaultLoginDialog.java similarity index 100% rename from org.argeo.cms/src/org/argeo/cms/widgets/auth/DefaultLoginDialog.java rename to org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/DefaultLoginDialog.java diff --git a/org.argeo.cms/src/org/argeo/cms/internal/auth/LocaleChoice.java b/org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/LocaleChoice.java similarity index 73% rename from org.argeo.cms/src/org/argeo/cms/internal/auth/LocaleChoice.java rename to org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/LocaleChoice.java index a23348fac..009c3721a 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/auth/LocaleChoice.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/LocaleChoice.java @@ -13,9 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.argeo.cms.internal.auth; +package org.argeo.cms.widgets.auth; -import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Locale; @@ -23,6 +22,7 @@ import java.util.Locale; import javax.security.auth.callback.LanguageCallback; import org.argeo.cms.CmsException; +import org.argeo.cms.i18n.LocaleUtils; /** Choose in a list of locales. TODO: replace with {@link LanguageCallback} */ public class LocaleChoice { @@ -56,7 +56,7 @@ public class LocaleChoice { * en_US, fr_CA, etc.). Default selection is default locale. */ public LocaleChoice(String locales, Locale defaultLocale) { - this(asLocaleList(locales), defaultLocale); + this(LocaleUtils.asLocaleList(locales), defaultLocale); } public String[] getSupportedLocalesLabels() { @@ -98,35 +98,4 @@ public class LocaleChoice { public Locale getDefaultLocale() { return locales.get(getDefaultIndex()); } - - /** Returns null if argument is null. */ - public static List asLocaleList(Object locales) { - if (locales == null) - return null; - ArrayList availableLocales = new ArrayList(); - String[] codes = locales.toString().split(","); - for (int i = 0; i < codes.length; i++) { - String code = codes[i]; - // variant not supported - int indexUnd = code.indexOf("_"); - Locale locale; - if (indexUnd > 0) { - String language = code.substring(0, indexUnd); - String country = code.substring(indexUnd + 1); - locale = new Locale(language, country); - } else { - locale = new Locale(code); - } - availableLocales.add(locale); - } - return availableLocales; - } - - public static void main(String[] args) { - for (String isoL : Locale.getISOLanguages()) { - Locale locale = new Locale(isoL); - System.out.println(isoL + "\t" + locale.getDisplayLanguage() + "\t" + locale.getDisplayLanguage(locale)); - } - } - } diff --git a/org.argeo.cms/src/org/argeo/security/core/AbstractSystemExecution.java b/org.argeo.cms.ui/src/org/argeo/security/core/AbstractSystemExecution.java similarity index 100% rename from org.argeo.cms/src/org/argeo/security/core/AbstractSystemExecution.java rename to org.argeo.cms.ui/src/org/argeo/security/core/AbstractSystemExecution.java diff --git a/org.argeo.cms/src/org/argeo/security/core/AuthenticatedApplicationContextInitialization.java b/org.argeo.cms.ui/src/org/argeo/security/core/AuthenticatedApplicationContextInitialization.java similarity index 100% rename from org.argeo.cms/src/org/argeo/security/core/AuthenticatedApplicationContextInitialization.java rename to org.argeo.cms.ui/src/org/argeo/security/core/AuthenticatedApplicationContextInitialization.java diff --git a/org.argeo.cms/src/org/argeo/security/core/OsgiModuleLabel.java b/org.argeo.cms.ui/src/org/argeo/security/core/OsgiModuleLabel.java similarity index 100% rename from org.argeo.cms/src/org/argeo/security/core/OsgiModuleLabel.java rename to org.argeo.cms.ui/src/org/argeo/security/core/OsgiModuleLabel.java diff --git a/org.argeo.cms/src/org/argeo/security/core/SimpleRoleRegistration.java b/org.argeo.cms.ui/src/org/argeo/security/core/SimpleRoleRegistration.java similarity index 100% rename from org.argeo.cms/src/org/argeo/security/core/SimpleRoleRegistration.java rename to org.argeo.cms.ui/src/org/argeo/security/core/SimpleRoleRegistration.java diff --git a/org.argeo.cms/bnd.bnd b/org.argeo.cms/bnd.bnd index 8b2080898..b0994c6a2 100644 --- a/org.argeo.cms/bnd.bnd +++ b/org.argeo.cms/bnd.bnd @@ -1,27 +1,10 @@ Bundle-SymbolicName: org.argeo.cms;singleton:=true Bundle-Activator: org.argeo.cms.internal.kernel.Activator Import-Package: javax.jcr.security,\ -org.xml.sax,\ -org.argeo.jcr,\ -org.argeo.jcr.docbook,\ -org.apache.jackrabbit.api,\ -org.apache.jackrabbit.commons,\ -org.apache.jackrabbit.core.security.user,\ -org.argeo.eclipse.ui.dialogs;resolution:=optional,\ -org.eclipse.*;resolution:=optional,\ -org.eclipse.core.commands;resolution:=optional,\ -org.eclipse.swt;resolution:=optional,\ -org.eclipse.jface.window;resolution:=optional,\ org.h2;resolution:=optional,\ org.postgresql;resolution:=optional,\ -org.apache.commons.vfs2.*;resolution:=optional,\ -org.apache.jackrabbit.*;resolution:=optional,\ -org.joda.time.*;resolution:=optional,\ -org.springframework.context,\ -org.springframework.core.io,\ org.apache.jackrabbit.webdav.server,\ org.apache.jackrabbit.webdav.jcr,\ -org.bouncycastle.asn1.x509,\ org.eclipse.equinox.http.jetty,\ * Provide-Capability: cms.datamodel;name=cms;cnd=/org/argeo/cms/cms.cnd \ No newline at end of file diff --git a/org.argeo.cms/src/org/argeo/cms/CmsView.java b/org.argeo.cms/src/org/argeo/cms/CmsView.java index 8b56c137b..75cefd1c0 100644 --- a/org.argeo.cms/src/org/argeo/cms/CmsView.java +++ b/org.argeo.cms/src/org/argeo/cms/CmsView.java @@ -3,8 +3,6 @@ package org.argeo.cms; import javax.security.auth.Subject; import javax.security.auth.login.LoginContext; -import org.argeo.cms.ui.UxContext; - /** Provides interaction with the CMS system. UNSTABLE API at this stage. */ public interface CmsView { public final static String KEY = "org.argeo.cms.view"; diff --git a/org.argeo.cms/src/org/argeo/cms/maintenance/DataMigration.java b/org.argeo.cms/src/org/argeo/cms/DataMigration.java similarity index 92% rename from org.argeo.cms/src/org/argeo/cms/maintenance/DataMigration.java rename to org.argeo.cms/src/org/argeo/cms/DataMigration.java index 3aa61207f..f75e66bd0 100644 --- a/org.argeo.cms/src/org/argeo/cms/maintenance/DataMigration.java +++ b/org.argeo.cms/src/org/argeo/cms/DataMigration.java @@ -1,4 +1,4 @@ -package org.argeo.cms.maintenance; +package org.argeo.cms; import java.util.Map; diff --git a/org.argeo.cms/src/org/argeo/cms/ui/UxContext.java b/org.argeo.cms/src/org/argeo/cms/UxContext.java similarity index 82% rename from org.argeo.cms/src/org/argeo/cms/ui/UxContext.java rename to org.argeo.cms/src/org/argeo/cms/UxContext.java index f03b88bbb..b6674b99b 100644 --- a/org.argeo.cms/src/org/argeo/cms/ui/UxContext.java +++ b/org.argeo.cms/src/org/argeo/cms/UxContext.java @@ -1,4 +1,4 @@ -package org.argeo.cms.ui; +package org.argeo.cms; public interface UxContext { boolean isPortrait(); diff --git a/org.argeo.cms/src/org/argeo/cms/auth/CurrentUser.java b/org.argeo.cms/src/org/argeo/cms/auth/CurrentUser.java index 8aa08728b..1ec52f057 100644 --- a/org.argeo.cms/src/org/argeo/cms/auth/CurrentUser.java +++ b/org.argeo.cms/src/org/argeo/cms/auth/CurrentUser.java @@ -26,7 +26,7 @@ import javax.security.auth.x500.X500Principal; import org.argeo.cms.CmsException; import org.argeo.cms.CmsView; -import org.argeo.cms.util.CmsUtils; +import org.argeo.eclipse.ui.specific.UiContext; import org.osgi.service.useradmin.Authorization; /** Static utilities */ @@ -49,12 +49,11 @@ public final class CurrentUser { public static boolean isAnonymous(Subject subject) { String username = getUsername(subject); - return username == null - || username.equalsIgnoreCase(AuthConstants.ROLE_ANONYMOUS); + return username == null || username.equalsIgnoreCase(AuthConstants.ROLE_ANONYMOUS); } private static Subject currentSubject() { - CmsView cmsView = CmsUtils.getCmsView(); + CmsView cmsView = getCmsView(); if (cmsView != null) return cmsView.getSubject(); Subject subject = Subject.getSubject(AccessController.getContext()); @@ -63,14 +62,21 @@ public final class CurrentUser { throw new CmsException("Cannot find related subject"); } + /** + * The CMS view related to this display, or null if none is available from + * this call. + */ + private static CmsView getCmsView() { + return UiContext.getData(CmsView.KEY); + } + public final static String getUsername(Subject subject) { // Subject subject = Subject.getSubject(AccessController.getContext()); // if (subject == null) // return null; if (subject.getPrincipals(X500Principal.class).size() != 1) return null; - Principal principal = subject.getPrincipals(X500Principal.class) - .iterator().next(); + Principal principal = subject.getPrincipals(X500Principal.class).iterator().next(); return principal.getName(); } @@ -80,8 +86,7 @@ public final class CurrentUser { } private static Authorization getAuthorization(Subject subject) { - return subject.getPrivateCredentials(Authorization.class).iterator() - .next(); + return subject.getPrivateCredentials(Authorization.class).iterator().next(); } public final static Set roles() { @@ -90,8 +95,7 @@ public final class CurrentUser { public final static Set roles(Subject subject) { Set roles = new HashSet(); - X500Principal userPrincipal = subject - .getPrincipals(X500Principal.class).iterator().next(); + X500Principal userPrincipal = subject.getPrincipals(X500Principal.class).iterator().next(); roles.add(userPrincipal.getName()); for (Principal group : subject.getPrincipals(Group.class)) { roles.add(group.getName()); diff --git a/org.argeo.cms/src/org/argeo/cms/i18n/LocaleUtils.java b/org.argeo.cms/src/org/argeo/cms/i18n/LocaleUtils.java index e422e21fe..6253e585b 100644 --- a/org.argeo.cms/src/org/argeo/cms/i18n/LocaleUtils.java +++ b/org.argeo.cms/src/org/argeo/cms/i18n/LocaleUtils.java @@ -1,5 +1,7 @@ package org.argeo.cms.i18n; +import java.util.ArrayList; +import java.util.List; import java.util.Locale; import java.util.ResourceBundle; @@ -41,110 +43,27 @@ public class LocaleUtils { static Locale getCurrentLocale() { return UiContext.getLocale(); } - // private String id; - // private ClassLoader classLoader; - // private final Object defaultLocal; - // - // public Msg() { - // defaultLocal = null; - // } - // - // public Msg(Object defaultMessage) { - // this.defaultLocal = defaultMessage; - // } - // - // public String getId() { - // return id; - // } - // - // public void setId(String id) { - // this.id = id; - // } - // - // public ClassLoader getClassLoader() { - // return classLoader; - // } - // - // public void setClassLoader(ClassLoader classLoader) { - // this.classLoader = classLoader; - // } - // - // public Object getDefault() { - // return defaultLocal; - // } - // - // public String toString() { - // return local().toString(); - // } - // - // /** When used as the first word of a sentence. */ - // public String lead() { - // return lead(UiContext.getLocale()); - // } - // - // public String lead(Locale locale) { - // return lead(this, locale); - // } - // private static String lead(Msg msg, Locale locale) { - // String raw = msg.local(locale).toString(); - // return lead(raw, locale); - // } - - // public Object local() { - // Object local = local(this); - // if (local == null) - // local = getDefault(); - // if (local == null) - // throw new CmsException("No translation found for " + id); - // return local; - // } - // - // public Object local(Locale locale) { - // Object local = local(this, locale); - // if (local == null) - // local = getDefault(); - // if (local == null) - // throw new CmsException("No translation found for " + id); - // return local; - // } - // - // private static Object local(Msg msg) { - // Locale locale = UiContext.getLocale(); - // return local(msg, locale); - // } - // - // public static Object local(Msg msg, Locale locale) { - // String key = msg.getId(); - // int lastDot = key.lastIndexOf('.'); - // String className = key.substring(0, lastDot); - // String fieldName = key.substring(lastDot + 1); - // ResourceBundle rb = ResourceBundle.getBundle("/OSGI-INF/l10n/bundle", - // locale, msg.getClassLoader()); - // // ResourceBundle rb = ResourceBundle.getBundle(className, locale, - // // msg.getClassLoader()); - // return rb.getString(fieldName); - // } - - // public static void init(Class clss) { - // final Field[] fieldArray = clss.getDeclaredFields(); - // ClassLoader loader = clss.getClassLoader(); - // - // for (Field field : fieldArray) { - // if (Modifier.isStatic(field.getModifiers()) - // && field.getType().isAssignableFrom(Msg.class)) { - // try { - // Object obj = field.get(null); - // String id = clss.getCanonicalName() + "." + field.getName(); - // obj.getClass().getMethod("setId", String.class) - // .invoke(obj, id); - // obj.getClass() - // .getMethod("setClassLoader", ClassLoader.class) - // .invoke(obj, loader); - // } catch (Exception e) { - // throw new CmsException("Cannot prepare field " + field); - // } - // } - // } - // } + /** Returns null if argument is null. */ + public static List asLocaleList(Object locales) { + if (locales == null) + return null; + ArrayList availableLocales = new ArrayList(); + String[] codes = locales.toString().split(","); + for (int i = 0; i < codes.length; i++) { + String code = codes[i]; + // variant not supported + int indexUnd = code.indexOf("_"); + Locale locale; + if (indexUnd > 0) { + String language = code.substring(0, indexUnd); + String country = code.substring(indexUnd + 1); + locale = new Locale(language, country); + } else { + locale = new Locale(code); + } + availableLocales.add(locale); + } + return availableLocales; + } } diff --git a/org.argeo.cms/src/org/argeo/cms/internal/auth/ConsoleCallbackHandler.java b/org.argeo.cms/src/org/argeo/cms/internal/auth/ConsoleCallbackHandler.java index 44bc33159..4f1d3637b 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/auth/ConsoleCallbackHandler.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/auth/ConsoleCallbackHandler.java @@ -4,7 +4,6 @@ import java.io.Console; import java.io.IOException; import java.io.PrintWriter; import java.util.Arrays; -import java.util.Locale; import javax.security.auth.callback.Callback; import javax.security.auth.callback.CallbackHandler; @@ -48,21 +47,22 @@ public class ConsoleCallbackHandler implements CallbackHandler { char[] answer = console.readPassword(); callback.setPassword(answer); Arrays.fill(answer, ' '); - } else if (callbacks[i] instanceof LocaleChoice) { - LocaleChoice callback = (LocaleChoice) callbacks[i]; - writer.write("Language"); - writer.write("\n"); - for (int j = 0; j < callback.getLocales().size(); j++) { - Locale locale = callback.getLocales().get(j); - writer.print(j + " : " + locale.getDisplayName() + "\n"); - } - writer.write("(" + callback.getDefaultIndex() + ") : "); - String answer = console.readLine(); - if (answer.trim().equals("")) - callback.setSelectedIndex(callback.getDefaultIndex()); - else - callback.setSelectedIndex(new Integer(answer.trim())); } +// else if (callbacks[i] instanceof LocaleChoice) { +// LocaleChoice callback = (LocaleChoice) callbacks[i]; +// writer.write("Language"); +// writer.write("\n"); +// for (int j = 0; j < callback.getLocales().size(); j++) { +// Locale locale = callback.getLocales().get(j); +// writer.print(j + " : " + locale.getDisplayName() + "\n"); +// } +// writer.write("(" + callback.getDefaultIndex() + ") : "); +// String answer = console.readLine(); +// if (answer.trim().equals("")) +// callback.setSelectedIndex(callback.getDefaultIndex()); +// else +// callback.setSelectedIndex(new Integer(answer.trim())); +// } } } diff --git a/org.argeo.cms/src/org/argeo/cms/internal/backup/RepositoryMigration.java b/org.argeo.cms/src/org/argeo/cms/internal/backup/RepositoryMigration.java index 82f6fef5b..d708f90cb 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/backup/RepositoryMigration.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/backup/RepositoryMigration.java @@ -8,7 +8,7 @@ import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.Session; -import org.argeo.cms.maintenance.DataMigration; +import org.argeo.cms.DataMigration; import org.argeo.jcr.JcrUtils; /** Migrate data between two workspaces, at JCR level. */ diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsState.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsState.java index 63aeeac29..7906c28fa 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsState.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsState.java @@ -3,7 +3,6 @@ package org.argeo.cms.internal.kernel; import static bitronix.tm.TransactionManagerServices.getTransactionManager; import static bitronix.tm.TransactionManagerServices.getTransactionSynchronizationRegistry; import static java.util.Locale.ENGLISH; -import static org.argeo.cms.internal.auth.LocaleChoice.asLocaleList; import java.io.File; import java.net.InetAddress; @@ -23,11 +22,10 @@ import javax.transaction.UserTransaction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.cms.auth.AuthConstants; -import org.argeo.cms.maintenance.MaintenanceUi; +import org.argeo.cms.i18n.LocaleUtils; import org.argeo.node.NodeConstants; import org.argeo.node.NodeState; import org.argeo.util.LangUtils; -import org.eclipse.rap.rwt.application.ApplicationConfiguration; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.Constants; @@ -85,7 +83,7 @@ public class CmsState implements NodeState { Object defaultLocaleValue = KernelUtils.getFrameworkProp(NodeConstants.I18N_DEFAULT_LOCALE); defaultLocale = defaultLocaleValue != null ? new Locale(defaultLocaleValue.toString()) : new Locale(ENGLISH.getLanguage()); - locales = asLocaleList(KernelUtils.getFrameworkProp(NodeConstants.I18N_LOCALES)); + locales = LocaleUtils.asLocaleList(KernelUtils.getFrameworkProp(NodeConstants.I18N_LOCALES)); } private void initServices() { @@ -107,12 +105,6 @@ public class CmsState implements NodeState { Dictionary props = new Hashtable<>(); props.put(Constants.SERVICE_PID, NodeConstants.NODE_USER_ADMIN_PID); bc.registerService(ManagedServiceFactory.class, userAdmin, props); - - // UI - bc.registerService(ApplicationConfiguration.class, new MaintenanceUi(), - LangUtils.init(KernelConstants.CONTEXT_NAME_PROP, "system")); - bc.registerService(ApplicationConfiguration.class, new UserUi(), - LangUtils.init(KernelConstants.CONTEXT_NAME_PROP, "user")); } private void initTransactionManager() { diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelUtils.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelUtils.java index cb22e2790..50f7ef322 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelUtils.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelUtils.java @@ -1,9 +1,14 @@ package org.argeo.cms.internal.kernel; +import static org.argeo.cms.internal.kernel.KernelConstants.WEBDAV_PRIVATE; +import static org.argeo.cms.internal.kernel.KernelConstants.WEBDAV_PUBLIC; + import java.io.File; import java.io.IOException; +import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; +import java.net.URL; import java.nio.file.Path; import java.nio.file.Paths; import java.security.PrivilegedAction; @@ -13,6 +18,7 @@ import java.util.Hashtable; import java.util.Properties; import java.util.TreeSet; +import javax.jcr.Node; import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.Session; @@ -24,6 +30,7 @@ import javax.servlet.http.HttpServletRequest; import org.apache.commons.logging.Log; import org.argeo.cms.CmsException; import org.argeo.cms.auth.AuthConstants; +import org.argeo.jcr.ArgeoJcrConstants; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.FrameworkUtil; @@ -207,6 +214,59 @@ class KernelUtils implements KernelConstants { } } + // DATA + public static StringBuilder getServerBaseUrl(HttpServletRequest request) { + try { + URL url = new URL(request.getRequestURL().toString()); + StringBuilder buf = new StringBuilder(); + buf.append(url.getProtocol()).append("://").append(url.getHost()); + if (url.getPort() != -1) + buf.append(':').append(url.getPort()); + return buf; + } catch (MalformedURLException e) { + throw new CmsException("Cannot extract server base URL from " + request.getRequestURL(), e); + } + } + + public static String getDataUrl(Node node, HttpServletRequest request) throws RepositoryException { + try { + StringBuilder buf = getServerBaseUrl(request); + buf.append(getDataPath(node)); + return new URL(buf.toString()).toString(); + } catch (MalformedURLException e) { + throw new CmsException("Cannot build data URL for " + node, e); + } + } + + public static String getDataPath(Node node) throws RepositoryException { + assert node != null; + String userId = node.getSession().getUserID(); +// if (log.isTraceEnabled()) +// log.trace(userId + " : " + node.getPath()); + StringBuilder buf = new StringBuilder(); + boolean isAnonymous = userId.equalsIgnoreCase(AuthConstants.ROLE_ANONYMOUS); + if (isAnonymous) + buf.append(WEBDAV_PUBLIC); + else + buf.append(WEBDAV_PRIVATE); + // TODO convey repo alias vie repository properties + return buf.append('/').append(ArgeoJcrConstants.ALIAS_NODE).append('/').append(node.getSession().getWorkspace().getName()) + .append(node.getPath()).toString(); + } + + public static String getCanonicalUrl(Node node, HttpServletRequest request) throws RepositoryException { + try { + StringBuilder buf = getServerBaseUrl(request); + buf.append('/').append('!').append(node.getPath()); + return new URL(buf.toString()).toString(); + } catch (MalformedURLException e) { + throw new CmsException("Cannot build data URL for " + node, e); + } + // return request.getRequestURL().append('!').append(node.getPath()) + // .toString(); + } + + private KernelUtils() { } diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeHttp.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeHttp.java index 97e912edd..4a6ad2337 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeHttp.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeHttp.java @@ -29,7 +29,6 @@ import javax.servlet.http.HttpSession; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.cms.CmsException; -import org.argeo.cms.util.CmsUtils; import org.argeo.jcr.ArgeoJcrConstants; import org.argeo.jcr.JcrUtils; import org.osgi.framework.BundleContext; @@ -128,13 +127,13 @@ class NodeHttp implements KernelConstants, ArgeoJcrConstants { String desc = node.hasProperty(JCR_DESCRIPTION) ? node.getProperty(JCR_DESCRIPTION).getString() : null; Calendar lastUpdate = node.hasProperty(JCR_LAST_MODIFIED) ? node.getProperty(JCR_LAST_MODIFIED).getDate() : null; - String url = CmsUtils.getCanonicalUrl(node, request); + String url = KernelUtils.getCanonicalUrl(node, request); String imgUrl = null; loop: for (NodeIterator it = node.getNodes(); it.hasNext();) { // Takes the first found cms:image Node child = it.nextNode(); if (child.isNodeType(CMS_IMAGE)) { - imgUrl = CmsUtils.getDataUrl(child, request); + imgUrl = KernelUtils.getDataUrl(child, request); break loop; } } diff --git a/pom.xml b/pom.xml index 3f8cc3384..9c1f8aec7 100644 --- a/pom.xml +++ b/pom.xml @@ -32,8 +32,8 @@ org.argeo.node.api org.argeo.cms + org.argeo.cms.ui - org.argeo.security.ui org.argeo.cms.ui.workbench org.argeo.cms.ui.workbench.rap -- 2.30.2