usr/src/java/vpanels/app/usermgr/com/oracle/solaris/vp/panels/usermgr/client/swing/MainControl.java
changeset 847 a8e124b894b8
parent 811 c65c58b7a1f0
--- a/usr/src/java/vpanels/app/usermgr/com/oracle/solaris/vp/panels/usermgr/client/swing/MainControl.java	Thu Apr 26 00:14:30 2012 -0400
+++ b/usr/src/java/vpanels/app/usermgr/com/oracle/solaris/vp/panels/usermgr/client/swing/MainControl.java	Fri Apr 27 00:52:26 2012 -0400
@@ -26,7 +26,10 @@
 package com.oracle.solaris.vp.panels.usermgr.client.swing;
 
 import java.util.List;
+import java.util.Map;
 import javax.swing.*;
+import javax.swing.event.*;
+import java.awt.event.*;
 import javax.swing.border.Border;
 import com.oracle.solaris.vp.panel.common.action.*;
 import com.oracle.solaris.vp.panel.common.control.*;
@@ -36,6 +39,9 @@
 import com.oracle.solaris.vp.util.misc.finder.Finder;
 import com.oracle.solaris.vp.util.swing.ClippedBorder;
 
+/**
+ * Main User Manager Control
+ */
 public class MainControl extends ListSelectorControl
     <UserMgrPanelDescriptor, ListSelectorPanel, UserManagedObject> {
 
@@ -50,6 +56,8 @@
     //
 
     private ManagedObjectTableModel model;
+    private ListSelectorPanel panel;
+    private UserMgrBasicControl control = null;
 
     //
     // Constructors
@@ -64,6 +72,11 @@
     //
 
     @Override
+    public String getHelpMapID() {
+        return "usermgr-mainpanel";
+    }
+
+    @Override
     protected void save() throws ActionAbortedException, ActionFailedException,
 	ActionUnauthorizedException {
 
@@ -73,11 +86,9 @@
 	getPanelDescriptor().saveAddedUsers();
 
 	getPanelDescriptor().saveModifiedUsers();
+	control.clearChanges();
 
 	super.save();
-
-	// update status counts
-	getPanelDescriptor().setStatusText();
     }
 
     //
@@ -87,7 +98,7 @@
     @Override
     protected void ensureChildrenCreated() {
 	if (children.size() == 0) {
-	    SwingControl control = new UserMgrControl(getPanelDescriptor());
+	    control = new UserMgrBasicControl(getPanelDescriptor());
 	    addChildren(control);
 	    addToLayout(control);
 	}
@@ -98,8 +109,8 @@
     //
     @Override
     protected ListSelectorPanel createComponent() {
-	ListSelectorPanel panel = new ListSelectorPanel();
-	panel.setSelectionTitle(Finder.getString("usermgr.list.title"));
+	panel = new ListSelectorPanel();
+	panel.setSelectionTitle(Finder.getString("usermgr.list.title.user"));
 
 	Border border = panel.getBorder();
 	panel.setBorder(new ClippedBorder(border, false, true, true, true));
@@ -114,9 +125,10 @@
 	panel.getChangeableAggregator().addChangeables(
 	    getPanelDescriptor().getChangeableAggregator());
 
-	// Add actions to create/delete users
+	// Add actions to create/delete/filter users
 	addAction(panel, new AddUserAction(this), true, true);
 	addAction(panel, new DeleteUserAction(this), true, true);
+	addAction(panel, new FilterUserAction(this), true, true);
 
 	setDefaultContentView(new UserMgrEmptyPanel());
 
@@ -129,6 +141,7 @@
 	addDefaultApplyAction();
 	addDefaultCancelAction(true);
 	addDefaultOkayAction(true);
+	addDefaultHelpAction();
     }
 
     @Override
@@ -180,8 +193,8 @@
 	    return null;
 	}
 	UserManagedObject uobj = selection.get(0);
-	Navigable navigable = new SimpleNavigable(UserMgrControl.ID,
-	    uobj.getName(), UserMgrControl.PARAM_USER, uobj.getId());
+	Navigable navigable = new SimpleNavigable(UserMgrBasicControl.ID,
+	    uobj.getName(), UserMgrBasicControl.PARAM_USER, uobj.getId());
  	return new Navigable[] {navigable};
     }
 
@@ -194,7 +207,8 @@
      */
     @Override
     protected int getListIndexOf(Control child) {
-   	UserManagedObject umo = ((UserMgrControl)child).getUserManagedObject();
+   	UserManagedObject umo =
+		((UserMgrBasicControl)child).getUserManagedObject();
   	int uIndex = getPanelDescriptor().indexOf(umo);
 
  	UserManagedObject utemp = (UserManagedObject) getComponent().
@@ -216,4 +230,40 @@
 	return model;
     }
 
+    /**
+     * Get the model to use in the Users list
+     */
+    public void setListTitle(String listTitle) {
+        if (panel != null)
+	    panel.setSelectionTitle(listTitle);
+    }
+
+
+    @Override
+    protected void addDefaultCancelAction(final boolean quit) {
+	getComponent().getButtonBar().getCancelButton().addActionListener(
+	    new ActionListener() {
+		@Override
+		public void actionPerformed(ActionEvent e) {
+		    Control.UnsavedChangesAction action;
+		    ChangeableAggregator aggregator =
+			getComponent().getChangeableAggregator();
+		    if (aggregator != null && aggregator.isChanged()) {
+			action = getUnsavedChangesAction();
+		    } else {
+			action = Control.UnsavedChangesAction.DISCARD;
+		    }
+		    switch (action) {
+		    case SAVE:
+			doSaveAndQuit();
+			break;
+		    case DISCARD:
+			doQuit();
+			break;
+		    case CANCEL:
+			break;
+		    }
+		}
+	    });
+    }
 }