Move Eclipse 3 components to legacy.
[lgpl/argeo-commons.git] / legacy / org.argeo.cms.ui.workbench / src / org / argeo / cms / ui / workbench / internal / useradmin / providers / UserTableDefaultDClickListener.java
diff --git a/legacy/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/UserTableDefaultDClickListener.java b/legacy/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/UserTableDefaultDClickListener.java
new file mode 100644 (file)
index 0000000..a25163b
--- /dev/null
@@ -0,0 +1,43 @@
+package org.argeo.cms.ui.workbench.internal.useradmin.providers;
+
+import org.argeo.cms.CmsException;
+import org.argeo.cms.ui.workbench.WorkbenchUiPlugin;
+import org.argeo.cms.ui.workbench.internal.useradmin.parts.UserEditor;
+import org.argeo.cms.ui.workbench.internal.useradmin.parts.UserEditorInput;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.osgi.service.useradmin.Group;
+import org.osgi.service.useradmin.User;
+
+/**
+ * Default double click listener for the various user tables, will open the
+ * clicked item in the editor
+ */
+public class UserTableDefaultDClickListener implements IDoubleClickListener {
+       public void doubleClick(DoubleClickEvent evt) {
+               if (evt.getSelection().isEmpty())
+                       return;
+               Object obj = ((IStructuredSelection) evt.getSelection())
+                               .getFirstElement();
+               User user = (User) obj;
+               IWorkbenchWindow iww = WorkbenchUiPlugin.getDefault().getWorkbench()
+                               .getActiveWorkbenchWindow();
+               IWorkbenchPage iwp = iww.getActivePage();
+               UserEditorInput uei = new UserEditorInput(user.getName());
+
+               try {
+                       // Works around the fact that dynamic setting of the editor icon
+                       // causes NPE after a login/logout on RAP
+                       if (user instanceof Group)
+                               iwp.openEditor(uei, UserEditor.GROUP_EDITOR_ID);
+                       else
+                               iwp.openEditor(uei, UserEditor.USER_EDITOR_ID);
+               } catch (PartInitException pie) {
+                       throw new CmsException("Unable to open UserEditor for " + user, pie);
+               }
+       }
+}