Initial impl of Navigation instance class

This commit is contained in:
Ziver Koc 2016-04-06 13:03:37 +02:00
parent e2d596152d
commit f09ab62d52
2 changed files with 58 additions and 9 deletions

View file

@ -15,6 +15,7 @@ public class WebAdminServer {
private PluginManager pluginManager;
public static void main(String[] args){
LogUtil.setGlobalLevel(Level.FINEST);
LogUtil.setGlobalFormatter(new CompactLogFormatter());

View file

@ -25,7 +25,7 @@ package wa.server.page.struct;
import java.util.*;
/**
* A class representing a navigation hierarchy.
* A class representing a navigation hierarchy/tree for a web application.
*
* Created by Ziver on 2015-04-02.
*/
@ -96,14 +96,18 @@ public class WANavigation implements Iterable{
public String getUrl(){
return url;
}
public Object getResource(){
return resource;
private void setParentNav(WANavigation nav){
this.parentNav = nav;
}
/**
* Assign a resource object specific to this navigation object.
* This can be used if target page needs some additional information.
*/
public void setResource(Object obj){
resource = obj;
}
private void setParentNav(WANavigation nav){
this.parentNav = nav;
public Object getResource(){
return resource;
}
/**
* Sets the weight of this navigation object. The weight is
@ -126,11 +130,18 @@ public class WANavigation implements Iterable{
}
public static List<WANavigation> getRootNav(){
return rootNav.getSubNavs();
/**
* Will create a clone of the navigation tree with some request instance specific information
*/
public NavInstance createNavInstance(Map<String, String> request){
return createNavInstance(getBreadcrumb(request));
}
public static WANavigation createRootNav(String name){
return rootNav.createSubNav(name);
private NavInstance createNavInstance(List<WANavigation> activeList){
NavInstance instance = new NavInstance(this);
instance.setActive(activeList.contains(this));
for (WANavigation nav : subNav)
instance.addSubNav(nav.createNavInstance(activeList));
return instance;
}
/**
@ -149,4 +160,41 @@ public class WANavigation implements Iterable{
}
return list;
}
public static List<WANavigation> getRootNav(){
return rootNav.getSubNavs();
}
public static WANavigation createRootNav(String name){
return rootNav.createSubNav(name);
}
public static class NavInstance{
private WANavigation nav;
private boolean active;
private ArrayList<NavInstance> subNavs;
protected NavInstance(WANavigation nav){
this.nav = nav;
this.subNavs = new ArrayList<>();
}
protected void setActive(boolean active){
this.active = active;
}
protected void addSubNav(NavInstance subNav){
subNavs.add(subNav);
}
public boolean isActive(){
return active;
}
public List<NavInstance> getSubNavs() { return subNavs; }
// Mirror getters from WANavigation
public String getName(){ return nav.getName(); }
public String getUrl(){ return nav.getUrl(); }
public Object getResource(){ return nav.getResource(); }
}
}