From 9696571bd7817f41dc61dd99ef424da19fc702de Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Fri, 26 Sep 2014 13:00:32 +0200 Subject: [PATCH] OO-1219: update the preview of questions after clicking the breadcrumb --- .../gui/components/AbstractComponent.java | 5 ++++- .../olat/core/gui/components/Component.java | 2 ++ .../ui/QuestionItemDetailsController.java | 20 ++++++++++++++++--- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/olat/core/gui/components/AbstractComponent.java b/src/main/java/org/olat/core/gui/components/AbstractComponent.java index c574fef0658..45d432acfea 100644 --- a/src/main/java/org/olat/core/gui/components/AbstractComponent.java +++ b/src/main/java/org/olat/core/gui/components/AbstractComponent.java @@ -256,6 +256,7 @@ public abstract class AbstractComponent implements Component { * * @return a list of the controllers listening (normally only one) */ + @Override public List<ComponentEventListener> debuginfoGetListeners() { return listeners; } @@ -263,6 +264,7 @@ public abstract class AbstractComponent implements Component { /** * @param controller */ + @Override public void addListener(ComponentEventListener controller) { // tests if the same controller was already registered to avoid // double-firing. @@ -272,7 +274,8 @@ public abstract class AbstractComponent implements Component { + "', controller was: " + controller.toString()); listeners.add(controller); } - + + @Override public void removeListener(ComponentEventListener controller) { listeners.remove(controller); } diff --git a/src/main/java/org/olat/core/gui/components/Component.java b/src/main/java/org/olat/core/gui/components/Component.java index a60e5eee07c..3518cbed0b2 100644 --- a/src/main/java/org/olat/core/gui/components/Component.java +++ b/src/main/java/org/olat/core/gui/components/Component.java @@ -78,6 +78,8 @@ public interface Component { public void addListener(ComponentEventListener controller); + public void removeListener(ComponentEventListener controller); + public List<ComponentEventListener> debuginfoGetListeners(); public void dispatchRequest(UserRequest ureq); diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionItemDetailsController.java b/src/main/java/org/olat/modules/qpool/ui/QuestionItemDetailsController.java index 44d5c3be45f..dbfabfbeec8 100644 --- a/src/main/java/org/olat/modules/qpool/ui/QuestionItemDetailsController.java +++ b/src/main/java/org/olat/modules/qpool/ui/QuestionItemDetailsController.java @@ -32,6 +32,7 @@ import org.olat.core.gui.components.link.Link; import org.olat.core.gui.components.link.LinkFactory; import org.olat.core.gui.components.stack.BreadcrumbPanel; import org.olat.core.gui.components.stack.BreadcrumbPanelAware; +import org.olat.core.gui.components.stack.PopEvent; import org.olat.core.gui.components.velocity.VelocityContainer; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; @@ -71,6 +72,7 @@ public class QuestionItemDetailsController extends BasicController implements Br private CloseableModalController cmc; private final VelocityContainer mainVC; private DialogBoxController confirmDeleteBox; + private LayoutMain3ColsController editMainCtrl; private SelectBusinessGroupController selectGroupCtrl; private final MetadatasController metadatasCtrl; private final UserCommentsAndRatingsController commentsAndRatingCtr; @@ -141,11 +143,16 @@ public class QuestionItemDetailsController extends BasicController implements Br @Override protected void doDispose() { - // + if(stackPanel != null) { + stackPanel.removeListener(this); + } } @Override public void setBreadcrumbPanel(BreadcrumbPanel stackPanel) { + if(stackPanel != null) { + stackPanel.addListener(this); + } this.stackPanel = stackPanel; } @@ -167,6 +174,13 @@ public class QuestionItemDetailsController extends BasicController implements Br fireEvent(ureq, new QItemEvent("next", metadatasCtrl.getItem())); } else if(source == previousItem) { fireEvent(ureq, new QItemEvent("previous", metadatasCtrl.getItem())); + } else if(source == stackPanel) { + if(event instanceof PopEvent) { + PopEvent pop = (PopEvent)event; + if(pop.getController() == editMainCtrl) { + doContentChanged(ureq); + } + } } } @@ -222,8 +236,8 @@ public class QuestionItemDetailsController extends BasicController implements Br editCtrl = spi.getEditableController(ureq, getWindowControl(), item); listenTo(editCtrl); - LayoutMain3ColsController mainCtrl = new LayoutMain3ColsController(ureq, getWindowControl(), editCtrl); - stackPanel.pushController("Edition", mainCtrl); + editMainCtrl = new LayoutMain3ColsController(ureq, getWindowControl(), editCtrl); + stackPanel.pushController("Edition", editMainCtrl); } private void doContentChanged(UserRequest ureq) { -- GitLab