From 94639faebab4cad06d8c8845a530f3fcdc36ca5c Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Fri, 9 Jan 2015 16:00:01 +0000 Subject: [PATCH] Move RCP related devs to a dedicated source repository git-svn-id: https://svn.argeo.org/commons/trunk@7652 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- dep/org.argeo.eclipse.dep.rcp/pom.xml | 307 ------------------ dep/org.argeo.security.dep.node.rcp/bnd.bnd | 0 dep/org.argeo.security.dep.node.rcp/p2.inf | 2 - dep/org.argeo.security.dep.node.rcp/pom.xml | 169 ---------- .../src/assembly/linux.x86.xml | 59 ---- .../src/assembly/linux.x86_64.xml | 59 ---- .../src/assembly/win32.x86.xml | 59 ---- dep/pom.xml | 10 +- org.argeo.eclipse.ui.rcp/.classpath | 9 - org.argeo.eclipse.ui.rcp/.project | 28 -- org.argeo.eclipse.ui.rcp/bnd.bnd | 18 - org.argeo.eclipse.ui.rcp/build.properties | 2 - org.argeo.eclipse.ui.rcp/pom.xml | 47 --- .../argeo/eclipse/ui/specific/DefaultNLS.java | 31 -- .../ui/specific/EclipseUiSpecificUtils.java | 37 --- .../eclipse/ui/specific/FileHandler.java | 86 ----- .../eclipse/ui/specific/FileProvider.java | 33 -- .../ui/specific/GenericUploadControl.java | 111 ------- .../ui/specific/ImportToServerWizardPage.java | 67 ---- .../argeo/eclipse/ui/specific/OpenFile.java | 78 ----- .../argeo/eclipse/ui/specific/ThreadNLS.java | 89 ----- .../ui/specific/UploadFileWizardPage.java | 67 ---- org.argeo.security.dao.os/.project | 22 -- .../META-INF/spring/security-os-osgi.xml | 30 -- .../META-INF/spring/security-os.xml | 76 ----- org.argeo.security.dao.os/bnd.bnd | 1 - org.argeo.security.dao.os/build.properties | 1 - org.argeo.security.dao.os/pom.xml | 11 - org.argeo.security.dao.os/security.properties | 2 - org.argeo.security.ui.rcp/.classpath | 9 - org.argeo.security.ui.rcp/.project | 28 -- .../.settings/org.eclipse.jdt.core.prefs | 8 - .../META-INF/jaas_default.txt | 27 -- org.argeo.security.ui.rcp/bnd.bnd | 6 - org.argeo.security.ui.rcp/build.properties | 6 - org.argeo.security.ui.rcp/icons/alt_about.gif | Bin 9340 -> 0 bytes .../icons/alt_launcher.icns | Bin 51159 -> 0 bytes .../icons/alt_launcher.ico | Bin 26694 -> 0 bytes .../icons/alt_launcher.xpm | 307 ------------------ .../icons/alt_window_16.gif | Bin 637 -> 0 bytes .../icons/alt_window_32.gif | Bin 1192 -> 0 bytes org.argeo.security.ui.rcp/plugin.xml | 64 ---- .../plugin_customization.ini | 5 - org.argeo.security.ui.rcp/pom.xml | 66 ---- .../ui/rcp/AbstractSecureApplication.java | 166 ---------- .../ui/rcp/SecureActionBarAdvisor.java | 113 ------- .../ui/rcp/SecureApplicationActivator.java | 46 --- .../org/argeo/security/ui/rcp/SecureRcp.java | 20 -- .../ui/rcp/SecureWorkbenchAdvisor.java | 71 ---- .../ui/rcp/SecureWorkbenchWindowAdvisor.java | 56 ---- pom.xml | 3 - 51 files changed, 4 insertions(+), 2508 deletions(-) delete mode 100644 dep/org.argeo.eclipse.dep.rcp/pom.xml delete mode 100644 dep/org.argeo.security.dep.node.rcp/bnd.bnd delete mode 100644 dep/org.argeo.security.dep.node.rcp/p2.inf delete mode 100644 dep/org.argeo.security.dep.node.rcp/pom.xml delete mode 100644 dep/org.argeo.security.dep.node.rcp/src/assembly/linux.x86.xml delete mode 100644 dep/org.argeo.security.dep.node.rcp/src/assembly/linux.x86_64.xml delete mode 100644 dep/org.argeo.security.dep.node.rcp/src/assembly/win32.x86.xml delete mode 100644 org.argeo.eclipse.ui.rcp/.classpath delete mode 100644 org.argeo.eclipse.ui.rcp/.project delete mode 100644 org.argeo.eclipse.ui.rcp/bnd.bnd delete mode 100644 org.argeo.eclipse.ui.rcp/build.properties delete mode 100644 org.argeo.eclipse.ui.rcp/pom.xml delete mode 100644 org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/DefaultNLS.java delete mode 100644 org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/EclipseUiSpecificUtils.java delete mode 100644 org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/FileHandler.java delete mode 100644 org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/FileProvider.java delete mode 100644 org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/GenericUploadControl.java delete mode 100644 org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/ImportToServerWizardPage.java delete mode 100644 org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/OpenFile.java delete mode 100644 org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/ThreadNLS.java delete mode 100644 org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/UploadFileWizardPage.java delete mode 100644 org.argeo.security.dao.os/.project delete mode 100644 org.argeo.security.dao.os/META-INF/spring/security-os-osgi.xml delete mode 100644 org.argeo.security.dao.os/META-INF/spring/security-os.xml delete mode 100644 org.argeo.security.dao.os/bnd.bnd delete mode 100644 org.argeo.security.dao.os/build.properties delete mode 100644 org.argeo.security.dao.os/pom.xml delete mode 100644 org.argeo.security.dao.os/security.properties delete mode 100644 org.argeo.security.ui.rcp/.classpath delete mode 100644 org.argeo.security.ui.rcp/.project delete mode 100644 org.argeo.security.ui.rcp/.settings/org.eclipse.jdt.core.prefs delete mode 100644 org.argeo.security.ui.rcp/META-INF/jaas_default.txt delete mode 100644 org.argeo.security.ui.rcp/bnd.bnd delete mode 100644 org.argeo.security.ui.rcp/build.properties delete mode 100644 org.argeo.security.ui.rcp/icons/alt_about.gif delete mode 100644 org.argeo.security.ui.rcp/icons/alt_launcher.icns delete mode 100644 org.argeo.security.ui.rcp/icons/alt_launcher.ico delete mode 100644 org.argeo.security.ui.rcp/icons/alt_launcher.xpm delete mode 100644 org.argeo.security.ui.rcp/icons/alt_window_16.gif delete mode 100644 org.argeo.security.ui.rcp/icons/alt_window_32.gif delete mode 100644 org.argeo.security.ui.rcp/plugin.xml delete mode 100644 org.argeo.security.ui.rcp/plugin_customization.ini delete mode 100644 org.argeo.security.ui.rcp/pom.xml delete mode 100644 org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/AbstractSecureApplication.java delete mode 100644 org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/SecureActionBarAdvisor.java delete mode 100644 org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/SecureApplicationActivator.java delete mode 100644 org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/SecureRcp.java delete mode 100644 org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/SecureWorkbenchAdvisor.java delete mode 100644 org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/SecureWorkbenchWindowAdvisor.java diff --git a/dep/org.argeo.eclipse.dep.rcp/pom.xml b/dep/org.argeo.eclipse.dep.rcp/pom.xml deleted file mode 100644 index fbecafe76..000000000 --- a/dep/org.argeo.eclipse.dep.rcp/pom.xml +++ /dev/null @@ -1,307 +0,0 @@ - - - 4.0.0 - - org.argeo.commons - dep - 2.1.12-SNAPSHOT - .. - - org.argeo.eclipse.dep.rcp - Eclipse RCP Dependencies - pom - - - - - - - - - org.argeo.tp.rcp.platform - binaries - ${version.eclipseIde} - pom - - - - org.argeo.tp.rap.platform - org.eclipse.osgi - - - org.argeo.tp.rap.platform - org.eclipse.osgi.services - - - - - org.argeo.tp.rcp.platform - org.eclipse.update.configurator - - - - org.argeo.tp.rcp.platform - org.eclipse.swt.win32.win32.x86_64 - - - org.argeo.tp.rcp.platform - org.eclipse.swt.carbon.macosx - - - org.argeo.tp.rcp.platform - org.eclipse.swt.cocoa.macosx.x86_64 - - - org.argeo.tp.rcp.platform - org.eclipse.swt.gtk.solaris.sparc - - - org.argeo.tp.rcp.platform - org.eclipse.swt.gtk.solaris.x86 - - - org.argeo.tp.rcp.platform - org.eclipse.swt.motif.solaris.sparc - - - org.argeo.tp.rcp.platform - org.eclipse.swt.gtk.linux.s390 - - - org.argeo.tp.rcp.platform - org.eclipse.swt.gtk.linux.s390x - - - org.argeo.tp.rcp.platform - org.eclipse.swt.gtk.linux.ppc64 - - - org.argeo.tp.rcp.platform - org.eclipse.swt.motif.linux.x86 - - - org.argeo.tp.rcp.platform - org.eclipse.swt.gtk.linux.ppc - - - org.argeo.tp.rcp.platform - org.eclipse.swt.photon.qnx.x86 - - - org.argeo.tp.rcp.platform - org.eclipse.swt.motif.aix.ppc - - - org.argeo.tp.rcp.platform - org.eclipse.swt.motif.aix.ppc64 - - - org.argeo.tp.rcp.platform - org.eclipse.swt.motif.hpux.ia64_32 - - - org.argeo.tp.rcp.platform - org.eclipse.swt.gtk.aix.ppc - - - org.argeo.tp.rcp.platform - org.eclipse.swt.gtk.aix.ppc64 - - - org.argeo.tp.rcp.platform - org.eclipse.swt.gtk.hpux.ia64_32 - - - - - org.argeo.tp.rcp.platform - org.eclipse.equinox.launcher.win32.win32.x86_64 - - - org.argeo.tp.rcp.platform - org.eclipse.equinox.launcher.carbon.macosx - - - org.argeo.tp.rcp.platform - org.eclipse.equinox.launcher.cocoa.macosx.x86_64 - - - org.argeo.tp.rcp.platform - org.eclipse.equinox.launcher.gtk.solaris.sparc - - - org.argeo.tp.rcp.platform - org.eclipse.equinox.launcher.gtk.solaris.x86 - - - org.argeo.tp.rcp.platform - org.eclipse.equinox.launcher.motif.solaris.sparc - - - org.argeo.tp.rcp.platform - org.eclipse.equinox.launcher.gtk.linux.s390 - - - org.argeo.tp.rcp.platform - org.eclipse.equinox.launcher.gtk.linux.s390x - - - org.argeo.tp.rcp.platform - org.eclipse.equinox.launcher.gtk.linux.ppc64 - - - org.argeo.tp.rcp.platform - org.eclipse.equinox.launcher.motif.linux.x86 - - - org.argeo.tp.rcp.platform - org.eclipse.equinox.launcher.gtk.linux.ppc - - - org.argeo.tp.rcp.platform - org.eclipse.equinox.launcher.photon.qnx.x86 - - - org.argeo.tp.rcp.platform - org.eclipse.equinox.launcher.motif.aix.ppc - - - org.argeo.tp.rcp.platform - org.eclipse.equinox.launcher.motif.aix.ppc64 - - - org.argeo.tp.rcp.platform - org.eclipse.equinox.launcher.motif.hpux.ia64_32 - - - org.argeo.tp.rcp.platform - org.eclipse.equinox.launcher.gtk.aix.ppc - - - org.argeo.tp.rcp.platform - org.eclipse.equinox.launcher.gtk.aix.ppc64 - - - org.argeo.tp.rcp.platform - org.eclipse.equinox.launcher.gtk.hpux.ia64_32 - - - - - org.argeo.tp.rcp.platform - org.eclipse.ui.carbon - - - - - org.argeo.tp.rap.platform - org.apache.felix.gogo.runtime - - - org.argeo.tp.rap.platform - org.apache.felix.gogo.shell - - - org.argeo.tp.rap.platform - org.apache.felix.gogo.command - - - org.argeo.tp.rap.platform - org.eclipse.equinox.console - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - check-osgi - - - - org.argeo.maven.plugins - maven-argeo-osgi-plugin - - - check-osgi - test - - equinox - - - true - - - - - - - - - \ No newline at end of file diff --git a/dep/org.argeo.security.dep.node.rcp/bnd.bnd b/dep/org.argeo.security.dep.node.rcp/bnd.bnd deleted file mode 100644 index e69de29bb..000000000 diff --git a/dep/org.argeo.security.dep.node.rcp/p2.inf b/dep/org.argeo.security.dep.node.rcp/p2.inf deleted file mode 100644 index 0423aa509..000000000 --- a/dep/org.argeo.security.dep.node.rcp/p2.inf +++ /dev/null @@ -1,2 +0,0 @@ -properties.1.name=org.eclipse.equinox.p2.type.category -properties.1.value=true \ No newline at end of file diff --git a/dep/org.argeo.security.dep.node.rcp/pom.xml b/dep/org.argeo.security.dep.node.rcp/pom.xml deleted file mode 100644 index 4650d17f0..000000000 --- a/dep/org.argeo.security.dep.node.rcp/pom.xml +++ /dev/null @@ -1,169 +0,0 @@ - - 4.0.0 - - org.argeo.commons - 2.1.12-SNAPSHOT - dep - .. - - org.argeo.security.dep.node.rcp - Node Eclipse RCP - - - - org.apache.felix - maven-bundle-plugin - - - default - - - - - org.argeo.maven.plugins - maven-argeo-osgi-plugin - - - generate-descriptors - - descriptors - - generate-resources - - - - - - - - - org.argeo.commons - org.argeo.eclipse.ui.workbench - 2.1.12-SNAPSHOT - - - org.argeo.commons - org.argeo.security.ui.admin - 2.1.12-SNAPSHOT - - - - - org.argeo.commons - org.argeo.eclipse.ui - 2.1.12-SNAPSHOT - - - - - org.argeo.commons - org.argeo.security.ui.rcp - 2.1.12-SNAPSHOT - - - org.argeo.commons - org.argeo.security.equinox - 2.1.12-SNAPSHOT - - - org.argeo.commons - org.argeo.security.ui - 2.1.12-SNAPSHOT - - - - org.argeo.commons - org.argeo.security.dep.node - 2.1.12-SNAPSHOT - pom - - - - - org.argeo.commons - org.argeo.eclipse.dep.rcp - 2.1.12-SNAPSHOT - pom - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - rpmbuild - - - - org.codehaus.mojo - rpm-maven-plugin - - - - - rpm-node-rcp - package - - rpm - - - argeo-node-rcp - - - /usr/share/osgi/rcp - root - root - 644 - false - - - org.argeo.commons:org.argeo.eclipse.ui.rcp - org.argeo.commons:org.argeo.security.ui.rcp - - - - - - argeo-node - argeo-node-eclipse - eclipse-platform - - - - - - - - - - diff --git a/dep/org.argeo.security.dep.node.rcp/src/assembly/linux.x86.xml b/dep/org.argeo.security.dep.node.rcp/src/assembly/linux.x86.xml deleted file mode 100644 index 0b321cdca..000000000 --- a/dep/org.argeo.security.dep.node.rcp/src/assembly/linux.x86.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - linux.x86 - argeo-node-ui - - tar.gz - - - - false - ${artifact.artifactId}-${artifact.baseVersion}.${artifact.extension} - - lib - - *:jar - - - org.eclipse.swt:org.eclipse.swt*:jar - - - - false - ${artifact.artifactId}-${artifact.baseVersion}.${artifact.extension} - - lib - - org.eclipse.swt:org.eclipse.swt.gtk.linux.x86:jar - - - - \ No newline at end of file diff --git a/dep/org.argeo.security.dep.node.rcp/src/assembly/linux.x86_64.xml b/dep/org.argeo.security.dep.node.rcp/src/assembly/linux.x86_64.xml deleted file mode 100644 index 12a0a3278..000000000 --- a/dep/org.argeo.security.dep.node.rcp/src/assembly/linux.x86_64.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - linux.x86_64 - argeo-node-ui - - tar.gz - - - - false - ${artifact.artifactId}-${artifact.baseVersion}.${artifact.extension} - - lib - - *:jar - - - org.eclipse.swt:org.eclipse.swt*:jar - - - - false - ${artifact.artifactId}-${artifact.baseVersion}.${artifact.extension} - - lib - - org.eclipse.swt:org.eclipse.swt.gtk.linux.x86_64:jar - - - - \ No newline at end of file diff --git a/dep/org.argeo.security.dep.node.rcp/src/assembly/win32.x86.xml b/dep/org.argeo.security.dep.node.rcp/src/assembly/win32.x86.xml deleted file mode 100644 index 15cec0da6..000000000 --- a/dep/org.argeo.security.dep.node.rcp/src/assembly/win32.x86.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - win32.x86 - argeo-node-ui - - zip - - - - false - ${artifact.artifactId}-${artifact.baseVersion}.${artifact.extension} - - lib - - *:jar - - - org.eclipse.swt:org.eclipse.swt*:jar - - - - false - ${artifact.artifactId}-${artifact.baseVersion}.${artifact.extension} - - lib - - org.eclipse.swt:org.eclipse.swt.win32.win32.x86:jar - - - - \ No newline at end of file diff --git a/dep/pom.xml b/dep/pom.xml index 1ab8a834c..4a3f0eba1 100644 --- a/dep/pom.xml +++ b/dep/pom.xml @@ -14,15 +14,13 @@ - - org.argeo.eclipse.dep.rcp + org.argeo.security.dep.node - org.argeo.eclipse.dep.rwt - org.argeo.security.dep.node.rap - org.argeo.security.dep.node.rcp - + org.argeo.eclipse.dep.rwt + org.argeo.security.dep.node.rap + diff --git a/org.argeo.eclipse.ui.rcp/.classpath b/org.argeo.eclipse.ui.rcp/.classpath deleted file mode 100644 index d2953a684..000000000 --- a/org.argeo.eclipse.ui.rcp/.classpath +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/org.argeo.eclipse.ui.rcp/.project b/org.argeo.eclipse.ui.rcp/.project deleted file mode 100644 index ef2dc2dbb..000000000 --- a/org.argeo.eclipse.ui.rcp/.project +++ /dev/null @@ -1,28 +0,0 @@ - - - org.argeo.eclipse.ui.rcp - - - - - - 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.eclipse.ui.rcp/bnd.bnd b/org.argeo.eclipse.ui.rcp/bnd.bnd deleted file mode 100644 index 4fd32e8c8..000000000 --- a/org.argeo.eclipse.ui.rcp/bnd.bnd +++ /dev/null @@ -1,18 +0,0 @@ -Require-Bundle: org.eclipse.ui,\ - org.eclipse.core.runtime -Import-Package: org.apache.commons.io,\ - org.argeo,\ - org.eclipse.core.commands,\ - org.eclipse.swt.widgets;version="[0,4.0)",\ - org.springframework.beans.factory,\ - org.springframework.core.io.support,\ - !org.eclipse.core.runtime,\ - !org.eclipse.ui.plugin,\ - * - - -# Was !org.eclipse.core.commands,\ why ? - -#Bundle-Activator: org.argeo.eclipse.ui.ArgeoUiPlugin -#Bundle-ActivationPolicy: lazy -#Ignore-Package: org.eclipse.core.commands \ No newline at end of file diff --git a/org.argeo.eclipse.ui.rcp/build.properties b/org.argeo.eclipse.ui.rcp/build.properties deleted file mode 100644 index fd806ca05..000000000 --- a/org.argeo.eclipse.ui.rcp/build.properties +++ /dev/null @@ -1,2 +0,0 @@ -source.. = src/ -output.. = bin/ diff --git a/org.argeo.eclipse.ui.rcp/pom.xml b/org.argeo.eclipse.ui.rcp/pom.xml deleted file mode 100644 index 280496761..000000000 --- a/org.argeo.eclipse.ui.rcp/pom.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - 4.0.0 - - org.argeo.commons - 2.1.12-SNAPSHOT - argeo-commons - .. - - org.argeo.eclipse.ui.rcp - Commons Eclipse UI RCP - Provide RCP specific classes and behaviour in order to enable single sourcing - jar - - - - - org.argeo.commons - org.argeo.eclipse.ui - 2.1.12-SNAPSHOT - - - - - org.argeo.commons - org.argeo.eclipse.dep.rcp - pom - 2.1.12-SNAPSHOT - - - - - - - - - org.argeo.commons - org.argeo.util - 2.1.12-SNAPSHOT - - - - - - - \ No newline at end of file diff --git a/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/DefaultNLS.java b/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/DefaultNLS.java deleted file mode 100644 index 71a0c898d..000000000 --- a/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/DefaultNLS.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.eclipse.ui.specific; - -import org.eclipse.osgi.util.NLS; - -/** RCP specific {@link NLS} to be extended */ -public class DefaultNLS extends NLS { - public final static String DEFAULT_BUNDLE_LOCATION = "/properties/plugin"; - - public DefaultNLS() { - this(DEFAULT_BUNDLE_LOCATION); - } - - public DefaultNLS(String bundleName) { - NLS.initializeMessages(bundleName, getClass()); - } -} diff --git a/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/EclipseUiSpecificUtils.java b/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/EclipseUiSpecificUtils.java deleted file mode 100644 index 2642a35a1..000000000 --- a/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/EclipseUiSpecificUtils.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.eclipse.ui.specific; - -import org.eclipse.jface.viewers.ColumnViewer; -import org.eclipse.jface.viewers.ColumnViewerToolTipSupport; -import org.eclipse.jface.viewers.Viewer; - -/** Static utilities to bridge differences between RCP and RAP */ -public class EclipseUiSpecificUtils { - /** - * TootlTip support is supported for {@link ColumnViewer} in RCP - * - * @see ColumnViewerToolTipSupport#enableFor(Viewer) - */ - public static void enableToolTipSupport(Viewer viewer) { - if (viewer instanceof ColumnViewer) - ColumnViewerToolTipSupport.enableFor((ColumnViewer) viewer); - } - - private EclipseUiSpecificUtils() { - } - -} diff --git a/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/FileHandler.java b/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/FileHandler.java deleted file mode 100644 index 5da49736d..000000000 --- a/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/FileHandler.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.eclipse.ui.specific; - -import java.awt.Desktop; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -import org.apache.commons.io.IOUtils; -import org.argeo.ArgeoException; - -/** - * Abstraction that enable to implement runtime environment specific (typically - * RCP or RAP) methods while dealing with files in the UI. - * - */ -public class FileHandler { - - private FileProvider provider; - - public FileHandler(FileProvider provider) { - this.provider = provider; - } - - public void openFile(String fileName, String fileId) { - String tmpFileName = fileName; - String prefix = "", extension = ""; - if (fileName != null) { - int ind = fileName.lastIndexOf('.'); - if (ind > 0) { - prefix = fileName.substring(0, ind); - extension = fileName.substring(ind); - } - } - - InputStream is = null; - try { - is = provider.getInputStreamFromFileId(fileId); - File file = createTmpFile(prefix, extension, is); - tmpFileName = file.getName(); - Desktop desktop = null; - if (Desktop.isDesktopSupported()) { - desktop = Desktop.getDesktop(); - } - desktop.open(file); - } catch (IOException e) { - // Note : tmpFileName = fileName if the error has been thrown while - // creating the tmpFile. - throw new ArgeoException("Cannot open file " + tmpFileName, e); - } finally { - IOUtils.closeQuietly(is); - } - } - - private File createTmpFile(String prefix, String suffix, InputStream is) { - File tmpFile = null; - OutputStream os = null; - try { - tmpFile = File.createTempFile(prefix, suffix); - os = new FileOutputStream(tmpFile); - IOUtils.copy(is, os); - } catch (IOException e) { - throw new ArgeoException("Cannot open file " + prefix + "." - + suffix, e); - } finally { - IOUtils.closeQuietly(os); - } - return tmpFile; - } -} diff --git a/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/FileProvider.java b/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/FileProvider.java deleted file mode 100644 index 5c92260d7..000000000 --- a/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/FileProvider.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.eclipse.ui.specific; - -import java.io.InputStream; - -/** - * Used for file download : subclasses must implement model specific methods to - * get a byte array representing a file given is ID. - * - * @author bsinou - * - */ -public interface FileProvider { - - public byte[] getByteArrayFileFromId(String fileId); - - public InputStream getInputStreamFromFileId(String fileId); - -} diff --git a/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/GenericUploadControl.java b/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/GenericUploadControl.java deleted file mode 100644 index 80e1e539c..000000000 --- a/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/GenericUploadControl.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.eclipse.ui.specific; - -import java.io.File; -import java.io.IOException; - -import org.apache.commons.io.FileUtils; -import org.argeo.ArgeoException; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ModifyListener; -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.Event; -import org.eclipse.swt.widgets.FileDialog; -import org.eclipse.swt.widgets.Listener; -import org.eclipse.swt.widgets.Text; - -/** - * RCP specific composite that provides a control to upload a file. WARNING: for - * the time being we set a GridLayout(2, false) on th eparent control. - */ -public class GenericUploadControl extends Composite { - // private final static Log log = LogFactory - // .getLog(GenericUploadControl.class); - - private FileDialog dialog; - private Text filePath; - - public GenericUploadControl(Composite parent, int style, String browseLabel) { - super(parent, style); - createControl(this, browseLabel); - - } - - private void createControl(final Composite parent, String browseLabel) { - parent.setLayout(new GridLayout(2, false)); - - filePath = new Text(parent, SWT.BORDER | SWT.SINGLE); - GridData gd = new GridData(GridData.GRAB_HORIZONTAL - | GridData.FILL_HORIZONTAL); - filePath.setEditable(false); - filePath.setLayoutData(gd); - - // Execute button - Button execute = new Button(parent, SWT.PUSH); - GridData gridData = new GridData(); - gridData.horizontalAlignment = GridData.BEGINNING; - execute.setLayoutData(gridData); - execute.setText(browseLabel); - - // Button listener - Listener executeListener = new Listener() { - public void handleEvent(Event event) { - dialog = new FileDialog(parent.getShell()); - filePath.setText(dialog.open()); - } - }; - parent.layout(); - execute.addListener(SWT.Selection, executeListener); - } - - public boolean isControlEmpty() { - String path = filePath.getText(); - if (path == null || "".equals(path.trim())) - return true; - else - return false; - } - - public byte[] performUpload() { - String path = filePath.getText(); - if (path != null) { - try { - File file = new File(path); - byte[] fileBA = FileUtils.readFileToByteArray(file); - return fileBA; - } catch (IOException e) { - throw new ArgeoException("Unexpected error while " - + "reading file at path " + path, e); - } - } - return null; - } - - public void addModifyListener(ModifyListener listener) { - filePath.addModifyListener(listener); - } - - /** - * Always returns null in an RCP environment - */ - public String getLastFileUploadedName() { - return null; - } -} diff --git a/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/ImportToServerWizardPage.java b/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/ImportToServerWizardPage.java deleted file mode 100644 index 55065bfa0..000000000 --- a/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/ImportToServerWizardPage.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.eclipse.ui.specific; - -import java.io.InputStream; - -import org.eclipse.jface.preference.DirectoryFieldEditor; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.widgets.Composite; - -public class ImportToServerWizardPage extends WizardPage { - - public final static String FILE_ITEM_TYPE = "FILE"; - public final static String FOLDER_ITEM_TYPE = "FOLDER"; - - private DirectoryFieldEditor dfe; - - public ImportToServerWizardPage() { - super("Import from file system"); - setDescription("Import files from the local file system into the JCR repository"); - } - - public void createControl(Composite parent) { - dfe = new DirectoryFieldEditor("directory", "From", parent); - setControl(dfe.getTextControl(parent)); - } - - public String getObjectPath() { - return dfe.getStringValue(); - } - - public String getObjectType() { - return FOLDER_ITEM_TYPE; - } - - public boolean getNeedsProgressMonitor() { - return true; - } - - // Dummy methods : useless in RCP context but useful for RAP - /** WARNING : always return null in RCP context */ - public String getObjectName() { - return null; - } - - /** WARNING : do nothing in RCP context */ - public void performFinish() { - } - - /** WARNING : always return null in RCP context */ - public InputStream getFileInputStream() { - return null; - } -} \ No newline at end of file diff --git a/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/OpenFile.java b/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/OpenFile.java deleted file mode 100644 index 610020dd1..000000000 --- a/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/OpenFile.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.eclipse.ui.specific; - -import java.awt.Desktop; -import java.io.File; -import java.io.IOException; - -import org.argeo.ArgeoException; -import org.eclipse.core.commands.AbstractHandler; -import org.eclipse.core.commands.ExecutionEvent; -import org.eclipse.core.commands.ExecutionException; - -/** - * RCP specific command handler to open a file. - * - * The parameter "URI" is used to determine the correct method to open it. - * - * Various instances of this handler with different command ID might coexist in - * order to provide context specific open file service. - * - */ -public class OpenFile extends AbstractHandler { - // private final static Log log = LogFactory.getLog(OpenFile.class); - - public final static String PARAM_FILE_NAME = "param.fileName"; - public final static String PARAM_FILE_URI = "param.fileURI"; - - private final static String FILE_SCHEME = "file"; - - public Object execute(ExecutionEvent event) throws ExecutionException { - @SuppressWarnings("unused") - @Deprecated - String fileName = event.getParameter(PARAM_FILE_NAME); - String fileUri = event.getParameter(PARAM_FILE_URI); - - // sanity check - if (fileUri == null || "".equals(fileUri.trim())) - return null; - - Desktop desktop = null; - if (Desktop.isDesktopSupported()) { - desktop = Desktop.getDesktop(); - } - - File file = getFileFromUri(fileUri); - if (file != null) - try { - desktop.open(file); - } catch (IOException e) { - throw new ArgeoException("Unable to open file with URI: " - + fileUri, e); - } - - return null; - } - - protected File getFileFromUri(String uri) { - if (uri.startsWith(FILE_SCHEME)) { - String path = uri.substring((FILE_SCHEME + "://").length()); - return new File(path); - } - return null; - } -} \ No newline at end of file diff --git a/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/ThreadNLS.java b/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/ThreadNLS.java deleted file mode 100644 index c87f6e54f..000000000 --- a/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/ThreadNLS.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.eclipse.ui.specific; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.MissingResourceException; -import java.util.ResourceBundle; - -import org.argeo.util.LocaleUtils; -import org.eclipse.osgi.util.NLS; - -/** NLS attached to a given thread */ -public class ThreadNLS extends InheritableThreadLocal { - public final static String DEFAULT_BUNDLE_LOCATION = "/properties/plugin"; - - private final String bundleLocation; - - private Class type; - private Boolean utf8 = false; - - public ThreadNLS(String bundleLocation, Class type, Boolean utf8) { - this.bundleLocation = bundleLocation; - this.type = type; - this.utf8 = utf8; - } - - public ThreadNLS(Class type) { - this(DEFAULT_BUNDLE_LOCATION, type, false); - } - - @Override - protected T initialValue() { - ResourceBundle bundle = ResourceBundle.getBundle(bundleLocation, - LocaleUtils.threadLocale.get(), type.getClassLoader()); - T result; - try { - NLS.initializeMessages(bundleLocation, type); - Constructor constructor = type.getConstructor(); - constructor.setAccessible(true); - result = constructor.newInstance(); - final Field[] fieldArray = type.getDeclaredFields(); - for (int i = 0; i < fieldArray.length; i++) { - int modifiers = fieldArray[i].getModifiers(); - if (String.class.isAssignableFrom(fieldArray[i].getType()) - && Modifier.isPublic(modifiers) - && !Modifier.isStatic(modifiers)) { - try { - String value = bundle - .getString(fieldArray[i].getName()); - byte[] bytes = value.getBytes(); - - String forcedValue; - if (utf8) - forcedValue = new String(bytes, "UTF8"); - else - forcedValue = value; - if (value != null) { - fieldArray[i].setAccessible(true); - fieldArray[i].set(result, forcedValue); - } - } catch (final MissingResourceException mre) { - fieldArray[i].setAccessible(true); - fieldArray[i].set(result, ""); - mre.printStackTrace(); - } - } - } - return result; - } catch (final Exception ex) { - throw new IllegalStateException(ex.getMessage()); - } - } - -} diff --git a/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/UploadFileWizardPage.java b/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/UploadFileWizardPage.java deleted file mode 100644 index 5bdaeceb5..000000000 --- a/org.argeo.eclipse.ui.rcp/src/org/argeo/eclipse/ui/specific/UploadFileWizardPage.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.eclipse.ui.specific; - -import java.io.InputStream; - -import org.eclipse.jface.preference.DirectoryFieldEditor; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.widgets.Composite; - -public class UploadFileWizardPage extends WizardPage { - - public final static String FILE_ITEM_TYPE = "FILE"; - public final static String FOLDER_ITEM_TYPE = "FOLDER"; - - private DirectoryFieldEditor dfe; - - public UploadFileWizardPage() { - super("Import from file system"); - setDescription("Import files from the local file system into the JCR repository"); - } - - public void createControl(Composite parent) { - dfe = new DirectoryFieldEditor("directory", "From", parent); - setControl(dfe.getTextControl(parent)); - } - - public String getObjectPath() { - return dfe.getStringValue(); - } - - public String getObjectType() { - return FOLDER_ITEM_TYPE; - } - - public boolean getNeedsProgressMonitor() { - return true; - } - - // Dummy methods : useless in RCP context but useful for RAP - /** WARNING : always return null in RCP context */ - public String getObjectName() { - return null; - } - - /** WARNING : do nothing in RCP context */ - public void performFinish() { - } - - /** WARNING : always return null in RCP context */ - public InputStream getFileInputStream() { - return null; - } -} \ No newline at end of file diff --git a/org.argeo.security.dao.os/.project b/org.argeo.security.dao.os/.project deleted file mode 100644 index cefcc33f3..000000000 --- a/org.argeo.security.dao.os/.project +++ /dev/null @@ -1,22 +0,0 @@ - - - org.argeo.security.dao.os - - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - - org.eclipse.pde.PluginNature - - diff --git a/org.argeo.security.dao.os/META-INF/spring/security-os-osgi.xml b/org.argeo.security.dao.os/META-INF/spring/security-os-osgi.xml deleted file mode 100644 index 0a605c7b8..000000000 --- a/org.argeo.security.dao.os/META-INF/spring/security-os-osgi.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/org.argeo.security.dao.os/META-INF/spring/security-os.xml b/org.argeo.security.dao.os/META-INF/spring/security-os.xml deleted file mode 100644 index 69880f750..000000000 --- a/org.argeo.security.dao.os/META-INF/spring/security-os.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - osgibundle:security.properties - - - - - - - - /org/argeo/jcr/argeo.cnd - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/org.argeo.security.dao.os/bnd.bnd b/org.argeo.security.dao.os/bnd.bnd deleted file mode 100644 index 0df3b4a65..000000000 --- a/org.argeo.security.dao.os/bnd.bnd +++ /dev/null @@ -1 +0,0 @@ -Import-Package: org.argeo.jcr,* \ No newline at end of file diff --git a/org.argeo.security.dao.os/build.properties b/org.argeo.security.dao.os/build.properties deleted file mode 100644 index 5f22cdd44..000000000 --- a/org.argeo.security.dao.os/build.properties +++ /dev/null @@ -1 +0,0 @@ -bin.includes = META-INF/ diff --git a/org.argeo.security.dao.os/pom.xml b/org.argeo.security.dao.os/pom.xml deleted file mode 100644 index 05ee4ccd4..000000000 --- a/org.argeo.security.dao.os/pom.xml +++ /dev/null @@ -1,11 +0,0 @@ - - 4.0.0 - - org.argeo.commons - 2.1.12-SNAPSHOT - argeo-commons - .. - - org.argeo.security.dao.os - Commons Security DAO OS - \ No newline at end of file diff --git a/org.argeo.security.dao.os/security.properties b/org.argeo.security.dao.os/security.properties deleted file mode 100644 index ae77bf04d..000000000 --- a/org.argeo.security.dao.os/security.properties +++ /dev/null @@ -1,2 +0,0 @@ -argeo.security.systemKey=argeo -argeo.node.repo.securityWorkspace=security diff --git a/org.argeo.security.ui.rcp/.classpath b/org.argeo.security.ui.rcp/.classpath deleted file mode 100644 index d2953a684..000000000 --- a/org.argeo.security.ui.rcp/.classpath +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/org.argeo.security.ui.rcp/.project b/org.argeo.security.ui.rcp/.project deleted file mode 100644 index feeafcf5b..000000000 --- a/org.argeo.security.ui.rcp/.project +++ /dev/null @@ -1,28 +0,0 @@ - - - org.argeo.security.ui.rcp - - - - - - 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.security.ui.rcp/.settings/org.eclipse.jdt.core.prefs b/org.argeo.security.ui.rcp/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 1f382cb9d..000000000 --- a/org.argeo.security.ui.rcp/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,8 +0,0 @@ -#Sat Jan 15 17:51:30 CET 2011 -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 -org.eclipse.jdt.core.compiler.compliance=1.5 -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.5 diff --git a/org.argeo.security.ui.rcp/META-INF/jaas_default.txt b/org.argeo.security.ui.rcp/META-INF/jaas_default.txt deleted file mode 100644 index 16d476daf..000000000 --- a/org.argeo.security.ui.rcp/META-INF/jaas_default.txt +++ /dev/null @@ -1,27 +0,0 @@ -OS_SPRING { - org.eclipse.equinox.security.auth.module.ExtensionLoginModule required - extensionId="org.argeo.security.equinox.osSpringLoginModule"; -}; - -NIX { - org.eclipse.equinox.security.auth.module.ExtensionLoginModule requisite - extensionId="org.argeo.security.equinox.unixLoginModule"; - org.eclipse.equinox.security.auth.module.ExtensionLoginModule required - extensionId="org.argeo.security.equinox.osSpringLoginModule"; -}; - -WINDOWS { - org.eclipse.equinox.security.auth.module.ExtensionLoginModule requisite - extensionId="org.argeo.security.equinox.ntLoginModule"; - org.eclipse.equinox.security.auth.module.ExtensionLoginModule required - extensionId="org.argeo.security.equinox.osSpringLoginModule"; -}; - -REMOTE { - org.eclipse.equinox.security.auth.module.ExtensionLoginModule sufficient - extensionId="org.argeo.security.equinox.springLoginModuleRemote"; -}; - -KEYRING { - org.argeo.security.crypto.KeyringLoginModule required; -}; diff --git a/org.argeo.security.ui.rcp/bnd.bnd b/org.argeo.security.ui.rcp/bnd.bnd deleted file mode 100644 index 342ab79b0..000000000 --- a/org.argeo.security.ui.rcp/bnd.bnd +++ /dev/null @@ -1,6 +0,0 @@ -Bundle-Activator: org.argeo.security.ui.rcp.SecureApplicationActivator -Bundle-ActivationPolicy: lazy -Require-Bundle: org.eclipse.ui,org.eclipse.core.runtime -Import-Package: org.argeo.eclipse.ui.specific,\ -org.argeo.eclipse.spring,\ -* diff --git a/org.argeo.security.ui.rcp/build.properties b/org.argeo.security.ui.rcp/build.properties deleted file mode 100644 index 5ac3de985..000000000 --- a/org.argeo.security.ui.rcp/build.properties +++ /dev/null @@ -1,6 +0,0 @@ -source.. = src/main/java/ -output.. = target/classes/ -bin.includes = plugin.xml,\ - META-INF/,\ - .,\ - log4j.properties diff --git a/org.argeo.security.ui.rcp/icons/alt_about.gif b/org.argeo.security.ui.rcp/icons/alt_about.gif deleted file mode 100644 index 20d9ad2d98dbd6820da5adbd9a1728153d3ff0c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9340 zcmV-?B!k;WNk%w1VRHba0OkMySZp?koLAA^wZ_bwsJnK!shY)b!|9U4%cGUH zYRlECy1SCS#GuL1qs`i}nwxQTgE=BE7>l@M#mtG@^rL8aHkhYo&DpGEf=0fmD1s{dWb=` zw2QaXm(KB>((6!azrE*>v&)0A(R{1gfu_`a&hMee(y7GlmaC|O zeWzKy+l1BOxvRr^w8whM*@(Te}#V(hZKrsi(?d8k5yJxRX&!Ml~I~nLP<$PTU$IQCkhH49vuND zCR}-W85toV0JXIoxVgH!w!HwfxxFD4vKe_?TqXe>9Ui6xgJIGmVI$Vp*I6T3+*vr@ zIN>;#KAT=zo=KrRqoy7gssYHbva`0kx-|H~z5uwr76Qs*aV*)g4i^;gAwb}dAZgRE zVN)?eMK^9L!XX%UNt32@>ei8RmugijShHx|+NG~02O9eD_0m<#Lah+7j3HBoFyTT1 zDI7k8SWRNZZ5FwO%Qy}}$4ybvff6&S6e;@VeB9Dcci!x0BHfKf9 z$wdUS3nlpQNs(d*m^lwgOuLJ>+c$B4$$3nIE~F?@RuQw}>UAY9$B}~ze>~YTznZcN zidc5xf@q*A=A0g+8lus>7qjf}+tiZBC|bODA_9ut$iwltqEy)!a&QS7B*2F+876UF zwur?l$lUqD6fJ;p+8lKe#oAHXiNl?2nus@EVIxg|iYlzQvKUw|*%z679CA2ZeK8$3 zOf1M`)tqR2TrpP*bF@euQ6u1Clu{Xa6PtJCL~)LTp!{H-DTigXN>}Vv=3aaqCOIGf zePsQUUo0$i#$0GAUJ+o6a|C5q7s&iae$hLnM9;-8qTR{opw5j z8BQez&|GL&l-dG|b1=|ifm~LDXg05b6V6i&KKcm}KJqZBDH39}+nbmksi~5jhKSZL zIH90t01$vyLaA1Q(SoXTXnRO5d6CBp2n- z8&iHED0{~p%{nWZm8Yg!?X}f)8KXovY!i;G<7C3gxZ_3ogO9r&R;io4VffPjyYR{v z-(!#Am+ZaF>TBw$46w+6wOekBO~EWH#nC1VlNU;)y0*is2T-i5o-FPnnX$$o^7HYY z`IhkP6Q}mefT|ie6ozU7t2_eB;Y_U{B~gsKM2~2eJLv&8>qarp7-sr2(D!*-ub%fd zYcwBEj6AKXC;#zut9ZyLb=6g8p~lNPc0$Aw4)c)fr01fGGZdDtXR+Bo2km6ND1cma z331Dv>e37d)n(q-fn&ARv-(hkj-C*X=EJ&veQvKf|LSd)`!4tY+)Fnd&F4mW zD~=p$SW-j*UU(sd^MsoLee@@QUH$dg8!6|eLDR=g>UA%CK>&Q=6Cb}gx4A+HB5!&_ z6w5|H0vuE@9CEls0g4bm=F#td(W73vdX=-rk*zU4qZ6lSGK7@{p%K9AwZE8!SK@mZyXy)b9r&{2Gu>AtA=?#soPjl2}q0uVMuwB?UC#0gZ;a z-;u9;O~WB|kaxif{;djQLO>9)(81;%F@(6$-vnT%Gv1u=H#CSBeQsy00cKH)TvQtbi#38Cc0d8h93gtLm{N!guTs_Q}zXYa)(D|#1U932hkx2`gsl_eIP;RO$ z-#yvDQETS&qu8v17DW1;tO=nLTRZ4MlbFBPEtHdEQwcgQIRT@t%YKB&~s|^pt?z^+7TF*G1fk^O3{kOaGpI~r9Ig&R-jUW4OB?% z7^tw=#x52lw*p1in3~YJZjzyP^hbzXqSs?BbE{lMr5Af@L&0{GGz@{xVH3;R)-IN{ zM4*CX-wM|QTyn1G#B5hAW)=~_)349;>Q^&5&EirZsHjaX0b0x4=5B!qQ`kauBUM}5 zCiI*hm_W|j1PcIkcCWc3U@3FTMO2P2c%`kU2J+d_!!l$cKM{j`!@o;|o$A_>>9UDGlj)GQlE}y@*9D6$l_2Q#@zF6_)Q7Fx=mjCN!AZuTu!AaI7K4wN>eLg|b(ml&a$07Q z0edA`$vbT_an)N~3R*ChkEk+h#gOIZI3q46=(3mDG3K~d7Rc)wvS-ztnIrG+0w@-( zf)~6>!4?-xu{`Q)>nmSADBuF`a0V$->t*S+u62i=qf|w_=(J=;KlWl43R|O`!AtC%q8L6>Pzj>X7?klYn5x0&G6Uazy1U z%q94|#D#Kki>rciyX;%wDJl|#4P7uBTLH`nz@L>J$I6;n)j4Bzerj@UwcteC%<9wI zY7MPhhkM)z*FYA6P;QH41d=`g7qHh2-3zmW04IRQTSOhlde8L$(QebUuTAoRVEf2Y z;x?^q%~P_ zbl#oJcZ4@!npW^S&C9)mEFeG*2w1}<3NJsUl81HX8c7E#ByS+&I{?M(x6>nVa)Oko zC#1RpAF!Tv^y<3vV-S5108jeuIK?RiFr7eKKfl*QEcT~xlL?w3p$_DX3z9cE?=27k z7WkeECi0W!ix0-mPqP7^|GWm0KXV-{Kkz%)0qRrl14)iO3Y2tGDRq5DcM9_G3MQ~! zN>>xRM}AO85N*K|{!t|X@ zWuSZvCx>-dhfZjR&$oviWJw@|T~IKCyH|+i7bU;v6F?y-)8vTOqK1zce?=&ZYp4ZY zXMaGzd`d`%o9Kjh*ndSZL_|bCy<}NIwscSDfQE>Q2ayn~C@7BTijSCZlPHUk_<4S3 ze@LhTfH#Nvr-{ATgh#Odhi%XX%;QE&U!kq$fREES zO$m^OL>P&)r~xu}i_3?JnHY{vxQAF^j^{{>?5JI&NPh2Vemk)Y&aeIib1Bx0plh^UBu7O4P0 zk&%o*0Ru1qM2U|gsgFfjl=zqc{Wt(5nUYcokVKdT72tvPrvtgzjY^0B;Mj|IxQCKN zljZ0^>bQ=oW($O9isoknb$5}=bsG7klpo2IOG%ecNs><404BMYC<%W^c$Ldnkh}Pe zF-d~sD3)Z|kT)6sOeR2sY{>#{>654clmq|E4`i{q$9vMEGlX^!cLmUGl}6DgT)nH81E5JTVyM7f#6>6xGD zneO?S@Y#=~S(<){ni>!U6~K~NsRJtT0?h}TC3pmhnVs5MmbK}fk9lpTc#4y0ksc6e zLMfcDE|>XOtMjz>zMw5g&800j&Pr8Xb}=m!Pa1)*aw zlmn0k6k4HMnxpgirOip7f(n0EnV$(maE0)Te|t!kYGkfuo*sofb&PP(Awcd2wb z0T62crJTyCMG2~*ilYets>rFV>ZoeUklCtTZ>pQSx^W6{ z0>6o#d5Wc4YOJLCr^(u`e_8?Xs+A$?pFlvJ_8OqGTCKBLj_DXZ{Hmb38K-j!7X&Z` zNPwqlK&%5`t{1AVp31N;%dUm0s;jyK6T7HJda)QglV*vNl)9kenR3251ysNYWMHtL z`k4-3t}nZ^raGpF%AYqdvC>+x;%K7zYL2$)q)&Q^|7wxo$^(owl)}oHT>z>MV4-JV zp-j8B4lA=;*`Gw}swDWTC5o|+YM{1B3tP*eDVJ=S>Ih^|v{{;^4sZr%V78sQuxrcz zuq^qoAPTKDd!~(wud^wsW)MtG2d5$H3?s`}!CI7qo3trwwxoHs^I5nFkhY6EpAL(a z5bKgJFs)8Nw}@%214@&&+Ogqj1994`4@v-;O0;Rv1%q3*Nt?8)o3wvwx~i+JXWP8W znyOd{1dtoGtxB~eO1V0_v2*lx9&4#Dnry#X24ujg#5=mjd${T9l**gFsr$aG>y$e1 zu&e5y^t!0knZFjBvpTB;>NrO%3a8s9zF|uNV@tdaP`1WwN8>av(u$n5Y=ZnA%9K#Hpu7->Myb+wd z8Em-F%ewQcpSj4N(0T*(I=isisM*WE+G)Z7{Jm}2yX48aBrCjF3d1s7#So0VPWiyf zn*dEFh z1Ufvy8N9w0{DB{;m5F-4MSQa-%8<5MZ34`jqBgR3TE4@JzzdAWR_w4n3 zpzHt^d@+{9m1cm-LNd=%IZA3UcTNAM?r2#7jC2IvP?9C0l z00%A3NsG{a+{J#}$-kV=pnP*-H+U93cs`(dXb^qggo56L1t5(D`aDoYw6W9-%TUUz zD;&iH?afq-&|QGg2rbT`49YT{&RlHM#k>Gb;5TaU(>?%6Xy5~AP}JX)f&l0RB27sH zB|jzYOWo_wJjuH%-3(AX1ms)L2Ccvi9McWl#mBnUJydOZkVja_CUEVjn+ctgPWNp^&oz}t4(_nCAR4@dkVc%1b z-}=4ZQ!uh$U||>L-D24H-WLwv z3s6|f_2D4S5MMw5BR*(hR%#LA0juq^+x?SrJOp)Mz-a*g&bQ3oz0KPkp5DFP-aFpg zIxW^A9^}fkY^0W2BMxRffN=<};@1`e@Yv$Xrp=XIzBEqW5pLe+oxnYw-Z^gLJPzck z#bwI15P^nqA717JaB)el=1Sfx*}dRT9I#(-o`L(#vwhxJ?&V%?;XB^t@D1Ns_TfJv z=BY*G%C+VOp5_;~#dVc9$e(7F5Rzfc1|NY+s9_mv7>Qr$6 zXs6n3+~O|&1t2g6bw1l4Farzl0h+$&na-TB&@(RH)O5m-2U&E{s7rd0dTDanOz2BpasOu z37vgXp6%J69r1fz+7N>-)ocM>xP`py#L+(OboHP!I5z zuJYQB0T}QAKb`gMqXsZP)Lw5(M;-Pb4btG`)cg!K)ttgA4A9b!1o^J?T|n~vKGs$r z^>&Z)0B`kDujhJi_3TUsbRY+BaM2bm&+$C}&l|nb?}LIKy+QFaKS-ni0q`kYyWRFa z=lNdABrn!Z&+T{5_j^zE><#r-j{!#r1ats+Z?O8Sk9voHhp@i}vYNAt&qgLa`2bLU zF3PK(0cvuN@8wJBO~37ZpZ8Hu_sC!Oc`x-U{{Y7S01vQy6|j}mAFcC>$eSq7C3?i3 z*gVnW0obPTyU*a#9_d!F^l{JcGcflv;Q6F){G?y^^1toOPw?^&{SQz9Zs4%_2?#(s zKtL~qgf~DpH%>bUJ5C6alaohB1qE12OJ)ZX762I$EG#yrBB%i!3JND*LvdDQU0oj^ zGcyahGZ?xUzr72=3&O>{z{C&0$G;2z56=$^6$Ta6)jAbAIxsKY-HYH(;*pV*2$z_f zKL-jK78Wd{rKcjQ9<5(Qb!234aJIH|?c%j8*fL=Smnr-8tRS=p)C@?p2BQKD7&=~L zH1q=8qH!R{S;FK+Nv8vO0E8G7!ITYD^*UU@2cnLZH2wh2_~45euUyO!A}dHt=t2w+ zA4;4^&002$+`N4Y7ZM~oP3sPD0RS)FJec-codAJE)<1x^eqtbaOlaGLz!o-Sh%_nF zrcNtz+bGpzRjUQsY&vkj1Xp=qQ+2p^;>47){m$Z=%#4>?xC-YwObTsjM7-6YYSY-U zG}Vv@oM0-jsgq#~i0Rb}z<4bGk~ood3dFVcGG@(jm2u|0bQ)-jp)pFG`th$5bm|Ux z2mzZ^;@P#o*vxHfGC|(P*aDj&_o!T?b%%Sl2Ku7%<)xi82bp@LrcMgpg|IF=K!BNz zX=hVTX{p6qGiwz@kZ|P*CqR0`LF8Fe?QOGHUpI8*TqKtWmQ@C!$m3Efw2Acv2ywX3 zPj@?c*Na+kHB??)5OOBKjT26jS7_V7#~dSnU82bngryYQOJJ=+(>^P*=-q*99iQ%wA%zh)Ue5jqn8lwR? zS}lpIGzLOVWNdpWpFe3T98wQHR4$)@CROai6Rx{uyYIokM6;_VDv6L~9?$`r^B_4} zzpkM8rep>*K1Na~SOpKeQvZY($UcrofZ++Nk7P54fXPpH}AYe>*gS_%{Y5` zG4-2Y|F_42_ooUz+NDT*`Q>|<^3eCN6^KfG5i`KL6i7S0NUs}A$Pm{wW(h1{p<@aN z!S+g#B-;4@3j{7WnNG+@z!Dx%ed}Z2>=+0?oJ|iyeOtp3ickbBfM6Xb*vfv!#xL-l z&VT_lq2yMez8V;@Y7v_law;H$+8OF%5^RnnWLQHl2myy3aFnc))Gu4PASW#{pb*iA z!gM9DeHECUHJXSVWl@g_5v11?saQiH5a9dybeBD`r7!5hIBbHH- zjdbMfBAJ}L!4Zm!up}neph+6Wp_51;!WZ(WfDVL?dmStrrA&u3RTk2aL`)x`|-r*jB+u91`4)E4AZr2vGw zJbV^wk?QL~4?@a7H!$^|haf08r^?c+W)-UhxWF9-Tgt{vN33HVnM_RSf-j;~m1^Dp zC{gP<*&6h~vLUU28**@nymk|%Q?)`FTKZC~W;LCH9jpSr@K7G4^8{ffg-$y_Tb>&3 ztTRw6WJSf+w;qt1lTD;t=Ne1Rc6OiyMJPWMTH36FfB+F4>>YSYgdu=n3RB=g9uGUp z#Lngdi#6I=KLFYC8nCx-g{w3_YQ*6ZcS3e`!%_)Bhi*o7xuR_@V23~eK0rXa7a+h8 zT(VeE>pz<)8*NkRh~X z&@XhMdjSY=;SS#;09go(1R>a%2zTT`2KN&w#rjdaXd|zAm#4@g*Yl%t6~J)+mE2(u z+cm^=kOLh`Oa`i!VGKwxEq_;hg49m;1X#_oOMfX&PTm-gB2chSRdE3an-0R~)vW-e zV8GzobCDU|u#)9!04KX4#C@QHpw)neDvuTnSqAKi)A`@Qmf%EKopH9PO2bN9@QP+= zhnf{5lf?$Iv2Zr;Ztr;`DO7g77|!!>W1wUw_aO*@jxv=gP=+gGH3f_Aub0ba-7p7o z(v?Q2L1$<|5G>&f0pM|u8w^N{l6S4Dl!COWN#~DB`^ZQZ?uO<1=RU-`#3rV-t%rc? zMVDaL&^0X*eoa*?NOcXDgtrWjV8Jq-;HKVPlT6yY%(IGmy=%4ho@-$LYAFbS)isEL zdk?Pg9(a4uYDfbaXgvlnkh|Q_<%5?4z=w4Ex(;Qa^t(@L2Xc7MhCeVS3i4gsHY=be z4}L6U=^Sl>&zayy%&?LhzTp`7yazED!JyNS28vre1sLZ;2^u|JK1@NtAQ*5UMXm=l zkX#&oxulSUu!IDAHzxZo+oyl(2O-a#&IK>HWqV+7DX@LpKIeH1)Ib8F8yyTtU$Mpm zFxUW;V8!YNIaN=r2ZLJj4IWtp6P&fN8X9{#D_?WiUq1FwM|%a*HZ{)K-aNM-eAO{< zd)(u0cM5>v^hrOrbU6-qUx(b?2t8>xBS`yO;<6l>@WKs~o$m(!i#_IMpE>5Q&G`(o zTH$*Jx)grS{2oxi^r%n46?EO`|8(5rQhz-{^>Fyv*WUK?+gYok1%i8{fD4jubDK}# zQ-4Et51G%rWsz@ih1(zKa2U_*dtwdQVQU6oydu96i1$8M;^ceD1Zug0CtlHLZBu-fw%&D0D@Aue1>>}xVVTha0dYZ z0RlLK{5J-*Mg~=o1|{|e^+gASAW&=QPjC2!ZTN{l2!R@6hZRT!cd&A+xQFV;et*b; z9_R;yD2ub0dAN9vSZD<5cmX8_%J zmr~i;m!dhEa7alULWDUqR*7ko-iS7hDUJ^* z1rphlv}v1^DU@_smwx7(3)GpQDV6$|l70!8#Th{`i3T$Hl_J2J8Ms=f^qh}5owez6 zL1~*oshynZ2EM5-Dx^T)DV)Q3mD5v)s0jiW@Rb3;ifwjoF9(|)7@wneoAo)L>S&jo zxu3DLK%e=aQ7N8PS)A24L!Cqf9dLf@$#)ILpkLsikJ$qfIiZqSn=%>$`iY@*)jlfp qpHvy3foYywi3N4wPyt|~3EG+q$_gNaHaQ8MXDOpj`lLn>2mm`zH?9Hz diff --git a/org.argeo.security.ui.rcp/icons/alt_launcher.icns b/org.argeo.security.ui.rcp/icons/alt_launcher.icns deleted file mode 100644 index b77a6a63938e43ee977646573dbd9a45fd1983af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51159 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

N=U55wS;a{OH*SV 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 Mpnv}UzqP>s0IH1_y#N3J diff --git a/org.argeo.security.ui.rcp/icons/alt_launcher.xpm b/org.argeo.security.ui.rcp/icons/alt_launcher.xpm deleted file mode 100644 index b0c139e06..000000000 --- a/org.argeo.security.ui.rcp/icons/alt_launcher.xpm +++ /dev/null @@ -1,307 +0,0 @@ -/* XPM */ -static char * icon48_xpm[] = { -"48 48 256 2", -" c #4B4B3B3B9090", -". c #0D0D0E0E5454", -"X c #11110E0E5B5B", -"o c #17170F0F6363", -"O c #1D1D13136969", -"+ c #212114146C6C", -"@ c #252514147171", -"# c #282811116C6C", -"$ c #26260D0D6363", -"% c #22220B0B5E5E", -"& c #1C1C0B0B5A5A", -"* c #1C1C0B0B5252", -"= c #1B1B05055353", -"- c #161606064D4D", -"; c #161605054949", -": c #111104044848", -"> c #131304044545", -", c #131305054242", -"< c #141410105E5E", -"1 c #2C2C15157373", -"2 c #2B2B1B1B7575", -"3 c #343416167272", -"4 c #313113136E6E", -"5 c #222209095757", -"6 c #1B1B06064D4D", -"7 c #15150B0B4242", -"8 c #13130C0C5555", -"9 c #2E2E1B1B7878", -"0 c #33331F1F7C7C", -"q c #343418187878", -"w c #3B3B1C1C7575", -"e c #2E2E10106767", -"r c #1B1B07074747", -"t c #18180B0B4646", -"y c #151513136262", -"u c #1A1A15156464", -"i c #34341F1F7777", -"p c #40401E1E8080", -"a c #42421B1B7A7A", -"s c #3B3B15157474", -"d c #2B2B0B0B5B5B", -"f c #222207075252", -"g c #373727277A7A", -"h c #474724248484", -"j c #393915156E6E", -"k c #373711116A6A", -"l c #343413136363", -"z c #232319196E6E", -"x c #292919197070", -"c c #3C3C2C2C8282", -"v c #444431318585", -"b c #494934348A8A", -"n c #505026268A8A", -"m c #3D3D1B1B6E6E", -"M c #31310E0E5C5C", -"N c #2B2B0D0D5353", -"B c #222207074A4A", -"V c #52523C3C9292", -"C c #58583C3C9494", -"Z c #5D5D44449797", -"A c #5C5C2E2E9292", -"S c #676733339595", -"D c #424228287575", -"F c #29290A0A4F4F", -"G c #6C6C4A4A9E9E", -"H c #72725454A7A7", -"J c #8C8C6D6DB2B2", -"K c #343424246E6E", -"L c #3A3A23236A6A", -"P c #3A3A1C1C6767", -"I c #24240A0A4B4B", -"U c #151518186161", -"Y c #76766F6FA5A5", -"T c #ADAD9191CCCC", -"R c #98988989D3D3", -"E c #45453B3B8686", -"W c #3C3C35357979", -"Q c #363631317575", -"! c #32322D2D6B6B", -"~ c #323229296363", -"^ c #30301F1F6262", -"/ c #323218185E5E", -"( c #272707074B4B", -") c #202028286C6C", -"_ c #1E1E1D1D6868", -"` c #9A9A8282BBBB", -"' c #C8C8B3B3D3D3", -"] c #B3B3AFAFE7E7", -"[ c #84847272C6C6", -"{ c #58585757A3A3", -"} c #3F3F3C3C8A8A", -"| c #3B3B3A3A8484", -" . c #414139397D7D", -".. c #3D3D39397A7A", -"X. c #37372E2E6E6E", -"o. c #2C2C21215A5A", -"O. c #2E2E1B1B5B5B", -"+. c #F5F5EFEFF5F5", -"@. c #656566669A9A", -"#. c #47474B4B8E8E", -"$. c #3C3C44447B7B", -"%. c #444442428080", -"&. c #45453E3E8181", -"*. c #40403C3C8181", -"=. c #3D3D33337474", -"-. c #3B3B30306E6E", -";. c #38382D2D6969", -":. c #303026265D5D", -">. c #2C2C15155A5A", -",. c #1F1F1C1C7070", -"<. c #25251E1E7171", -"1. c #59595C5C9191", -"2. c #4D4D53538989", -"3. c #4C4C49498484", -"4. c #484845458585", -"5. c #494941418585", -"6. c #494940408181", -"7. c #2F2F1C1C5353", -"8. c #2B2B28287676", -"9. c #323231317F7F", -"0. c #545452528B8B", -"q. c #51514E4E8989", -"w. c #4E4E4B4B8C8C", -"e. c #4C4C47478686", -"r. c #46463D3D7E7E", -"t. c #434336367A7A", -"y. c #2B2B13135555", -"u. c #47473D3D8D8D", -"i. c #575757578E8E", -"p. c #48483E3E7F7F", -"a. c #46463A3A7D7D", -"s. c #424235357575", -"d. c #404034347171", -"f. c #BFBFCBCBFAFA", -"g. c #B8B8A8A8DDDD", -"h. c #5E5E60609292", -"j. c #565655558C8C", -"k. c #4B4B44448282", -"l. c #454539397B7B", -"z. c #434338387878", -"x. c #3F3F32326D6D", -"c. c #3D3D30306969", -"v. c #3A3A2E2E6363", -"b. c #36362A2A5C5C", -"n. c #343424245555", -"m. c #30301E1E4D4D", -"M. c #49493C3C8282", -"N. c #5E5E4F4F8C8C", -"B. c #56563B3B8B8B", -"V. c #545407078585", -"C. c #424234347272", -"Z. c #9797A4A4F7F7", -"A. c #444436367676", -"S. c #7D7D7979D5D5", -"D. c #464640408A8A", -"F. c #44444B4B8282", -"G. c #414107077777", -"H. c #71716161C1C1", -"J. c #303039397979", -"K. c #8E8E8E8EE6E6", -"L. c #404033338B8B", -"P. c #4A4A45458C8C", -"I. c #46463A3A8080", -"U. c #363629295454", -"Y. c #303022224848", -"T. c #424237377575", -"R. c #2E2E1D1D6363", -"E. c #79798383EAEA", -"W. c #74747B7BE4E4", -"Q. c #6D6D7676D6D6", -"!. c #6A6A7171CECE", -"~. c #66666969C6C6", -"^. c #62626565BCBC", -"/. c #5F5F6060B5B5", -"(. c #5B5B5B5BACAC", -"). c #535353539898", -"_. c #4F4F4F4FA4A4", -"`. c #54544D4DA4A4", -"'. c #323204046B6B", -"]. c #303035357979", -"[. c #313122224343", -"{. c #5A5A5B5BB7B7", -"}. c #484846468080", -"|. c #454541417575", -" X c #4B4B31318282", -".X c #47473C3C8484", -"XX c #3E3E35356E6E", -"oX c #2F2F26264040", -"OX c #2B2B23233A3A", -"+X c #262619195C5C", -"@X c #252515155A5A", -"#X c #55555151B3B3", -"$X c #3C3C2D2D5D5D", -"%X c #39392F2F5656", -"&X c #37372D2D5050", -"*X c #25251F1F3030", -"=X c #24241D1D4343", -"-X c #202013135656", -";X c #41413B3B6C6C", -":X c #444442429696", -">X c #212100005E5E", -",X c #444436367272", -" > , , , ", -" . . X X < < o o O O + @ 1 2 2 1 1 1 1 1 1 1 1 3 4 # # $ $ $ % % % 5 = = 6 6 - ; ; > > , , 7 ", -" . 8 < < < o O O + @ @ 2 9 9 0 0 q q q q q q q w 3 4 4 e e $ $ $ $ % 5 = = 6 6 6 ; ; > > r t ", -" . X < y u O O + @ 1 2 i 0 0 p p p p p p p a a p a s 3 4 4 e e e e d 5 5 f f 6 6 6 ; ; r r t ", -" X < y u O + + @ 2 9 0 g p p h h h h h h h p h h a a s s j k k j l d d 5 5 f f 6 6 r r r r r ", -" X < y O z x x 9 0 g c v b n n n n n n n n n n n h a a s s j j m l M d d N f f B B B B r r r ", -" < y u + z 2 0 c c b V C Z C C A A A A A S S S n h D w w m m m m k l M d d N f F F F B r r r ", -" < y O z z 9 c b V Z G H H H G S G G J J H V v c g g K K K K L P l l l M M N N N N I B B r r ", -" U u + z x i v C H Y J J J J H J T R H V E W W Q Q Q Q ! ! ! ~ ^ ^ / / M M M M M N ( B B r r ", -" ) _ z x 9 g b Z Y ` ' ' ' T T ] [ { } | .........W W Q Q X.! ~ ~ o.O./ / / / N F ( B B B r ", -" ) ) z x i c V G J ' +.+.+.+.] [ @.#.$.%.%.%.&.*. . .....W =.-.X.;.~ :.o.O.^ >.N F ( B B B B ", -" ) ,.<.2 g v C H J ' +.+.+.+.T Y 1.2.3.4.4.4.5.6.&.&. . ...W =.=.-.;.~ :.o.7.>.N F F ( B I I ", -" ) ,.<.8.9.b C H J T +.+.+.' J @.1.0.q.q.w.e.4.5.6.&.r. . .t.W =.=.-.;.~ :.o.7.y.N F ( ( I I ", -" 8.8.8.9.| u.C G J T +.+.' ` Y @.1.i.0.q.q.e.e.5.6.p.r.a. .t.t.s.d.d.-.;.~ :.7.7.y.F F ( I I ", -" 9.c c c v b A S H ' f.g.` Y @.h.1.i.j.0.q.q.e.k.6.p.r.a.l.t.z.s.s.d.x.c.v.b.n.m.7.N F F F I ", -" <.g M.N.B.B.n V.J f.R J @.h.h.1.i.i.j.j.0.q.3.k.6.p.r.a.l.l.z.s.C.d.x.x.c.v.b.n.m.y.N F F F ", -" + x i v B.Z Z G g.Z.[ @.2.i.i.j.j.j.j.j.0.q.3.k.6.p.p.a.l.l.A.s.C.C.d.x.c.v.b.n.m.7.y.N N y. ", -" O # 3 w p n Z ` f.S.H D.F.q.0.0.0.0.j.0.q.q.3.k.6.p.r.a.a.l.A.s.s.C.d.x.x.c.v.b.n.m.y.y.y.y. ", -" O # 4 s a G.V.T Z.H.V J.%.e.w.q.0.0.0.0.q.q.e.k.6.p.r.a.a.l.z.A.s.C.d.d.x.c.v.b.n.m.7.>.y.y. ", -" O # 4 s w G.A f.K.H L...4.P.w.w.w.q.q.q.q.e.e.5.6.M.I.I.a.a.l.z.A.s.d.d.x.c.v.v.U.Y.7.O.>.y. ", -" $ # 4 3 s G.G f.S.Z 9.*.D.P.P.w.w.w.w.w.e.e.5.5.M.M.I.I.a.a.l.z.T.s.d.d.x.x.c.v.U.Y.m.R.>.>. ", -" E.E.W.W.W.W.E.Z.E.W.Q.Q.Q.Q.Q.Q.Q.Q.Q.Q.!.!.!.!.!.~.~.~.~.~.~.^.^.^.^.^./././.(.{ { )._.`._. ", -" + # 3 w s '.` f.H.V ].*.D.P.P.P.P.P.P.P.5.5.5.M.M.M.I.I.a.l.z.z.T.T.s.d.d.x.c.v.U.Y.[.^ O.>. ", -" ~.~.~.~.~.~.K.Z.S.~.{.^.^.^.^.^.^.^.^././././././.(.(.(.(.(.(.{ { { { { ).).).w.w.}.|.P.u.} ", -" .I.6. X X XT f.H.b ].*.E D.D.D.D.5.5..X.XM.M.I.I.a.a.l.l.z.z.T.T.T.d.XXx.c.v.b.U.oXOXR.+X@X ", -" E.E.E.W.W.W.K.Z.E.W.Q.Q.Q.Q.Q.Q.Q.Q.!.!.!.!.!.!.~.~.~.~.~.~.^.^.^.^.^./././.(.{ { ).).#X_._. ", -" & % $ e '.= H f.H.b 8.W *.E E E .X.X.XI.I.I.I.a.a.l.l.z.z.T.T.T.C.XXXXc.v.$X%X&XY.*X=X2 @X-X ", -" {.{.{.{.{.#X~.Z.W.~.{.{./././././././././.(.(.(.(.(.(.(.{ { { { { { ).).).w.w.3.}.;X%.:X} } ", -" & & % $ e >XV.f.S.C K X.W t. . .l.l.t.t.t.t.A.A.A.,X,X,X,X,XX7X` Z.Z D ! =.=.s.t.t.t.A.A.s.A.,X,X,X,X > > t t t cX ", -" nXbXbXzXzXlXaXXXY +Xf = f = 7XtXR R mXn.Y.[.[.[.[.OX*X*X8X5X*X=X,.u vXvX; > > MXMX, 7 t t ", -" nXnXnXbXzXvX-.Y +XcX6 6 = = = d L B.G H `.X.:.7.m.=X=X=X=X=X6X,.u cXvXNX: BX> MXVXCXVX7 7 7 ", -" ZXZXnXbXAXgX@.+XvX; - - - - * @XR.>.sX>.R.i 0 x eXeXeXeXO hXaXcXvXNX: BXMXMXMXVXCXCXCXVX7 7 ", -" SXZXZXAXgXN.aXNX: : NXNXNX- * +X+X* 6 6 6 * * * * * * * vXvX- NX: DXBXMXMXFXCXCXCXCXGXVXVX7 ", -" SXSXHXgX0.JXKXLXKXKXDX: : NX* @X-X- - - - - - - - - - - NX: DXDXDXMXMXFXFXCXCXCXCXGXGXGXVXVX ", -" SXHXPX3.JXnXnXnXnXbXLXKXKXNXaX-XvX: : NX: : : : : : : BXDXDXLXMXMXFXFXCXCXCXCXGXGXGXGXGXGXGX ", -" IXUX$.AXZXZXZXZXnXnXnXLXLXNXJXvXBXDXBXBXBXBXDXDXDXDXLXDXLXLXFXFXFXFXCXCXCXCXGXGXGXGXGXGXGXGX ", -" "}; diff --git a/org.argeo.security.ui.rcp/icons/alt_window_16.gif b/org.argeo.security.ui.rcp/icons/alt_window_16.gif deleted file mode 100644 index 05626b17d8133fb8d4644b1d6fef71b5464a83ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 637 zcmV-@0)qWVNk%w1VGsZi0OkMyi-8)}*O-2lP0Hw}F;@yymoek*x!Lop&FGr*^SR~k zs^;O9;p?WSqgKtvhMApMhF*N^?6&X&9pLg?DBG(C(ez;g!PXhs))Rw8MzH&4Z(_ zXvf!@hj|a@|9{HUwg3O)o~~}>@~^JReYVZIH1tGelN zk%v8>nmw<;lBk_yvbu)E--D*OeB8x>j*3>k(uk0bLzTd1hNNNJ=CYr@WM^3dMPxF! zzph4nBvxlHz`%CY-G9r{sL|c0ptWPh!<4SPZ@9Bvy2FG2|H;$mn~9BNUw$#w=Y!bc zgtn}6%i@6G^tH9ZgW}z-$IYnz|B<@Hh`+RXy1~Awt!2U5leENdA^8LV00000EC2ui z01yBW000NtfPaF6goT0uIU{mqadcHX2yRVIXMzhO7(q`I6h}HJI0pwxmKbPYVl@J4 zDm{J(2S|cfc{Cdv4KaNy8g_n31A=5;1shmX4-f6x{Jf>7ZWJ08yT*#Oz=YiBkILwmjfEnosaBAPDf9ls zyvdZd!-~Sos+W>G-s`Nk{FBSui~9V#l#Mgv?ySDMe7VAbsjYFcx_8&zi?qIfzR97t z#FCqrMWLNf&E=%y`n1>coVmr8xaEKH{mbL}t&D;gy~&Qj%#~z(LzA{)#N~zP^|R~m zp}otUtJHMC;*HGdj_LHdqq%0d+j+ajo586>NW&Zue=J&Va z_qWdQp*=VauEA}uv~jPtc+cjr?)$_4|H+n~Sk~>BfR;|v}n2Rhi`F=4Oay#WC( zz<`mgpCCAqiV)E;p<@9xCQK|?u;RoC1{4_NfH;66xr-`97}&wFV-*P~5+pD)vg8R0 zI93LL@noC>K`K;O`4g|B4lhV>>g2hiWCx%^T^{{orJ4a655`o18dWM!k`*dk<&Yyl zfG5fS1RaQShe(_;Sx`vWyEms9sw>oDh4>bLpfy5xfE`1`gkHXW0jpj6!!3+1hlRY6 zQy_~06J=0{7QHhC$-sg+aIlQ|&yCj@I%Akk8-s@1w@K(G@u9a17cX99$UG;+7%U7@ zlv%#~uj#6&*RB>2ppBs0bz)=quzPp!?;n2u4lX=Hp5cE)h!8^KID-=@;>$l>HEo9u zEsU@TAYhAi*RXY_!ECq{*d1@a0TQou6B7<7n0fl1KSm)2x0%)o*NS_pu^79a?c zi406UP(TnUnRKCj_u;1@haNhyM2LS(vBn8V+%d);0pLIZ1uX`dp?)5CAb^J;(kQ|I zO&6rWMFAHKfP;@MwvgcrL>d{R5+KlMf)rB#V8eqMJTZW399TI6mRTN&00K)uQ9=oV zj6lE?NdPc{4UC;JKn`ef@B<4QcIY7jTsF`EoqsUV$rLsKus{?aoe{tQKV-V0mT$rd z#SlFxTBoA~G~mSmU&O#h6&*O?mRoMV=|mHsf-*z{b&fDX4^<2hfeki9pa&ONoDhH$ z$Rgl`5=xXX1OyR83&9Y%G9keL8+1ZI5?#aq01O8-A+8@KG|&UI(QdE-8ln901s{1V z@dXp4mH#SB%I7#TXkB G2mm{gq(mG5 diff --git a/org.argeo.security.ui.rcp/plugin.xml b/org.argeo.security.ui.rcp/plugin.xml deleted file mode 100644 index 4ddf700d5..000000000 --- a/org.argeo.security.ui.rcp/plugin.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/org.argeo.security.ui.rcp/plugin_customization.ini b/org.argeo.security.ui.rcp/plugin_customization.ini deleted file mode 100644 index baf9cefe7..000000000 --- a/org.argeo.security.ui.rcp/plugin_customization.ini +++ /dev/null @@ -1,5 +0,0 @@ -org.eclipse.ui/DOCK_PERSPECTIVE_BAR=topRight -org.eclipse.ui/SHOW_TEXT_ON_PERSPECTIVE_BAR=true -org.eclipse.ui/PERSPECTIVE_BAR_SIZE=100 -org.eclipse.ui/SHOW_TRADITIONAL_STYLE_TABS=true -org.eclipse.ui/SHOW_PROGRESS_ON_STARTUP = false diff --git a/org.argeo.security.ui.rcp/pom.xml b/org.argeo.security.ui.rcp/pom.xml deleted file mode 100644 index 92a6b8755..000000000 --- a/org.argeo.security.ui.rcp/pom.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - 4.0.0 - - org.argeo.commons - 2.1.12-SNAPSHOT - argeo-commons - .. - - org.argeo.security.ui.rcp - Commons Security UI RCP - jar - - - - org.apache.felix - maven-bundle-plugin - - - ${project.artifactId};singleton:=true - - - - - - - - - org.argeo.commons - org.argeo.util - 2.1.12-SNAPSHOT - - - - - - - - - - - org.argeo.commons - org.argeo.security.ui - 2.1.12-SNAPSHOT - - - org.argeo.commons - org.argeo.security.equinox - 2.1.12-SNAPSHOT - - - - - org.argeo.commons - org.argeo.eclipse.ui.rcp - 2.1.12-SNAPSHOT - - - org.argeo.commons - org.argeo.eclipse.dep.rcp - pom - 2.1.12-SNAPSHOT - - - \ No newline at end of file diff --git a/org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/AbstractSecureApplication.java b/org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/AbstractSecureApplication.java deleted file mode 100644 index 75184cbab..000000000 --- a/org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/AbstractSecureApplication.java +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.security.ui.rcp; - -import java.security.PrivilegedAction; - -import javax.security.auth.Subject; -import javax.security.auth.login.LoginException; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.argeo.OperatingSystem; -import org.eclipse.equinox.app.IApplication; -import org.eclipse.equinox.app.IApplicationContext; -import org.eclipse.equinox.security.auth.ILoginContext; -import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.application.WorkbenchAdvisor; - -/** - * RCP workbench initialization - */ -public abstract class AbstractSecureApplication implements IApplication { - final static String NODE_REPO_URI = "argeo.node.repo.uri"; - - private static final Log log = LogFactory - .getLog(AbstractSecureApplication.class); - - protected WorkbenchAdvisor createWorkbenchAdvisor(String username) { - return new SecureWorkbenchAdvisor(username); - } - - public Object start(IApplicationContext context) throws Exception { - // wait for the system to be initialized - // try { - // Thread.sleep(3000); - // } catch (Exception e2) { - // // silent - // } - - boolean remote = System.getProperty(NODE_REPO_URI) != null; - - // choose login context - final ILoginContext loginContext; - if (remote) { - loginContext = SecureApplicationActivator - .createLoginContext(SecureApplicationActivator.CONTEXT_REMOTE); - } else { - if (OperatingSystem.os == OperatingSystem.WINDOWS) - loginContext = SecureApplicationActivator - .createLoginContext(SecureApplicationActivator.CONTEXT_WINDOWS); - else - loginContext = SecureApplicationActivator - .createLoginContext(SecureApplicationActivator.CONTEXT_NIX); - } - - final Display display = PlatformUI.createDisplay(); - - // login - Subject subject = null; - try { - loginContext.login(); - subject = loginContext.getSubject(); - } catch (LoginException e) { - log.error("Error when logging in.", e); - display.dispose(); - try { - Thread.sleep(2000); - } catch (InterruptedException e1) { - // silent - } - return null; - } - - // identify after successful login - if (log.isDebugEnabled()) - log.debug("subject=" + subject); - final String username = subject.getPrincipals().iterator().next() - .getName(); - if (log.isDebugEnabled()) - log.debug(username + " logged in"); -// display.disposeExec(new Runnable() { -// public void run() { -// log.debug("Display disposed"); -// logout(loginContext, username); -// } -// }); - - try { - PrivilegedAction privilegedAction = new PrivilegedAction() { - public Object run() { - int result = PlatformUI.createAndRunWorkbench(display, - createWorkbenchAdvisor(username)); - return new Integer(result); - } - }; - - Integer returnCode = (Integer) Subject.doAs(subject, - privilegedAction); - logout(loginContext, username); - return processReturnCode(returnCode); - } catch (Exception e) { - if (subject != null) - logout(loginContext, username); - log.error("Unexpected error", e); - } finally { - display.dispose(); - } - return null; - } - - protected Integer processReturnCode(Integer returnCode) { - if (returnCode == PlatformUI.RETURN_RESTART) - return IApplication.EXIT_RESTART; - else - return IApplication.EXIT_OK; - } - - static void logout(ILoginContext secureContext, String username) { - try { - secureContext.logout(); - log.info("Logged out " + (username != null ? username : "") - + " (THREAD=" + Thread.currentThread().getId() + ")"); - } catch (LoginException e) { - log.error("Erorr when logging out", e); - } - } - - public void stop() { - final IWorkbench workbench; - try { - workbench = PlatformUI.getWorkbench(); - } catch (Exception e) { - return; - } - if (workbench == null) - return; - final Display display = workbench.getDisplay(); - if (display != null && !display.isDisposed()) - display.syncExec(new Runnable() { - - public void run() { - if (!display.isDisposed()) - workbench.close(); - } - }); - - if (log.isDebugEnabled()) - log.debug("workbench stopped"); - } - -} diff --git a/org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/SecureActionBarAdvisor.java b/org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/SecureActionBarAdvisor.java deleted file mode 100644 index 481865bfa..000000000 --- a/org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/SecureActionBarAdvisor.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.security.ui.rcp; - -import org.eclipse.jface.action.GroupMarker; -import org.eclipse.jface.action.ICoolBarManager; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.action.IToolBarManager; -import org.eclipse.jface.action.MenuManager; -import org.eclipse.jface.action.Separator; -import org.eclipse.jface.action.ToolBarManager; -import org.eclipse.swt.SWT; -import org.eclipse.ui.IWorkbenchActionConstants; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.actions.ActionFactory; -import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction; -import org.eclipse.ui.application.ActionBarAdvisor; -import org.eclipse.ui.application.IActionBarConfigurer; - -public class SecureActionBarAdvisor extends ActionBarAdvisor { - private IWorkbenchAction exitAction; - private IWorkbenchAction openPerspectiveDialogAction; - private IWorkbenchAction showViewMenuAction; - private IWorkbenchAction preferences; - private IWorkbenchAction saveAction; - private IWorkbenchAction saveAsAction; - private IWorkbenchAction saveAllAction; - private IWorkbenchAction closeAllAction; - - // private final Boolean isRcp; - - public SecureActionBarAdvisor(IActionBarConfigurer configurer, Boolean isRcp) { - super(configurer); - // this.isRcp = isRcp; - } - - protected void makeActions(IWorkbenchWindow window) { - preferences = ActionFactory.PREFERENCES.create(window); - register(preferences); - openPerspectiveDialogAction = ActionFactory.OPEN_PERSPECTIVE_DIALOG - .create(window); - register(openPerspectiveDialogAction); - showViewMenuAction = ActionFactory.SHOW_VIEW_MENU.create(window); - register(showViewMenuAction); - - exitAction = ActionFactory.QUIT.create(window); - register(exitAction); - - // Save semantiocs - saveAction = ActionFactory.SAVE.create(window); - register(saveAction); - saveAsAction = ActionFactory.SAVE_AS.create(window); - register(saveAsAction); - saveAllAction = ActionFactory.SAVE_ALL.create(window); - register(saveAllAction); - closeAllAction = ActionFactory.CLOSE_ALL.create(window); - register(closeAllAction); - - } - - protected void fillMenuBar(IMenuManager menuBar) { - MenuManager fileMenu = new MenuManager("&File", - IWorkbenchActionConstants.M_FILE); - MenuManager editMenu = new MenuManager("&Edit", - IWorkbenchActionConstants.M_EDIT); - MenuManager windowMenu = new MenuManager("&Window", - IWorkbenchActionConstants.M_WINDOW); - - menuBar.add(fileMenu); - menuBar.add(editMenu); - menuBar.add(windowMenu); - // Add a group marker indicating where action set menus will appear. - menuBar.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); - - // File - fileMenu.add(saveAction); - fileMenu.add(saveAsAction); - fileMenu.add(saveAllAction); - fileMenu.add(closeAllAction); - fileMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); - fileMenu.add(new Separator()); - fileMenu.add(exitAction); - - // Edit - editMenu.add(preferences); - - // Window - windowMenu.add(openPerspectiveDialogAction); - windowMenu.add(showViewMenuAction); - } - - @Override - protected void fillCoolBar(ICoolBarManager coolBar) { - IToolBarManager saveToolbar = new ToolBarManager(SWT.FLAT | SWT.RIGHT); - saveToolbar.add(saveAction); - saveToolbar.add(saveAllAction); - coolBar.add(saveToolbar); - } - -} diff --git a/org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/SecureApplicationActivator.java b/org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/SecureApplicationActivator.java deleted file mode 100644 index 9c0425c5b..000000000 --- a/org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/SecureApplicationActivator.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.security.ui.rcp; - -import java.net.URL; - -import org.eclipse.equinox.security.auth.ILoginContext; -import org.eclipse.equinox.security.auth.LoginContextFactory; -import org.osgi.framework.BundleActivator; -import org.osgi.framework.BundleContext; - -/** Activator able to create {@link ILoginContext} */ -public class SecureApplicationActivator implements BundleActivator { - - public final static String CONTEXT_REMOTE = "REMOTE"; - public final static String CONTEXT_NIX = "NIX"; - public final static String CONTEXT_WINDOWS = "WINDOWS"; - private static final String JAAS_CONFIG_FILE = "/META-INF/jaas_default.txt"; - - private static BundleContext bundleContext; - - public void start(BundleContext bundleContext) throws Exception { - SecureApplicationActivator.bundleContext = bundleContext; - } - - public void stop(BundleContext context) throws Exception { - } - - static ILoginContext createLoginContext(String context) { - URL configUrl = bundleContext.getBundle().getEntry(JAAS_CONFIG_FILE); - return LoginContextFactory.createContext(context, configUrl); - } -} diff --git a/org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/SecureRcp.java b/org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/SecureRcp.java deleted file mode 100644 index d8125cf6f..000000000 --- a/org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/SecureRcp.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.security.ui.rcp; - - -public class SecureRcp extends AbstractSecureApplication { -} diff --git a/org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/SecureWorkbenchAdvisor.java b/org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/SecureWorkbenchAdvisor.java deleted file mode 100644 index 33b781ee5..000000000 --- a/org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/SecureWorkbenchAdvisor.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.security.ui.rcp; - -import org.eclipse.ui.IPerspectiveDescriptor; -import org.eclipse.ui.application.IWorkbenchConfigurer; -import org.eclipse.ui.application.IWorkbenchWindowConfigurer; -import org.eclipse.ui.application.WorkbenchAdvisor; -import org.eclipse.ui.application.WorkbenchWindowAdvisor; - -/** - * Workbench configuration which is aware of the logged in user and can remember - * workbench state. - */ -public class SecureWorkbenchAdvisor extends WorkbenchAdvisor { - public final static String INITIAL_PERSPECTIVE_PROPERTY = "org.argeo.security.ui.initialPerspective"; - public final static String SAVE_AND_RESTORE_PROPERTY = "org.argeo.security.ui.saveAndRestore"; - - private String initialPerspective = System.getProperty( - INITIAL_PERSPECTIVE_PROPERTY, null); - - private final String username; - - public SecureWorkbenchAdvisor(String username) { - this.username = username; - } - - @Override - public void initialize(final IWorkbenchConfigurer configurer) { - super.initialize(configurer); - Boolean saveAndRestore = Boolean.parseBoolean(System.getProperty( - SAVE_AND_RESTORE_PROPERTY, "true")); - configurer.setSaveAndRestore(saveAndRestore); - } - - public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor( - IWorkbenchWindowConfigurer configurer) { - return new SecureWorkbenchWindowAdvisor(configurer, username); - } - - public String getInitialWindowPerspectiveId() { - if (initialPerspective != null) { - // check whether this user can see the declared perspective - // (typically the perspective won't be listed if this user doesn't - // have the right to see it) - IPerspectiveDescriptor pd = getWorkbenchConfigurer().getWorkbench() - .getPerspectiveRegistry() - .findPerspectiveWithId(initialPerspective); - if (pd == null) - return null; - } - return initialPerspective; - } - - protected String getUsername() { - return username; - } -} diff --git a/org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/SecureWorkbenchWindowAdvisor.java b/org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/SecureWorkbenchWindowAdvisor.java deleted file mode 100644 index d8aaec443..000000000 --- a/org.argeo.security.ui.rcp/src/org/argeo/security/ui/rcp/SecureWorkbenchWindowAdvisor.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.security.ui.rcp; - -import org.eclipse.swt.graphics.Point; -import org.eclipse.ui.application.ActionBarAdvisor; -import org.eclipse.ui.application.IActionBarConfigurer; -import org.eclipse.ui.application.IWorkbenchWindowConfigurer; -import org.eclipse.ui.application.WorkbenchWindowAdvisor; - -public class SecureWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor { - private final String username; - - public SecureWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer, - String username) { - super(configurer); - this.username = username; - } - - public ActionBarAdvisor createActionBarAdvisor( - IActionBarConfigurer configurer) { - return new SecureActionBarAdvisor(configurer, true); - } - - public void preWindowOpen() { - IWorkbenchWindowConfigurer configurer = getWindowConfigurer(); - configurer.setInitialSize(new Point(1200, 900)); - configurer.setShowCoolBar(true); - configurer.setShowMenuBar(true); - configurer.setShowStatusLine(true); - configurer.setShowProgressIndicator(true); - - configurer.setShowPerspectiveBar(true); - String remoteUri = System - .getProperty(AbstractSecureApplication.NODE_REPO_URI); - if (remoteUri != null) - configurer - .setTitle("Argeo UI - " + username + " (" + remoteUri + ")"); //$NON-NLS-1$ - else - configurer.setTitle("Argeo UI - " + username); //$NON-NLS-1$ - - } -} diff --git a/pom.xml b/pom.xml index 5e7ddf01a..207a66c5d 100644 --- a/pom.xml +++ b/pom.xml @@ -35,7 +35,6 @@ org.argeo.security.auth.ldap org.argeo.security.dao.ldap org.argeo.security.dao.cli - org.argeo.security.dao.os org.argeo.security.dao.jackrabbit org.argeo.server.jcr.mvc @@ -47,7 +46,6 @@ org.argeo.eclipse.ui org.argeo.eclipse.ui.rap - org.argeo.eclipse.ui.rcp org.argeo.node.repo.jackrabbit org.argeo.cms @@ -58,7 +56,6 @@ org.argeo.security.ui.admin org.argeo.security.ui.rap - org.argeo.security.ui.rcp org.argeo.server.core -- 2.30.2