diff --git a/src/wa/server/WebAdminServer.java b/src/wa/server/WebAdminServer.java index a1f2e08..5ce913f 100755 --- a/src/wa/server/WebAdminServer.java +++ b/src/wa/server/WebAdminServer.java @@ -15,6 +15,7 @@ public class WebAdminServer { private PluginManager pluginManager; + public static void main(String[] args){ LogUtil.setGlobalLevel(Level.FINEST); LogUtil.setGlobalFormatter(new CompactLogFormatter()); diff --git a/src/wa/server/page/struct/WANavigation.java b/src/wa/server/page/struct/WANavigation.java index cdc382d..9711386 100755 --- a/src/wa/server/page/struct/WANavigation.java +++ b/src/wa/server/page/struct/WANavigation.java @@ -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 getRootNav(){ - return rootNav.getSubNavs(); + /** + * Will create a clone of the navigation tree with some request instance specific information + */ + public NavInstance createNavInstance(Map request){ + return createNavInstance(getBreadcrumb(request)); } - public static WANavigation createRootNav(String name){ - return rootNav.createSubNav(name); + private NavInstance createNavInstance(List 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 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 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 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(); } + } }