/** * (C) Copyright 2013 Jabylon (http://www.jabylon.org) and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ /** * */ package org.jabylon.rest.ui.wicket.config; import java.util.ArrayList; import java.util.EnumSet; import java.util.List; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.image.Image; import org.apache.wicket.markup.html.link.AbstractLink; import org.apache.wicket.markup.html.link.BookmarkablePageLink; import org.apache.wicket.markup.html.link.ExternalLink; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; import org.apache.wicket.markup.html.panel.GenericPanel; import org.apache.wicket.model.Model; import org.apache.wicket.model.StringResourceModel; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.request.resource.ResourceReference; import org.jabylon.rest.ui.util.GlobalResources; import org.jabylon.rest.ui.util.WicketUtil; /** * @author jutzig.dev@googlemail.com * */ public class SettingsOverviewPanel extends GenericPanel<Void> { private static final long serialVersionUID = 1L; public SettingsOverviewPanel(String id) { super(id); List<ConfigKind> configs = new ArrayList<ConfigKind>(EnumSet.allOf(ConfigKind.class)); ListView<ConfigKind> view = new ListView<ConfigKind>("config",configs) { private static final long serialVersionUID = 1L; @Override protected void populateItem(ListItem<ConfigKind> item) { AbstractLink link = item.getModelObject().constructLink("link"); item.add(link); item.add(new Label("description",new StringResourceModel(item.getModelObject().getDescription(),item,null))); link.add(new Image("image", item.getModelObject().getIcon())); link.add(new Label("text",new StringResourceModel(item.getModelObject().getName(),item,null))); } }; add(view); } } enum ConfigKind { WORKSPACE("projects.title","projects.description", GlobalResources.IMG_WORKSPACE_SETTINGS){ @Override public Link<Void> constructLink(String id) { PageParameters params = new PageParameters(); params.set(0, "workspace"); BookmarkablePageLink<Void> link = new BookmarkablePageLink<Void>(id, SettingsPage.class, params); return link; } }, SYSTEM("system.title","system.description", GlobalResources.IMG_SYSTEM_SETTINGS) { @Override public AbstractLink constructLink(String id) { //TODO: better to do this dynamic with e.g. an extension point/whiteboard pattern return new ExternalLink(id, Model.of(WicketUtil.getContextPath() + "/settings/system")); } }, LOGGING("logging.title","logging.description", GlobalResources.IMG_LOG_SETTINGS) { @Override public AbstractLink constructLink(String id) { //TODO: better to do this dynamic with e.g. an extension point/whiteboard pattern return new ExternalLink(id, Model.of(WicketUtil.getContextPath() + "/settings/log")); } } , SECURITY("security.title","security.description", GlobalResources.IMG_SECURITY_SETTINGS) { @Override public AbstractLink constructLink(String id) { PageParameters params = new PageParameters(); params.set(0, "security"); BookmarkablePageLink<Void> link = new BookmarkablePageLink<Void>(id, SettingsPage.class, params); return link; } }; /** the property id of the name */ private String name; /** the property id of the description */ private String description; /** the icon of the setting */ private ResourceReference icon; private ConfigKind(String name, String description, ResourceReference icon) { this.name = name; this.description = description; this.icon = icon; } public String getDescription() { return description; } public String getName() { return name; } public ResourceReference getIcon() { return icon; } public abstract AbstractLink constructLink(String id); }