2853 Async navigation in serious need of factoring
authorDavid Powell <David.Powell@sun.com>
Mon, 11 Aug 2008 18:54:00 -0700
changeset 20 5423319ed064
parent 19 9c1f74f86687
child 21 48868cfbefa3
2853 Async navigation in serious need of factoring
usr/src/java/vpanels/client/org/opensolaris/os/vp/client/swing/ConsoleCategoryControl.java
usr/src/java/vpanels/client/org/opensolaris/os/vp/client/swing/ControlBreadCrumbs.java
usr/src/java/vpanels/client/org/opensolaris/os/vp/client/swing/PanelControl.java
usr/src/java/vpanels/panel/org/opensolaris/os/vp/panel/Navigator.java
usr/src/java/vpanels/panels/apache/org/opensolaris/network/apache/swing/ApacheSettingsTab.java
usr/src/java/vpanels/panels/apache/org/opensolaris/network/apache/swing/EditVirtualHostAction.java
usr/src/java/vpanels/panels/apache/org/opensolaris/network/apache/swing/MimeTypesControl.java
usr/src/java/vpanels/panels/apache/org/opensolaris/network/apache/swing/ModulesControl.java
usr/src/java/vpanels/panels/apache/org/opensolaris/network/apache/swing/VirtualHostEditControl.java
usr/src/java/vpanels/panels/coreadm/org/opensolaris/system/coreadm/swing/CoreAdmSettingsTab.java
usr/src/java/vpanels/panels/firewall/org/opensolaris/network/firewall/swing/EditServiceAction.java
usr/src/java/vpanels/panels/sharemgr/org/opensolaris/filesystem/sharemgr/client/swing/CommonControl.java
usr/src/java/vpanels/panels/sharemgr/org/opensolaris/filesystem/sharemgr/client/swing/EditShareAndGroupAction.java
usr/src/java/vpanels/panels/sharemgr/org/opensolaris/filesystem/sharemgr/client/swing/ProtocolControl.java
usr/src/java/vpanels/panels/sharemgr/org/opensolaris/filesystem/sharemgr/client/swing/ShareControl.java
usr/src/java/vpanels/panels/smf/org/opensolaris/system/smf/swing/EditInstanceAction.java
usr/src/java/vpanels/panels/smf/org/opensolaris/system/smf/swing/EditServiceAction.java
--- a/usr/src/java/vpanels/client/org/opensolaris/os/vp/client/swing/ConsoleCategoryControl.java	Sat Aug 09 13:45:22 2008 -0400
+++ b/usr/src/java/vpanels/client/org/opensolaris/os/vp/client/swing/ConsoleCategoryControl.java	Mon Aug 11 18:54:00 2008 -0700
@@ -152,20 +152,9 @@
 			((PanelLozenge)e.getSource()).getPanelDescriptor();
 
 		    final String id = descriptors.get(descriptor);
-		    final Navigator navigator = getNavigator();
 
 		    // Launch navigation on non-event thread
-		    navigator.asyncExec(
-			new Runnable() {
-			    @Override
-			    public void run() {
-				try {
-				    navigator.goTo(ConsoleCategoryControl.this,
-					id);
-				} catch (NavigationException ignore) {
-				}
-			    }
-			});
+		    getNavigator().goToAsync(ConsoleCategoryControl.this, id);
 		}
 	    });
 
--- a/usr/src/java/vpanels/client/org/opensolaris/os/vp/client/swing/ControlBreadCrumbs.java	Sat Aug 09 13:45:22 2008 -0400
+++ b/usr/src/java/vpanels/client/org/opensolaris/os/vp/client/swing/ControlBreadCrumbs.java	Mon Aug 11 18:54:00 2008 -0700
@@ -71,18 +71,8 @@
 		new ActionListener() {
 		    @Override
 		    public void actionPerformed(ActionEvent e) {
-			final Navigator navigator = control.getNavigator();
 			// Launch navigation on non-event thread
-			navigator.asyncExec(
-			    new Runnable() {
-				@Override
-				public void run() {
-				    try {
-					navigator.goTo(control);
-				    } catch (NavigationException ignore) {
-				    }
-				}
-			    });
+			control.getNavigator().goToAsync(control);
 		    }
 		});
 
@@ -119,19 +109,9 @@
 			NameValue<Control> nv = (NameValue<Control>)e.getItem();
 
 			final Control control = nv.getValue();
-			final Navigator navigator = control.getNavigator();
 
 			// Launch navigation on non-event thread
-			navigator.asyncExec(
-			    new Runnable() {
-				@Override
-				public void run() {
-				    try {
-					navigator.goTo(control);
-				    } catch (NavigationException ignore) {
-				    }
-				}
-			    });
+			control.getNavigator().goToAsync(control);
 		    }
 		}
 	    });
@@ -221,19 +201,9 @@
 			    (NameValue<Navigable>)e.getItem();
 
 			final Navigable path = nv.getValue();
-			final Navigator navigator = previous.getNavigator();
 
 			// Launch navigation on non-event thread
-			navigator.asyncExec(
-			    new Runnable() {
-				@Override
-				public void run() {
-				    try {
-					navigator.goTo(previous, path);
-				    } catch (NavigationException ignore) {
-				    }
-				}
-			    });
+			previous.getNavigator().goToAsync(previous, path);
 		    }
 		}
 	    });
--- a/usr/src/java/vpanels/client/org/opensolaris/os/vp/client/swing/PanelControl.java	Sat Aug 09 13:45:22 2008 -0400
+++ b/usr/src/java/vpanels/client/org/opensolaris/os/vp/client/swing/PanelControl.java	Mon Aug 11 18:54:00 2008 -0700
@@ -158,37 +158,16 @@
 	tabModel = new WrappingSingleSelectionModel(tabPane.getModel()) {
 	    @Override
 	    public synchronized void clearSelection() {
-		final Navigator navigator = getNavigator();
-
 		// Launch navigation on non-event thread
-		navigator.asyncExec(
-		    new Runnable() {
-			@Override
-			public void run() {
-			    try {
-				navigator.goTo(PanelControl.this);
-			    } catch (NavigationException ignore) {
-			    }
-			}
-		    });
+		getNavigator().goToAsync(PanelControl.this);
 	    }
 
 	    @Override
 	    public synchronized void setSelectedIndex(int cIndex) {
 		final String id = children.get(cIndex).getId();
-		final Navigator navigator = getNavigator();
 
 		// Launch navigation on non-event thread
-		navigator.asyncExec(
-		    new Runnable() {
-			@Override
-			public void run() {
-			    try {
-				navigator.goTo(PanelControl.this, id);
-			    } catch (NavigationException ignore) {
-			    }
-			}
-		    });
+		getNavigator().goToAsync(PanelControl.this, id);
 	    }
 	};
 	tabPane.setModel(tabModel);
--- a/usr/src/java/vpanels/panel/org/opensolaris/os/vp/panel/Navigator.java	Sat Aug 09 13:45:22 2008 -0400
+++ b/usr/src/java/vpanels/panel/org/opensolaris/os/vp/panel/Navigator.java	Mon Aug 11 18:54:00 2008 -0700
@@ -373,6 +373,33 @@
     }
 
     /**
+     * Asynchronously navigates to the {@link Control} identified by the
+     * given path.  A wrapper around {@link #goTo(Control,Navigable...) goTo}
+     * that is run asynchronously using {@link asyncExec asyncExec}.
+     *
+     * @param	    relativeTo
+     *		    a {@link Control} within the navigation stack to which
+     *		    {@code path} is relative, or {@code null} if {@code path} is
+     *		    absolute
+     *
+     * @param	    path
+     *		    the path (relative to {@code relativeTo}), or unspecified to
+     *		    navigate up the stack to {@code relativeTo}
+     */
+    public void goToAsync(final Control relativeTo, final Navigable... path) {
+	asyncExec(
+	    new Runnable() {
+		@Override
+		public void run() {
+		    try {
+			goTo(relativeTo, path);
+		    } catch (NavigationException ignore) {
+		    }
+		}
+	    });
+    }
+
+    /**
      * Shortcut for:
      * <p>
      *	 <code>
@@ -393,6 +420,24 @@
     }
 
     /**
+     * A wrapper around {@link #goTo(Control,String,String...) goTo}
+     * that is run asynchronously using {@link asyncExec asyncExec}.
+     */
+    public void goToAsync(final Control relativeTo, final String id,
+	final String... parameters) {
+	    asyncExec(
+		new Runnable() {
+		    @Override
+		    public void run() {
+			try {
+			    goTo(relativeTo, id, parameters);
+			} catch (NavigationException ignore) {
+			}
+		    }
+		});
+    }
+
+    /**
      * Returns the current {@link Control}.
      */
     public Control peek() {
--- a/usr/src/java/vpanels/panels/apache/org/opensolaris/network/apache/swing/ApacheSettingsTab.java	Sat Aug 09 13:45:22 2008 -0400
+++ b/usr/src/java/vpanels/panels/apache/org/opensolaris/network/apache/swing/ApacheSettingsTab.java	Mon Aug 11 18:54:00 2008 -0700
@@ -141,20 +141,9 @@
 	    new ActionListener() {
 		@Override
 		public void actionPerformed(ActionEvent e) {
-		    final Navigator navigator = getNavigator();
-
 		    // Launch navigation on non-event thread
-		    navigator.asyncExec(
-			new Runnable() {
-			    @Override
-			    public void run() {
-				try {
-				    navigator.goTo(ApacheSettingsTab.this,
-					MimeTypesControl.ID);
-				} catch (NavigationException ignore) {
-				}
-			    }
-			});
+		    getNavigator().goToAsync(ApacheSettingsTab.this,
+			MimeTypesControl.ID);
 		}
 	    });
 
@@ -162,20 +151,9 @@
 	    new ActionListener() {
 		@Override
 		public void actionPerformed(ActionEvent e) {
-		    final Navigator navigator = getNavigator();
-
 		    // Launch navigation on non-event thread
-		    navigator.asyncExec(
-			new Runnable() {
-			    @Override
-			    public void run() {
-				try {
-				    navigator.goTo(ApacheSettingsTab.this,
-					ModulesControl.ID);
-				} catch (NavigationException ignore) {
-				}
-			    }
-			});
+		    getNavigator().goToAsync(ApacheSettingsTab.this,
+			ModulesControl.ID);
 		}
 	    });
 
--- a/usr/src/java/vpanels/panels/apache/org/opensolaris/network/apache/swing/EditVirtualHostAction.java	Sat Aug 09 13:45:22 2008 -0400
+++ b/usr/src/java/vpanels/panels/apache/org/opensolaris/network/apache/swing/EditVirtualHostAction.java	Mon Aug 11 18:54:00 2008 -0700
@@ -55,19 +55,9 @@
     public void invoke() {
 	// Assume valid selection
 	final String vHost = getSelection()[0].getId();
-	final Navigator navigator = control.getNavigator();
 
 	// Launch navigation on navigation thread
-	navigator.asyncExec(
-	    new Runnable() {
-		@Override
-		public void run() {
-		    try {
-			navigator.goTo(control, VirtualHostEditControl.ID,
-			    VirtualHostEditControl.PARAM_VHOST, vHost);
-		    } catch (NavigationException ignore) {
-		    }
-		}
-	    });
+	control.getNavigator().goToAsync(control, VirtualHostEditControl.ID,
+	    VirtualHostEditControl.PARAM_VHOST, vHost);
     }
 }
--- a/usr/src/java/vpanels/panels/apache/org/opensolaris/network/apache/swing/MimeTypesControl.java	Sat Aug 09 13:45:22 2008 -0400
+++ b/usr/src/java/vpanels/panels/apache/org/opensolaris/network/apache/swing/MimeTypesControl.java	Mon Aug 11 18:54:00 2008 -0700
@@ -57,20 +57,9 @@
 	new AddManagedObjectAction() {
 	    @Override
 	    public void invoke() {
-		final Navigator navigator = getNavigator();
-
 		// Launch navigation on navigation thread
-		navigator.asyncExec(
-		    new Runnable() {
-			@Override
-			public void run() {
-			    try {
-				navigator.goTo(MimeTypesControl.this,
-				    MimeTypeAddControl.ID);
-			    } catch (NavigationException ignore) {
-			    }
-			}
-		    });
+		getNavigator().goToAsync(MimeTypesControl.this,
+		    MimeTypeAddControl.ID);
 	    }
 	};
 
@@ -81,22 +70,12 @@
 	    public void invoke() {
 		// Assume valid selection
 		final String mimeType = getSelection()[0].getId();
-		final Navigator navigator = getNavigator();
 
 		// Launch navigation on navigation thread
-		navigator.asyncExec(
-		    new Runnable() {
-			@Override
-			public void run() {
-			    try {
-				navigator.goTo(MimeTypesControl.this,
-				    MimeTypeCloneControl.ID,
-				    MimeTypeChangeControl.PARAM_MIMETYPE,
-				    mimeType);
-			    } catch (NavigationException ignore) {
-			    }
-			}
-		    });
+		getNavigator().goToAsync(MimeTypesControl.this,
+		    MimeTypeCloneControl.ID,
+		    MimeTypeChangeControl.PARAM_MIMETYPE,
+		    mimeType);
 	    }
 	};
 
@@ -168,22 +147,12 @@
 	    public void invoke() {
 		// Assume valid selection
 		final String mimeType = getSelection()[0].getId();
-		final Navigator navigator = getNavigator();
 
 		// Launch navigation on navigation thread
-		navigator.asyncExec(
-		    new Runnable() {
-			@Override
-			public void run() {
-			    try {
-				navigator.goTo(MimeTypesControl.this,
-				    MimeTypeEditControl.ID,
-				    MimeTypeChangeControl.PARAM_MIMETYPE,
-				    mimeType);
-			    } catch (NavigationException ignore) {
-			    }
-			}
-		    });
+		getNavigator().goToAsync(MimeTypesControl.this,
+		    MimeTypeEditControl.ID,
+		    MimeTypeChangeControl.PARAM_MIMETYPE,
+		    mimeType);
 	    }
 	};
 
--- a/usr/src/java/vpanels/panels/apache/org/opensolaris/network/apache/swing/ModulesControl.java	Sat Aug 09 13:45:22 2008 -0400
+++ b/usr/src/java/vpanels/panels/apache/org/opensolaris/network/apache/swing/ModulesControl.java	Mon Aug 11 18:54:00 2008 -0700
@@ -57,20 +57,8 @@
 	new AddManagedObjectAction() {
 	    @Override
 	    public void invoke() {
-		final Navigator navigator = getNavigator();
-
-		// Launch navigation on navigation thread
-		navigator.asyncExec(
-		    new Runnable() {
-			@Override
-			public void run() {
-			    try {
-				navigator.goTo(ModulesControl.this,
-				    ModuleAddControl.ID);
-			    } catch (NavigationException ignore) {
-			    }
-			}
-		    });
+		getNavigator().goToAsync(ModulesControl.this,
+		    ModuleAddControl.ID);
 	    }
 	};
 
@@ -81,21 +69,11 @@
 	    public void invoke() {
 		// Assume valid selection
 		final String module = getSelection()[0].getId();
-		final Navigator navigator = getNavigator();
 
 		// Launch navigation on navigation thread
-		navigator.asyncExec(
-		    new Runnable() {
-			@Override
-			public void run() {
-			    try {
-				navigator.goTo(ModulesControl.this,
-				    ModuleCloneControl.ID,
-				    ModuleChangeControl.PARAM_MODULE, module);
-			    } catch (NavigationException ignore) {
-			    }
-			}
-		    });
+		getNavigator().goToAsync(ModulesControl.this,
+		    ModuleCloneControl.ID,
+		    ModuleChangeControl.PARAM_MODULE, module);
 	    }
 	};
 
@@ -167,21 +145,11 @@
 	    public void invoke() {
 		// Assume valid selection
 		final String module = getSelection()[0].getId();
-		final Navigator navigator = getNavigator();
 
 		// Launch navigation on navigation thread
-		navigator.asyncExec(
-		    new Runnable() {
-			@Override
-			public void run() {
-			    try {
-				navigator.goTo(ModulesControl.this,
-				    ModuleEditControl.ID,
-				    ModuleChangeControl.PARAM_MODULE, module);
-			    } catch (NavigationException ignore) {
-			    }
-			}
-		    });
+		getNavigator().goToAsync(ModulesControl.this,
+		    ModuleEditControl.ID,
+		    ModuleChangeControl.PARAM_MODULE, module);
 	    }
 	};
 
--- a/usr/src/java/vpanels/panels/apache/org/opensolaris/network/apache/swing/VirtualHostEditControl.java	Sat Aug 09 13:45:22 2008 -0400
+++ b/usr/src/java/vpanels/panels/apache/org/opensolaris/network/apache/swing/VirtualHostEditControl.java	Mon Aug 11 18:54:00 2008 -0700
@@ -137,20 +137,9 @@
 	    new ActionListener() {
 		@Override
 		public void actionPerformed(ActionEvent e) {
-		    final Navigator navigator = getNavigator();
-
 		    // Launch navigation on non-event thread
-		    navigator.asyncExec(
-			new Runnable() {
-			    @Override
-			    public void run() {
-				try {
-				    navigator.goTo(VirtualHostEditControl.this,
-					MimeTypesControl.ID);
-				} catch (NavigationException ignore) {
-				}
-			    }
-			});
+		    getNavigator().goToAsync(VirtualHostEditControl.this,
+			MimeTypesControl.ID);
 		}
 	    });
 
@@ -158,20 +147,9 @@
 	    new ActionListener() {
 		@Override
 		public void actionPerformed(ActionEvent e) {
-		    final Navigator navigator = getNavigator();
-
 		    // Launch navigation on non-event thread
-		    navigator.asyncExec(
-			new Runnable() {
-			    @Override
-			    public void run() {
-				try {
-				    navigator.goTo(VirtualHostEditControl.this,
-					ModulesControl.ID);
-				} catch (NavigationException ignore) {
-				}
-			    }
-			});
+		    getNavigator().goToAsync(VirtualHostEditControl.this,
+			ModulesControl.ID);
 		}
 	    });
 
--- a/usr/src/java/vpanels/panels/coreadm/org/opensolaris/system/coreadm/swing/CoreAdmSettingsTab.java	Sat Aug 09 13:45:22 2008 -0400
+++ b/usr/src/java/vpanels/panels/coreadm/org/opensolaris/system/coreadm/swing/CoreAdmSettingsTab.java	Mon Aug 11 18:54:00 2008 -0700
@@ -127,20 +127,9 @@
 	    new ActionListener() {
 		@Override
 		public void actionPerformed(ActionEvent e) {
-		    final Navigator navigator = getNavigator();
-
 		    // Launch navigation on non-event thread
-		    navigator.asyncExec(
-			new Runnable() {
-			    @Override
-			    public void run() {
-				try {
-				    navigator.goTo(CoreAdmSettingsTab.this,
-					CustomCoreSchemeEditControl.ID);
-				} catch (NavigationException ignore) {
-				}
-			    }
-			});
+		    getNavigator().goToAsync(CoreAdmSettingsTab.this,
+			CustomCoreSchemeEditControl.ID);
 		}
 	    });
 
--- a/usr/src/java/vpanels/panels/firewall/org/opensolaris/network/firewall/swing/EditServiceAction.java	Sat Aug 09 13:45:22 2008 -0400
+++ b/usr/src/java/vpanels/panels/firewall/org/opensolaris/network/firewall/swing/EditServiceAction.java	Mon Aug 11 18:54:00 2008 -0700
@@ -55,19 +55,9 @@
     public void invoke() {
 	// Assume valid selection
 	final String service = getSelection()[0].getId();
-	final Navigator navigator = control.getNavigator();
 
 	// Launch navigation on navigation thread
-	navigator.asyncExec(
-	    new Runnable() {
-		@Override
-		public void run() {
-		    try {
-			navigator.goTo(control, ServiceEditControl.ID,
-			    ServiceEditControl.PARAM_SERVICE, service);
-		    } catch (NavigationException ignore) {
-		    }
-		}
-	    });
+	control.getNavigator().goToAsync(control, ServiceEditControl.ID,
+	    ServiceEditControl.PARAM_SERVICE, service);
     }
 }
--- a/usr/src/java/vpanels/panels/sharemgr/org/opensolaris/filesystem/sharemgr/client/swing/CommonControl.java	Sat Aug 09 13:45:22 2008 -0400
+++ b/usr/src/java/vpanels/panels/sharemgr/org/opensolaris/filesystem/sharemgr/client/swing/CommonControl.java	Mon Aug 11 18:54:00 2008 -0700
@@ -186,22 +186,11 @@
 		new ActionListener() {
 		    @Override
 		    public void actionPerformed(ActionEvent e) {
-			final Navigator navigator = getNavigator();
-
 			// Launch navigation on non-event thread
-			navigator.asyncExec(
-			    new Runnable() {
-				@Override
-				public void run() {
-				    try {
-					navigator.goTo(CommonControl.this,
-					    ProtocolControl.ID,
-					    ProtocolControl.PARAM_PROTOCOL,
-					    pName);
-				    } catch (NavigationException ignore) {
-				    }
-				}
-			    });
+			getNavigator().goToAsync(CommonControl.this,
+			    ProtocolControl.ID,
+			    ProtocolControl.PARAM_PROTOCOL,
+			    pName);
 		    }
 		});
 	}
--- a/usr/src/java/vpanels/panels/sharemgr/org/opensolaris/filesystem/sharemgr/client/swing/EditShareAndGroupAction.java	Sat Aug 09 13:45:22 2008 -0400
+++ b/usr/src/java/vpanels/panels/sharemgr/org/opensolaris/filesystem/sharemgr/client/swing/EditShareAndGroupAction.java	Mon Aug 11 18:54:00 2008 -0700
@@ -56,29 +56,18 @@
 	final Navigator navigator = control.getNavigator();
 
 	// Launch navigation on non-event thread
-	navigator.asyncExec(
-	    new Runnable() {
-		@Override
-		public void run() {
-		    try {
-			if (o instanceof GroupManagedObject) {
-			    GroupManagedObject group = (GroupManagedObject)o;
+	if (o instanceof GroupManagedObject) {
+	    GroupManagedObject group = (GroupManagedObject)o;
 
-			    navigator.goTo(control, GroupControl.ID,
-				GroupControl.PARAM_GROUP, group.getName());
+	    navigator.goToAsync(control, GroupControl.ID,
+		GroupControl.PARAM_GROUP, group.getName());
 
-			} else if (o instanceof ShareManagedObject) {
-			    ShareManagedObject share = (ShareManagedObject)o;
+	} else if (o instanceof ShareManagedObject) {
+	    ShareManagedObject share = (ShareManagedObject)o;
 
-			    navigator.goTo(control, ShareControl.ID,
-				ShareControl.PARAM_GROUP,
-				share.getGroup().getName(),
-				ShareControl.PARAM_SHARE,
-				share.getShareId().getPath());
-			}
-		    } catch (NavigationException ignore) {
-		    }
-		}
-	    });
+	    navigator.goToAsync(control, ShareControl.ID,
+		ShareControl.PARAM_GROUP, share.getGroup().getName(),
+		ShareControl.PARAM_SHARE, share.getShareId().getPath());
+	}
     }
 }
--- a/usr/src/java/vpanels/panels/sharemgr/org/opensolaris/filesystem/sharemgr/client/swing/ProtocolControl.java	Sat Aug 09 13:45:22 2008 -0400
+++ b/usr/src/java/vpanels/panels/sharemgr/org/opensolaris/filesystem/sharemgr/client/swing/ProtocolControl.java	Mon Aug 11 18:54:00 2008 -0700
@@ -177,23 +177,10 @@
 		    new ActionListener() {
 			@Override
 			public void actionPerformed(ActionEvent e) {
-			    final Navigator navigator = getNavigator();
-
 			    // Launch navigation on non-event thread
-			    navigator.asyncExec(
-				new Runnable() {
-				    @Override
-				    public void run() {
-					try {
-					    navigator.goTo(
-						ProtocolControl.this,
-						SecurityModeControl.ID,
-						SecurityModeControl.
-						PARAM_SECURITY, sName);
-					} catch (NavigationException ignore) {
-					}
-				    }
-				});
+			    getNavigator().goToAsync(ProtocolControl.this,
+				SecurityModeControl.ID,
+				SecurityModeControl.PARAM_SECURITY, sName);
 			}
 		    });
 	    }
--- a/usr/src/java/vpanels/panels/sharemgr/org/opensolaris/filesystem/sharemgr/client/swing/ShareControl.java	Sat Aug 09 13:45:22 2008 -0400
+++ b/usr/src/java/vpanels/panels/sharemgr/org/opensolaris/filesystem/sharemgr/client/swing/ShareControl.java	Mon Aug 11 18:54:00 2008 -0700
@@ -119,23 +119,9 @@
 					    PARAM_SHARE,
 					    getCommon().getName()));
 
-				    final Navigator navigator = getNavigator();
-
 				    // Launch navigation on non-event thread
-				    navigator.asyncExec(
-					new Runnable() {
-					    @Override
-					    public void run() {
-						try {
-						    navigator.goTo(
-							ShareControl.this,
-							PendingControl.PARENT,
-							path);
-						} catch (NavigationException
-						    ignore) {
-						}
-					    }
-					});
+				    getNavigator().goToAsync(ShareControl.this,
+					PendingControl.PARENT, path);
 				}
 			    }
 			});
@@ -153,20 +139,9 @@
 			GroupControl.ID, Navigable.Util.toMap(
 			GroupControl.PARAM_GROUP, group.getName()));
 
-		    final Navigator navigator = getNavigator();
-
 		    // Launch navigation on non-event thread
-		    navigator.asyncExec(
-			new Runnable() {
-			    @Override
-			    public void run() {
-				try {
-				    navigator.goTo(ShareControl.this,
-					PendingControl.PARENT, path);
-				} catch (NavigationException ignore) {
-				}
-			    }
-			});
+		    getNavigator().goToAsync(ShareControl.this,
+			PendingControl.PARENT, path);
 		}
 	    });
 
--- a/usr/src/java/vpanels/panels/smf/org/opensolaris/system/smf/swing/EditInstanceAction.java	Sat Aug 09 13:45:22 2008 -0400
+++ b/usr/src/java/vpanels/panels/smf/org/opensolaris/system/smf/swing/EditInstanceAction.java	Mon Aug 11 18:54:00 2008 -0700
@@ -49,19 +49,9 @@
     {
 	// Assume valid selection
 	final String svc = getSelection()[0].getId();
-	final Navigator navigator = control_.getNavigator();
 
 	// Launch navigation on navigation thread
-	navigator.asyncExec(
-	    new Runnable() {
-		@Override
-		public void run() {
-		    try {
-			navigator.goTo(control_, InstanceEditControl.ID,
-			    InstanceEditControl.PARAM_SVC, svc);
-		    } catch (NavigationException ignore) {
-		    }
-		}
-	    });
+	control_.getNavigator().goToAsync(control_, InstanceEditControl.ID,
+	    InstanceEditControl.PARAM_SVC, svc);
     }
 }
--- a/usr/src/java/vpanels/panels/smf/org/opensolaris/system/smf/swing/EditServiceAction.java	Sat Aug 09 13:45:22 2008 -0400
+++ b/usr/src/java/vpanels/panels/smf/org/opensolaris/system/smf/swing/EditServiceAction.java	Mon Aug 11 18:54:00 2008 -0700
@@ -49,19 +49,9 @@
     {
 	// Assume valid selection
 	final String svc = getSelection()[0].getId();
-	final Navigator navigator = control_.getNavigator();
 
 	// Launch navigation on navigation thread
-	navigator.asyncExec(
-	    new Runnable() {
-		@Override
-		public void run() {
-		    try {
-			navigator.goTo(control_, ServiceEditControl.ID,
-			    ServiceEditControl.PARAM_SVC, svc);
-		    } catch (NavigationException ignore) {
-		    }
-		}
-	    });
+	control_.getNavigator().goToAsync(control_, ServiceEditControl.ID,
+	    ServiceEditControl.PARAM_SVC, svc);
     }
 }