diff --git a/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentMainLayoutController.java b/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentMainLayoutController.java new file mode 100644 index 0000000000000000000000000000000000000000..afce4e13ab786c1738ffd227ba662ba15a1a7f16 --- /dev/null +++ b/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentMainLayoutController.java @@ -0,0 +1,109 @@ +/** + * <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.course.nodes.iq; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.Windows; +import org.olat.core.gui.components.Component; +import org.olat.core.gui.components.panel.StackedPanel; +import org.olat.core.gui.control.ChiefController; +import org.olat.core.gui.control.Controller; +import org.olat.core.gui.control.Event; +import org.olat.core.gui.control.ScreenMode.Mode; +import org.olat.core.gui.control.WindowControl; +import org.olat.core.gui.control.controller.MainLayoutBasicController; +import org.olat.ims.qti21.ui.AssessmentTestDisplayController; + +/** + * + * The assessment test display has its own main layout. This is a thin + * wrapper which implements the MainLayoutController interface. + * + * Initial date: 22 janv. 2018<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class QTI21AssessmentMainLayoutController extends MainLayoutBasicController { + + private ChiefController thebaseChief; + private final StackedPanel mainPanel; + + private boolean fullScreen; + + public QTI21AssessmentMainLayoutController(UserRequest ureq, WindowControl wControl, AssessmentTestDisplayController controller) { + super(ureq, wControl); + mainPanel = putInitialPanel(controller.getInitialComponent()); + } + + /** + * The Controller to be set on the mainPanel in case of disposing this layout + * controller. + * + * @param disposedMessageControllerOnDipsose + */ + public void setDisposedMessageController(Controller disposedMessageControllerOnDipsose) { + setDisposedMsgController(disposedMessageControllerOnDipsose); + } + + @Override + protected void doDispose() { + // + } + + @Override + protected void event(UserRequest ureq, Component source, Event event) { + // + } + + public boolean isFullScreen() { + return fullScreen; + } + + public void setAsFullscreen(UserRequest ureq) { + ChiefController cc = getWindowControl().getWindowBackOffice().getChiefController(); + if (cc != null) { + thebaseChief = cc; + thebaseChief.getScreenMode().setMode(Mode.full); + } else { + Windows.getWindows(ureq).setFullScreen(Boolean.TRUE); + } + fullScreen = true; + } + + @SuppressWarnings("deprecation") + public void activate() { + getWindowControl().pushToMainArea(mainPanel); + } + + public void deactivate(UserRequest ureq) { + getWindowControl().pop(); + if (fullScreen) { + if(thebaseChief != null) { + thebaseChief.getScreenMode().setMode(Mode.standard); + } else if (ureq != null){ + ChiefController cc = getWindowControl().getWindowBackOffice().getChiefController(); + if (cc != null) { + thebaseChief = cc; + thebaseChief.getScreenMode().setMode(Mode.standard); + } + } + } + } +} \ No newline at end of file diff --git a/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java b/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java index 0817c7350fc0a85ead3e4368dbea098953ec97a3..b1245c13cd61955d499b64da129ebb0dda2ab57f 100644 --- a/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java +++ b/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java @@ -126,11 +126,11 @@ public class QTI21AssessmentRunController extends BasicController implements Gen private final QTI21OverrideOptions overrideOptions; // The test is really assessment not a self test or a survey private final boolean assessmentType = true; + private AtomicBoolean incrementAttempts = new AtomicBoolean(true); private AssessmentResultController resultCtrl; private AssessmentTestDisplayController displayCtrl; - private LayoutMain3ColsController displayContainerController; - private AtomicBoolean incrementAttempts = new AtomicBoolean(true); + private QTI21AssessmentMainLayoutController displayContainerController; @Autowired private QTI21Service qtiService; @@ -588,9 +588,11 @@ public class QTI21AssessmentRunController extends BasicController implements Gen } else { // in case displayController was unable to initialize, a message was set by displayController // this is the case if no more attempts or security check was unsuccessfull - displayContainerController = new LayoutMain3ColsController(ureq, getWindowControl(), displayCtrl); + + displayContainerController = new QTI21AssessmentMainLayoutController(ureq, getWindowControl(), displayCtrl); listenTo(displayContainerController); // autodispose + Panel empty = new Panel("empty");//empty panel set as "menu" and "tool" Controller courseCloser = new DisposedCourseRestartController(ureq, getWindowControl(), courseRe); Controller disposedRestartController = new LayoutMain3ColsController(ureq, getWindowControl(), empty, courseCloser.getInitialComponent(), "disposed");