Search in sources :

Example 31 with Form

use of org.olat.core.gui.components.form.flexible.impl.Form in project openolat by klemens.

the class TreeNodeFlexiCellRenderer method renderIndented.

private void renderIndented(Renderer renderer, StringOutput target, Object cellValue, int row, FlexiTableComponent source, URLBuilder ubu, Translator translator) {
    FlexiTableElementImpl ftE = source.getFlexiTableElement();
    FlexiTreeTableDataModel<?> treeTableModel = ftE.getTreeTableDataModel();
    String id = source.getFormDispatchId();
    Form rootForm = ftE.getRootForm();
    // indentation
    int indentation = treeTableModel.getIndentation(row);
    boolean hasChildren = treeTableModel.hasChildren(row);
    target.append("<div class='o_table_flexi_l").append(indentation).append(" o_table_flexi_leaf", !hasChildren).append("'>");
    if (hasChildren) {
        NameValuePair pair;
        boolean open = treeTableModel.isOpen(row);
        if (open) {
            pair = new NameValuePair("tt-close", Integer.toString(row));
        } else {
            pair = new NameValuePair("tt-open", Integer.toString(row));
        }
        String jsCode = FormJSHelper.getXHRFnCallFor(rootForm, id, 1, true, true, pair);
        target.append("<a href=\"javascript:").append(jsCode).append(";\"><i class='o_icon o_icon-fw ");
        if (open) {
            target.append("o_icon_close_tree");
        } else {
            target.append("o_icon_open_tree");
        }
        target.append("'> </i></a> ");
    }
    NameValuePair pair = new NameValuePair("tt-focus", Integer.toString(row));
    String jsCode = FormJSHelper.getXHRFnCallFor(rootForm, id, 1, false, false, pair);
    target.append("<a href=\"javascript:").append(jsCode).append(";\">");
    labelDelegate.render(renderer, target, cellValue, row, source, ubu, translator);
    target.append("</a></div>");
}
Also used : NameValuePair(org.olat.core.gui.components.form.flexible.impl.NameValuePair) Form(org.olat.core.gui.components.form.flexible.impl.Form)

Example 32 with Form

use of org.olat.core.gui.components.form.flexible.impl.Form in project openolat by klemens.

the class FlexiTableElementImpl method evalFormRequest.

/**
 * @see org.olat.core.gui.components.form.flexible.FormItemImpl#evalFormRequest(org.olat.core.gui.UserRequest)
 */
