usr/src/java/vpanels/app/usermgr/com/oracle/solaris/vp/panels/usermgr/client/swing/UserMgrBasicControl.java
--- a/usr/src/java/vpanels/app/usermgr/com/oracle/solaris/vp/panels/usermgr/client/swing/UserMgrBasicControl.java Thu Apr 26 00:14:30 2012 -0400
+++ b/usr/src/java/vpanels/app/usermgr/com/oracle/solaris/vp/panels/usermgr/client/swing/UserMgrBasicControl.java Fri Apr 27 00:52:26 2012 -0400
@@ -25,9 +25,13 @@
package com.oracle.solaris.vp.panels.usermgr.client.swing;
+
+import java.util.List;
+import java.util.Map;
+import com.oracle.solaris.rad.usermgr.*;
import com.oracle.solaris.vp.panel.common.action.*;
-import com.oracle.solaris.vp.panel.common.control.Control;
-import com.oracle.solaris.vp.panel.swing.control.SettingsControl;
+import com.oracle.solaris.vp.panel.common.control.*;
+import com.oracle.solaris.vp.panel.swing.control.*;
import com.oracle.solaris.vp.util.misc.finder.Finder;
public class UserMgrBasicControl
@@ -36,21 +40,19 @@
//
// Static data
//
- public static final String ID = "basic";
- public static final String NAME = Finder.getString("usermgr.basic.name");
+ public static final String ID = "usermgr";
+ public static final String PARAM_USER = "user";
+ private UserMgrPanelDescriptor descriptor;
//
// Instance data
//
- private UserMgrControl parent;
+ private UserManagedObject userMO;
- //
- // Constructor
- //
- public UserMgrBasicControl(UserMgrControl parent) {
- super(ID, NAME, parent.getPanelDescriptor());
- this.parent = parent;
+ public UserMgrBasicControl(UserMgrPanelDescriptor descriptor) {
+ super(ID, PARAM_USER, descriptor);
+ this.descriptor = descriptor;
}
//
@@ -58,11 +60,17 @@
//
@Override
+ public boolean isBrowsable() {
+ // This control requires init parameters
+ return false;
+ }
+
+ @Override
protected boolean isChanged() {
- // Save unconditionally for now
return true;
}
+
@Override
protected UnsavedChangesAction getUnsavedChangesAction() {
// Always save changes on the client
@@ -74,32 +82,41 @@
ActionFailedException, ActionUnauthorizedException {
UserMgrBasicPanel panel = getComponent();
- UserManagedObject umo = parent.getUserManagedObject();
+ UserManagedObject umo = getUserManagedObject();
setPropertyChangeIgnore(true);
- try {
- // Set the values from the panel
- if (panel.getUserDescProperty().isChanged()) {
- String userdesc = panel.getUserDescProperty().getValue();
- UserMgrUtils.validateUserDesc(userdesc);
- umo.getUserDescProperty().setValue(userdesc);
- }
+
+ // Set changed values from the panel
+ if (panel.getGroupProperty().isChanged()) {
+ umo.getGroupIdProperty().setValue(toGid(
+ panel.getGroupProperty().getValue()));
+ }
+
+ if (panel.getShellProperty().isChanged()) {
+ umo.getShellProperty().setValue(
+ panel.getShellProperty().getValue());
+ }
- if (panel.getIsAdminProperty().isChanged()) {
- boolean admin = panel.getIsAdminProperty().getValue();
- umo.getIsAdminProperty().setValue(admin);
- }
+ // Set the values from the panel
+ if (panel.getDescProperty().isChanged()) {
+ String userdesc = panel.getDescProperty().getValue();
+ UserMgrUtils.validateUserDesc(userdesc);
+ umo.getUserDescProperty().setValue(userdesc);
+ }
- if (panel.getPassProperty().isChanged() ||
- panel.getPassConfirmProperty().isChanged()) {
- char[] pass1 = panel.getPassProperty().getValue();
- char[] pass2 = panel.getPassConfirmProperty().getValue();
- UserMgrUtils.validatePassword(umo.isNewUser(), pass1, pass2);
- umo.getPassProperty().setValue(pass1);
- }
- } finally {
- setPropertyChangeIgnore(false);
- }
+ if (panel.getHomeProperty().isChanged()) {
+ String homeDir = panel.getHomeProperty().getValue();
+ UserMgrUtils.validateHomeDir(homeDir);
+ umo.getHomeDirProperty().setValue(homeDir);
+ }
+
+ if (panel.getPassProperty().isChanged() ||
+ panel.getPassConfirmProperty().isChanged()) {
+ char[] pass1 = panel.getPassProperty().getValue();
+ char[] pass2 = panel.getPassConfirmProperty().getValue();
+ UserMgrUtils.validatePassword(umo.isNewUser(), pass1, pass2);
+ umo.getPassProperty().setValue(pass1);
+ }
}
//
@@ -108,16 +125,72 @@
@Override
protected UserMgrBasicPanel createComponent() {
- UserMgrBasicPanel panel = new UserMgrBasicPanel();
+ UserMgrBasicPanel panel = new UserMgrBasicPanel(descriptor);
return panel;
}
@Override
protected void initComponent() {
UserMgrBasicPanel panel = getComponent();
- UserManagedObject umo = parent.getUserManagedObject();
+ UserManagedObject umo = getUserManagedObject();
// Initialize the panel
- panel.init(umo);
+ panel.init(getPanelDescriptor(), umo);
+ }
+
+ private long toGid(String gName) {
+ List<Group> groups = getPanelDescriptor().getGroups();
+ for (Group g : groups) {
+ if (gName.equals(g.getGroupName()))
+ return (g.getGroupID());
+ }
+ return 1L;
+ }
+
+ @Override
+ public void start(Navigator navigator, Map<String, String> parameters)
+ throws NavigationAbortedException, InvalidParameterException,
+ NavigationFailedException {
+
+ String param = getParameter(parameters, PARAM_USER);
+ UserManagedObject umo =
+ getPanelDescriptor().getUserManagedObject(param);
+ if (umo == null) {
+ throw new InvalidParameterException(getId(), PARAM_USER, param);
+ }
+
+ setUserManagedObject(umo);
+
+ super.start(navigator, parameters);
+ }
+
+ @Override
+ public void stop(boolean isCancel) throws NavigationAbortedException {
+ super.stop(isCancel);
+ setUserManagedObject(null);
+ }
+
+ //
+ // UserMgrControl methods
+ //
+
+ public UserManagedObject getUserManagedObject() {
+ return userMO;
+ }
+
+ //
+ // Private methods
+ //
+
+ private void setUserManagedObject(UserManagedObject umo) {
+ this.userMO = umo;
+ setName(umo == null ? null : umo.getName());
+ }
+
+ /**
+ * Clear the advanced settings change state.
+ */
+ public void clearChanges() {
+ getComponent().clearChanges();
}
}