--- /dev/null
+package org.argeo.cms.e4;
+
+import org.argeo.cms.CmsException;
+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;
+
+public class CmsE4Utils {
+ public static void openEditor(EPartService partService, String editorId, String key, String state) {
+ for (MPart part : partService.getParts()) {
+ String id = part.getPersistedState().get(key);
+ if (id != null && state.equals(id)) {
+ partService.showPart(part, PartState.ACTIVATE);
+ return;
+ }
+ }
+
+ // new part
+ MPart part = partService.createPart(editorId);
+ if (part == null)
+ throw new CmsException("No editor found with id " + editorId);
+ part.getPersistedState().put(key, state);
+ partService.showPart(part, PartState.ACTIVATE);
+ }
+
+ private CmsE4Utils() {
+ }
+}
import org.argeo.cms.ui.eclipse.forms.AbstractFormPart;
import org.argeo.cms.ui.eclipse.forms.IManagedForm;
import org.argeo.cms.ui.eclipse.forms.ManagedForm;
-import org.argeo.cms.util.CmsUtils;
import org.argeo.cms.util.UserAdminUtils;
import org.argeo.eclipse.ui.EclipseUiUtils;
import org.argeo.naming.LdapAttrs;
private NameChangeListener listener;
- private IManagedForm managedForm;
+ private ManagedForm managedForm;
// public void init(IEditorSite site, IEditorInput input) throws
// PartInitException {
userAdminWrapper.addListener(listener);
updateEditorTitle(null);
- managedForm = new ManagedForm(parent);
+ managedForm = new ManagedForm(parent) {
+
+ @Override
+ public void staleStateChanged() {
+ refresh();
+ }
+ };
ScrolledComposite scrolled = managedForm.getForm();
Composite body = new Composite(scrolled, SWT.NONE);
scrolled.setContent(body);
createUi(body);
+ managedForm.refresh();
}
abstract void createUi(Composite parent);
@PreDestroy
public void dispose() {
userAdminWrapper.removeListener(listener);
+ managedForm.dispose();
}
// CONTROLERS FOR THIS EDITOR AND ITS PAGES
Text createLMT(Composite parent, String label, String value) {
Label lbl = new Label(parent, SWT.NONE);
lbl.setText(label);
- lbl.setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, false, false));
+ lbl.setLayoutData(new GridData(SWT.LEAD, SWT.CENTER, false, false));
Text text = new Text(parent, SWT.NONE);
text.setText(value);
- text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ text.setLayoutData(new GridData(SWT.LEAD, SWT.FILL, true, true));
return text;
}
Text createLP(Composite parent, String label, String value) {
Label lbl = new Label(parent, SWT.NONE);
lbl.setText(label);
- lbl.setLayoutData(new GridData(SWT.LEAD, SWT.FILL, false, false));
- Text text = new Text(parent, SWT.PASSWORD);
+ lbl.setLayoutData(new GridData(SWT.LEAD, SWT.CENTER, false, false));
+ Text text = new Text(parent, SWT.PASSWORD | SWT.BORDER);
text.setText(value);
- text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ text.setLayoutData(new GridData(SWT.LEAD, SWT.FILL, true, false));
return text;
}
Text createLT(Composite parent, String label, String value) {
Label lbl = new Label(parent, SWT.NONE);
lbl.setText(label);
- lbl.setLayoutData(new GridData(SWT.LEAD, SWT.FILL, false, false));
+ lbl.setLayoutData(new GridData(SWT.LEAD, SWT.CENTER, false, false));
lbl.setFont(EclipseUiUtils.getBoldFont(parent));
- Text text = new Text(parent, SWT.NONE);
+ Text text = new Text(parent, SWT.BORDER);
text.setText(value);
text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- CmsUtils.style(text, CmsWorkbenchStyles.WORKBENCH_FORM_TEXT);
+ // CmsUtils.style(text, CmsWorkbenchStyles.WORKBENCH_FORM_TEXT);
return text;
}
Text createReadOnlyLT(Composite parent, String label, String value) {
Label lbl = new Label(parent, SWT.NONE);
lbl.setText(label);
- lbl.setLayoutData(new GridData(SWT.LEAD, SWT.FILL, false, false));
+ lbl.setLayoutData(new GridData(SWT.LEAD, SWT.CENTER, false, false));
lbl.setFont(EclipseUiUtils.getBoldFont(parent));
Text text = new Text(parent, SWT.NONE);
text.setText(value);
- text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ text.setLayoutData(new GridData(SWT.LEAD, SWT.FILL, true, false));
text.setEditable(false);
- CmsUtils.style(text, CmsWorkbenchStyles.WORKBENCH_FORM_TEXT);
+ // CmsUtils.style(text, CmsWorkbenchStyles.WORKBENCH_FORM_TEXT);
return text;
}
import java.util.Iterator;
import java.util.List;
+import javax.annotation.PreDestroy;
import javax.inject.Inject;
import javax.jcr.Node;
import javax.jcr.Repository;
import org.argeo.cms.e4.users.providers.UserFilter;
import org.argeo.cms.ui.eclipse.forms.AbstractFormPart;
import org.argeo.cms.ui.eclipse.forms.IManagedForm;
+import org.argeo.cms.util.CmsUtils;
import org.argeo.cms.util.UserAdminUtils;
import org.argeo.eclipse.ui.ColumnDefinition;
import org.argeo.eclipse.ui.EclipseUiUtils;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.dnd.TransferData;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Cursor;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
appendMembersPart(body, group);
}
- @Override
+ @PreDestroy
public void dispose() {
JcrUtils.logoutQuietly(session);
super.dispose();
/** Creates the general section */
protected void appendOverviewPart(final Composite parent, final Group group) {
- Composite body = new Composite(parent, SWT.BORDER);
+ Composite body = new Composite(parent, SWT.NONE);
// GridLayout layout = new GridLayout(5, false);
GridLayout layout = new GridLayout(2, false);
body.setLayout(layout);
+ body.setLayoutData(CmsUtils.fillWidth());
String cn = UserAdminUtils.getProperty(group, LdapAttrs.cn.name());
createReadOnlyLT(body, "Name", cn);
- // Text dnTxt = createReadOnlyLT(body, "DN", group.getName());
+ createReadOnlyLT(body, "DN", group.getName());
createReadOnlyLT(body, "Domain", UserAdminUtils.getDomainName(group));
// Description
// section.setText("Members");
// section.setLayoutData(EclipseUiUtils.fillAll());
- Composite body = new Composite(parent, SWT.NO_FOCUS);
- body.setLayout(EclipseUiUtils.noSpaceGridLayout());
+ Composite body = new Composite(parent, SWT.BORDER);
+ body.setLayout(new GridLayout());
// section.setClient(body);
body.setLayoutData(EclipseUiUtils.fillAll());
- LdifUsersTable userTableViewerCmp = createMemberPart(body, group);
-
- AbstractFormPart part = new GroupMembersPart(userTableViewerCmp);
- getManagedForm().addPart(part);
- addRemoveAbitily(body, userTableViewerCmp.getTableViewer(), group);
- }
-
- private LdifUsersTable createMemberPart(Composite parent, Group group) {
-
// Define the displayed columns
List<ColumnDefinition> columnDefs = new ArrayList<ColumnDefinition>();
columnDefs.add(new ColumnDefinition(new RoleIconLP(), "", 0, 24));
// 240));
// Create and configure the table
- LdifUsersTable userViewerCmp = new MyUserTableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL,
+ LdifUsersTable userViewerCmp = new MyUserTableViewer(body, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL,
userAdminWrapper.getUserAdmin());
userViewerCmp.setColumnDefinitions(columnDefs);
userViewer.addDropSupport(operations, tt,
new GroupDropListener(userAdminWrapper, userViewerCmp, (Group) getDisplayedUser()));
- return userViewerCmp;
+ AbstractFormPart part = new GroupMembersPart(userViewerCmp);
+ getManagedForm().addPart(part);
+
+ // remove button
+ // addRemoveAbility(toolBarManager, userViewerCmp.getTableViewer(), group);
+ Action action = new RemoveMembershipAction(userViewer, group, "Remove selected items from this group",
+ SecurityAdminImages.ICON_REMOVE_DESC);
+
+ ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
+ ToolBar toolBar = toolBarManager.createControl(body);
+ toolBar.setLayoutData(CmsUtils.fillWidth());
+
+ toolBarManager.add(action);
+ toolBarManager.update(true);
+
}
+ // private LdifUsersTable createMemberPart(Composite parent, Group group) {
+ //
+ // // Define the displayed columns
+ // List<ColumnDefinition> columnDefs = new ArrayList<ColumnDefinition>();
+ // columnDefs.add(new ColumnDefinition(new RoleIconLP(), "", 0, 24));
+ // columnDefs.add(new ColumnDefinition(new CommonNameLP(), "Name", 150));
+ // columnDefs.add(new ColumnDefinition(new MailLP(), "Mail", 150));
+ // // columnDefs.add(new ColumnDefinition(new UserNameLP(), "Distinguished
+ // Name",
+ // // 240));
+ //
+ // // Create and configure the table
+ // LdifUsersTable userViewerCmp = new MyUserTableViewer(parent, SWT.MULTI |
+ // SWT.H_SCROLL | SWT.V_SCROLL,
+ // userAdminWrapper.getUserAdmin());
+ //
+ // userViewerCmp.setColumnDefinitions(columnDefs);
+ // userViewerCmp.populate(true, false);
+ // userViewerCmp.setLayoutData(EclipseUiUtils.fillAll());
+ //
+ // // Controllers
+ // TableViewer userViewer = userViewerCmp.getTableViewer();
+ // userViewer.addDoubleClickListener(new
+ // UserTableDefaultDClickListener(partService));
+ // int operations = DND.DROP_COPY | DND.DROP_MOVE;
+ // Transfer[] tt = new Transfer[] { TextTransfer.getInstance() };
+ // userViewer.addDropSupport(operations, tt,
+ // new GroupDropListener(userAdminWrapper, userViewerCmp, (Group)
+ // getDisplayedUser()));
+ //
+ // // userViewerCmp.refresh();
+ // return userViewerCmp;
+ // }
+
// Local viewers
private class MyUserTableViewer extends LdifUsersTable {
private static final long serialVersionUID = 8467999509931900367L;
}
}
- private void addRemoveAbitily(Composite parent, TableViewer userViewer, Group group) {
- // Section section = sectionPart.getSection();
- ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
- ToolBar toolbar = toolBarManager.createControl(parent);
- final Cursor handCursor = new Cursor(parent.getDisplay(), SWT.CURSOR_HAND);
- toolbar.setCursor(handCursor);
- toolbar.addDisposeListener(new DisposeListener() {
- private static final long serialVersionUID = 3882131405820522925L;
-
- public void widgetDisposed(DisposeEvent e) {
- if ((handCursor != null) && (handCursor.isDisposed() == false)) {
- handCursor.dispose();
- }
- }
- });
-
- Action action = new RemoveMembershipAction(userViewer, group, "Remove selected items from this group",
- SecurityAdminImages.ICON_REMOVE_DESC);
- toolBarManager.add(action);
- toolBarManager.update(true);
- // section.setTextClient(toolbar);
- }
+ // private void addRemoveAbility(ToolBarManager toolBarManager, TableViewer
+ // userViewer, Group group) {
+ // // Section section = sectionPart.getSection();
+ // // ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
+ // // ToolBar toolbar = toolBarManager.createControl(parent);
+ // // ToolBar toolbar = toolBarManager.getControl();
+ // // final Cursor handCursor = new Cursor(toolbar.getDisplay(),
+ // SWT.CURSOR_HAND);
+ // // toolbar.setCursor(handCursor);
+ // // toolbar.addDisposeListener(new DisposeListener() {
+ // // private static final long serialVersionUID = 3882131405820522925L;
+ // //
+ // // public void widgetDisposed(DisposeEvent e) {
+ // // if ((handCursor != null) && (handCursor.isDisposed() == false)) {
+ // // handCursor.dispose();
+ // // }
+ // // }
+ // // });
+ //
+ // Action action = new RemoveMembershipAction(userViewer, group, "Remove
+ // selected items from this group",
+ // SecurityAdminImages.ICON_REMOVE_DESC);
+ // toolBarManager.add(action);
+ // toolBarManager.update(true);
+ // // section.setTextClient(toolbar);
+ // }
private class RemoveMembershipAction extends Action {
private static final long serialVersionUID = -1337713097184522588L;
import org.argeo.node.NodeConstants;
import org.eclipse.e4.ui.di.Focus;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.DND;
private UserAdminListener listener;
@PostConstruct
- public void createPartControl(Composite parent) {
+ public void createPartControl(Composite parent, ESelectionService selectionService) {
parent.setLayout(EclipseUiUtils.noSpaceGridLayout());
// boolean isAdmin = CurrentUser.isInRole(NodeConstants.ROLE_ADMIN);
userViewer = groupTableViewerCmp.getTableViewer();
userViewer.addDoubleClickListener(new UserTableDefaultDClickListener(partService));
// getViewSite().setSelectionProvider(userViewer);
+ userViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ IStructuredSelection selection = (IStructuredSelection) event.getSelection();
+ selectionService.setSelection(selection.toList());
+ }
+ });
// Really?
groupTableViewerCmp.refresh();
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.dnd.TransferData;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Cursor;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
@Override
protected void createUi(Composite body) {
-// Composite body = new Composite(parent, SWT.BORDER);
+ // Composite body = new Composite(parent, SWT.BORDER);
GridLayout mainLayout = new GridLayout();
// mainLayout.marginRight = 10;
body.setLayout(mainLayout);
-// body.getParent().setLayout(new GridLayout());
-// body.setLayoutData(CmsUtils.fillAll());
+ // body.getParent().setLayout(new GridLayout());
+ // body.setLayoutData(CmsUtils.fillAll());
User user = getDisplayedUser();
appendOverviewPart(body, user);
// Remove to ability to force the password for his own user. The user
// GridData gd = EclipseUiUtils.fillWidth();
// // gd.verticalAlignment = PRE_TITLE_INDENT;
// section.setLayoutData(gd);
- Composite body = new Composite(parent, SWT.BORDER);
+ Composite body = new Composite(parent, SWT.NONE);
body.setLayoutData(EclipseUiUtils.fillWidth());
// section.setClient(body);
// body.setLayout(new GridLayout(6, false));
// Section section = addSection(tk, parent, "Roles");
// Composite body = (Composite) section.getClient();
// Composite body= parent;
- Composite body = new Composite(parent, SWT.NONE);
- body.setLayout(EclipseUiUtils.noSpaceGridLayout());
+ Composite body = new Composite(parent, SWT.BORDER);
+ body.setLayout(new GridLayout());
body.setLayoutData(CmsUtils.fillAll());
// boolean isAdmin = CurrentUser.isInRole(NodeConstants.ROLE_ADMIN);
};
getManagedForm().addPart(part);
// addRemoveAbitily(body, userViewer, user);
+ // userViewerCmp.refresh();
+ String tooltip = "Remove " + UserAdminUtils.getUserLocalId(user.getName()) + " from the below selected groups";
+ Action action = new RemoveMembershipAction(userViewer, user, tooltip, SecurityAdminImages.ICON_REMOVE_DESC);
+ ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
+ ToolBar toolBar = toolBarManager.createControl(body);
+ toolBar.setLayoutData(CmsUtils.fillWidth());
+ toolBarManager.add(action);
+ toolBarManager.update(true);
return userViewerCmp;
}
}
}
- private void addRemoveAbitily(Composite parent, TableViewer userViewer, User user) {
- // Section section = sectionPart.getSection();
- ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
- ToolBar toolbar = toolBarManager.createControl(parent);
- final Cursor handCursor = new Cursor(Display.getCurrent(), SWT.CURSOR_HAND);
- toolbar.setCursor(handCursor);
- toolbar.addDisposeListener(new DisposeListener() {
- private static final long serialVersionUID = 3882131405820522925L;
-
- public void widgetDisposed(DisposeEvent e) {
- if ((handCursor != null) && (handCursor.isDisposed() == false)) {
- handCursor.dispose();
- }
- }
- });
-
- String tooltip = "Remove " + UserAdminUtils.getUserLocalId(user.getName()) + " from the below selected groups";
- Action action = new RemoveMembershipAction(userViewer, user, tooltip, SecurityAdminImages.ICON_REMOVE_DESC);
- toolBarManager.add(action);
- toolBarManager.update(true);
- // section.setTextClient(toolbar);
- }
+ // private void addRemoveAbility(Composite parent, TableViewer userViewer, User
+ // user) {
+ // // Section section = sectionPart.getSection();
+ // ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
+ // ToolBar toolbar = toolBarManager.createControl(parent);
+ // final Cursor handCursor = new Cursor(Display.getCurrent(), SWT.CURSOR_HAND);
+ // toolbar.setCursor(handCursor);
+ // toolbar.addDisposeListener(new DisposeListener() {
+ // private static final long serialVersionUID = 3882131405820522925L;
+ //
+ // public void widgetDisposed(DisposeEvent e) {
+ // if ((handCursor != null) && (handCursor.isDisposed() == false)) {
+ // handCursor.dispose();
+ // }
+ // }
+ // });
+ //
+ // String tooltip = "Remove " + UserAdminUtils.getUserLocalId(user.getName()) +
+ // " from the below selected groups";
+ // Action action = new RemoveMembershipAction(userViewer, user, tooltip,
+ // SecurityAdminImages.ICON_REMOVE_DESC);
+ // toolBarManager.add(action);
+ // toolBarManager.update(true);
+ // // section.setTextClient(toolbar);
+ // }
private class RemoveMembershipAction extends Action {
private static final long serialVersionUID = -1337713097184522588L;
package org.argeo.cms.e4.users;
-import org.argeo.cms.CmsException;
+import org.argeo.cms.e4.CmsE4Utils;
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;
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);
- }
+ String editorId = getEditorId(user);
+ CmsE4Utils.openEditor(partService, editorId, LdapAttrs.uid.name(), user.getName());
}
protected String getEditorId(User user) {
import org.argeo.node.NodeConstants;
import org.eclipse.e4.ui.di.Focus;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.DND;
private UserAdminListener listener;
@PostConstruct
- public void createPartControl(Composite parent) {
+ public void createPartControl(Composite parent, ESelectionService selectionService) {
parent.setLayout(EclipseUiUtils.noSpaceGridLayout());
// Define the displayed columns
// Links
userViewer = userTableViewerCmp.getTableViewer();
userViewer.addDoubleClickListener(new UserTableDefaultDClickListener(partService));
+ userViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ IStructuredSelection selection = (IStructuredSelection) event.getSelection();
+ selectionService.setSelection(selection.toList());
+ }
+ });
// getViewSite().setSelectionProvider(userViewer);
// Really?
*/
package org.argeo.cms.e4.users.handlers;
-import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import javax.inject.Inject;
+import javax.inject.Named;
+import org.argeo.cms.e4.users.GroupsView;
import org.argeo.cms.e4.users.UserAdminWrapper;
import org.argeo.cms.util.UserAdminUtils;
+import org.eclipse.e4.core.di.annotations.CanExecute;
import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.services.IServiceConstants;
import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.widgets.Display;
import org.osgi.service.useradmin.Group;
import org.osgi.service.useradmin.UserAdmin;
/** Delete the selected groups */
public class DeleteGroups {
-// public final static String ID = WorkbenchUiPlugin.PLUGIN_ID + ".deleteGroups";
+ // public final static String ID = WorkbenchUiPlugin.PLUGIN_ID +
+ // ".deleteGroups";
/* DEPENDENCY INJECTION */
@Inject
private UserAdminWrapper userAdminWrapper;
-
+
@Inject
ESelectionService selectionService;
@SuppressWarnings("unchecked")
@Execute
- public Object execute() {
- ISelection selection = null;// HandlerUtil.getCurrentSelection(event);
- if (selection.isEmpty())
- return null;
+ public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart part, ESelectionService selectionService) {
+ // ISelection selection = null;// HandlerUtil.getCurrentSelection(event);
+ // if (selection.isEmpty())
+ // return null;
+ //
+ // List<Group> groups = new ArrayList<Group>();
+ // Iterator<Group> it = ((IStructuredSelection) selection).iterator();
+
+ List<Group> selection = (List<Group>) selectionService.getSelection();
+ if (selection == null)
+ return;
- List<Group> groups = new ArrayList<Group>();
- Iterator<Group> it = ((IStructuredSelection) selection).iterator();
StringBuilder builder = new StringBuilder();
- while (it.hasNext()) {
- Group currGroup = it.next();
+ for (Group group : selection) {
+ Group currGroup = group;
String groupName = UserAdminUtils.getUserLocalId(currGroup.getName());
// TODO add checks
builder.append(groupName).append("; ");
- groups.add(currGroup);
+ // groups.add(currGroup);
}
if (!MessageDialog.openQuestion(Display.getCurrent().getActiveShell(), "Delete Groups", "Are you sure that you "
+ "want to delete these groups?\n" + builder.substring(0, builder.length() - 2)))
- return null;
+ return;
userAdminWrapper.beginTransactionIfNeeded();
UserAdmin userAdmin = userAdminWrapper.getUserAdmin();
-// IWorkbenchPage iwp = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
- for (Group group : groups) {
+ // IWorkbenchPage iwp =
+ // HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
+ for (Group group : selection) {
String groupName = group.getName();
// TODO find a way to close the editor cleanly if opened. Cannot be
// done through the UserAdminListeners, it causes a
// java.util.ConcurrentModificationException because disposing the
// editor unregisters and disposes the listener
-// IEditorPart part = iwp.findEditor(new UserEditorInput(groupName));
-// if (part != null)
-// iwp.closeEditor(part, false);
+ // IEditorPart part = iwp.findEditor(new UserEditorInput(groupName));
+ // if (part != null)
+ // iwp.closeEditor(part, false);
userAdmin.removeRole(groupName);
}
userAdminWrapper.commitOrNotifyTransactionStateChange();
// Update the view
- for (Group group : groups) {
+ for (Group group : selection) {
userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_REMOVED, group));
}
- return null;
+ // return null;
}
- /* DEPENDENCY INJECTION */
- public void setUserAdminWrapper(UserAdminWrapper userAdminWrapper) {
- this.userAdminWrapper = userAdminWrapper;
+ @CanExecute
+ public boolean canExecute(@Named(IServiceConstants.ACTIVE_PART) MPart part, ESelectionService selectionService) {
+ return part.getObject() instanceof GroupsView && selectionService.getSelection() != null;
}
+
+ /* DEPENDENCY INJECTION */
+ // public void setUserAdminWrapper(UserAdminWrapper userAdminWrapper) {
+ // this.userAdminWrapper = userAdminWrapper;
+ // }
}
*/
package org.argeo.cms.e4.users.handlers;
-import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import javax.inject.Inject;
+import javax.inject.Named;
import org.argeo.cms.e4.users.UserAdminWrapper;
+import org.argeo.cms.e4.users.UsersView;
import org.argeo.cms.util.UserAdminUtils;
+import org.eclipse.e4.core.di.annotations.CanExecute;
import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.widgets.Display;
import org.osgi.service.useradmin.User;
import org.osgi.service.useradmin.UserAdmin;
@SuppressWarnings("unchecked")
@Execute
- public Object execute() {
- ISelection selection = null;// HandlerUtil.getCurrentSelection(event);
- if (selection.isEmpty())
- return null;
+ public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart part, ESelectionService selectionService) {
+ // ISelection selection = null;// HandlerUtil.getCurrentSelection(event);
+ // if (selection.isEmpty())
+ // return null;
+ List<User> selection = (List<User>) selectionService.getSelection();
+ if (selection == null)
+ return;
- Iterator<User> it = ((IStructuredSelection) selection).iterator();
- List<User> users = new ArrayList<User>();
+// Iterator<User> it = ((IStructuredSelection) selection).iterator();
+// List<User> users = new ArrayList<User>();
StringBuilder builder = new StringBuilder();
- while (it.hasNext()) {
- User currUser = it.next();
+ for(User user:selection) {
+ User currUser = user;
+// User currUser = it.next();
String userName = UserAdminUtils.getUserLocalId(currUser.getName());
if (UserAdminUtils.isCurrentUser(currUser)) {
MessageDialog.openError(Display.getCurrent().getActiveShell(), "Deletion forbidden",
"You cannot delete your own user this way.");
- return null;
+ return;
}
builder.append(userName).append("; ");
- users.add(currUser);
+// users.add(currUser);
}
if (!MessageDialog.openQuestion(Display.getCurrent().getActiveShell(), "Delete Users",
"Are you sure that you want to delete these users?\n" + builder.substring(0, builder.length() - 2)))
- return null;
+ return;
userAdminWrapper.beginTransactionIfNeeded();
UserAdmin userAdmin = userAdminWrapper.getUserAdmin();
// IWorkbenchPage iwp =
// HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
- for (User user : users) {
+ for (User user : selection) {
String userName = user.getName();
// TODO find a way to close the editor cleanly if opened. Cannot be
// done through the UserAdminListeners, it causes a
}
userAdminWrapper.commitOrNotifyTransactionStateChange();
- for (User user : users) {
+ for (User user : selection) {
userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_REMOVED, user));
}
- return null;
}
- /* DEPENDENCY INJECTION */
- public void setUserAdminWrapper(UserAdminWrapper userAdminWrapper) {
- this.userAdminWrapper = userAdminWrapper;
+ @CanExecute
+ public boolean canExecute(@Named(IServiceConstants.ACTIVE_PART) MPart part, ESelectionService selectionService) {
+ return part.getObject() instanceof UsersView && selectionService.getSelection() != null;
}
}