Search in sources :

Example 46 with Panel

use of org.olat.core.gui.components.panel.Panel in project openolat by klemens.

the class BaseFullWebappController method initialize.

private void initialize(UserRequest ureq) {
    mainVc = createVelocityContainer("fullwebapplayout");
    mainVc.contextPut("screenMode", screenMode);
    LayoutModule layoutModule = CoreSpringFactory.getImpl(LayoutModule.class);
    LandingPagesModule landingPagesModule = CoreSpringFactory.getImpl(LandingPagesModule.class);
    LogoInformations logoInfos = new LogoInformations(ureq, layoutModule, landingPagesModule);
    mainVc.contextPut("logoInfos", logoInfos);
    // use separate container for navigation to prevent full page refresh in ajax mode on site change
    // nav is not a controller part because it is a fundamental part of the BaseFullWebAppConroller.
    navSitesVc = createVelocityContainer("nav_sites");
    navSitesVc.setDomReplacementWrapperRequired(false);
    navSitesVc.contextPut("visible", Boolean.TRUE);
    mainVc.put("sitesComponent", navSitesVc);
    navTabsVc = createVelocityContainer("nav_tabs");
    navTabsVc.setDomReplacementWrapperRequired(false);
    mainVc.put("tabsComponent", navTabsVc);
    // GUI messages
    guimsgVc = createVelocityContainer("guimsg");
    guimsgVc.contextPut("guiMessage", guiMessage);
    guimsgHolder = new Panel("guimsgholder");
    guimsgHolder.setContent(guimsgPanel);
    currentMsgHolder = guimsgHolder;
    mainVc.put("guimessage", guimsgHolder);
    // CSS panel
    cssHolder = new Panel("customCss");
    mainVc.put("customCssHolder", cssHolder);
    // sticky maintenance message
    stickyMessageCmp = new StickyMessageComponent("stickymsg", screenMode);
    mainVc.put("stickymsg", stickyMessageCmp);
    updateStickyMessage();
    dtabs = new ArrayList<>();
    dtabsLinkNames = new ArrayList<>();
    dtabsControllers = new ArrayList<>();
    // -- sites -- by definition the first site is activated at the beginning
    userTools = new HomeSite(null);
    sites = baseFullWebappControllerParts.getSiteInstances(ureq, getWindowControl());
    if (sites != null && sites.size() == 0) {
        sites = null;
    }
    List<String> siteLinks = new ArrayList<>();
    // either sites is null or contains at least one SiteInstance.
    if (sites != null) {
        // create the links for the sites
        for (Iterator<SiteInstance> iterator = sites.iterator(); iterator.hasNext(); ) {
            SiteInstance si = iterator.next();
            NavElement navEl = si.getNavElement();
            if (navEl != null) {
                String linkName = "t" + CodeHelper.getRAMUniqueID();
                siteLinks.add(linkName);
                Link link = LinkFactory.createCustomLink(linkName, "t", "", Link.NONTRANSLATED, navSitesVc, this);
                link.setCustomDisplayText(navEl.getTitle());
                link.setTitle(navEl.getDescription());
                link.setUserObject(si);
                Character accessKey = navEl.getAccessKey();
                if (accessKey != null && StringHelper.containsNonWhitespace(accessKey.toString())) {
                    link.setAccessKey(accessKey.toString());
                }
            }
        }
    }
    navSitesVc.contextPut("sites", siteLinks);
    navSitesVc.contextPut("tabhelper", this);
    navTabsVc.contextPut("dtabs", dtabs);
    navTabsVc.contextPut("dtabsLinkNames", dtabsLinkNames);
    navTabsVc.contextPut("tabhelper", this);
    // header, optional (e.g. for logo, advertising )
    Controller headerCtr = baseFullWebappControllerParts.createHeaderController(ureq, getWindowControl());
    if (headerCtr != null) {
        // cleanup on dispose
        listenTo(headerCtr);
        Component headerCmp = headerCtr.getInitialComponent();
        mainVc.put("headerComponent", headerCmp);
    }
    // topnav, optional (e.g. for imprint, logout)
    topnavCtr = baseFullWebappControllerParts.createTopNavController(ureq, getWindowControl());
    if (topnavCtr != null) {
        // cleanup on dispose
        listenTo(topnavCtr);
        mainVc.put("topnavComponent", topnavCtr.getInitialComponent());
        userToolsMenuCtrl = new UserToolsMenuController(ureq, getWindowControl());
        listenTo(userToolsMenuCtrl);
        mainVc.put("menuComponent", userToolsMenuCtrl.getInitialComponent());
    }
    // panel for modal overlays, placed right after the olat-header-div
    modalPanel = new Panel("ccmodalpanel");
    mainVc.put("modalpanel", modalPanel);
    // main, mandatory (e.g. a LayoutMain3ColsController)
    main = new Panel("mainContent");
    mainVc.put("main", main);
    // footer, optional (e.g. for copyright, powered by)
    footerCtr = baseFullWebappControllerParts.createFooterController(ureq, getWindowControl());
    if (footerCtr != null) {
        // cleanup on dispose
        listenTo(footerCtr);
        Component footerCmp = footerCtr.getInitialComponent();
        mainVc.put("footerComponent", footerCmp);
    }
    contentCtrl = baseFullWebappControllerParts.getContentController(ureq, getWindowControl());
    if (contentCtrl != null) {
        listenTo(contentCtrl);
        GuiStack gs = getWindowControl().getWindowBackOffice().createGuiStack(contentCtrl.getInitialComponent());
        setGuiStack(gs);
        main.setContent(contentCtrl.getInitialComponent());
    } else {
        main.setContent(TextFactory.createTextComponentFromString("empty", "", null, false, null));
        // set a guistack for the after login interceptor
        GuiStack gs = getWindowControl().getWindowBackOffice().createGuiStack(new Panel("dummy"));
        setGuiStack(gs);
    }
    setWindowSettings(getWindowControl().getWindowBackOffice().getWindowSettings());
}
Also used : BornSiteInstance(org.olat.core.gui.control.navigation.BornSiteInstance) SiteInstance(org.olat.core.gui.control.navigation.SiteInstance) LayoutModule(org.olat.admin.layout.LayoutModule) ArrayList(java.util.ArrayList) LandingPagesModule(org.olat.admin.landingpages.LandingPagesModule) ResumeSessionController(org.olat.core.commons.controllers.resume.ResumeSessionController) AssessmentModeGuardController(org.olat.course.assessment.ui.mode.AssessmentModeGuardController) BasicController(org.olat.core.gui.control.controller.BasicController) ChiefController(org.olat.core.gui.control.ChiefController) BaseChiefController(org.olat.core.commons.chiefcontrollers.BaseChiefController) VetoableCloseController(org.olat.core.gui.control.VetoableCloseController) Controller(org.olat.core.gui.control.Controller) UserToolsMenuController(org.olat.gui.control.UserToolsMenuController) GuiStack(org.olat.core.gui.control.guistack.GuiStack) NavElement(org.olat.core.gui.control.navigation.NavElement) OncePanel(org.olat.core.gui.components.panel.OncePanel) Panel(org.olat.core.gui.components.panel.Panel) StackedPanel(org.olat.core.gui.components.panel.StackedPanel) LogoInformations(org.olat.admin.layout.LogoInformations) HomeSite(org.olat.home.HomeSite) UserToolsMenuController(org.olat.gui.control.UserToolsMenuController) Component(org.olat.core.gui.components.Component) CustomJSComponent(org.olat.core.gui.components.htmlheader.jscss.CustomJSComponent) CountDownComponent(org.olat.core.gui.components.countdown.CountDownComponent) Link(org.olat.core.gui.components.link.Link)

