8091 apache: empty mime types/modules list should show help text
authorStephen Talley <stephen.talley@sun.com>
Fri, 10 Apr 2009 10:32:17 -0400
changeset 276 d8275f1fd45b
parent 275 1e055a67a9b6
child 277 0b10bb7734e9
8091 apache: empty mime types/modules list should show help text
usr/src/java/util/org/opensolaris/os/vp/util/swing/BlockingGlassPane.java
usr/src/java/vpanels/panel/org/opensolaris/os/vp/panel/swing/control/ListSelectorControl.java
usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/CloneVirtualHostAction.java
usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/CreateMimeTypeAction.java
usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/CreateModuleAction.java
usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/CreateVirtualHostAction.java
usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/MimeTypesControl.java
usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/ModulesControl.java
usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/resources/Resources.properties
--- a/usr/src/java/util/org/opensolaris/os/vp/util/swing/BlockingGlassPane.java	Fri Apr 10 10:24:57 2009 -0400
+++ b/usr/src/java/util/org/opensolaris/os/vp/util/swing/BlockingGlassPane.java	Fri Apr 10 10:32:17 2009 -0400
@@ -80,14 +80,17 @@
 		prevFocusComp = KeyboardFocusManager.
 		    getCurrentKeyboardFocusManager().getFocusOwner();
 		requestFocusInWindow();
-	    } else if (prevFocusComp != null) {
-		EventQueue.invokeLater(
-		    new Runnable() {
-			@Override
-			public void run() {
-			    prevFocusComp.requestFocusInWindow();
-			}
-		    });
+	    } else {
+		final Component comp = prevFocusComp;
+		if (comp != null) {
+		    EventQueue.invokeLater(
+			new Runnable() {
+			    @Override
+			    public void run() {
+				comp.requestFocusInWindow();
+			    }
+			});
+		}
 	    }
 	}
     }
--- a/usr/src/java/vpanels/panel/org/opensolaris/os/vp/panel/swing/control/ListSelectorControl.java	Fri Apr 10 10:24:57 2009 -0400
+++ b/usr/src/java/vpanels/panel/org/opensolaris/os/vp/panel/swing/control/ListSelectorControl.java	Fri Apr 10 10:32:17 2009 -0400
@@ -82,6 +82,7 @@
     //
 
     private NavListSelectionModel listSelModel;
+    private Component defaultContentView;
 
     private List<StructuredAction<List<S>, ?, ?>> mActions =
 	new ArrayList<StructuredAction<List<S>, ?, ?>>();
@@ -123,6 +124,15 @@
 	}
     }
 
+    @Override
+    public void childStopped(Control child) {
+	super.childStopped(child);
+
+	JPanel contentCardPane = getComponent().getContentCardPane();
+	CardLayout cards = (CardLayout)contentCardPane.getLayout();
+	cards.show(contentCardPane, getId());
+    }
+
     //
     // SwingControl methods
     //
@@ -143,6 +153,11 @@
 		    }
 		}
 	    });
+
+	Component defaultContentView = getDefaultContentView();
+	if (defaultContentView != null) {
+	    panel.getContentCardPane().add(defaultContentView, getId());
+	}
     }
 
     @Override
@@ -173,7 +188,7 @@
     /**
      * Adds the {@code Component}s of the given {@link SwingControl}s,
      * presumably children of this {@code ListSelectorControl}, to the layout of
-     * the UI.  The {@code Component}s must not already be parented to be added.
+     * the UI.	The {@code Component}s must not already be parented to be added.
      * <p>
      * This methid is called automatically by {@link #childStarted}, but
      * subclasses may call it when creating child {@link Control}s if there is a
@@ -206,6 +221,21 @@
     }
 
     /**
+     * Gets a {@code Component} to display in the {@link ListSelectorPanel}'s
+     * content area when no {@code Component} of a child {@link SwingControl} is
+     * shown.
+     * <p/>
+     * This default implementation returns {@code null}.
+     *
+     * @see	    #setDefaultContentView
+     *
+     * @return	    a {@code Component}, or {@code null} to not show a default
+     */
+    protected Component getDefaultContentView() {
+	return defaultContentView;
+    }
+
+    /**
      * Gets the index of the list item that corresponds to the given child
      * {@code Control}.
      */
