package org.argeo.security.ui.admin.internal.commands;
import java.util.Dictionary;
+import java.util.List;
+import org.argeo.ArgeoException;
import org.argeo.eclipse.ui.EclipseUiUtils;
import org.argeo.eclipse.ui.dialogs.ErrorFeedback;
import org.argeo.jcr.ArgeoNames;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
private UserAdminWrapper userAdminWrapper;
private UserAdmin userAdmin;
- // TODO implement a dynamic choice of the base dn
- private String getDn(String cn) {
- return "cn=" + cn + ",dc=example,dc=com";
- }
-
public Object execute(ExecutionEvent event) throws ExecutionException {
NewGroupWizard newGroupWizard = new NewGroupWizard();
WizardDialog dialog = new WizardDialog(
// End user fields
private Text dNameTxt, commonNameTxt, descriptionTxt;
+ private Combo baseDnCmb;
public NewGroupWizard() {
}
dNameTxt = EclipseUiUtils.createGridLT(bodyCmp,
"Distinguished name", this);
dNameTxt.setEnabled(false);
+
+ baseDnCmb = createGridLC(bodyCmp, "Base DN", this);
+ initialiseDnCmb(baseDnCmb);
+ baseDnCmb.addModifyListener(new ModifyListener() {
+ private static final long serialVersionUID = -1435351236582736843L;
+
+ @Override
+ public void modifyText(ModifyEvent event) {
+ String name = commonNameTxt.getText();
+ dNameTxt.setText(getDn(name));
+ }
+ });
+
commonNameTxt = EclipseUiUtils.createGridLT(bodyCmp,
"Common name", this);
commonNameTxt.addModifyListener(new ModifyListener() {
commonNameTxt.setFocus();
}
}
+
+ private String getDn(String cn) {
+ return "cn=" + cn + ",ou=groups," + baseDnCmb.getText();
+ }
+
+ private void initialiseDnCmb(Combo combo) {
+ List<String> dns = userAdminWrapper.getKnownBaseDns(true);
+ if (dns.isEmpty())
+ throw new ArgeoException(
+ "No writable base dn found. Cannot create user");
+ combo.setItems(dns.toArray(new String[0]));
+ // combo.select(0);
+ }
+
+ }
+
+ private Combo createGridLC(Composite parent, String label,
+ ModifyListener modifyListener) {
+ Label lbl = new Label(parent, SWT.LEAD);
+ lbl.setText(label);
+ lbl.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
+ Combo combo = new Combo(parent, SWT.LEAD | SWT.BORDER | SWT.READ_ONLY);
+ combo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ if (modifyListener != null)
+ combo.addModifyListener(modifyListener);
+ return combo;
}
/* DEPENDENCY INJECTION */