/** * Removes a view from navigator. * <p> * This method only applies to views registered using * {@link #addView(String, View)} or {@link #addView(String, Class)}. * * @param viewName * name of the view to remove */ public void removeView(String viewName) { Iterator<ViewProvider> it = providers.iterator(); while (it.hasNext()) { ViewProvider provider = it.next(); if (provider instanceof StaticViewProvider) { StaticViewProvider staticProvider = (StaticViewProvider) provider; if (staticProvider.getViewName().equals(viewName)) { it.remove(); } } else if (provider instanceof ClassBasedViewProvider) { ClassBasedViewProvider classBasedProvider = (ClassBasedViewProvider) provider; if (classBasedProvider.getViewName().equals(viewName)) { it.remove(); } } } }
/** * Registers a view class for a view name. * <p> * Registering another view with a name that is already registered * overwrites the old registration of the same type. * <p> * A new view instance is created every time a view is requested. * * @param viewName * String that identifies a view (not null nor empty string) * @param viewClass * {@link View} class to instantiate when a view is requested * (not null) */ public void addView(String viewName, Class<? extends View> viewClass) { // Check parameters if (viewName == null || viewClass == null) { throw new IllegalArgumentException( "view and viewClass must be non-null"); } removeView(viewName); addProvider(new ClassBasedViewProvider(viewName, viewClass)); }