@@ -233,6 +263,20 @@
     protected abstract Navigable[] getPathForSelection(int[] indexes,
 	Object[] items);
 
+    /**
+     * Sets a {@code Component} to display in the {@link ListSelectorPanel}'s
+     * content area when no {@code Component} of a child {@link SwingControl} is
+     * shown.
+     *
+     * @param	    defaultContentView
+     *		    a {@code Component}, or {@code null} to not show a default
+     *
+     * @see	    #getDefaultContentView
+     */
+    protected void setDefaultContentView(Component defaultContentView) {
+	this.defaultContentView = defaultContentView;
+    }
+
     //
     // Private methods
     //
--- a/usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/CloneVirtualHostAction.java	Fri Apr 10 10:24:57 2009 -0400
+++ b/usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/CloneVirtualHostAction.java	Fri Apr 10 10:32:17 2009 -0400
@@ -33,6 +33,7 @@
 import org.opensolaris.os.scf.common.ScfException;
 import org.opensolaris.os.vp.common.smf.ServiceMXBean;
 import org.opensolaris.os.vp.panel.common.action.*;
+import org.opensolaris.os.vp.panel.common.control.*;
 import org.opensolaris.os.vp.panel.common.model.ManagedObject;
 import org.opensolaris.os.vp.panel.common.smf.*;
 import org.opensolaris.os.vp.panel.swing.action.CloneManagedObjectAction;
@@ -158,6 +159,13 @@
 	    }
 	}
 
+	// Navigate to the new virtual host
+	Navigable navigable = new SimpleNavigable(
+	    VirtualHostControl.ID, null,
+	    VirtualHostControl.PARAM_VHOST, vHost.getId());
+
+	control.getNavigator().goToAsync(control, navigable);
+
 	return vHost;
     }
 
--- a/usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/CreateMimeTypeAction.java	Fri Apr 10 10:24:57 2009 -0400
+++ b/usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/CreateMimeTypeAction.java	Fri Apr 10 10:32:17 2009 -0400
@@ -33,6 +33,7 @@
 import javax.swing.*;
 import org.opensolaris.os.scf.common.ScfException;
 import org.opensolaris.os.vp.panel.common.action.*;
+import org.opensolaris.os.vp.panel.common.control.*;
 import org.opensolaris.os.vp.panel.common.smf.ScfUtil;
 import org.opensolaris.os.vp.panel.swing.action.AddManagedObjectAction;
 import org.opensolaris.os.vp.util.misc.*;
@@ -205,6 +206,13 @@
 	    throw new ActionUnauthorizedException(e);
 	}
 
+	// Navigate to the new MIME type
+	Navigable navigable = new SimpleNavigable(
+	    MimeTypeControl.ID, null,
+	    MimeTypeControl.PARAM_MIMETYPE, mimeType.getId());
+
+	control.getNavigator().goToAsync(control, navigable);
+
 	return mimeType;
     }
 }
--- a/usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/CreateModuleAction.java	Fri Apr 10 10:24:57 2009 -0400
+++ b/usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/CreateModuleAction.java	Fri Apr 10 10:32:17 2009 -0400
@@ -34,6 +34,7 @@
 import javax.swing.filechooser.FileSystemView;
 import org.opensolaris.os.scf.common.ScfException;
 import org.opensolaris.os.vp.panel.common.action.*;
+import org.opensolaris.os.vp.panel.common.control.*;
 import org.opensolaris.os.vp.panel.common.smf.ScfUtil;
 import org.opensolaris.os.vp.panel.swing.action.AddManagedObjectAction;
 import org.opensolaris.os.vp.util.misc.*;
@@ -201,6 +202,13 @@
 	    throw new ActionUnauthorizedException(e);
 	}
 
+	// Navigate to the new module
+	Navigable navigable = new SimpleNavigable(
+	    ModuleControl.ID, null,
+	    ModuleControl.PARAM_MODULE, module.getId());
+
+	control.getNavigator().goToAsync(control, navigable);
+
 	return module;
     }
 }
--- a/usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/CreateVirtualHostAction.java	Fri Apr 10 10:24:57 2009 -0400
+++ b/usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/CreateVirtualHostAction.java	Fri Apr 10 10:32:17 2009 -0400
@@ -33,6 +33,7 @@
 import org.opensolaris.os.scf.common.ScfException;
 import org.opensolaris.os.vp.common.smf.ServiceMXBean;
 import org.opensolaris.os.vp.panel.common.action.*;
+import org.opensolaris.os.vp.panel.common.control.*;
 import org.opensolaris.os.vp.panel.common.model.ManagedObject;
 import org.opensolaris.os.vp.panel.common.smf.*;
 import org.opensolaris.os.vp.panel.swing.action.AddManagedObjectAction;
@@ -144,6 +145,13 @@
 	    }
 	}
 
+	// Navigate to the new virtual host
+	Navigable navigable = new SimpleNavigable(
+	    VirtualHostControl.ID, null,
+	    VirtualHostControl.PARAM_VHOST, vHost.getId());
+
+	control.getNavigator().goToAsync(control, navigable);
+
 	return vHost;
     }
 
--- a/usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/MimeTypesControl.java	Fri Apr 10 10:24:57 2009 -0400
+++ b/usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/MimeTypesControl.java	Fri Apr 10 10:32:17 2009 -0400
@@ -26,9 +26,8 @@
 
 package org.opensolaris.os.vp.panels.apache.client.swing;
 
-import java.awt.*;
+import java.awt.Image;
 import java.net.URL;
-import java.util.*;
 import java.util.List;
 import javax.swing.ListModel;
 import org.opensolaris.os.vp.panel.common.control.*;
@@ -105,7 +104,9 @@
     protected void ensureChildrenCreated() {
 	if (children.size() == 0) {
 	    ApachePanelDescriptor descriptor = getPanelDescriptor();
-	    addChildren(new MimeTypeControl(descriptor, this));
+	    SwingControl child = new MimeTypeControl(descriptor, this);
+	    addChildren(child);
+	    addToLayout(child);
 	}
     }
 
@@ -132,6 +133,8 @@
 	addDefaultOkayAction(panel, false);
 	addDefaultHelpAction(panel);
 
+	setDefaultContentView(new NoMimeTypePanel());
+
 	return panel;
     }
 
--- a/usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/ModulesControl.java	Fri Apr 10 10:24:57 2009 -0400
+++ b/usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/ModulesControl.java	Fri Apr 10 10:32:17 2009 -0400
@@ -26,9 +26,8 @@
 
 package org.opensolaris.os.vp.panels.apache.client.swing;
 
-import java.awt.*;
+import java.awt.Image;
 import java.net.URL;
-import java.util.*;
 import java.util.List;
 import javax.swing.ListModel;
 import org.opensolaris.os.vp.panel.common.control.*;
@@ -104,7 +103,9 @@
     protected void ensureChildrenCreated() {
 	if (children.size() == 0) {
 	    ApachePanelDescriptor descriptor = getPanelDescriptor();
-	    addChildren(new ModuleControl(descriptor, this));
+	    SwingControl child = new ModuleControl(descriptor, this);
+	    addChildren(child);
+	    addToLayout(child);
 	}
     }
 
@@ -131,6 +132,8 @@
 	addDefaultOkayAction(panel, false);
 	addDefaultHelpAction(panel);
 
+	setDefaultContentView(new NoModulePanel());
+
 	return panel;
     }
 
--- a/usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/resources/Resources.properties	Fri Apr 10 10:24:57 2009 -0400
+++ b/usr/src/java/vpanels/panels/apache/org/opensolaris/os/vp/panels/apache/client/swing/resources/Resources.properties	Fri Apr 10 10:32:17 2009 -0400
@@ -86,6 +86,7 @@
 #
 
 mimetypes.title = Custom MIME types
+mimetypes.default.message = No MIME types are defined.  Click the "{0}" button to create one.
 mimetypes.action.create.button = New MIME Type...
 mimetypes.action.create.title = Create a MIME Type
 mimetypes.action.delete.button = Delete
@@ -110,6 +111,7 @@
 #
 
 modules.title = Custom Modules
+modules.default.message = No modules are defined.  Click the "{0}" button to create one.
 modules.action.create.button = New Module...
 modules.action.create.title = Create a Module
 modules.action.create.message = Specify a domain name for the new virtual host.