0.25f, editorArea);
left.addView(UsersView.ID);
left.addView(GroupsView.ID);
-
- // IFolderLayout right = layout.createFolder("right", IPageLayout.RIGHT,
- // 0.70f, editorArea);
- // right.addView(GroupsView.ID);
}
}
--- /dev/null
+package org.argeo.security.ui.admin.internal;
+
+import org.eclipse.swt.widgets.Display;
+import org.osgi.service.useradmin.UserAdminEvent;
+import org.osgi.service.useradmin.UserAdminListener;
+
+/** Convenience class to insure the call to refresh is done in the UI thread */
+public abstract class UiUserAdminListener implements UserAdminListener {
+
+ private final Display display;
+
+ public UiUserAdminListener(Display display) {
+ this.display = display;
+ }
+
+ @Override
+ public void roleChanged(final UserAdminEvent event) {
+ display.asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ roleChangedToUiThread(event);
+ }
+ });
+ }
+
+ public abstract void roleChangedToUiThread(UserAdminEvent event);
+}
@Override
public void initialize(IManagedForm form) {
super.initialize(form);
- listener = editor.new MainInfoListener(this);
+ listener = editor.new MainInfoListener(parent.getDisplay(), this);
userAdminWrapper.addListener(listener);
}
Section section = tk.createSection(parent, Section.TITLE_BAR);
section.setLayoutData(EclipseUiUtils.fillAll());
- // Composite body = tk.createComposite(section, SWT.NONE);
Composite body = new Composite(section, SWT.NO_FOCUS);
section.setClient(body);
body.setLayoutData(EclipseUiUtils.fillAll());
LdifUsersTable userTableViewerCmp = createMemberPart(body, group);
- // create form part (controller)
SectionPart part = new GroupMembersPart(section, userTableViewerCmp,
group);
getManagedForm().addPart(part);
public LdifUsersTable createMemberPart(Composite parent, Group group) {
parent.setLayout(EclipseUiUtils.noSpaceGridLayout());
+
// Define the displayed columns
List<ColumnDefinition> columnDefs = new ArrayList<ColumnDefinition>();
columnDefs.add(new ColumnDefinition(new RoleIconLP(), "", 0, 24));
}
// Local viewers
-
private class MyUserTableViewer extends LdifUsersTable {
private static final long serialVersionUID = 8467999509931900367L;
@Override
public void initialize(IManagedForm form) {
super.initialize(form);
- listener = editor.new GroupChangeListener(GroupMembersPart.this);
+ listener = editor.new GroupChangeListener(userViewer.getDisplay(), GroupMembersPart.this);
userAdminWrapper.addListener(listener);
}
@Override
public void drop(DropTargetEvent event) {
- // TODO Is there an opportunity to perform ceck before?
+ // TODO Is there an opportunity to perform the check before?
String newUserName = (String) event.data;
UserAdmin myUserAdmin = userAdminWrapper.getUserAdmin();
import org.argeo.jcr.ArgeoNames;
import org.argeo.osgi.useradmin.LdifName;
import org.argeo.security.ui.admin.SecurityAdminPlugin;
+import org.argeo.security.ui.admin.internal.UiUserAdminListener;
import org.argeo.security.ui.admin.internal.UserAdminWrapper;
import org.argeo.security.ui.admin.internal.providers.CommonNameLP;
import org.argeo.security.ui.admin.internal.providers.DomainNameLP;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.part.ViewPart;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.service.useradmin.Role;
userViewer.addDragSupport(operations, tt, new UserDragListener(
userViewer));
+ // // Register a useradmin listener
+ // listener = new UserAdminListener() {
+ // @Override
+ // public void roleChanged(UserAdminEvent event) {
+ // if (userViewer != null && !userViewer.getTable().isDisposed())
+ // refresh();
+ // }
+ // };
+ // userAdminWrapper.addListener(listener);
+ // }
+
// Register a useradmin listener
- listener = new UserAdminListener() {
- @Override
- public void roleChanged(UserAdminEvent event) {
- if (userViewer != null && !userViewer.getTable().isDisposed())
- refresh();
- }
- };
+ listener = new MyUiUAListener(parent.getDisplay());
userAdminWrapper.addListener(listener);
}
+ private class MyUiUAListener extends UiUserAdminListener {
+ public MyUiUAListener(Display display) {
+ super(display);
+ }
+
+ @Override
+ public void roleChangedToUiThread(UserAdminEvent event) {
+ if (userViewer != null && !userViewer.getTable().isDisposed())
+ refresh();
+ }
+ }
+
private class MyUserTableViewer extends LdifUsersTable {
private static final long serialVersionUID = 8467999509931900367L;
import org.argeo.cms.util.useradmin.UserAdminUtils;
import org.argeo.osgi.useradmin.LdifName;
import org.argeo.security.ui.admin.SecurityAdminPlugin;
+import org.argeo.security.ui.admin.internal.UiUserAdminListener;
import org.argeo.security.ui.admin.internal.UserAdminWrapper;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.osgi.service.useradmin.User;
import org.osgi.service.useradmin.UserAdmin;
import org.osgi.service.useradmin.UserAdminEvent;
-import org.osgi.service.useradmin.UserAdminListener;
/** Editor for a user, might be a user or a group. */
public class UserEditor extends FormEditor {
username = ((UserEditorInput) getEditorInput()).getUsername();
user = (User) userAdmin.getRole(username);
- listener = new NameChangeListener(user);
+ listener = new NameChangeListener(site.getShell().getDisplay(), user);
userAdminWrapper.addListener(listener);
updateEditorTitle(null);
}
// CONTROLERS FOR THIS EDITOR AND ITS PAGES
- private class NameChangeListener implements UserAdminListener {
+ private class NameChangeListener extends UiUserAdminListener {
private final User user;
- public NameChangeListener(User user) {
+ public NameChangeListener(Display display, User user) {
+ super(display);
this.user = user;
}
@Override
- public void roleChanged(UserAdminEvent event) {
+ public void roleChangedToUiThread(UserAdminEvent event) {
Role changedRole = event.getRole();
if (changedRole == null || changedRole.equals(user))
updateEditorTitle(null);
}
}
- class MainInfoListener implements UserAdminListener {
+ class MainInfoListener extends UiUserAdminListener {
private final AbstractFormPart part;
- public MainInfoListener(AbstractFormPart part) {
+ public MainInfoListener(Display display, AbstractFormPart part) {
+ super(display);
this.part = part;
}
@Override
- public void roleChanged(UserAdminEvent event) {
+ public void roleChangedToUiThread(UserAdminEvent event) {
// Rollback
if (event.getRole() == null)
part.markStale();
}
}
- class GroupChangeListener implements UserAdminListener {
+ class GroupChangeListener extends UiUserAdminListener {
private final AbstractFormPart part;
- public GroupChangeListener(AbstractFormPart part) {
+ public GroupChangeListener(Display display, AbstractFormPart part) {
+ super(display);
this.part = part;
}
@Override
- public void roleChanged(UserAdminEvent event) {
+ public void roleChangedToUiThread(UserAdminEvent event) {
// always mark as stale
part.markStale();
}
@Override
public void initialize(IManagedForm form) {
super.initialize(form);
- listener = editor.new MainInfoListener(this);
+ listener = editor.new MainInfoListener(parent.getDisplay(),
+ this);
userAdminWrapper.addListener(listener);
}
@Override
public void initialize(IManagedForm form) {
super.initialize(form);
- listener = editor.new GroupChangeListener(this);
+ listener = editor.new GroupChangeListener(parent.getDisplay(),
+ this);
userAdminWrapper.addListener(listener);
}
import org.argeo.jcr.ArgeoNames;
import org.argeo.osgi.useradmin.LdifName;
import org.argeo.security.ui.admin.SecurityAdminPlugin;
+import org.argeo.security.ui.admin.internal.UiUserAdminListener;
import org.argeo.security.ui.admin.internal.UserAdminWrapper;
import org.argeo.security.ui.admin.internal.providers.CommonNameLP;
import org.argeo.security.ui.admin.internal.providers.DomainNameLP;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.part.ViewPart;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.service.useradmin.Role;
userViewer));
// Register a useradmin listener
- listener = new UserAdminListener() {
- @Override
- public void roleChanged(UserAdminEvent event) {
- if (userViewer != null && !userViewer.getTable().isDisposed())
- refresh();
- }
- };
+ listener = new MyUiUAListener(parent.getDisplay());
userAdminWrapper.addListener(listener);
}
+ private class MyUiUAListener extends UiUserAdminListener {
+ public MyUiUAListener(Display display) {
+ super(display);
+ }
+
+ @Override
+ public void roleChangedToUiThread(UserAdminEvent event) {
+ if (userViewer != null && !userViewer.getTable().isDisposed())
+ refresh();
+ }
+ }
+
private class MyUserTableViewer extends LdifUsersTable {
private static final long serialVersionUID = 8467999509931900367L;