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 new file mode 100644 index 000000000..ee55ee3c5 --- /dev/null +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/AbstractApplicationTypePane.java @@ -0,0 +1,89 @@ +/* + * 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.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 SimpleContainer pane; + private final PropertySheet propertySheet; + + public AbstractApplicationTypePane() { + super(BoxPanel.VERTICAL); + + 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); + + + } + + 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/ApplicationTypePropertySheetModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModel.java new file mode 100644 index 000000000..c602fe7bb --- /dev/null +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationTypePropertySheetModel.java @@ -0,0 +1,72 @@ +/* + * 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 org.libreccm.web.ApplicationType; + +/** + * + * @author Jens Pelzetter + */ +public class ApplicationTypePropertySheetModel implements PropertySheetModel { + + private static enum AppTypeProperty { + TITLE, + DESC, + APP_CLASS, + SINGLETON, + SERVLET_CLASS, + SERVLET_PATH, + } + + private final ApplicationType applicationType; + private AppTypeProperty currentProperty; + + public ApplicationTypePropertySheetModel( + final ApplicationType applicationType) { + + this.applicationType = applicationType; + + } + + @Override + public boolean nextRow() { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public String getLabel() { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public GlobalizedMessage getGlobalizedLabel() { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public String getValue() { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + + +} 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 index e26f22ae4..bf282b7b6 100644 --- 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 @@ -51,9 +51,9 @@ import static com.arsdigita.ui.admin.AdminUiConstants.*; public class ApplicationsAdministrationTab extends LayoutPanel { private final Tree applicationTree; - private final Map appPanes + private final Map appPanes = new HashMap<>(); - private final Map instancePanes + private final Map instancePanes = new HashMap<>(); private final BoxPanel appPanel; @@ -96,11 +96,11 @@ public class ApplicationsAdministrationTab extends LayoutPanel { appPanel = new BoxPanel(); appPanel.setClassAttr("main"); - for (Map.Entry entry : appPanes.entrySet()) { + for (Map.Entry entry : appPanes.entrySet()) { appPanel.add(entry.getValue()); } - for (Map.Entry entry : instancePanes. + for (Map.Entry entry : instancePanes. entrySet()) { appPanel.add(entry.getValue()); } @@ -114,11 +114,11 @@ public class ApplicationsAdministrationTab extends LayoutPanel { final String appObjectType = applicationType.name(); final ApplicationManager manager = appManagers.get(appObjectType); - final SingletonApplicationPane pane; + final LegacySingletonApplicationPane pane; if (manager == null) { - pane = new SingletonApplicationPane(applicationType, null); + pane = new LegacySingletonApplicationPane(applicationType, null); } else { - pane = new SingletonApplicationPane( + pane = new LegacySingletonApplicationPane( applicationType, appManagers.get(appObjectType). getApplicationAdminForm()); } @@ -138,8 +138,8 @@ public class ApplicationsAdministrationTab extends LayoutPanel { createForm = appManager.getApplicationCreateForm(); } - final MultiInstanceApplicationPane appPane - = new MultiInstanceApplicationPane( + final LegacyMultiInstanceApplicationPane appPane + = new LegacyMultiInstanceApplicationPane( applicationType, createForm); appPanes.put(applicationType.name(), appPane); createInstancePane(applicationType, appManagers); @@ -150,11 +150,11 @@ public class ApplicationsAdministrationTab extends LayoutPanel { final Map> managementForms) { final ApplicationManager manager = managementForms.get( applicationType.name()); - final ApplicationInstancePane instPane; + final LegacyApplicationInstancePane instPane; if (manager == null) { - instPane = new ApplicationInstancePane(new Placeholder()); + instPane = new LegacyApplicationInstancePane(new Placeholder()); } else { - instPane = new ApplicationInstancePane(managementForms.get( + instPane = new LegacyApplicationInstancePane(managementForms.get( applicationType.name()). getApplicationAdminForm()); } @@ -166,10 +166,10 @@ public class ApplicationsAdministrationTab extends LayoutPanel { public void register(final Page page) { super.register(page); - for (Map.Entry entry : appPanes.entrySet()) { + for (Map.Entry entry : appPanes.entrySet()) { page.setVisibleDefault(entry.getValue(), false); } - for (Map.Entry entry : instancePanes. + for (Map.Entry entry : instancePanes. entrySet()) { page.setVisibleDefault(entry.getValue(), false); } @@ -177,10 +177,10 @@ public class ApplicationsAdministrationTab extends LayoutPanel { private void setPaneVisible(final SimpleContainer pane, final PageState state) { - for (Map.Entry entry : appPanes.entrySet()) { + for (Map.Entry entry : appPanes.entrySet()) { entry.getValue().setVisible(state, false); } - for (Map.Entry entry : instancePanes. + for (Map.Entry entry : instancePanes. entrySet()) { entry.getValue().setVisible(state, false); } @@ -203,7 +203,7 @@ public class ApplicationsAdministrationTab extends LayoutPanel { if (selectedKey != null) { if (selectedKey.contains(".")) { // Selected key is a classname and therefore the key of an ApplicationPane - final BaseApplicationPane pane = appPanes.get(selectedKey); + final LegacyBaseApplicationPane pane = appPanes.get(selectedKey); if (pane != null) { setPaneVisible(pane, state); } @@ -216,7 +216,7 @@ public class ApplicationsAdministrationTab extends LayoutPanel { final CcmApplication application = appRepo .retrieveApplicationForPath(selectedKey); - final ApplicationInstancePane pane; + final LegacyApplicationInstancePane pane; if (application != null) { pane = instancePanes.get(application.getClass(). getName()); 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 index 1a4f07d6f..093fbec09 100644 --- 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 @@ -18,7 +18,10 @@ */ package com.arsdigita.ui.admin.applications; +import com.arsdigita.bebop.Page; +import com.arsdigita.bebop.ParameterSingleSelectionModel; import com.arsdigita.bebop.Tree; +import com.arsdigita.bebop.parameters.StringParameter; import com.arsdigita.toolbox.ui.LayoutPanel; /** @@ -26,19 +29,44 @@ import com.arsdigita.toolbox.ui.LayoutPanel; * @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; - + public ApplicationsTab() { super(); - + setClassAttr("sidebarNavPanel"); - + + selectedAppTypeParam = new StringParameter("selectedAppType"); + selectedAppType = new ParameterSingleSelectionModel<>( + selectedAppTypeParam); + + selectedAppInstanceParam = new StringParameter("selectedAppInstance"); + selectedAppInstance = new ParameterSingleSelectionModel<>( + selectedAppInstanceParam); + applicationTree = new Tree(new ApplicationTreeModelBuilder()); - + applicationTree.addChangeListener(e -> { + + }); + setLeft(applicationTree); - - + } - + + @Override + public void register(final Page page) { + super.register(page); + + page.addGlobalStateParam(selectedAppTypeParam); + page.addGlobalStateParam(selectedAppInstanceParam); + + } + } diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInfoPropertySheetModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModel.java similarity index 96% rename from ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInfoPropertySheetModel.java rename to ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModel.java index fc395241d..1f7ad3ceb 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInfoPropertySheetModel.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModel.java @@ -35,10 +35,10 @@ import org.libreccm.web.CcmApplication; * {@link ApplicationType} using a {@link PropertySheet}. * * @author Jens Pelzetter - * @version $Id: ApplicationInfoPropertySheetModel.java 2220 2013-06-19 - * 15:26:58Z jensp $ + * @version $Id: LegacyApplicationInfoPropertySheetModel.java 2220 2013-06-19 + 15:26:58Z jensp $ */ -public class ApplicationInfoPropertySheetModel implements PropertySheetModel { +public class LegacyApplicationInfoPropertySheetModel implements PropertySheetModel { private static final int APP_TITLE = 0; private static final int APP_CLASS = 1; @@ -48,7 +48,7 @@ public class ApplicationInfoPropertySheetModel implements PropertySheetModel { private final ApplicationType applicationType; private int currentIndex = -1; - public ApplicationInfoPropertySheetModel( + public LegacyApplicationInfoPropertySheetModel( final ApplicationType applicationType) { this.applicationType = applicationType; } diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInfoPropertySheetModelBuilder.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModelBuilder.java similarity index 82% rename from ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInfoPropertySheetModelBuilder.java rename to ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModelBuilder.java index b93d7ac95..194d83ffb 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInfoPropertySheetModelBuilder.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInfoPropertySheetModelBuilder.java @@ -26,17 +26,17 @@ import com.arsdigita.util.LockableImpl; import org.libreccm.web.ApplicationType; /** - * {@link PropertySheetModelBuilder} implementation for the the {@link ApplicationInfoPropertySheetModel}. + * {@link PropertySheetModelBuilder} implementation for the the {@link LegacyApplicationInfoPropertySheetModel}. * * @author Jens Pelzetter - * @version $Id: ApplicationInfoPropertySheetModelBuilder.java 2219 2013-06-19 08:16:11Z jensp $ + * @version $Id: LegacyApplicationInfoPropertySheetModelBuilder.java 2219 2013-06-19 08:16:11Z jensp $ */ -public class ApplicationInfoPropertySheetModelBuilder +public class LegacyApplicationInfoPropertySheetModelBuilder extends LockableImpl implements PropertySheetModelBuilder { private final ApplicationType applicationType; - public ApplicationInfoPropertySheetModelBuilder( + public LegacyApplicationInfoPropertySheetModelBuilder( final ApplicationType applicationType) { super(); this.applicationType = applicationType; @@ -45,7 +45,7 @@ extends LockableImpl implements PropertySheetModelBuilder { @Override public PropertySheetModel makeModel(final PropertySheet sheet, final PageState state) { - return new ApplicationInfoPropertySheetModel(applicationType); + return new LegacyApplicationInfoPropertySheetModel(applicationType); } } diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstancePane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePane.java similarity index 92% rename from ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstancePane.java rename to ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePane.java index 19a23f5d7..47dde0d1f 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstancePane.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePane.java @@ -36,19 +36,19 @@ import org.libreccm.web.CcmApplication; * @author Jens Pelzetter * @version $Id$ */ -public class ApplicationInstancePane extends SegmentedPanel { +public class LegacyApplicationInstancePane extends SegmentedPanel { private CcmApplication application; private final ApplicationInstanceAwareContainer appAdminPane; - private final ApplicationInstancePropertySheetModelBuilder modelBuilder; + private final LegacyApplicationInstancePropertySheetModelBuilder modelBuilder; - public ApplicationInstancePane( + public LegacyApplicationInstancePane( final ApplicationInstanceAwareContainer appAdminPane) { super(); this.appAdminPane = appAdminPane; - modelBuilder = new ApplicationInstancePropertySheetModelBuilder(); + modelBuilder = new LegacyApplicationInstancePropertySheetModelBuilder(); final PropertySheet appInstInfoPanel = new PropertySheet(modelBuilder); addSegment(new Label(GlobalizationUtil.globalize( diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstancePropertySheetModel.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePropertySheetModel.java similarity index 93% rename from ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstancePropertySheetModel.java rename to ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePropertySheetModel.java index 0bda05ffd..4b26cd68a 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstancePropertySheetModel.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePropertySheetModel.java @@ -29,9 +29,9 @@ import org.libreccm.web.CcmApplication; * using a {@link PropertySheet}. * * @author Jens Pelzetter - * @version $Id: ApplicationInstancePropertySheetModel.java 2923 2014-10-27 18:55:26Z jensp $ + * @version $Id: LegacyApplicationInstancePropertySheetModel.java 2923 2014-10-27 18:55:26Z jensp $ */ -public class ApplicationInstancePropertySheetModel implements PropertySheetModel { +public class LegacyApplicationInstancePropertySheetModel implements PropertySheetModel { private static final int INST_TITLE = 0; private static final int INST_PARENT = 1; @@ -41,7 +41,7 @@ public class ApplicationInstancePropertySheetModel implements PropertySheetModel private int currentIndex = -1; - public ApplicationInstancePropertySheetModel(final CcmApplication application) { + public LegacyApplicationInstancePropertySheetModel(final CcmApplication application) { this.application = application; } diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstancePropertySheetModelBuilder.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePropertySheetModelBuilder.java similarity index 81% rename from ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstancePropertySheetModelBuilder.java rename to ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePropertySheetModelBuilder.java index 141dafba8..0bcc1e78c 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/ApplicationInstancePropertySheetModelBuilder.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyApplicationInstancePropertySheetModelBuilder.java @@ -26,23 +26,23 @@ import com.arsdigita.util.LockableImpl; import org.libreccm.web.CcmApplication; /** - * {@link PropertySheetModelBuilder} implementation for the {@link ApplicationInstancePropertySheetModel}. + * {@link PropertySheetModelBuilder} implementation for the {@link LegacyApplicationInstancePropertySheetModel}. * * @author Jens Pelzetter - * @version $Id: ApplicationInstancePropertySheetModelBuilder.java 2293 2013-08-05 11:00:18Z jensp $ + * @version $Id: LegacyApplicationInstancePropertySheetModelBuilder.java 2293 2013-08-05 11:00:18Z jensp $ */ -public class ApplicationInstancePropertySheetModelBuilder +public class LegacyApplicationInstancePropertySheetModelBuilder extends LockableImpl implements PropertySheetModelBuilder { private CcmApplication application; - public ApplicationInstancePropertySheetModelBuilder() { + public LegacyApplicationInstancePropertySheetModelBuilder() { super(); } @Override public PropertySheetModel makeModel(final PropertySheet sheet, final PageState state) { - return new ApplicationInstancePropertySheetModel(application); + return new LegacyApplicationInstancePropertySheetModel(application); } public void setApplication(final CcmApplication application) { diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/BaseApplicationPane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyBaseApplicationPane.java similarity index 88% rename from ccm-core/src/main/java/com/arsdigita/ui/admin/applications/BaseApplicationPane.java rename to ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyBaseApplicationPane.java index a98720a36..ac88994cc 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/BaseApplicationPane.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyBaseApplicationPane.java @@ -31,13 +31,13 @@ import org.libreccm.web.ApplicationType; * @author Jens Pelzetter * @version $Id$ */ -public class BaseApplicationPane extends SegmentedPanel { +public class LegacyBaseApplicationPane extends SegmentedPanel { - public BaseApplicationPane(final ApplicationType applicationType) { + public LegacyBaseApplicationPane(final ApplicationType applicationType) { super(); final PropertySheet appInfoPanel = new PropertySheet( - new ApplicationInfoPropertySheetModelBuilder( + new LegacyApplicationInfoPropertySheetModelBuilder( applicationType)); addSegment(new Label(GlobalizationUtil.globalize( "ui.admin.applications.ApplicationInfoSection.heading")), diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/MultiInstanceApplicationPane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyMultiInstanceApplicationPane.java similarity index 96% rename from ccm-core/src/main/java/com/arsdigita/ui/admin/applications/MultiInstanceApplicationPane.java rename to ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyMultiInstanceApplicationPane.java index afb284025..7954b2d3f 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/MultiInstanceApplicationPane.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacyMultiInstanceApplicationPane.java @@ -38,7 +38,7 @@ import org.libreccm.web.CcmApplication; /** * Pane for multi instance applications. Additional to the data provided by - * {@link BaseApplicationPane} it shows a table of all instances of the + * {@link LegacyBaseApplicationPane} it shows a table of all instances of the * application type and a form for creating new instances of the application * type. * @@ -46,14 +46,14 @@ import org.libreccm.web.CcmApplication; * @author Jens Pelzetter * @version $Id$ */ -public class MultiInstanceApplicationPane - extends BaseApplicationPane { +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 MultiInstanceApplicationPane(final ApplicationType applicationType, + public LegacyMultiInstanceApplicationPane(final ApplicationType applicationType, final Form createForm) { super(applicationType); diff --git a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/SingletonApplicationPane.java b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacySingletonApplicationPane.java similarity index 90% rename from ccm-core/src/main/java/com/arsdigita/ui/admin/applications/SingletonApplicationPane.java rename to ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacySingletonApplicationPane.java index f43caca8f..8a0bf3943 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/SingletonApplicationPane.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/admin/applications/LegacySingletonApplicationPane.java @@ -29,9 +29,9 @@ import org.libreccm.web.ApplicationType; * @author Jens Pelzetter * @version $Id$ */ -public class SingletonApplicationPane extends BaseApplicationPane { +public class LegacySingletonApplicationPane extends LegacyBaseApplicationPane { - public SingletonApplicationPane(final ApplicationType applicationType, final SimpleContainer appAdminPane) { + public LegacySingletonApplicationPane(final ApplicationType applicationType, final SimpleContainer appAdminPane) { super(applicationType); if (appAdminPane == null) { 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 e6dd34210..e98c88588 100644 --- a/ccm-core/src/main/java/org/libreccm/web/ApplicationType.java +++ b/ccm-core/src/main/java/org/libreccm/web/ApplicationType.java @@ -20,6 +20,7 @@ package org.libreccm.web; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; @@ -29,18 +30,60 @@ import javax.servlet.http.HttpServlet; */ @Retention(RetentionPolicy.RUNTIME) public @interface ApplicationType { - + + /** + * The name of the application type. + * + * @return + */ String name(); - + + /** + * A description of the application type. + * + * @return + */ String description(); - + + /** + * The application type class. Default is {@link CcmApplication}. Most + * application types will no need to extend these class and can leave the + * default has it is. + * + * @return + */ Class applicationClass() default CcmApplication.class; - + + /** + * Is the application type a singleton application? + * + * @return + */ boolean singleton() default false; - + + /** + * Path to the primary Servlet of the application type. If the servlet class + * is provided and is annotated with the {@link WebServlet} annotation the + * path can be determined from the annotation. + * + * @return + */ String servletPath() default ""; - + + /** + * The primary servlet class of the application type. + * + * @return + */ Class servlet() default HttpServlet.class; - + + /** + * The implementation of the {@link ApplicationCreator} interface for the + * application type which is used to create the objects representing the + * application instances. + * + * @return + */ Class creator(); + } diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties index 4bfefb51b..b56dcccb8 100644 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources.properties @@ -525,3 +525,4 @@ ui.admin.categories.category.property_sheet.abstract=Abstract? ui.admin.categories.category.name.enabled=Enabled? ui.admin.categories.category.name.visible=Visible? ui.admin.categories.category.name.abstract=Abstract? +ui.admin.appliations.type_pane.info_sheet=About diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties index c3db94e2c..9d433f461 100644 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_de.properties @@ -528,3 +528,4 @@ ui.admin.categories.category.property_sheet.abstract=Abstrakt? ui.admin.categories.category.name.enabled=Aktiviert? ui.admin.categories.category.name.visible=Sichtbar? ui.admin.categories.category.name.abstract=Abstrakt? +ui.admin.appliations.type_pane.info_sheet=\u00dcber diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties index 690aa6120..676270c84 100755 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_en.properties @@ -521,3 +521,4 @@ ui.admin.categories.category.property_sheet.abstract=Abstract? ui.admin.categories.category.name.enabled=Enabled? ui.admin.categories.category.name.visible=Visible? ui.admin.categories.category.name.abstract=Abstract? +ui.admin.appliations.type_pane.info_sheet=About diff --git a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties index 976dd24cb..2091ee0bb 100755 --- a/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties +++ b/ccm-core/src/main/resources/com/arsdigita/ui/admin/AdminResources_fr.properties @@ -512,3 +512,4 @@ ui.admin.categories.category.property_sheet.abstract=Abstract? ui.admin.categories.category.name.enabled=Enabled? ui.admin.categories.category.name.visible=Visible? ui.admin.categories.category.name.abstract=Abstract? +ui.admin.appliations.type_pane.info_sheet=About