@Override
public void evalFormRequest(UserRequest ureq) {
    String[] selectedIndexArr = getRootForm().getRequestParameterValues("tb_ms");
    if (selectedIndexArr != null) {
    // setMultiSelectIndex(selectedIndexArr);
    }
    Form form = getRootForm();
    String selectedIndex = form.getRequestParameter("rSelect");
    String dispatchuri = form.getRequestParameter("dispatchuri");
    String select = form.getRequestParameter("select");
    String page = form.getRequestParameter("page");
    String sort = form.getRequestParameter("sort");
    String filter = form.getRequestParameter("filter");
    String pagesize = form.getRequestParameter("pagesize");
    String checkbox = form.getRequestParameter("chkbox");
    String removeFilter = form.getRequestParameter("rm-filter");
    String resetQuickSearch = form.getRequestParameter("reset-search");
    String removeExtendedFilter = form.getRequestParameter("rm-extended-filter");
    String treeTableFocus = form.getRequestParameter("tt-focus");
    String treeTableOpen = form.getRequestParameter("tt-open");
    String treeTableClose = form.getRequestParameter("tt-close");
    String crumb = form.getRequestParameter("tt-crumb");
    if ("undefined".equals(dispatchuri)) {
        evalSearchRequest(ureq);
    } else if (StringHelper.containsNonWhitespace(checkbox)) {
        toogleSelectIndex(checkbox);
    } else if (StringHelper.containsNonWhitespace(page)) {
        int p = Integer.parseInt(page);
        setPage(p);
    } else if (StringHelper.containsNonWhitespace(pagesize)) {
        int p;
        if ("all".equals(pagesize)) {
            p = -1;
        } else {
            p = Integer.parseInt(pagesize);
        }
        selectPageSize(ureq, p);
    } else if (StringHelper.containsNonWhitespace(sort)) {
        String asc = form.getRequestParameter("asc");
        sort(sort, "asc".equals(asc));
        saveCustomSettings(ureq);
    } else if (StringHelper.containsNonWhitespace(selectedIndex)) {
        int index = selectedIndex.lastIndexOf('-');
        if (index > 0 && index + 1 < selectedIndex.length()) {
            String pos = selectedIndex.substring(index + 1);
            int selectedPosition = Integer.parseInt(pos);
            selectedObj = dataModel.getObject(selectedPosition);
            doSelect(ureq, selectedPosition);
        }
    } else if (StringHelper.containsNonWhitespace(resetQuickSearch)) {
        resetQuickSearch(ureq);
    } else if (searchButton != null && searchButton.getFormDispatchId().equals(dispatchuri)) {
        evalSearchRequest(ureq);
    } else if (extendedSearchButton != null && extendedSearchButton.getFormDispatchId().equals(dispatchuri)) {
        expandExtendedSearch(ureq);
    } else if (extendedFilterButton != null && extendedFilterButton.getFormDispatchId().equals(dispatchuri)) {
        extendedFilterCallout(ureq);
    } else if (StringHelper.containsNonWhitespace(removeExtendedFilter)) {
        removeExtendedFilter(ureq);
    } else if (dispatchuri != null && StringHelper.containsNonWhitespace(filter)) {
        doFilter(filter);
    } else if (StringHelper.containsNonWhitespace(removeFilter)) {
        doFilter(null);
    } else if (StringHelper.isLong(treeTableFocus)) {
        doFocus(Integer.parseInt(treeTableFocus));
    } else if (StringHelper.isLong(treeTableOpen)) {
        doOpen(Integer.parseInt(treeTableOpen));
    } else if (StringHelper.isLong(treeTableClose)) {
        doClose(Integer.parseInt(treeTableClose));
    } else if (StringHelper.containsNonWhitespace(crumb)) {
        doCrumb(crumb);
    } else if (exportButton != null && exportButton.getFormDispatchId().equals(dispatchuri)) {
        doExport(ureq);
    } else if (dispatchuri != null && select != null && select.equals("checkall")) {
        selectAll();
    } else if (dispatchuri != null && select != null && select.equals("uncheckall")) {
        doUnSelectAll();
    } else if (customButton != null && customButton.getFormDispatchId().equals(dispatchuri)) {
        // snap the request
        customizeCallout(ureq);
    } else if (customTypeButton != null && customTypeButton.getFormDispatchId().equals(dispatchuri)) {
        setRendererType(FlexiTableRendererType.custom);
        saveCustomSettings(ureq);
        getRootForm().fireFormEvent(ureq, new FlexiTableRenderEvent(FlexiTableRenderEvent.CHANGE_RENDER_TYPE, this, FlexiTableRendererType.custom, FormEvent.ONCLICK));
    } else if (classicTypeButton != null && classicTypeButton.getFormDispatchId().equals(dispatchuri)) {
        setRendererType(FlexiTableRendererType.classic);
        saveCustomSettings(ureq);
        getRootForm().fireFormEvent(ureq, new FlexiTableRenderEvent(FlexiTableRenderEvent.CHANGE_RENDER_TYPE, this, FlexiTableRendererType.classic, FormEvent.ONCLICK));
    } else if (doSelect(ureq)) {
    // do select
    }
}
Also used : Form(org.olat.core.gui.components.form.flexible.impl.Form)

Example 33 with Form

use of org.olat.core.gui.components.form.flexible.impl.Form in project openolat by klemens.

the class FlexiTableClassicRenderer method renderRow.

