Changed WANavigation to be modifiable

This commit is contained in:
Ziver Koc 2015-04-22 15:33:08 +00:00
parent ea9ed51910
commit 846ed78252
8 changed files with 124 additions and 14 deletions

View file

@ -83,7 +83,7 @@ public abstract class AbstractPage implements HttpPage{
tmpl.set("title", "WebAdmin");
tmpl.set("top-nav", context.getNavigation());
tmpl.set("side-nav-show", true);
tmpl.set("side-nav", context.getNavigation()[0].getSubNav());
tmpl.set("side-nav", context.getNavigation().get(0).getSubNav());
tmpl.set("alerts", context.getAlerts());
//tmpl.set("footer", null);

View file

@ -0,0 +1,70 @@
/*
* Copyright (c) 2015 ezivkoc
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package wa.server.page;
import wa.server.WAContext;
import wa.server.page.struct.WANavigation;
import wa.server.plugin.WAService;
import wa.server.plugin.WAStatus;
import zutil.net.http.HttpHeaderParser;
import zutil.parser.DataNode;
import zutil.parser.Templator;
import zutil.plugin.PluginManager;
import java.util.ArrayList;
import java.util.Map;
/**
* Created by Ziver on 2015-04-06.
*/
public class ServicesPage extends AbstractPage{
private ArrayList<WAService> plugins;
public ServicesPage(PluginManager pluginManager){
this.plugins = pluginManager.toArray(WAService.class);
WANavigation nav = new WANavigation("Services");
for(WAService plugin : plugins)
nav.addSubNav(new WANavigation(plugin.getName()));
WANavigation.getRootNav().addSubNav(nav);
}
@Override
public Templator htmlResponse(WAContext context,
HttpHeaderParser client_info,
Map<String, Object> session,
Map<String, String> cookie,
Map<String, String> request) {
return null;
}
public DataNode jsonResponse(WAContext context,
HttpHeaderParser client_info,
Map<String, Object> session,
Map<String, String> cookie,
Map<String, String> request){
return null;
}
}

View file

@ -23,6 +23,7 @@
package wa.server.page;
import wa.server.WAContext;
import wa.server.page.struct.WANavigation;
import wa.server.plugin.WAStatus;
import zutil.net.http.HttpHeaderParser;
import zutil.parser.DataNode;
@ -41,6 +42,11 @@ public class StatusPage extends AbstractPage{
public StatusPage(PluginManager pluginManager){
this.plugins = pluginManager.toArray(WAStatus.class);
WANavigation nav = new WANavigation("Status");
for(WAStatus plugin : plugins)
nav.addSubNav(new WANavigation(plugin.getName()));
WANavigation.getRootNav().addSubNav(nav);
}

View file

@ -30,19 +30,46 @@ import java.util.List;
* Created by Ziver on 2015-04-02.
*/
public class WANavigation {
private static WANavigation rootNav;
private String name;
private List<WANavigation> sub_nav;
private ArrayList<WANavigation> subNavs;
public WANavigation(String name) {
this.name = name;
this.subNavs = new ArrayList<>();
}
public WANavigation(String name, WANavigation[] sub_nav) {
this.name = name;
this.sub_nav = Arrays.asList(sub_nav);
this(name);
this.subNavs.addAll(Arrays.asList(sub_nav));
}
public Object getSubNav() {
return sub_nav;
public void addSubNav(WANavigation subNav) {
this.subNavs.add(subNav);
}
public List<WANavigation> getSubNav() {
return subNavs;
}
public Object getSubNav(String name) {
int index = subNavs.indexOf(name);
if(index >= 0)
return subNavs.get(index);
return null;
}
public boolean equals(Object o){
if(o instanceof String)
return this.name.equals(o);
return this == o ||
(o != null && this.name.equals(((WANavigation)o).name));
}
public static WANavigation getRootNav(){
if(rootNav == null)
rootNav = new WANavigation("root_nav");
return rootNav;
}
}