Avoiding NPE if there is no pane for managing instances of an application type yet (Ticket #2031)
git-svn-id: https://svn.libreccm.org/ccm/trunk@2528 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
d3aa1fdb1a
commit
8aa2a7ea21
|
|
@ -135,3 +135,4 @@ ui.admin.user.userinfo.name=Name:
|
|||
ui.admin.user.userinfo.screenname=Username:
|
||||
ui.admin.user.userinfo.primaryemail=Email:
|
||||
ui.admin.groups.name=Name:
|
||||
ui.admin.applications.placeholder=There is no administration panel for instances of this application type yet.
|
||||
|
|
|
|||
|
|
@ -135,3 +135,4 @@ ui.admin.user.userinfo.name=Name:
|
|||
ui.admin.user.userinfo.screenname=Benutzername:
|
||||
ui.admin.user.userinfo.primaryemail=E-Mail:
|
||||
ui.admin.groups.name=Name:
|
||||
ui.admin.applications.placeholder=F\u00fcr Applikationen dieses Typs gibt es noch keine Verwaltungsoberfl\u00e4che.
|
||||
|
|
|
|||
|
|
@ -135,3 +135,4 @@ ui.admin.user.userinfo.name=
|
|||
ui.admin.user.userinfo.screenname=
|
||||
ui.admin.user.userinfo.primaryemail=
|
||||
ui.admin.groups.name=
|
||||
ui.admin.applications.placeholder=
|
||||
|
|
|
|||
|
|
@ -121,3 +121,4 @@ ui.admin.user.userinfo.name=
|
|||
ui.admin.user.userinfo.screenname=
|
||||
ui.admin.user.userinfo.primaryemail=
|
||||
ui.admin.groups.name=
|
||||
ui.admin.applications.placeholder=
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ package com.arsdigita.ui.admin;
|
|||
|
||||
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;
|
||||
|
|
@ -27,6 +28,7 @@ import com.arsdigita.bebop.Tree;
|
|||
import com.arsdigita.bebop.event.ChangeEvent;
|
||||
import com.arsdigita.bebop.event.ChangeListener;
|
||||
import com.arsdigita.toolbox.ui.LayoutPanel;
|
||||
import com.arsdigita.ui.admin.applications.ApplicationInstanceAwareContainer;
|
||||
import com.arsdigita.ui.admin.applications.ApplicationInstancePane;
|
||||
import com.arsdigita.ui.admin.applications.ApplicationManager;
|
||||
import com.arsdigita.ui.admin.applications.BaseApplicationPane;
|
||||
|
|
@ -49,10 +51,10 @@ import java.util.Map;
|
|||
public class ApplicationsAdministrationTab extends LayoutPanel implements AdminConstants {
|
||||
|
||||
private final Tree applicationTree;
|
||||
private final Map<String, BaseApplicationPane> appPanes =
|
||||
new HashMap<String, BaseApplicationPane>();
|
||||
private final Map<String, ApplicationInstancePane> instancePanes =
|
||||
new HashMap<String, ApplicationInstancePane>();
|
||||
private final Map<String, BaseApplicationPane> appPanes
|
||||
= new HashMap<String, BaseApplicationPane>();
|
||||
private final Map<String, ApplicationInstancePane> instancePanes
|
||||
= new HashMap<String, ApplicationInstancePane>();
|
||||
private final BoxPanel appPanel;
|
||||
|
||||
/**
|
||||
|
|
@ -72,12 +74,11 @@ public class ApplicationsAdministrationTab extends LayoutPanel implements AdminC
|
|||
|
||||
setLeft(applicationTree);
|
||||
|
||||
|
||||
final ApplicationTypeCollection applicationTypes = ApplicationType.
|
||||
retrieveAllApplicationTypes();
|
||||
retrieveAllApplicationTypes();
|
||||
|
||||
final Map<String, ApplicationManager<?>> appManagers = ApplicationManagers.getInstance().
|
||||
getApplicationManagers();
|
||||
getApplicationManagers();
|
||||
|
||||
while (applicationTypes.next()) {
|
||||
if (applicationTypes.getApplicationType().isSingleton()) {
|
||||
|
|
@ -111,7 +112,7 @@ public class ApplicationsAdministrationTab extends LayoutPanel implements AdminC
|
|||
pane = new SingletonApplicationPane(applicationType, null);
|
||||
} else {
|
||||
pane = new SingletonApplicationPane(
|
||||
applicationType, appManagers.get(appObjectType).getApplicationAdminForm());
|
||||
applicationType, appManagers.get(appObjectType).getApplicationAdminForm());
|
||||
}
|
||||
appPanes.put(appObjectType, pane);
|
||||
}
|
||||
|
|
@ -120,7 +121,7 @@ public class ApplicationsAdministrationTab extends LayoutPanel implements AdminC
|
|||
private void createAppPane(final ApplicationType applicationType,
|
||||
final Map<String, ApplicationManager<?>> appManagers) {
|
||||
final ApplicationManager<?> appManager = appManagers.get(applicationType.
|
||||
getApplicationObjectType());
|
||||
getApplicationObjectType());
|
||||
final Form createForm;
|
||||
if (appManager == null) {
|
||||
createForm = null;
|
||||
|
|
@ -129,7 +130,7 @@ public class ApplicationsAdministrationTab extends LayoutPanel implements AdminC
|
|||
}
|
||||
|
||||
final MultiInstanceApplicationPane<?> appPane = new MultiInstanceApplicationPane(
|
||||
applicationType, createForm);
|
||||
applicationType, createForm);
|
||||
appPanes.put(applicationType.getApplicationObjectType(), appPane);
|
||||
createInstancePane(applicationType, appManagers);
|
||||
}
|
||||
|
|
@ -137,14 +138,14 @@ public class ApplicationsAdministrationTab extends LayoutPanel implements AdminC
|
|||
private void createInstancePane(final ApplicationType applicationType,
|
||||
final Map<String, ApplicationManager<?>> managementForms) {
|
||||
final ApplicationManager<?> manager = managementForms.get(applicationType.
|
||||
getApplicationObjectType());
|
||||
getApplicationObjectType());
|
||||
final ApplicationInstancePane instPane;
|
||||
if (manager == null) {
|
||||
instPane = new ApplicationInstancePane(null);
|
||||
instPane = new ApplicationInstancePane(new Placeholder());
|
||||
} else {
|
||||
instPane = new ApplicationInstancePane(managementForms.get(applicationType.
|
||||
getApplicationObjectType()).
|
||||
getApplicationAdminForm());
|
||||
getApplicationObjectType()).
|
||||
getApplicationAdminForm());
|
||||
}
|
||||
|
||||
instancePanes.put(applicationType.getApplicationObjectType(), instPane);
|
||||
|
|
@ -192,7 +193,7 @@ public class ApplicationsAdministrationTab extends LayoutPanel implements AdminC
|
|||
setPaneVisible(pane, state);
|
||||
}
|
||||
} else {
|
||||
// Selected key is the name of a instance pane
|
||||
// Selected key is the name of a instance pane
|
||||
final ApplicationCollection applications = Application.retrieveAllApplications();
|
||||
applications.addEqualsFilter(Application.PRIMARY_URL, selectedKey + "/");
|
||||
final ApplicationInstancePane pane;
|
||||
|
|
@ -212,5 +213,17 @@ public class ApplicationsAdministrationTab extends LayoutPanel implements AdminC
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private class Placeholder extends ApplicationInstanceAwareContainer {
|
||||
|
||||
public Placeholder() {
|
||||
super();
|
||||
final Label label = new Label(GlobalizationUtil.globalize(
|
||||
"ui.admin.applications.placeholder"));
|
||||
add(label);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,8 +28,9 @@ 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
|
||||
* application (if any) and the path. Also it contains a form for editing settings specific to the instance.
|
||||
* 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$
|
||||
|
|
@ -49,7 +50,7 @@ public class ApplicationInstancePane extends SegmentedPanel {
|
|||
final PropertySheet appInstInfoPanel = new PropertySheet(modelBuilder);
|
||||
|
||||
addSegment(new Label(GlobalizationUtil.globalize(
|
||||
"ui.admin.applications.ApplicationInstancePane.info.heading")),
|
||||
"ui.admin.applications.ApplicationInstancePane.info.heading")),
|
||||
appInstInfoPanel);
|
||||
|
||||
if (appAdminPane == null) {
|
||||
|
|
@ -61,18 +62,19 @@ public class ApplicationInstancePane extends SegmentedPanel {
|
|||
final Label target = (Label) event.getTarget();
|
||||
|
||||
target.setLabel(GlobalizationUtil.globalize(
|
||||
"ui.admin.MultiInstancePane.manage.no_instance_admin_pane_found",
|
||||
new String[]{application.getApplicationType().getApplicationObjectType()}));
|
||||
"ui.admin.MultiInstancePane.manage.no_instance_admin_pane_found",
|
||||
new String[]{application.getApplicationType().getApplicationObjectType()}));
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
addSegment(new Label(GlobalizationUtil.globalize(
|
||||
"ui.admin.MultiInstanceApplicationPane.manage.heading")),
|
||||
"ui.admin.MultiInstanceApplicationPane.manage.heading")),
|
||||
noAdminPaneLabel);
|
||||
} else {
|
||||
//appAdminPane.setAppInstance(appInstance);
|
||||
addSegment(new Label(GlobalizationUtil.globalize(
|
||||
"ui.admin.applications.ApplicationInstancePane.manage.heading")),
|
||||
"ui.admin.applications.ApplicationInstancePane.manage.heading")),
|
||||
appAdminPane);
|
||||
}
|
||||
}
|
||||
|
|
@ -82,4 +84,5 @@ public class ApplicationInstancePane extends SegmentedPanel {
|
|||
appAdminPane.setAppInstance(application);
|
||||
modelBuilder.setApplication(application);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue