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);
|
||||
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<String, ApplicationManager<?>> 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<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
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 <jens@jp-digital.de>
|
||||
* @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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue