View Javadoc
1   package org.argeo.cms.ui.workbench.internal.useradmin.providers;
2   
3   import org.argeo.cms.CmsException;
4   import org.argeo.cms.ui.workbench.WorkbenchUiPlugin;
5   import org.argeo.cms.ui.workbench.internal.useradmin.parts.UserEditor;
6   import org.argeo.cms.ui.workbench.internal.useradmin.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 CmsException("Unable to open UserEditor for " + user, pie);
41  		}
42  	}
43  }