@Override
protected void renderRow(Renderer renderer, StringOutput target, FlexiTableComponent ftC, String rowIdPrefix, int row, URLBuilder ubu, Translator translator, RenderResult renderResult) {
    FlexiTableElementImpl ftE = ftC.getFlexiTableElement();
    FlexiTableColumnModel columnsModel = ftE.getTableDataModel().getTableColumnModel();
    int numOfCols = columnsModel.getColumnCount();
    Form theForm = ftE.getRootForm();
    // use alternating css class
    int numOfColumns = 0;
    target.append("<tr id='").append(rowIdPrefix).append(row).append("'");
    if (ftE.getCssDelegate() != null) {
        String cssClass = ftE.getCssDelegate().getRowCssClass(FlexiTableRendererType.classic, row);
        if (StringHelper.containsNonWhitespace(cssClass)) {
            target.append(" class='").append(cssClass).append("'");
        }
    }
    target.append(">");
    if (ftE.isMultiSelect()) {
        target.append("<td>").append("<input type='checkbox' name='tb_ms' value='").append(rowIdPrefix).append(row).append("'").append(" onclick=\"javascript:").append(FormJSHelper.getXHRFnCallFor(theForm, ftC.getFormDispatchId(), 1, false, false, false, new NameValuePair("chkbox", Integer.toString(row)))).append(";\"");
        if (ftE.isMultiSelectedIndex(row)) {
            target.append(" checked='checked'");
        }
        boolean selectable = ftE.getTableDataModel().isSelectable(row);
        if (!selectable) {
            target.append(" disabled='disabled'");
        }
        target.append("/></td>");
    }
    for (int j = 0; j < numOfCols; j++) {
        FlexiColumnModel fcm = columnsModel.getColumnModel(j);
        if (ftE.isColumnModelVisible(fcm)) {
            renderCell(renderer, target, ftC, fcm, row, ubu, translator, renderResult);
            numOfColumns++;
        }
    }
    target.append("</tr>");
    if (ftE.isDetailsExpended(row)) {
        target.append("<tr id='").append(rowIdPrefix).append(row).append("_details' class='o_table_row_details'>");
        VelocityContainer container = ftE.getDetailsRenderer();
        Object rowObject = ftE.getTableDataModel().getObject(row);
        container.contextPut("row", rowObject);
        FlexiTableComponentDelegate cmpDelegate = ftE.getComponentDelegate();
        if (cmpDelegate != null) {
            Iterable<Component> cmps = cmpDelegate.getComponents(row, rowObject);
            if (cmps != null) {
                for (Component cmp : cmps) {
                    container.put(cmp.getComponentName(), cmp);
                }
            }
        }
        if (ftE.isMultiSelect()) {
            target.append("<td></td>");
        }
        target.append("<td colspan='").append(numOfColumns).append("'>");
        container.getHTMLRendererSingleton().render(renderer, target, container, ubu, translator, renderResult, null);
        container.contextRemove("row");
        target.append("</td></tr>");
    }
}
Also used : NameValuePair(org.olat.core.gui.components.form.flexible.impl.NameValuePair) Form(org.olat.core.gui.components.form.flexible.impl.Form) VelocityContainer(org.olat.core.gui.components.velocity.VelocityContainer) Component(org.olat.core.gui.components.Component)

Example 34 with Form

use of org.olat.core.gui.components.form.flexible.impl.Form in project openolat by klemens.

the class FlexiTableClassicRenderer method renderHeader.

private void renderHeader(StringOutput sb, FlexiTableComponent ftC, FlexiColumnModel fcm, Translator translator) {
    String header = getHeader(fcm, translator);
    sb.append("<th");
    // append sort key to make column width set via css
    if (fcm.getSortKey() != null) {
        sb.append(" class='o_col_").append(fcm.getSortKey()).append("'");
    }
    sb.append(">");
    // sort is not defined
    if (!fcm.isSortable() || fcm.getSortKey() == null) {
        sb.append(header);
    } else {
        FlexiTableElementImpl ftE = ftC.getFlexiTableElement();
        Boolean asc = null;
        String sortKey = fcm.getSortKey();
        SortKey[] orderBy = ftE.getOrderBy();
        if (orderBy != null && orderBy.length > 0) {
            for (int i = orderBy.length; i-- > 0; ) {
                if (sortKey.equals(orderBy[i].getKey())) {
                    asc = new Boolean(orderBy[i].isAsc());
                }
            }
        }
        Form theForm = ftE.getRootForm();
        if (asc == null) {
            sb.append("<a class='o_orderby' href=\"javascript:").append(FormJSHelper.getXHRFnCallFor(theForm, ftC.getFormDispatchId(), 1, true, true, true, new NameValuePair("sort", sortKey), new NameValuePair("asc", "asc"))).append("\">");
        } else if (asc.booleanValue()) {
            sb.append("<a class='o_orderby o_orderby_asc' href=\"javascript:").append(FormJSHelper.getXHRFnCallFor(theForm, ftC.getFormDispatchId(), 1, true, true, true, new NameValuePair("sort", sortKey), new NameValuePair("asc", "desc"))).append("\">");
        } else {
            sb.append("<a class='o_orderby o_orderby_desc' href=\"javascript:").append(FormJSHelper.getXHRFnCallFor(theForm, ftC.getFormDispatchId(), 1, true, true, true, new NameValuePair("sort", sortKey), new NameValuePair("asc", "asc"))).append("\">");
        }
        sb.append(header).append("</a>");
    }
    sb.append("</th>");
}
Also used : NameValuePair(org.olat.core.gui.components.form.flexible.impl.NameValuePair) Form(org.olat.core.gui.components.form.flexible.impl.Form) SortKey(org.olat.core.commons.persistence.SortKey)

