]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/providers/UserTableDefaultDClickListener.java
Fix invalid thread access
[lgpl/argeo-commons.git] / org.argeo.security.ui.admin / src / org / argeo / security / ui / admin / internal / providers / UserTableDefaultDClickListener.java
1 package org.argeo.security.ui.admin.internal.providers;
2
3 import org.argeo.ArgeoException;
4 import org.argeo.eclipse.ui.workbench.WorkbenchUiPlugin;
5 import org.argeo.security.ui.admin.internal.parts.UserEditor;
6 import org.argeo.security.ui.admin.internal.parts.UserEditorInput;
7 import org.eclipse.jface.viewers.DoubleClickEvent;
8 import org.eclipse.jface.viewers.IDoubleClickListener;
9 import org.eclipse.jface.viewers.IStructuredSelection;
10 import org.eclipse.ui.IWorkbenchPage;
11 import org.eclipse.ui.IWorkbenchWindow;
12 import org.eclipse.ui.PartInitException;
13 import org.osgi.service.useradmin.Group;
14 import org.osgi.service.useradmin.User;
15
16 /**
17 * Default double click listener for the various user tables, will open the
18 * clicked item in the editor
19 */
20 public class UserTableDefaultDClickListener implements IDoubleClickListener {
21 public void doubleClick(DoubleClickEvent evt) {
22 if (evt.getSelection().isEmpty())
23 return;
24 Object obj = ((IStructuredSelection) evt.getSelection())
25 .getFirstElement();
26 User user = (User) obj;
27 IWorkbenchWindow iww = WorkbenchUiPlugin.getDefault().getWorkbench()
28 .getActiveWorkbenchWindow();
29 IWorkbenchPage iwp = iww.getActivePage();
30 UserEditorInput uei = new UserEditorInput(user.getName());
31
32 try {
33 // Works around the fact that dynamic setting of the editor icon
34 // causes NPE after a login/logout on RAP
35 if (user instanceof Group)
36 iwp.openEditor(uei, UserEditor.GROUP_EDITOR_ID);
37 else
38 iwp.openEditor(uei, UserEditor.USER_EDITOR_ID);
39 } catch (PartInitException pie) {
40 throw new ArgeoException("Unable to open UserEditor for " + user,
41 pie);
42 }
43 }
44 }