X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.cms.e4%2Fsrc%2Forg%2Fargeo%2Fcms%2Fe4%2Fusers%2FUserTableDefaultDClickListener.java;fp=org.argeo.cms.e4%2Fsrc%2Forg%2Fargeo%2Fcms%2Fe4%2Fusers%2FUserTableDefaultDClickListener.java;h=6acaa0baeee526c9b27132185b3d916d9f16668b;hb=d6390257a328199a2a4a677b33e79b6535175169;hp=0000000000000000000000000000000000000000;hpb=7764393bb0f9fafab93c86a5b16ef7773e1b0cc8;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.e4/src/org/argeo/cms/e4/users/UserTableDefaultDClickListener.java b/org.argeo.cms.e4/src/org/argeo/cms/e4/users/UserTableDefaultDClickListener.java new file mode 100644 index 000000000..6acaa0bae --- /dev/null +++ b/org.argeo.cms.e4/src/org/argeo/cms/e4/users/UserTableDefaultDClickListener.java @@ -0,0 +1,63 @@ +package org.argeo.cms.e4.users; + +import org.argeo.cms.CmsException; +import org.argeo.naming.LdapAttrs; +import org.eclipse.e4.ui.model.application.ui.basic.MPart; +import org.eclipse.e4.ui.workbench.modeling.EPartService; +import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState; +import org.eclipse.jface.viewers.DoubleClickEvent; +import org.eclipse.jface.viewers.IDoubleClickListener; +import org.eclipse.jface.viewers.IStructuredSelection; +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 { + private final EPartService partService; + + public UserTableDefaultDClickListener(EPartService partService) { + this.partService = partService; + } + + public void doubleClick(DoubleClickEvent evt) { + if (evt.getSelection().isEmpty()) + return; + Object obj = ((IStructuredSelection) evt.getSelection()).getFirstElement(); + User user = (User) obj; + + String entityEditorId = getEditorId(user); + MPart part = partService.createPart(entityEditorId); + part.setLabel(user.toString()); + part.getPersistedState().put(LdapAttrs.uid.name(), user.getName()); + + // the provided part is be shown + partService.showPart(part, PartState.ACTIVATE); + + // IWorkbenchWindow iww = WorkbenchUiPlugin.getDefault().getWorkbench() + // .getActiveWorkbenchWindow(); + // IWorkbenchPage iwp = iww.getActivePage(); + // UserEditorInput uei = new UserEditorInput(user.getName()); + // FIXME open editor + + 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 (Exception pie) { + throw new CmsException("Unable to open UserEditor for " + user, pie); + } + } + + protected String getEditorId(User user) { + if (user instanceof Group) + return "org.argeo.cms.e4.partdescriptor.groupEditor"; + else + return "org.argeo.cms.e4.partdescriptor.userEditor"; + } +}