T
- The data typepublic class NavigationModel<T>
extends java.lang.Object
implements java.io.Serializable
Apply
component.
A typical usage is that you can get each NavigationLevel
by NavigationLevel.getChild()
recursively.
NavigationModel
. Add some data by calling put
method.
The data is associated with a path. Data is stored like a tree hierarchy.
NavigationModel<String> navModel = new NavigationModel<String>();
navModel.put("Step 1", "step1.zul");
navModel.put("Step 1/Step 1-1", "step1-1.zul");
navModel.put("Step 2", "step2.zul");
navModel.put("Step 2/Step 2-1", "step2-1.zul");
navModel.put("Step 2/Step 2-2", "step2-2.zul");
navModel.put("Step 2/Step 2-2/Step 2-2-1", "step2-2-1.zul");
navModel.put("Step 2/Step 2-2/Step 2-2-2", "step2-2-2.zul");
navModel.put("Step 3", "step3.zul");
By using <apply>
tags, we can include and navigate this zul files in a single page.
Calling navigateTo
can navigate to the path.
The context
is a Map
to put something useful.
<apply level1="@load(vm.navModel.root)"
templateURI="@load(level1.current)"
context="@load(level1.context)"/>
By using the same approach, get child level navigation recursively in these included zul files.
<apply level2="@load(level1.child)"
templateURI="@load(level2.current)"
context="@load(level2.context)"/>
Add a link or button to navigate what you want in the same level.
For instance, level1
can be used to navigate through Step 1 to Step 3.
<a label="Step 2"
onClick='level1.setContext(Collections.singletonMap("hello", "world")).navigateTo("Step 2")' />
Section B/Sub Section C/My Item
.
By default it is separated by /
symbol and recognized as keys in each level.
Sometimes we may want to use /
in the key name. Using a path string could get the unexpected result.
There are another methods that accept String[]
instead of path string to avoid this issue.
addEventListener(EventListener)
will be invoked.
The event object is NavigationEvent
.Apply
,
Serialized FormConstructor and Description |
---|
NavigationModel() |
Modifier and Type | Method and Description |
---|---|
void |
addEventListener(EventListener<NavigationEvent<T>> listener)
Adds a listener to the list that's notified each time a change
to the model occurs.
|
void |
append(java.lang.String[] levels,
java.lang.String key,
T data)
Appends the data after the specific path.
|
void |
append(java.lang.String path,
java.lang.String key,
T data)
Appends the data after the specific path.
|
protected void |
fireEvent(NavigationLevel<T> level,
NavigationEvent.Type type,
org.zkoss.zuti.zul.NavigationNode<T> node) |
NavigationLevel<T> |
getRoot()
Gets the first navigation level.
|
void |
insertBefore(java.lang.String[] levels,
java.lang.String key,
T data)
Inserts the data before the item of specific levels.
|
void |
insertBefore(java.lang.String path,
java.lang.String key,
T data)
Inserts the data before the specific path.
|
void |
navigateTo(java.lang.String key)
A shortcut of
getRoot() . |
void |
navigateToByPath(java.lang.String path)
Navigates to the specified path.
|
void |
navigateToByPath(java.lang.String[] levels)
Navigates to the specified levels.
|
T |
put(java.lang.String[] levels,
T data)
Puts the data to the path.
|
T |
put(java.lang.String path,
T data)
Puts the data to the path.
|
T |
remove(java.lang.String path)
Removes the data associated with the specific path.
|
T |
remove(java.lang.String[] levels)
Removes the data associated with the specific levels.
|
void |
removeEventListener(EventListener<NavigationEvent<T>> listener)
Removes a listener from the list that's notified each time
a change to the model occurs.
|
public T put(java.lang.String path, T data)
path
exists.
If any /
symbol is included in the path string,
it is suggested to call put(String[], Object)
instead.path
- a path string. Will be separated into levels by /
symbols. Like A/B/C
data
- a datapath
, or null
if there was no mapping.public T put(java.lang.String[] levels, T data)
levels
exists.levels
- an array that contains each level keys as a pathdata
- a datalevels
, or null
if there was no mapping.public void append(java.lang.String path, java.lang.String key, T data)
path
- a path string. Will be separated into levels by /
symbols. Like A/B/C
key
- an item key. Must be unique in the same leveldata
- a datajava.lang.IllegalArgumentException
- if the path is invalid, the key is invalid or duplicated in the same levelpublic void append(java.lang.String[] levels, java.lang.String key, T data)
levels
- an array that contains each level keys as a pathkey
- an item key. Must be unique in the same leveldata
- a datajava.lang.IllegalArgumentException
- if the path is invalid, the key is invalid or duplicated in the same levelpublic void insertBefore(java.lang.String path, java.lang.String key, T data)
path
- a path string. Will be separated into levels by /
symbols. Like A/B/C
key
- an item key. Must be unique in the same leveldata
- a datajava.lang.IllegalArgumentException
- if the path is invalid, the key is invalid or duplicated in the same levelpublic void insertBefore(java.lang.String[] levels, java.lang.String key, T data)
levels
- an array that contains each level keys as a pathkey
- an item key. Must be unique in the same leveldata
- a datajava.lang.IllegalArgumentException
- if the path is invalid, the key is invalid or duplicated in the same levelpublic T remove(java.lang.String path)
path
- a path string. Will be separated into levels by /
symbols. Like A/B/C
java.lang.IllegalArgumentException
- the path is invalidpublic T remove(java.lang.String[] levels)
levels
- an array that contains each level keys as a pathjava.lang.IllegalArgumentException
- the path is invalidpublic void navigateTo(java.lang.String key)
getRoot()
.navigateTo(String)
.key
- the item keypublic NavigationLevel<T> getRoot()
public void navigateToByPath(java.lang.String path)
path
- a path string. Will be separated into levels by /
symbols. Like A/B/C
java.lang.IllegalArgumentException
- if the path is invalidpublic void navigateToByPath(java.lang.String[] levels)
levels
- an array that contains each level keys as a pathjava.lang.IllegalArgumentException
- if the path is invalidpublic void addEventListener(EventListener<NavigationEvent<T>> listener)
listener
- Listener objectpublic void removeEventListener(EventListener<NavigationEvent<T>> listener)
listener
- Listener objectprotected void fireEvent(NavigationLevel<T> level, NavigationEvent.Type type, org.zkoss.zuti.zul.NavigationNode<T> node)
Copyright © 2005-2021 Potix Corporation. All Rights Reserved.