Example 35 with Form

use of org.olat.core.gui.components.form.flexible.impl.Form in project openolat by klemens.

the class LinkRenderer method render.

@Override
public void render(Renderer renderer, StringOutput sb, Component source, URLBuilder ubu, Translator translator, RenderResult renderResult, String[] args) {
    Link link = (Link) source;
    String command = link.getCommand();
    AJAXFlags flags = renderer.getGlobalSettings().getAjaxFlags();
    // a link may force a non ajax-mode and a custom targ
    boolean iframePostEnabled = flags.isIframePostEnabled() && link.isAjaxEnabled() && link.getTarget() == null;
    int presentation = link.getPresentation();
    /*
		 * START && beware! order of this if's are relevant
		 */
    boolean flexiformlink = (presentation - Link.FLEXIBLEFORMLNK) >= 0;
    if (flexiformlink) {
        presentation = presentation - Link.FLEXIBLEFORMLNK;
    }
    boolean nontranslated = (presentation - Link.NONTRANSLATED) >= 0;
    if (nontranslated) {
        presentation = presentation - Link.NONTRANSLATED;
    }
    /*
		 * END && beware! order of this if's are relevant
		 */
    StringBuilder cssSb = new StringBuilder("");
    cssSb.append("class=\"");
    if (!link.isEnabled()) {
        cssSb.append(" o_disabled ");
    }
    if (link.isActive()) {
        cssSb.append(" active ");
    }
    if (presentation == Link.BUTTON_XSMALL) {
        cssSb.append("btn btn-xs ");
        cssSb.append(link.isPrimary() ? "btn-primary" : "btn-default");
    } else if (presentation == Link.BUTTON_SMALL) {
        cssSb.append("btn btn-sm ");
        cssSb.append(link.isPrimary() ? "btn-primary" : "btn-default");
    } else if (presentation == Link.BUTTON) {
        cssSb.append("btn ");
        cssSb.append(link.isPrimary() ? "btn-primary" : "btn-default");
    } else if (presentation == Link.BUTTON_LARGE) {
        cssSb.append("btn btn-lg ");
        cssSb.append(link.isPrimary() ? "btn-primary" : "btn-default");
    } else if (presentation == Link.LINK_BACK) {
        cssSb.append("o_link_back");
    } else if (presentation == Link.TOOLENTRY_DEFAULT) {
        cssSb.append("o_toolbox_link");
    } else if (presentation == Link.TOOLENTRY_CLOSE) {
        cssSb.append("o_toolbox_close");
    } else if (presentation == Link.LINK_CUSTOM_CSS) {
        String customCss = (link.isEnabled() ? link.getCustomEnabledLinkCSS() : link.getCustomDisabledLinkCSS());
        cssSb.append(customCss == null ? "" : customCss);
    }
    if (StringHelper.containsNonWhitespace(link.getElementCssClass())) {
        cssSb.append(" ").append(link.getElementCssClass());
    }
    cssSb.append("\"");
    if (link.isEnabled()) {
        // only set a target on an enabled link, target in span makes no sense
        if (link.getTarget() != null) {
            cssSb.append(" target=\"").append(link.getTarget()).append("\"");
        }
    }
    String elementId = link.getElementId();
    // String buffer to gather all Javascript stuff with this link
    // there is a var elementId = jQuery('#elementId');
    // allowing to reference the link as an Ext.Element
    // Optimize initial length based on heuristic measurements of extJsSb
    StringBuilder jsSb = new StringBuilder(240);
    boolean inForm = isInForm(args);
    String i18n = link.getI18n();
    String title = link.getTitle();
    String customDisplayText = link.getCustomDisplayText();
    // tooltip sets its own id into the <a> tag.
    if (link.isEnabled()) {
        sb.append("<p class='form-control-static'>", inForm).append("<a ").append(cssSb);
        // need also access to a created and id set. -> avoid "o_c"+link.getDispatchID()
        if (elementId != null) {
            sb.append(" id=\"").append(elementId).append("\" ");
        }
        String accessKey = link.getAccessKey();
        if (accessKey != null) {
            sb.append("accesskey=\"").append(accessKey).append("\" ");
        }
        if (flexiformlink) {
            // no target if flexi form link! because target is set on
            // post action of form
            Form theForm = (Form) link.getInternalAttachedObject();
            sb.append("href=\"javascript:").append(FormJSHelper.getJSFnCallFor(theForm, elementId, 1)).append(";\" ");
            if (link.isForceFlexiDirtyFormWarning()) {
                sb.append("onclick=\"return o2cl_dirtyCheckOnly();\" ");
            }
        } else if (link.isPopup()) {
            StringOutput href = new StringOutput();
            LinkPopupSettings popup = link.getPopup();
            ubu.buildURI(href, new String[] { VelocityContainer.COMMAND_ID }, new String[] { command }, null, AJAXFlags.MODE_NORMAL);
            sb.append("href=\"javascript:;\" onclick=\"o_openPopUp('").append(href).append("','").append(popup.getTarget()).append("',").append(popup.getWidth()).append(",").append(popup.getHeight()).append("); return false;\" ");
        } else {
            ubu.buildHrefAndOnclick(sb, null, iframePostEnabled, !link.isSuppressDirtyFormWarning(), true, new NameValuePair(VelocityContainer.COMMAND_ID, command));
        }
        // tooltips
        if (title != null) {
            if (!link.isHasTooltip()) {
                sb.append(" title=\"");
                if (nontranslated) {
                    sb.append(StringEscapeUtils.escapeHtml(title)).append("\"");
                } else {
                    sb.append(StringEscapeUtils.escapeHtml(translator.translate(title))).append("\"");
                }
            }
            // tooltips based on the extjs library, see webapp/static/js/ext*
            if (link.isHasTooltip()) {
                String text;
                if (nontranslated) {
                    text = title;
                } else {
                    text = translator.translate(title);
                }
                sb.append(" title=\"").append(StringEscapeUtils.escapeHtml(text)).append("\"");
            }
        }
        sb.append(">");
        // CSS icon
        if (link.getIconLeftCSS() != null) {
            sb.append("<i class='").append(link.getIconLeftCSS()).append("'");
            // one space needed
            sb.append("></i> ");
        } else if (presentation == Link.LINK_BACK) {
            // one space needed
            sb.append("<i class='o_icon o_icon_back'></i> ");
        }
        // inner wrapper for layouting
        sb.append("<span>");
        if (customDisplayText != null) {
            // link is nontranslated but has custom text
            sb.append(customDisplayText);
        } else if (nontranslated) {
            if (i18n != null) {
                // link name is not a i18n key
                sb.append(i18n);
            } else {
                sb.append("");
            }
        } else {
            // use translator
            if (translator == null) {
                sb.append("Ohoho");
            } else {
                sb.append(translator.translate(i18n));
            }
        }
        sb.append("</span>");
        // CSS icon
        if (link.getIconRightCSS() != null) {
            // one space needed
            sb.append(" <i class='").append(link.getIconRightCSS()).append("'");
            sb.append("></i> ");
        }
        if (link.getBadge() != null) {
            renderer.render(link.getBadge(), sb, args);
        }
        sb.append("</a>").append("</p>", inForm);
        // on click() is part of prototype.js
        if (link.isRegisterForMousePositionEvent()) {
            jsSb.append(elementId).append(".click(function(event) {").append(" jQuery('#").append(elementId).append("').each(function(index, el) {;").append("  var href = jQuery(el).attr('href');").append(" 	if(href.indexOf('x') == -1) jQuery(el).attr('href',href+'x'+event.pageX+'y'+event.pageY+'');").append(" });});");
        }
        /**
         * TODO:gs:b may be usefull as well
         * this binds the event to the function call as argument, usefull if event is needed
         * Event.observe("id", "click", functionName.bindAsEventListener(this));
         */
        if (link.getJavascriptHandlerFunction() != null) {
            jsSb.append(elementId).append(".on('").append(link.getMouseEvent()).append("', ").append(link.getJavascriptHandlerFunction()).append(");");
        }
        /**
         * Focus link so that it can be invoked using the enter key using a keyboard.
         */
        if (link.isFocus()) {
            jsSb.append(elementId).append(".focus();");
        }
    } else {
        String text;
        if (customDisplayText != null) {
            // link is nontranslated but has custom text
            text = customDisplayText;
        } else if (nontranslated) {
            // link name is not a i18n key
            text = (i18n == null ? "" : i18n);
        } else {
            text = translator.translate(i18n);
        }
        sb.append("<a ");
        if (elementId != null)
            sb.append(" id=\"").append(elementId).append("\" ");
        String description = link.getTextReasonForDisabling();
        // fallback to title
        if (description == null)
            description = link.getTitle();
        if (description != null) {
            Matcher msq = singleQuote.matcher(description);
            description = msq.replaceAll("&#39;");
            Matcher mdq = doubleQutoe.matcher(description);
            description = mdq.replaceAll("\\\\\"");
            sb.append(" title=\"").append(description).append("\" ");
        }
        sb.append(cssSb).append(" href='#' onclick='return false;'>");
        // CSS icon
        if (link.getIconLeftCSS() != null) {
            sb.append("<i class='").append(link.getIconLeftCSS()).append("'");
            // one space needed
            sb.append("></i> ");
        }
        sb.append("<span>").append(text).append("</span>");
        // CSS icon
        if (link.getIconRightCSS() != null) {
            // one space needed
            sb.append(" <i class='").append(link.getIconRightCSS()).append("'");
            sb.append("></i> ");
        }
        sb.append("</a>");
    }
    if (link.getTarget() != null) {
        // if the link starts a download -> the o_afterserver is not called in
        // non-ajax mode if a download is started.
        // on click execute the "same" javascript as in o_ainvoke(r,true) for
        // case 3:
        jsSb.append("if (").append(elementId).append(") ").append(elementId).append(".click(function() {setTimeout(removeBusyAfterDownload,1200)});");
    }
    // now append all gathered javascript stuff if any
    if (jsSb.length() > 0) {
        // Execute code within an anonymous function (closure) to not leak
        // variables to global scope (OLAT-5755)
        sb.append(" <script type=\"text/javascript\">\n/* <![CDATA[ */\n").append("(function(){ var ").append(elementId).append(" = jQuery('#").append(elementId).append("');").append(jsSb).append("})();").append("\n/* ]]> */\n</script>");
    }
}
Also used : NameValuePair(org.olat.core.gui.components.form.flexible.impl.NameValuePair) AJAXFlags(org.olat.core.gui.control.winmgr.AJAXFlags) Form(org.olat.core.gui.components.form.flexible.impl.Form) Matcher(java.util.regex.Matcher) StringOutput(org.olat.core.gui.render.StringOutput)

Aggregations

Form (org.olat.core.gui.components.form.flexible.impl.Form)64 NameValuePair (org.olat.core.gui.components.form.flexible.impl.NameValuePair)42 AssessmentRenderFunctions.contentAsString (org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.contentAsString)10 Component (org.olat.core.gui.components.Component)4 FlexiTableFilter (org.olat.core.gui.components.form.flexible.elements.FlexiTableFilter)4 FlexiTableSort (org.olat.core.gui.components.form.flexible.elements.FlexiTableSort)4 StringOutput (org.olat.core.gui.render.StringOutput)4 TestSessionController (uk.ac.ed.ph.jqtiplus.running.TestSessionController)4 File (java.io.File)2 ArrayList (java.util.ArrayList)2 Calendar (java.util.Calendar)2 HashSet (java.util.HashSet)2 Matcher (java.util.regex.Matcher)2 SortKey (org.olat.core.commons.persistence.SortKey)2 TextBoxListElementComponent (org.olat.core.gui.components.form.flexible.impl.elements.TextBoxListElementComponent)2 TextBoxListElementImpl (org.olat.core.gui.components.form.flexible.impl.elements.TextBoxListElementImpl)2 TextModeState (org.olat.core.gui.components.form.flexible.impl.elements.richText.RichTextElementImpl.TextModeState)2 FlexiTableElementImpl (org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableElementImpl)2 VelocityContainer (org.olat.core.gui.components.velocity.VelocityContainer)2 AJAXFlags (org.olat.core.gui.control.winmgr.AJAXFlags)2