From a939344cde8b690be7415d64409af882d9961a00 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Wed, 23 Oct 2013 13:43:00 +0200 Subject: [PATCH] OO-832: delegate to the portlet's user the task to reload the messages after the JMS event --- .../portlet/InfoMessagePortletRunController.java | 13 ++++++++++++- .../olat/commons/info/ui/InfoDisplayController.java | 2 +- .../HomePortalControllerCreator.java | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/olat/commons/info/portlet/InfoMessagePortletRunController.java b/src/main/java/org/olat/commons/info/portlet/InfoMessagePortletRunController.java index bdfa5639f50..a785c153ecb 100644 --- a/src/main/java/org/olat/commons/info/portlet/InfoMessagePortletRunController.java +++ b/src/main/java/org/olat/commons/info/portlet/InfoMessagePortletRunController.java @@ -32,6 +32,7 @@ import org.olat.commons.info.manager.InfoMessageFrontendManager; import org.olat.commons.info.model.InfoMessage; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; +import org.olat.core.gui.components.Window; import org.olat.core.gui.components.link.Link; import org.olat.core.gui.components.link.LinkFactory; import org.olat.core.gui.components.table.BaseTableDataModelWithoutFilter; @@ -76,6 +77,8 @@ public class InfoMessagePortletRunController extends AbstractPortletRunControlle private TableController tableController; private VelocityContainer portletVC; + private boolean newInfos = false; + public InfoMessagePortletRunController(WindowControl wControl, UserRequest ureq, Translator trans, String portletName, int defaultMaxentries) { super(wControl, ureq, trans, portletName, defaultMaxentries); @@ -109,6 +112,8 @@ public class InfoMessagePortletRunController extends AbstractPortletRunControlle CoordinatorManager.getInstance().getCoordinator().getEventBus().registerFor(this, getIdentity(), InfoMessageFrontendManager.oresFrontend); putInitialPanel(portletVC); + + getWindowControl().getWindowBackOffice().addCycleListener(this); } @Override @@ -120,6 +125,7 @@ public class InfoMessagePortletRunController extends AbstractPortletRunControlle @Override public synchronized void doDispose() { + getWindowControl().getWindowBackOffice().removeCycleListener(this); CoordinatorManager.getInstance().getCoordinator().getEventBus().deregisterFor(this, InfoMessageFrontendManager.oresFrontend); super.doDispose(); } @@ -127,7 +133,12 @@ public class InfoMessagePortletRunController extends AbstractPortletRunControlle @Override public void event(Event event) { if("new_info_message".equals(event.getCommand())) { - reloadModel(sortingCriteria); + newInfos = true; + } else if (event == Window.BEFORE_INLINE_RENDERING) { + if(newInfos) { + reloadModel(sortingCriteria); + newInfos = false; + } } } diff --git a/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java b/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java index b350a65781f..9731e130a96 100644 --- a/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java +++ b/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java @@ -194,7 +194,7 @@ public class InfoDisplayController extends FormBasicController { deleteLinks.clear(); List<InfoMessage> msgs = infoMessageManager.loadInfoMessageByResource(ores, resSubPath, businessPath, after, null, 0, maxResults); - List<InfoMessageForDisplay> infoDisplays = new ArrayList<InfoMessageForDisplay>(); + List<InfoMessageForDisplay> infoDisplays = new ArrayList<InfoMessageForDisplay>(msgs.size()); for(InfoMessage info:msgs) { previousDisplayKeys.add(info.getKey()); infoDisplays.add(createInfoMessageForDisplay(info)); diff --git a/src/main/java/org/olat/home/controllerCreators/HomePortalControllerCreator.java b/src/main/java/org/olat/home/controllerCreators/HomePortalControllerCreator.java index fa571c4bf32..9cefe0e80b7 100644 --- a/src/main/java/org/olat/home/controllerCreators/HomePortalControllerCreator.java +++ b/src/main/java/org/olat/home/controllerCreators/HomePortalControllerCreator.java @@ -71,7 +71,7 @@ public class HomePortalControllerCreator extends AutoCreator { return new HomePortalController(ureq, lwControl); } - public class HomePortalController extends BasicController { + public static class HomePortalController extends BasicController { private final VelocityContainer welcome; private final Link portalBackButton; -- GitLab