package com.psddev.cms.tool.page; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import javax.servlet.ServletException; import com.psddev.cms.tool.PageServlet; import com.psddev.cms.tool.ToolPageContext; import com.psddev.dari.util.ClassFinder; import com.psddev.dari.util.RoutingFilter; import com.psddev.dari.util.TypeDefinition; @RoutingFilter.Path(application = "cms", value = "profilePanel") @SuppressWarnings("serial") public class ProfilePanel extends PageServlet { @Override protected String getPermissionId() { return null; } @Override protected void doService(ToolPageContext page) throws IOException, ServletException { List<Class<? extends ProfilePanelTab>> tabClasses = new ArrayList<>(ClassFinder.Static.findClasses(ProfilePanelTab.class)); Collections.sort(tabClasses, Comparator.<Class<? extends ProfilePanelTab>, String>comparing(Class::getSimpleName).thenComparing(Class::getName)); tabClasses.remove(ProfileTab.class); tabClasses.add(0, ProfileTab.class); page.writeHeader(); page.writeStart("div", "class", "widget p-tud"); page.writeStart("h1"); page.writeHtml(page.getUser().getName()); page.writeEnd(); page.writeStart("div", "class", "tabbed tabbed-vertical"); for (Class<? extends ProfilePanelTab> c : tabClasses) { TypeDefinition.getInstance(c).newInstance().writeHtml(page); } page.writeEnd(); page.writeEnd(); page.writeFooter(); } }