Example 47 with Panel

use of org.olat.core.gui.components.panel.Panel in project openolat by klemens.

the class BaseFullWebappController method event.

@Override
public void event(Event event) {
    if (event == Window.AFTER_VALIDATING) {
        // now update the guimessage
        List<ZIndexWrapper> places = getWindowControl().getWindowBackOffice().getGuiMessages();
        Panel winnerP = null;
        int maxZ = -1;
        if (places != null) {
            // we have places where we can put the gui message
            for (Iterator<ZIndexWrapper> it_places = places.iterator(); it_places.hasNext(); ) {
                ZIndexWrapper ziw = it_places.next();
                int cind = ziw.getZindex();
                if (cind > maxZ) {
                    maxZ = cind;
                    winnerP = ziw.getPanel();
                }
            }
        } else {
            winnerP = guimsgHolder;
        }
        if (winnerP != null && winnerP != currentMsgHolder) {
            currentMsgHolder.setContent(null);
            winnerP.setContent(guimsgPanel);
            currentMsgHolder = winnerP;
        } else {
            currentMsgHolder = guimsgHolder;
            currentMsgHolder.setContent(guimsgPanel);
            currentMsgHolder.setDirty(guimsgPanel.isDirty());
        }
    } else if (event instanceof LanguageChangedEvent) {
        LanguageChangedEvent lce = (LanguageChangedEvent) event;
        UserRequest ureq = lce.getCurrentUreq();
        getTranslator().setLocale(lce.getNewLocale());
        initialize(ureq);
        WindowManager winman = Windows.getWindows(ureq).getWindowManager();
        initializeBase(ureq, winman, initialPanel);
        initialPanel.setContent(mainVc);
        reload = Boolean.TRUE;
    } else if (event instanceof ChiefControllerMessageEvent) {
        // msg can be set to show only on one node or on all nodes
        updateStickyMessage();
    } else if (event instanceof AssessmentModeNotificationEvent) {
        try {
            processAssessmentModeNotificationEvent((AssessmentModeNotificationEvent) event);
        } catch (Exception e) {
            logError("", e);
        }
    }
}
Also used : OncePanel(org.olat.core.gui.components.panel.OncePanel) Panel(org.olat.core.gui.components.panel.Panel) StackedPanel(org.olat.core.gui.components.panel.StackedPanel) AssessmentModeNotificationEvent(org.olat.course.assessment.AssessmentModeNotificationEvent) ZIndexWrapper(org.olat.core.gui.control.util.ZIndexWrapper) LanguageChangedEvent(org.olat.core.commons.chiefcontrollers.LanguageChangedEvent) ChiefControllerMessageEvent(org.olat.core.commons.chiefcontrollers.ChiefControllerMessageEvent) HistoryPoint(org.olat.core.id.context.HistoryPoint) UserRequest(org.olat.core.gui.UserRequest) AssertException(org.olat.core.logging.AssertException) WindowManager(org.olat.core.gui.WindowManager)

