usr/src/java/vpanels/app/usermgr/com/oracle/solaris/vp/panels/usermgr/client/swing/UserMgrBasicPanel.java
changeset 847 a8e124b894b8
parent 811 c65c58b7a1f0
equal deleted inserted replaced
846:0a2af4721353 847:a8e124b894b8
    23  * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
    23  * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
    24  */
    24  */
    25 
    25 
    26 package com.oracle.solaris.vp.panels.usermgr.client.swing;
    26 package com.oracle.solaris.vp.panels.usermgr.client.swing;
    27 
    27 
    28 import java.awt.EventQueue;
    28 import java.awt.*;
       
    29 import java.awt.event.*;
    29 import javax.swing.*;
    30 import javax.swing.*;
       
    31 import javax.swing.border.Border;
    30 import com.oracle.solaris.vp.panel.swing.view.ChangeIndicator;
    32 import com.oracle.solaris.vp.panel.swing.view.ChangeIndicator;
    31 import com.oracle.solaris.vp.util.misc.ChangeableAggregator;
    33 import com.oracle.solaris.vp.util.misc.ChangeableAggregator;
    32 import com.oracle.solaris.vp.util.misc.finder.Finder;
    34 import com.oracle.solaris.vp.util.misc.finder.Finder;
    33 import com.oracle.solaris.vp.util.misc.property.*;
    35 import com.oracle.solaris.vp.util.misc.property.*;
       
    36 import com.oracle.solaris.rad.usermgr.*;
    34 import com.oracle.solaris.vp.util.swing.*;
    37 import com.oracle.solaris.vp.util.swing.*;
    35 import com.oracle.solaris.vp.util.swing.layout.*;
    38 import com.oracle.solaris.vp.util.swing.layout.*;
    36 import com.oracle.solaris.vp.util.swing.property.*;
    39 import com.oracle.solaris.vp.util.swing.property.*;
    37 
    40 
       
    41 /**
       
    42  * User Manager Basic panel
       
    43  */
    38 @SuppressWarnings({"serial"})
    44 @SuppressWarnings({"serial"})
    39 public class UserMgrBasicPanel extends SettingsPanel {
    45 public class UserMgrBasicPanel extends SettingsPanel
       
    46     implements ActionListener {
       
    47     private static final String ACTION_ADV_SETTINGS = "settings";
       
    48 
    40     //
    49     //
    41     // Inner class
    50     // Inner class
    42     //
    51     //
       
    52     private JLabel nameLabel;
       
    53     private JLabel nameField;
       
    54     private JLabel uidLabel;
       
    55     private JLabel uidField;
       
    56     private JLabel descLabel;
       
    57     private JTextField findField;
       
    58     private JTextField descField;
       
    59     private JComboBox groupCombo;
       
    60     private HintTextField homeField;
       
    61     private JComboBox shellCombo;
       
    62     private UserManagedObject umo;
       
    63     private AdvancedSettingsDialog advDialog = null;
       
    64     private ActionString actString = null;
       
    65     ChangeIndicator settingsChange;
       
    66     String changepassStr;
    43 
    67 
    44     public class PasswordPanel extends LinkCollapsiblePane {
    68     public class PasswordPanel extends LinkCollapsiblePane {
       
    69 
    45 	//
    70 	//
    46 	// Instance data
    71 	// Instance data
    47 	//
    72 	//
    48 
    73 
    49 	private JLabel passLabel;
    74 	private JLabel passLabel;
    61 	//
    86 	//
    62 
    87 
    63 	public PasswordPanel() {
    88 	public PasswordPanel() {
    64 	    super(GUIUtil.getHalfGap());
    89 	    super(GUIUtil.getHalfGap());
    65 
    90 
       
    91 	    changepassStr = Finder.getString("usermgr.basic.label.changepass");
       
    92 
    66 	    int width = GUIUtil.getTextFieldWidth();
    93 	    int width = GUIUtil.getTextFieldWidth();
    67 
    94 	    actString = new ActionString("usermgr.basic.label.pass");
    68 	    passLabel = new JLabel(
    95             passLabel = new JLabel(actString.getString());
    69 		Finder.getString("usermgr.basic.label.pass"));
    96             passLabel.setDisplayedMnemonic(actString.getMnemonic());
       
    97 
    70 	    passField = new JPasswordField(width);
    98 	    passField = new JPasswordField(width);
    71 	    new PasswordFieldPropertySynchronizer(passProperty, passField);
    99 	    new PasswordFieldPropertySynchronizer(passProperty, passField);
    72 	    ChangeIndicator passChange = new ChangeIndicator();
   100 	    ChangeIndicator passChange = new ChangeIndicator();
    73 	    passProperty.addChangeListener(passChange);
   101 	    passProperty.addChangeListener(passChange);
    74 
   102 	    passLabel.setLabelFor(passField);
    75 	    passConfirmLabel = new JLabel(
   103 
    76 		Finder.getString("usermgr.basic.label.passconfirm"));
   104 	    actString = new ActionString("usermgr.basic.label.passconfirm");
       
   105             passConfirmLabel = new JLabel(actString.getString());
       
   106             passConfirmLabel.setDisplayedMnemonic(actString.getMnemonic());
       
   107 
    77 	    passConfirmField = new JPasswordField(width);
   108 	    passConfirmField = new JPasswordField(width);
    78 	    new PasswordFieldPropertySynchronizer(
   109 	    new PasswordFieldPropertySynchronizer(
    79 		passConfirmProperty, passConfirmField);
   110 		passConfirmProperty, passConfirmField);
    80 	    ChangeIndicator passConfirmChange = new ChangeIndicator();
   111 	    ChangeIndicator passConfirmChange = new ChangeIndicator();
    81 	    passConfirmProperty.addChangeListener(passConfirmChange);
   112 	    passConfirmProperty.addChangeListener(passConfirmChange);
    82 
   113 
       
   114 	    passConfirmLabel.setLabelFor(passConfirmField);
       
   115 
    83 	    // Create the form and the form elements
   116 	    // Create the form and the form elements
    84 	    JPanel formPanel = new JPanel();
   117 	    JPanel formPanel = new JPanel();
    85 	    formPanel.setOpaque(false);
   118 	    formPanel.setOpaque(false);
    86 	    Form form = new Form(formPanel, VerticalAnchor.TOP);
   119 	    Form form = new Form(formPanel, VerticalAnchor.TOP);
    87 
   120 
   117 	    }
   150 	    }
   118 	}
   151 	}
   119 
   152 
   120 	@Override
   153 	@Override
   121 	public String getLinkText(boolean collapsed) {
   154 	public String getLinkText(boolean collapsed) {
   122 	    return Finder.getString("usermgr.basic.label.changepass");
   155 	    return (changepassStr);
   123 	}
   156 	}
   124 
   157 
   125 	//
   158 	//
   126 	// PasswordPanel methods
   159 	// PasswordPanel methods
   127 	//
   160 	//
   139     // Instance data
   172     // Instance data
   140     //
   173     //
   141     private ChangeableAggregator aggregator;
   174     private ChangeableAggregator aggregator;
   142     private PasswordPanel passPanel;
   175     private PasswordPanel passPanel;
   143 
   176 
   144     private JLabel userNameLabel;
   177     private MutableProperty<String> descProperty = new StringProperty();
   145     private JLabel userNameValue;
   178     private MutableProperty<String> groupProperty = new StringProperty();
   146     private JLabel userDescLabel;
   179     private MutableProperty<String> homeProperty = new StringProperty();
   147 
   180     private MutableProperty<String> shellProperty = new StringProperty();
   148     private MutableProperty<String> userDescProperty =
   181     private MutableProperty<Boolean> settingsProperty = new BooleanProperty();
   149 	new StringProperty();
   182 
   150     private MutableProperty<Boolean> isAdminProperty =
   183     private UserMgrPanelDescriptor descriptor;
   151 	new BooleanProperty();
       
   152 
   184 
   153     //
   185     //
   154     // Constructors
   186     // Constructors
   155     //
   187     //
   156 
   188 
   157     public UserMgrBasicPanel() {
   189     public UserMgrBasicPanel(UserMgrPanelDescriptor descriptor) {
       
   190         this.descriptor = descriptor;
   158 	JPanel form = createForm();
   191 	JPanel form = createForm();
   159 	setContent(form, false, false);
   192 	setContent(form, false, false);
   160 
   193 
   161         aggregator = getChangeableAggregator();
   194         aggregator = getChangeableAggregator();
   162 	aggregator.addChangeables(userDescProperty);
   195 	aggregator.addChangeables(descProperty);
   163 	aggregator.addChangeables(isAdminProperty);
   196 	aggregator.addChangeables(groupProperty);
       
   197 	aggregator.addChangeables(homeProperty);
       
   198 	aggregator.addChangeables(shellProperty);
       
   199 	aggregator.addChangeables(settingsProperty);
   164 	aggregator.addChangeables(getPassProperty());
   200 	aggregator.addChangeables(getPassProperty());
   165 	aggregator.addChangeables(getPassConfirmProperty());
   201 	aggregator.addChangeables(getPassConfirmProperty());
   166     }
   202     }
   167 
   203 
   168     //
   204     //
   169     // BasicUserMgrPanel methods
   205     // UserMgrBasicPanel methods
   170     //
   206     //
   171 
   207 
   172     public MutableProperty<String> getUserDescProperty() {
   208     public MutableProperty<String> getDescProperty() {
   173 	return userDescProperty;
   209 	return descProperty;
   174     }
   210     }
   175 
   211 
   176     public MutableProperty<Boolean> getIsAdminProperty() {
   212     public MutableProperty<String> getGroupProperty() {
   177 	return isAdminProperty;
   213 	return groupProperty;
       
   214     }
       
   215 
       
   216     public MutableProperty<String> getHomeProperty() {
       
   217 	return homeProperty;
       
   218     }
       
   219 
       
   220     public MutableProperty<String> getShellProperty() {
       
   221 	return shellProperty;
       
   222     }
       
   223 
       
   224     public MutableProperty<Boolean> getSettingsProperty() {
       
   225 	return settingsProperty;
   178     }
   226     }
   179 
   227 
   180     public MutableProperty<char[]> getPassProperty() {
   228     public MutableProperty<char[]> getPassProperty() {
   181 	return passPanel.passProperty;
   229 	return passPanel.passProperty;
   182     }
   230     }
   183 
   231 
   184     public MutableProperty<char[]> getPassConfirmProperty() {
   232     public MutableProperty<char[]> getPassConfirmProperty() {
   185 	return passPanel.passConfirmProperty;
   233 	return passPanel.passConfirmProperty;
   186     }
   234     }
   187 
   235 
   188     public void init(UserManagedObject umo) {
   236     public void init(UserMgrPanelDescriptor paneldesc, UserManagedObject umo) {
   189 	// Sanity check -- the UI should be updated only on the event thread
   237 	// Sanity check -- the UI should be updated only on the event thread
   190 	assert EventQueue.isDispatchThread();
   238 	assert EventQueue.isDispatchThread();
   191 
   239 
   192 	// Toggle the labels for roles
   240 
   193 	initLabels(umo.isUserNormal());
   241 	this.umo = umo;
       
   242 	descriptor = paneldesc;
   194 
   243 
   195 	// Set the current and saved values for each property
   244 	// Set the current and saved values for each property
   196 	userNameValue.setText(umo.getName());
   245 	nameField.setText(umo.getName());
   197 
   246 	Long uidValue = new Long(umo.getUserId());
   198 	userDescProperty.update(
   247 	uidField.setText(uidValue.toString());
   199 	    umo.getUserDescProperty().getSavedValue(), false);
   248 
   200 	isAdminProperty.update(umo.getIsAdminProperty().getSavedValue(), false);
   249 	descProperty.update(umo.getUserDescProperty().getSavedValue(), false);
       
   250 	descField.setText(umo.getUserDescription());
       
   251 
       
   252 	// group
       
   253 	long gid = umo.getGroupId();
       
   254 	String gname = null;
       
   255 	long savedGid = umo.getGroupIdProperty().getSavedValue();
       
   256 	String savedGname = null;
       
   257 	if (groupCombo.getItemCount() > 0)
       
   258 	    groupCombo.removeAllItems();
       
   259 	for (Group g : descriptor.getGroups()) {
       
   260 	    groupCombo.addItem(g.getGroupName());
       
   261 	    if (gid == g.getGroupID())
       
   262 		gname = g.getGroupName();
       
   263 	    if (savedGid == g.getGroupID())
       
   264 		savedGname = g.getGroupName();
       
   265 	}
       
   266 	groupProperty.update(savedGname, false);
       
   267 	groupCombo.setSelectedItem(gname);
       
   268 
       
   269 	// homedir
       
   270  	if (!umo.isNewUser()) {
       
   271 	    homeField.setText(umo.getHomedir());
       
   272  	}
       
   273 	homeProperty.update(umo.getHomeDirProperty().getSavedValue(), false);
       
   274 
       
   275 	// shell
       
   276 	if (shellCombo.getItemCount() > 0)
       
   277 	    shellCombo.removeAllItems();
       
   278 	for (String s : descriptor.getShells())
       
   279 	    shellCombo.addItem(s);
       
   280 	shellProperty.update(umo.getShellProperty().getSavedValue(), false);
       
   281 	shellCombo.setSelectedItem(umo.getShell());
       
   282 
       
   283 	// Password
   201 	getPassProperty().update(umo.getPassProperty().getSavedValue(), false);
   284 	getPassProperty().update(umo.getPassProperty().getSavedValue(), false);
   202 	getPassConfirmProperty().update(
   285 	getPassConfirmProperty().update(
   203 	    umo.getPassProperty().getSavedValue(), false);
   286 	    umo.getPassProperty().getSavedValue(), false);
   204 
   287 
   205 	passPanel.setCollapsed(!getPassProperty().isChanged());
   288 	if (umo.hasPassword()) {
       
   289 	    changepassStr = Finder.getString("usermgr.basic.label.changepass");
       
   290 	} else {
       
   291 	    changepassStr = Finder.getString("usermgr.basic.label.initialpass");
       
   292 	}
       
   293 
       
   294 	passPanel.setCollapsed(true);
       
   295 
       
   296 	settingsProperty.update(false, true);
   206     }
   297     }
   207 
   298 
   208     //
   299     //
   209     // Private methods
   300     // Private methods
   210     //
   301     //
   211 
   302 
   212     private JPanel createForm() {
   303     private JPanel createForm() {
   213 	// Create the form elements
   304 	JPanel form = new JPanel(new GridBagLayout());
   214 	// User name - Readonly
   305 	GridBagConstraints gbc = new GridBagConstraints();
   215         userNameLabel = new JLabel();
   306 	int width = GUIUtil.getTextFieldWidth();
   216         userNameValue = new JLabel();
   307         int hGap = GUIUtil.getHalfGap();
   217 
   308 
   218 	// User Description
   309 	gbc.weightx = 1.0;
   219 	userDescLabel = new JLabel();
   310 	gbc.anchor = GridBagConstraints.LINE_START;
   220 	JTextField userDescField = GUIUtil.createTextField();
   311 	gbc.fill = GridBagConstraints.NONE;
       
   312 	gbc.insets = new Insets(0, 0, hGap, hGap);
       
   313 
       
   314 	// User name
       
   315 	actString = new ActionString("usermgr.basic.name." +
       
   316 	    descriptor.getTypeString());
       
   317         nameLabel = new JLabel(actString.getString());
       
   318 
       
   319 	nameField = new JLabel();
       
   320 
       
   321 	// Add to the layout
       
   322 	gbc.gridx = 0;
       
   323 	gbc.gridy = 0;
       
   324         form.add(nameLabel, gbc);
       
   325 	gbc.gridx = GridBagConstraints.RELATIVE;
       
   326         form.add(nameField, gbc);
       
   327 	form.add(new Spacer(), gbc);
       
   328 
       
   329 	// Description
       
   330 	actString = new ActionString("usermgr.basic.desc." +
       
   331 	    descriptor.getTypeString());
       
   332         descLabel = new JLabel(actString.getString());
       
   333         descLabel.setDisplayedMnemonic(actString.getMnemonic());
       
   334 	descField = GUIUtil.createTextField();
   221 	new TextComponentPropertySynchronizer<String, JTextField>(
   335 	new TextComponentPropertySynchronizer<String, JTextField>(
   222 	    userDescProperty, userDescField);
   336 	    descProperty, descField);
   223 	ChangeIndicator userDescChange = new ChangeIndicator();
   337 	ChangeIndicator descChange = new ChangeIndicator();
   224 	userDescProperty.addChangeListener(userDescChange);
   338 	descProperty.addChangeListener(descChange);
   225 
   339 
   226 	// Is Administrator
   340 	// Connect the label to the field
   227 	JCheckBox isAdminCheckBox = new JCheckBox(
   341 	descLabel.setLabelFor(descField);
   228 	    Finder.getString("usermgr.basic.label.enableadmin"));
   342 
   229 	new CheckBoxPropertySynchronizer(
   343 	// Add to the layout
   230 	    isAdminProperty, isAdminCheckBox);
   344 	gbc.gridx = 0;
   231 	ChangeIndicator isAdminChange = new ChangeIndicator();
   345 	gbc.gridy++; // next row
   232 	isAdminProperty.addChangeListener(isAdminChange);
   346         form.add(descLabel, gbc);
   233 	isAdminCheckBox.setSelected(false);
   347 	gbc.gridx = GridBagConstraints.RELATIVE;
   234 
   348         form.add(descField, gbc);
   235 	// Create the form and add the form elements
   349         form.add(descChange, gbc);
   236 	JPanel formPanel = new JPanel();
   350 
   237 	formPanel.setOpaque(false);
   351 	// User ID
   238 	Form form = new Form(formPanel, VerticalAnchor.TOP);
   352 	actString = new ActionString("usermgr.basic.uid." +
   239 
   353 	    descriptor.getTypeString());
       
   354         uidLabel = new JLabel(actString.getString());
       
   355 	uidField = new JLabel();
       
   356 
       
   357 	// Add to the layout
       
   358 	gbc.gridx = 0;
       
   359 	gbc.gridy++; // next row
       
   360         form.add(uidLabel, gbc);
       
   361 	gbc.gridx = GridBagConstraints.RELATIVE;
       
   362         form.add(uidField, gbc);
       
   363 	form.add(new Spacer(), gbc);
       
   364 
       
   365 	// Group Name
       
   366 	actString = new ActionString("usermgr.basic.label.group");
       
   367         JLabel groupLabel = new JLabel(actString.getString());
       
   368         groupLabel.setDisplayedMnemonic(actString.getMnemonic());
       
   369 	groupCombo = new JComboBox();
       
   370 	new ComboBoxPropertySynchronizer<String>(groupProperty, groupCombo);
       
   371 
       
   372 	for (Group g : descriptor.getGroups()) {
       
   373 	    groupCombo.addItem(g.getGroupName());
       
   374 	}
       
   375 	ChangeIndicator groupChange = new ChangeIndicator();
       
   376 	groupProperty.addChangeListener(groupChange);
       
   377 
       
   378 	// Connect the label to the field
       
   379 	groupLabel.setLabelFor(groupCombo);
       
   380 
       
   381 	gbc.gridx = 0;
       
   382 	gbc.gridy++; // next row
       
   383         form.add(groupLabel, gbc);
       
   384 	gbc.gridx = GridBagConstraints.RELATIVE;
       
   385         form.add(groupCombo, gbc);
       
   386         form.add(groupChange, gbc);
       
   387 
       
   388 	// Home Directory
       
   389 	actString = new ActionString("usermgr.basic.label.home");
       
   390         JLabel homeLabel = new JLabel(actString.getString());
       
   391         homeLabel.setDisplayedMnemonic(actString.getMnemonic());
       
   392 
       
   393 	homeField = new HintTextField(width);
       
   394 	homeField.setHintText(Finder.getString("usermgr.new.value.auto"));
       
   395 	new HintTextPropertySynchronizer<String>(homeProperty, homeField, "");
       
   396 
       
   397 	ChangeIndicator homeChange = new ChangeIndicator();
       
   398 	homeProperty.addChangeListener(homeChange);
       
   399 
       
   400 	// Connect the label to the field
       
   401 	homeLabel.setLabelFor(homeField);
       
   402 
       
   403 	// Add to the layout
       
   404 	gbc.gridx = 0;
       
   405 	gbc.gridy++; // next row
       
   406         form.add(homeLabel, gbc);
       
   407 	gbc.gridx = GridBagConstraints.RELATIVE;
       
   408         form.add(homeField, gbc);
       
   409         form.add(homeChange, gbc);
       
   410 
       
   411 	// Login Shell
       
   412 	actString = new ActionString("usermgr.basic.label.shell");
       
   413         JLabel shellLabel = new JLabel(actString.getString());
       
   414         shellLabel.setDisplayedMnemonic(actString.getMnemonic());
       
   415 	shellCombo = new JComboBox();
       
   416 	new ComboBoxPropertySynchronizer<String>(shellProperty, shellCombo);
       
   417 	for (String s : descriptor.getShells())
       
   418 	    shellCombo.addItem(s);
       
   419 	ChangeIndicator shellChange = new ChangeIndicator();
       
   420 	shellProperty.addChangeListener(shellChange);
       
   421 
       
   422 	// Connect the label to the field
       
   423 	shellLabel.setLabelFor(shellCombo);
       
   424 
       
   425 	gbc.gridx = 0;
       
   426 	gbc.gridy++; // next row
       
   427         form.add(shellLabel, gbc);
       
   428 	gbc.gridx = GridBagConstraints.RELATIVE;
       
   429         form.add(shellCombo, gbc);
       
   430         form.add(shellChange, gbc);
       
   431 
       
   432 	// Change Password
       
   433 	gbc.gridx = 0;
       
   434 	gbc.gridy++; // next row
       
   435 	gbc.weightx = 0.0;
       
   436 	gbc.gridwidth = GridBagConstraints.REMAINDER;
   240 	passPanel = new PasswordPanel();
   437 	passPanel = new PasswordPanel();
   241 
   438         form.add(passPanel, gbc);
   242         int hGap = GUIUtil.getHalfGap();
   439 
   243 	ColumnLayoutConstraint col = new ColumnLayoutConstraint(
   440 	// Advanced Settings
   244 	    HorizontalAnchor.FILL, hGap);
   441 	actString = new ActionString("usermgr.advanced.settings");
   245 	RowLayoutConstraint row = new RowLayoutConstraint(
   442 	JButton advSettings = new JButton(actString.getString());
   246 	    VerticalAnchor.CENTER, hGap);
   443 	advSettings.setActionCommand(ACTION_ADV_SETTINGS);
   247 	HasAnchors a = new SimpleHasAnchors(
   444 	advSettings.addActionListener(this);
   248 	    HorizontalAnchor.LEFT, VerticalAnchor.CENTER);
   445 	advSettings.setMnemonic(actString.getMnemonic());
   249 
   446 	settingsChange = new ChangeIndicator();
   250 	form.addTable(3, hGap, hGap*2, HorizontalAnchor.LEFT, col);
   447 	settingsProperty.addChangeListener(settingsChange);
   251 
   448 
   252         form.add(userNameLabel, a);
   449 	// Add to the layout
   253         form.add(userNameValue, a);
   450 	gbc.gridx = 0;
   254 	form.add(new Spacer(), a);
   451 	gbc.gridy++;
   255 
   452 	gbc.gridwidth = 1; // GridBagConstraints.RELATIVE;
   256         form.add(userDescLabel, a);
   453 	gbc.weighty = 1.0;
   257         form.add(userDescField, a);
   454 	gbc.anchor = GridBagConstraints.LAST_LINE_START;
   258         form.add(userDescChange, a);
   455 	form.add(advSettings, gbc);
   259 
   456 	gbc.gridx = GridBagConstraints.RELATIVE;
   260 	form.addRow(HorizontalAnchor.LEFT, col);
   457 	gbc.gridwidth = 0;
   261 	form.add(isAdminCheckBox, row);
   458         form.add(settingsChange, gbc);
   262 	form.add(isAdminChange, row);
   459 
   263 
   460 	return form;
   264 	form.addRow(HorizontalAnchor.LEFT, col);
   461     }
   265 	form.add(passPanel);
   462 
   266 
   463     /**
   267 	return formPanel;
   464      * ActionListener for Advanced Settings
   268     }
   465      */
   269 
   466     @Override
   270     private void initLabels(boolean bNormalUser) {
   467     public void actionPerformed(ActionEvent e) {
   271 	if (bNormalUser) {
   468         String actionCmd = e.getActionCommand();
   272 	    // Normal user
   469 	if (actionCmd == ACTION_ADV_SETTINGS) {
   273 	    userNameLabel.setText(
   470 		if (advDialog == null ||
   274 		Finder.getString("usermgr.basic.label.username"));
   471 			descriptor.isTypeRole() != advDialog.isTypeRole()) {
   275 	    userDescLabel.setText(
   472 		    advDialog = new AdvancedSettingsDialog(this,
   276 		Finder.getString("usermgr.basic.label.userdesc"));
   473 			descriptor, umo);
   277 	} else {
   474 		} else {
   278 	    // Role
   475 			advDialog.setUser(umo);
   279 	    userNameLabel.setText(
   476 		}
   280 		Finder.getString("usermgr.basic.label.rolename"));
   477 		advDialog.show();
   281 	    userDescLabel.setText(
   478 		if (advDialog.getValue() == JOptionPane.OK_OPTION) {
   282 		Finder.getString("usermgr.basic.label.roledesc"));
   479 		    advDialog.update();
   283 	}
   480 		    settingsProperty.setValue(advDialog.isChanged());
       
   481 		}
       
   482 	}
       
   483     }
       
   484 
       
   485     /**
       
   486      * Clear the advanced settings change state.
       
   487      */
       
   488     public void clearChanges() {
       
   489         settingsProperty.update(false, true);
   284     }
   490     }
   285 }
   491 }