]> git.argeo.org Git - lgpl/argeo-commons.git/blob - UserTableDefaultDClickListener.java
6acaa0baeee526c9b27132185b3d916d9f16668b
[lgpl/argeo-commons.git] / UserTableDefaultDClickListener.java
1 package org.argeo.cms.e4.users;
2
3 import org.argeo.cms.CmsException;
4 import org.argeo.naming.LdapAttrs;
5 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
6 import org.eclipse.e4.ui.workbench.modeling.EPartService;
7 import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
8 import org.eclipse.jface.viewers.DoubleClickEvent;
9 import org.eclipse.jface.viewers.IDoubleClickListener;
10 import org.eclipse.jface.viewers.IStructuredSelection;
11 import org.osgi.service.useradmin.Group;
12 import org.osgi.service.useradmin.User;
13
14 /**
15 * Default double click listener for the various user tables, will open the
16 * clicked item in the editor
17 */
18 public class UserTableDefaultDClickListener implements IDoubleClickListener {
19 private final EPartService partService;
20
21 public UserTableDefaultDClickListener(EPartService partService) {
22 this.partService = partService;
23 }
24
25 public void doubleClick(DoubleClickEvent evt) {
26 if (evt.getSelection().isEmpty())
27 return;
28 Object obj = ((IStructuredSelection) evt.getSelection()).getFirstElement();
29 User user = (User) obj;
30
31 String entityEditorId = getEditorId(user);
32 MPart part = partService.createPart(entityEditorId);
33 part.setLabel(user.toString());
34 part.getPersistedState().put(LdapAttrs.uid.name(), user.getName());
35
36 // the provided part is be shown
37 partService.showPart(part, PartState.ACTIVATE);
38
39 // IWorkbenchWindow iww = WorkbenchUiPlugin.getDefault().getWorkbench()
40 // .getActiveWorkbenchWindow();
41 // IWorkbenchPage iwp = iww.getActivePage();
42 // UserEditorInput uei = new UserEditorInput(user.getName());
43 // FIXME open editor
44
45 try {
46 // Works around the fact that dynamic setting of the editor icon
47 // causes NPE after a login/logout on RAP
48 // if (user instanceof Group)
49 // iwp.openEditor(uei, UserEditor.GROUP_EDITOR_ID);
50 // else
51 // iwp.openEditor(uei, UserEditor.USER_EDITOR_ID);
52 } catch (Exception pie) {
53 throw new CmsException("Unable to open UserEditor for " + user, pie);
54 }
55 }
56
57 protected String getEditorId(User user) {
58 if (user instanceof Group)
59 return "org.argeo.cms.e4.partdescriptor.groupEditor";
60 else
61 return "org.argeo.cms.e4.partdescriptor.userEditor";
62 }
63 }