package ro.nextreports.server.web.core.settings; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import org.apache.wicket.AttributeModifier; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.markup.html.tabs.ITab; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.util.visit.IVisit; import org.apache.wicket.util.visit.IVisitor; import ro.nextreports.server.web.core.section.tab.ImageTabbedPanel; import ro.nextreports.server.web.core.section.tab.SettingsTab; public class FullTabSettingsPanel extends Panel { private static final long serialVersionUID = -7954890890962023838L; public FullTabSettingsPanel(String id) { super(id); final List<ITab> tabs = new ArrayList<ITab>(); tabs.add(new SettingsTab(SettingsTab.GENERAL_SETTINGS, "Settings.general.title", "images/settings_general.png")); tabs.add(new SettingsTab(SettingsTab.LOOK_SETTINGS, "Settings.personalize.title", "images/settings_look.png")); tabs.add(new SettingsTab(SettingsTab.DISTRIBUTION_SETTINGS, "Settings.distribution.title", "images/settings_distribution.png")); tabs.add(new SettingsTab(SettingsTab.JASPER_SETTINGS, "Settings.jasper.title", "images/settings_jasper.png")); tabs.add(new SettingsTab(SettingsTab.SYNCHRONIZER_SETTINGS, "Settings.synchronizer.title", "images/settings_synchronizer.png")); tabs.add(new SettingsTab(SettingsTab.THREAD_POOL_SETTINGS, "Settings.thread.title", "images/settings_thread_pool.png")); tabs.add(new SettingsTab(SettingsTab.IFRAME_SETTINGS, "Settings.iframe.title", "images/settings_iframe.png")); tabs.add(new SettingsTab(SettingsTab.HISTORY_SETTINGS, "Settings.cleanHistory.title", "images/settings_history.png")); tabs.add(new SettingsTab(SettingsTab.INTEGRATION_SETTINGS, "Settings.integration.title", "images/settings_integration.png")); ImageTabbedPanel panel = new ImageTabbedPanel("tabs", tabs) { protected void afterInit() { setSelectedTab(0); } protected void onAjaxUpdate(AjaxRequestTarget target) { PanelVisitor visitor = new PanelVisitor(); visitChildren(visitor); visitor.getPanel().add(AttributeModifier.replace("class", "tab-panel-settings")); } }; panel.setSelectedTab(0); PanelVisitor visitor = new PanelVisitor(); panel.visitChildren(visitor); panel.get("tabs-container").add(AttributeModifier.replace("class", "tab-row-settings")); visitor.getPanel().add(AttributeModifier.replace("class", "tab-panel-settings")); add(panel); } private class PanelVisitor implements IVisitor<Component, Void>, Serializable { private static final long serialVersionUID = 1L; private Component visited; public Component getPanel() { return visited; } @Override public void component(Component object, IVisit<Void> visit) { if (object.getId().startsWith("panel")) { visited = object; } } } }