From 5b765e977b760f87a078cffd1daa409cefd43f5c Mon Sep 17 00:00:00 2001 From: jensp Date: Mon, 5 Aug 2013 11:00:18 +0000 Subject: [PATCH] =?UTF-8?q?Bug=20im=20ApplicationTree=20behoben:=20Wenn=20?= =?UTF-8?q?eine=20neue=20Instanz=20einer=20Application=20angelegt=20wurde,?= =?UTF-8?q?=20tauchte=20diese=20zwar=20im=20Baum=20auf.=20Das=20Ausw=C3=A4?= =?UTF-8?q?hlen=20des=20entsprechenden=20Knotens=20hatte=20aber=20keine=20?= =?UTF-8?q?Auswirkung.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.libreccm.org/ccm/trunk@2293 8810af33-2d31-482b-a856-94f89814c4df --- .../admin/ApplicationsAdministrationTab.java | 63 +++++++++++++------ .../applications/ApplicationInstancePane.java | 45 ++++++++----- ...tionInstancePropertySheetModelBuilder.java | 11 ++-- 3 files changed, 82 insertions(+), 37 deletions(-) diff --git a/ccm-core/src/com/arsdigita/ui/admin/ApplicationsAdministrationTab.java b/ccm-core/src/com/arsdigita/ui/admin/ApplicationsAdministrationTab.java index dfe6144af..bb8a6f1c3 100644 --- a/ccm-core/src/com/arsdigita/ui/admin/ApplicationsAdministrationTab.java +++ b/ccm-core/src/com/arsdigita/ui/admin/ApplicationsAdministrationTab.java @@ -153,31 +153,46 @@ public class ApplicationsAdministrationTab extends BoxPanel implements AdminCons final MultiInstanceApplicationPane appPane = new MultiInstanceApplicationPane(applicationType, createForm); appPanes.put(applicationType.getApplicationObjectType(), appPane); + createInstancePane(applicationType, appManagers); - final ApplicationCollection instances = Application.retrieveAllApplications( - applicationType.getApplicationObjectType()); - - while (instances.next()) { - createInstancePane(instances.getApplication(), appManagers); - } +// final ApplicationCollection instances = Application.retrieveAllApplications( +// applicationType.getApplicationObjectType()); +// +// while (instances.next()) { +// createInstancePane(instances.getApplication(), appManagers); +// } } - private void createInstancePane(final Application application, + private void createInstancePane(final ApplicationType applicationType, final Map> managementForms) { - final ApplicationManager manager = managementForms.get(application.getClass().getName()); - + final ApplicationManager manager = managementForms.get(applicationType.getApplicationObjectType()); final ApplicationInstancePane instPane; if (manager == null) { - instPane = new ApplicationInstancePane(application, null); + instPane = new ApplicationInstancePane(null); } else { - instPane = new ApplicationInstancePane( - application, - managementForms.get(application.getClass().getName()).getApplicationAdminForm()); + instPane = new ApplicationInstancePane(managementForms.get(applicationType.getApplicationObjectType()). + getApplicationAdminForm()); } - //instancePanes.put(application.getClass().getName(), instPane); - instancePanes.put(application.getPath(), instPane); + + instancePanes.put(applicationType.getApplicationObjectType(), instPane); } +// private void createInstancePane(final Application application, +// final Map> managementForms) { +// final ApplicationManager manager = managementForms.get(application.getClass().getName()); +// +// final ApplicationInstancePane instPane; +// if (manager == null) { +// instPane = new ApplicationInstancePane(application, null); +// } else { +// instPane = new ApplicationInstancePane( +// application, +// managementForms.get(application.getClass().getName()).getApplicationAdminForm()); +// } +// //instancePanes.put(application.getClass().getName(), instPane); +// instancePanes.put(application.getPath(), instPane); +// } + @Override public void register(final Page page) { super.register(page); @@ -224,10 +239,22 @@ public class ApplicationsAdministrationTab extends BoxPanel implements AdminCons setPaneVisible(pane, state); } } else { - // Selected key is the name of a instance pane - final ApplicationInstancePane pane = instancePanes.get(selectedKey); + // Selected key is the name of a instance pane +// final ApplicationInstancePane pane = instancePanes.get(selectedKey); + + final ApplicationCollection applications = Application.retrieveAllApplications(); + applications.addEqualsFilter(Application.PRIMARY_URL, selectedKey + "/"); + final ApplicationInstancePane pane; + if (applications.next()) { + final Application application = applications.getApplication(); + pane = instancePanes.get(application.getClass().getName()); + pane.setApplication(application); + } else { + pane = null; + } + if (pane != null) { - setPaneVisible(pane, state); + setPaneVisible(pane, state); } } } diff --git a/ccm-core/src/com/arsdigita/ui/admin/applications/ApplicationInstancePane.java b/ccm-core/src/com/arsdigita/ui/admin/applications/ApplicationInstancePane.java index e978609a8..d7d24b3f9 100644 --- a/ccm-core/src/com/arsdigita/ui/admin/applications/ApplicationInstancePane.java +++ b/ccm-core/src/com/arsdigita/ui/admin/applications/ApplicationInstancePane.java @@ -21,47 +21,64 @@ package com.arsdigita.ui.admin.applications; import com.arsdigita.bebop.Label; import com.arsdigita.bebop.PropertySheet; import com.arsdigita.bebop.SegmentedPanel; -import com.arsdigita.persistence.SessionManager; +import com.arsdigita.bebop.event.PrintEvent; +import com.arsdigita.bebop.event.PrintListener; import com.arsdigita.ui.admin.GlobalizationUtil; import com.arsdigita.web.Application; /** - * This pane shows informations about a specific instance of a multi instance application, like title, parent + * 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 ApplicationInstancePane extends SegmentedPanel { - public ApplicationInstancePane(final Application appInstance, final ApplicationInstanceAwareContainer appAdminPane) { + private Application application; + private final ApplicationInstanceAwareContainer appAdminPane; + private final ApplicationInstancePropertySheetModelBuilder modelBuilder; + + public ApplicationInstancePane(final ApplicationInstanceAwareContainer appAdminPane) { super(); + this.appAdminPane = appAdminPane; - final PropertySheet appInstInfoPanel = new PropertySheet(new ApplicationInstancePropertySheetModelBuilder( - appInstance)); + modelBuilder = new ApplicationInstancePropertySheetModelBuilder(); + 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() { + 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().getApplicationObjectType()})); + } + }); + addSegment(new Label(GlobalizationUtil.globalize( "ui.admin.MultiInstanceApplicationPane.manage.heading")), - new Label(GlobalizationUtil.globalize( - "ui.admin.MultiInstancePane.manage.no_instance_admin_pane_found", - new String[]{appInstance.getApplicationType().getApplicationObjectType()}))); + noAdminPaneLabel); } else { - appAdminPane.setAppInstance(appInstance); + //appAdminPane.setAppInstance(appInstance); addSegment(new Label(GlobalizationUtil.globalize( "ui.admin.applications.ApplicationInstancePane.manage.heading")), appAdminPane); } - - if (SessionManager.getSession().getTransactionContext().inTxn()) { - SessionManager.getSession().getTransactionContext().commitTxn(); - } } + public void setApplication(final Application application) { + this.application = application; + appAdminPane.setAppInstance(application); + modelBuilder.setApplication(application); + } } diff --git a/ccm-core/src/com/arsdigita/ui/admin/applications/ApplicationInstancePropertySheetModelBuilder.java b/ccm-core/src/com/arsdigita/ui/admin/applications/ApplicationInstancePropertySheetModelBuilder.java index f60091ca5..80cc94802 100644 --- a/ccm-core/src/com/arsdigita/ui/admin/applications/ApplicationInstancePropertySheetModelBuilder.java +++ b/ccm-core/src/com/arsdigita/ui/admin/applications/ApplicationInstancePropertySheetModelBuilder.java @@ -33,17 +33,18 @@ import com.arsdigita.web.Application; */ public class ApplicationInstancePropertySheetModelBuilder extends LockableImpl implements PropertySheetModelBuilder { - private final Application application; + private Application application; - public ApplicationInstancePropertySheetModelBuilder(final Application application) { - super(); - this.application = application; + public ApplicationInstancePropertySheetModelBuilder() { + super(); } public PropertySheetModel makeModel(final PropertySheet sheet, final PageState state) { return new ApplicationInstancePropertySheetModel(application); } - + public void setApplication(final Application application) { + this.application = application; + } }