diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/ui/admin/ApplicationInstanceForm.java b/ccm-cms/src/main/java/org/librecms/contentsection/ui/admin/ApplicationInstanceForm.java
deleted file mode 100644
index 7f6a35651..000000000
--- a/ccm-cms/src/main/java/org/librecms/contentsection/ui/admin/ApplicationInstanceForm.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package org.librecms.contentsection.ui.admin;
-
-import com.arsdigita.bebop.FormData;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.event.FormProcessListener;
-import com.arsdigita.bebop.event.FormSectionEvent;
-import com.arsdigita.ui.admin.applications.DefaultApplicationInstanceForm;
-
-import org.libreccm.cdi.utils.CdiUtil;
-import org.librecms.contentsection.ContentSectionManager;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class ApplicationInstanceForm extends DefaultApplicationInstanceForm {
-
- public ApplicationInstanceForm(
- final String name,
- final ParameterSingleSelectionModel selectedAppType,
- final ParameterSingleSelectionModel selectedAppInstance) {
-
- super(name, selectedAppType, selectedAppInstance);
- }
-
- @Override
- protected FormProcessListener createProcessListener() {
- return (FormSectionEvent e) -> {
- final PageState state = e.getPageState();
- if (getSaveCancelSection().getSaveButton().isSelected(state)) {
- final FormData data = e.getFormData();
-
- final String primaryUrlData = data.getString(
- "new_instance_primary_url");
-
- final ContentSectionManager manager = CdiUtil.createCdiUtil()
- .findBean(ContentSectionManager.class);
-
- manager.createContentSection(primaryUrlData);
- }
- };
- }
-
-}
diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/ui/admin/SettingsPane.java b/ccm-cms/src/main/java/org/librecms/contentsection/ui/admin/SettingsPane.java
deleted file mode 100644
index 07e6e6be9..000000000
--- a/ccm-cms/src/main/java/org/librecms/contentsection/ui/admin/SettingsPane.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package org.librecms.contentsection.ui.admin;
-
-import com.arsdigita.bebop.ActionLink;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.Link;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.ui.admin.applications.AbstractAppSettingsPane;
-import com.arsdigita.web.RedirectSignal;
-import com.arsdigita.web.URL;
-
-import org.librecms.CmsConstants;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class SettingsPane extends AbstractAppSettingsPane {
-
- public SettingsPane(
- final ParameterSingleSelectionModel selectedAppType,
- final ParameterSingleSelectionModel selectedAppInstance) {
- super(selectedAppType, selectedAppInstance);
- }
-
- @Override
- protected void createWidgets() {
- final Label label = new Label(new GlobalizedMessage(
- "contentsection.ui.admin.app_note", CmsConstants.CMS_BUNDLE));
- add(label);
-
- final ActionLink link = new ActionLink(new GlobalizedMessage(
- "contentsection.ui.admin.link_app", CmsConstants.CMS_BUNDLE));
- link.addActionListener(e -> {
- final PageState state = e.getPageState();
- final String primaryUrl;
- if (getSelectedAppInstance(state).get().getPrimaryUrl().startsWith(
- "/")) {
- primaryUrl = getSelectedAppInstance(state).get().getPrimaryUrl();
- } else {
- primaryUrl = String.format(
- "/%s",
- getSelectedAppInstance(state).get().getPrimaryUrl());
- }
- throw new RedirectSignal(
- URL.there(state.getRequest(), primaryUrl, null),
- false);
- });
- add(link);
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/AdminServlet.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/AdminServlet.java
deleted file mode 100644
index b3d3b0bb1..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/AdminServlet.java
+++ /dev/null
@@ -1,324 +0,0 @@
-/*
- * Copyright (C) 2012 Peter Boy All Rights Reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-package com.arsdigita.ui.admin;
-
-import com.arsdigita.ui.admin.usersgroupsroles.UsersGroupsRolesTab;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.Page;
-import com.arsdigita.bebop.PageFactory;
-import com.arsdigita.bebop.TabbedPane;
-import com.arsdigita.dispatcher.AccessDeniedException;
-import com.arsdigita.dispatcher.DispatcherHelper;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.templating.Templating;
-import com.arsdigita.ui.SiteBanner;
-import com.arsdigita.ui.UserBanner;
-import com.arsdigita.ui.admin.applications.ApplicationsTab;
-import com.arsdigita.ui.admin.categories.CategoriesTab;
-import com.arsdigita.ui.admin.configuration.ConfigurationTab;
-import com.arsdigita.ui.admin.importexport.ImportExportTab;
-import com.arsdigita.ui.admin.pagemodels.PageModelsTab;
-import com.arsdigita.ui.admin.sites.SitesTab;
-import com.arsdigita.web.BaseApplicationServlet;
-import com.arsdigita.web.LoginSignal;
-import com.arsdigita.xml.Document;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.shiro.subject.Subject;
-import org.libreccm.security.PermissionChecker;
-import org.libreccm.web.CcmApplication;
-
-import java.io.IOException;
-
-import javax.enterprise.inject.spi.CDI;
-import javax.servlet.ServletContext;
-
-import javax.servlet.ServletException;
-import javax.servlet.annotation.WebServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.configuration.ConfigurationManager;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- * Web Developer Support Application Servlet class, central entry point to
- * create and process the applications UI.
- *
- * We should have subclassed BebopApplicationServlet but couldn't overwrite
- * doService() method to add permission checking. So we use our own page
- * mapping. The general logic is the same as for BebopApplicationServlet.
- *
- * {
- *
- * @see com.arsdigita.bebop.page.BebopApplicationServlet}
- *
- * @author Jens Pelzetter
- * @author pb
- */
-@WebServlet(urlPatterns = {ADMIN_SERVLET_PATH})
-public class AdminServlet extends BaseApplicationServlet {
-
- private static final long serialVersionUID = -3912367600768871630L;
-
- private static final Logger LOGGER = LogManager
- .getLogger(AdminServlet.class);
-
- /**
- * Logger instance for debugging
- */
- //private static final Logger LOGGER = Logger.getLogger(AdminServlet.class.getName());
- /**
- * URL (pathinfo) -> Page object mapping. Based on it (and the http request
- * url) the doService method to selects a page to display
- */
-// private final Map pages = new HashMap();
- private Page adminPage;
-
- /**
- * User extension point, overwrite this method to setup a URL - page mapping
- *
- * @throws ServletException
- */
- @Override
- public void doInit() throws ServletException {
- //addPage("/", buildAdminIndexPage()); // index page at address ~/ds
- // addPage("/index.jsp", buildIndexPage()); // index page at address ~/ds
-
- adminPage = PageFactory.buildPage("admin", "LibreCCM NG Admin");
-// adminPage.addGlobalStateParam(USER_ID_PARAM);
-// adminPage.addGlobalStateParam(GROUP_ID_PARAM);
-// adminPage.addGlobalStateParam(APPLICATIONS_ID_PARAM);
-
- adminPage.add(new UserBanner());
- adminPage.add(new SiteBanner());
-
- //Create tab bar
- final TabbedPane tabbedPane = new TabbedPane();
- tabbedPane.setIdAttr("page-body");
-
- tabbedPane.addTab(
- new Label(new GlobalizedMessage("ui.admin.tab.applications",
- ADMIN_BUNDLE)),
- new ApplicationsTab());
-
- tabbedPane.addTab(
- new Label(new GlobalizedMessage("ui.admin.tab.sites.title",
- ADMIN_BUNDLE)),
- new SitesTab());
-
- tabbedPane.addTab(new Label(new GlobalizedMessage("ui.admin.tab.pagemodels.title",
- ADMIN_BUNDLE)),
- new PageModelsTab());
-
- tabbedPane.addTab(
- new Label(new GlobalizedMessage(
- "ui.admin.tab.users_groups_roles.title",
- ADMIN_BUNDLE)),
- new UsersGroupsRolesTab());
-
- tabbedPane.addTab(
- new Label(new GlobalizedMessage("ui.admin.tab.categories.title",
- ADMIN_BUNDLE)),
- new CategoriesTab());
-
- tabbedPane.addTab(
- new Label(new GlobalizedMessage("ui.admin.tab.configuration.title",
- ADMIN_BUNDLE)),
- new ConfigurationTab());
-
-// tabbedPane.addTab(
-// new Label(new GlobalizedMessage("ui.admin.tab.workflows.title",
-// ADMIN_BUNDLE)),
-// new WorkflowAdminTab());
-
- tabbedPane.addTab(
- new Label(new GlobalizedMessage("ui.admin.tab.importexport.title",
- ADMIN_BUNDLE)),
- new ImportExportTab());
-
- tabbedPane.addTab(
- new Label(new GlobalizedMessage("ui.admin.tab.sysinfo.title",
- ADMIN_BUNDLE)),
- new SystemInformationTab());
-
- final ServletContext servletContext = getServletContext();
- final String develMode = servletContext
- .getInitParameter("ccm.develmode");
- if (develMode != null && "true".equals(develMode.toLowerCase())) {
-
- }
-
- //page.add(new Label("admin"));
- adminPage.add(tabbedPane);
-
- adminPage.lock();
-
- }
-
- /**
- * Central service method, checks for required permission, determines the
- * requested page and passes the page object to PresentationManager.
- *
- * @param sreq
- * @param sresp
- * @param app
- *
- * @throws ServletException
- * @throws IOException
- */
- @Override
- public final void doService(final HttpServletRequest sreq,
- final HttpServletResponse sresp,
- final CcmApplication app) throws
- ServletException, IOException {
- // /////// Some preparational steps ///////////////
- /* Determine access privilege: only logged in users may access */
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final Subject subject = cdiUtil.findBean(Subject.class);
- final PermissionChecker permissionChecker = cdiUtil.findBean(
- PermissionChecker.class);
-
- final ConfigurationManager confManager = CDI.current().select(
- ConfigurationManager.class).get();
- if (confManager == null) {
- throw new IllegalStateException();
- }
-
- LOGGER.debug("Checking if subject {} is authenticated...",
- subject.toString());
- LOGGER.debug("Current session is: {}", sreq.getSession().getId());
- LOGGER.debug("Current Shiro session is {}",
- subject.getSession().getId().toString());
- if (!subject.isAuthenticated()) {
- LOGGER.debug(
- "Subject {} is not authenticated, redirecting to login...",
- subject.toString());
- throw new LoginSignal(sreq);
- }
-
- /* Determine access privilege: Admin privileges must be granted */
- LOGGER.debug(
- "Subject is loggedin, checking if subject has required permissions...");
- if (!permissionChecker.isPermitted("admin")) {
- LOGGER.debug("Subject does *not* have required permissions. "
- + "Access denied.");
- throw new AccessDeniedException("User is not an administrator");
- }
-
- LOGGER.debug("Serving admin page...");
- /* Want admin to always show the latest stuff... */
- DispatcherHelper.cacheDisable(sresp);
-
- // /////// Everything OK here - DO IT ///////////////
-// String pathInfo = sreq.getPathInfo();
-// Assert.exists(pathInfo, "String pathInfo");
-// if (pathInfo.length() > 1 && pathInfo.endsWith("/")) {
-// /* NOTE: ServletAPI specifies, pathInfo may be empty or will
-// * start with a '/' character. It currently carries a
-// * trailing '/' if a "virtual" page, i.e. not a real jsp, but
-// * result of a servlet mapping. But Application requires url
-// * NOT to end with a trailing '/' for legacy free applications. */
-// pathInfo = pathInfo.substring(0, pathInfo.length() - 1);
-// }
-// final Page page = pages.get(pathInfo);
-// if (page == null) {
-// sresp.sendError(404, "No such page for path " + pathInfo);
-// } else {
-// final Document doc = page.buildDocument(sreq, sresp);
-// Templating.getPresentationManager().servePage(doc, sreq, sresp);
-// }
- final Document doc = adminPage.buildDocument(sreq, sresp);
- Templating.getPresentationManager().servePage(doc, sreq, sresp);
- }
-
- /**
- * Adds one pair of Url - Page to the internal hash map, used as a cache.
- *
- * @param pathInfo url stub for a page to display
- * @param page Page object to display
- */
-// private void addPage(final String pathInfo, final Page page) {
-// Assert.exists(pathInfo, String.class);
-// Assert.exists(page, Page.class);
-// // Current Implementation requires pathInfo to start with a leading '/'
-// // SUN Servlet API specifies: "PathInfo *may be empty* or will start
-// // with a '/' character."
-// Assert.isTrue(pathInfo.charAt(0) == '/', "path starts not with '/'");
-//
-// pages.put(pathInfo, page);
-// }
- /**
- * Index page for the admin section
- */
-// private Page buildAdminIndexPage() {
-//
-// final Page page = PageFactory.buildPage("admin", PAGE_TITLE_LABEL);
-// page.addGlobalStateParam(USER_ID_PARAM);
-// page.addGlobalStateParam(GROUP_ID_PARAM);
-// page.addGlobalStateParam(APPLICATIONS_ID_PARAM);
-//
-// /*
-// * Create User split panel.
-// * Note: Will change soon.
-// */
-// //final AdminSplitPanel userSplitPanel = new AdminSplitPanel(USER_NAVBAR_TITLE);
-//// final UserBrowsePane browsePane = new UserBrowsePane();
-//// userSplitPanel.addTab(USER_TAB_SUMMARY, new UserSummaryPane(userSplitPanel, browsePane));
-//// userSplitPanel.addTab(USER_TAB_BROWSE, browsePane);
-//// userSplitPanel.addTab(USER_TAB_SEARCH, new UserSearchPane(userSplitPanel, browsePane));
-//// userSplitPanel.addTab(USER_TAB_CREATE_USER, new CreateUserPane(userSplitPanel));
-// // Create the Admin's page tab bar
-// final TabbedPane tabbedPane = new TabbedPane();
-// tabbedPane.setIdAttr("page-body");
-//
-// /**
-// * Create and add info tab
-// */
-// //tabbedPane.addTab(INFO_TAB_TITLE, new AdminInfoTab());
-// /*
-// * Create and add the user and group tabs.
-// */
-// //tabbedPane.addTab(USER_TAB_TITLE, userSplitPanel);
-// final GroupAdministrationTab groupAdminTab
-// = new GroupAdministrationTab();
-// tabbedPane.addTab(USER_TAB_TITLE, new UserAdministrationTab(tabbedPane,
-// groupAdminTab));
-// tabbedPane.addTab(GROUP_TAB_TITLE, groupAdminTab);
-//
-// /*
-// * Create application administration panel
-// */
-// tabbedPane.addTab(APPLICATIONS_TAB_TITLE,
-// new ApplicationsAdministrationTab());
-//
-//// browsePane.setTabbedPane(tabbedPane);
-//// browsePane.setGroupAdministrationTab(groupAdminTab);
-// //Add System information tab
-// tabbedPane.addTab(SYSINFO_TAB_TITLE, new SystemInformationTab());
-//
-// page.add(tabbedPane);
-// page.lock();
-//
-// return page;
-// }
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/GlobalizationUtil.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/GlobalizationUtil.java
deleted file mode 100644
index 0641f5c4a..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/GlobalizationUtil.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2013 Jens Pelzetter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-package com.arsdigita.ui.admin;
-
-import com.arsdigita.globalization.GlobalizedMessage;
-
-/**
- * Globalization Util for admin classes
- *
- * @author Jens Pelzetter
- * @version $Id$
- */
-public class GlobalizationUtil {
-
- private static final String BUNDLE_NAME = "com.arsdigita.ui.admin.AdminResources";
-
- public static GlobalizedMessage globalize(final String key) {
- return new GlobalizedMessage(key, BUNDLE_NAME);
- }
-
- public static GlobalizedMessage globalize(final String key, final Object[] args) {
- return new GlobalizedMessage(key, BUNDLE_NAME, args);
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/JpqlConsole.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/JpqlConsole.java
deleted file mode 100644
index a834ad223..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/JpqlConsole.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright (C) 2017 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin;
-
-import com.arsdigita.bebop.BoxPanel;
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.SaveCancelSection;
-import com.arsdigita.bebop.SegmentedPanel;
-import com.arsdigita.bebop.SimpleComponent;
-import com.arsdigita.bebop.form.TextArea;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.toolbox.ui.LayoutPanel;
-import com.arsdigita.xml.Element;
-import java.beans.IntrospectionException;
-import java.beans.Introspector;
-import java.beans.PropertyDescriptor;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class JpqlConsole extends LayoutPanel {
-
- private static final Logger LOGGER = LogManager.getLogger(JpqlConsole.class);
-
- private final Form queryForm;
- private final TextArea queryArea;
-
- public JpqlConsole() {
- super();
-
- final SegmentedPanel panel = new SegmentedPanel();
-
- queryForm = new Form("jpql-console-query-form");
-
- queryArea = new TextArea("jpql-console-query-area");
- queryArea.setCols(132);
- queryArea.setRows(42);
-
- final BoxPanel hpanel = new BoxPanel(BoxPanel.HORIZONTAL);
- hpanel.add(new Label(new GlobalizedMessage(
- "ui.admin.jpqlconsole.query.label",
- AdminUiConstants.ADMIN_BUNDLE)));
- hpanel.add(queryArea);
-
- final BoxPanel vpanel = new BoxPanel(BoxPanel.VERTICAL);
- vpanel.add(hpanel);
- final SaveCancelSection saveCancelSection = new SaveCancelSection();
- saveCancelSection.getSaveButton().setLabel(
- new GlobalizedMessage("ui.admin.jpqlconsole.query.execute",
- AdminUiConstants.ADMIN_BUNDLE));
- saveCancelSection.getCancelButton().setLabel(
- new GlobalizedMessage("ui.admin.jpqlconsole.query.clear",
- AdminUiConstants.ADMIN_BUNDLE));
- vpanel.add(saveCancelSection);
-
- queryForm.add(hpanel);
-
- panel.addSegment(new Label(new GlobalizedMessage(
- "ui.admin.jpqlconsole.query.segment.title",
- AdminUiConstants.ADMIN_BUNDLE)),
- queryForm);
-
- setBody(panel);
- }
-
- private class QueryResults extends SimpleComponent {
-
- private List> results;
-
- public List> getResults() {
- return results;
- }
-
- public void setResults(final List> results) {
- this.results = results;
- }
-
- private List getProperties(final List> results)
- throws IntrospectionException {
-
- final Set propertyDescriptors = new HashSet<>();
-
- for (final Object obj : results) {
- final PropertyDescriptor[] properties = Introspector
- .getBeanInfo(obj.getClass()).getPropertyDescriptors();
-
- for (final PropertyDescriptor property : properties) {
- propertyDescriptors.add(property);
- }
- }
-
- final List propertiesList
- = new ArrayList<>(propertyDescriptors);
- propertiesList.sort((prop1, prop2) -> {
- return prop1.getName().compareTo(prop2.getName());
- });
-
- return propertiesList;
- }
-
- @Override
- public void generateXML(final PageState state,
- final Element parent) {
-
- final Element queryResults = parent
- .newChildElement("bebop:query-results", BEBOP_XML_NS);
-
- // Find all properties in the results
- final List properties;
- try {
- properties = getProperties(results);
- } catch (IntrospectionException ex) {
- queryArea.addError(new GlobalizedMessage(
- "ui.admin.jpqlconsole.failed_to_render_results",
- AdminUiConstants.ADMIN_BUNDLE));
- LOGGER.error("Failed to render results.", ex);
- return;
- }
-
- final Element columns = queryResults
- .newChildElement("bebop:query-result-columns", BEBOP_XML_NS);
- for (final PropertyDescriptor property : properties) {
- final Element column = columns
- .newChildElement("bebop:query-result-column", BEBOP_XML_NS);
- column.setText(property.getName());
- }
-
- final Element resultList = queryResults
- .newChildElement("bebop:query-result-list", BEBOP_XML_NS);
- for(final Object obj : results) {
- for(final PropertyDescriptor property : properties) {
- final Method readMethod = property.getReadMethod();
-
-
- }
- }
-
- }
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/SystemInformationTab.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/SystemInformationTab.java
deleted file mode 100644
index 80cee79bf..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/SystemInformationTab.java
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
- * Copyright (c) 2013 Jens Pelzetter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */package com.arsdigita.ui.admin;
-
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.PropertySheet;
-import com.arsdigita.bebop.PropertySheetModel;
-import com.arsdigita.bebop.PropertySheetModelBuilder;
-import com.arsdigita.bebop.SegmentedPanel;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.toolbox.ui.LayoutPanel;
-import com.arsdigita.util.LockableImpl;
-import com.arsdigita.util.SystemInformation;
-
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParserFactory;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerFactory;
-
-import org.xml.sax.SAXException;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class SystemInformationTab extends LayoutPanel {
-
- public SystemInformationTab() {
- super();
-
- final SegmentedPanel panel = new SegmentedPanel();
-
- panel.addSegment(new Label(GlobalizationUtil.globalize(
- "ui.admin.sysinfo.appinfo")),
- new PropertySheet(
- new CCMSysInfoPropertySheetModelBuilder()));
-
- panel.addSegment(new Label(GlobalizationUtil.globalize(
- "ui.admin.sysinfo.java_system_properties")),
- new PropertySheet(
- new JavaSystemPropertiesSheetModelBuilder()));
-
- panel.addSegment(new Label(GlobalizationUtil.globalize(
- "ui.admin.sysinfo.xml_config")),
- new PropertySheet(new XMLConfigSheetModelBuilder()));
-
- setRight(panel);
- }
-
- private class CCMSysInfoPropertySheetModelBuilder
- extends LockableImpl
- implements PropertySheetModelBuilder {
-
- public CCMSysInfoPropertySheetModelBuilder() {
- super();
- }
-
- @Override
- public PropertySheetModel makeModel(final PropertySheet sheet,
- final PageState state) {
- return new CCMSysInfoPropertySheetModel();
- }
-
- }
-
- private class CCMSysInfoPropertySheetModel implements PropertySheetModel {
-
- private final SystemInformation sysInfo;
- private final Iterator> sysInfoIterator;
- private Map.Entry currentProperty;
-
- public CCMSysInfoPropertySheetModel() {
- sysInfo = SystemInformation.getInstance();
- sysInfoIterator = sysInfo.iterator();
- }
-
- @Override
- public boolean nextRow() {
- final boolean result = sysInfoIterator.hasNext();
- if (result) {
- currentProperty = sysInfoIterator.next();
- }
- return result;
-
- }
-
- @Override
- public String getLabel() {
- if (currentProperty == null) {
- return null;
- } else {
- return currentProperty.getKey();
- }
- }
-
- @Override
- public GlobalizedMessage getGlobalizedLabel() {
- return GlobalizationUtil.globalize(currentProperty.getKey());
- }
-
- @Override
- public String getValue() {
- return currentProperty.getValue();
- }
-
- }
-
- private class JavaSystemPropertiesSheetModelBuilder
- extends LockableImpl
- implements PropertySheetModelBuilder {
-
- public JavaSystemPropertiesSheetModelBuilder() {
- super();
- }
-
- @Override
- public PropertySheetModel makeModel(final PropertySheet sheet,
- final PageState state) {
- return new JavaSystemPropertiesSheetModel();
- }
-
- }
-
- private class JavaSystemPropertiesSheetModel implements PropertySheetModel {
-
- private final Properties systemProperties;
- private final Enumeration> enumeration;
- private Object currentElement;
-
- public JavaSystemPropertiesSheetModel() {
- systemProperties = System.getProperties();
- enumeration = systemProperties.propertyNames();
- }
-
- @Override
- public boolean nextRow() {
- final boolean result = enumeration.hasMoreElements();
- if (result) {
- currentElement = enumeration.nextElement();
- }
- return result;
- }
-
- @Override
- public String getLabel() {
- return currentElement.toString();
- }
-
- @Override
- public GlobalizedMessage getGlobalizedLabel() {
- return GlobalizationUtil.globalize(currentElement.toString());
- }
-
- @Override
- public String getValue() {
- return systemProperties.getProperty(currentElement.toString());
- }
-
- }
-
- private class XMLConfigSheetModelBuilder
- extends LockableImpl
- implements PropertySheetModelBuilder {
-
- public XMLConfigSheetModelBuilder() {
- super();
- }
-
- @Override
- public PropertySheetModel makeModel(final PropertySheet sheet,
- final PageState state) {
- return new XMLConfigSheetModel();
- }
-
- }
-
- private class XMLConfigSheetModel implements PropertySheetModel {
-
- private static final int TRANSFORMER_FACTORY_INDEX = 0;
- private static final int TRANSFORMER_INDEX = 1;
- private static final int DOCUMENT_BUILDER_FACTORY_INDEX = 2;
- private static final int DOCUMENT_BUILDER_INDEX = 3;
- private static final int SAX_PARSER_FACTORY_INDEX = 4;
- private static final int SAX_PARSER_INDEX = 5;
- private int currentIndex = -1;
-
- public XMLConfigSheetModel() {
- //Nothing
- }
-
- @Override
- public boolean nextRow() {
- currentIndex++;
- return currentIndex <= SAX_PARSER_INDEX;
- }
-
- @Override
- public String getLabel() {
- switch (currentIndex) {
- case TRANSFORMER_FACTORY_INDEX:
- return "XML Transformer Factory";
- case TRANSFORMER_INDEX:
- return "XML Transformer";
- case DOCUMENT_BUILDER_FACTORY_INDEX:
- return "XML Document Builder Factory";
- case DOCUMENT_BUILDER_INDEX:
- return "XML Document Builder";
- case SAX_PARSER_FACTORY_INDEX:
- return "SAX Parser Factory";
- case SAX_PARSER_INDEX:
- return "SAX Parser";
- default:
- return "";
- }
- }
-
- @Override
- public GlobalizedMessage getGlobalizedLabel() {
- switch (currentIndex) {
- case TRANSFORMER_FACTORY_INDEX:
- return GlobalizationUtil.globalize(
- "ui.admin.sysinfo.xml_transformer_factory");
- case TRANSFORMER_INDEX:
- return GlobalizationUtil.globalize(
- "ui.admin.sysinfo.xml_transformer");
- case DOCUMENT_BUILDER_FACTORY_INDEX:
- return GlobalizationUtil.globalize(
- "ui.admin.sysinfo.xml_document_builder_factory");
- case DOCUMENT_BUILDER_INDEX:
- return GlobalizationUtil.globalize(
- "ui.admin.sysinfo.xml_document_builder");
- case SAX_PARSER_FACTORY_INDEX:
- return GlobalizationUtil.globalize(
- "ui.admin.sysinfo.sax_parser_factory");
- case SAX_PARSER_INDEX:
- return GlobalizationUtil.globalize(
- "ui.admin.sysinfo.sax_parser");
- default:
- return GlobalizationUtil.globalize("unknown");
- }
- }
-
- @Override
- public String getValue() {
- switch (currentIndex) {
- case TRANSFORMER_FACTORY_INDEX:
- return TransformerFactory
- .newInstance()
- .getClass()
- .getName();
- case TRANSFORMER_INDEX:
- try {
- return TransformerFactory
- .newInstance()
- .newTransformer()
- .getClass()
- .getName();
- } catch (TransformerConfigurationException ex) {
- return "???";
- }
- case DOCUMENT_BUILDER_FACTORY_INDEX:
- return DocumentBuilderFactory
- .newInstance()
- .getClass()
- .getName();
- case DOCUMENT_BUILDER_INDEX:
- try {
- return DocumentBuilderFactory
- .newInstance()
- .newDocumentBuilder()
- .getClass()
- .getName();
- } catch (ParserConfigurationException ex) {
- return "???";
- }
- case SAX_PARSER_FACTORY_INDEX:
- return SAXParserFactory
- .newInstance()
- .getClass()
- .getName();
- case SAX_PARSER_INDEX:
- try {
- return SAXParserFactory
- .newInstance()
- .newSAXParser()
- .getClass()
- .getName();
- } catch (ParserConfigurationException | SAXException ex) {
- return "???";
- }
- default:
- return "";
- }
- }
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractAppInstanceForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractAppInstanceForm.java
deleted file mode 100644
index 0113ffc29..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractAppInstanceForm.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.event.FormProcessListener;
-
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.web.ApplicationRepository;
-import org.libreccm.web.ApplicationType;
-import org.libreccm.web.CcmApplication;
-
-import java.util.Optional;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public abstract class AbstractAppInstanceForm extends Form {
-
- private final ParameterSingleSelectionModel selectedAppType;
- private final ParameterSingleSelectionModel selectedAppInstance;
-
- public AbstractAppInstanceForm(
- final String name,
- final ParameterSingleSelectionModel selectedAppType,
- final ParameterSingleSelectionModel selectedAppInstance) {
-
- super(name);
-
- this.selectedAppType = selectedAppType;
- this.selectedAppInstance = selectedAppInstance;
-
- createWidgets();
-
- addProcessListener(createProcessListener());
- }
-
- protected abstract void createWidgets();
-
- protected abstract FormProcessListener createProcessListener();
-
- protected ApplicationType getSelectedAppType(final PageState state) {
- final org.libreccm.web.ApplicationManager appManager = CdiUtil
- .createCdiUtil().findBean(org.libreccm.web.ApplicationManager.class);
-
- return appManager.getApplicationTypes().get(selectedAppType
- .getSelectedKey(state));
- }
-
- protected Optional getSelectedAppInstance(
- final PageState state) {
-
- if (selectedAppInstance.getSelectedKey(state) == null
- || selectedAppInstance.getSelectedKey(state).isEmpty()) {
- return Optional.empty();
- } else {
- final ApplicationRepository appRepo = CdiUtil.createCdiUtil()
- .findBean(ApplicationRepository.class);
-
- return appRepo.findById(Long.parseLong(
- selectedAppInstance.getSelectedKey(state)));
- }
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractAppSettingsPane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractAppSettingsPane.java
deleted file mode 100644
index e1400247b..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractAppSettingsPane.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.SimpleContainer;
-
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.web.ApplicationRepository;
-import org.libreccm.web.ApplicationType;
-import org.libreccm.web.CcmApplication;
-
-import java.util.Optional;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public abstract class AbstractAppSettingsPane extends SimpleContainer {
-
- private final ParameterSingleSelectionModel selectedAppType;
- private final ParameterSingleSelectionModel selectedAppInstance;
-
- public AbstractAppSettingsPane(
- final ParameterSingleSelectionModel selectedAppType,
- final ParameterSingleSelectionModel selectedAppInstance) {
-
- super();
-
- this.selectedAppType = selectedAppType;
- this.selectedAppInstance = selectedAppInstance;
-
- createWidgets();
- }
-
- protected abstract void createWidgets();
-
- protected ApplicationType getSelectedAppType(final PageState state) {
- final org.libreccm.web.ApplicationManager appManager = CdiUtil
- .createCdiUtil().findBean(org.libreccm.web.ApplicationManager.class);
-
- return appManager.getApplicationTypes().get(selectedAppType
- .getSelectedKey(state));
- }
-
- protected Optional getSelectedAppInstance(
- final PageState state) {
-
- if (selectedAppInstance.getSelectedKey(state) == null
- || selectedAppInstance.getSelectedKey(state).isEmpty()) {
- return Optional.empty();
- } else {
- final ApplicationRepository appRepo = CdiUtil.createCdiUtil()
- .findBean(ApplicationRepository.class);
-
- return appRepo.findById(Long.parseLong(
- selectedAppInstance.getSelectedKey(state)));
- }
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypeInstancesPane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypeInstancesPane.java
deleted file mode 100644
index 9b7d1f483..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypeInstancesPane.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.BoxPanel;
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.Page;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.Table;
-import com.arsdigita.bebop.table.TableColumn;
-import com.arsdigita.bebop.table.TableColumnModel;
-import com.arsdigita.globalization.GlobalizedMessage;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public abstract class AbstractApplicationTypeInstancesPane extends BoxPanel {
-
- private final ParameterSingleSelectionModel selectedAppType;
-
- private final Form instanceForm;
-
- public AbstractApplicationTypeInstancesPane(
- final ParameterSingleSelectionModel selectedAppType) {
-
- super(BoxPanel.VERTICAL);
-
- this.selectedAppType = selectedAppType;
-
- instanceForm = createInstanceForm();
- add(instanceForm);
-
- }
-
- protected abstract Form createInstanceForm();
-
- @Override
- public void register(final Page page) {
-
- page.setVisibleDefault(instanceForm, false);
- }
-
- private class InstanceTable extends Table {
-
- private static final int COL_TITLE = 0;
- private static final int COL_URL = 1;
- private static final int COL_EDIT = 2;
-
- private final AbstractApplicationTypeInstancesPane instancesPane;
- private final ParameterSingleSelectionModel selectedAppType;
-
- public InstanceTable(
- final AbstractApplicationTypeInstancesPane instancesPane,
- final ParameterSingleSelectionModel selectedAppType) {
- super();
-
- this.instancesPane = instancesPane;
- this.selectedAppType = selectedAppType;
-
- final TableColumnModel columnModel = getColumnModel();
- columnModel.add(new TableColumn(
- COL_TITLE,
- new Label(new GlobalizedMessage(
- "ui.admin.applications.instances.col_title",
- ADMIN_BUNDLE))));
- columnModel.add(new TableColumn(
- COL_URL,
- new Label(new GlobalizedMessage(
- "ui.admin.applications.instances.col_url",
- ADMIN_BUNDLE))));
- columnModel.add(new TableColumn(
- COL_EDIT,
- new Label(new GlobalizedMessage(
- "ui.admin.applications.instances.col_edit",
- ADMIN_BUNDLE))));
-
- }
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypePane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypePane.java
deleted file mode 100644
index 60be6ac14..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypePane.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.ActionLink;
-import com.arsdigita.bebop.BoxPanel;
-import com.arsdigita.bebop.Page;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.PropertySheet;
-import com.arsdigita.bebop.SimpleContainer;
-import com.arsdigita.globalization.GlobalizedMessage;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public abstract class AbstractApplicationTypePane extends BoxPanel {
-
- private final ParameterSingleSelectionModel selectedAppType;
-
- private final SimpleContainer pane;
- private final PropertySheet propertySheet;
-
- public AbstractApplicationTypePane(
- final ParameterSingleSelectionModel selectedAppType) {
-
- super(BoxPanel.VERTICAL);
-
- this.selectedAppType = selectedAppType;
-
- final BoxPanel links = new BoxPanel(BoxPanel.HORIZONTAL);
- final ActionLink paneLink = new ActionLink(getPaneLabel());
- paneLink.addActionListener(e -> {
- final PageState state = e.getPageState();
- showPane(state);
- });
- links.add(paneLink);
- final ActionLink propertySheetLink = new ActionLink(
- new GlobalizedMessage(
- "ui.admin.appliations.type_pane.info_sheet",
- ADMIN_BUNDLE));
- propertySheetLink.addActionListener(e -> {
- final PageState state = e.getPageState();
- showPropertySheet(state);
- });
- links.add(propertySheetLink);
- add(links);
-
- pane = createPane();
- add(pane);
-
- propertySheet = new PropertySheet(
- new ApplicationTypePropertySheetModelBuilder(selectedAppType));
- }
-
- protected abstract SimpleContainer createPane();
-
- protected abstract GlobalizedMessage getPaneLabel();
-
- @Override
- public void register(final Page page) {
- super.register(page);
-
- page.setVisibleDefault(pane, true);
- page.setVisibleDefault(propertySheet, false);
- }
-
- protected void showPane(final PageState state) {
- pane.setVisible(state, true);
- propertySheet.setVisible(state, false);
- }
-
- protected void showPropertySheet(final PageState state) {
- pane.setVisible(state, false);
- propertySheet.setVisible(state, false);
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractSingletonApplicationManager.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractSingletonApplicationManager.java
deleted file mode 100644
index 6e6cc39d3..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractSingletonApplicationManager.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2013 Jens Pelzetter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.Form;
-
-import org.libreccm.web.CcmApplication;
-
-/**
- * An abstract class providing a default implementation of
- * {@link ApplicationManager#getApplicationCreateForm()}.
- *
- * @param Type of the application for which this ApplicationManager provides
- * the administration forms.
- *
- * @author Jens Pelzetter
- * @version $Id: AbstractSingletonApplicationManager.java 3703 2015-10-21
- * 08:52:39Z jensp $
- */
-public abstract class AbstractSingletonApplicationManager
- implements ApplicationManager {
-
- /**
- * Implementation of {@link ApplicationManager#getApplicationCreateForm()}
- * for singleton applications.
- *
- * @return {@code} null because it is not possible to create instances of
- * singleton applications.
- */
- @SuppressWarnings("PMD.EmptyMethodInAbstractClassShouldBeAbstract")
- @Override
- public final Form getApplicationCreateForm() {
- return null;
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceAwareContainer.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceAwareContainer.java
deleted file mode 100644
index a050eac29..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceAwareContainer.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2013 Jens Pelzetter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.SimpleContainer;
-import org.libreccm.web.CcmApplication;
-
-/**
- *
- * @author Jens Pelzetter
- * @version $Id: ApplicationInstanceAwareContainer.java 2234 2013-06-29 12:41:57Z jensp $
- */
-public class ApplicationInstanceAwareContainer extends SimpleContainer {
-
- private CcmApplication appInstance;
-
- public CcmApplication getAppInstance() {
- return appInstance;
- }
-
- public void setAppInstance(final CcmApplication appInstance) {
- this.appInstance = appInstance;
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceTreeCdiUtil.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceTreeCdiUtil.java
deleted file mode 100644
index 4025a2ef1..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceTreeCdiUtil.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2021 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.kernel.KernelConfig;
-
-import org.libreccm.configuration.ConfigurationManager;
-import org.libreccm.l10n.GlobalizationHelper;
-import org.libreccm.web.ApplicationRepository;
-import org.libreccm.web.CcmApplication;
-
-import java.io.Serializable;
-import java.util.Locale;
-
-import javax.enterprise.context.RequestScoped;
-import javax.inject.Inject;
-import javax.transaction.Transactional;
-
-/**
- *
- * @author Jens Pelzetter
- */
-@RequestScoped
-class ApplicationInstanceTreeCdiUtil implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- @Inject
- private ApplicationRepository applicationRepo;
-
- @Inject
- private ConfigurationManager confManager;
-
- @Inject
- private GlobalizationHelper globalizationHelper;
-
- @Transactional(Transactional.TxType.REQUIRED)
- public String getTitle(final CcmApplication ofApplication) {
- final CcmApplication application = applicationRepo
- .findById(ofApplication.getObjectId())
- .orElseThrow(
- () -> new IllegalArgumentException(
- String.format(
- "No CcmApplication with ID %d available.",
- ofApplication.getObjectId()
- )
- )
- );
-
- final KernelConfig kernelConfig = confManager.findConfiguration(
- KernelConfig.class);
- final Locale defaultLocale = kernelConfig.getDefaultLocale();
-
- final String title;
- if (application.getTitle().hasValue(globalizationHelper
- .getNegotiatedLocale())) {
- title = application.getTitle().getValue(globalizationHelper
- .getNegotiatedLocale());
- } else if (application.getTitle().hasValue(defaultLocale)) {
- title = application.getTitle().getValue(defaultLocale);
- } else if (application.getTitle().hasValue(Locale.getDefault())) {
- title = application.getTitle().getValue(Locale.getDefault());
- } else {
- title = application.getPrimaryUrl();
- }
-
- return title;
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceTreeNode.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceTreeNode.java
deleted file mode 100644
index 93231b444..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstanceTreeNode.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.tree.TreeNode;
-import com.arsdigita.kernel.KernelConfig;
-
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.configuration.ConfigurationManager;
-import org.libreccm.l10n.GlobalizationHelper;
-import org.libreccm.web.CcmApplication;
-
-import java.util.Locale;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class ApplicationInstanceTreeNode implements TreeNode {
-
- protected static final String INSTANCE_NODE_KEY_PREFIX = "appinstance_";
-
- private final CcmApplication application;
-
- public ApplicationInstanceTreeNode(final CcmApplication application) {
- this.application = application;
- }
-
- @Override
- public Object getKey() {
- return String.format("%s%d",
- INSTANCE_NODE_KEY_PREFIX,
- application.getObjectId());
- }
-
- @Override
- public Object getElement() {
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
-// final GlobalizationHelper globalizationHelper = cdiUtil
-// .findBean(GlobalizationHelper.class);
- final ConfigurationManager confManager = cdiUtil
- .findBean(ConfigurationManager.class);
-// final KernelConfig kernelConfig = confManager.findConfiguration(
-// KernelConfig.class);
-// final Locale defaultLocale = kernelConfig.getDefaultLocale();
- final ApplicationInstanceTreeCdiUtil util = cdiUtil
- .findBean(ApplicationInstanceTreeCdiUtil.class);
-
-// final String title;
-// if (application.getTitle().hasValue(globalizationHelper
-// .getNegotiatedLocale())) {
-// title = application.getTitle().getValue(globalizationHelper
-// .getNegotiatedLocale());
-// } else if (application.getTitle().hasValue(defaultLocale)) {
-// title = application.getTitle().getValue(defaultLocale);
-// } else if (application.getTitle().hasValue(Locale.getDefault())) {
-// title = application.getTitle().getValue(Locale.getDefault());
-// } else {
-// title = application.getPrimaryUrl();
-// }
-// return title;
- return util.getTitle(application);
- }
-
- public CcmApplication getApplication() {
- return application;
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationManager.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationManager.java
deleted file mode 100644
index ee1929552..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationManager.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2013 Jens Pelzetter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.Form;
-
-import java.util.ServiceLoader;
-
-import org.libreccm.web.CcmApplication;
-
-/**
- * Implementations of this class are used by the new
- * {@link ApplicationsAdministrationTab} to get the forms for editing the
- * configuration of an application and for creating new instances of an
- * application.
- *
- * The {@link ApplicationsAdministrationTab} uses the {@link ServiceLoader}
- * from the Java Standard Library to find all implementations of this interface.
- * To make implementations of this interface known add an file named
- * {@code com.arsdigita.ui.admin.applications.ApplicationManager} to the
- * {@code META-INF/services} directory of the module which provides the
- * application. In this file add a line with the full qualified class name
- * of each implementations of this interface provided by the module.
- *
- * There a two abstract classes to help you with implementing this class.
- * {@link AbstractSingletonApplicationManager} is suitable for singleton
- * applications. {@link AbstractApplicationManager} is for multi-instance
- * applications.
- *
- * @param Type of the application for which this ApplicationManager
- * provides the administration forms.
- *
- * @author Jens Pelzetter
- * @version $Id: ApplicationManager.java 2275 2013-07-26 14:20:28Z jensp $
- */
-public interface ApplicationManager {
-
- /**
- * Used to determine the Applications class for which this
- * manager provides the administration forms.
- *
- * @return The class of the application for which this
- * manager provides the administration forms.
- */
- Class getApplication();
-
- /**
- * Provides a pane with administration forms for the application or for an
- * instance of the application if the application is not a singleton.
- *
- * @return A container containing one or more forms for managing instances
- * of an application.
- */
- ApplicationInstanceAwareContainer getApplicationAdminForm();
-
- /**
- * Provides a form for creating new instances of applications. For
- * singleton applications an implementation of this method will return
- * {@code null}.
- *
- * @return A form for creating new instances of applications or
- * {@code null} if the is a singleton.
- */
- Form getApplicationCreateForm();
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationManagers.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationManagers.java
deleted file mode 100644
index eec1959ed..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationManagers.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2010 Jens Pelzetter, ScientificCMS.org team
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-package com.arsdigita.ui.admin.applications;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Helper class for managing the implementations of the {@link ApplicationManager} interface
- *
- * @author Jens Pelzetter
- * @version $Id: ApplicationManagers.java 2294 2013-08-05 18:39:46Z jensp $
- */
-public class ApplicationManagers {
-
- private Map> appManagers = new HashMap>();
-
- /**
- * The one and only instance of this class. The pattern used here ensures that
- * the instance is created at the first access, but not earlier.
- */
- private static class Instance {
- private static final ApplicationManagers INSTANCE = new ApplicationManagers();
- }
-
- /**
- * Private constructor to ensure that no instances of this class can be created.
- */
- private ApplicationManagers() {
- //Nothing
- }
-
- /**
- * @return The instance of this class.
- */
- public static ApplicationManagers getInstance() {
- return Instance.INSTANCE;
- }
-
- public static void register(final ApplicationManager> appManager) {
- getInstance().registerApplicationManager(appManager);
- }
-
- public void registerApplicationManager(final ApplicationManager> appManager) {
- appManagers.put(appManager.getApplication().getName(), appManager);
- }
-
- protected Map> getApplicationManagers() {
- return Collections.unmodifiableMap(appManagers);
- }
-
- protected ApplicationManager> getApplicationManager(final String appClassName) {
- return appManagers.get(appClassName);
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTreeModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTreeModel.java
deleted file mode 100644
index 6a8b739e3..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTreeModel.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.tree.TreeModel;
-import com.arsdigita.bebop.tree.TreeNode;
-
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.web.ApplicationRepository;
-import org.libreccm.web.ApplicationType;
-import org.libreccm.web.CcmApplication;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class ApplicationTreeModel implements TreeModel {
-
- public ApplicationTreeModel() {
-
- }
-
- @Override
- public TreeNode getRoot(final PageState state) {
- return new RootTreeNode();
- }
-
- @Override
- public boolean hasChildren(final TreeNode node,
- final PageState state) {
- if (node instanceof RootTreeNode) {
- return true;
- } else if (node instanceof ApplicationTypeTreeNode) {
- final ApplicationTypeTreeNode typeNode
- = (ApplicationTypeTreeNode) node;
- final ApplicationType appType = typeNode.getApplicationType();
- if (appType.singleton()) {
- return false;
- } else {
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ApplicationRepository appRepo = cdiUtil.findBean(
- ApplicationRepository.class);
- final List apps = appRepo.findByType(appType
- .name());
- return !apps.isEmpty();
- }
- } else if (node instanceof ApplicationInstanceTreeNode) {
- return false;
- } else {
- throw new IllegalArgumentException(
- "The ApplicationTreeModel can only work with "
- + "ApplicationTypeTreeNodes and "
- + "ApplicationInstanceTreeNodes.");
- }
- }
-
- @Override
- public Iterator getChildren(final TreeNode node,
- final PageState state) {
- if (node instanceof RootTreeNode) {
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final org.libreccm.web.ApplicationManager appManager = cdiUtil
- .findBean(org.libreccm.web.ApplicationManager.class);
- return new AppTypesIterator(appManager.getApplicationTypes()
- .values());
- } else if (node instanceof ApplicationTypeTreeNode) {
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ApplicationRepository appRepo = cdiUtil.findBean(
- ApplicationRepository.class);
- return new AppIterator(appRepo.findByType(
- ((ApplicationTypeTreeNode) node).getApplicationType().name()));
- } else {
- throw new IllegalArgumentException(
- "ApplicationTreeModel#getChildren can only process "
- + "the RootTreeNode and the instances of "
- + "ApplicationTypeTreeNode.");
- }
- }
-
- private class RootTreeNode implements TreeNode {
-
- public RootTreeNode() {
- //Nothing
- }
-
- @Override
- public Object getKey() {
- return "-1";
- }
-
- @Override
- public Object getElement() {
- return "/";
- }
-
- }
-
- private class AppTypesIterator
- implements Iterator {
-
- private final Iterator appTypes;
-
- public AppTypesIterator(final Collection appTypes) {
- this.appTypes = appTypes.iterator();
- }
-
- @Override
- public boolean hasNext() {
- return appTypes.hasNext();
- }
-
- @Override
- public ApplicationTypeTreeNode next() {
- return new ApplicationTypeTreeNode(appTypes.next());
- }
-
- }
-
- private class AppIterator implements Iterator {
-
- private final Iterator applications;
-
- public AppIterator(final Collection applications) {
- this.applications = applications.iterator();
- }
-
- @Override
- public boolean hasNext() {
- return applications.hasNext();
- }
-
- @Override
- public ApplicationInstanceTreeNode next() {
- return new ApplicationInstanceTreeNode(applications.next());
- }
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTreeModelBuilder.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTreeModelBuilder.java
deleted file mode 100644
index fba22304d..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTreeModelBuilder.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.Tree;
-import com.arsdigita.bebop.tree.TreeModel;
-import com.arsdigita.bebop.tree.TreeModelBuilder;
-import com.arsdigita.util.LockableImpl;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class ApplicationTreeModelBuilder
- extends LockableImpl implements TreeModelBuilder {
-
- @Override
- public TreeModel makeModel(final Tree tree,
- final PageState state) {
- tree.expand("-1", state);
- return new ApplicationTreeModel();
- }
-
-
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModel.java
deleted file mode 100644
index 374c44be6..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModel.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.PropertySheetModel;
-import com.arsdigita.globalization.GlobalizedMessage;
-
-import com.fasterxml.jackson.databind.deser.CreatorProperty;
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.web.ApplicationType;
-
-import java.util.Arrays;
-import java.util.Iterator;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class ApplicationTypePropertySheetModel implements PropertySheetModel {
-
- private static enum AppTypeProperty {
- NAME,
- TITLE,
- DESC,
- APP_CLASS,
- CREATOR,
- SINGLETON,
- SERVLET_CLASS,
- SERVLET_PATH,
- }
-
- private final ApplicationType applicationType;
- private final Iterator propertyIterator;
- private AppTypeProperty currentProperty;
-
- public ApplicationTypePropertySheetModel(
- final ApplicationType applicationType) {
-
- this.applicationType = applicationType;
- propertyIterator = Arrays.asList(AppTypeProperty.values()).iterator();
- }
-
- @Override
- public boolean nextRow() {
- if (applicationType == null) {
- return false;
- }
-
- if (propertyIterator.hasNext()) {
- currentProperty = propertyIterator.next();
- return true;
- } else {
- return false;
- }
- }
-
- @Override
- public String getLabel() {
- return currentProperty.toString();
- }
-
- private GlobalizedMessage generateGlobalizedLabel(
- final AppTypeProperty property) {
-
- final String key = String.join(
- "",
- "ui.admin.applications.type.property_sheet.",
- property.toString().toLowerCase());
-
- return new GlobalizedMessage(key, ADMIN_BUNDLE);
- }
-
- @Override
- public GlobalizedMessage getGlobalizedLabel() {
- return generateGlobalizedLabel(currentProperty);
- }
-
- @Override
- public String getValue() {
- switch(currentProperty) {
- case NAME:
- return applicationType.name();
- case TITLE:
- return getAppTypeTitle();
- case DESC:
- return getAppTypeDesc();
- case APP_CLASS:
- return applicationType.applicationClass().getName();
- case CREATOR:
- return applicationType.creator().getName();
- case SINGLETON:
- return Boolean.toString(applicationType.singleton());
- case SERVLET_CLASS:
- return applicationType.servlet().getName();
- case SERVLET_PATH:
- return applicationType.servletPath();
- default:
- return "";
- }
- }
-
- private String getAppTypeTitle() {
- final org.libreccm.web.ApplicationManager appManager = CdiUtil.createCdiUtil().findBean(
- org.libreccm.web.ApplicationManager.class);
-
- return appManager.getApplicationTypeTitle(applicationType);
- }
-
- private String getAppTypeDesc() {
- final org.libreccm.web.ApplicationManager appManager = CdiUtil.createCdiUtil().findBean(
- org.libreccm.web.ApplicationManager.class);
-
- return appManager.getApplicationTypeDescription(applicationType);
- }
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModelBuilder.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModelBuilder.java
deleted file mode 100644
index 1b94de47a..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModelBuilder.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.PropertySheet;
-import com.arsdigita.bebop.PropertySheetModel;
-import com.arsdigita.bebop.PropertySheetModelBuilder;
-import com.arsdigita.util.LockableImpl;
-
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.web.ApplicationType;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class ApplicationTypePropertySheetModelBuilder
- extends LockableImpl
- implements PropertySheetModelBuilder {
-
- private final ParameterSingleSelectionModel selectedAppType;
-
- public ApplicationTypePropertySheetModelBuilder(
- final ParameterSingleSelectionModel selectedAppType) {
-
- this.selectedAppType = selectedAppType;
-
- }
-
- @Override
- public PropertySheetModel makeModel(final PropertySheet sheet,
- final PageState state) {
- final String selectedAppTypeStr = selectedAppType.getSelectedKey(state);
- final ApplicationType applicationType;
-
- if (selectedAppTypeStr == null || selectedAppTypeStr.isEmpty()) {
- applicationType = null;
- } else {
- final org.libreccm.web.ApplicationManager appManager = CdiUtil
- .createCdiUtil().findBean(
- org.libreccm.web.ApplicationManager.class);
- applicationType = appManager.getApplicationTypes().get(
- selectedAppTypeStr);
- }
-
- return new ApplicationTypePropertySheetModel(applicationType);
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypeTreeNode.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypeTreeNode.java
deleted file mode 100644
index 7b5fd1483..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypeTreeNode.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.tree.TreeNode;
-
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.web.ApplicationType;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class ApplicationTypeTreeNode implements TreeNode {
-
- protected final static String TYPE_NODE_KEY_PREFIX = "apptype_";
-
- private final ApplicationType applicationType;
-
- public ApplicationTypeTreeNode(final ApplicationType applicationType) {
- this.applicationType = applicationType;
- }
-
- @Override
- public Object getKey() {
- return String.join("", TYPE_NODE_KEY_PREFIX, applicationType.name());
- }
-
- @Override
- public Object getElement() {
- final org.libreccm.web.ApplicationManager appManager = CdiUtil
- .createCdiUtil().findBean(org.libreccm.web.ApplicationManager.class);
-
- return appManager.getApplicationTypeTitle(applicationType);
- }
-
- public ApplicationType getApplicationType() {
- return applicationType;
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationsAdministrationTab.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationsAdministrationTab.java
deleted file mode 100644
index a621470b9..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationsAdministrationTab.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * Copyright (c) 2013 Jens Pelzetter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.BoxPanel;
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.Page;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.SimpleContainer;
-import com.arsdigita.bebop.Tree;
-import com.arsdigita.bebop.event.ChangeEvent;
-import com.arsdigita.bebop.event.ChangeListener;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.toolbox.ui.LayoutPanel;
-import com.arsdigita.ui.admin.applications.tree.LegacyApplicationTreeModelBuilder;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.web.ApplicationRepository;
-import org.libreccm.web.ApplicationType;
-import org.libreccm.web.CcmApplication;
-
-import java.util.Optional;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- * A tab for managing CcmApplication and application instances.
- *
- * @author pb
- * @author Jens Pelzetter
- */
-public class ApplicationsAdministrationTab extends LayoutPanel {
-
- private final Tree applicationTree;
- private final Map appPanes
- = new HashMap<>();
- private final Map instancePanes
- = new HashMap<>();
- private final BoxPanel appPanel;
-
- /**
- * Constructor
- */
- public ApplicationsAdministrationTab() {
-
- super();
-
- setClassAttr("sidebarNavPanel");
- setAttribute("navbar-title", "Sitemap");
-
- applicationTree = new Tree(new LegacyApplicationTreeModelBuilder());
- applicationTree.addChangeListener(new TreeStateChangeListener());
-
- setClassAttr("navbar");
-
- setLeft(applicationTree);
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final org.libreccm.web.ApplicationManager appManager = cdiUtil.findBean(
- org.libreccm.web.ApplicationManager.class);
-
- final Collection applicationTypes = appManager.
- getApplicationTypes().values();
-
- final Map> appManagers
- = ApplicationManagers.
- getInstance().
- getApplicationManagers();
-
- for (ApplicationType appType : applicationTypes) {
- if (appType.singleton()) {
- createSingletonAppPane(appType, appManagers);
- } else {
- createAppPane(appType, appManagers);
- }
- }
-
- appPanel = new BoxPanel();
- appPanel.setClassAttr("main");
- for (Map.Entry entry : appPanes.entrySet()) {
- appPanel.add(entry.getValue());
- }
-
- for (Map.Entry entry : instancePanes.
- entrySet()) {
- appPanel.add(entry.getValue());
- }
-
- //setRight(appPanel);
- setBody(appPanel);
- }
-
- private void createSingletonAppPane(final ApplicationType applicationType,
- final Map> appManagers) {
- final String appObjectType = applicationType.name();
-
- final ApplicationManager> manager = appManagers.get(appObjectType);
- final LegacySingletonApplicationPane pane;
- if (manager == null) {
- pane = new LegacySingletonApplicationPane(applicationType, null);
- } else {
- pane = new LegacySingletonApplicationPane(
- applicationType, appManagers.get(appObjectType).
- getApplicationAdminForm());
- }
- appPanes.put(appObjectType, pane);
- }
-
- @SuppressWarnings({"rawtypes", "unchecked"})
- private void createAppPane(
- final ApplicationType applicationType,
- final Map> appManagers) {
- final ApplicationManager> appManager = appManagers.get(
- applicationType.name());
- final Form createForm;
- if (appManager == null) {
- createForm = null;
- } else {
- createForm = appManager.getApplicationCreateForm();
- }
-
- final LegacyMultiInstanceApplicationPane> appPane
- = new LegacyMultiInstanceApplicationPane(
- applicationType, createForm);
- appPanes.put(applicationType.name(), appPane);
- createInstancePane(applicationType, appManagers);
- }
-
- private void createInstancePane(
- final ApplicationType applicationType,
- final Map> managementForms) {
- final ApplicationManager> manager = managementForms.get(
- applicationType.name());
- final LegacyApplicationInstancePane instPane;
- if (manager == null) {
- instPane = new LegacyApplicationInstancePane(new Placeholder());
- } else {
- instPane = new LegacyApplicationInstancePane(managementForms.get(
- applicationType.name()).
- getApplicationAdminForm());
- }
-
- instancePanes.put(applicationType.name(), instPane);
- }
-
- @Override
- public void register(final Page page) {
- super.register(page);
-
- for (Map.Entry entry : appPanes.entrySet()) {
- page.setVisibleDefault(entry.getValue(), false);
- }
- for (Map.Entry entry : instancePanes.
- entrySet()) {
- page.setVisibleDefault(entry.getValue(), false);
- }
- }
-
- private void setPaneVisible(final SimpleContainer pane,
- final PageState state) {
- for (Map.Entry entry : appPanes.entrySet()) {
- entry.getValue().setVisible(state, false);
- }
- for (Map.Entry entry : instancePanes.
- entrySet()) {
- entry.getValue().setVisible(state, false);
- }
-
- pane.setVisible(state, true);
- }
-
- private class TreeStateChangeListener implements ChangeListener {
-
- public TreeStateChangeListener() {
- //Nothing
- }
-
- @Override
- public void stateChanged(final ChangeEvent event) {
- final PageState state = event.getPageState();
-
- final String selectedKey = (String) applicationTree.getSelectedKey(
- state);
- if (selectedKey != null) {
- if (selectedKey.contains(".")) {
- // Selected key is a classname and therefore the key of an ApplicationPane
- final LegacyBaseApplicationPane pane = appPanes.get(selectedKey);
- if (pane != null) {
- setPaneVisible(pane, state);
- }
- } else {
- // Selected key is the name of a instance pane
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ApplicationRepository appRepo = cdiUtil.findBean(
- ApplicationRepository.class);
-
- final Optional application = appRepo
- .retrieveApplicationForPath(selectedKey);
-
- final LegacyApplicationInstancePane pane;
- if (application.isPresent()) {
- pane = instancePanes.get(application.getClass().
- getName());
- if (pane != null) {
- pane.setApplication(application.get());
- }
- } else {
- pane = null;
- }
-
- if (pane != null) {
- setPaneVisible(pane, state);
- }
- }
- }
- }
-
- }
-
- private class Placeholder extends ApplicationInstanceAwareContainer {
-
- public Placeholder() {
- super();
- final Label label = new Label(new GlobalizedMessage(
- "ui.admin.applications.placeholder", ADMIN_BUNDLE));
- add(label);
- }
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationsTab.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationsTab.java
deleted file mode 100644
index d355179f9..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationsTab.java
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.ActionLink;
-import com.arsdigita.bebop.BoxPanel;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.Page;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.PropertySheet;
-import com.arsdigita.bebop.Text;
-import com.arsdigita.bebop.Tree;
-import com.arsdigita.bebop.parameters.StringParameter;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.toolbox.ui.LayoutPanel;
-import com.arsdigita.util.UncheckedWrapperException;
-
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.web.ApplicationRepository;
-import org.libreccm.web.ApplicationType;
-import org.libreccm.web.CcmApplication;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class ApplicationsTab extends LayoutPanel {
-
- private final StringParameter selectedAppTypeParam;
- private final ParameterSingleSelectionModel selectedAppType;
-
- private final StringParameter selectedAppInstanceParam;
- private final ParameterSingleSelectionModel selectedAppInstance;
-
- private final Tree applicationTree;
- private final BoxPanel managementLinks;
- private final Text placeholderInstances;
- private final Text placeholderSingletonSettings;
- private final BoxPanel appInfo;
-
- private final Map instanceForms;
- private final Map settingsPanes;
-
- public ApplicationsTab() {
- super();
-
- setClassAttr("sidebarNavPanel");
-
- selectedAppTypeParam = new StringParameter("selectedAppType");
- selectedAppType = new ParameterSingleSelectionModel<>(
- selectedAppTypeParam);
-
- selectedAppInstanceParam = new StringParameter("selectedAppInstance");
- selectedAppInstance = new ParameterSingleSelectionModel<>(
- selectedAppInstanceParam);
-
- instanceForms = new HashMap<>();
- settingsPanes = new HashMap<>();
-
- applicationTree = new Tree(new ApplicationTreeModelBuilder());
- applicationTree.addChangeListener(e -> {
-
- final PageState state = e.getPageState();
- final String key = (String) applicationTree.getSelectedKey(state);
-
- if (key.startsWith(
- ApplicationInstanceTreeNode.INSTANCE_NODE_KEY_PREFIX)) {
-
- //Instance is selected
- final String instanceId = key.substring(
- ApplicationInstanceTreeNode.INSTANCE_NODE_KEY_PREFIX
- .length());
- selectedAppInstance.setSelectedKey(state, instanceId);
-
- final ApplicationRepository appRepo = CdiUtil.createCdiUtil()
- .findBean(ApplicationRepository.class);
- final Optional application = appRepo.findById(
- Long.parseLong(instanceId));
- if (application.isPresent()) {
- selectedAppType.setSelectedKey(
- state, application.get().getApplicationType());
- }
-
- showAppSettings(state);
-
- } else if (key.startsWith(
- ApplicationTypeTreeNode.TYPE_NODE_KEY_PREFIX)) {
-
- //ApplicationType node is selected
- showManagementLinks(state);
- final String appTypeKey = key.substring(
- ApplicationTypeTreeNode.TYPE_NODE_KEY_PREFIX.length());
-
- selectedAppType.setSelectedKey(state, appTypeKey);
-
- final org.libreccm.web.ApplicationManager appManager = CdiUtil
- .createCdiUtil().findBean(
- org.libreccm.web.ApplicationManager.class);
- final ApplicationType appType = appManager.getApplicationTypes()
- .get(appTypeKey);
-
- if (appType == null) {
- hideAllInstanceForms(state);
- hideAllSettingsPanes(state);
- hideAppInfo(state);
- hideInstances(state);
- hideManagementLinks(state);
- hideSingletonAppSettings(state);
- } else if (appType.singleton()) {
- showSingletonAppSettings(state);
- } else {
- showInstances(state);
- }
-
- } else {
- throw new IllegalArgumentException(
- "The key of the selected must be Long or a String");
- }
-
- });
-
- setLeft(applicationTree);
-
- final BoxPanel managementPanel = new BoxPanel(BoxPanel.VERTICAL);
- managementLinks = new BoxPanel(BoxPanel.HORIZONTAL);
-
- final ActionLink singletonAppSettingsLink
- = new SingletonAppSettingsLink(
- new GlobalizedMessage("ui.admin.applications.singleton.link",
- ADMIN_BUNDLE));
- singletonAppSettingsLink.addActionListener(e -> {
- final PageState state = e.getPageState();
-
- showSingletonAppSettings(state);
- });
- managementLinks.add(singletonAppSettingsLink);
-
- final ActionLink instancesLink = new InstancesLink(
- new GlobalizedMessage("ui.admin.applications.instances.link",
- ADMIN_BUNDLE));
- instancesLink.addActionListener(e -> {
- final PageState state = e.getPageState();
-
- showInstances(state);
- });
- managementLinks.add(instancesLink);
-
- final ActionLink infoLink = new ActionLink(new GlobalizedMessage(
- "ui.admin.applications.info.link", ADMIN_BUNDLE));
- infoLink.addActionListener(e -> {
- final PageState state = e.getPageState();
-
- showAppInfo(state);
- });
- managementLinks.add(infoLink);
-
- managementPanel.add(managementLinks);
-
- placeholderInstances = new Text("placeholder instances");
- managementPanel.add(placeholderInstances);
-
- placeholderSingletonSettings
- = new Text("placeholder singleton settings");
- managementPanel.add(placeholderSingletonSettings);
-
- appInfo = new BoxPanel(BoxPanel.VERTICAL);
- final Label appInfoHeading = new Label(new GlobalizedMessage(
- "ui.admin.applications.info.heading", ADMIN_BUNDLE));
- appInfoHeading.setClassAttr("heading");
- appInfo.add(appInfoHeading);
-
- final PropertySheet appInfoSheet = new PropertySheet(
- new ApplicationTypePropertySheetModelBuilder(selectedAppType));
- appInfo.add(appInfoSheet);
- managementPanel.add(appInfo);
-
- final org.libreccm.web.ApplicationManager appManager = CdiUtil
- .createCdiUtil().findBean(org.libreccm.web.ApplicationManager.class);
- final Map appTypes = appManager
- .getApplicationTypes();
-
- appTypes.entrySet().forEach(e -> {
- final String appTypeName = e.getKey();
- final Class extends AbstractAppInstanceForm> instanceFormClass
- = e.getValue()
- .instanceForm();
- final Class extends AbstractAppSettingsPane> settingsPaneClass
- = e.getValue()
- .settingsPane();
- final boolean singleton = e.getValue().singleton();
-
- if (singleton) {
- final AbstractAppSettingsPane settingsPane = createSettingsPane(
- settingsPaneClass);
- managementPanel.add(settingsPane);
- settingsPanes.put(appTypeName, settingsPane);
- } else {
- final AbstractAppInstanceForm instanceForm = createInstanceForm(
- String.format("%s_instance_form", appTypeName),
- instanceFormClass);
- managementPanel.add(instanceForm);
- instanceForms.put(appTypeName, instanceForm);
- final AbstractAppSettingsPane settingsPane = createSettingsPane(
- settingsPaneClass);
- managementPanel.add(settingsPane);
- settingsPanes.put(appTypeName, settingsPane);
- }
-
- });
-
- setBody(managementPanel);
-
- }
-
- @Override
- public void register(final Page page) {
- super.register(page);
-
- page.addGlobalStateParam(selectedAppTypeParam);
- page.addGlobalStateParam(selectedAppInstanceParam);
-
- page.setVisibleDefault(managementLinks, false);
- page.setVisibleDefault(placeholderInstances, false);
- page.setVisibleDefault(placeholderSingletonSettings, false);
- page.setVisibleDefault(appInfo, false);
-
- settingsPanes.forEach((k, v) -> {
- page.setVisibleDefault(v, false);
- });
-
- instanceForms.forEach((k, v) -> {
- page.setVisibleDefault(v, false);
- });
-
- }
-
- protected void showManagementLinks(final PageState state) {
- managementLinks.setVisible(state, true);
- hideAllInstanceForms(state);
- hideAllSettingsPanes(state);
- }
-
- protected void hideManagementLinks(final PageState state) {
- managementLinks.setVisible(state, false);
- hideAllInstanceForms(state);
- hideAllSettingsPanes(state);
- }
-
- protected void showInstances(final PageState state) {
-
- hideAllInstanceForms(state);
- hideAllSettingsPanes(state);
-
- //placeholderInstances.setVisible(state, true);
- final String appType = selectedAppType.getSelectedKey(state);
- if (instanceForms.containsKey(appType)) {
- instanceForms.get(appType).setVisible(state, true);
- }
- placeholderSingletonSettings.setVisible(state, false);
- appInfo.setVisible(state, false);
- }
-
- protected void hideInstances(final PageState state) {
- hideAllInstanceForms(state);
- hideAllSettingsPanes(state);
- placeholderInstances.setVisible(state, false);
- }
-
- protected void showSingletonAppSettings(final PageState state) {
- hideAllInstanceForms(state);
- hideAllSettingsPanes(state);
- placeholderInstances.setVisible(state, false);
- //placeholderSingletonSettings.setVisible(state, true);
-
- final String appType = selectedAppType.getSelectedKey(state);
- if (settingsPanes.containsKey(appType)) {
- settingsPanes.get(appType).setVisible(state, true);
- }
-
- appInfo.setVisible(state, false);
- }
-
- protected void showAppSettings(final PageState state) {
- hideAllInstanceForms(state);
- hideAllSettingsPanes(state);
- hideManagementLinks(state);
- placeholderInstances.setVisible(state, false);
- placeholderSingletonSettings.setVisible(state, false);
-
- if (settingsPanes.containsKey(selectedAppType.getSelectedKey(state))) {
- settingsPanes.get(selectedAppType.getSelectedKey(state)).setVisible(
- state, true);
- }
-
-// final String appId = selectedAppInstance.getSelectedKey(state);
-// final ApplicationRepository appRepo = CdiUtil.createCdiUtil().findBean(
-// ApplicationRepository.class);
-// final CcmApplication application = appRepo.findById(Long
-// .parseLong(appId));
-// if (application != null) {
-// final String appType = application.getApplicationType();
-// if (settingsPanes.containsKey(appType)) {
-// settingsPanes.get(appType).setVisible(state, true);
-// }
-// }
- }
-
- protected void hideSingletonAppSettings(final PageState state) {
- placeholderSingletonSettings.setVisible(state, false);
- hideAllInstanceForms(state);
- hideAllSettingsPanes(state);
- }
-
- protected void showAppInfo(final PageState state) {
- placeholderInstances.setVisible(state, false);
- placeholderSingletonSettings.setVisible(state, false);
- hideAllInstanceForms(state);
- hideAllSettingsPanes(state);
- appInfo.setVisible(state, true);
- }
-
- protected void hideAppInfo(final PageState state) {
- hideAllInstanceForms(state);
- hideAllSettingsPanes(state);
- appInfo.setVisible(state, false);
- }
-
- private void hideAllInstanceForms(final PageState state) {
- instanceForms.values().forEach(f -> {
- f.setVisible(state, false);
- });
- }
-
- private void hideAllSettingsPanes(final PageState state) {
- settingsPanes.values().forEach(p -> {
- p.setVisible(state, false);
- });
- }
-
- private AbstractAppInstanceForm createInstanceForm(
- final String name,
- final Class extends AbstractAppInstanceForm> instanceFormClass) {
-
- try {
- final Constructor extends AbstractAppInstanceForm> constructor
- = instanceFormClass
- .getConstructor(String.class,
- ParameterSingleSelectionModel.class,
- ParameterSingleSelectionModel.class);
-
- return constructor.newInstance(name,
- selectedAppType,
- selectedAppInstance);
- } catch (NoSuchMethodException |
- SecurityException |
- InstantiationException |
- IllegalAccessException |
- IllegalArgumentException |
- InvocationTargetException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- }
-
- private AbstractAppSettingsPane createSettingsPane(
- Class extends AbstractAppSettingsPane> settingsPaneClass) {
-
- try {
- final Constructor extends AbstractAppSettingsPane> constructor
- = settingsPaneClass
- .getDeclaredConstructor(ParameterSingleSelectionModel.class,
- ParameterSingleSelectionModel.class);
-
- return constructor.newInstance(selectedAppType,
- selectedAppInstance);
-
- } catch (NoSuchMethodException |
- SecurityException |
- InstantiationException |
- IllegalAccessException |
- IllegalArgumentException |
- InvocationTargetException ex) {
- throw new UncheckedWrapperException(ex);
- }
- }
-
- private class SingletonAppSettingsLink extends ActionLink {
-
- public SingletonAppSettingsLink(final GlobalizedMessage label) {
- super(label);
- }
-
- @Override
- public boolean isVisible(final PageState state) {
- if (super.isVisible(state)) {
- if (selectedAppType.getSelectedKey(state) == null) {
- return false;
- } else {
- final org.libreccm.web.ApplicationManager appManager
- = CdiUtil
- .createCdiUtil().findBean(
- org.libreccm.web.ApplicationManager.class);
- final ApplicationType appType = appManager
- .getApplicationTypes().get(selectedAppType
- .getSelectedKey(state));
-
- return appType.singleton();
- }
- } else {
- return false;
- }
- }
-
- }
-
- private class InstancesLink extends ActionLink {
-
- public InstancesLink(final GlobalizedMessage label) {
- super(label);
- }
-
- @Override
- public boolean isVisible(final PageState state) {
- if (super.isVisible(state)) {
- if (selectedAppType.getSelectedKey(state) == null) {
- return false;
- } else {
- final org.libreccm.web.ApplicationManager appManager
- = CdiUtil
- .createCdiUtil().findBean(
- org.libreccm.web.ApplicationManager.class);
- final ApplicationType appType = appManager
- .getApplicationTypes().get(selectedAppType
- .getSelectedKey(state));
-
- return !appType.singleton();
- }
- } else {
- return false;
- }
- }
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/DefaultApplicationInstanceForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/DefaultApplicationInstanceForm.java
deleted file mode 100644
index a70b6808c..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/DefaultApplicationInstanceForm.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.FormData;
-import com.arsdigita.bebop.FormProcessException;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.SaveCancelSection;
-import com.arsdigita.bebop.Table;
-import com.arsdigita.bebop.Text;
-import com.arsdigita.bebop.event.FormProcessListener;
-import com.arsdigita.bebop.event.FormSectionEvent;
-import com.arsdigita.bebop.form.TextField;
-import com.arsdigita.bebop.parameters.NotEmptyValidationListener;
-import com.arsdigita.bebop.table.TableColumn;
-import com.arsdigita.bebop.table.TableColumnModel;
-import com.arsdigita.bebop.table.TableModel;
-import com.arsdigita.bebop.table.TableModelBuilder;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.util.LockableImpl;
-import com.arsdigita.util.UncheckedWrapperException;
-
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.web.ApplicationCreateException;
-import org.libreccm.web.ApplicationRepository;
-import org.libreccm.web.ApplicationType;
-import org.libreccm.web.CcmApplication;
-
-import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class DefaultApplicationInstanceForm extends AbstractAppInstanceForm {
-
- private static final int COL_PRIMARY_URL = 0;
-
- private SaveCancelSection saveCancelSection;
-
- public DefaultApplicationInstanceForm(
- final String name,
- final ParameterSingleSelectionModel selectedAppType,
- final ParameterSingleSelectionModel selectedAppInstance) {
-
- super(name, selectedAppType, selectedAppInstance);
-
- }
-
- @Override
- protected void createWidgets() {
-
- addInstanceTable();
-
- final Label newInstanceFormHeading = new Label(new GlobalizedMessage(
- "ui.admin.applications.new_instance_form.title", ADMIN_BUNDLE));
- newInstanceFormHeading.setClassAttr("heading");
- add(newInstanceFormHeading);
-
- final TextField primaryUrl = new TextField("new_instance_primary_url");
- primaryUrl.setLabel(new GlobalizedMessage(
- "ui.admin.applications.new_instance.primary_url", ADMIN_BUNDLE));
- primaryUrl.addValidationListener(new NotEmptyValidationListener(
- new GlobalizedMessage(
- "ui.admin.applications.new_instance.primary_url.error.not_empty",
- ADMIN_BUNDLE)));
- add(primaryUrl);
-
- saveCancelSection = new SaveCancelSection();
- add(saveCancelSection);
-
- //add(new Text("placeholder"));
- }
-
- protected SaveCancelSection getSaveCancelSection() {
- return saveCancelSection;
- }
-
- protected void addInstanceTable() {
- final Label tableHeading = new Label(new GlobalizedMessage(
- "ui.admin.applications.instance_table.heading", ADMIN_BUNDLE));
- tableHeading.setClassAttr("heading");
- add(tableHeading);
-
- final Table instanceTable = new Table();
- final TableColumnModel colModel = instanceTable.getColumnModel();
- colModel.add(new TableColumn(
- COL_PRIMARY_URL,
- new Label(new GlobalizedMessage(
- "ui.admin.applications.instances_table.col_primary_url",
- ADMIN_BUNDLE))));
- instanceTable.setModelBuilder(new InstanceTableModelBuilder(this));
- add(instanceTable);
- }
-
- @Override
- @SuppressWarnings("unchecked")
- protected FormProcessListener createProcessListener() {
- return (FormSectionEvent e) -> {
- final PageState state = e.getPageState();
- if (saveCancelSection.getSaveButton().isSelected(state)) {
- final FormData data = e.getFormData();
-
- final String primaryUrlData = data.getString(
- "new_instance_primary_url");
-
- final org.libreccm.web.ApplicationManager appManager = CdiUtil
- .createCdiUtil().findBean(
- org.libreccm.web.ApplicationManager.class);
- try {
- appManager.createInstance(
- getSelectedAppType(state),
- primaryUrlData,
- (Class) getSelectedAppType(state)
- .applicationClass());
- } catch (ApplicationCreateException ex) {
- throw new UncheckedWrapperException(
- "Failed to create new application instance.", ex);
- }
-
- final Class> clazz = getSelectedAppType(state)
- .applicationClass();
- if (!clazz.isAssignableFrom(CcmApplication.class)) {
- throw new UncheckedWrapperException(String.format(
- "Application class \"%s\" is not a sub class of "
- + "class \"%s\". Something is wrong...",
- clazz.getName(), CcmApplication.class.getName()));
- }
- final CcmApplication application;
- try {
- application = (CcmApplication) clazz.newInstance();
- } catch (InstantiationException | IllegalAccessException ex) {
- throw new UncheckedWrapperException(
- String.format("Failed to create object of "
- + "class \"%s\".",
- clazz.getName()),
- ex);
- }
-
- application.setPrimaryUrl(primaryUrlData);
-
- final ApplicationRepository appRepo = CdiUtil.createCdiUtil()
- .findBean(ApplicationRepository.class);
- appRepo.save(application);
- }
- };
- }
-
- private class InstanceTableModelBuilder extends LockableImpl
- implements TableModelBuilder {
-
- private final AbstractAppInstanceForm instanceForm;
-
- public InstanceTableModelBuilder(
- final AbstractAppInstanceForm instanceForm) {
- this.instanceForm = instanceForm;
- }
-
- @Override
- public TableModel makeModel(final Table table, final PageState state) {
- return new InstanceTableModel(instanceForm.getSelectedAppType(state));
- }
-
- }
-
- private class InstanceTableModel implements TableModel {
-
- private final List instances;
- private int index = -1;
-
- public InstanceTableModel(final ApplicationType appType) {
- final ApplicationRepository appRepo = CdiUtil.createCdiUtil()
- .findBean(ApplicationRepository.class);
- instances = appRepo.findByType(appType.name());
- }
-
- @Override
- public int getColumnCount() {
- return 1;
- }
-
- @Override
- public boolean nextRow() {
- index++;
- return index < instances.size();
- }
-
- @Override
- public Object getElementAt(final int columnIndex) {
- switch (columnIndex) {
- case COL_PRIMARY_URL:
- return instances.get(index).getPrimaryUrl();
- default:
- throw new IllegalArgumentException("Illegal columnIndex");
- }
- }
-
- @Override
- public Object getKeyAt(final int columnIndex) {
- return Long.toString(instances.get(index).getObjectId());
- }
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/DefaultApplicationSettingsPane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/DefaultApplicationSettingsPane.java
deleted file mode 100644
index 791acd5b4..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/DefaultApplicationSettingsPane.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.globalization.GlobalizedMessage;
-
-import org.libreccm.web.ApplicationType;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class DefaultApplicationSettingsPane
- extends AbstractAppSettingsPane {
-
- public DefaultApplicationSettingsPane(
- final ParameterSingleSelectionModel selectedAppType,
- final ParameterSingleSelectionModel selectedAppInstance) {
-
- super(selectedAppType, selectedAppInstance);
-
- final Label label = new Label();
- label.addPrintListener(e -> {
- final PageState state = e.getPageState();
- final ApplicationType appType = getSelectedAppType(state);
-
- final GlobalizedMessage message;
- if (appType.singleton()) {
- message = new GlobalizedMessage(
- "ui.admin.applications.settings.singleton.no_setting_for",
- ADMIN_BUNDLE,
- new String[]{appType.name()});
- } else {
- message = new GlobalizedMessage(
- "ui.admin.applications.settings.instance.no_setting_for",
- ADMIN_BUNDLE,
- new String[]{appType.name()});
- }
-
- final Label target = (Label) e.getTarget();
- target.setLabel(message);
- });
-
- add(label);
- }
-
- @Override
- protected void createWidgets() {
-
-// final Label label = new Label();
-// label.addPrintListener(e -> {
-// final PageState state = e.getPageState();
-// final ApplicationType appType = getSelectedAppType(state);
-//
-// final GlobalizedMessage message;
-// if (appType.singleton()) {
-// message = new GlobalizedMessage(
-// "ui.admin.applications.settings.singleton.no_setting_for",
-// ADMIN_BUNDLE,
-// new String[]{appType.name()});
-// } else {
-// message = new GlobalizedMessage(
-// "ui.admin.applications.settings.instance.no_setting_for",
-// ADMIN_BUNDLE,
-// new String[]{appType.name()});
-// }
-//
-// final Label target = (Label) e.getTarget();
-// target.setLabel(message);
-// });
-//
-// add(label);
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModel.java
deleted file mode 100644
index d894bf1cb..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModel.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright (c) 2013 Jens Pelzetter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.PropertySheet;
-import com.arsdigita.bebop.PropertySheetModel;
-import com.arsdigita.ui.admin.GlobalizationUtil;
-import com.arsdigita.globalization.GlobalizedMessage;
-
-import java.util.List;
-
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.web.ApplicationRepository;
-import org.libreccm.web.ApplicationType;
-import org.libreccm.web.CcmApplication;
-
-/**
- * A property sheet model for displaying informations about an
- * {@link ApplicationType} using a {@link PropertySheet}.
- *
- * @author Jens Pelzetter
- * @version $Id: LegacyApplicationInfoPropertySheetModel.java 2220 2013-06-19
- 15:26:58Z jensp $
- */
-public class LegacyApplicationInfoPropertySheetModel implements PropertySheetModel {
-
- private static final int APP_TITLE = 0;
- private static final int APP_CLASS = 1;
- private static final int APP_SINGLETON = 2;
- private static final int APP_DESC = 3;
- private static final int SINGLETON_PATH = 4;
- private final ApplicationType applicationType;
- private int currentIndex = -1;
-
- public LegacyApplicationInfoPropertySheetModel(
- final ApplicationType applicationType) {
- this.applicationType = applicationType;
- }
-
- @Override
- public boolean nextRow() {
- if (applicationType.singleton() && currentIndex < SINGLETON_PATH) {
- currentIndex++;
- return true;
- } else if (!applicationType.singleton() && currentIndex < APP_DESC) {
- currentIndex++;
- return true;
- } else {
- currentIndex = -1;
- return false;
- }
- }
-
- public String getLabel() {
- switch (currentIndex) {
- case APP_TITLE:
- return (String) GlobalizationUtil.globalize(
- "ui.admin.applications.ApplicationInfoSection.title.label").
- localize();
- case APP_CLASS:
- return (String) GlobalizationUtil.globalize(
- "ui.admin.applications.ApplicationInfoSection.app_class.label")
- .localize();
- case APP_SINGLETON:
- return (String) GlobalizationUtil.globalize(
- "ui.admin.applications.ApplicationInfoSection.singleton.label")
- .localize();
- case APP_DESC:
- return (String) GlobalizationUtil.globalize(
- "ui.admin.applications.ApplicationInfoSection.desc.label").
- localize();
- case SINGLETON_PATH:
- return (String) GlobalizationUtil.globalize(
- "ui.admin.applications.ApplicationInfoSection.singleton_instance.path.label")
- .localize();
- default:
- return "unknown";
- }
- }
-
- public GlobalizedMessage getGlobalizedLabel() {
- switch (currentIndex) {
- case APP_TITLE:
- return GlobalizationUtil.globalize(
- "ui.admin.applications.ApplicationInfoSection.title.label");
- case APP_CLASS:
- return GlobalizationUtil.globalize(
- "ui.admin.applications.ApplicationInfoSection.app_class.label");
- case APP_SINGLETON:
- return GlobalizationUtil.globalize(
- "ui.admin.applications.ApplicationInfoSection.singleton.label");
- case APP_DESC:
- return GlobalizationUtil.globalize(
- "ui.admin.applications.ApplicationInfoSection.desc.label");
- case SINGLETON_PATH:
- return GlobalizationUtil.globalize(
- "ui.admin.applications.ApplicationInfoSection.singleton_instance.path.label");
- default:
- return GlobalizationUtil.globalize("unknown");
- }
- }
-
- @Override
- public String getValue() {
- switch (currentIndex) {
- case APP_TITLE:
- return applicationType.name();
- case APP_CLASS:
- return applicationType.name();
- case APP_SINGLETON:
- if (applicationType.singleton()) {
- return (String) GlobalizationUtil.globalize(
- "ui.admin.applications.ApplicationInfoSection.singleton.yes")
- .localize();
- } else {
- return (String) GlobalizationUtil.globalize(
- "ui.admin.applications.ApplicationInfoSection.singleton.no")
- .localize();
- }
- case APP_DESC:
- return applicationType.descKey();
- case SINGLETON_PATH:
- final String path;
- final ApplicationRepository appRepo = CdiUtil.createCdiUtil()
- .findBean(ApplicationRepository.class);
- final List instances
- = appRepo.findByType(
- applicationType.name());
- if (instances.isEmpty()) {
- path = "";
- } else {
- path = instances.get(0).getPrimaryUrl();
- }
-
- return path;
- default:
- return "";
- }
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModelBuilder.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModelBuilder.java
deleted file mode 100644
index 194d83ffb..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModelBuilder.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2013 Jens Pelzetter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.PropertySheet;
-import com.arsdigita.bebop.PropertySheetModel;
-import com.arsdigita.bebop.PropertySheetModelBuilder;
-import com.arsdigita.util.LockableImpl;
-import org.libreccm.web.ApplicationType;
-
-/**
- * {@link PropertySheetModelBuilder} implementation for the the {@link LegacyApplicationInfoPropertySheetModel}.
- *
- * @author Jens Pelzetter
- * @version $Id: LegacyApplicationInfoPropertySheetModelBuilder.java 2219 2013-06-19 08:16:11Z jensp $
- */
-public class LegacyApplicationInfoPropertySheetModelBuilder
-extends LockableImpl implements PropertySheetModelBuilder {
-
- private final ApplicationType applicationType;
-
- public LegacyApplicationInfoPropertySheetModelBuilder(
- final ApplicationType applicationType) {
- super();
- this.applicationType = applicationType;
- }
-
- @Override
- public PropertySheetModel makeModel(final PropertySheet sheet,
- final PageState state) {
- return new LegacyApplicationInfoPropertySheetModel(applicationType);
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePane.java
deleted file mode 100644
index 47dde0d1f..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePane.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2013 Jens Pelzetter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PropertySheet;
-import com.arsdigita.bebop.SegmentedPanel;
-import com.arsdigita.bebop.event.PrintEvent;
-import com.arsdigita.bebop.event.PrintListener;
-import com.arsdigita.ui.admin.GlobalizationUtil;
-import org.libreccm.web.CcmApplication;
-
-
-
-/**
- * This pane shows informations about a specific instance of a multi instance application, like
- * title, parent application (if any) and the path. Also it contains a form for editing settings
- * specific to the instance.
- *
- * @author Jens Pelzetter
- * @version $Id$
- */
-public class LegacyApplicationInstancePane extends SegmentedPanel {
-
- private CcmApplication application;
- private final ApplicationInstanceAwareContainer appAdminPane;
- private final LegacyApplicationInstancePropertySheetModelBuilder modelBuilder;
-
- public LegacyApplicationInstancePane(
- final ApplicationInstanceAwareContainer appAdminPane) {
-
- super();
- this.appAdminPane = appAdminPane;
-
- modelBuilder = new LegacyApplicationInstancePropertySheetModelBuilder();
- final PropertySheet appInstInfoPanel = new PropertySheet(modelBuilder);
-
- addSegment(new Label(GlobalizationUtil.globalize(
- "ui.admin.applications.ApplicationInstancePane.info.heading")),
- appInstInfoPanel);
-
- if (appAdminPane == null) {
-
- final Label noAdminPaneLabel = new Label();
- noAdminPaneLabel.addPrintListener(new PrintListener() {
- @Override
- public void prepare(final PrintEvent event) {
- final Label target = (Label) event.getTarget();
-
- target.setLabel(GlobalizationUtil.globalize(
- "ui.admin.MultiInstancePane.manage.no_instance_admin_pane_found",
- new String[]{application.getApplicationType()}));
- }
-
- });
-
- addSegment(new Label(GlobalizationUtil.globalize(
- "ui.admin.MultiInstanceApplicationPane.manage.heading")),
- noAdminPaneLabel);
- } else {
- //appAdminPane.setAppInstance(appInstance);
- addSegment(new Label(GlobalizationUtil.globalize(
- "ui.admin.applications.ApplicationInstancePane.manage.heading")),
- appAdminPane);
- }
- }
-
- public void setApplication(final CcmApplication application) {
- this.application = application;
- appAdminPane.setAppInstance(application);
- modelBuilder.setApplication(application);
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePropertySheetModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePropertySheetModel.java
deleted file mode 100644
index 4b26cd68a..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePropertySheetModel.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 2013 Jens Pelzetter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.PropertySheet;
-import com.arsdigita.bebop.PropertySheetModel;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.ui.admin.GlobalizationUtil;
-import org.libreccm.web.CcmApplication;
-
-/**
- * A {@link PropertySheetModel} implementation for displaying informations about an instance of an application
- * using a {@link PropertySheet}.
- *
- * @author Jens Pelzetter
- * @version $Id: LegacyApplicationInstancePropertySheetModel.java 2923 2014-10-27 18:55:26Z jensp $
- */
-public class LegacyApplicationInstancePropertySheetModel implements PropertySheetModel {
-
- private static final int INST_TITLE = 0;
- private static final int INST_PARENT = 1;
- private static final int INST_PATH = 2;
- private static final int INST_DESC = 3;
- private final CcmApplication application;
- private int currentIndex = -1;
-
-
- public LegacyApplicationInstancePropertySheetModel(final CcmApplication application) {
- this.application = application;
- }
-
- @Override
- public boolean nextRow() {
- currentIndex++;
- return currentIndex <= INST_DESC;
- }
-
- @Override
- public String getLabel() {
- switch (currentIndex) {
- case INST_TITLE:
- return (String) GlobalizationUtil.globalize("ui.admin.applications.ApplicationInstancePane.title.label").
- localize();
- case INST_PARENT:
- return (String) GlobalizationUtil.globalize(
- "ui.admin.applications.ApplicationInstancePane.parent_app.label").localize();
- case INST_PATH:
- return (String) GlobalizationUtil.globalize("ui.admin.applications.ApplicationInstancePane.path.label").
- localize();
- case INST_DESC:
- return (String) GlobalizationUtil.globalize("ui.admin.applications.ApplicationInstancePane.desc.label").
- localize();
- default:
- return "";
- }
- }
-
- @Override
- public GlobalizedMessage getGlobalizedLabel() {
- switch (currentIndex) {
- case INST_TITLE:
- return GlobalizationUtil.globalize("ui.admin.applications.ApplicationInstancePane.title.label");
- case INST_PARENT:
- return GlobalizationUtil.globalize(
- "ui.admin.applications.ApplicationInstancePane.parent_app.label");
- case INST_PATH:
- return GlobalizationUtil.globalize("ui.admin.applications.ApplicationInstancePane.path.label");
- case INST_DESC:
- return GlobalizationUtil.globalize("ui.admin.applications.ApplicationInstancePane.desc.label");
- default:
- return GlobalizationUtil.globalize("unknown");
- }
- }
-
- @Override
- public String getValue() {
- switch (currentIndex) {
- case INST_TITLE:
- return application.getTitle().getValue();
- case INST_PARENT:
- if (application.getParent() == null) {
- return "";
- } else {
- return application.getParent().getTitle().getValue();
- }
- case INST_PATH:
- return application.getPrimaryUrl();
- case INST_DESC:
- return application.getDescription().getValue();
- default:
- return "";
- }
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePropertySheetModelBuilder.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePropertySheetModelBuilder.java
deleted file mode 100644
index 0bcc1e78c..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePropertySheetModelBuilder.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2013 Jens Pelzetter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.PropertySheet;
-import com.arsdigita.bebop.PropertySheetModel;
-import com.arsdigita.bebop.PropertySheetModelBuilder;
-import com.arsdigita.util.LockableImpl;
-import org.libreccm.web.CcmApplication;
-
-/**
- * {@link PropertySheetModelBuilder} implementation for the {@link LegacyApplicationInstancePropertySheetModel}.
- *
- * @author Jens Pelzetter
- * @version $Id: LegacyApplicationInstancePropertySheetModelBuilder.java 2293 2013-08-05 11:00:18Z jensp $
- */
-public class LegacyApplicationInstancePropertySheetModelBuilder
-extends LockableImpl implements PropertySheetModelBuilder {
-
- private CcmApplication application;
-
- public LegacyApplicationInstancePropertySheetModelBuilder() {
- super();
- }
-
- @Override
- public PropertySheetModel makeModel(final PropertySheet sheet, final PageState state) {
- return new LegacyApplicationInstancePropertySheetModel(application);
- }
-
- public void setApplication(final CcmApplication application) {
- this.application = application;
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyBaseApplicationPane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyBaseApplicationPane.java
deleted file mode 100644
index ac88994cc..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyBaseApplicationPane.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2013 Jens Pelzetter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PropertySheet;
-import com.arsdigita.bebop.SegmentedPanel;
-import com.arsdigita.ui.admin.GlobalizationUtil;
-import org.libreccm.web.ApplicationType;
-
-/**
- * Basic application pane containing the parts common for singleton and multi instance applications types. Shows
- * informations about a specific application type.
- *
- * @author Jens Pelzetter
- * @version $Id$
- */
-public class LegacyBaseApplicationPane extends SegmentedPanel {
-
- public LegacyBaseApplicationPane(final ApplicationType applicationType) {
- super();
-
- final PropertySheet appInfoPanel = new PropertySheet(
- new LegacyApplicationInfoPropertySheetModelBuilder(
- applicationType));
- addSegment(new Label(GlobalizationUtil.globalize(
- "ui.admin.applications.ApplicationInfoSection.heading")),
- appInfoPanel);
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyMultiInstanceApplicationPane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyMultiInstanceApplicationPane.java
deleted file mode 100644
index 7954b2d3f..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyMultiInstanceApplicationPane.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * Copyright (c) 2013 Jens Pelzetter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.Table;
-import com.arsdigita.bebop.table.TableColumn;
-import com.arsdigita.bebop.table.TableModel;
-import com.arsdigita.bebop.table.TableModelBuilder;
-import com.arsdigita.ui.admin.GlobalizationUtil;
-import com.arsdigita.util.LockableImpl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.web.ApplicationRepository;
-import org.libreccm.web.ApplicationType;
-import org.libreccm.web.CcmApplication;
-
-/**
- * Pane for multi instance applications. Additional to the data provided by
- * {@link LegacyBaseApplicationPane} it shows a table of all instances of the
- * application type and a form for creating new instances of the application
- * type.
- *
- * @param
- * @author Jens Pelzetter
- * @version $Id$
- */
-public class LegacyMultiInstanceApplicationPane
- extends LegacyBaseApplicationPane {
-
- private final static int COL_TITLE = 0;
- private final static int COL_URL = 1;
- private final static int COL_DESC = 2;
-
- public LegacyMultiInstanceApplicationPane(final ApplicationType applicationType,
- final Form createForm) {
- super(applicationType);
-
- //final ApplicationCollection applications = Application.retrieveAllApplications(applicationType.
- // getApplicationObjectType());
- //applications.rewind();
- final Table table = new Table();
- table.getColumnModel().add(
- new TableColumn(COL_TITLE,
- new Label(GlobalizationUtil.globalize(
- "ui.admin.applicationsMultiInstanceApplicationPane.instances.table.col_title.header"))));
- table.getColumnModel().add(
- new TableColumn(COL_URL,
- new Label(GlobalizationUtil.
- globalize(
- "ui.admin.applicationsMultiInstanceApplicationPane.instances.table.col_url.header"))));
- table.getColumnModel().add(
- new TableColumn(COL_DESC,
- new Label(GlobalizationUtil.
- globalize(
- "ui.admin.applicationsMultiInstanceApplicationPane.instances.table.col_desc.header"))));
-
- //table.setModelBuilder(new ApplicationInstancesTableModelBuilder(applications));
- table.setModelBuilder(new ApplicationInstancesTableModelBuilder(
- applicationType.name()));
-
- addSegment(new Label(GlobalizationUtil.globalize(
- "ui.admin.MultiInstanceApplicationPane.instances")),
- table);
-
- if (createForm == null) {
- addSegment(new Label(GlobalizationUtil.globalize(
- "ui.admin.MultiInstanceApplicationPane.manage_instances.heading")),
- new Label(GlobalizationUtil.globalize(
- "ui.admin.MultiInstancePane.manage.no_create_form_found",
- new String[]{applicationType.name()})));
- } else {
- addSegment(new Label(GlobalizationUtil.globalize(
- "ui.admin.MultiInstanceApplicationPane.create_instance")),
- createForm);
-
- }
- }
-
- private class ApplicationInstancesTableModelBuilder extends LockableImpl
- implements TableModelBuilder {
-
- //private final ApplicationCollection applications;
- private final String appType;
-
- //public ApplicationInstancesTableModelBuilder(final ApplicationCollection applications) {
- // super();
- //
- // this.applications = applications;
- //}
- public ApplicationInstancesTableModelBuilder(final String appType) {
- super();
-
- //this.applications = Application.retrieveAllApplications(appType);
- this.appType = appType;
- }
-
- @Override
- public TableModel makeModel(final Table table, final PageState state) {
- return new ApplicationInstancesTableModel(table, appType);
- }
- }
-
- private class ApplicationInstancesTableModel implements TableModel {
-
- private final Table table;
- //private final ApplicationCollection applications;
- private final List appData = new ArrayList<>();
- private int currentIndex = -1;
-
- //public ApplicationInstancesTableModel(final Table table, final ApplicationCollection applications) {
- // this.table = table;
- // this.applications = applications;
- //}
- public ApplicationInstancesTableModel(final Table table,
- final String appType) {
- this.table = table;
- final ApplicationRepository appRepo = CdiUtil.createCdiUtil()
- .findBean(ApplicationRepository.class);
- final List applications = appRepo.
- findByType(appType);
- for (CcmApplication application : applications) {
- addAppData(application);
- }
- }
-
- private void addAppData(final CcmApplication application) {
- appData.add(new AppData(application.getTitle().getValue(),
- application.getDescription().getValue(),
- application.getPrimaryUrl()));
- }
-
- @Override
- public int getColumnCount() {
- return table.getColumnModel().size();
- }
-
- @Override
- public boolean nextRow() {
- currentIndex++;
- return currentIndex < appData.size();
- }
-
- @Override
- public Object getElementAt(final int columnIndex) {
- switch (columnIndex) {
- case COL_TITLE:
- //return applications.getApplication().getTitle();
- return appData.get(currentIndex).getTitle();
- case COL_DESC:
- //return applications.getApplication().getDescription();
- return appData.get(currentIndex).getDescription();
- case COL_URL:
- //return applications.getApplication().getPath();
- return appData.get(currentIndex).getPath();
- default:
- return null;
- }
- }
-
- @Override
- public Object getKeyAt(final int columnIndex) {
- //if (SessionManager.getSession().getTransactionContext().inTxn()) {
- // SessionManager.getSession().getTransactionContext().commitTxn();
- //}
- //return applications.getApplication().getPath();
- return appData.get(currentIndex).getPath();
- }
- }
-
- private class AppData {
-
- private final String title;
- private final String description;
- private final String path;
-
- public AppData() {
- title = "";
- description = "";
- path = "";
- }
-
- public AppData(final String title, final String description,
- final String path) {
- this.title = title;
- this.description = description;
- this.path = path;
- }
-
- public String getTitle() {
- return title;
- }
-
- public String getDescription() {
- return description;
- }
-
- public String getPath() {
- return path;
- }
- }
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacySingletonApplicationPane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacySingletonApplicationPane.java
deleted file mode 100644
index 8a0bf3943..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacySingletonApplicationPane.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2013 Jens Pelzetter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-package com.arsdigita.ui.admin.applications;
-
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.SimpleContainer;
-import com.arsdigita.ui.admin.GlobalizationUtil;
-import org.libreccm.web.ApplicationType;
-
-/**
- * Pane for managing singleton applications. Shows a form to edit application specific settings.
- *
- * @author Jens Pelzetter
- * @version $Id$
- */
-public class LegacySingletonApplicationPane extends LegacyBaseApplicationPane {
-
- public LegacySingletonApplicationPane(final ApplicationType applicationType, final SimpleContainer appAdminPane) {
- super(applicationType);
-
- if (appAdminPane == null) {
- addSegment(new Label(GlobalizationUtil.globalize(
- "ui.admin.SingletonApplicationPane.manage.heading")),
- new Label(GlobalizationUtil.globalize(
- "ui.admin.SingletonApplicationPane.manage.no_admin_pane_found",
- new String[]{applicationType.name()})));
- } else {
- addSegment(new Label(GlobalizationUtil.globalize(
- "ui.admin.SingletonApplicationPane.manage.heading")),
- appAdminPane);
- }
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationInstanceTreeNode.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationInstanceTreeNode.java
deleted file mode 100644
index 34b8fc8c2..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationInstanceTreeNode.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (c) 2013 Jens Pelzetter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-package com.arsdigita.ui.admin.applications.tree;
-
-import com.arsdigita.bebop.tree.TreeNode;
-import com.arsdigita.ui.admin.applications.ApplicationsAdministrationTab;
-
-import org.libreccm.web.CcmApplication;
-
-/**
- * Tree Node for the application tree representing an instance of a application.
- *
- * @author Jens Pelzetter
- * @version $Id: LegacyApplicationInstanceTreeNode.java 2282 2013-08-01 10:45:42Z jensp $
- *
- * @see ApplicationTreeModel
- * @see ApplicationTreeModelBuilder
- * @see ApplicationTypeTreeNode
- * @see ApplicationsAdministrationTab
- * @see TreeNode
- */
-public class LegacyApplicationInstanceTreeNode implements TreeNode {
-
- /**
- * The application instance represented by this {@code TreeNode}
- */
- //private final Application application;
- private final String path;
- private final String title;
- private final String appType;
-
- /**
- * Constructor
- *
- * @param application The application instance to represent by this {@code TreeNode}
- */
- public LegacyApplicationInstanceTreeNode(final CcmApplication application) {
- //this.application = application;
- path = application.getPrimaryUrl();
- title = application.getTitle().getValue();
- appType = application.getClass().getName();
- }
-
- public String getPath() {
- return path;
- }
-
- public String getTitle() {
- return title;
- }
-
- public String getAppType() {
- return appType;
- }
-
- /**
- * Returns the key for this {@link TreeNode}.
- *
- * @return The path of the application instance.
- * @see TreeNode#getKey()
- */
- @Override
- public Object getKey() {
- //return application.getPath();
- return path;
- }
-
- /**
- * Data to show in the tree for this node.
- *
- * @return The title of the application instance
- * @see TreeNode#getElement()
- */
- @Override
- public Object getElement() {
- //return application.getTitle();
- return title;
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTreeModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTreeModel.java
deleted file mode 100644
index 2507010ca..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTreeModel.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright (c) 2013 Jens Pelzetter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-package com.arsdigita.ui.admin.applications.tree;
-
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.tree.TreeModel;
-import com.arsdigita.bebop.tree.TreeNode;
-import com.arsdigita.ui.admin.applications.ApplicationsAdministrationTab;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.web.ApplicationManager;
-import org.libreccm.web.ApplicationRepository;
-import org.libreccm.web.ApplicationType;
-import org.libreccm.web.CcmApplication;
-
-/**
- * A {@link TreeModel} for the tree of applications in
- * {@link ApplicationsAdministrationTab}. The tree consists of two different
- * types of nodes: Nodes for {@link ApplicationTypes} and nodes for
- * {@link CCmApplication} instances.
- *
- * @author Jens Pelzetter
- * @version $Id: LegacyApplicationTreeModel.java 2406 2013-10-31 19:52:22Z jensp $
- */
-public class LegacyApplicationTreeModel implements TreeModel {
-
- public LegacyApplicationTreeModel() {
- //Nothing
- }
-
- @Override
- public TreeNode getRoot(final PageState state) {
- return new RootTreeNode();
- }
-
- @Override
- public boolean hasChildren(final TreeNode node, final PageState state) {
- if (node instanceof RootTreeNode) {
- return true;
- } else if (node instanceof LegacyApplicationTypeTreeNode) {
- final LegacyApplicationTypeTreeNode typeTreeNode
- = (LegacyApplicationTypeTreeNode) node;
-
- //if (typeTreeNode.getApplicationType().isSingleton()) {
- if (typeTreeNode.isSingleton()) {
- return false;
- } else {
- //return !retrieveApplicationInstances(typeTreeNode.getApplicationType()).isEmpty();
- //return !retrieveApplicationInstances(typeTreeNode.getApplicationType()).isEmpty();
- return !retrieveApplicationInstances(typeTreeNode.getObjecType())
- .isEmpty();
- }
- } else if (node instanceof LegacyApplicationInstanceTreeNode) {
- return false;
- } else {
- throw new IllegalArgumentException(
- "The ApplicationTreeModel can only work with ApplicationTypeTreeNodes and"
- + "ApplicationInstanceTreeNodes.");
- }
- }
-
- @Override
- public Iterator getChildren(final TreeNode node, final PageState state) {
- if (node instanceof RootTreeNode) {
- final ApplicationManager appManager = CdiUtil.createCdiUtil()
- .findBean(ApplicationManager.class);
-
- final Collection appTypes = appManager
- .getApplicationTypes().values();
-
- return new AppTypesIterator(appTypes);
- } else if (node instanceof LegacyApplicationTypeTreeNode) {
- final LegacyApplicationTypeTreeNode typeTreeNode
- = (LegacyApplicationTypeTreeNode) node;
-
- final ApplicationRepository appRepo = CdiUtil.createCdiUtil()
- .findBean(ApplicationRepository.class);
-
- final List applications = appRepo.findByType(
- typeTreeNode.getObjecType());
-
- return new AppIterator(applications);
- } else if (node instanceof LegacyApplicationInstanceTreeNode) {
- return null;
- } else {
- throw new IllegalArgumentException(
- "The ApplicationTreeModel can only work with ApplicationTypeTreeNodes and"
- + "ApplicationInstanceTreeNodes.");
- }
- }
-
- private List retrieveApplicationInstances(
- final ApplicationType applicationType) {
- final ApplicationRepository appRepo = CdiUtil.createCdiUtil().findBean(
- ApplicationRepository.class);
-
- return appRepo.findByType(applicationType.name());
- }
-
- private List retrieveApplicationInstances(
- final String appObjectType) {
- final ApplicationRepository appRepo = CdiUtil.createCdiUtil().findBean(
- ApplicationRepository.class);
-
- return appRepo.findByType(appObjectType);
- }
-
- private class RootTreeNode implements TreeNode {
-
- public RootTreeNode() {
- //Nothing
- }
-
- @Override
- public Object getKey() {
- return "-1";
- }
-
- @Override
- public Object getElement() {
- return "/";
- }
-
- }
-
- private class AppTypesIterator implements Iterator {
-
- private final Iterator appTypes;
-
- public AppTypesIterator(final Collection appTypes) {
- this.appTypes = appTypes.iterator();
- }
-
- @Override
- public boolean hasNext() {
- return appTypes.hasNext();
- }
-
- @Override
- public LegacyApplicationTypeTreeNode next() {
- return new LegacyApplicationTypeTreeNode(appTypes.next());
- }
-
- @Override
- public void remove() {
- throw new UnsupportedOperationException("Not supported.");
- }
-
- }
-
- private class AppIterator implements Iterator {
-
- private final Iterator applications;
-
- public AppIterator(final Collection applications) {
- this.applications = applications.iterator();
- }
-
- @Override
- public boolean hasNext() {
- return applications.hasNext();
- }
-
- @Override
- public LegacyApplicationInstanceTreeNode next() {
- return new LegacyApplicationInstanceTreeNode(applications.next());
- }
-
- @Override
- public void remove() {
- throw new UnsupportedOperationException("Not supported.");
- }
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTreeModelBuilder.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTreeModelBuilder.java
deleted file mode 100644
index 0ca945aac..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTreeModelBuilder.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2013 Jens Pelzetter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-package com.arsdigita.ui.admin.applications.tree;
-
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.Tree;
-import com.arsdigita.bebop.tree.TreeModel;
-import com.arsdigita.bebop.tree.TreeModelBuilder;
-import com.arsdigita.ui.admin.applications.ApplicationsAdministrationTab;
-import com.arsdigita.util.LockableImpl;
-
-/**
- * The {@link TreeModelBuilder} creating the {@link TreeModel} for the
- * applications tree used in {@link ApplicationsAdministrationTab}.
- *
- * @author Jens Pelzetter
- * @version $Id: LegacyApplicationTreeModelBuilder.java 2294 2013-08-05 18:39:46Z
- jensp $
- */
-public class LegacyApplicationTreeModelBuilder extends LockableImpl
- implements TreeModelBuilder {
-
- @Override
- public TreeModel makeModel(final Tree tree, final PageState state) {
- tree.expand("-1", state);
- return new LegacyApplicationTreeModel();
- }
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTypeTreeNode.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTypeTreeNode.java
deleted file mode 100644
index eb33c53c3..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/tree/LegacyApplicationTypeTreeNode.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2013 Jens Pelzetter
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-package com.arsdigita.ui.admin.applications.tree;
-
-import com.arsdigita.bebop.tree.TreeNode;
-import java.math.BigDecimal;
-import org.libreccm.web.ApplicationType;
-
-/**
- * Tree Node implementation for the Application Tree in the Application admin tab.
- *
- * @author Jens Pelzetter
- * @version $Id: LegacyApplicationTypeTreeNode.java 2282 2013-08-01 10:45:42Z jensp $
- */
-public class LegacyApplicationTypeTreeNode implements TreeNode {
-
- private final String name;
- private final String objectType;
- private final boolean singleton;
- private final String description;
- // Needed:
- // isSingleton
- // getObjectType
-
- public LegacyApplicationTypeTreeNode(final ApplicationType applicationType) {
- //this.applicationType = applicationType;
- name = applicationType.name();
- objectType = applicationType.name();
- singleton = applicationType.singleton();
- description = applicationType.descKey();
- }
-
- public String getName() {
- return name;
- }
-
- public String getObjecType() {
- return objectType;
- }
-
- public boolean isSingleton() {
- return singleton;
- }
-
- public String getDescription() {
- return description;
- }
-
- public Object getKey() {
- //return applicationType.getApplicationObjectType();
- return objectType;
- }
-
- public Object getElement() {
- return name;
- }
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesController.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesController.java
deleted file mode 100644
index fa658c715..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesController.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2017 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import org.libreccm.categorization.Categorization;
-import org.libreccm.categorization.Category;
-import org.libreccm.categorization.CategoryManager;
-import org.libreccm.categorization.CategoryRepository;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.enterprise.context.RequestScoped;
-import javax.inject.Inject;
-import javax.transaction.Transactional;
-
-/**
- *
- * @author Jens Pelzetter
- */
-@RequestScoped
-class CategoriesController {
-
- @Inject
- private CategoryRepository categoryRepo;
-
- @Inject
- private CategoryManager categoryManager;
-
- @Transactional(Transactional.TxType.REQUIRED)
- protected List getSubCategories(final Category ofCategory) {
-
- final Category category = categoryRepo
- .findById(ofCategory.getObjectId())
- .orElseThrow(() -> new IllegalArgumentException(String
- .format("No Category with ID %d in the database.",
- ofCategory.getObjectId())));
-
- return new ArrayList<>(category.getSubCategories());
- }
-
- @Transactional(Transactional.TxType.REQUIRED)
- protected boolean hasChildren(final Category category) {
-
- final Category categoryToCheck = categoryRepo
- .findById(category.getObjectId())
- .orElseThrow(() -> new IllegalArgumentException(String
- .format("No Category with ID %d in the database.",
- category.getObjectId())));
-
- return categoryManager.hasSubCategories(categoryToCheck);
- }
-
- @Transactional(Transactional.TxType.REQUIRED)
- protected boolean isDeletable(final Category category) {
-
- final Category categoryToCheck = categoryRepo
- .findById(category.getObjectId())
- .orElseThrow(() -> new IllegalArgumentException(String
- .format("No Category with ID %d in the database.",
- category.getObjectId())));
-
- final List subCats = categoryToCheck.getSubCategories();
- final List objects = categoryToCheck.getObjects();
-
- return (subCats == null || subCats.isEmpty())
- && (objects == null || objects.isEmpty());
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTab.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTab.java
deleted file mode 100644
index 2179a1c0d..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTab.java
+++ /dev/null
@@ -1,552 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.ActionLink;
-import com.arsdigita.bebop.BoxPanel;
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.Page;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.SegmentedPanel;
-import com.arsdigita.bebop.Tree;
-import com.arsdigita.bebop.form.Submit;
-import com.arsdigita.bebop.form.TextField;
-import com.arsdigita.bebop.parameters.StringParameter;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.toolbox.ui.LayoutPanel;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class CategoriesTab extends LayoutPanel {
-
- protected static final String DOMAINS_FILTER = "domainsFilter";
-
- private final StringParameter domainIdParameter;
- private final ParameterSingleSelectionModel selectedDomainId;
-
- private final StringParameter categoryIdParameter;
- private final ParameterSingleSelectionModel selectedCategoryId;
-
- private final StringParameter languageParameter;
- private final ParameterSingleSelectionModel selectedLanguage;
-
- private final Label domainsFilterFormHeader;
- private final Form domainsFilterForm;
- private final BoxPanel domainsTablePanel;
-
- private final DomainForm domainForm;
-
- private final DomainDetails domainDetails;
- private final DomainTitleForm domainTitleForm;
- private final DomainDescriptionForm domainDescriptionForm;
-
- private final Label categoriesTreeHeader;
- private final BoxPanel categoriesTreePanel;
-
- private final CategoryDetails categoryDetails;
- private final CategoryTitleForm categoryTitleForm;
- private final CategoryDescriptionForm categoryDescriptionForm;
- private final CategoryCreateForm categoryCreateForm;
- private final CategoryEditForm categoryEditForm;
- private final CategoryMover categoryMover;
-
- public CategoriesTab() {
- super();
-
- setClassAttr("sidebarNavPanel");
-
- domainIdParameter = new StringParameter("selected_domain_id");
- selectedDomainId = new ParameterSingleSelectionModel<>(
- domainIdParameter);
-
- categoryIdParameter = new StringParameter("selected_category_id");
- selectedCategoryId = new ParameterSingleSelectionModel<>(
- categoryIdParameter);
-
- languageParameter = new StringParameter("selected_language");
- selectedLanguage = new ParameterSingleSelectionModel<>(
- languageParameter);
-
- final SegmentedPanel left = new SegmentedPanel();
-
- domainsFilterFormHeader = new Label(new GlobalizedMessage(
- "ui.admin.categories.domains.table.filter.header",
- ADMIN_BUNDLE));
- domainsFilterForm = new Form("domainFilterForm");
- final TextField domainsFilter = new TextField(DOMAINS_FILTER);
- domainsFilterForm.add(domainsFilter);
- domainsFilterForm.add(new Submit(new GlobalizedMessage(
- "ui.admin.categories.domains.table.filter", ADMIN_BUNDLE)));
- final ActionLink clearLink = new ActionLink(new GlobalizedMessage(
- "ui.admin.categories.domains.table.filter.clear",
- ADMIN_BUNDLE));
- clearLink.addActionListener(e -> {
- final PageState state = e.getPageState();
- domainsFilter.setValue(state, null);
- });
- domainsFilterForm.add(clearLink);
- left.addSegment(domainsFilterFormHeader, domainsFilterForm);
-
- categoriesTreeHeader = new Label(new GlobalizedMessage(
- "ui.admin.categories.tree.header",
- ADMIN_BUNDLE));
- categoriesTreePanel = new BoxPanel(BoxPanel.VERTICAL);
- final Tree categoriesTree = new Tree(new CategoriesTreeModelBuilder(
- selectedDomainId));
- categoriesTree.addChangeListener(e -> {
- final PageState state = e.getPageState();
-
- selectedCategoryId.setSelectedKey(
- state, (String) categoriesTree.getSelectedKey(state));
-
- showCategoryDetails(state);
- });
- selectedCategoryId.addChangeListener(e -> {
- final PageState state = e.getPageState();
-
- categoriesTree.setSelectedKey(state, selectedCategoryId
- .getSelectedKey(state));
- });
-
- final ActionLink backToDomain = new ActionLink(new GlobalizedMessage(
- "ui.admin.categories.tree.back",
- ADMIN_BUNDLE));
- backToDomain.addActionListener(e -> {
- final PageState state = e.getPageState();
- categoriesTree.getSelectionModel().clearSelection(state);
- showDomainDetails(state);
- });
- categoriesTreePanel.add(backToDomain);
- categoriesTreePanel.add(categoriesTree);
- left.addSegment(categoriesTreeHeader, categoriesTreePanel);
-
- setLeft(left);
-
- final BoxPanel body = new BoxPanel(BoxPanel.VERTICAL);
-
- final DomainsTable domainsTable = new DomainsTable(
- this, selectedDomainId, domainsFilter);
- domainsTable.setStyleAttr("min-width: 30em;");
- domainsTablePanel = new BoxPanel(BoxPanel.VERTICAL);
- domainsTablePanel.add(domainsTable);
- final ActionLink addDomain = new ActionLink(new GlobalizedMessage(
- "ui.admin.categories.domains.create_new", ADMIN_BUNDLE));
- addDomain.addActionListener(e -> {
- showDomainForm(e.getPageState());
- });
- domainsTablePanel.add(addDomain);
-
- body.add(domainsTablePanel);
-
- domainForm = new DomainForm(this, selectedDomainId);
- body.add(domainForm);
-
- domainDetails = new DomainDetails(this,
- selectedDomainId,
- selectedLanguage);
- body.add(domainDetails);
-
- domainTitleForm = new DomainTitleForm(this,
- selectedDomainId,
- selectedLanguage);
- body.add(domainTitleForm);
-
- domainDescriptionForm = new DomainDescriptionForm(this,
- selectedDomainId,
- selectedLanguage);
- body.add(domainDescriptionForm);
-
- categoryDetails = new CategoryDetails(this,
- selectedDomainId,
- selectedCategoryId,
- selectedLanguage);
- body.add(categoryDetails);
-
- categoryTitleForm = new CategoryTitleForm(this,
- selectedCategoryId,
- selectedLanguage);
- body.add(categoryTitleForm);
-
- categoryDescriptionForm = new CategoryDescriptionForm(this,
- selectedCategoryId,
- selectedLanguage);
- body.add(categoryDescriptionForm);
-
- categoryCreateForm = new CategoryCreateForm(this, selectedCategoryId);
- body.add(categoryCreateForm);
-
- categoryEditForm = new CategoryEditForm(this, selectedCategoryId);
- body.add(categoryEditForm);
-
- categoryMover = new CategoryMover(this,
- selectedDomainId,
- selectedCategoryId);
- body.add(categoryMover);
-
- setBody(body);
-
- }
-
- @Override
- public void register(final Page page) {
- super.register(page);
-
- page.addGlobalStateParam(domainIdParameter);
- page.addGlobalStateParam(categoryIdParameter);
- page.addGlobalStateParam(languageParameter);
-
- page.setVisibleDefault(domainsFilterFormHeader, true);
- page.setVisibleDefault(domainsFilterForm, true);
- page.setVisibleDefault(domainsTablePanel, true);
- page.setVisibleDefault(domainForm, false);
- page.setVisibleDefault(domainDetails, false);
- page.setVisibleDefault(domainTitleForm, false);
- page.setVisibleDefault(domainDescriptionForm, false);
-
- page.setVisibleDefault(categoriesTreeHeader, false);
- page.setVisibleDefault(categoriesTreePanel, false);
-
- page.setVisibleDefault(categoryDetails, false);
- page.setVisibleDefault(categoryTitleForm, false);
- page.setVisibleDefault(categoryDescriptionForm, false);
- page.setVisibleDefault(categoryCreateForm, false);
- page.setVisibleDefault(categoryEditForm, false);
- page.setVisibleDefault(categoryMover, false);
- }
-
- protected void showDomainsTable(final PageState state) {
- domainsFilterFormHeader.setVisible(state, true);
- domainsFilterForm.setVisible(state, true);
- domainsTablePanel.setVisible(state, true);
- domainForm.setVisible(state, false);
- domainDetails.setVisible(state, false);
- domainTitleForm.setVisible(state, false);
- domainDescriptionForm.setVisible(state, false);
-
- categoriesTreeHeader.setVisible(state, false);
- categoriesTreePanel.setVisible(state, false);
-
- categoryDetails.setVisible(state, false);
- categoryTitleForm.setVisible(state, false);
- categoryDescriptionForm.setVisible(state, false);
- categoryCreateForm.setVisible(state, false);
- categoryEditForm.setVisible(state, false);
- categoryMover.setVisible(state, false);
- }
-
- protected void showDomainForm(final PageState state) {
- domainsFilterFormHeader.setVisible(state, false);
- domainsFilterForm.setVisible(state, false);
- domainsTablePanel.setVisible(state, false);
- domainForm.setVisible(state, true);
- domainDetails.setVisible(state, false);
- domainTitleForm.setVisible(state, false);
- domainDescriptionForm.setVisible(state, false);
-
- categoriesTreeHeader.setVisible(state, false);
- categoriesTreePanel.setVisible(state, false);
-
- categoryDetails.setVisible(state, false);
- categoryTitleForm.setVisible(state, false);
- categoryDescriptionForm.setVisible(state, false);
- categoryCreateForm.setVisible(state, false);
- categoryEditForm.setVisible(state, false);
- categoryMover.setVisible(state, false);
- }
-
- protected void hideDomainForm(final PageState state) {
- if (selectedDomainId.getSelectedKey(state) == null) {
- domainsFilterFormHeader.setVisible(state, true);
- domainsFilterForm.setVisible(state, true);
- domainsTablePanel.setVisible(state, true);
- domainForm.setVisible(state, false);
- domainDetails.setVisible(state, false);
- domainTitleForm.setVisible(state, false);
- domainDescriptionForm.setVisible(state, false);
-
- categoriesTreeHeader.setVisible(state, false);
- categoriesTreePanel.setVisible(state, false);
-
- categoryDetails.setVisible(state, false);
- categoryTitleForm.setVisible(state, false);
- categoryDescriptionForm.setVisible(state, false);
- categoryCreateForm.setVisible(state, false);
- categoryEditForm.setVisible(state, false);
- categoryMover.setVisible(state, false);
- } else {
- showDomainDetails(state);
- }
-
- }
-
- protected void showDomainDetails(final PageState state) {
- domainsFilterFormHeader.setVisible(state, false);
- domainsFilterForm.setVisible(state, false);
- domainsTablePanel.setVisible(state, false);
- domainForm.setVisible(state, false);
- domainDetails.setVisible(state, true);
- domainTitleForm.setVisible(state, false);
- domainDescriptionForm.setVisible(state, false);
-
- categoriesTreeHeader.setVisible(state, true);
- categoriesTreePanel.setVisible(state, true);
-
- categoryDetails.setVisible(state, false);
- categoryTitleForm.setVisible(state, false);
- categoryDescriptionForm.setVisible(state, false);
- categoryCreateForm.setVisible(state, false);
- categoryEditForm.setVisible(state, false);
- categoryMover.setVisible(state, false);
- }
-
- protected void hideDomainDetails(final PageState state) {
- selectedDomainId.clearSelection(state);
-
- domainsFilterFormHeader.setVisible(state, true);
- domainsFilterForm.setVisible(state, true);
- domainsTablePanel.setVisible(state, true);
- domainForm.setVisible(state, false);
- domainDetails.setVisible(state, false);
- domainTitleForm.setVisible(state, false);
- domainDescriptionForm.setVisible(state, false);
-
- categoriesTreeHeader.setVisible(state, false);
- categoriesTreePanel.setVisible(state, false);
-
- categoryDetails.setVisible(state, false);
- categoryTitleForm.setVisible(state, false);
- categoryDescriptionForm.setVisible(state, false);
- categoryCreateForm.setVisible(state, false);
- categoryEditForm.setVisible(state, false);
- categoryMover.setVisible(state, false);
- }
-
- protected void showDomainTitleForm(final PageState state) {
- domainsFilterFormHeader.setVisible(state, false);
- domainsFilterForm.setVisible(state, false);
- domainsTablePanel.setVisible(state, false);
- domainForm.setVisible(state, false);
- domainDetails.setVisible(state, false);
- domainTitleForm.setVisible(state, true);
- domainDescriptionForm.setVisible(state, false);
-
- categoriesTreeHeader.setVisible(state, false);
- categoriesTreePanel.setVisible(state, false);
-
- categoryDetails.setVisible(state, false);
- categoryTitleForm.setVisible(state, false);
- categoryDescriptionForm.setVisible(state, false);
- categoryCreateForm.setVisible(state, false);
- categoryEditForm.setVisible(state, false);
- categoryMover.setVisible(state, false);
- }
-
- protected void hideDomainTitleForm(final PageState state) {
- selectedLanguage.clearSelection(state);
-
- showDomainDetails(state);
- }
-
- protected void showDomainDescriptionForm(final PageState state) {
- domainsFilterFormHeader.setVisible(state, false);
- domainsFilterForm.setVisible(state, false);
- domainsTablePanel.setVisible(state, false);
- domainForm.setVisible(state, false);
- domainDetails.setVisible(state, false);
- domainTitleForm.setVisible(state, false);
- domainDescriptionForm.setVisible(state, true);
-
- categoriesTreeHeader.setVisible(state, false);
- categoriesTreePanel.setVisible(state, false);
-
- categoryDetails.setVisible(state, false);
- categoryTitleForm.setVisible(state, false);
- categoryDescriptionForm.setVisible(state, false);
- categoryCreateForm.setVisible(state, false);
- categoryEditForm.setVisible(state, false);
- categoryMover.setVisible(state, false);
- }
-
- protected void hideDomainDescriptionForm(final PageState state) {
- selectedLanguage.clearSelection(state);
-
- showDomainDetails(state);
- }
-
- protected void showCategoryDetails(final PageState state) {
- domainsFilterFormHeader.setVisible(state, false);
- domainsFilterForm.setVisible(state, false);
- domainsTablePanel.setVisible(state, false);
- domainForm.setVisible(state, false);
- domainDetails.setVisible(state, false);
- domainTitleForm.setVisible(state, false);
- domainDescriptionForm.setVisible(state, false);
-
- categoriesTreeHeader.setVisible(state, true);
- categoriesTreePanel.setVisible(state, true);
-
- categoryDetails.setVisible(state, true);
- categoryTitleForm.setVisible(state, false);
- categoryDescriptionForm.setVisible(state, false);
- categoryCreateForm.setVisible(state, false);
- categoryEditForm.setVisible(state, false);
- categoryMover.setVisible(state, false);
- }
-
- protected void hideCategoryDetails(final PageState state) {
- selectedCategoryId.clearSelection(state);
-
- showDomainDetails(state);
- }
-
- protected void showCategoryCreateForm(final PageState state) {
- domainsFilterFormHeader.setVisible(state, false);
- domainsFilterForm.setVisible(state, false);
- domainsTablePanel.setVisible(state, false);
- domainForm.setVisible(state, false);
- domainDetails.setVisible(state, false);
- domainTitleForm.setVisible(state, false);
- domainDescriptionForm.setVisible(state, false);
-
- categoriesTreeHeader.setVisible(state, false);
- categoriesTreePanel.setVisible(state, false);
-
- categoryDetails.setVisible(state, false);
- categoryTitleForm.setVisible(state, false);
- categoryDescriptionForm.setVisible(state, false);
- categoryCreateForm.setVisible(state, true);
- categoryEditForm.setVisible(state, false);
- categoryMover.setVisible(state, false);
- }
-
- protected void hideCategoryCreateForm(final PageState state) {
- //Show category details of new category (or the selected category if
- //creation was canceled
- showCategoryDetails(state);
- }
-
- protected void showCategoryEditForm(final PageState state) {
- domainsFilterFormHeader.setVisible(state, false);
- domainsFilterForm.setVisible(state, false);
- domainsTablePanel.setVisible(state, false);
- domainForm.setVisible(state, false);
- domainDetails.setVisible(state, false);
- domainTitleForm.setVisible(state, false);
- domainDescriptionForm.setVisible(state, false);
-
- categoriesTreeHeader.setVisible(state, false);
- categoriesTreePanel.setVisible(state, false);
-
- categoryDetails.setVisible(state, false);
- categoryTitleForm.setVisible(state, false);
- categoryDescriptionForm.setVisible(state, false);
- categoryCreateForm.setVisible(state, false);
- categoryEditForm.setVisible(state, true);
- categoryMover.setVisible(state, false);
- }
-
- protected void hideCategoryEditForm(final PageState state) {
- //We want to go back to the details of the selected category, therefore
- //we don't reset the selection.
- showCategoryDetails(state);
- }
-
- protected void showCategoryTitleForm(final PageState state) {
- domainsFilterFormHeader.setVisible(state, false);
- domainsFilterForm.setVisible(state, false);
- domainsTablePanel.setVisible(state, false);
- domainForm.setVisible(state, false);
- domainDetails.setVisible(state, false);
- domainTitleForm.setVisible(state, false);
- domainDescriptionForm.setVisible(state, false);
-
- categoriesTreeHeader.setVisible(state, false);
- categoriesTreePanel.setVisible(state, false);
-
- categoryDetails.setVisible(state, false);
- categoryTitleForm.setVisible(state, true);
- categoryDescriptionForm.setVisible(state, false);
- categoryCreateForm.setVisible(state, false);
- categoryEditForm.setVisible(state, false);
- categoryMover.setVisible(state, false);
- }
-
- protected void hideCategoryTitleForm(final PageState state) {
- selectedLanguage.clearSelection(state);
-
- showCategoryDetails(state);
- }
-
- protected void showCategoryDescriptionForm(final PageState state) {
- domainsFilterFormHeader.setVisible(state, false);
- domainsFilterForm.setVisible(state, false);
- domainsTablePanel.setVisible(state, false);
- domainForm.setVisible(state, false);
- domainDetails.setVisible(state, false);
- domainTitleForm.setVisible(state, false);
- domainDescriptionForm.setVisible(state, false);
-
- categoriesTreeHeader.setVisible(state, false);
- categoriesTreePanel.setVisible(state, false);
-
- categoryDetails.setVisible(state, false);
- categoryTitleForm.setVisible(state, false);
- categoryDescriptionForm.setVisible(state, true);
- categoryCreateForm.setVisible(state, false);
- categoryEditForm.setVisible(state, false);
- categoryMover.setVisible(state, false);
- }
-
- protected void hideCategoryDescriptionForm(final PageState state) {
- selectedLanguage.clearSelection(state);
-
- showCategoryDetails(state);
- }
-
- protected void showCategoryMover(final PageState state) {
- domainsFilterFormHeader.setVisible(state, false);
- domainsFilterForm.setVisible(state, false);
- domainsTablePanel.setVisible(state, false);
- domainForm.setVisible(state, false);
- domainDetails.setVisible(state, false);
- domainTitleForm.setVisible(state, false);
- domainDescriptionForm.setVisible(state, false);
-
- categoriesTreeHeader.setVisible(state, false);
- categoriesTreePanel.setVisible(state, false);
-
- categoryDetails.setVisible(state, false);
- categoryTitleForm.setVisible(state, false);
- categoryDescriptionForm.setVisible(state, false);
- categoryCreateForm.setVisible(state, false);
- categoryEditForm.setVisible(state, false);
- categoryMover.setVisible(state, true);
- }
-
- protected void hideCategoryMover(final PageState state) {
- showCategoryDetails(state);
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTreeModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTreeModel.java
deleted file mode 100644
index 85c6c825d..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTreeModel.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.Tree;
-import com.arsdigita.bebop.tree.TreeModel;
-import com.arsdigita.bebop.tree.TreeNode;
-
-import org.libreccm.categorization.Category;
-import org.libreccm.categorization.CategoryRepository;
-import org.libreccm.categorization.Domain;
-import org.libreccm.cdi.utils.CdiUtil;
-
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * A reusable implementation of {@link TreeModel} for creating category trees.
- *
- * @author Jens Pelzetter
- */
-public class CategoriesTreeModel implements TreeModel {
-
- private final Tree tree;
- private final Domain domain;
-
- public CategoriesTreeModel(final Tree tree, final Domain domain) {
- this.tree = tree;
- this.domain = domain;
- }
-
- @Override
- public TreeNode getRoot(final PageState state) {
- final CategoryRepository categoryRepository = CdiUtil.createCdiUtil()
- .findBean(CategoryRepository.class);
- final Category category = categoryRepository.findById(domain.getRoot()
- .getObjectId()).get();
-
- tree.expand(Long.toString(category.getObjectId()), state);
-
- return new CategoryTreeNode(category);
- }
-
- @Override
- public boolean hasChildren(final TreeNode node,
- final PageState state) {
-
- final CategoriesController controller = CdiUtil
- .createCdiUtil()
- .findBean(CategoriesController.class);
- return controller.hasChildren(((CategoryTreeNode) node).getCategory());
- }
-
- @Override
- public Iterator getChildren(final TreeNode node,
- final PageState state) {
-
- if (node.getKey().equals(getRoot(state).getKey())
- && tree.isCollapsed(node.getKey().toString(), state)) {
-
- tree.expand(node.getKey().toString(), state);
- }
-
- final CategoriesController controller = CdiUtil
- .createCdiUtil()
- .findBean(CategoriesController.class);
- final List subCategories = controller
- .getSubCategories(((CategoryTreeNode) node).getCategory());
-
- return new SubCategoryNodesIterator(subCategories);
- }
-
- private class CategoryTreeNode implements TreeNode {
-
- private final Category category;
-
- public CategoryTreeNode(final Category category) {
- this.category = category;
- }
-
- public Category getCategory() {
- return category;
- }
-
- @Override
- public Object getKey() {
- return Long.toString(category.getObjectId());
- }
-
- @Override
- public Object getElement() {
- return category.getName();
- }
-
- }
-
- private class SubCategoryNodesIterator
- implements Iterator {
-
- private final Iterator subCategoriesIterator;
-
- public SubCategoryNodesIterator(final List subCategories) {
- subCategoriesIterator = subCategories.iterator();
- }
-
- @Override
- public boolean hasNext() {
- return subCategoriesIterator.hasNext();
- }
-
- @Override
- public CategoryTreeNode next() {
- return new CategoryTreeNode(subCategoriesIterator.next());
- }
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTreeModelBuilder.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTreeModelBuilder.java
deleted file mode 100644
index 8564e2e35..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoriesTreeModelBuilder.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.Tree;
-import com.arsdigita.bebop.tree.TreeModel;
-import com.arsdigita.bebop.tree.TreeModelBuilder;
-import com.arsdigita.util.LockableImpl;
-import org.libreccm.categorization.Domain;
-import org.libreccm.categorization.DomainRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-
-/**
- *
- * @author Jens Pelzetter
- */
-class CategoriesTreeModelBuilder
- extends LockableImpl
- implements TreeModelBuilder {
-
- private final ParameterSingleSelectionModel selectedDomainId;
-
- public CategoriesTreeModelBuilder(
- final ParameterSingleSelectionModel selectedDomainId) {
-
- this.selectedDomainId = selectedDomainId;
-
- }
-
- @Override
- public TreeModel makeModel(final Tree tree,
- final PageState state) {
- final DomainRepository domainRepository = CdiUtil.createCdiUtil().
- findBean(DomainRepository.class);
- final Domain domain = domainRepository.findById(Long.parseLong(
- selectedDomainId.getSelectedKey(state))).get();
-
- return new CategoriesTreeModel(tree, domain);
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryCreateForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryCreateForm.java
deleted file mode 100644
index 0c4d11216..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryCreateForm.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.FormData;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.SaveCancelSection;
-import com.arsdigita.bebop.form.TextField;
-import com.arsdigita.globalization.GlobalizedMessage;
-
-import org.apache.logging.log4j.util.Strings;
-import org.libreccm.categorization.Category;
-import org.libreccm.categorization.CategoryManager;
-import org.libreccm.categorization.CategoryRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class CategoryCreateForm extends Form {
-
- private static final String CATEGORY_NAME = "categoryName";
-
- private final ParameterSingleSelectionModel selectedCategoryId;
-
- private final TextField categoryName;
- private final SaveCancelSection saveCancelSection;
-
- public CategoryCreateForm(
- final CategoriesTab categoriesTab,
- final ParameterSingleSelectionModel selectedCategoryId) {
-
- super("categoryCreateForm");
-
- this.selectedCategoryId = selectedCategoryId;
-
- final Label heading = new Label(e -> {
- final PageState state = e.getPageState();
- final Label target = (Label) e.getTarget();
-
- final CategoryRepository categoryRepository = CdiUtil
- .createCdiUtil().findBean(CategoryRepository.class);
- final Category category = categoryRepository.findById(Long
- .parseLong(selectedCategoryId.getSelectedKey(state))).get();
- target.setLabel(new GlobalizedMessage(
- "ui.admin.categories.category.create_new_subcategory",
- ADMIN_BUNDLE,
- new String[]{category.getName()}));
- });
- heading.setClassAttr("heading");
- add(heading);
-
- categoryName = new TextField(CATEGORY_NAME);
- categoryName.setLabel(new GlobalizedMessage(
- "ui.admin.categories.category.name.label", ADMIN_BUNDLE));
- add(categoryName);
-
- saveCancelSection = new SaveCancelSection();
- add(saveCancelSection);
-
- addValidationListener(e -> {
- final PageState state = e.getPageState();
-
- if (saveCancelSection.getSaveButton().isSelected(state)) {
- final FormData data = e.getFormData();
- final String categoryNameData = data.getString(CATEGORY_NAME);
-
- if (Strings.isBlank(categoryNameData)) {
- data.addError(
- CATEGORY_NAME,
- new GlobalizedMessage(
- "ui.admin.categories.category.name.errors.not_blank",
- ADMIN_BUNDLE));
- }
- }
- });
-
- addProcessListener(e -> {
- final PageState state = e.getPageState();
-
- if (saveCancelSection.getSaveButton().isSelected(state)) {
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final CategoryRepository categoryRepository = cdiUtil.findBean(
- CategoryRepository.class);
- final CategoryManager categoryManager = cdiUtil.findBean(
- CategoryManager.class);
-
- final Category selectedCategory = categoryRepository.findById(
- Long.parseLong(selectedCategoryId.getSelectedKey(state)))
- .get();
-
- final FormData data = e.getFormData();
- final String categoryNameData = data.getString(CATEGORY_NAME);
-
- final Category category = new Category();
- category.setName(categoryNameData);
-
- categoryRepository.save(category);
- categoryManager.addSubCategoryToCategory(category,
- selectedCategory);
-
- selectedCategoryId.setSelectedKey(
- state, Long.toString(category.getObjectId()));
- }
-
- categoriesTab.hideCategoryCreateForm(state);
- });
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDescriptionForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDescriptionForm.java
deleted file mode 100644
index b450bfabf..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDescriptionForm.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.ActionLink;
-import com.arsdigita.bebop.BoxPanel;
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.FormData;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.SaveCancelSection;
-import com.arsdigita.bebop.form.TextArea;
-import com.arsdigita.globalization.GlobalizedMessage;
-
-import java.util.Locale;
-
-import org.apache.logging.log4j.util.Strings;
-import org.libreccm.categorization.Category;
-import org.libreccm.categorization.CategoryRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class CategoryDescriptionForm extends Form {
-
- private static final String LOCALIZED_CATEGORY_DESC = "description";
-
- private final CategoriesTab categoriesTab;
-
- private final TextArea description;
- private final SaveCancelSection saveCancelSection;
-
- public CategoryDescriptionForm(
- final CategoriesTab categoriesTab,
- final ParameterSingleSelectionModel selectedCategoryId,
- final ParameterSingleSelectionModel selectedLanguage) {
-
- super("categoryDescriptionForm", new BoxPanel(BoxPanel.VERTICAL));
-
- this.categoriesTab = categoriesTab;
-
- final ActionLink backLink = new ActionLink(new GlobalizedMessage(
- "ui.admin.categories.category.description.edit.back",
- ADMIN_BUNDLE));
- backLink.addActionListener(e -> {
- categoriesTab.hideDomainTitleForm(e.getPageState());
- });
- add(backLink);
-
- final Label heading = new Label(e -> {
- final PageState state = e.getPageState();
-
- final CategoryRepository categoryRepository = CdiUtil.
- createCdiUtil()
- .findBean(CategoryRepository.class);
- final Category selectedCategory = categoryRepository.findById(
- Long.parseLong(selectedCategoryId.getSelectedKey(state))).get();
-
- final Locale selectedLocale = new Locale(selectedLanguage
- .getSelectedKey(state));
-
- final Label target = (Label) e.getTarget();
-
- if (selectedCategory.getDescription().hasValue(selectedLocale)) {
- target.setLabel(new GlobalizedMessage(
- "ui.admin.categories.category.description.edit_for_lang",
- ADMIN_BUNDLE,
- new String[]{selectedCategory.getName(),
- selectedLocale.toString()}));
- } else {
- target.setLabel(new GlobalizedMessage(
- "ui.admin.categories.category.description.add_for_lang",
- ADMIN_BUNDLE,
- new String[]{selectedCategory.getName(),
- selectedLocale.toString()}));
- }
- });
- heading.setClassAttr("heading");
- add(heading);
-
- description = new TextArea(LOCALIZED_CATEGORY_DESC);
- description.setLabel(new GlobalizedMessage(
- "ui.admin.categories.category.description.label", ADMIN_BUNDLE));
- description.setCols(60);
- description.setRows(10);
- add(description);
-
- saveCancelSection = new SaveCancelSection();
- add(saveCancelSection);
-
- addInitListener(e -> {
- final PageState state = e.getPageState();
-
- final CategoryRepository categoryRepository = CdiUtil.
- createCdiUtil().findBean(CategoryRepository.class);
- final Category selectedCategory = categoryRepository.findById(
- Long.parseLong(selectedCategoryId.getSelectedKey(state))).get();
-
- final Locale selectedLocale = new Locale(selectedLanguage
- .getSelectedKey(state));
-
- if (selectedCategory.getDescription().hasValue(selectedLocale)) {
- description.setValue(state, selectedCategory.getDescription()
- .getValue(selectedLocale));
- }
- });
-
- addValidationListener(e -> {
-
- if (saveCancelSection.getSaveButton().isSelected(
- e.getPageState())) {
- final FormData data = e.getFormData();
-
- final String titleData = data.getString(LOCALIZED_CATEGORY_DESC);
-
- if (Strings.isBlank(titleData)) {
- data.addError(
- LOCALIZED_CATEGORY_DESC,
- new GlobalizedMessage(
- "ui.admin.categories.category.description.error.not_blank",
- ADMIN_BUNDLE));
- }
- }
- });
-
- addProcessListener(e -> {
- final PageState state = e.getPageState();
-
- if (saveCancelSection.getSaveButton().isSelected(state)) {
- final CategoryRepository categoryRepository = CdiUtil
- .createCdiUtil()
- .findBean(CategoryRepository.class);
- final Category selectedCategory = categoryRepository.findById(
- Long.parseLong(selectedCategoryId.getSelectedKey(state)))
- .get();
-
- final Locale selectedLocale = new Locale(selectedLanguage
- .getSelectedKey(state));
-
- final String titleData = e.getFormData().getString(
- LOCALIZED_CATEGORY_DESC);
-
- selectedCategory.getDescription().putValue(selectedLocale,
- titleData);
- categoryRepository.save(selectedCategory);
- }
-
- categoriesTab.hideCategoryDescriptionForm(state);
-
- });
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDescriptionTable.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDescriptionTable.java
deleted file mode 100644
index 922f1507a..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDescriptionTable.java
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.Component;
-import com.arsdigita.bebop.ControlLink;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.Table;
-import com.arsdigita.bebop.Text;
-import com.arsdigita.bebop.event.TableActionEvent;
-import com.arsdigita.bebop.event.TableActionListener;
-import com.arsdigita.bebop.table.TableCellRenderer;
-import com.arsdigita.bebop.table.TableColumn;
-import com.arsdigita.bebop.table.TableColumnModel;
-import com.arsdigita.bebop.table.TableModel;
-import com.arsdigita.bebop.table.TableModelBuilder;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.util.LockableImpl;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import org.libreccm.categorization.Category;
-import org.libreccm.categorization.CategoryRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class CategoryDescriptionTable extends Table {
-
- private static final int COL_LOCALE = 0;
- private static final int COL_VALUE = 1;
- private static final int COL_EDIT = 2;
- private static final int COL_DEL = 3;
-
- private final CategoriesTab categoriesTab;
- private final ParameterSingleSelectionModel selectedCategoryId;
- private final ParameterSingleSelectionModel selectedLanguage;
-
- public CategoryDescriptionTable(
- final CategoriesTab categoriesTab,
- final ParameterSingleSelectionModel selectedCategoryId,
- final ParameterSingleSelectionModel selectedLanguage) {
-
- super();
-
- this.categoriesTab = categoriesTab;
- this.selectedCategoryId = selectedCategoryId;
- this.selectedLanguage = selectedLanguage;
-
- setIdAttr("categoryDescriptionTable");
-
- setEmptyView(new Label(new GlobalizedMessage(
- "ui.admin.categories.category_details.description.none",
- ADMIN_BUNDLE)));
-
- final TableColumnModel columnModel = getColumnModel();
- columnModel.add(new TableColumn(
- COL_LOCALE,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.category_details.description.col_lang",
- ADMIN_BUNDLE))));
- columnModel.add(new TableColumn(
- COL_VALUE,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.category_details.description.col_value",
- ADMIN_BUNDLE))));
- columnModel.add(new TableColumn(
- COL_EDIT,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.category_details.description.col_edit",
- ADMIN_BUNDLE))));
- columnModel.add(new TableColumn(
- COL_DEL,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.category_details.description.col_del",
- ADMIN_BUNDLE))));
-
- columnModel.get(COL_EDIT).setCellRenderer(new TableCellRenderer() {
-
- @Override
- public Component getComponent(final Table table,
- final PageState state,
- final Object value,
- final boolean isSelected,
- final Object key,
- final int row,
- final int column) {
- return new ControlLink((Component) value);
- }
-
- });
-
- columnModel.get(COL_DEL).setCellRenderer(new TableCellRenderer() {
-
- @Override
- public Component getComponent(final Table table,
- final PageState state,
- final Object value,
- final boolean isSelected,
- final Object key,
- final int row,
- final int column) {
- if (value == null) {
- return new Text("");
- } else {
- final ControlLink link = new ControlLink((Component) value);
- link.setConfirmation(new GlobalizedMessage(
- "ui.admin.categories.category_details.description"
- + ".del_confirm",
- ADMIN_BUNDLE));
- return link;
- }
- }
-
- });
-
- addTableActionListener(new TableActionListener() {
-
- @Override
- public void cellSelected(final TableActionEvent event) {
- final PageState state = event.getPageState();
-
- switch (event.getColumn()) {
- case COL_EDIT:
- selectedLanguage.setSelectedKey(state,
- event.getRowKey());
- categoriesTab.showCategoryDescriptionForm(state);
- break;
- case COL_DEL:
- final Locale locale = new Locale((String) event
- .getRowKey());
- final CategoryRepository categoryRepository = CdiUtil.
- createCdiUtil().findBean(
- CategoryRepository.class);
- final Category category = categoryRepository.findById(
- Long.parseLong(selectedCategoryId.
- getSelectedKey(state))).get();
- category.getDescription().removeValue(locale);
-
- categoryRepository.save(category);
-
- break;
- }
- }
-
- @Override
- public void headSelected(final TableActionEvent event) {
- //Nothing
- }
-
- });
-
- setModelBuilder(new CategoryDescriptionTableModelBuilder());
- }
-
- private class CategoryDescriptionTableModelBuilder
- extends LockableImpl
- implements TableModelBuilder {
-
- @Override
- public TableModel makeModel(final Table table,
- final PageState state) {
- table.getRowSelectionModel().clearSelection(state);
-
- return new CategoryDescriptionTableModel(state);
- }
-
- }
-
- private class CategoryDescriptionTableModel implements TableModel {
-
- private final Category selectedCategory;
- private final List locales;
- private int index = -1;
-
- public CategoryDescriptionTableModel(final PageState state) {
- final CategoryRepository categoryRepository = CdiUtil.
- createCdiUtil().findBean(CategoryRepository.class);
- selectedCategory = categoryRepository.findById(Long.parseLong(
- selectedCategoryId.getSelectedKey(state))).get();
-
- locales = new ArrayList<>();
- if (selectedCategory.getDescription() != null) {
- locales.addAll(
- selectedCategory.getDescription().getAvailableLocales());
- }
- locales.sort((l1, l2) -> {
- return l1.toString().compareTo(l2.toString());
- });
-
- }
-
- @Override
- public int getColumnCount() {
- return 4;
- }
-
- @Override
- public boolean nextRow() {
- index++;
- return index < locales.size();
- }
-
- @Override
- public Object getElementAt(final int columnIndex) {
- final Locale locale = locales.get(index);
-
- switch (columnIndex) {
- case COL_LOCALE:
- return locale.toString();
- case COL_VALUE:
- return selectedCategory.getDescription().getValue(locale);
- case COL_EDIT:
- return new Label(new GlobalizedMessage(
- "ui.admin.categories.category_details.description.edit",
- ADMIN_BUNDLE));
- case COL_DEL:
- return new Label(new GlobalizedMessage(
- "ui.admin.categories.category_details.description.del",
- ADMIN_BUNDLE));
- default:
- throw new IllegalArgumentException(
- "Not a valid column index");
- }
- }
-
- @Override
- public Object getKeyAt(final int columnIndex) {
- return locales.get(index);
- }
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDetails.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDetails.java
deleted file mode 100644
index 2142ce066..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryDetails.java
+++ /dev/null
@@ -1,359 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.ActionLink;
-import com.arsdigita.bebop.BoxPanel;
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.FormData;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.PropertySheet;
-import com.arsdigita.bebop.SegmentedPanel;
-import com.arsdigita.bebop.Text;
-import com.arsdigita.bebop.form.Option;
-import com.arsdigita.bebop.form.SingleSelect;
-import com.arsdigita.bebop.form.Submit;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.kernel.KernelConfig;
-import com.arsdigita.util.UncheckedWrapperException;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.TooManyListenersException;
-import org.libreccm.categorization.Category;
-import org.libreccm.categorization.CategoryRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-class CategoryDetails extends SegmentedPanel {
-
- private final CategoriesTab categoriesTab;
- private final ParameterSingleSelectionModel selectedDomainId;
- private final ParameterSingleSelectionModel selectedCategoryId;
- private final ParameterSingleSelectionModel selectedLanguage;
- private final CategoryTitleAddForm categoryTitleAddForm;
- private final CategoryDescriptionAddForm categoryDescriptionAddForm;
- private final SubCategoriesTable subCategoriesTable;
-
- public CategoryDetails(
- final CategoriesTab categoriesTab,
- final ParameterSingleSelectionModel selectedDomainId,
- final ParameterSingleSelectionModel selectedCategoryId,
- final ParameterSingleSelectionModel selectedLanguage) {
-
- this.categoriesTab = categoriesTab;
- this.selectedDomainId = selectedDomainId;
- this.selectedCategoryId = selectedCategoryId;
- this.selectedLanguage = selectedLanguage;
-
- final ActionLink backLink = new ActionLink(new GlobalizedMessage(
- "ui.admin.categories.category_details.back", ADMIN_BUNDLE));
- backLink.addActionListener(e -> {
- final PageState state = e.getPageState();
- categoriesTab.hideCategoryDetails(state);
- });
- addSegment("category-details-back", backLink);
-
- final Label heading = new Label(e -> {
- final PageState state = e.getPageState();
- final Label target = (Label) e.getTarget();
-
- final CategoryRepository categoryRepo = CdiUtil.createCdiUtil()
- .findBean(CategoryRepository.class);
- final Category category = categoryRepo.findById(Long.parseLong(
- selectedCategoryId.getSelectedKey(state))).get();
-
- target.setLabel(new GlobalizedMessage(
- "ui.admin.categories.category_details.heading",
- ADMIN_BUNDLE,
- new String[]{category.getName()}));
-
- });
- heading.setClassAttr("heading");
- add(heading);
-
- final BoxPanel propertiesPanel = new BoxPanel(BoxPanel.VERTICAL);
- propertiesPanel.add(new PropertySheet(
- new CategoryPropertySheetModelBuilder(selectedCategoryId)));
- final ActionLink editBasicPropertiesLink = new ActionLink(
- new GlobalizedMessage(
- "ui.admin.categories.category_details.basic_properties.edit",
- ADMIN_BUNDLE));
- editBasicPropertiesLink.addActionListener(e -> {
- final PageState state = e.getPageState();
- categoriesTab.showCategoryEditForm(state);
- });
- propertiesPanel.add(editBasicPropertiesLink);
- final ActionLink moveLink = new ActionLink(new GlobalizedMessage(
- "ui.admin.categories.category_details.move_category", ADMIN_BUNDLE)) {
-
- @Override
- public boolean isVisible(final PageState state) {
- if (super.isVisible(state)) {
- final CategoryRepository categoryRepo = CdiUtil
- .createCdiUtil().findBean(CategoryRepository.class);
- final Category category = categoryRepo.findById(Long
- .parseLong(selectedCategoryId.getSelectedKey(state)))
- .get();
-
- //If the category has no parent category it is the root
- //category of a domain and can't be moved
- return category.getParentCategory() != null;
- } else {
- return false;
- }
- }
-
- };
- moveLink.addActionListener(e -> {
- final PageState state = e.getPageState();
- categoriesTab.showCategoryMover(state);
- });
- propertiesPanel.add(moveLink);
- addSegment(
- new Label(new GlobalizedMessage(
- "ui.admin.categories.category_details.basic_properties",
- ADMIN_BUNDLE)),
- propertiesPanel
- );
-
- final BoxPanel titlesPanel = new BoxPanel(BoxPanel.VERTICAL);
- titlesPanel.add(new CategoryTitleTable(categoriesTab,
- selectedCategoryId,
- selectedLanguage));
- categoryTitleAddForm = new CategoryTitleAddForm();
- titlesPanel.add(categoryTitleAddForm);
- addSegment(
- new Label(new GlobalizedMessage(
- "ui.admin.categories.category_details.category_title",
- ADMIN_BUNDLE)),
- titlesPanel);
-
- final BoxPanel descPanel = new BoxPanel(BoxPanel.VERTICAL);
- descPanel.add(new CategoryDescriptionTable(categoriesTab,
- selectedCategoryId,
- selectedLanguage));
- categoryDescriptionAddForm = new CategoryDescriptionAddForm();
- descPanel.add(categoryDescriptionAddForm);
- addSegment(
- new Label(new GlobalizedMessage(
- "ui.admin.categories.category_details.description",
- ADMIN_BUNDLE)),
- descPanel);
-
- final BoxPanel subCategoriesPanel = new BoxPanel(BoxPanel.VERTICAL);
- subCategoriesTable = new SubCategoriesTable(categoriesTab,
- selectedCategoryId);
- subCategoriesPanel.add(subCategoriesTable);
- final ActionLink addSubCategory = new ActionLink(new GlobalizedMessage(
- "ui.admin.categories.category_details.subcategories.add",
- ADMIN_BUNDLE));
- addSubCategory.addActionListener(e -> {
- final PageState state = e.getPageState();
-
- categoriesTab.showCategoryCreateForm(state);
- });
- subCategoriesPanel.add(addSubCategory);
- addSegment(
- new Label(new GlobalizedMessage(
- "ui.admin.categories.category_details.subcategories.header",
- ADMIN_BUNDLE)),
- subCategoriesPanel);
- }
-
- private class CategoryTitleAddForm extends Form {
-
- private static final String TITLE_SELECT_LANG = "titleSelectLang";
-
- public CategoryTitleAddForm() {
- super("categoryTitleAddForm", new BoxPanel(BoxPanel.HORIZONTAL));
-
- final SingleSelect titleSelectLang = new SingleSelect(
- TITLE_SELECT_LANG);
- titleSelectLang.setLabel(new GlobalizedMessage(
- "ui.admin.categories.category_details.category_title.add.label",
- ADMIN_BUNDLE));
- try {
- titleSelectLang.addPrintListener(e -> {
- final PageState state = e.getPageState();
-
- final CategoryRepository categoryRepository = CdiUtil.
- createCdiUtil().findBean(CategoryRepository.class);
- final Category category = categoryRepository.findById(
- Long.parseLong(selectedCategoryId.getSelectedKey(
- state))).get();
- final KernelConfig kernelConfig = KernelConfig.getConfig();
- final Set supportedLanguages = kernelConfig.
- getSupportedLanguages();
- final Set assignedLanguages = new HashSet<>();
- category.getTitle().getAvailableLocales().forEach(l -> {
- assignedLanguages.add(l.toString());
- });
-
- final SingleSelect target = (SingleSelect) e.getTarget();
-
- target.clearOptions();
-
- supportedLanguages.forEach(l -> {
- if (!assignedLanguages.contains(l)) {
- target.addOption(new Option(l, new Text(l)));
- }
- });
- });
- } catch (TooManyListenersException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- add(titleSelectLang);
- add(new Submit(new GlobalizedMessage(
- "ui.admin.categories.category_details.category_title.add.submit",
- ADMIN_BUNDLE)));
-
- addProcessListener(e -> {
- final PageState state = e.getPageState();
- final FormData data = e.getFormData();
-
- final String language = data.getString(TITLE_SELECT_LANG);
- selectedLanguage.setSelectedKey(state, language);
-
- categoriesTab.showCategoryTitleForm(state);
- });
- }
-
- @Override
- public boolean isVisible(final PageState state) {
- if (super.isVisible(state)) {
- final CategoryRepository categoryRepository = CdiUtil.
- createCdiUtil().findBean(CategoryRepository.class);
- final Category category = categoryRepository.findById(
- Long.parseLong(selectedCategoryId.getSelectedKey(
- state))).get();
- final KernelConfig kernelConfig = KernelConfig.getConfig();
- final Set supportedLanguages = kernelConfig.
- getSupportedLanguages();
- final Set assignedLanguages = new HashSet<>();
- category.getTitle().getAvailableLocales().forEach(l -> {
- assignedLanguages.add(l.toString());
- });
-
- //If all supported languages are assigned the form is not
- //visible
- return !assignedLanguages.equals(supportedLanguages);
- } else {
- return false;
- }
- }
-
- }
-
- private class CategoryDescriptionAddForm extends Form {
-
- private static final String DESC_SELECT_LANG = "descSelectLang";
-
- public CategoryDescriptionAddForm() {
- super("categoryAddDescLang", new BoxPanel(BoxPanel.HORIZONTAL));
-
- final SingleSelect descSelectLang = new SingleSelect(
- DESC_SELECT_LANG);
- descSelectLang.setLabel(new GlobalizedMessage(
- "ui.admin.categories.category_details.category_desc.add.label",
- ADMIN_BUNDLE));
- try {
- descSelectLang.addPrintListener(e -> {
- final PageState state = e.getPageState();
-
- final CategoryRepository categoryRepository = CdiUtil.
- createCdiUtil().findBean(CategoryRepository.class);
- final Category category = categoryRepository.findById(
- Long.parseLong(selectedCategoryId.getSelectedKey(
- state))).get();
- final KernelConfig kernelConfig = KernelConfig.getConfig();
- final Set supportedLanguages = kernelConfig.
- getSupportedLanguages();
- final Set assignedLanguages = new HashSet<>();
- category.getDescription().getAvailableLocales().forEach(
- l -> {
- assignedLanguages.add(l.toString());
- });
-
- final SingleSelect target = (SingleSelect) e.getTarget();
-
- target.clearOptions();
-
- supportedLanguages.forEach(l -> {
- if (!assignedLanguages.contains(l)) {
- target.addOption(new Option(l, new Text(l)));
- }
- });
- });
-
- } catch (TooManyListenersException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- add(descSelectLang);
- add(new Submit(new GlobalizedMessage(
- "ui.admin.categories.category_details.category_desc.add.submit",
- ADMIN_BUNDLE)));
-
- addProcessListener(e -> {
- final PageState state = e.getPageState();
- final FormData data = e.getFormData();
-
- final String language = data.getString(DESC_SELECT_LANG);
- selectedLanguage.setSelectedKey(state, language);
-
- categoriesTab.showCategoryDescriptionForm(state);
- });
- }
-
- @Override
- public boolean isVisible(final PageState state) {
- if (super.isVisible(state)) {
- final CategoryRepository categoryRepository = CdiUtil.
- createCdiUtil().findBean(CategoryRepository.class);
- final Category category = categoryRepository.findById(
- Long.parseLong(selectedCategoryId.getSelectedKey(
- state))).get();
- final KernelConfig kernelConfig = KernelConfig.getConfig();
- final Set supportedLanguages = kernelConfig.
- getSupportedLanguages();
- final Set assignedLanguages = new HashSet<>();
- category.getDescription().getAvailableLocales().forEach(
- l -> {
- assignedLanguages.add(l.toString());
- });
-
- //If all supported languages are assigned the form is not
- //visible
- return !assignedLanguages.equals(supportedLanguages);
- } else {
- return false;
- }
- }
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryEditForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryEditForm.java
deleted file mode 100644
index 76123f3b6..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryEditForm.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.FormData;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.SaveCancelSection;
-import com.arsdigita.bebop.form.CheckboxGroup;
-import com.arsdigita.bebop.form.Option;
-import com.arsdigita.bebop.form.TextField;
-import com.arsdigita.globalization.GlobalizedMessage;
-
-import org.apache.logging.log4j.util.Strings;
-import org.libreccm.categorization.Category;
-import org.libreccm.categorization.CategoryManager;
-import org.libreccm.categorization.CategoryRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class CategoryEditForm extends Form {
-
- private static final String CATEGORY_NAME = "categoryName";
- private static final String CATEGORY_PROPERTIES = "categoryProperties";
-
- private static final String ENABLED = "enabled";
- private static final String VISIBLE = "visible";
- private static final String ABSTRACT = "abstract";
-
- private final ParameterSingleSelectionModel selectedCategoryId;
-
- private final TextField categoryName;
- private final CheckboxGroup properties;
- private final SaveCancelSection saveCancelSection;
-
- public CategoryEditForm(
- final CategoriesTab categoriesTab,
- final ParameterSingleSelectionModel selectedCategoryId) {
-
- super("categoryEditForm");
-
- this.selectedCategoryId = selectedCategoryId;
-
- final Label heading = new Label(e -> {
- final PageState state = e.getPageState();
- final Label target = (Label) e.getTarget();
-
- final CategoryRepository categoryRepository = CdiUtil
- .createCdiUtil().findBean(CategoryRepository.class);
- final Category category = categoryRepository.findById(Long
- .parseLong(selectedCategoryId.getSelectedKey(state))).get();
- target.setLabel(new GlobalizedMessage(
- "ui.admin.categories.category.edit_category",
- ADMIN_BUNDLE,
- new String[]{category.getName()}));
- });
- heading.setClassAttr("heading");
- add(heading);
-
- categoryName = new TextField(CATEGORY_NAME);
- categoryName.setLabel(new GlobalizedMessage(
- "ui.admin.categories.category.name.label", ADMIN_BUNDLE));
- add(categoryName);
-
- properties = new CheckboxGroup(CATEGORY_PROPERTIES);
- properties.addOption(new Option(
- ENABLED,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.category.name.enabled",
- ADMIN_BUNDLE))));
- properties.addOption(new Option(
- VISIBLE,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.category.name.visible",
- ADMIN_BUNDLE))));
- properties.addOption(new Option(
- ABSTRACT,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.category.name.abstract",
- ADMIN_BUNDLE))));
- add(properties);
-
- saveCancelSection = new SaveCancelSection();
- add(saveCancelSection);
-
- addInitListener(e -> {
- final PageState state = e.getPageState();
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final CategoryRepository categoryRepository = cdiUtil.findBean(
- CategoryRepository.class);
- final Category category = categoryRepository.findById(Long
- .parseLong(selectedCategoryId.getSelectedKey(state))).get();
-
- categoryName.setValue(state, category.getName());
- final List props = new ArrayList<>();
- if (category.isEnabled()) {
- props.add(ENABLED);
- }
- if (category.isVisible()) {
- props.add(VISIBLE);
- }
- if (category.isAbstractCategory()) {
- props.add(ABSTRACT);
- }
- properties.setValue(state, props.toArray(new String[props.size()]));
- });
-
- addValidationListener(e -> {
- final PageState state = e.getPageState();
-
- if (saveCancelSection.getSaveButton().isSelected(state)) {
- final FormData data = e.getFormData();
- final String categoryNameData = data.getString(CATEGORY_NAME);
-
- if (Strings.isBlank(categoryNameData)) {
- data.addError(
- CATEGORY_NAME,
- new GlobalizedMessage(
- "ui.admin.categories.category.name.errors.not_blank",
- ADMIN_BUNDLE));
- }
- }
- });
-
- addProcessListener(e -> {
- final PageState state = e.getPageState();
-
- if (saveCancelSection.getSaveButton().isSelected(state)) {
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final CategoryRepository categoryRepository = cdiUtil.findBean(
- CategoryRepository.class);
- final CategoryManager categoryManager = cdiUtil.findBean(
- CategoryManager.class);
-
- final Category category = categoryRepository.findById(
- Long.parseLong(selectedCategoryId.getSelectedKey(state)))
- .get();
-
- final FormData data = e.getFormData();
- final String categoryNameData = data.getString(CATEGORY_NAME);
-
- category.setName(categoryNameData);
-
- final List propertiesData = Arrays.asList(
- (String[]) data.get(
- CATEGORY_PROPERTIES));
- category.setEnabled(propertiesData.contains(ENABLED));
- category.setVisible(propertiesData.contains(VISIBLE));
- category.setAbstractCategory(propertiesData.contains(ABSTRACT));
-
- categoryRepository.save(category);
- }
-
- categoriesTab.hideCategoryEditForm(state);
- });
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMover.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMover.java
deleted file mode 100644
index 16cf225c3..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMover.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.BoxPanel;
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.SaveCancelSection;
-import com.arsdigita.bebop.Tree;
-import com.arsdigita.globalization.GlobalizedMessage;
-
-import org.libreccm.categorization.Category;
-import org.libreccm.categorization.CategoryManager;
-import org.libreccm.categorization.CategoryRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class CategoryMover extends Form {
-
- private final CategoriesTab categoriesTab;
- private final ParameterSingleSelectionModel selectedDomainId;
- private final ParameterSingleSelectionModel selectedCategoryId;
-
- private final Tree categoryTree;
- private final SaveCancelSection saveCancelSection;
-
- public CategoryMover(
- final CategoriesTab categoriesTab,
- final ParameterSingleSelectionModel selectedDomainId,
- final ParameterSingleSelectionModel selectedCategoryId) {
-
- super("categoryMover", new BoxPanel(BoxPanel.VERTICAL));
-
- this.categoriesTab = categoriesTab;
- this.selectedDomainId = selectedDomainId;
- this.selectedCategoryId = selectedCategoryId;
-
- final Label heading = new Label(e -> {
- final PageState state = e.getPageState();
- final Label target = (Label) e.getTarget();
-
- final CategoryRepository categoryRepo = CdiUtil
- .createCdiUtil().findBean(CategoryRepository.class);
- final Category category = categoryRepo.findById(Long.parseLong(
- selectedCategoryId.getSelectedKey(state))).get();
-
- target.setLabel(new GlobalizedMessage(
- "ui.admin.categories.category.move.heading",
- ADMIN_BUNDLE,
- new String[]{category.getName()}));
- });
- heading.setClassAttr("heading");
- add(heading);
-
- categoryTree = new Tree(new CategoryMoverModelBuilder(
- selectedDomainId, selectedCategoryId));
- add(categoryTree);
-
- saveCancelSection = new SaveCancelSection();
- add(saveCancelSection);
-
- addProcessListener(e -> {
- final PageState state = e.getPageState();
-
- if (saveCancelSection.getSaveButton().isSelected(state)) {
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final CategoryRepository categoryRepo = cdiUtil.findBean(
- CategoryRepository.class);
- final CategoryManager categoryManager = cdiUtil.findBean(
- CategoryManager.class);
-
- final Category category = categoryRepo.findById(Long.parseLong(
- selectedCategoryId.getSelectedKey(state))).get();
- final Category parent = category.getParentCategory();
- final Category target = categoryRepo.findById(Long.parseLong(
- (String) categoryTree.getSelectedKey(state))).get();
-
- categoryManager.removeSubCategoryFromCategory(category, parent);
- categoryManager.addSubCategoryToCategory(category, target);
- }
-
- categoriesTab.hideCategoryMover(state);
- });
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMoverModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMoverModel.java
deleted file mode 100644
index 73ad2de53..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMoverModel.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.tree.TreeModel;
-import com.arsdigita.bebop.tree.TreeNode;
-
-import org.libreccm.categorization.Category;
-import org.libreccm.categorization.CategoryRepository;
-import org.libreccm.categorization.Domain;
-import org.libreccm.cdi.utils.CdiUtil;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class CategoryMoverModel implements TreeModel {
-
- private final Domain domain;
- private final Category selectedCategory;
-
- public CategoryMoverModel(final Domain domain,
- final Category selectedCategory) {
- this.domain = domain;
- this.selectedCategory = selectedCategory;
- }
-
- @Override
- public TreeNode getRoot(final PageState data) {
- final CategoryRepository categoryRepository = CdiUtil.createCdiUtil()
- .findBean(CategoryRepository.class);
- final Category category = categoryRepository.findById(domain.getRoot()
- .getObjectId()).get();
- return new CategoryMoverNode(category);
- }
-
- /**
- * Creates a list of the sub categories of the provided node
- * without
- * the selected category. This prevents the selected category and its sub
- * categories from be added to tree. Therefore the user can't move a
- * category beneath itself.
- *
- * @param node The current node.
- *
- * @return A list of the subcategories of the category managed by the
- * provided node.
- */
- private List getSubCategories(final TreeNode node) {
- final CategoryRepository categoryRepo = CdiUtil.createCdiUtil()
- .findBean(CategoryRepository.class);
- final Category category = categoryRepo.findById(
- ((CategoryMoverNode) node).getCategory().getObjectId()).get();
-
- final List subCategories = new ArrayList<>();
- category.getSubCategories().forEach(c -> {
- if (!c.equals(selectedCategory)) {
- subCategories.add(c);
- }
- });
-
- return subCategories;
- }
-
- @Override
- public boolean hasChildren(final TreeNode node, final PageState state) {
- final List subCategories = getSubCategories(node);
- return (subCategories != null && !subCategories.isEmpty()) ;
- }
-
- @Override
- public Iterator getChildren(final TreeNode node, final PageState state) {
- return new SubCategoryNodesIterator(getSubCategories(node));
- }
-
- private class CategoryMoverNode implements TreeNode {
-
- private final Category category;
-
- public CategoryMoverNode(final Category category) {
- this.category = category;
- }
-
- public Category getCategory() {
- return category;
- }
-
- @Override
- public Object getKey() {
- return Long.toString(category.getObjectId());
- }
-
- @Override
- public Object getElement() {
- return category.getName();
- }
-
- }
-
- private class SubCategoryNodesIterator
- implements Iterator {
-
- private final Iterator subCategoriesIterator;
-
- public SubCategoryNodesIterator(final List subCategories) {
- subCategoriesIterator = subCategories.iterator();
- }
-
- @Override
- public boolean hasNext() {
- return subCategoriesIterator.hasNext();
- }
-
- @Override
- public CategoryMoverNode next() {
- return new CategoryMoverNode(subCategoriesIterator.next());
- }
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMoverModelBuilder.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMoverModelBuilder.java
deleted file mode 100644
index 085c33a71..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryMoverModelBuilder.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.Tree;
-import com.arsdigita.bebop.tree.TreeModel;
-import com.arsdigita.bebop.tree.TreeModelBuilder;
-import com.arsdigita.util.LockableImpl;
-
-import org.libreccm.categorization.Category;
-import org.libreccm.categorization.CategoryRepository;
-import org.libreccm.categorization.Domain;
-import org.libreccm.categorization.DomainRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class CategoryMoverModelBuilder
- extends LockableImpl
- implements TreeModelBuilder {
-
- private final ParameterSingleSelectionModel selectedDomainId;
- private final ParameterSingleSelectionModel selectedCategoryId;
-
- public CategoryMoverModelBuilder(
- final ParameterSingleSelectionModel selectedDomainId,
- final ParameterSingleSelectionModel selectedCategoryId) {
-
- this.selectedDomainId = selectedDomainId;
- this.selectedCategoryId = selectedCategoryId;
-
- }
-
- @Override
- public TreeModel makeModel(final Tree tree, final PageState state) {
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
-
- final DomainRepository domainRepository = cdiUtil.findBean(
- DomainRepository.class);
- final Domain domain = domainRepository.findById(Long.parseLong(
- selectedDomainId.getSelectedKey(state))).get();
-
- final CategoryRepository categoryRepository = cdiUtil.findBean(
- CategoryRepository.class);
- final Category category = categoryRepository.findById(Long.parseLong(
- selectedCategoryId.getSelectedKey(state))).get();
-
- return new CategoryMoverModel(domain, category);
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryPropertySheetModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryPropertySheetModel.java
deleted file mode 100644
index 302ead517..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryPropertySheetModel.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.PropertySheetModel;
-import com.arsdigita.globalization.GlobalizedMessage;
-import java.util.Arrays;
-import java.util.Iterator;
-import org.libreccm.categorization.Category;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class CategoryPropertySheetModel implements PropertySheetModel {
-
- private static enum CategoryProperty {
- NAME,
- ENABLED,
- VISIBLE,
- ABSTRACT
- }
-
- private final Category selectedCategory;
- private final Iterator propertyIterator;
- private CategoryProperty currentProperty;
-
- public CategoryPropertySheetModel(final Category selectedCategory) {
- this.selectedCategory = selectedCategory;
- propertyIterator = Arrays.asList(CategoryProperty.values()).iterator();
- }
-
- @Override
- public boolean nextRow() {
- if (selectedCategory == null) {
- return false;
- }
-
- if (propertyIterator.hasNext()) {
- currentProperty = propertyIterator.next();
- return true;
- } else {
- return false;
- }
- }
-
- @Override
- public String getLabel() {
- return currentProperty.toString();
- }
-
- private GlobalizedMessage generatedGlobalizedLabel(
- final CategoryProperty property) {
-
- final String key = String.join(
- "",
- "ui.admin.categories.category.property_sheet.",
- property.toString().toLowerCase());
- return new GlobalizedMessage(key, ADMIN_BUNDLE);
- }
-
- @Override
- public GlobalizedMessage getGlobalizedLabel() {
- return generatedGlobalizedLabel(currentProperty);
- }
-
- @Override
- public String getValue() {
- switch (currentProperty) {
- case NAME:
- return selectedCategory.getName();
- case ENABLED:
- return Boolean.toString(selectedCategory.isEnabled());
- case VISIBLE:
- return Boolean.toString(selectedCategory.isVisible());
- case ABSTRACT:
- return Boolean.toString(selectedCategory.isAbstractCategory());
- default:
- return "";
- }
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryPropertySheetModelBuilder.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryPropertySheetModelBuilder.java
deleted file mode 100644
index 1cac71666..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryPropertySheetModelBuilder.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.PropertySheet;
-import com.arsdigita.bebop.PropertySheetModel;
-import com.arsdigita.bebop.PropertySheetModelBuilder;
-import com.arsdigita.util.LockableImpl;
-import org.libreccm.categorization.Category;
-import org.libreccm.categorization.CategoryRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class CategoryPropertySheetModelBuilder
- extends LockableImpl
- implements PropertySheetModelBuilder {
-
- private final ParameterSingleSelectionModel selectedCategoryId;
-
- public CategoryPropertySheetModelBuilder(
- final ParameterSingleSelectionModel selectedCategoryId) {
-
- this.selectedCategoryId = selectedCategoryId;
-
- }
-
- @Override
- public PropertySheetModel makeModel(final PropertySheet sheet,
- final PageState state) {
- final String categoryIdStr = selectedCategoryId.getSelectedKey(state);
- final Category selectedCategory;
-
- if (categoryIdStr == null || categoryIdStr.isEmpty()) {
- selectedCategory = null;
- } else {
- final CategoryRepository categoryRepository = CdiUtil.
- createCdiUtil().findBean(CategoryRepository.class);
- selectedCategory = categoryRepository.findById(Long.parseLong(
- categoryIdStr)).get();
- }
-
- return new CategoryPropertySheetModel(selectedCategory);
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryTitleForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryTitleForm.java
deleted file mode 100644
index ab4edac5a..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryTitleForm.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.ActionLink;
-import com.arsdigita.bebop.BoxPanel;
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.FormData;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.SaveCancelSection;
-import com.arsdigita.bebop.form.TextField;
-import com.arsdigita.globalization.GlobalizedMessage;
-
-import java.util.Locale;
-import org.apache.logging.log4j.util.Strings;
-import org.libreccm.categorization.Category;
-import org.libreccm.categorization.CategoryRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class CategoryTitleForm extends Form {
-
- private static final String LOCALIZED_CATEGORY_TITLE = "title";
-
- private final CategoriesTab categoriesTab;
-
- private final TextField title;
- private final SaveCancelSection saveCancelSection;
-
- public CategoryTitleForm(
- final CategoriesTab categoriesTab,
- final ParameterSingleSelectionModel selectedCategoryId,
- final ParameterSingleSelectionModel selectedLanguage) {
-
- super("categoryTitleForm", new BoxPanel(BoxPanel.VERTICAL));
-
- this.categoriesTab = categoriesTab;
-
- final ActionLink backLink = new ActionLink(new GlobalizedMessage(
- "ui.admin.categories.category.title.edit.back", ADMIN_BUNDLE));
- backLink.addActionListener(e -> {
- categoriesTab.hideDomainTitleForm(e.getPageState());
- });
- add(backLink);
-
- final Label heading = new Label(e -> {
- final PageState state = e.getPageState();
-
- final CategoryRepository categoryRepository = CdiUtil.
- createCdiUtil()
- .findBean(CategoryRepository.class);
- final Category selectedCategory = categoryRepository.findById(
- Long.parseLong(selectedCategoryId.getSelectedKey(state))).get();
-
- final Locale selectedLocale = new Locale(selectedLanguage
- .getSelectedKey(state));
-
- final Label target = (Label) e.getTarget();
-
- if (selectedCategory.getTitle().hasValue(selectedLocale)) {
- target.setLabel(new GlobalizedMessage(
- "ui.admin.categories.category.title.edit_for_lang",
- ADMIN_BUNDLE,
- new String[]{selectedCategory.getName(),
- selectedLocale.toString()}));
- } else {
- target.setLabel(new GlobalizedMessage(
- "ui.admin.categories.category.title.add_for_lang",
- ADMIN_BUNDLE,
- new String[]{selectedCategory.getName(),
- selectedLocale.toString()}));
- }
- });
- heading.setClassAttr("heading");
- add(heading);
-
- title = new TextField(LOCALIZED_CATEGORY_TITLE);
- title.setLabel(new GlobalizedMessage(
- "ui.admin.categories.category.title.label", ADMIN_BUNDLE));
- add(title);
-
- saveCancelSection = new SaveCancelSection();
- add(saveCancelSection);
-
- addInitListener(e -> {
- final PageState state = e.getPageState();
-
- final CategoryRepository categoryRepository = CdiUtil.
- createCdiUtil().findBean(CategoryRepository.class);
- final Category selectedCategory = categoryRepository.findById(
- Long.parseLong(selectedCategoryId.getSelectedKey(state))).get();
-
- final Locale selectedLocale = new Locale(selectedLanguage
- .getSelectedKey(state));
-
- if (selectedCategory.getTitle().hasValue(selectedLocale)) {
- title.setValue(state, selectedCategory.getTitle().getValue(
- selectedLocale));
- }
- });
-
- addValidationListener(e -> {
- if (saveCancelSection.getSaveButton().isSelected(e.getPageState())) {
- final FormData data = e.getFormData();
-
- final String titleData = data.
- getString(LOCALIZED_CATEGORY_TITLE);
-
- if (Strings.isBlank(titleData)) {
- data.addError(
- LOCALIZED_CATEGORY_TITLE,
- new GlobalizedMessage(
- "ui.admin.categories.category.title.error.not_blank",
- ADMIN_BUNDLE));
- }
- }
- });
-
- addProcessListener(e -> {
- final PageState state = e.getPageState();
-
- if (saveCancelSection.getSaveButton().isSelected(state)) {
- final CategoryRepository categoryRepository = CdiUtil.
- createCdiUtil().findBean(CategoryRepository.class);
- final Category selectedCategory = categoryRepository.findById(
- Long.parseLong(selectedCategoryId.getSelectedKey(state)))
- .get();
-
- final Locale selectedLocale = new Locale(selectedLanguage
- .getSelectedKey(state));
-
- final String titleData = e.getFormData().getString(
- LOCALIZED_CATEGORY_TITLE);
-
- selectedCategory.getTitle().putValue(selectedLocale, titleData);
- categoryRepository.save(selectedCategory);
- }
-
- categoriesTab.hideCategoryTitleForm(state);
- });
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryTitleTable.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryTitleTable.java
deleted file mode 100644
index c1cf27a93..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/CategoryTitleTable.java
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.Component;
-import com.arsdigita.bebop.ControlLink;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.Table;
-import com.arsdigita.bebop.Text;
-import com.arsdigita.bebop.event.TableActionEvent;
-import com.arsdigita.bebop.event.TableActionListener;
-import com.arsdigita.bebop.table.TableCellRenderer;
-import com.arsdigita.bebop.table.TableColumn;
-import com.arsdigita.bebop.table.TableColumnModel;
-import com.arsdigita.bebop.table.TableModel;
-import com.arsdigita.bebop.table.TableModelBuilder;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.util.LockableImpl;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import org.libreccm.categorization.Category;
-import org.libreccm.categorization.CategoryRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class CategoryTitleTable extends Table {
-
- private static final int COL_LOCALE = 0;
- private static final int COL_VALUE = 1;
- private static final int COL_EDIT = 2;
- private static final int COL_DEL = 3;
-
- private final CategoriesTab categoriesTab;
- private final ParameterSingleSelectionModel selectedCategoryId;
- private final ParameterSingleSelectionModel selectedLanguage;
-
- public CategoryTitleTable(
- final CategoriesTab categoriesTab,
- final ParameterSingleSelectionModel selectedCategoryId,
- final ParameterSingleSelectionModel selectedLanguage) {
-
- super();
-
- this.categoriesTab = categoriesTab;
- this.selectedCategoryId = selectedCategoryId;
- this.selectedLanguage = selectedLanguage;
-
- setIdAttr("categoryTitleTable");
-
- setEmptyView(new Label(new GlobalizedMessage(
- "ui.admin.categories.category_details.title.none", ADMIN_BUNDLE)));
-
- final TableColumnModel columnModel = getColumnModel();
- columnModel.add(new TableColumn(
- COL_LOCALE,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.category_details.title.col_lang",
- ADMIN_BUNDLE))));
- columnModel.add(new TableColumn(
- COL_VALUE,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.category_details.title.col_value",
- ADMIN_BUNDLE))));
- columnModel.add(new TableColumn(
- COL_EDIT,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.category_details.title.col_edit",
- ADMIN_BUNDLE))));
- columnModel.add(new TableColumn(
- COL_DEL,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.category_details.title.col_del",
- ADMIN_BUNDLE))));
-
- columnModel.get(COL_EDIT).setCellRenderer(new TableCellRenderer() {
-
- @Override
- public Component getComponent(final Table table,
- final PageState state,
- final Object value,
- final boolean isSelected,
- final Object key,
- final int row,
- final int column) {
- return new ControlLink((Component) value);
- }
-
- });
-
- columnModel.get(COL_DEL).setCellRenderer(new TableCellRenderer() {
-
- @Override
- public Component getComponent(final Table table,
- final PageState state,
- final Object value,
- final boolean isSelected,
- final Object key,
- final int row,
- final int column) {
- if (value == null) {
- return new Text("");
- } else {
- final ControlLink link = new ControlLink((Component) value);
- link.setConfirmation(new GlobalizedMessage(
- "ui.admin.categories.category_details.title.del_confirm",
- ADMIN_BUNDLE));
- return link;
- }
- }
-
- });
-
- addTableActionListener(new TableActionListener() {
-
- @Override
- public void cellSelected(final TableActionEvent event) {
- final PageState state = event.getPageState();
-
- switch (event.getColumn()) {
- case COL_EDIT:
- selectedLanguage.setSelectedKey(state,
- event.getRowKey());
- categoriesTab.showCategoryTitleForm(state);
- break;
- case COL_DEL:
- final Locale locale = new Locale((String) event.
- getRowKey());
- final CategoryRepository categoryRepository = CdiUtil.
- createCdiUtil().findBean(
- CategoryRepository.class);
- final Category category = categoryRepository.findById(
- Long.parseLong(selectedCategoryId.
- getSelectedKey(state))).get();
- category.getTitle().removeValue(locale);
-
- categoryRepository.save(category);
-
- break;
- }
- }
-
- @Override
- public void headSelected(final TableActionEvent event) {
- //Nothing
- }
-
- });
-
- setModelBuilder(new CategoryTitleTableModelBuilder());
-
- }
-
- private class CategoryTitleTableModelBuilder
- extends LockableImpl
- implements TableModelBuilder {
-
- @Override
- public TableModel makeModel(final Table table, final PageState state) {
- table.getRowSelectionModel().clearSelection(state);
-
- return new CategoryTitleTableModel(state);
- }
-
- }
-
- private class CategoryTitleTableModel implements TableModel {
-
- private final Category selectedCategory;
- private final List locales;
- private int index = -1;
-
- public CategoryTitleTableModel(final PageState state) {
- final CategoryRepository categoryRepository = CdiUtil.
- createCdiUtil().findBean(CategoryRepository.class);
- selectedCategory = categoryRepository.findById(Long.parseLong(
- selectedCategoryId.getSelectedKey(state))).get();
-
- locales = new ArrayList<>();
- if (selectedCategory.getTitle() != null) {
- locales.addAll(
- selectedCategory.getTitle().getAvailableLocales());
- }
- locales.sort((l1, l2) -> {
- return l1.toString().compareTo(l2.toString());
- });
- }
-
- @Override
- public int getColumnCount() {
- return 4;
- }
-
- @Override
- public boolean nextRow() {
- index++;
- return index < locales.size();
- }
-
- @Override
- public Object getElementAt(final int columnIndex) {
- final Locale locale = locales.get(index);
-
- switch (columnIndex) {
- case COL_LOCALE:
- return locale.toString();
- case COL_VALUE:
- return selectedCategory.getTitle().getValue(locale);
- case COL_EDIT:
- return new Label(new GlobalizedMessage(
- "ui.admin.categories.category_details.title.edit",
- ADMIN_BUNDLE
- ));
- case COL_DEL:
- return new Label(new GlobalizedMessage(
- "ui.admin.categories.category_details.title.del",
- ADMIN_BUNDLE
- ));
- default:
- throw new IllegalArgumentException(
- "Not a valid column index");
- }
- }
-
- @Override
- public Object getKeyAt(final int columnIndex) {
- return locales.get(index);
- }
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDescriptionForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDescriptionForm.java
deleted file mode 100644
index 02cc677a1..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDescriptionForm.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.ActionLink;
-import com.arsdigita.bebop.BoxPanel;
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.FormData;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.SaveCancelSection;
-import com.arsdigita.bebop.form.TextArea;
-import com.arsdigita.globalization.GlobalizedMessage;
-
-import org.apache.logging.log4j.util.Strings;
-import org.libreccm.categorization.Domain;
-import org.libreccm.categorization.DomainRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-
-import java.util.Locale;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-class DomainDescriptionForm extends Form {
-
- private static final String LOCALIZED_DOMAIN_DESC = "description";
-
- private final CategoriesTab categoriesTab;
-
- private final TextArea description;
- private final SaveCancelSection saveCancelSection;
-
- public DomainDescriptionForm(
- final CategoriesTab categoriesTab,
- final ParameterSingleSelectionModel selectedDomainId,
- final ParameterSingleSelectionModel selectedLanguage) {
-
- super("domainDescriptionForm", new BoxPanel(BoxPanel.VERTICAL));
-
- this.categoriesTab = categoriesTab;
-
- final ActionLink backLink = new ActionLink(new GlobalizedMessage(
- "ui.admin.categories.domain.description.edit.back", ADMIN_BUNDLE));
- backLink.addActionListener(e -> {
- categoriesTab.hideDomainTitleForm(e.getPageState());
- });
- add(backLink);
-
- final Label heading = new Label(e -> {
- final PageState state = e.getPageState();
-
- final DomainRepository domainRepository = CdiUtil.createCdiUtil()
- .findBean(DomainRepository.class);
- final Domain selectedDomain = domainRepository.findById(
- Long.parseLong(selectedDomainId.getSelectedKey(state))).get();
-
- final Locale selectedLocale = new Locale(selectedLanguage
- .getSelectedKey(state));
-
- final Label target = (Label) e.getTarget();
-
- if (selectedDomain.getTitle().hasValue(selectedLocale)) {
- target.setLabel(new GlobalizedMessage(
- "ui.admin.categories.domain.description.edit_for_lang",
- ADMIN_BUNDLE,
- new String[]{selectedDomain.getDomainKey(),
- selectedLocale.toString()}));
- } else {
- target.setLabel(new GlobalizedMessage(
- "ui.admin.categories.domain.description.add_for_lang",
- ADMIN_BUNDLE,
- new String[]{selectedDomain.getDomainKey(),
- selectedLocale.toString()}));
- }
- });
- heading.setClassAttr("heading");
- add(heading);
-
- description = new TextArea(LOCALIZED_DOMAIN_DESC);
- description.setLabel(new GlobalizedMessage(
- "ui.admin.categories.domain.description.label", ADMIN_BUNDLE));
- description.setCols(60);
- description.setRows(10);
- add(description);
-
- saveCancelSection = new SaveCancelSection();
- add(saveCancelSection);
-
- addInitListener(e -> {
- final PageState state = e.getPageState();
-
- final DomainRepository domainRepository = CdiUtil.createCdiUtil()
- .findBean(DomainRepository.class);
- final Domain selectedDomain = domainRepository.findById(
- Long.parseLong(selectedDomainId.getSelectedKey(state))).get();
-
- final Locale selectedLocale = new Locale(selectedLanguage
- .getSelectedKey(state));
-
- if (selectedDomain.getTitle().hasValue(selectedLocale)) {
- description.setValue(state, selectedDomain.getDescription()
- .getValue(selectedLocale));
- }
- });
-
- addValidationListener(e -> {
-
- if (saveCancelSection.getSaveButton().isSelected(
- e.getPageState())) {
- final FormData data = e.getFormData();
-
- final String titleData = data.getString(LOCALIZED_DOMAIN_DESC);
-
- if (Strings.isBlank(titleData)) {
- data.addError(
- LOCALIZED_DOMAIN_DESC,
- new GlobalizedMessage(
- "ui.admin.categories.domain.description.error.not_blank",
- ADMIN_BUNDLE));
- }
- }
- });
-
- addProcessListener(e -> {
- final PageState state = e.getPageState();
-
- if (saveCancelSection.getSaveButton().isSelected(state)) {
- final DomainRepository domainRepository = CdiUtil
- .createCdiUtil()
- .findBean(DomainRepository.class);
- final Domain selectedDomain = domainRepository.findById(
- Long.parseLong(selectedDomainId.getSelectedKey(state)))
- .get();
-
- final Locale selectedLocale = new Locale(selectedLanguage
- .getSelectedKey(state));
-
- final String titleData = e.getFormData().getString(
- LOCALIZED_DOMAIN_DESC);
-
- selectedDomain.getDescription().putValue(selectedLocale,
- titleData);
- domainRepository.save(selectedDomain);
- }
-
- categoriesTab.hideDomainDescriptionForm(state);
-
- });
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDescriptionTable.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDescriptionTable.java
deleted file mode 100644
index 8f8474ddc..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDescriptionTable.java
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.Component;
-import com.arsdigita.bebop.ControlLink;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.Table;
-import com.arsdigita.bebop.Text;
-import com.arsdigita.bebop.event.TableActionEvent;
-import com.arsdigita.bebop.event.TableActionListener;
-import com.arsdigita.bebop.table.TableCellRenderer;
-import com.arsdigita.bebop.table.TableColumn;
-import com.arsdigita.bebop.table.TableColumnModel;
-import com.arsdigita.bebop.table.TableModel;
-import com.arsdigita.bebop.table.TableModelBuilder;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.util.LockableImpl;
-
-import org.libreccm.categorization.Domain;
-import org.libreccm.categorization.DomainRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-class DomainDescriptionTable extends Table {
-
- private static final int COL_LOCALE = 0;
- private static final int COL_VALUE = 1;
- private static final int COL_EDIT = 2;
- private static final int COL_DEL = 3;
-
- private final CategoriesTab categoriesTab;
- private final ParameterSingleSelectionModel selectedDomainId;
- private final ParameterSingleSelectionModel selectedLanguage;
-
- public DomainDescriptionTable(
- final CategoriesTab categoriesTab,
- final ParameterSingleSelectionModel selectedDomainId,
- final ParameterSingleSelectionModel selectedLanguage) {
-
- super();
-
- this.categoriesTab = categoriesTab;
- this.selectedDomainId = selectedDomainId;
- this.selectedLanguage = selectedLanguage;
-
- setIdAttr("domainDescriptionTable");
-
- setEmptyView(new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.description.none",
- ADMIN_BUNDLE)));
-
- final TableColumnModel columnModel = getColumnModel();
- columnModel.add(new TableColumn(
- COL_LOCALE,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.description.col_lang",
- ADMIN_BUNDLE))));
- columnModel.add(new TableColumn(
- COL_VALUE,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.description.col_value",
- ADMIN_BUNDLE))));
- columnModel.add(new TableColumn(
- COL_EDIT,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.description.col_edit",
- ADMIN_BUNDLE))));
- columnModel.add(new TableColumn(
- COL_DEL,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.description.col_del",
- ADMIN_BUNDLE))));
-
- columnModel.get(COL_EDIT).setCellRenderer(new TableCellRenderer() {
-
- @Override
- public Component getComponent(final Table table,
- final PageState state,
- final Object value,
- final boolean isSelected,
- final Object key,
- final int row,
- final int column) {
- return new ControlLink((Component) value);
- }
-
- });
-
- columnModel.get(COL_DEL).setCellRenderer(new TableCellRenderer() {
-
- @Override
- public Component getComponent(final Table table,
- final PageState state,
- final Object value,
- final boolean isSelected,
- final Object key,
- final int row,
- final int column) {
- if (value == null) {
- return new Text("");
- } else {
- final ControlLink link = new ControlLink((Component) value);
- link.setConfirmation(new GlobalizedMessage(
- "ui.admin.categories.domain_details.description"
- + ".del_confirm",
- ADMIN_BUNDLE));
- return link;
- }
- }
-
- });
-
- addTableActionListener(new TableActionListener() {
-
- @Override
- public void cellSelected(final TableActionEvent event) {
- final PageState state = event.getPageState();
-
- switch (event.getColumn()) {
- case COL_EDIT:
- selectedLanguage.setSelectedKey(state,
- event.getRowKey());
- categoriesTab.showDomainDescriptionForm(state);
- break;
- case COL_DEL:
- final Locale locale = new Locale((String) event
- .getRowKey());
- final DomainRepository domainRepository = CdiUtil
- .createCdiUtil().
- findBean(DomainRepository.class);
- final Domain domain = domainRepository.findById(
- Long.parseLong(selectedDomainId
- .getSelectedKey(state))).get();
- domain.getDescription().removeValue(locale);
-
- domainRepository.save(domain);
-
- break;
- }
- }
-
- @Override
- public void headSelected(final TableActionEvent event) {
- //Nothing
- }
-
- });
-
- setModelBuilder(new DomainDescriptionTableModelBuilder());
-
- }
-
- private class DomainDescriptionTableModelBuilder
- extends LockableImpl
- implements TableModelBuilder {
-
- @Override
- public TableModel makeModel(final Table table,
- final PageState state) {
- table.getRowSelectionModel().clearSelection(state);
-
- return new DomainDescriptionTableModel(state);
- }
-
- }
-
- private class DomainDescriptionTableModel implements TableModel {
-
- private final Domain selectedDomain;
- private final List locales;
- private int index = -1;
-
- public DomainDescriptionTableModel(final PageState state) {
- final DomainRepository domainRepository = CdiUtil.createCdiUtil()
- .findBean(DomainRepository.class);
- selectedDomain = domainRepository.findById(
- Long.parseLong(selectedDomainId.getSelectedKey(state))).get();
-
- locales = new ArrayList<>();
- locales.addAll(selectedDomain.getDescription()
- .getAvailableLocales());
- locales.sort((l1, l2) -> {
- return l1.toString().compareTo(l2.toString());
- });
- }
-
- @Override
- public int getColumnCount() {
- return 4;
- }
-
- @Override
- public boolean nextRow() {
- index++;
- return index < locales.size();
- }
-
- @Override
- public Object getElementAt(final int columnIndex) {
- final Locale locale = locales.get(index);
-
- switch (columnIndex) {
- case COL_LOCALE:
- return locale.toString();
- case COL_VALUE:
- return selectedDomain.getDescription().getValue(locale);
- case COL_EDIT:
- return new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.description.edit",
- ADMIN_BUNDLE));
- case COL_DEL:
- return new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.description.del",
- ADMIN_BUNDLE));
- default:
- throw new IllegalArgumentException(
- "Not a valid column index");
- }
- }
-
- @Override
- public Object getKeyAt(final int columnIndex) {
- return locales.get(index);
- }
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDetails.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDetails.java
deleted file mode 100644
index fa2734d9e..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainDetails.java
+++ /dev/null
@@ -1,317 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.ActionLink;
-import com.arsdigita.bebop.BoxPanel;
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.FormData;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.PropertySheet;
-import com.arsdigita.bebop.SegmentedPanel;
-import com.arsdigita.bebop.Text;
-import com.arsdigita.bebop.form.Option;
-import com.arsdigita.bebop.form.SingleSelect;
-import com.arsdigita.bebop.form.Submit;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.kernel.KernelConfig;
-import com.arsdigita.util.UncheckedWrapperException;
-
-import org.libreccm.categorization.Domain;
-import org.libreccm.categorization.DomainRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-
-import java.util.HashSet;
-import java.util.Set;
-import java.util.TooManyListenersException;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-class DomainDetails extends SegmentedPanel {
-
- private final CategoriesTab categoriesTab;
- private final ParameterSingleSelectionModel selectedDomainId;
- private final ParameterSingleSelectionModel selectedLanguage;
- private final DomainTitleAddForm domainTitleAddForm;
- private final DomainDescriptionAddForm domainDescriptionAddForm;
-
- public DomainDetails(
- final CategoriesTab categoriesTab,
- final ParameterSingleSelectionModel selectedDomainId,
- final ParameterSingleSelectionModel selectedLanguage) {
-
- this.categoriesTab = categoriesTab;
- this.selectedDomainId = selectedDomainId;
- this.selectedLanguage = selectedLanguage;
-
- final ActionLink backLink = new ActionLink(new GlobalizedMessage(
- "ui.admin.categories.domain_details.back", ADMIN_BUNDLE));
- backLink.addActionListener(e -> {
- final PageState state = e.getPageState();
- categoriesTab.hideDomainDetails(state);
- });
- addSegment("domain-details-back", backLink);
-
- final Label heading = new Label(e -> {
- final PageState state = e.getPageState();
- final Label target = (Label) e.getTarget();
-
- final DomainRepository domainRepository = CdiUtil.createCdiUtil()
- .findBean(DomainRepository.class);
- final Domain domain = domainRepository.findById(Long.parseLong(
- selectedDomainId.getSelectedKey(state))).get();
-
- target.setLabel(new GlobalizedMessage(
- "ui.admin.categories.domain.details.heading",
- ADMIN_BUNDLE,
- new String[]{domain.getDomainKey()}));
- });
- heading.setClassAttr("heading");
- add(heading);
-
- final BoxPanel propertiesPanel = new BoxPanel(BoxPanel.VERTICAL);
- propertiesPanel.add(new PropertySheet(
- new DomainPropertySheetModelBuilder(selectedDomainId)));
- final ActionLink editBasicPropertiesLink = new ActionLink(
- new GlobalizedMessage(
- "ui.admin.categories.domain_details.basic_properties.edit",
- ADMIN_BUNDLE));
- editBasicPropertiesLink.addActionListener(e -> {
- final PageState state = e.getPageState();
- categoriesTab.showDomainForm(state);
- });
- propertiesPanel.add(editBasicPropertiesLink);
- addSegment(
- new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.basic_properties",
- ADMIN_BUNDLE)),
- propertiesPanel);
-
- final BoxPanel titlesPanel = new BoxPanel(BoxPanel.VERTICAL);
- titlesPanel.add(new DomainTitleTable(categoriesTab,
- selectedDomainId,
- selectedLanguage));
- domainTitleAddForm = new DomainTitleAddForm();
- titlesPanel.add(domainTitleAddForm);
- addSegment(
- new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.domain_title",
- ADMIN_BUNDLE)),
- titlesPanel);
-
- final BoxPanel descPanel = new BoxPanel(BoxPanel.VERTICAL);
- descPanel.add(new DomainDescriptionTable(categoriesTab,
- selectedDomainId,
- selectedLanguage));
- domainDescriptionAddForm = new DomainDescriptionAddForm();
- descPanel.add(domainDescriptionAddForm);
- addSegment(
- new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.description",
- ADMIN_BUNDLE)),
- descPanel);
-
- final BoxPanel mappingsPanel = new BoxPanel(BoxPanel.VERTICAL);
- mappingsPanel.add(new DomainMappingsTable(categoriesTab,
- selectedDomainId));
- mappingsPanel.add(new DomainMappingAddForm(selectedDomainId));
- addSegment(
- new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.mappings",
- ADMIN_BUNDLE)),
- mappingsPanel);
- }
-
- private class DomainTitleAddForm extends Form {
-
- private static final String TITLE_SELECT_LANG = "titleSelectLang";
-
- public DomainTitleAddForm() {
- super("domainAddTitleLang", new BoxPanel(BoxPanel.HORIZONTAL));
-
- final SingleSelect titleSelectLang = new SingleSelect(
- TITLE_SELECT_LANG);
- titleSelectLang.setLabel(new GlobalizedMessage(
- "ui.admin.categories.domain_details.domain_title.add.label",
- ADMIN_BUNDLE));
- try {
- titleSelectLang.addPrintListener(e -> {
- final PageState state = e.getPageState();
-
- final DomainRepository domainRepository = CdiUtil
- .createCdiUtil().findBean(DomainRepository.class);
- final Domain domain = domainRepository.findById(Long
- .parseLong(selectedDomainId.getSelectedKey(state)))
- .get();
- final KernelConfig kernelConfig = KernelConfig.getConfig();
- final Set supportedLanguages = kernelConfig
- .getSupportedLanguages();
- final Set assignedLanguages = new HashSet<>();
- domain.getTitle().getAvailableLocales().forEach(l -> {
- assignedLanguages.add(l.toString());
- });
-
- final SingleSelect target = (SingleSelect) e.getTarget();
-
- target.clearOptions();
-
- supportedLanguages.forEach(l -> {
- if (!assignedLanguages.contains(l)) {
- target.addOption(new Option(l, new Text(l)));
- }
- });
- });
- } catch (TooManyListenersException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- add(titleSelectLang);
- add(new Submit(new GlobalizedMessage(
- "ui.admin.categories.domain_details.domain_title.add.submit",
- ADMIN_BUNDLE)));
-
- addProcessListener(e -> {
- final PageState state = e.getPageState();
- final FormData data = e.getFormData();
-
- final String language = data.getString(TITLE_SELECT_LANG);
- selectedLanguage.setSelectedKey(state, language);
-
- categoriesTab.showDomainTitleForm(state);
- });
- }
-
- @Override
- public boolean isVisible(final PageState state) {
- if (super.isVisible(state)) {
- final DomainRepository domainRepository = CdiUtil
- .createCdiUtil().findBean(DomainRepository.class);
- final Domain domain = domainRepository.findById(Long
- .parseLong(selectedDomainId.getSelectedKey(state))).get();
- final KernelConfig kernelConfig = KernelConfig.getConfig();
- final Set supportedLanguages = kernelConfig
- .getSupportedLanguages();
- final Set assignedLanguages = new HashSet<>();
- domain.getTitle().getAvailableLocales().forEach(l -> {
- assignedLanguages.add(l.toString());
- });
-
- //If all supported languages are assigned the form is not
- //visible
- return !assignedLanguages.equals(supportedLanguages);
- } else {
- return false;
- }
- }
-
- }
-
- private class DomainDescriptionAddForm extends Form {
-
- private static final String DESC_SELECT_LANG = "descSelectLang";
-
- public DomainDescriptionAddForm() {
- super("domainAddDescLang", new BoxPanel(BoxPanel.HORIZONTAL));
-
- final SingleSelect descSelectLang = new SingleSelect(
- DESC_SELECT_LANG);
- descSelectLang.setLabel(new GlobalizedMessage(
- "ui.admin.categories.domain_details.domain_desc.add.label",
- ADMIN_BUNDLE));
- try {
- descSelectLang.addPrintListener(e -> {
- final PageState state = e.getPageState();
-
- final DomainRepository domainRepository = CdiUtil
- .createCdiUtil().findBean(DomainRepository.class);
- final Domain domain = domainRepository.findById(Long
- .parseLong(selectedDomainId.getSelectedKey(state)))
- .get();
- final KernelConfig kernelConfig = KernelConfig.getConfig();
- final Set supportedLanguages = kernelConfig
- .getSupportedLanguages();
- final Set assignedLanguages = new HashSet<>();
- domain.getDescription().getAvailableLocales().forEach(l -> {
- assignedLanguages.add(l.toString());
- });
-
- final SingleSelect target = (SingleSelect) e.getTarget();
-
- target.clearOptions();
-
- supportedLanguages.forEach(l -> {
- if (!assignedLanguages.contains(l)) {
- target.addOption(new Option(l, new Text(l)));
- }
- });
- });
- } catch (TooManyListenersException ex) {
- throw new UncheckedWrapperException(ex);
- }
-
- add(descSelectLang);
- add(new Submit(new GlobalizedMessage(
- "ui.admin.categories.domain_details.domain_desc.add.submit",
- ADMIN_BUNDLE)));
-
- addProcessListener(e -> {
- final PageState state = e.getPageState();
- final FormData data = e.getFormData();
-
- final String language = data.getString(DESC_SELECT_LANG);
- selectedLanguage.setSelectedKey(state, language);
-
- categoriesTab.showDomainDescriptionForm(state);
-
- });
- }
-
- @Override
- public boolean isVisible(final PageState state) {
- if (super.isVisible(state)) {
- final DomainRepository domainRepository = CdiUtil
- .createCdiUtil().findBean(DomainRepository.class);
- final Domain domain = domainRepository.findById(Long
- .parseLong(selectedDomainId.getSelectedKey(state))).get();
- final KernelConfig kernelConfig = KernelConfig.getConfig();
- final Set supportedLanguages = kernelConfig
- .getSupportedLanguages();
- final Set assignedLanguages = new HashSet<>();
- domain.getDescription().getAvailableLocales().forEach(l -> {
- assignedLanguages.add(l.toString());
- });
-
- //If all supported languages are assigned the form is not
- //visible
- return !assignedLanguages.equals(supportedLanguages);
-
- } else {
- return false;
- }
- }
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainForm.java
deleted file mode 100644
index f5204dafb..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainForm.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.FormData;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.Page;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.SaveCancelSection;
-import com.arsdigita.bebop.form.Date;
-import com.arsdigita.bebop.form.TextField;
-import com.arsdigita.globalization.GlobalizedMessage;
-
-import org.apache.logging.log4j.util.Strings;
-import org.libreccm.categorization.Domain;
-import org.libreccm.categorization.DomainManager;
-import org.libreccm.categorization.DomainRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-
-import java.time.LocalDate;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-class DomainForm extends Form {
-
- private static final String RELEASED = "released";
- private static final String VERSION = "version";
- private static final String DOMAIN_URI = "domainUri";
- private static final String DOMAIN_KEY = "domainKey";
- private static final String ROOT_CATEGORY_NAME = "rootCategoryName";
-
- private final ParameterSingleSelectionModel selectedDomainId;
-
- private final TextField domainKey;
- private final TextField domainUri;
- private final TextField version;
- private final Date released;
- private final TextField rootCategoryName;
- private final SaveCancelSection saveCancelSection;
-
- public DomainForm(
- final CategoriesTab categoriesTab,
- final ParameterSingleSelectionModel selectedDomainId) {
-
- super("domainForm");
-
- this.selectedDomainId = selectedDomainId;
-
- final Label heading = new Label(e -> {
- final PageState state = e.getPageState();
- final Label target = (Label) e.getTarget();
- if (selectedDomainId.getSelectedKey(state) == null) {
- target.setLabel(new GlobalizedMessage(
- "ui.admin.categories.domain_form.heading.create_new",
- ADMIN_BUNDLE));
- } else {
- final DomainRepository domainRepository = CdiUtil.
- createCdiUtil().findBean(DomainRepository.class);
- final Domain domain = domainRepository.findById(Long.parseLong(
- selectedDomainId.getSelectedKey(state))).get();
- target.setLabel(new GlobalizedMessage(
- "ui.admin.categories.domain_form.heading.edit",
- ADMIN_BUNDLE,
- new String[]{domain.getDomainKey()}));
- }
- });
- heading.setClassAttr("heading");
- add(heading);
-
- domainKey = new TextField(DOMAIN_KEY);
- domainKey.setLabel(new GlobalizedMessage(
- "ui.admin.categories.domain_form.fields.domain_key",
- ADMIN_BUNDLE));
- add(domainKey);
-
- domainUri = new TextField(DOMAIN_URI);
- domainUri.setLabel(new GlobalizedMessage(
- "ui.admin.categories.domain_form.fields.domain_uri",
- ADMIN_BUNDLE));
- add(domainUri);
-
- version = new TextField(VERSION);
- version.setLabel(new GlobalizedMessage(
- "ui.admin.categories.domain_form.fields.version",
- ADMIN_BUNDLE));
- add(version);
-
- released = new Date(RELEASED);
- released.setLabel(new GlobalizedMessage(
- "ui.admin.categories.domain_form.fields.released",
- ADMIN_BUNDLE));
- add(released);
-
- rootCategoryName = new TextField(ROOT_CATEGORY_NAME);
- rootCategoryName.setLabel(new GlobalizedMessage(
- "ui.admin.categories.domain_form.fields.root_category_name",
- ADMIN_BUNDLE));
- add(rootCategoryName);
-
- saveCancelSection = new SaveCancelSection();
- add(saveCancelSection);
-
- addInitListener(e -> {
- final PageState state = e.getPageState();
-
- if (selectedDomainId.getSelectedKey(state) == null) {
- rootCategoryName.setVisible(state, true);
- } else {
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final DomainRepository domainRepository = cdiUtil.findBean(
- DomainRepository.class);
- final Domain domain = domainRepository.findById(Long.parseLong(
- selectedDomainId.getSelectedKey(state))).get();
-
- domainKey.setValue(state, domain.getDomainKey());
- domainUri.setValue(state, domain.getUri());
- version.setValue(state, domain.getVersion());
- released.setValue(state, domain.getReleased());
-
- rootCategoryName.setVisible(state, false);
- }
- });
-
- addValidationListener(e -> {
- final PageState state = e.getPageState();
-
- if (saveCancelSection.getSaveButton().isSelected(state)) {
- final FormData data = e.getFormData();
- final String domainKeyData = data.getString(DOMAIN_KEY);
- final String versionData = data.getString(VERSION);
-
- if (Strings.isBlank(domainKeyData)) {
- data.addError(
- DOMAIN_KEY,
- new GlobalizedMessage(
- "ui.admin.categories.domain_form.errors.domain_key_blank",
- ADMIN_BUNDLE));
- }
-
- if (Strings.isBlank(versionData)) {
- data.addError(
- DOMAIN_KEY,
- new GlobalizedMessage(
- "ui.admin.categories.domain_form.errors.version_blank",
- ADMIN_BUNDLE));
- }
- }
- });
-
- addProcessListener(e -> {
- final PageState state = e.getPageState();
-
- if (saveCancelSection.getSaveButton().isSelected(state)) {
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final DomainRepository domainRepository = cdiUtil.findBean(
- DomainRepository.class);
- final DomainManager domainManager = cdiUtil.findBean(
- DomainManager.class);
-
- final FormData data = e.getFormData();
- final String domainKeyData = data.getString(DOMAIN_KEY);
- final String domainUriData;
- if (Strings.isBlank(data.getString(DOMAIN_URI))) {
- domainUriData = null;
- } else {
- domainUriData = data.getString(DOMAIN_URI);
- }
- final String versionData = data.getString(VERSION);
- final java.util.Date releasedData = (java.util.Date) data.get(
- RELEASED
- );
- final String rootCategoryNameData = data.getString(
- ROOT_CATEGORY_NAME);
-
- final Domain domain;
- if (selectedDomainId.getSelectedKey(state) == null) {
- if (Strings.isBlank(rootCategoryNameData)) {
- domain = domainManager.createDomain(domainKeyData,
- domainKeyData);
- } else {
- domain = domainManager.createDomain(
- domainKeyData, rootCategoryNameData);
- }
- } else {
- domain = domainRepository.findById(Long.parseLong(
- selectedDomainId.getSelectedKey(state))).get();
- }
- domain.setDomainKey(domainKeyData);
- domain.setUri(domainUriData);
- domain.setVersion(versionData);
- domain.setReleased(LocalDate.from(releasedData.toInstant()));
-
- domainRepository.save(domain);
- }
-
- categoriesTab.hideDomainForm(state);
- });
-
- }
-
- @Override
- public void register(final Page page) {
- super.register(page);
-
- page.setVisibleDefault(rootCategoryName, false);
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainMappingAddForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainMappingAddForm.java
deleted file mode 100644
index 46cfd9e61..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainMappingAddForm.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.BoxPanel;
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.FormData;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.Text;
-import com.arsdigita.bebop.form.Option;
-import com.arsdigita.bebop.form.SingleSelect;
-import com.arsdigita.bebop.form.Submit;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.util.UncheckedWrapperException;
-
-import org.libreccm.categorization.Domain;
-import org.libreccm.categorization.DomainManager;
-import org.libreccm.categorization.DomainRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.web.ApplicationRepository;
-import org.libreccm.web.CcmApplication;
-
-import java.util.List;
-import java.util.TooManyListenersException;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-class DomainMappingAddForm extends Form {
-
- private static final String DOMAIN_MAPPING_OWNER = "domainMappingOwner";
-
- public DomainMappingAddForm(
- final ParameterSingleSelectionModel selectedDomainId) {
-
- super("domainMappingAddForm", new BoxPanel(BoxPanel.HORIZONTAL));
-//
-// final Label heading = new Label(new GlobalizedMessage(
-// "ui.admin.categories.domain_details.mappings.add", ADMIN_BUNDLE));
-// heading.setClassAttr("heading");
-// add(heading);
-
- final SingleSelect appSelect = new SingleSelect(DOMAIN_MAPPING_OWNER);
- appSelect.setLabel(new GlobalizedMessage(
- "ui.admin.categories.domain_details.mappings.add", ADMIN_BUNDLE));
- try {
- appSelect.addPrintListener(e -> {
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final ApplicationRepository appRepository = cdiUtil.findBean(
- ApplicationRepository.class);
- final DomainRepository domainRepository = cdiUtil.findBean(
- DomainRepository.class);
- final DomainManager domainManager = cdiUtil.findBean(
- DomainManager.class);
- final Domain domain = domainRepository.findById(
- Long.parseLong(
- selectedDomainId.getSelectedKey(e.getPageState())),
- "Domain.withOwners").get();
-
- final List applications = appRepository
- .findAll();
-
- final SingleSelect target = (SingleSelect) e.getTarget();
- target.clearOptions();
-
- target.addOption(new Option("0", new Text("")));
-
- applications.forEach(a -> {
- if (!domainManager.isDomainOwner(a, domain)) {
- target.addOption(new Option(Long.toString(a
- .getObjectId()),
- new Text(a.getPrimaryUrl())));
- }
- });
- });
- } catch (TooManyListenersException ex) {
- throw new UncheckedWrapperException(ex);
- }
- add(appSelect);
-
- add(new Submit(new GlobalizedMessage(
- "ui.admin.categories.domain_details.mappings.create", ADMIN_BUNDLE)));
-
- addValidationListener(e -> {
- final PageState state = e.getPageState();
- final FormData data = e.getFormData();
-
- final String appId = data.getString(DOMAIN_MAPPING_OWNER);
- if ("0".equals(appId)) {
- data.addError(
- DOMAIN_MAPPING_OWNER,
- new GlobalizedMessage(
- "ui.admin.categories.doamin_details.mappings.error"
- + ".please_select_app",
- ADMIN_BUNDLE));
- }
- });
-
- addProcessListener(e -> {
- final PageState state = e.getPageState();
- final FormData data = e.getFormData();
-
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final DomainRepository domainRepository = cdiUtil.findBean(
- DomainRepository.class);
- final DomainManager domainManager = cdiUtil.findBean(
- DomainManager.class);
- final ApplicationRepository appRepository = cdiUtil.findBean(
- ApplicationRepository.class);
-
- final Domain domain = domainRepository.findById(
- Long.parseLong(selectedDomainId.getSelectedKey(state)),
- "Domain.withOwners").get();
- final CcmApplication application = appRepository.findById(
- Long.parseLong(data.getString(DOMAIN_MAPPING_OWNER)),
- "CcmApplication.withDomains").get();
-
- domainManager.addDomainOwner(application, domain);
- });
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainMappingsTable.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainMappingsTable.java
deleted file mode 100644
index b7906be74..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainMappingsTable.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.Component;
-import com.arsdigita.bebop.ControlLink;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.Table;
-import com.arsdigita.bebop.Text;
-import com.arsdigita.bebop.event.TableActionEvent;
-import com.arsdigita.bebop.event.TableActionListener;
-import com.arsdigita.bebop.table.TableCellRenderer;
-import com.arsdigita.bebop.table.TableColumn;
-import com.arsdigita.bebop.table.TableColumnModel;
-import com.arsdigita.bebop.table.TableModel;
-import com.arsdigita.bebop.table.TableModelBuilder;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.util.LockableImpl;
-
-import org.libreccm.categorization.Domain;
-import org.libreccm.categorization.DomainManager;
-import org.libreccm.categorization.DomainOwnership;
-import org.libreccm.categorization.DomainRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.web.ApplicationRepository;
-import org.libreccm.web.CcmApplication;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-class DomainMappingsTable extends Table {
-
- private static final int COL_APPLICATION = 0;
- private static final int COL_REMOVE = 1;
-
- private final CategoriesTab categoriesTab;
- private final ParameterSingleSelectionModel selectedDomainId;
-
- public DomainMappingsTable(
- final CategoriesTab categoriesTab,
- final ParameterSingleSelectionModel selectedDomainId) {
- super();
-
- this.categoriesTab = categoriesTab;
- this.selectedDomainId = selectedDomainId;
-
- setIdAttr("domainMappingsTable");
-
- setEmptyView(new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.mappings.none",
- ADMIN_BUNDLE)));
-
- final TableColumnModel columnModel = getColumnModel();
- columnModel.add(new TableColumn(
- COL_APPLICATION,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.mappings.col_app",
- ADMIN_BUNDLE))));
-// columnModel.add(new TableColumn(
-// COL_CONTEXT,
-// new Label(new GlobalizedMessage(
-// "ui.admin.categories.domain_details.mappings.col_context",
-// ADMIN_BUNDLE))));
- columnModel.add(new TableColumn(
- COL_REMOVE,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.mappings.col_remove",
- ADMIN_BUNDLE))));
-
- columnModel.get(COL_REMOVE).setCellRenderer(new TableCellRenderer() {
-
- @Override
- public Component getComponent(final Table table,
- final PageState state,
- final Object value,
- final boolean isSelected,
- final Object key,
- final int row,
- final int column) {
- if (value == null) {
- return new Text("");
- } else {
- final ControlLink link = new ControlLink((Component) value);
- link.setConfirmation(new GlobalizedMessage(
- "ui.admin.categories.domain_details.mappings.remove.confirm",
- ADMIN_BUNDLE));
- return link;
- }
- }
-
- });
-
- addTableActionListener(new TableActionListener() {
-
- @Override
- public void cellSelected(final TableActionEvent event) {
- switch (event.getColumn()) {
- case COL_REMOVE:
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final DomainRepository domainRepository = cdiUtil
- .findBean(DomainRepository.class);
- final DomainManager domainManager = cdiUtil.findBean(
- DomainManager.class);
- final ApplicationRepository appRepository = cdiUtil
- .findBean(ApplicationRepository.class);
-
- final Domain domain = domainRepository.findById(
- Long.parseLong(selectedDomainId.getSelectedKey(event
- .getPageState()))).get();
-
- final CcmApplication owner = appRepository.findById(
- Long.parseLong((String)event.getRowKey())).get();
-
- domainManager.removeDomainOwner(owner, domain);
-
- break;
- }
- }
-
- @Override
- public void headSelected(final TableActionEvent event) {
- //Nothing
- }
-
- });
-
- setModelBuilder(new DomainMappingsTableModelBuilder());
- }
-
- private class DomainMappingsTableModelBuilder
- extends LockableImpl
- implements TableModelBuilder {
-
- @Override
- public TableModel makeModel(final Table table,
- final PageState state) {
- table.getRowSelectionModel().clearSelection(state);
-
- return new DomainMappingsTableModel(state);
- }
-
- }
-
- private class DomainMappingsTableModel implements TableModel {
-
- private final List domainOwnerships;
- private int index = -1;
-
- public DomainMappingsTableModel(final PageState state) {
- final DomainRepository domainRepository = CdiUtil.createCdiUtil()
- .findBean(DomainRepository.class);
- final Domain domain = domainRepository.findById(
- Long.parseLong(selectedDomainId.getSelectedKey(state)),
- "Domain.withOwners").get();
-
- domainOwnerships = new ArrayList<>(domain.getOwners());
-
- domainOwnerships.sort((o1, o2) -> {
- return ((Long)o1.getOwnerOrder()).compareTo(o2.getOwnerOrder());
- });
- }
-
- @Override
- public int getColumnCount() {
- return 3;
- }
-
- @Override
- public boolean nextRow() {
- index++;
- return index < domainOwnerships.size();
- }
-
- @Override
- public Object getElementAt(final int columnIndex) {
- switch(columnIndex) {
- case COL_APPLICATION:
- return domainOwnerships.get(index).getOwner().getPrimaryUrl();
- case COL_REMOVE:
- return new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.mappings.remove",
- ADMIN_BUNDLE));
- default:
- throw new IllegalArgumentException(
- "Not a valid column index");
- }
- }
-
- @Override
- public Object getKeyAt(final int columnIndex) {
- return domainOwnerships.get(index).getOwner().getObjectId();
- }
-
- }
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainPropertySheetModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainPropertySheetModel.java
deleted file mode 100644
index 22f6e4621..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainPropertySheetModel.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.PropertySheetModel;
-import com.arsdigita.globalization.GlobalizedMessage;
-
-import org.libreccm.categorization.Domain;
-
-import java.util.Arrays;
-import java.util.Iterator;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-class DomainPropertySheetModel implements PropertySheetModel {
-
- private static enum DomainProperty {
- DOMAIN_KEY,
- URI,
- VERSION,
- RELEASED
- }
-
- private final Domain selectedDomain;
- private final Iterator propertyIterator;
- private DomainProperty currentProperty;
-
- public DomainPropertySheetModel(final Domain selectedDomain) {
- this.selectedDomain = selectedDomain;
- propertyIterator = Arrays.asList(DomainProperty.values()).iterator();
- }
-
- @Override
- public boolean nextRow() {
- if (selectedDomain == null) {
- return false;
- }
-
- if (propertyIterator.hasNext()) {
- currentProperty = propertyIterator.next();
- return true;
- } else {
- return false;
- }
- }
-
- @Override
- public String getLabel() {
- return currentProperty.toString();
- }
-
- private GlobalizedMessage generatedGlobalizedLabel(
- final DomainProperty property) {
-
- final String key = String.join(
- "",
- "ui.admin.categories.domain.property_sheet.",
- property.toString().toLowerCase());
- return new GlobalizedMessage(key, ADMIN_BUNDLE);
- }
-
- @Override
- public GlobalizedMessage getGlobalizedLabel() {
- return generatedGlobalizedLabel(currentProperty);
- }
-
- @Override
- public String getValue() {
- switch (currentProperty) {
- case DOMAIN_KEY:
- return selectedDomain.getDomainKey();
- case URI:
- return selectedDomain.getUri();
- case VERSION:
- return selectedDomain.getVersion();
- case RELEASED:
- if (selectedDomain.getReleased() == null) {
- return "";
- } else {
- return String.format("%tY-%Jens Pelzetter
- */
-class DomainPropertySheetModelBuilder
- extends LockableImpl
- implements PropertySheetModelBuilder {
-
- private final ParameterSingleSelectionModel selectedDomainId;
-
- public DomainPropertySheetModelBuilder(
- final ParameterSingleSelectionModel selectedDomainId) {
-
- this.selectedDomainId = selectedDomainId;
-
- }
-
- @Override
- public PropertySheetModel makeModel(final PropertySheet sheet,
- final PageState state) {
- final String domainIdStr = selectedDomainId.getSelectedKey(state);
- final Domain selectedDomain;
- if (Strings.isBlank(domainIdStr)) {
- selectedDomain = null;
- } else {
- final DomainRepository domainRepository = CdiUtil.createCdiUtil()
- .findBean(DomainRepository.class);
- selectedDomain = domainRepository.findById(Long.parseLong(
- domainIdStr)).get();
- }
-
- return new DomainPropertySheetModel(selectedDomain);
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainTitleForm.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainTitleForm.java
deleted file mode 100644
index 06a511584..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainTitleForm.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.ActionLink;
-import com.arsdigita.bebop.BoxPanel;
-import com.arsdigita.bebop.Form;
-import com.arsdigita.bebop.FormData;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.SaveCancelSection;
-import com.arsdigita.bebop.form.TextField;
-import com.arsdigita.globalization.GlobalizedMessage;
-
-import org.apache.logging.log4j.util.Strings;
-import org.libreccm.categorization.Domain;
-import org.libreccm.categorization.DomainRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-
-import java.util.Locale;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-class DomainTitleForm extends Form {
-
- private static final String LOCALIZED_DOMAIN_TITLE = "title";
-
- private final CategoriesTab categoriesTab;
-
- private final TextField title;
- private final SaveCancelSection saveCancelSection;
-
- public DomainTitleForm(
- final CategoriesTab categoriesTab,
- final ParameterSingleSelectionModel selectedDomainId,
- final ParameterSingleSelectionModel selectedLanguage) {
-
- super("domainTitleForm", new BoxPanel(BoxPanel.VERTICAL));
-
- this.categoriesTab = categoriesTab;
-
- final ActionLink backLink = new ActionLink(new GlobalizedMessage(
- "ui.admin.categories.domain.title.edit.back", ADMIN_BUNDLE));
- backLink.addActionListener(e -> {
- categoriesTab.hideDomainTitleForm(e.getPageState());
- });
- add(backLink);
-
- final Label heading = new Label(e -> {
- final PageState state = e.getPageState();
-
- final DomainRepository domainRepository = CdiUtil.createCdiUtil()
- .findBean(DomainRepository.class);
- final Domain selectedDomain = domainRepository.findById(
- Long.parseLong(selectedDomainId.getSelectedKey(state))).get();
-
- final Locale selectedLocale = new Locale(selectedLanguage
- .getSelectedKey(state));
-
- final Label target = (Label) e.getTarget();
-
- if (selectedDomain.getTitle().hasValue(selectedLocale)) {
- target.setLabel(new GlobalizedMessage(
- "ui.admin.categories.domain.title.edit_for_lang",
- ADMIN_BUNDLE,
- new String[]{selectedDomain.getDomainKey(),
- selectedLocale.toString()}));
- } else {
- target.setLabel(new GlobalizedMessage(
- "ui.admin.categories.domain.title.add_for_lang",
- ADMIN_BUNDLE,
- new String[]{selectedDomain.getDomainKey(),
- selectedLocale.toString()}));
- }
- });
- heading.setClassAttr("heading");
- add(heading);
-
- title = new TextField(LOCALIZED_DOMAIN_TITLE);
- title.setLabel(new GlobalizedMessage(
- "ui.admin.categories.domain.title.label", ADMIN_BUNDLE));
- add(title);
-
- saveCancelSection = new SaveCancelSection();
- add(saveCancelSection);
-
- addInitListener(e -> {
- final PageState state = e.getPageState();
-
- final DomainRepository domainRepository = CdiUtil.createCdiUtil()
- .findBean(DomainRepository.class);
- final Domain selectedDomain = domainRepository.findById(
- Long.parseLong(selectedDomainId.getSelectedKey(state))).get();
-
- final Locale selectedLocale = new Locale(selectedLanguage
- .getSelectedKey(state));
-
- if (selectedDomain.getTitle().hasValue(selectedLocale)) {
- title.setValue(state, selectedDomain.getTitle().getValue(
- selectedLocale));
- }
- });
-
- addValidationListener(e -> {
-
- if (saveCancelSection.getSaveButton().isSelected(
- e.getPageState())) {
- final FormData data = e.getFormData();
-
- final String titleData = data.getString(LOCALIZED_DOMAIN_TITLE);
-
- if (Strings.isBlank(titleData)) {
- data.addError(
- LOCALIZED_DOMAIN_TITLE,
- new GlobalizedMessage(
- "ui.admin.categories.domain.title.error.not_blank",
- ADMIN_BUNDLE));
- }
- }
- });
-
- addProcessListener(e -> {
- final PageState state = e.getPageState();
-
- if (saveCancelSection.getSaveButton().isSelected(state)) {
- final DomainRepository domainRepository = CdiUtil
- .createCdiUtil()
- .findBean(DomainRepository.class);
- final Domain selectedDomain = domainRepository.findById(
- Long.parseLong(selectedDomainId.getSelectedKey(state)))
- .get();
-
- final Locale selectedLocale = new Locale(selectedLanguage
- .getSelectedKey(state));
-
- final String titleData = e.getFormData().getString(
- LOCALIZED_DOMAIN_TITLE);
-
- selectedDomain.getTitle().putValue(selectedLocale, titleData);
- domainRepository.save(selectedDomain);
- }
-
- categoriesTab.hideDomainTitleForm(state);
- });
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainTitleTable.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainTitleTable.java
deleted file mode 100644
index 50e40134f..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainTitleTable.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.Component;
-import com.arsdigita.bebop.ControlLink;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.Table;
-import com.arsdigita.bebop.Text;
-import com.arsdigita.bebop.event.TableActionEvent;
-import com.arsdigita.bebop.event.TableActionListener;
-import com.arsdigita.bebop.table.TableCellRenderer;
-import com.arsdigita.bebop.table.TableColumn;
-import com.arsdigita.bebop.table.TableColumnModel;
-import com.arsdigita.bebop.table.TableModel;
-import com.arsdigita.bebop.table.TableModelBuilder;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.util.LockableImpl;
-
-import org.libreccm.categorization.Domain;
-import org.libreccm.categorization.DomainRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-class DomainTitleTable extends Table {
-
- private static final int COL_LOCALE = 0;
- private static final int COL_VALUE = 1;
- private static final int COL_EDIT = 2;
- private static final int COL_DEL = 3;
-
- private final CategoriesTab categoriesTab;
- private final ParameterSingleSelectionModel selectedDomainId;
- private final ParameterSingleSelectionModel selectedLanguage;
-
- public DomainTitleTable(
- final CategoriesTab categoriesTab,
- final ParameterSingleSelectionModel selectedDomainId,
- final ParameterSingleSelectionModel selectedLanguage) {
-
- super();
-
- this.categoriesTab = categoriesTab;
- this.selectedDomainId = selectedDomainId;
- this.selectedLanguage = selectedLanguage;
-
- setIdAttr("domainTitleTable");
-
- setEmptyView(new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.title.none", ADMIN_BUNDLE)));
-
- final TableColumnModel columnModel = getColumnModel();
- columnModel.add(new TableColumn(
- COL_LOCALE,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.title.col_lang",
- ADMIN_BUNDLE))));
- columnModel.add(new TableColumn(
- COL_VALUE,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.title.col_value",
- ADMIN_BUNDLE))));
- columnModel.add(new TableColumn(
- COL_EDIT,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.title.col_edit",
- ADMIN_BUNDLE))));
- columnModel.add(new TableColumn(
- COL_DEL,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.title.col_del",
- ADMIN_BUNDLE))));
-
- columnModel.get(COL_EDIT).setCellRenderer(new TableCellRenderer() {
-
- @Override
- public Component getComponent(final Table table,
- final PageState state,
- final Object value,
- final boolean isSelected,
- final Object key,
- final int row,
- final int column) {
- return new ControlLink((Component) value);
- }
-
- });
-
- columnModel.get(COL_DEL).setCellRenderer(new TableCellRenderer() {
-
- @Override
- public Component getComponent(final Table table,
- final PageState state,
- final Object value,
- final boolean isSelected,
- final Object key,
- final int row,
- final int column) {
- if (value == null) {
- return new Text("");
- } else {
- final ControlLink link = new ControlLink((Component) value);
- link.setConfirmation(new GlobalizedMessage(
- "ui.admin.categories.domain_details.title.del_confirm",
- ADMIN_BUNDLE));
- return link;
- }
- }
-
- });
-
- addTableActionListener(new TableActionListener() {
-
- @Override
- public void cellSelected(final TableActionEvent event) {
- final PageState state = event.getPageState();
-
- switch (event.getColumn()) {
- case COL_EDIT:
- selectedLanguage.setSelectedKey(state,
- event.getRowKey());
- categoriesTab.showDomainTitleForm(state);
- break;
- case COL_DEL:
- final Locale locale = new Locale((String) event
- .getRowKey());
- final DomainRepository domainRepository = CdiUtil
- .createCdiUtil().
- findBean(DomainRepository.class);
- final Domain domain = domainRepository.findById(
- Long.parseLong(selectedDomainId
- .getSelectedKey(state))).get();
- domain.getTitle().removeValue(locale);
-
- domainRepository.save(domain);
-
- break;
- }
- }
-
- @Override
- public void headSelected(final TableActionEvent e) {
- //Nothing
- }
-
- });
-
- setModelBuilder(new DomainTitleTableModelBuilder());
- }
-
- private class DomainTitleTableModelBuilder
- extends LockableImpl
- implements TableModelBuilder {
-
- @Override
- public TableModel makeModel(final Table table, final PageState state) {
- table.getRowSelectionModel().clearSelection(state);
-
- return new DomainTitleTableModel(state);
- }
-
- }
-
- private class DomainTitleTableModel implements TableModel {
-
- private final Domain selectedDomain;
- private final List locales;
- private int index = -1;
-
- public DomainTitleTableModel(final PageState state) {
- final DomainRepository domainRepository = CdiUtil.createCdiUtil()
- .findBean(DomainRepository.class);
- selectedDomain = domainRepository.findById(
- Long.parseLong(selectedDomainId.getSelectedKey(state))).get();
-
- locales = new ArrayList<>();
- locales.addAll(selectedDomain.getTitle().getAvailableLocales());
- locales.sort((l1, l2) -> {
- return l1.toString().compareTo(l2.toString());
- });
- }
-
- @Override
- public int getColumnCount() {
- return 4;
- }
-
- @Override
- public boolean nextRow() {
- index++;
- return index < locales.size();
- }
-
- @Override
- public Object getElementAt(final int columnIndex) {
- final Locale locale = locales.get(index);
-
- switch (columnIndex) {
- case COL_LOCALE:
- return locale.toString();
- case COL_VALUE:
- return selectedDomain.getTitle().getValue(locale);
- case COL_EDIT:
- return new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.title.edit",
- ADMIN_BUNDLE
- ));
- case COL_DEL:
- return new Label(new GlobalizedMessage(
- "ui.admin.categories.domain_details.title.del",
- ADMIN_BUNDLE
- ));
- default:
- throw new IllegalArgumentException(
- "Not a valid column index");
- }
- }
-
- @Override
- public Object getKeyAt(final int columnIndex) {
- return locales.get(index);
- }
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainsTable.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainsTable.java
deleted file mode 100644
index 8b2aca591..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/DomainsTable.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.Component;
-import com.arsdigita.bebop.ControlLink;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.Table;
-import com.arsdigita.bebop.Text;
-import com.arsdigita.bebop.event.TableActionEvent;
-import com.arsdigita.bebop.event.TableActionListener;
-import com.arsdigita.bebop.form.TextField;
-import com.arsdigita.bebop.table.TableCellRenderer;
-import com.arsdigita.bebop.table.TableColumn;
-import com.arsdigita.bebop.table.TableColumnModel;
-import com.arsdigita.bebop.table.TableModel;
-import com.arsdigita.bebop.table.TableModelBuilder;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.util.LockableImpl;
-
-import java.util.List;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.util.Strings;
-import org.libreccm.categorization.Domain;
-import org.libreccm.categorization.DomainRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-import org.libreccm.l10n.GlobalizationHelper;
-import org.libreccm.l10n.LocalizedString;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-class DomainsTable extends Table {
-
- private final static Logger LOGGER = LogManager.getLogger(
- DomainsTable.class);
-
- private static final int COL_DOMAIN_KEY = 0;
- private static final int COL_DOMAIN_URI = 1;
- private static final int COL_DOMAIN_TITLE = 2;
- private static final int COL_DOMAIN_DEL = 3;
-
- private final CategoriesTab categoriesTab;
- private final ParameterSingleSelectionModel selectedDomainId;
- private final TextField domainsFilter;
-
- public DomainsTable(
- final CategoriesTab categoriesTab,
- final ParameterSingleSelectionModel selectedDomainId,
- final TextField domainsFilter) {
- super();
-
- setIdAttr("domainsTable");
-
- this.categoriesTab = categoriesTab;
- this.selectedDomainId = selectedDomainId;
- this.domainsFilter = domainsFilter;
-
- setEmptyView(new Label(new GlobalizedMessage(
- "ui.admin.categories.domains.none",
- ADMIN_BUNDLE)));
-
- final TableColumnModel columnModel = getColumnModel();
- columnModel.add(new TableColumn(
- COL_DOMAIN_KEY,
- new Label(new GlobalizedMessage(
- "ui,admin.categories.domains.table.col_key",
- ADMIN_BUNDLE))));
- columnModel.add(new TableColumn(
- COL_DOMAIN_URI,
- new Label(new GlobalizedMessage(
- "ui,admin.categories.domains.table.col_uri",
- ADMIN_BUNDLE))));
- columnModel.add(new TableColumn(
- COL_DOMAIN_TITLE,
- new Label(new GlobalizedMessage(
- "ui,admin.categories.domains.table.col_title",
- ADMIN_BUNDLE))));
- columnModel.add(new TableColumn(
- COL_DOMAIN_DEL,
- new Label(new GlobalizedMessage(
- "ui,admin.categories.domains.table.col_del",
- ADMIN_BUNDLE))));
-
- columnModel.get(COL_DOMAIN_KEY).setCellRenderer(
- new TableCellRenderer() {
-
- @Override
- public Component getComponent(final Table table,
- final PageState state,
- final Object value,
- final boolean isSelected,
- final Object key,
- final int row,
- final int column) {
- return new ControlLink((String) value);
- }
-
- });
-
- columnModel.get(COL_DOMAIN_TITLE).setCellRenderer(
- new TableCellRenderer() {
-
- @Override
- public Component getComponent(final Table table,
- final PageState state,
- final Object value,
- final boolean isSelected,
- final Object key,
- final int row,
- final int column) {
- final LocalizedString title = (LocalizedString) value;
- final GlobalizationHelper globalizationHelper = CdiUtil.
- createCdiUtil().findBean(GlobalizationHelper.class);
- return new Text(title.getValue(globalizationHelper.
- getNegotiatedLocale()));
- }
-
- });
-
- columnModel.get(COL_DOMAIN_DEL).setCellRenderer(
- new TableCellRenderer() {
-
- @Override
- public Component getComponent(final Table table,
- final PageState state,
- final Object value,
- final boolean isSelected,
- final Object key,
- final int row,
- final int column) {
- if (value == null) {
- return new Text("");
- } else {
- final ControlLink link = new ControlLink((Component) value);
- link.setConfirmation(new GlobalizedMessage(
- "ui.admin.categories.domains.table.del_confirm",
- ADMIN_BUNDLE));
- return link;
- }
- }
-
- });
-
- addTableActionListener(new TableActionListener() {
-
- @Override
- public void cellSelected(final TableActionEvent event) {
- final PageState state = event.getPageState();
-
- switch (event.getColumn()) {
- case COL_DOMAIN_KEY:
- selectedDomainId.setSelectedKey(state,
- event.getRowKey());
- categoriesTab.showDomainDetails(state);
- break;
- case COL_DOMAIN_DEL:
- break;
- }
- }
-
- @Override
- public void headSelected(final TableActionEvent event) {
- //Nothing
- }
-
- });
-
- setModelBuilder(new DomainsTableModelBuilder());
- }
-
- private class DomainsTableModelBuilder extends LockableImpl
- implements TableModelBuilder {
-
- @Override
- public TableModel makeModel(final Table table,
- final PageState state) {
- table.getRowSelectionModel().clearSelection(state);
-
- return new DomainsTableModel(state);
- }
-
- }
-
- private class DomainsTableModel implements TableModel {
-
- private final List domains;
- private int index = -1;
-
- public DomainsTableModel(final PageState state) {
- LOGGER.debug("Creating DomainsTableModel");
- final String filterTerm = (String) domainsFilter.getValue(state);
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final DomainRepository domainRepository = cdiUtil.findBean(
- DomainRepository.class);
- if (Strings.isBlank(filterTerm)) {
- domains = domainRepository.findAll("Domain.withOwners");
- LOGGER.debug("Found {} domains in the database.",
- domains.size());
- } else {
- domains = domainRepository.search(filterTerm);
- LOGGER.debug("Found {} domain which match the "
- + "filter \"{}\".",
- domains.size(),
- filterTerm);
- }
- }
-
- @Override
- public int getColumnCount() {
- return 4;
- }
-
- @Override
- public boolean nextRow() {
- index++;
- return index < domains.size();
- }
-
- @Override
- public Object getElementAt(final int columnIndex) {
- LOGGER.debug("Getting element for index {}, column {}...",
- index,
- columnIndex);
- final Domain domain = domains.get(index);
- switch (columnIndex) {
- case COL_DOMAIN_KEY:
- return domain.getDomainKey();
- case COL_DOMAIN_URI:
- return domain.getUri();
- case COL_DOMAIN_TITLE:
- return domain.getTitle();
- case COL_DOMAIN_DEL:
- if (isDeleteable(domain)) {
- return new Label(new GlobalizedMessage(
- "ui.admin.categories.domains.table.del",
- ADMIN_BUNDLE));
- } else {
- return null;
- }
- default:
- throw new IllegalArgumentException(
- "Not a valid column index");
- }
-
- }
-
- @Override
- public Object getKeyAt(final int columnIndex) {
- return domains.get(index).getObjectId();
- }
-
- private boolean isDeleteable(final Domain domain) {
- return !(domain.getOwners() != null && !domain.getOwners().isEmpty());
- }
-
- }
-
-}
diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/SubCategoriesTable.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/SubCategoriesTable.java
deleted file mode 100644
index 91af7e41a..000000000
--- a/ccm-core/src/main/java/com/arsdigita/ui/admin/categories/SubCategoriesTable.java
+++ /dev/null
@@ -1,354 +0,0 @@
-/*
- * Copyright (C) 2016 LibreCCM Foundation.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package com.arsdigita.ui.admin.categories;
-
-import com.arsdigita.bebop.Component;
-import com.arsdigita.bebop.ControlLink;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.ParameterSingleSelectionModel;
-import com.arsdigita.bebop.Table;
-import com.arsdigita.bebop.Text;
-import com.arsdigita.bebop.event.TableActionEvent;
-import com.arsdigita.bebop.event.TableActionListener;
-import com.arsdigita.bebop.table.TableCellRenderer;
-import com.arsdigita.bebop.table.TableColumn;
-import com.arsdigita.bebop.table.TableColumnModel;
-import com.arsdigita.bebop.table.TableModel;
-import com.arsdigita.bebop.table.TableModelBuilder;
-import com.arsdigita.globalization.GlobalizedMessage;
-import com.arsdigita.util.LockableImpl;
-
-import org.libreccm.categorization.Categorization;
-import org.libreccm.categorization.Category;
-import org.libreccm.categorization.CategoryManager;
-import org.libreccm.categorization.CategoryRepository;
-import org.libreccm.cdi.utils.CdiUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import static com.arsdigita.ui.admin.AdminUiConstants.*;
-
-/**
- *
- * @author Jens Pelzetter
- */
-public class SubCategoriesTable extends Table {
-
- private static final int COL_NAME = 0;
- private static final int COL_UP = 1;
- private static final int COL_DOWN = 2;
- private static final int COL_EDIT = 3;
- private static final int COL_DEL = 4;
-
- private final CategoriesTab categoriesTab;
- private final ParameterSingleSelectionModel selectedCategoryId;
-
- public SubCategoriesTable(
- final CategoriesTab categoriesTab,
- final ParameterSingleSelectionModel selectedCategoryId) {
-
- super();
-
- this.categoriesTab = categoriesTab;
- this.selectedCategoryId = selectedCategoryId;
-
- setIdAttr("subCategoriesTable");
-
- setEmptyView(new Label(new GlobalizedMessage(
- "ui.admin.categories.category.no_subcategories",
- ADMIN_BUNDLE)));
-
- final TableColumnModel columnModel = getColumnModel();
- columnModel.add(new TableColumn(
- COL_NAME,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.category.subcategories.col_name",
- ADMIN_BUNDLE))
- ));
- columnModel.add(new TableColumn(
- COL_UP,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.category.subcategories.col_up",
- ADMIN_BUNDLE))
- ));
- columnModel.add(new TableColumn(
- COL_DOWN,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.category.subcategories.col_down",
- ADMIN_BUNDLE))
- ));
- columnModel.add(new TableColumn(
- COL_EDIT,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.category.subcategories.col_edit",
- ADMIN_BUNDLE))
- ));
- columnModel.add(new TableColumn(
- COL_DEL,
- new Label(new GlobalizedMessage(
- "ui.admin.categories.category.subcategories.col_del",
- ADMIN_BUNDLE))
- ));
-
- columnModel.get(COL_UP).setCellRenderer(new TableCellRenderer() {
-
- @Override
- public Component getComponent(final Table table,
- final PageState state,
- final Object value,
- final boolean isSelected,
- final Object key,
- final int row,
- final int column) {
- if (value == null) {
- return new Text("");
- } else {
- return new ControlLink((Component) value);
- }
- }
-
- });
-
- columnModel.get(COL_DOWN).setCellRenderer(new TableCellRenderer() {
-
- @Override
- public Component getComponent(final Table table,
- final PageState state,
- final Object value,
- final boolean isSelected,
- final Object key,
- final int row,
- final int column) {
- if (value == null) {
- return new Text("");
- } else {
- return new ControlLink((Component) value);
- }
- }
-
- });
-
- columnModel.get(COL_EDIT).setCellRenderer(new TableCellRenderer() {
-
- @Override
- public Component getComponent(final Table table,
- final PageState state,
- final Object value,
- final boolean isSelected,
- final Object key,
- final int row,
- final int column) {
- return new ControlLink((Component) value);
- }
-
- });
-
- columnModel.get(COL_DEL).setCellRenderer(new TableCellRenderer() {
-
- @Override
- public Component getComponent(final Table table,
- final PageState state,
- final Object value,
- final boolean isSelected,
- final Object key,
- final int row,
- final int column) {
- if (value == null) {
- return new Text("");
- } else {
- final ControlLink link = new ControlLink((Component) value);
- link.setConfirmation(new GlobalizedMessage(
- "ui.admin.categories.category.subcategories.del_confirm",
- ADMIN_BUNDLE));
- return link;
- }
- }
-
- });
-
- addTableActionListener(new TableActionListener() {
-
- @Override
- public void cellSelected(final TableActionEvent event) {
- final PageState state = event.getPageState();
-
- switch (event.getColumn()) {
- case COL_UP: {
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final CategoryRepository categoryRepo = cdiUtil
- .findBean(CategoryRepository.class);
- final CategoryManager categoryManager = cdiUtil
- .findBean(CategoryManager.class);
- final Category parentCategory = categoryRepo.findById(
- Long.parseLong(selectedCategoryId.getSelectedKey(
- state))).get();
- final Category subCategory = categoryRepo.findById(Long
- .parseLong((String) event.getRowKey())).get();
- categoryManager.decreaseCategoryOrder(subCategory,
- parentCategory);
- break;
- }
- case COL_DOWN: {
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final CategoryRepository categoryRepo = cdiUtil
- .findBean(CategoryRepository.class);
- final CategoryManager categoryManager = cdiUtil
- .findBean(CategoryManager.class);
- final Category parentCategory = categoryRepo.findById(
- Long.parseLong(selectedCategoryId.getSelectedKey(
- state))).get();
- final Category subCategory = categoryRepo.findById(Long
- .parseLong((String) event.getRowKey())).get();
- categoryManager.increaseCategoryOrder(subCategory,
- parentCategory);
- break;
- }
- case COL_EDIT: {
- selectedCategoryId.setSelectedKey(state,
- event.getRowKey());
- categoriesTab.showCategoryEditForm(state);
- break;
- }
- case COL_DEL: {
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final CategoryRepository categoryRepo = cdiUtil
- .findBean(CategoryRepository.class);
- final Category category = categoryRepo.findById(Long
- .parseLong((String) event.getRowKey())).get();
- categoryRepo.delete(category);
- break;
- }
- }
- }
-
- @Override
- public void headSelected(final TableActionEvent event) {
- //Nothing
- }
-
- });
-
- setModelBuilder(new SubCategoriesTableModelBuilder());
- }
-
- private class SubCategoriesTableModelBuilder
- extends LockableImpl
- implements TableModelBuilder {
-
- @Override
- public TableModel makeModel(final Table table, final PageState state) {
- table.getRowSelectionModel().clearSelection(state);
-
- return new SubCategoriesTableModel(state);
- }
-
- }
-
- private class SubCategoriesTableModel implements TableModel {
-
- private final List subCategories;
- private int index = -1;
-
- public SubCategoriesTableModel(final PageState state) {
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final CategoriesController controller = cdiUtil
- .findBean(CategoriesController.class);
- final CategoryRepository categoryRepo = CdiUtil.
- createCdiUtil().findBean(CategoryRepository.class);
- final Category category = categoryRepo.findById(Long.parseLong(
- selectedCategoryId.getSelectedKey(state))).get();
-
- subCategories = controller.getSubCategories(category);
-
-// subCategories.sort((c1, c2) -> {
-// return Long.compare(c1.getCategoryOrder(),
-// c2.getCategoryOrder());
-// });
- }
-
- @Override
- public int getColumnCount() {
- return 5;
- }
-
- @Override
- public boolean nextRow() {
- index++;
- return index < subCategories.size();
- }
-
- @Override
- public Object getElementAt(final int columnIndex) {
- final Category subCategory = subCategories.get(index);
-
- switch (columnIndex) {
- case COL_NAME:
- return subCategory.getName();
- case COL_UP:
- if (index == 0) {
- return null;
- } else {
- return new Label(new GlobalizedMessage(
- "ui.admin.categories.category.subcategories.up",
- ADMIN_BUNDLE));
- }
- case COL_DOWN:
- if (index == subCategories.size() - 1) {
- return null;
- } else {
- return new Label(new GlobalizedMessage(
- "ui.admin.categories.category.subcategories.down",
- ADMIN_BUNDLE));
- }
- case COL_EDIT:
- return new Label(new GlobalizedMessage(
- "ui.admin.categories.category.subcategories.edit",
- ADMIN_BUNDLE));
- case COL_DEL:
- if (isDeletable(subCategory)) {
- return new Label(new GlobalizedMessage(
- "ui.admin.categories.category.subcategories.del",
- ADMIN_BUNDLE));
- } else {
- return null;
- }
- default:
- throw new IllegalArgumentException(
- "Not a valid column index");
- }
- }
-
- private boolean isDeletable(final Category category) {
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final CategoriesController controller = cdiUtil
- .findBean(CategoriesController.class);
-
- return controller.isDeletable(category);
- }
-
- @Override
- public Object getKeyAt(final int columnIndex) {
- return subCategories.get(index).getObjectId();
- }
-
- }
-
-}
diff --git a/ccm-core/src/main/java/org/libreccm/core/CcmCore.java b/ccm-core/src/main/java/org/libreccm/core/CcmCore.java
index 35dfbe403..d7475c7b2 100644
--- a/ccm-core/src/main/java/org/libreccm/core/CcmCore.java
+++ b/ccm-core/src/main/java/org/libreccm/core/CcmCore.java
@@ -18,18 +18,15 @@
*/
package org.libreccm.core;
-import com.arsdigita.ui.admin.AdminServlet;
import com.arsdigita.ui.admin.AdminUiConstants;
import com.arsdigita.ui.admin.applications.AdminApplicationCreator;
import com.arsdigita.ui.admin.applications.AdminApplicationSetup;
import com.arsdigita.ui.login.LoginApplicationCreator;
import com.arsdigita.ui.login.LoginApplicationSetup;
import com.arsdigita.ui.login.LoginConstants;
-import com.arsdigita.ui.login.LoginServlet;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.libreccm.admin.ui.AdminJsfApplicationCreator;
import org.libreccm.admin.ui.AdminJsfApplicationSetup;
import org.libreccm.modules.CcmModule;
import org.libreccm.modules.InitEvent;
@@ -52,43 +49,42 @@ import java.util.Properties;
*
* @author Jens Pelzetter
*/
-@Module(applicationTypes = {
- @ApplicationType(name = LoginConstants.LOGIN_APP_TYPE,
- descBundle = "com.arsdigita.ui.login.LoginResources",
- singleton = true,
- creator = LoginApplicationCreator.class,
- servlet = LoginServlet.class),
- @ApplicationType(name = AdminUiConstants.ADMIN_APP_TYPE,
- descBundle = "com.arsdigita.ui.admin.AdminResources",
- singleton = true,
- creator = AdminApplicationCreator.class,
- servlet = AdminServlet.class),
- @ApplicationType(name = "org.libreccm.ui.admin.AdminFaces",
- descBundle = "com.arsdigita.ui.admin.AdminResources",
- singleton = true,
- creator = AdminJsfApplicationCreator.class,
- servletPath = "/admin-jsf/admin.xhtml")
+@Module(
+ applicationTypes = {
+ @ApplicationType(
+ name = LoginConstants.LOGIN_APP_TYPE,
+ descBundle = "com.arsdigita.ui.login.LoginResources",
+ singleton = true,
+ creator = LoginApplicationCreator.class
+ ),
+ @ApplicationType(
+ name = AdminUiConstants.ADMIN_APP_TYPE,
+ descBundle = "com.arsdigita.ui.admin.AdminResources",
+ singleton = true,
+ creator = AdminApplicationCreator.class
+ )
},
- pageModelComponentModels = {},
- configurations = {
- com.arsdigita.bebop.BebopConfig.class,
- com.arsdigita.dispatcher.DispatcherConfig.class,
- com.arsdigita.globalization.GlobalizationConfig.class,
- com.arsdigita.kernel.KernelConfig.class,
- com.arsdigita.kernel.security.SecurityConfig.class,
- com.arsdigita.mail.MailConfig.class,
- com.arsdigita.notification.NotificationConfig.class,
- com.arsdigita.templating.TemplatingConfig.class,
- com.arsdigita.ui.UIConfig.class,
- com.arsdigita.web.WebConfig.class,
- com.arsdigita.workflow.simple.WorkflowConfig.class,
- com.arsdigita.xml.XmlConfig.class,
- com.arsdigita.xml.formatters.DateFormatterConfig.class,
- org.libreccm.configuration.ExampleConfiguration.class,
- org.libreccm.files.CcmFilesConfiguration.class,
- org.libreccm.search.SearchConfig.class,
- org.libreccm.security.EmailTemplates.class,
- org.libreccm.security.OneTimeAuthConfig.class,})
+ configurations = {
+ com.arsdigita.bebop.BebopConfig.class,
+ com.arsdigita.dispatcher.DispatcherConfig.class,
+ com.arsdigita.globalization.GlobalizationConfig.class,
+ com.arsdigita.kernel.KernelConfig.class,
+ com.arsdigita.kernel.security.SecurityConfig.class,
+ com.arsdigita.mail.MailConfig.class,
+ com.arsdigita.notification.NotificationConfig.class,
+ com.arsdigita.templating.TemplatingConfig.class,
+ com.arsdigita.ui.UIConfig.class,
+ com.arsdigita.web.WebConfig.class,
+ com.arsdigita.workflow.simple.WorkflowConfig.class,
+ com.arsdigita.xml.XmlConfig.class,
+ com.arsdigita.xml.formatters.DateFormatterConfig.class,
+ org.libreccm.configuration.ExampleConfiguration.class,
+ org.libreccm.files.CcmFilesConfiguration.class,
+ org.libreccm.search.SearchConfig.class,
+ org.libreccm.security.EmailTemplates.class,
+ org.libreccm.security.OneTimeAuthConfig.class
+ }
+)
public class CcmCore implements CcmModule {
private static final Logger LOGGER = LogManager.getLogger(CcmCore.class);
diff --git a/ccm-core/src/main/java/org/libreccm/web/ApplicationType.java b/ccm-core/src/main/java/org/libreccm/web/ApplicationType.java
index 81498bf77..0452e9ef5 100644
--- a/ccm-core/src/main/java/org/libreccm/web/ApplicationType.java
+++ b/ccm-core/src/main/java/org/libreccm/web/ApplicationType.java
@@ -18,10 +18,6 @@
*/
package org.libreccm.web;
-import com.arsdigita.ui.admin.applications.AbstractAppInstanceForm;
-import com.arsdigita.ui.admin.applications.AbstractAppSettingsPane;
-import com.arsdigita.ui.admin.applications.DefaultApplicationInstanceForm;
-import com.arsdigita.ui.admin.applications.DefaultApplicationSettingsPane;
import org.libreccm.ui.admin.applications.ApplicationController;
import org.libreccm.ui.admin.applications.DefaultApplicationController;
@@ -34,7 +30,7 @@ import java.lang.annotation.RetentionPolicy;
/**
* Descriptor for application types.
- *
+ *
* @author Jens Pelzetter
*/
@Retention(RetentionPolicy.RUNTIME)
@@ -118,12 +114,6 @@ public @interface ApplicationType {
@SuppressWarnings("rawtypes") // Can't specify type here, otherwise problems in using classes.
Class extends ApplicationCreator> creator();
- @Deprecated
- Class extends AbstractAppInstanceForm> instanceForm() default DefaultApplicationInstanceForm.class;
-
- @Deprecated
- Class extends AbstractAppSettingsPane> settingsPane() default DefaultApplicationSettingsPane.class;
-
Class extends ApplicationController> applicationController() default DefaultApplicationController.class;
}