📄 modelform.java
字号:
if (lastFieldGroup != null ) { lastFieldGroupName = lastFieldGroup.getId(); if (!lastFieldGroupName.equals(currentFieldGroupName)) { lastFieldGroup.renderEndString(buffer, context, formStringRenderer); List inbetweenList = getInbetweenList(lastFieldGroup, currentFieldGroup); Iterator iter = inbetweenList.iterator(); while (iter.hasNext()) { Object obj = iter.next(); if (obj instanceof ModelForm.Banner) { ((ModelForm.Banner) obj).renderString(buffer, context, formStringRenderer); } else { // no need to open and close an empty table, so skip that call formStringRenderer.renderFieldGroupOpen(buffer, context, (FieldGroup) obj); formStringRenderer.renderFieldGroupClose(buffer, context, (FieldGroup) obj); } } } } if (currentFieldGroup != null && (lastFieldGroup == null || !lastFieldGroupName.equals(currentFieldGroupName))) { currentFieldGroup.renderStartString(buffer, context, formStringRenderer); lastFieldGroup = currentFieldGroup; } } ModelFormField.FieldInfo fieldInfo = currentFormField.getFieldInfo(); if (fieldInfo.getFieldType() == ModelFormField.FieldInfo.HIDDEN || fieldInfo.getFieldType() == ModelFormField.FieldInfo.IGNORED) { continue; } if (alreadyRendered.contains(currentFormField.getName())) { continue; } //Debug.logInfo("In single form evaluating use-when for field " + currentFormField.getName() + ": " + currentFormField.getUseWhen(), module); if (!currentFormField.shouldUse(context)) { continue; } alreadyRendered.add(currentFormField.getName()); boolean stayingOnRow = false; if (lastFormField != null) { if (lastFormField.getPosition() >= currentFormField.getPosition()) { // moving to next row stayingOnRow = false; } else { // staying on same row stayingOnRow = true; } } int positionSpan = 1; Integer nextPositionInRow = null; if (nextFormField != null) { if (nextFormField.getPosition() > currentFormField.getPosition()) { positionSpan = nextFormField.getPosition() - currentFormField.getPosition() - 1; nextPositionInRow = new Integer(nextFormField.getPosition()); } else { positionSpan = positions - currentFormField.getPosition(); if (!stayingOnRow && nextFormField.getPosition() > 1) { // TODO: here is a weird case where it is setup such //that the first position(s) in the row are skipped // not sure what to do about this right now... } } } if (stayingOnRow) { // no spacer cell, might add later though... //formStringRenderer.renderFormatFieldRowSpacerCell(buffer, context, currentFormField); } else { if (haveRenderedOpenFieldRow) { // render row formatting close formStringRenderer.renderFormatFieldRowClose(buffer, context, this); haveRenderedOpenFieldRow = false; } // render row formatting open formStringRenderer.renderFormatFieldRowOpen(buffer, context, this); haveRenderedOpenFieldRow = true; } // render title formatting open formStringRenderer.renderFormatFieldRowTitleCellOpen(buffer, context, currentFormField); // render title (unless this is a submit or a reset field) if (fieldInfo.getFieldType() != ModelFormField.FieldInfo.SUBMIT && fieldInfo.getFieldType() != ModelFormField.FieldInfo.RESET) { formStringRenderer.renderFieldTitle(buffer, context, currentFormField); } else { formStringRenderer.renderFormatEmptySpace(buffer, context, this); } // render title formatting close formStringRenderer.renderFormatFieldRowTitleCellClose(buffer, context, currentFormField); // render separator formStringRenderer.renderFormatFieldRowSpacerCell(buffer, context, currentFormField); // render widget formatting open formStringRenderer.renderFormatFieldRowWidgetCellOpen(buffer, context, currentFormField, positions, positionSpan, nextPositionInRow); // render widget currentFormField.renderFieldString(buffer, context, formStringRenderer); // render widget formatting close formStringRenderer.renderFormatFieldRowWidgetCellClose(buffer, context, currentFormField, positions, positionSpan, nextPositionInRow); } // always render row formatting close after the end formStringRenderer.renderFormatFieldRowClose(buffer, context, this); if (lastFieldGroup != null) { lastFieldGroup.renderEndString(buffer, context, formStringRenderer); } // render formatting wrapper close // should be handled by renderEndString //formStringRenderer.renderFormatSingleWrapperClose(buffer, context, this); // render form close if (!skipEnd) formStringRenderer.renderFormClose(buffer, context, this); } public void renderListFormString(StringBuffer buffer, Map context, FormStringRenderer formStringRenderer, int positions) { // render list/tabular type forms // render formatting wrapper open formStringRenderer.renderFormatListWrapperOpen(buffer, context, this); // ===== render header row ===== if (!getHideHeader()) { this.renderHeaderRow(buffer, context, formStringRenderer); } // ===== render the item rows ===== this.renderItemRows(buffer, context, formStringRenderer, true); // render formatting wrapper close formStringRenderer.renderFormatListWrapperClose(buffer, context, this); } public void renderMultiFormString(StringBuffer buffer, Map context, FormStringRenderer formStringRenderer, int positions) { formStringRenderer.renderFormOpen(buffer, context, this); // render formatting wrapper open formStringRenderer.renderFormatListWrapperOpen(buffer, context, this); // ===== render header row ===== this.renderHeaderRow(buffer, context, formStringRenderer); // ===== render the item rows ===== this.renderItemRows(buffer, context, formStringRenderer, false); formStringRenderer.renderFormatListWrapperClose(buffer, context, this); formStringRenderer.renderMultiFormClose(buffer, context, this); } public void renderHeaderRow(StringBuffer buffer, Map context, FormStringRenderer formStringRenderer) { formStringRenderer.renderFormatHeaderRowOpen(buffer, context, this); // render title for each field, except hidden & ignored, etc // start by rendering all display and hyperlink fields, until we //get to a field that should go into the form cell, then render //the form cell with all non-display and non-hyperlink fields, then //do a start after the first form input field and //render all display and hyperlink fields after the form // do the first part of display and hyperlink fields Iterator displayHyperlinkFieldIter = this.fieldList.iterator(); ModelFormField previousModelFormField = null; while (displayHyperlinkFieldIter.hasNext()) { ModelFormField modelFormField = (ModelFormField) displayHyperlinkFieldIter.next(); ModelFormField.FieldInfo fieldInfo = modelFormField.getFieldInfo(); // don't do any header for hidden or ignored fields if (fieldInfo.getFieldType() == ModelFormField.FieldInfo.HIDDEN || fieldInfo.getFieldType() == ModelFormField.FieldInfo.IGNORED) { continue; } //Modification Nicolas to support Two or more field with the same name and they are used with condition if (previousModelFormField != null && previousModelFormField.getTitle(context).equals(modelFormField.getTitle(context)) && !(previousModelFormField.isUseWhenEmpty() && modelFormField.isUseWhenEmpty())) { continue; } if (fieldInfo.getFieldType() != ModelFormField.FieldInfo.DISPLAY && fieldInfo.getFieldType() != ModelFormField.FieldInfo.DISPLAY_ENTITY && fieldInfo.getFieldType() != ModelFormField.FieldInfo.HYPERLINK) { // okay, now do the form cell break; } // DON'T check this for the header row, doesn't really make sense, should always show the header: if (!modelFormField.shouldUse(context)) { continue; } formStringRenderer.renderFormatHeaderRowCellOpen(buffer, context, this, modelFormField); formStringRenderer.renderFieldTitle(buffer, context, modelFormField); formStringRenderer.renderFormatHeaderRowCellClose(buffer, context, this, modelFormField); //Modification Nicolas previousModelFormField = modelFormField; } List headerFormFields = new LinkedList(); Iterator formFieldIter = this.fieldList.iterator(); //boolean isFirstFormHeader = true; while (formFieldIter.hasNext()) { ModelFormField modelFormField = (ModelFormField) formFieldIter.next(); ModelFormField.FieldInfo fieldInfo = modelFormField.getFieldInfo(); // don't do any header for hidden or ignored fields if (fieldInfo.getFieldType() == ModelFormField.FieldInfo.HIDDEN || fieldInfo.getFieldType() == ModelFormField.FieldInfo.IGNORED) { continue; } // skip all of the display/hyperlink fields if (fieldInfo.getFieldType() == ModelFormField.FieldInfo.DISPLAY || fieldInfo.getFieldType() == ModelFormField.FieldInfo.DISPLAY_ENTITY || fieldInfo.getFieldType() == ModelFormField.FieldInfo.HYPERLINK) { continue; } if (!modelFormField.shouldUse(context)) { continue; } headerFormFields.add(modelFormField); } // render the "form" cell formStringRenderer.renderFormatHeaderRowFormCellOpen(buffer, context, this); Iterator headerFormFieldIter = headerFormFields.iterator(); while (headerFormFieldIter.hasNext()) { ModelFormField modelFormField = (ModelFormField) headerFormFieldIter.next(); //ModelFormField.FieldInfo fieldInfo = modelFormField.getFieldInfo(); if (separateColumns || modelFormField.getSeparateColumn()) formStringRenderer.renderFormatItemRowCellOpen(buffer, context, this, modelFormField); // render title (unless this is a submit or a reset field) formStringRenderer.renderFieldTitle(buffer, context, modelFormField); if (separateColumns || modelFormField.getSeparateColumn()) formStringRenderer.renderFormatItemRowCellClose(buffer, context, this, modelFormField); if (headerFormFieldIter.hasNext()) { // TODO: determine somehow if this is the last one... how? if (!separateColumns && !modelFormField.getSeparateColumn()) formStringRenderer.renderFormatHeaderRowFormCellTitleSeparator(buffer, context, this, modelFormField, false); } } formStringRenderer.renderFormatHeaderRowFormCellClose(buffer, context, this); // render the rest of the display/hyperlink fields while (displayHyperlinkFieldIter.hasNext()) { ModelFormField modelFormField = (ModelFormField) displayHyperlinkFieldIter.next(); ModelFormField.FieldInfo fieldInfo = modelFormField.getFieldInfo(); // don't do any header for hidden or ignored fields
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -