]> source.dussan.org Git - vaadin-framework.git/commitdiff
Kickstart navigation automatically after UI.init(), remove Navigator.navigate() ... 43/343/1
authorJohannes Dahlström <johannesd@vaadin.com>
Thu, 22 Nov 2012 12:47:24 +0000 (14:47 +0200)
committerJohannes Dahlström <johannesd@vaadin.com>
Thu, 22 Nov 2012 12:47:24 +0000 (14:47 +0200)
Change-Id: I3537eb8f289e75234d6a292636019429967280c3

server/src/com/vaadin/navigator/Navigator.java
server/src/com/vaadin/ui/UI.java
uitest/src/com/vaadin/tests/navigator/NavigatorTest.java

index acfaf455164cf32f63cc136e1c53008b5d4b06df..72128adddfb4cd0725a3b662f137cd03a44ba15a 100644 (file)
@@ -360,20 +360,18 @@ public class Navigator implements Serializable {
 
     /**
      * Creates a navigator that is tracking the active view using URI fragments
-     * of the current {@link Page} and replacing the contents of a
-     * {@link ComponentContainer} with the active view.
-     * <p>
-     * In case the container is not on the current page, use another
-     * {@link Navigator#Navigator(Page, ViewDisplay)} with an explicitly created
-     * {@link ComponentContainerViewDisplay}.
+     * of the {@link Page} containing the given UI and replacing the contents of
+     * a {@link ComponentContainer} with the active view.
      * <p>
      * All components of the container are removed each time before adding the
      * active {@link View}. Views must implement {@link Component} when using
      * this constructor.
      * <p>
-     * After all {@link View}s and {@link ViewProvider}s have been registered,
-     * the application should trigger navigation to the current fragment using
-     * {@link #navigate()}.
+     * Navigation is automatically initiated after {@code UI.init()} if a
+     * navigator was created. If at a later point changes are made to the
+     * navigator, {@code navigator.navigateTo(navigator.getState())} may need to
+     * be explicitly called to ensure the current view matches the navigation
+     * state.
      * 
      * @param ui
      *            The UI to which this Navigator is attached.
@@ -387,18 +385,16 @@ public class Navigator implements Serializable {
 
     /**
      * Creates a navigator that is tracking the active view using URI fragments
-     * of the current {@link Page} and replacing the contents of a
-     * {@link SingleComponentContainer} with the active view.
-     * <p>
-     * In case the container is not on the current page, use another
-     * {@link Navigator#Navigator(Page, ViewDisplay)} with an explicitly created
-     * {@link SingleComponentContainerViewDisplay}.
+     * of the {@link Page} containing the given UI and replacing the contents of
+     * a {@link SingleComponentContainer} with the active view.
      * <p>
      * Views must implement {@link Component} when using this constructor.
      * <p>
-     * After all {@link View}s and {@link ViewProvider}s have been registered,
-     * the application should trigger navigation to the current fragment using
-     * {@link #navigate()}.
+     * Navigation is automatically initiated after {@code UI.init()} if a
+     * navigator was created. If at a later point changes are made to the
+     * navigator, {@code navigator.navigateTo(navigator.getState())} may need to
+     * be explicitly called to ensure the current view matches the navigation
+     * state.
      * 
      * @param ui
      *            The UI to which this Navigator is attached.
@@ -412,11 +408,13 @@ public class Navigator implements Serializable {
 
     /**
      * Creates a navigator that is tracking the active view using URI fragments
-     * of the Page containing the given UI.
+     * of the {@link Page} containing the given UI.
      * <p>
-     * After all {@link View}s and {@link ViewProvider}s have been registered,
-     * the application should trigger navigation to the current fragment using
-     * {@link #navigate()}.
+     * Navigation is automatically initiated after {@code UI.init()} if a
+     * navigator was created. If at a later point changes are made to the
+     * navigator, {@code navigator.navigateTo(navigator.getState())} may need to
+     * be explicitly called to ensure the current view matches the navigation
+     * state.
      * 
      * @param ui
      *            The UI to which this Navigator is attached.
@@ -430,13 +428,14 @@ public class Navigator implements Serializable {
     /**
      * Creates a navigator.
      * <p>
-     * When a custom navigation state manager is not needed, use the constructor
-     * {@link #Navigator(Page, ViewDisplay)} which uses a URI fragment based
-     * state manager.
+     * When a custom navigation state manager is not needed, use one of the
+     * other constructors which use a URI fragment based state manager.
      * <p>
-     * After all {@link View}s and {@link ViewProvider}s have been registered,
-     * the application should trigger navigation to the current fragment using
-     * {@link #navigate()}.
+     * Navigation is automatically initiated after {@code UI.init()} if a
+     * navigator was created. If at a later point changes are made to the
+     * navigator, {@code navigator.navigateTo(navigator.getState())} may need to
+     * be explicitly called to ensure the current view matches the navigation
+     * state.
      * 
      * @param ui
      *            The UI to which this Navigator is attached.
@@ -456,15 +455,6 @@ public class Navigator implements Serializable {
         this.display = display;
     }
 
-    /**
-     * Navigates to the current navigation state. This method should be called
-     * when all required {@link View}s, {@link ViewProvider}s, and
-     * {@link ViewChangeListener}s have been added to the navigator.
-     */
-    public void navigate() {
-        navigateTo(getStateManager().getState());
-    }
-
     /**
      * Navigates to a view and initialize the view with given parameters.
      * <p>
index a5e8f5e508c8d5658ab848e98f8cc5ebd7b99ac2..89a36e198ecd1e12661686ceb85d722af4b0e512 100644 (file)
@@ -552,6 +552,12 @@ public abstract class UI extends AbstractSingleComponentContainer implements
 
         // Call the init overridden by the application developer
         init(request);
+
+        Navigator navigator = getNavigator();
+        if (navigator != null) {
+            // Kickstart navigation if a navigator was attached in init()
+            navigator.navigateTo(navigator.getState());
+        }
     }
 
     /**
index 08832e5e82fd3c4821ea144734d819e70c9186d3..f35c8b876d138b577ba484937ffbbbee85fa3a30 100644 (file)
@@ -129,8 +129,6 @@ public class NavigatorTest extends UI {
 
             navi.setErrorView(new ErrorView());
 
-            navi.navigate();
-
             layout.addComponent(new NaviButton("list"));
             layout.addComponent(new NaviButton("edit"));
             layout.addComponent(new NaviButton("forbidden"));