From 75e6c3b097b35433596a338af176ae0e41271921 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Thu, 8 Jan 2015 22:17:22 +0100 Subject: [PATCH] OO-1378: implement a hook to init the tools automatically after pushing the controller to the stack --- .../components/stack/TooledController.java | 34 +++++++++++++++++++ .../components/stack/TooledStackedPanel.java | 3 ++ .../title/TitledWrapperController.java | 12 ++++++- .../StatisticCourseNodesController.java | 10 +++++- .../QTI12AssessmentStatisticsController.java | 10 +++++- 5 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 src/main/java/org/olat/core/gui/components/stack/TooledController.java diff --git a/src/main/java/org/olat/core/gui/components/stack/TooledController.java b/src/main/java/org/olat/core/gui/components/stack/TooledController.java new file mode 100644 index 00000000000..22156947a6e --- /dev/null +++ b/src/main/java/org/olat/core/gui/components/stack/TooledController.java @@ -0,0 +1,34 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.core.gui.components.stack; + +/** + * + * Init the tools after push + * + * Initial date: 08.01.2015<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public interface TooledController { + + public void initTools(); + +} diff --git a/src/main/java/org/olat/core/gui/components/stack/TooledStackedPanel.java b/src/main/java/org/olat/core/gui/components/stack/TooledStackedPanel.java index 1d6b3c96240..4e272dec6e0 100644 --- a/src/main/java/org/olat/core/gui/components/stack/TooledStackedPanel.java +++ b/src/main/java/org/olat/core/gui/components/stack/TooledStackedPanel.java @@ -148,6 +148,9 @@ public class TooledStackedPanel extends BreadcrumbedStackedPanel implements Stac TooledBreadCrumb currentCrumb = getCurrentCrumb(); if(currentCrumb == null || currentCrumb.getController() != controller) { super.pushController(displayName, controller); + if(controller instanceof TooledController) { + ((TooledController)controller).initTools(); + } } } diff --git a/src/main/java/org/olat/core/gui/control/generic/title/TitledWrapperController.java b/src/main/java/org/olat/core/gui/control/generic/title/TitledWrapperController.java index ffe154026f0..67fae5d457c 100644 --- a/src/main/java/org/olat/core/gui/control/generic/title/TitledWrapperController.java +++ b/src/main/java/org/olat/core/gui/control/generic/title/TitledWrapperController.java @@ -30,6 +30,7 @@ import java.util.List; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; +import org.olat.core.gui.components.stack.TooledController; import org.olat.core.gui.components.velocity.VelocityContainer; import org.olat.core.gui.control.ConfigurationChangedListener; import org.olat.core.gui.control.Controller; @@ -54,7 +55,8 @@ import org.olat.core.util.StringHelper; * Initial Date: 21.06.2007 <br> * @author Lavinia Dumitrescu, Florian Gnägi */ -public class TitledWrapperController extends BasicController implements CloneableController, Activateable2, ConfigurationChangedListener { +public class TitledWrapperController extends BasicController + implements CloneableController, Activateable2, TooledController, ConfigurationChangedListener { private static final String COMPONENT_NAME = "child"; //Velocity variable @@ -144,6 +146,7 @@ public class TitledWrapperController extends BasicController implements Cloneabl } } + @Override protected void doDispose() { if (descriptionController != null) { descriptionController.dispose(); @@ -154,6 +157,13 @@ public class TitledWrapperController extends BasicController implements Cloneabl contentController = null; } + @Override + public void initTools() { + if(contentController instanceof TooledController) { + ((TooledController)contentController).initTools(); + } + } + @Override public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) { if(contentController instanceof Activateable2) { diff --git a/src/main/java/org/olat/course/statistic/StatisticCourseNodesController.java b/src/main/java/org/olat/course/statistic/StatisticCourseNodesController.java index 1e98b578b02..3fa85d242bc 100644 --- a/src/main/java/org/olat/course/statistic/StatisticCourseNodesController.java +++ b/src/main/java/org/olat/course/statistic/StatisticCourseNodesController.java @@ -27,6 +27,7 @@ import org.olat.core.commons.fullWebApp.LayoutMain3ColsController; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.panel.Panel; +import org.olat.core.gui.components.stack.TooledController; import org.olat.core.gui.components.stack.TooledStackedPanel; import org.olat.core.gui.components.tree.GenericTreeModel; import org.olat.core.gui.components.tree.GenericTreeNode; @@ -57,7 +58,7 @@ import org.olat.ims.qti.statistics.QTIType; * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com * */ -public class StatisticCourseNodesController extends BasicController implements Activateable2 { +public class StatisticCourseNodesController extends BasicController implements Activateable2, TooledController { private final MenuTree courseTree; private final TooledStackedPanel stackPanel; private final LayoutMain3ColsController layoutCtr; @@ -101,6 +102,13 @@ public class StatisticCourseNodesController extends BasicController implements A } } + @Override + public void initTools() { + if(currentCtrl instanceof TooledController) { + ((TooledController)currentCtrl).initTools(); + } + } + private TreeModel buildTreeModel(final UserRequest ureq, final UserCourseEnvironment userCourseEnv) { final GenericTreeModel gtm = new GenericTreeModel(); final GenericTreeNode rootTreeNode = new GenericTreeNode(); diff --git a/src/main/java/org/olat/ims/qti/statistics/ui/QTI12AssessmentStatisticsController.java b/src/main/java/org/olat/ims/qti/statistics/ui/QTI12AssessmentStatisticsController.java index 196931fe6c1..3363bfac410 100644 --- a/src/main/java/org/olat/ims/qti/statistics/ui/QTI12AssessmentStatisticsController.java +++ b/src/main/java/org/olat/ims/qti/statistics/ui/QTI12AssessmentStatisticsController.java @@ -37,6 +37,7 @@ import org.olat.core.gui.components.chart.StatisticsComponent; import org.olat.core.gui.components.link.Link; import org.olat.core.gui.components.link.LinkFactory; import org.olat.core.gui.components.link.LinkPopupSettings; +import org.olat.core.gui.components.stack.TooledController; import org.olat.core.gui.components.stack.TooledStackedPanel; import org.olat.core.gui.components.stack.TooledStackedPanel.Align; import org.olat.core.gui.components.velocity.VelocityContainer; @@ -66,7 +67,7 @@ import org.olat.repository.RepositoryManager; * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com * */ -public class QTI12AssessmentStatisticsController extends BasicController { +public class QTI12AssessmentStatisticsController extends BasicController implements TooledController { private final QTIType type; private final Float maxScore; @@ -160,6 +161,13 @@ public class QTI12AssessmentStatisticsController extends BasicController { stackPanel.removeTool(printLink); } } + + public void initTools() { + if(stackPanel != null) { + stackPanel.addTool(printLink, Align.right); + stackPanel.addTool(downloadRawLink, Align.right); + } + } private Float getCutValueSetting(QTICourseNode testNode) { Float cutValueSetting; -- GitLab