Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian W. Damus2013-10-25 11:12:07 -0400
committerChristian W. Damus2013-10-25 11:14:59 -0400
commitda5fdd258b6f17bc53294b682c1512587d6c60ff (patch)
tree9fa2a4b893dafefaf630171297f8fb76fe65eb57 /plugins/org.eclipse.emf.cdo.security.ui
parentb02553222d4486117970c8105de3560141fe58d9 (diff)
downloadcdo-bugs/399306a.tar.gz
cdo-bugs/399306a.tar.xz
cdo-bugs/399306a.zip
[399306] [Security] Add password managementbugs/399306a
https://bugs.eclipse.org/bugs/show_bug.cgi?id=399306 Update the Reset Password... action to use the new menu contribution mechanism, supporting user-defined key bindings. Includes new reusable Handler analogues of the SafeActionDelegate and LongRunningActionDelegate in the Net4J UI Util.
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.security.ui')
-rw-r--r--plugins/org.eclipse.emf.cdo.security.ui/META-INF/MANIFEST.MF4
-rw-r--r--plugins/org.eclipse.emf.cdo.security.ui/plugin.properties5
-rw-r--r--plugins/org.eclipse.emf.cdo.security.ui/plugin.xml53
-rw-r--r--plugins/org.eclipse.emf.cdo.security.ui/src/org/eclipse/emf/cdo/security/internal/ui/actions/ResetPasswordActionDelegate.java48
-rw-r--r--plugins/org.eclipse.emf.cdo.security.ui/src/org/eclipse/emf/cdo/security/internal/ui/handlers/ResetPasswordHandler.java61
5 files changed, 105 insertions, 66 deletions
diff --git a/plugins/org.eclipse.emf.cdo.security.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.security.ui/META-INF/MANIFEST.MF
index 5183f356ab..3ca0b085d6 100644
--- a/plugins/org.eclipse.emf.cdo.security.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.cdo.security.ui/META-INF/MANIFEST.MF
@@ -1,13 +1,13 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.emf.cdo.security.ui;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 4.3.0.qualifier
Bundle-Localization: plugin
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-ClassPath: .
Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Export-Package: org.eclipse.emf.cdo.security.internal.ui.actions;version="1.0.0";x-internal:=true
+Export-Package: org.eclipse.emf.cdo.security.internal.ui.handlers;version="4.3.0";x-internal:=true
Require-Bundle: org.eclipse.emf.cdo.security.edit;bundle-version="[4.1.0,5.0.0)",
org.eclipse.net4j.util.ui;bundle-version="[3.4.0,4.0.0)",
org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)";resolution:=optional,
diff --git a/plugins/org.eclipse.emf.cdo.security.ui/plugin.properties b/plugins/org.eclipse.emf.cdo.security.ui/plugin.properties
index 1fa94d8aef..fe8fad889c 100644
--- a/plugins/org.eclipse.emf.cdo.security.ui/plugin.properties
+++ b/plugins/org.eclipse.emf.cdo.security.ui/plugin.properties
@@ -11,4 +11,7 @@ pluginName = CDO Model Repository Security UI
providerName = Eclipse Modeling Project
action.label = Reset Password...
-action.tooltip = Reset the user's password (must be an administrator) \ No newline at end of file
+action.tooltip = Reset the user's password (must be an administrator)
+category.name = CDO Security Management
+command.name = Reset Password
+command.description = Reset the selected user's password. Must be an administrator to reset passwords.
diff --git a/plugins/org.eclipse.emf.cdo.security.ui/plugin.xml b/plugins/org.eclipse.emf.cdo.security.ui/plugin.xml
index b790a81016..35d7e9b783 100644
--- a/plugins/org.eclipse.emf.cdo.security.ui/plugin.xml
+++ b/plugins/org.eclipse.emf.cdo.security.ui/plugin.xml
@@ -14,21 +14,44 @@
<plugin>
<extension
- point="org.eclipse.ui.popupMenus">
- <objectContribution
- adaptable="true"
- id="org.eclipse.emf.cdo.security.ui.UserActions"
- objectClass="org.eclipse.emf.cdo.security.User">
- <action
- class="org.eclipse.emf.cdo.security.internal.ui.actions.ResetPasswordActionDelegate"
- id="org.eclipse.emf.cdo.security.ui.ResetPassword"
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="popup:org.eclipse.ui.popup.any?after=additions">
+ <command
+ id="org.eclipse.emf.cdo.security.ui.ResetPasswordCommand"
+ commandId="org.eclipse.emf.cdo.security.ui.resetPassword"
label="%action.label"
- tooltip="%action.tooltip">
- </action>
- <enablement>
- <test property="org.eclipse.emf.cdo.object.writable" value="true"/>
- </enablement>
- </objectContribution>
+ tooltip="%action.tooltip"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <with
+ variable="activeMenuSelection">
+ <count
+ value="1">
+ </count>
+ <iterate >
+ <adapt
+ type="org.eclipse.emf.cdo.security.User">
+ </adapt>
+ </iterate>
+ </with>
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <category
+ id="org.eclipse.emf.cdo.security.ui.management"
+ name="%category.name">
+ </category>
+ <command
+ id="org.eclipse.emf.cdo.security.ui.resetPassword"
+ categoryId="org.eclipse.emf.cdo.security.ui.management"
+ name="%command.name"
+ description="%command.description"
+ defaultHandler="org.eclipse.emf.cdo.security.internal.ui.handlers.ResetPasswordHandler">
+ </command>
</extension>
-
</plugin>
diff --git a/plugins/org.eclipse.emf.cdo.security.ui/src/org/eclipse/emf/cdo/security/internal/ui/actions/ResetPasswordActionDelegate.java b/plugins/org.eclipse.emf.cdo.security.ui/src/org/eclipse/emf/cdo/security/internal/ui/actions/ResetPasswordActionDelegate.java
deleted file mode 100644
index fb86908e43..0000000000
--- a/plugins/org.eclipse.emf.cdo.security.ui/src/org/eclipse/emf/cdo/security/internal/ui/actions/ResetPasswordActionDelegate.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Christian W. Damus (CEA LIST) - initial API and implementation
- */
-package org.eclipse.emf.cdo.security.internal.ui.actions;
-
-import org.eclipse.emf.cdo.security.User;
-
-import org.eclipse.net4j.util.ui.actions.LongRunningActionDelegate;
-
-import org.eclipse.emf.spi.cdo.InternalCDOSession;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-
-/**
- * Administrative password reset action on users in the security model.
- * @author Christian W. Damus (CEA LIST)
- */
-public class ResetPasswordActionDelegate extends LongRunningActionDelegate
-{
- public ResetPasswordActionDelegate()
- {
- }
-
- @Override
- protected void doRun(IProgressMonitor progressMonitor) throws Exception
- {
- ISelection selection = getSelection();
- if (selection instanceof IStructuredSelection)
- {
- Object selected = ((IStructuredSelection)selection).getFirstElement();
- if (selected instanceof User)
- {
- User user = (User)selected;
- InternalCDOSession session = (InternalCDOSession)user.cdoView().getSession();
- session.resetCredentials(user.getId());
- }
- }
- }
-}
diff --git a/plugins/org.eclipse.emf.cdo.security.ui/src/org/eclipse/emf/cdo/security/internal/ui/handlers/ResetPasswordHandler.java b/plugins/org.eclipse.emf.cdo.security.ui/src/org/eclipse/emf/cdo/security/internal/ui/handlers/ResetPasswordHandler.java
new file mode 100644
index 0000000000..ef49f723ac
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.security.ui/src/org/eclipse/emf/cdo/security/internal/ui/handlers/ResetPasswordHandler.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christian W. Damus (CEA LIST) - initial API and implementation
+ */
+package org.eclipse.emf.cdo.security.internal.ui.handlers;
+
+import org.eclipse.emf.cdo.CDOObject;
+import org.eclipse.emf.cdo.security.User;
+import org.eclipse.emf.cdo.view.CDOView;
+
+import org.eclipse.net4j.util.ui.UIUtil;
+import org.eclipse.net4j.util.ui.handlers.LongRunningHandler;
+
+import org.eclipse.emf.spi.cdo.InternalCDOSession;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.viewers.ISelection;
+
+/**
+ * Administrative password reset command handler on users in the security model.
+ *
+ * @author Christian W. Damus (CEA LIST)
+ */
+public class ResetPasswordHandler extends LongRunningHandler
+{
+ private User user;
+
+ public ResetPasswordHandler()
+ {
+ }
+
+ @Override
+ protected void doExecute(IProgressMonitor progressMonitor) throws Exception
+ {
+ if (user != null)
+ {
+ InternalCDOSession session = (InternalCDOSession)user.cdoView().getSession();
+ session.resetCredentials(user.getId());
+ }
+ }
+
+ @Override
+ protected boolean updateSelection(ISelection selection)
+ {
+ user = UIUtil.getElement(getSelection(), User.class);
+ return user != null && canWrite(user);
+ }
+
+ private boolean canWrite(CDOObject object)
+ {
+ CDOView view = object.cdoView();
+
+ return (view == null || !view.isReadOnly()) && object.cdoPermission().isWritable();
+ }
+}

Back to the top