Example 48 with Panel

use of org.olat.core.gui.components.panel.Panel in project openolat by klemens.

the class QTI21AssessmentRunController method doStart.

private void doStart(UserRequest ureq) {
    removeAsListenerAndDispose(displayCtrl);
    OLATResourceable ores = OresHelper.createOLATResourceableTypeWithoutCheck("test");
    ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores));
    WindowControl bwControl = addToHistory(ureq, ores, null);
    RepositoryEntry courseRe = userCourseEnv.getCourseEnvironment().getCourseGroupManager().getCourseEntry();
    displayCtrl = new AssessmentTestDisplayController(ureq, bwControl, this, testEntry, courseRe, courseNode.getIdent(), deliveryOptions, overrideOptions, true, false, false);
    listenTo(displayCtrl);
    if (displayCtrl.getAssessmentTest() == null) {
        logError("Test cannot be read: " + testEntry + " in course: " + courseRe + " element: " + courseNode.getIdent(), null);
        showError("error.resource.corrupted");
    } else if (displayCtrl.isEnded()) {
        if (!displayCtrl.isResultsVisible()) {
            doExitAssessment(ureq, null, true);
            initAssessment(ureq);
        }
    } 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 QTI21AssessmentMainLayoutController(ureq, getWindowControl(), displayCtrl);
        // autodispose
        listenTo(displayContainerController);
        // empty panel set as "menu" and "tool"
        Panel empty = new Panel("empty");
        Controller courseCloser = new DisposedCourseRestartController(ureq, getWindowControl(), courseRe);
        Controller disposedRestartController = new LayoutMain3ColsController(ureq, getWindowControl(), empty, courseCloser.getInitialComponent(), "disposed");
        displayContainerController.setDisposedMessageController(disposedRestartController);
        boolean fullWindow = deliveryOptions.isHideLms();
        if (fullWindow) {
            displayContainerController.setAsFullscreen(ureq);
        }
        displayContainerController.activate();
        assessmentStopped = false;
        singleUserEventCenter.registerFor(this, getIdentity(), assessmentInstanceOres);
        singleUserEventCenter.fireEventToListenersOf(new AssessmentEvent(AssessmentEvent.TYPE.STARTED, ureq.getUserSession()), assessmentEventOres);
        ThreadLocalUserActivityLogger.log(QTI21LoggingAction.QTI_START_IN_COURSE, getClass());
    }
}
Also used : Panel(org.olat.core.gui.components.panel.Panel) OLATResourceable(org.olat.core.id.OLATResourceable) LayoutMain3ColsController(org.olat.core.commons.fullWebApp.LayoutMain3ColsController) AssessmentTestDisplayController(org.olat.ims.qti21.ui.AssessmentTestDisplayController) RepositoryEntry(org.olat.repository.RepositoryEntry) DisposedCourseRestartController(org.olat.course.DisposedCourseRestartController) WindowControl(org.olat.core.gui.control.WindowControl) DisposedCourseRestartController(org.olat.course.DisposedCourseRestartController) HighScoreRunController(org.olat.course.highscore.ui.HighScoreRunController) LayoutMain3ColsController(org.olat.core.commons.fullWebApp.LayoutMain3ColsController) BasicController(org.olat.core.gui.control.controller.BasicController) AssessmentResultController(org.olat.ims.qti21.ui.AssessmentResultController) IFrameDisplayController(org.olat.core.gui.control.generic.iframe.IFrameDisplayController) Controller(org.olat.core.gui.control.Controller) AssessmentTestDisplayController(org.olat.ims.qti21.ui.AssessmentTestDisplayController)

Example 49 with Panel

use of org.olat.core.gui.components.panel.Panel in project openolat by klemens.

the class GuiStackNiceImpl method pushCallout.

@Override
public void pushCallout(Component content, String targetId, CalloutSettings settings) {
    // wrap the component into a modal foreground dialog with alpha-blended-background
    final Panel guiMsgPlace = new Panel("guimsgplace_for_callout");
    VelocityContainer inset = new VelocityContainer("inset", VELOCITY_ROOT + "/callout.html", null, null) {

        public void validate(UserRequest ureq, ValidationResult vr) {
            super.validate(ureq, vr);
            // just before rendering, we need to tell the windowbackoffice that we are a favorite for accepting gui-messages.
            // the windowbackoffice doesn't know about guimessages, it is only a container that keeps them for one render cycle
            List<ZIndexWrapper> zindexed = wbo.getGuiMessages();
            zindexed.add(new ZIndexWrapper(guiMsgPlace, 10));
        }
    };
    inset.put("cont", content);
    inset.put("guimsgplace", guiMsgPlace);
    inset.contextPut("guimsgtarget", targetId);
    int zindex = 900 + (modalLayers * 100) + 5;
    inset.contextPut("zindexoverlay", zindex + 1);
    inset.contextPut("zindexshim", zindex);
    inset.contextPut("zindexarea", zindex + 5);
    inset.contextPut("zindexextwindows", zindex + 50);
    if (settings != null) {
        inset.contextPut("arrow", settings.isArrow());
        inset.contextPut("orientation", settings.getOrientation().name());
    } else {
        inset.contextPut("arrow", Boolean.TRUE);
        inset.contextPut("orientation", CalloutOrientation.bottom.name());
    }
    modalPanel.pushContent(inset);
    modalLayers++;
}
Also used : SimpleStackedPanel(org.olat.core.gui.components.panel.SimpleStackedPanel) LayeredPanel(org.olat.core.gui.components.panel.LayeredPanel) Panel(org.olat.core.gui.components.panel.Panel) StackedPanel(org.olat.core.gui.components.panel.StackedPanel) ZIndexWrapper(org.olat.core.gui.control.util.ZIndexWrapper) ValidationResult(org.olat.core.gui.render.ValidationResult) UserRequest(org.olat.core.gui.UserRequest) VelocityContainer(org.olat.core.gui.components.velocity.VelocityContainer)

Example 50 with Panel

use of org.olat.core.gui.components.panel.Panel in project openolat by klemens.

the class DebugHelper method createDebugProtectedWrapper.

/**
 * to wrap a component in panel to disallow appending of debug-information.
 * used only by e.g. the development controller
 *
 * @return a protected panel
 */
public static Component createDebugProtectedWrapper(Component comp) {
    Panel p = new Panel(MAGIC_KEY);
    p.setContent(comp);
    return p;
}
Also used : Panel(org.olat.core.gui.components.panel.Panel)

Aggregations

Panel (org.olat.core.gui.components.panel.Panel)56 TooledStackedPanel (org.olat.core.gui.components.stack.TooledStackedPanel)18 StackedPanel (org.olat.core.gui.components.panel.StackedPanel)16 WindowControl (org.olat.core.gui.control.WindowControl)14 LayoutMain3ColsController (org.olat.core.commons.fullWebApp.LayoutMain3ColsController)12 UserRequest (org.olat.core.gui.UserRequest)12 Component (org.olat.core.gui.components.Component)12 VelocityContainer (org.olat.core.gui.components.velocity.VelocityContainer)12 Controller (org.olat.core.gui.control.Controller)10 OncePanel (org.olat.core.gui.components.panel.OncePanel)8 BasicController (org.olat.core.gui.control.controller.BasicController)8 ArrayList (java.util.ArrayList)6 SimpleStackedPanel (org.olat.core.gui.components.panel.SimpleStackedPanel)6 ZIndexWrapper (org.olat.core.gui.control.util.ZIndexWrapper)6 AssertException (org.olat.core.logging.AssertException)6 CloseableModalController (org.olat.core.gui.control.generic.closablewrapper.CloseableModalController)5 HistoryPoint (org.olat.core.id.context.HistoryPoint)5 JSAndCSSComponent (org.olat.core.gui.components.htmlheader.jscss.JSAndCSSComponent)4 MenuTree (org.olat.core.gui.components.tree.MenuTree)4 TreeNode (org.olat.core.gui.components.tree.TreeNode)4