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());
}
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);
}
}
}
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());
}
}
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++;
}
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;
}
Aggregations