Bug im ApplicationTree behoben: Wenn eine neue Instanz einer Application angelegt wurde, tauchte diese zwar im Baum auf. Das Auswählen des entsprechenden Knotens hatte aber keine Auswirkung.
git-svn-id: https://svn.libreccm.org/ccm/trunk@2293 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
856eaf827e
commit
5b765e977b
|
|
@ -153,31 +153,46 @@ public class ApplicationsAdministrationTab extends BoxPanel implements AdminCons
|
||||||
|
|
||||||
final MultiInstanceApplicationPane<?> appPane = new MultiInstanceApplicationPane(applicationType, createForm);
|
final MultiInstanceApplicationPane<?> appPane = new MultiInstanceApplicationPane(applicationType, createForm);
|
||||||
appPanes.put(applicationType.getApplicationObjectType(), appPane);
|
appPanes.put(applicationType.getApplicationObjectType(), appPane);
|
||||||
|
createInstancePane(applicationType, appManagers);
|
||||||
|
|
||||||
final ApplicationCollection instances = Application.retrieveAllApplications(
|
// final ApplicationCollection instances = Application.retrieveAllApplications(
|
||||||
applicationType.getApplicationObjectType());
|
// applicationType.getApplicationObjectType());
|
||||||
|
//
|
||||||
while (instances.next()) {
|
// while (instances.next()) {
|
||||||
createInstancePane(instances.getApplication(), appManagers);
|
// createInstancePane(instances.getApplication(), appManagers);
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createInstancePane(final Application application,
|
private void createInstancePane(final ApplicationType applicationType,
|
||||||
final Map<String, ApplicationManager<?>> managementForms) {
|
final Map<String, ApplicationManager<?>> managementForms) {
|
||||||
final ApplicationManager<?> manager = managementForms.get(application.getClass().getName());
|
final ApplicationManager<?> manager = managementForms.get(applicationType.getApplicationObjectType());
|
||||||
|
|
||||||
final ApplicationInstancePane instPane;
|
final ApplicationInstancePane instPane;
|
||||||
if (manager == null) {
|
if (manager == null) {
|
||||||
instPane = new ApplicationInstancePane(application, null);
|
instPane = new ApplicationInstancePane(null);
|
||||||
} else {
|
} else {
|
||||||
instPane = new ApplicationInstancePane(
|
instPane = new ApplicationInstancePane(managementForms.get(applicationType.getApplicationObjectType()).
|
||||||
application,
|
getApplicationAdminForm());
|
||||||
managementForms.get(application.getClass().getName()).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<String, ApplicationManager<?>> 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
|
@Override
|
||||||
public void register(final Page page) {
|
public void register(final Page page) {
|
||||||
super.register(page);
|
super.register(page);
|
||||||
|
|
@ -224,10 +239,22 @@ public class ApplicationsAdministrationTab extends BoxPanel implements AdminCons
|
||||||
setPaneVisible(pane, state);
|
setPaneVisible(pane, state);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Selected key is the name of a instance pane
|
// Selected key is the name of a instance pane
|
||||||
final ApplicationInstancePane pane = instancePanes.get(selectedKey);
|
// 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) {
|
if (pane != null) {
|
||||||
setPaneVisible(pane, state);
|
setPaneVisible(pane, state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,47 +21,64 @@ package com.arsdigita.ui.admin.applications;
|
||||||
import com.arsdigita.bebop.Label;
|
import com.arsdigita.bebop.Label;
|
||||||
import com.arsdigita.bebop.PropertySheet;
|
import com.arsdigita.bebop.PropertySheet;
|
||||||
import com.arsdigita.bebop.SegmentedPanel;
|
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.ui.admin.GlobalizationUtil;
|
||||||
|
|
||||||
import com.arsdigita.web.Application;
|
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.
|
* application (if any) and the path. Also it contains a form for editing settings specific to the instance.
|
||||||
*
|
*
|
||||||
* @author Jens Pelzetter <jens@jp-digital.de>
|
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class ApplicationInstancePane extends SegmentedPanel {
|
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();
|
super();
|
||||||
|
this.appAdminPane = appAdminPane;
|
||||||
|
|
||||||
final PropertySheet appInstInfoPanel = new PropertySheet(new ApplicationInstancePropertySheetModelBuilder(
|
modelBuilder = new ApplicationInstancePropertySheetModelBuilder();
|
||||||
appInstance));
|
final PropertySheet appInstInfoPanel = new PropertySheet(modelBuilder);
|
||||||
|
|
||||||
addSegment(new Label(GlobalizationUtil.globalize(
|
addSegment(new Label(GlobalizationUtil.globalize(
|
||||||
"ui.admin.applications.ApplicationInstancePane.info.heading")),
|
"ui.admin.applications.ApplicationInstancePane.info.heading")),
|
||||||
appInstInfoPanel);
|
appInstInfoPanel);
|
||||||
|
|
||||||
if (appAdminPane == null) {
|
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(
|
addSegment(new Label(GlobalizationUtil.globalize(
|
||||||
"ui.admin.MultiInstanceApplicationPane.manage.heading")),
|
"ui.admin.MultiInstanceApplicationPane.manage.heading")),
|
||||||
new Label(GlobalizationUtil.globalize(
|
noAdminPaneLabel);
|
||||||
"ui.admin.MultiInstancePane.manage.no_instance_admin_pane_found",
|
|
||||||
new String[]{appInstance.getApplicationType().getApplicationObjectType()})));
|
|
||||||
} else {
|
} else {
|
||||||
appAdminPane.setAppInstance(appInstance);
|
//appAdminPane.setAppInstance(appInstance);
|
||||||
addSegment(new Label(GlobalizationUtil.globalize(
|
addSegment(new Label(GlobalizationUtil.globalize(
|
||||||
"ui.admin.applications.ApplicationInstancePane.manage.heading")),
|
"ui.admin.applications.ApplicationInstancePane.manage.heading")),
|
||||||
appAdminPane);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,17 +33,18 @@ import com.arsdigita.web.Application;
|
||||||
*/
|
*/
|
||||||
public class ApplicationInstancePropertySheetModelBuilder extends LockableImpl implements PropertySheetModelBuilder {
|
public class ApplicationInstancePropertySheetModelBuilder extends LockableImpl implements PropertySheetModelBuilder {
|
||||||
|
|
||||||
private final Application application;
|
private Application application;
|
||||||
|
|
||||||
public ApplicationInstancePropertySheetModelBuilder(final Application application) {
|
public ApplicationInstancePropertySheetModelBuilder() {
|
||||||
super();
|
super();
|
||||||
this.application = application;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public PropertySheetModel makeModel(final PropertySheet sheet, final PageState state) {
|
public PropertySheetModel makeModel(final PropertySheet sheet, final PageState state) {
|
||||||
return new ApplicationInstancePropertySheetModel(application);
|
return new ApplicationInstancePropertySheetModel(application);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setApplication(final Application application) {
|
||||||
|
this.application = application;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue