/******************************************************************************* | |
* Licensed to the Apache Software Foundation (ASF) under one | |
* or more contributor license agreements. See the NOTICE file | |
* distributed with this work for additional information | |
* regarding copyright ownership. The ASF licenses this file | |
* to you under the Apache License, Version 2.0 (the | |
* "License"); you may not use this file except in compliance | |
* with the License. You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, | |
* software distributed under the License is distributed on an | |
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
* KIND, either express or implied. See the License for the | |
* specific language governing permissions and limitations | |
* under the License. | |
*******************************************************************************/ | |
package org.ofbiz.widget.model; | |
import java.util.Collection; | |
import java.util.Map; | |
import org.ofbiz.widget.model.HtmlWidget.HtmlTemplate; | |
import org.ofbiz.widget.model.HtmlWidget.HtmlTemplateDecorator; | |
import org.ofbiz.widget.model.HtmlWidget.HtmlTemplateDecoratorSection; | |
import org.ofbiz.widget.model.ModelScreenWidget.Column; | |
import org.ofbiz.widget.model.ModelScreenWidget.ColumnContainer; | |
import org.ofbiz.widget.model.ModelScreenWidget.Container; | |
import org.ofbiz.widget.model.ModelScreenWidget.Content; | |
import org.ofbiz.widget.model.ModelScreenWidget.DecoratorScreen; | |
import org.ofbiz.widget.model.ModelScreenWidget.DecoratorSection; | |
import org.ofbiz.widget.model.ModelScreenWidget.DecoratorSectionInclude; | |
import org.ofbiz.widget.model.ModelScreenWidget.Form; | |
import org.ofbiz.widget.model.ModelScreenWidget.HorizontalSeparator; | |
import org.ofbiz.widget.model.ModelScreenWidget.IncludeScreen; | |
import org.ofbiz.widget.model.ModelScreenWidget.Label; | |
import org.ofbiz.widget.model.ModelScreenWidget.Menu; | |
import org.ofbiz.widget.model.ModelScreenWidget.PlatformSpecific; | |
import org.ofbiz.widget.model.ModelScreenWidget.PortalPage; | |
import org.ofbiz.widget.model.ModelScreenWidget.ScreenImage; | |
import org.ofbiz.widget.model.ModelScreenWidget.ScreenLink; | |
import org.ofbiz.widget.model.ModelScreenWidget.Screenlet; | |
import org.ofbiz.widget.model.ModelScreenWidget.Section; | |
import org.ofbiz.widget.model.ModelScreenWidget.Tree; | |
import org.ofbiz.widget.model.ModelTree.ModelNode; | |
import org.ofbiz.widget.model.ModelTree.ModelNode.ModelSubNode; | |
/** | |
* An object that generates an XML representation from widget models. | |
* The generated XML is unformatted - if you want to | |
* "pretty print" the XML, then use a transformer. | |
* | |
*/ | |
public class XmlWidgetVisitor extends XmlAbstractWidgetVisitor implements ModelWidgetVisitor { | |
private final ModelFieldVisitor fieldVisitor; | |
private final ModelActionVisitor actionVisitor; | |
private final ModelConditionVisitor conditionVisitor; | |
public XmlWidgetVisitor(Appendable writer) { | |
super(writer); | |
this.fieldVisitor = new XmlWidgetFieldVisitor(writer); | |
this.actionVisitor = new XmlWidgetActionVisitor(writer); | |
this.conditionVisitor = new XmlWidgetConditionVisitor(writer); | |
} | |
@Override | |
public void visit(Column column) throws Exception { | |
writer.append("<column"); | |
visitModelWidget(column); | |
visitAttribute("id", column.getIdExdr()); | |
visitAttribute("style", column.getStyleExdr()); | |
writer.append(">"); | |
visitSubWidgets(column.getSubWidgets()); | |
writer.append("</column>"); | |
} | |
@Override | |
public void visit(ColumnContainer columnContainer) throws Exception { | |
writer.append("<column-container"); | |
visitModelWidget(columnContainer); | |
visitAttribute("id", columnContainer.getIdExdr()); | |
visitAttribute("style", columnContainer.getStyleExdr()); | |
writer.append(">"); | |
visitSubWidgets(columnContainer.getColumns()); | |
writer.append("</column-container>"); | |
} | |
@Override | |
public void visit(Container container) throws Exception { | |
writer.append("<container"); | |
visitModelWidget(container); | |
visitAttribute("auto-update-interval", container.getAutoUpdateInterval()); | |
visitAttribute("auto-update-target", container.getAutoUpdateTargetExdr()); | |
visitAttribute("id", container.getIdExdr()); | |
visitAttribute("style", container.getStyleExdr()); | |
writer.append(">"); | |
visitSubWidgets(container.getSubWidgets()); | |
writer.append("</container>"); | |
} | |
@Override | |
public void visit(Content content) throws Exception { | |
writer.append("<content"); | |
visitModelWidget(content); | |
visitAttribute("border", content.getBorder()); | |
visitAttribute("content-id", content.getContentId()); | |
visitAttribute("dataresource-id", content.getDataResourceId()); | |
visitAttribute("edit-container-style", content.getEditContainerStyle()); | |
visitAttribute("edit-request", content.getEditRequest()); | |
visitAttribute("enable-edit-name", content.getEnableEditName()); | |
visitAttribute("height", content.getHeight()); | |
visitAttribute("width", content.getWidth()); | |
visitAttribute("xml-escape", content.xmlEscape()); | |
writer.append("/>"); | |
} | |
@Override | |
public void visit(DecoratorScreen decoratorScreen) throws Exception { | |
writer.append("<decorator-screen"); | |
visitModelWidget(decoratorScreen); | |
visitAttribute("location", decoratorScreen.getLocationExdr()); | |
writer.append(">"); | |
visitSubWidgets(decoratorScreen.getSectionMap().values()); | |
writer.append("</decorator-screen>"); | |
} | |
@Override | |
public void visit(DecoratorSection decoratorSection) throws Exception { | |
writer.append("<decorator-section"); | |
visitModelWidget(decoratorSection); | |
writer.append(">"); | |
visitSubWidgets(decoratorSection.getSubWidgets()); | |
writer.append("</decorator-screen>"); | |
} | |
@Override | |
public void visit(DecoratorSectionInclude decoratorSectionInclude) throws Exception { | |
writer.append("<decorator-section-include"); | |
visitModelWidget(decoratorSectionInclude); | |
writer.append("/>"); | |
} | |
@Override | |
public void visit(Form form) throws Exception { | |
writer.append("<include-form"); | |
visitModelWidget(form); | |
visitAttribute("location", form.getLocationExdr()); | |
visitAttribute("share-scope", form.getShareScopeExdr()); | |
writer.append("/>"); | |
} | |
@Override | |
public void visit(HorizontalSeparator horizontalSeparator) throws Exception { | |
writer.append("<horizontal-separator"); | |
visitModelWidget(horizontalSeparator); | |
visitAttribute("id", horizontalSeparator.getIdExdr()); | |
visitAttribute("style", horizontalSeparator.getStyleExdr()); | |
writer.append("/>"); | |
} | |
@Override | |
public void visit(HtmlTemplate htmlTemplate) throws Exception { | |
writer.append("<html-template"); | |
visitModelWidget(htmlTemplate); | |
visitAttribute("location", htmlTemplate.getLocationExdr()); | |
writer.append("/>"); | |
} | |
@Override | |
public void visit(HtmlTemplateDecorator htmlTemplateDecorator) throws Exception { | |
writer.append("<html-template-decorator"); | |
visitModelWidget(htmlTemplateDecorator); | |
visitAttribute("location", htmlTemplateDecorator.getLocationExdr()); | |
writer.append(">"); | |
visitSubWidgets(htmlTemplateDecorator.getSectionMap().values()); | |
writer.append("</html-template-decorator>"); | |
} | |
@Override | |
public void visit(HtmlTemplateDecoratorSection htmlTemplateDecoratorSection) throws Exception { | |
writer.append("<html-template-decorator-section"); | |
visitModelWidget(htmlTemplateDecoratorSection); | |
writer.append(">"); | |
visitSubWidgets(htmlTemplateDecoratorSection.getSubWidgets()); | |
writer.append("</html-template-decorator-section>"); | |
} | |
@Override | |
public void visit(HtmlWidget htmlWidget) throws Exception { | |
visitSubWidgets(htmlWidget.getSubWidgets()); | |
} | |
@Override | |
public void visit(IncludeScreen includeScreen) throws Exception { | |
writer.append("<include-screen"); | |
visitModelWidget(includeScreen); | |
visitAttribute("location", includeScreen.getLocationExdr()); | |
visitAttribute("share-scope", includeScreen.getShareScopeExdr()); | |
writer.append("/>"); | |
} | |
@Override | |
public void visit(IterateSectionWidget iterateSectionWidget) throws Exception { | |
writer.append("<iterate-section"); | |
visitModelWidget(iterateSectionWidget); | |
visitAttribute("entry", iterateSectionWidget.getEntryNameExdr()); | |
visitAttribute("key", iterateSectionWidget.getKeyNameExdr()); | |
visitAttribute("list", iterateSectionWidget.getListNameExdr()); | |
visitAttribute("paginate", iterateSectionWidget.getPaginate()); | |
visitAttribute("paginate-target", iterateSectionWidget.getPaginateTarget()); | |
visitAttribute("view-size", iterateSectionWidget.getViewSize()); | |
writer.append(">"); | |
visitSubWidgets(iterateSectionWidget.getSectionList()); | |
writer.append("</iterate-section>"); | |
} | |
@Override | |
public void visit(Label label) throws Exception { | |
writer.append("<label"); | |
visitModelWidget(label); | |
visitAttribute("id", label.getIdExdr()); | |
visitAttribute("style", label.getStyleExdr()); | |
writer.append(">"); | |
writer.append(label.getTextExdr().getOriginal()); | |
writer.append("</label>"); | |
} | |
@Override | |
public void visit(Menu menu) throws Exception { | |
writer.append("<include-menu"); | |
visitModelWidget(menu); | |
visitAttribute("location", menu.getLocationExdr()); | |
writer.append("/>"); | |
} | |
@Override | |
public void visit(ModelForm modelForm) throws Exception { | |
writer.append("<form"); | |
visitModelWidget(modelForm); | |
if (modelForm.getParentModelForm() != null) { | |
visitAttribute("extends", modelForm.getParentModelForm().getName()); | |
visitAttribute("extends-resource", modelForm.getParentModelForm().getFormLocation()); | |
} | |
visitAttribute("view-size", modelForm.getDefaultViewSize()); | |
visitAttribute("type", modelForm.getType()); | |
visitAttribute("target", modelForm.getTarget()); | |
visitAttribute("id", modelForm.getContainerId()); | |
visitAttribute("style", modelForm.getContainerStyle()); | |
visitAttribute("title", modelForm.getTitle()); | |
visitAttribute("tooltip", modelForm.getTooltip()); | |
visitAttribute("list-name", modelForm.getListName()); | |
visitAttribute("list-entry-name", modelForm.getListEntryName()); | |
visitAttribute("default-entity-name", modelForm.getDefaultEntityName()); | |
visitAttribute("default-service-name", modelForm.getDefaultServiceName()); | |
visitAttribute("form-title-area-style", modelForm.getFormTitleAreaStyle()); | |
visitAttribute("form-widget-area-style", modelForm.getFormWidgetAreaStyle()); | |
visitAttribute("default-title-area-style", modelForm.getDefaultTitleAreaStyle()); | |
visitAttribute("default-widget-area-style", modelForm.getDefaultWidgetAreaStyle()); | |
visitAttribute("odd-row-style", modelForm.getOddRowStyle()); | |
visitAttribute("even-row-style", modelForm.getEvenRowStyle()); | |
visitAttribute("default-table-style", modelForm.getDefaultTableStyle()); | |
visitAttribute("header-row-style", modelForm.getHeaderRowStyle()); | |
visitAttribute("default-title-style", modelForm.getDefaultTitleStyle()); | |
visitAttribute("default-widget-style", modelForm.getDefaultWidgetStyle()); | |
visitAttribute("default-tooltip-style", modelForm.getDefaultTooltipStyle()); | |
visitAttribute("item-index-separator", modelForm.getItemIndexSeparator()); | |
visitAttribute("separate-columns", modelForm.getSeparateColumns()); | |
visitAttribute("group-columns", modelForm.getGroupColumns()); | |
visitAttribute("target-type", modelForm.getTargetType()); | |
visitAttribute("default-map-name", modelForm.getDefaultMapName()); | |
visitAttribute("target-window", modelForm.getTargetWindow()); | |
visitAttribute("hide-header", modelForm.getHideHeader()); | |
visitAttribute("client-autocomplete-fields", modelForm.getClientAutocompleteFields()); | |
visitAttribute("paginate-target", modelForm.getPaginateTarget()); | |
visitAttribute("sort-field-parameter-name", modelForm.getSortFieldParameterName()); | |
visitAttribute("default-required-field-style", modelForm.getDefaultRequiredFieldStyle()); | |
visitAttribute("default-sort-field-style", modelForm.getDefaultSortFieldStyle()); | |
visitAttribute("default-sort-field-asc-style", modelForm.getDefaultSortFieldAscStyle()); | |
visitAttribute("default-sort-field-desc-style", modelForm.getDefaultSortFieldDescStyle()); | |
visitAttribute("paginate-target-anchor", modelForm.getPaginateTargetAnchor()); | |
visitAttribute("paginate-index-field", modelForm.getPaginateIndexField()); | |
visitAttribute("paginate-size-field", modelForm.getPaginateSizeField()); | |
visitAttribute("override-list-size", modelForm.getOverrideListSize()); | |
visitAttribute("paginate-first-label", modelForm.getPaginateFirstLabel()); | |
visitAttribute("paginate-previous-label", modelForm.getPaginatePreviousLabel()); | |
visitAttribute("paginate-next-label", modelForm.getPaginateNextLabel()); | |
visitAttribute("paginate-last-label", modelForm.getPaginateLastLabel()); | |
visitAttribute("paginate-viewsize-label", modelForm.getPaginateViewSizeLabel()); | |
visitAttribute("paginate-style", modelForm.getPaginateStyle()); | |
visitAttribute("paginate", modelForm.getPaginate()); | |
visitAttribute("skip-start", modelForm.getSkipStart()); | |
visitAttribute("skip-end", modelForm.getSkipEnd()); | |
visitAttribute("use-row-submit", modelForm.getUseRowSubmit()); | |
visitAttribute("row-count", modelForm.getRowCount()); | |
visitAttribute("focus-field-name", modelForm.getFocusFieldName()); | |
writer.append(">"); | |
if (!modelForm.getActions().isEmpty()) { | |
writer.append("<actions>"); | |
visitActions(modelForm.getActions()); | |
writer.append("</actions>"); | |
} | |
if (!modelForm.getRowActions().isEmpty()) { | |
writer.append("<row-actions>"); | |
visitActions(modelForm.getRowActions()); | |
writer.append("</row-actions>"); | |
} | |
for (ModelForm.AltRowStyle rowStyle : modelForm.getAltRowStyles()) { | |
writer.append("<alt-row-style"); | |
visitAttribute("use-when", rowStyle.useWhen); | |
visitAttribute("style", rowStyle.style); | |
writer.append("/>"); | |
} | |
for (ModelForm.AltTarget target : modelForm.getAltTargets()) { | |
writer.append("<alt-target"); | |
visitAttribute("use-when", target.useWhen); | |
visitAttribute("target", target.targetExdr); | |
writer.append("/>"); | |
} | |
for (ModelForm.AutoFieldsService service : modelForm.getAutoFieldsServices()) { | |
writer.append("<auto-fields-service"); | |
visitAttribute("service-name", service.serviceName); | |
visitAttribute("map-name", service.mapName); | |
visitAttribute("default-field-type", service.defaultFieldType); | |
visitAttribute("default-position", service.defaultPosition); | |
writer.append("/>"); | |
} | |
for (ModelForm.AutoFieldsEntity entity : modelForm.getAutoFieldsEntities()) { | |
writer.append("<auto-fields-entity"); | |
visitAttribute("entity-name", entity.entityName); | |
visitAttribute("map-name", entity.mapName); | |
visitAttribute("default-field-type", entity.defaultFieldType); | |
visitAttribute("default-position", entity.defaultPosition); | |
writer.append("/>"); | |
} | |
for (ModelFormField field : modelForm.getFieldList()) { | |
field.getFieldInfo().accept(fieldVisitor); | |
} | |
visitUpdateAreas(modelForm.getOnPaginateUpdateAreas()); | |
visitUpdateAreas(modelForm.getOnSortColumnUpdateAreas()); | |
visitUpdateAreas(modelForm.getOnSubmitUpdateAreas()); | |
writer.append("</form>"); | |
} | |
@Override | |
public void visit(ModelMenu modelMenu) throws Exception { | |
writer.append("<menu"); | |
visitModelWidget(modelMenu); | |
if (modelMenu.getParentMenu() != null) { | |
visitAttribute("extends", modelMenu.getParentMenu().getName()); | |
visitAttribute("extends-resource", modelMenu.getParentMenu().getMenuLocation()); | |
} | |
visitAttribute("type", modelMenu.getType()); | |
visitAttribute("target", modelMenu.getTarget()); | |
visitAttribute("id", modelMenu.getId()); | |
visitAttribute("title", modelMenu.getTitle()); | |
visitAttribute("tooltip", modelMenu.getTooltip()); | |
visitAttribute("default-entity-name", modelMenu.getDefaultEntityName()); | |
visitAttribute("default-title-style", modelMenu.getDefaultTitleStyle()); | |
visitAttribute("default-selected-style", modelMenu.getDefaultSelectedStyle()); | |
visitAttribute("default-widget-style", modelMenu.getDefaultWidgetStyle()); | |
visitAttribute("default-tooltip-style", modelMenu.getDefaultTooltipStyle()); | |
visitAttribute("default-menu-item-name", modelMenu.getDefaultMenuItemName()); | |
visitAttribute("default-permission-operation", modelMenu.getDefaultPermissionOperation()); | |
visitAttribute("default-permission-entity-action", modelMenu.getDefaultPermissionEntityAction()); | |
visitAttribute("default-associated-content-id", modelMenu.getDefaultAssociatedContentId()); | |
visitAttribute("orientation", modelMenu.getOrientation()); | |
visitAttribute("menu-width", modelMenu.getMenuWidth()); | |
visitAttribute("default-cell-width", modelMenu.getDefaultCellWidth()); | |
visitAttribute("default-hide-if-selected", modelMenu.getDefaultHideIfSelected()); | |
visitAttribute("default-disabled-title-style", modelMenu.getDefaultDisabledTitleStyle()); | |
visitAttribute("selected-menuitem-context-field-name", modelMenu.getSelectedMenuItemContextFieldName()); | |
visitAttribute("menu-container-style", modelMenu.getMenuContainerStyleExdr()); | |
visitAttribute("default-align", modelMenu.getDefaultAlign()); | |
visitAttribute("default-align-style", modelMenu.getDefaultAlignStyle()); | |
visitAttribute("fill-style", modelMenu.getFillStyle()); | |
visitAttribute("extra-index", modelMenu.getExtraIndex()); | |
writer.append(">"); | |
if (!modelMenu.getActions().isEmpty()) { | |
writer.append("<actions>"); | |
visitActions(modelMenu.getActions()); | |
writer.append("</actions>"); | |
} | |
for (ModelMenuItem menuItem : modelMenu.getMenuItemList()) { | |
menuItem.accept(this); | |
} | |
writer.append("</menu>"); | |
} | |
@Override | |
public void visit(ModelMenuItem modelMenuItem) throws Exception { | |
writer.append("<menu-item"); | |
visitModelWidget(modelMenuItem); | |
visitAttribute("entity-name", modelMenuItem.getEntityName()); | |
visitAttribute("title", modelMenuItem.getTitle()); | |
visitAttribute("tooltip", modelMenuItem.getTooltip()); | |
visitAttribute("parent-portal-page-value", modelMenuItem.getParentPortalPageId()); | |
visitAttribute("title-style", modelMenuItem.getTitleStyle()); | |
visitAttribute("disabled-title-style", modelMenuItem.getDisabledTitleStyle()); | |
visitAttribute("widget-style", modelMenuItem.getWidgetStyle()); | |
visitAttribute("tooltip-style", modelMenuItem.getTooltipStyle()); | |
visitAttribute("selected-style", modelMenuItem.getSelectedStyle()); | |
visitAttribute("hide-if-selected", modelMenuItem.getHideIfSelected()); | |
visitAttribute("disable-if-empty", modelMenuItem.getDisableIfEmpty()); | |
visitAttribute("align", modelMenuItem.getAlign()); | |
visitAttribute("align-style", modelMenuItem.getAlignStyle()); | |
visitAttribute("position", modelMenuItem.getPosition()); | |
visitAttribute("associated-content-id", modelMenuItem.getAssociatedContentId()); | |
visitAttribute("cell-width", modelMenuItem.getCellWidth()); | |
visitAttribute("sub-menu", modelMenuItem.getSubMenu()); | |
writer.append(">"); | |
if (modelMenuItem.getCondition() != null) { | |
modelMenuItem.getCondition().getCondition().accept(conditionVisitor); | |
} | |
if (!modelMenuItem.getActions().isEmpty()) { | |
writer.append("<actions>"); | |
visitActions(modelMenuItem.getActions()); | |
writer.append("</actions>"); | |
} | |
if (modelMenuItem.getLink() != null) { | |
visitLink(modelMenuItem.getLink().getLink()); | |
} | |
for (ModelMenuItem menuItem : modelMenuItem.getMenuItemList()) { | |
menuItem.accept(this); | |
; | |
} | |
writer.append("</menu-item>"); | |
} | |
@Override | |
public void visit(ModelNode modelNode) throws Exception { | |
writer.append("<node"); | |
visitModelWidget(modelNode); | |
visitAttribute("expand-collapse-style", modelNode.getExpandCollapseStyle()); | |
visitAttribute("wrap-style", modelNode.getWrapStyleExdr()); | |
visitAttribute("render-style", modelNode.getRenderStyle()); | |
visitAttribute("entry-name", modelNode.getEntryName()); | |
visitAttribute("entity-name", modelNode.getEntityName()); | |
visitAttribute("join-field-name", modelNode.getPkName()); | |
writer.append(">"); | |
if (modelNode.getCondition() != null) { | |
modelNode.getCondition().getCondition().accept(conditionVisitor); | |
} | |
if (!modelNode.getActions().isEmpty()) { | |
writer.append("<actions>"); | |
visitActions(modelNode.getActions()); | |
writer.append("</actions>"); | |
} | |
if (!modelNode.getScreenNameExdr().isEmpty()) { | |
writer.append("<include-screen"); | |
visitAttribute("name", modelNode.getScreenNameExdr()); | |
visitAttribute("location", modelNode.getScreenLocationExdr()); | |
visitAttribute("share-scope", modelNode.getShareScope()); | |
visitAttribute("name", modelNode.getScreenNameExdr()); | |
writer.append("/>"); | |
} | |
if (modelNode.getLabel() != null) { | |
ModelNode.Label label = modelNode.getLabel(); | |
writer.append("<label"); | |
visitAttribute("id", label.getIdExdr()); | |
visitAttribute("style", label.getStyleExdr()); | |
writer.append(">"); | |
writer.append(label.getTextExdr().getOriginal()); | |
writer.append("</label>"); | |
} | |
if (modelNode.getLink() != null) { | |
ModelNode.Link link = modelNode.getLink(); | |
writer.append("<link"); | |
visitAttribute("encode", link.getEncode()); | |
visitAttribute("full-path", link.getFullPath()); | |
visitAttribute("id", link.getIdExdr()); | |
visitAttribute("link-type", link.getLinkType()); | |
visitAttribute("prefix", link.getPrefixExdr()); | |
visitAttribute("secure", link.getSecure()); | |
visitAttribute("style", link.getStyleExdr()); | |
visitAttribute("target", link.getTargetExdr()); | |
visitAttribute("target-window", link.getTargetWindowExdr()); | |
visitAttribute("text", link.getTextExdr()); | |
visitAttribute("url-mode", link.getUrlMode()); | |
if (!link.getParameterList().isEmpty()) { | |
writer.append(">"); | |
visitParameters(link.getParameterList()); | |
writer.append("</link>"); | |
} else { | |
writer.append("/>"); | |
} | |
} | |
writer.append("</node>"); | |
} | |
@Override | |
public void visit(ModelScreen modelScreen) throws Exception { | |
writer.append("<screen"); | |
visitModelWidget(modelScreen); | |
visitAttribute("transaction-timeout", modelScreen.getTransactionTimeout()); | |
visitAttribute("use-transaction", modelScreen.getUseTransaction()); | |
visitAttribute("use-cache", modelScreen.getUseCache()); | |
writer.append(">"); | |
modelScreen.getSection().accept(this); | |
writer.append("</screen>"); | |
} | |
@Override | |
public void visit(ModelSubNode modelSubNode) throws Exception { | |
writer.append("<sub-node"); | |
visitModelWidget(modelSubNode); | |
visitAttribute("node-name", modelSubNode.getNodeNameExdr()); | |
writer.append(">"); | |
if (!modelSubNode.getActions().isEmpty()) { | |
writer.append("<actions>"); | |
visitActions(modelSubNode.getActions()); | |
writer.append("</actions>"); | |
} | |
writer.append("</sub-node>"); | |
} | |
@Override | |
public void visit(ModelTree modelTree) throws Exception { | |
writer.append("<tree"); | |
visitModelWidget(modelTree); | |
visitAttribute("root-node-name", modelTree.getRootNodeName()); | |
visitAttribute("default-render-style", modelTree.getDefaultRenderStyle()); | |
visitAttribute("render-style", modelTree.getDefaultRenderStyle()); | |
visitAttribute("default-wrap-style", modelTree.getDefaultWrapStyleExdr()); | |
visitAttribute("expand-collapse-request", modelTree.getExpandCollapseRequestExdr()); | |
visitAttribute("trail-name", modelTree.getTrailNameExdr()); | |
visitAttribute("force-child-check", modelTree.getForceChildCheck()); | |
visitAttribute("entity-name", modelTree.getDefaultEntityName()); | |
visitAttribute("open-depth", modelTree.getOpenDepth()); | |
visitAttribute("post-trail-open-depth", modelTree.getPostTrailOpenDepth()); | |
writer.append(">"); | |
visitSubWidgets(modelTree.getNodeMap().values()); | |
writer.append("</tree>"); | |
} | |
@Override | |
public void visit(PlatformSpecific platformSpecific) throws Exception { | |
writer.append("<platform-specific>"); | |
for (Map.Entry<String, ModelScreenWidget> entry : platformSpecific.getSubWidgets().entrySet()) { | |
writer.append("<").append(entry.getKey()).append(">"); | |
entry.getValue().accept(this); | |
writer.append("</").append(entry.getKey()).append(">"); | |
} | |
writer.append("</platform-specific>"); | |
} | |
@Override | |
public void visit(PortalPage portalPage) throws Exception { | |
writer.append("<include-portal-page"); | |
visitModelWidget(portalPage); | |
visitAttribute("id", portalPage.getIdExdr()); | |
visitAttribute("conf-mode", portalPage.getConfModeExdr()); | |
visitAttribute("use-private", portalPage.getUsePrivate()); | |
writer.append("/>"); | |
} | |
@Override | |
public void visit(ScreenImage image) throws Exception { | |
visitImage(image.getImage()); | |
} | |
@Override | |
public void visit(Screenlet screenlet) throws Exception { | |
writer.append("<screenlet"); | |
visitModelWidget(screenlet); | |
visitAttribute("id", screenlet.getIdExdr()); | |
visitAttribute("collapsible", screenlet.getCollapsible()); | |
visitAttribute("initially-collapsed", screenlet.getInitiallyCollapsed()); | |
visitAttribute("save-collapsed", screenlet.getSaveCollapsed()); | |
visitAttribute("padded", screenlet.getPadded()); | |
visitAttribute("title", screenlet.getTitleExdr()); | |
writer.append(">"); | |
visitSubWidgets(screenlet.getSubWidgets()); | |
writer.append("</screenlet>"); | |
} | |
@Override | |
public void visit(ScreenLink link) throws Exception { | |
visitLink(link.getLink()); | |
} | |
@Override | |
public void visit(Section section) throws Exception { | |
writer.append("<section"); | |
visitModelWidget(section); | |
writer.append(">"); | |
if (section.getCondition() != null) { | |
writer.append("<condition>"); | |
section.getCondition().accept(conditionVisitor); | |
writer.append("</condition>"); | |
} | |
if (!section.getActions().isEmpty()) { | |
writer.append("<actions>"); | |
visitActions(section.getActions()); | |
writer.append("</actions>"); | |
} | |
if (!section.getSubWidgets().isEmpty()) { | |
writer.append("<widgets>"); | |
visitSubWidgets(section.getSubWidgets()); | |
writer.append("</widgets>"); | |
} | |
if (!section.getFailWidgets().isEmpty()) { | |
writer.append("<fail-widgets>"); | |
visitSubWidgets(section.getFailWidgets()); | |
writer.append("</fail-widgets>"); | |
} | |
writer.append("</section>"); | |
} | |
@Override | |
public void visit(Tree tree) throws Exception { | |
writer.append("<include-tree"); | |
visitModelWidget(tree); | |
visitAttribute("location", tree.getLocationExdr()); | |
visitAttribute("share-scope", tree.getShareScopeExdr()); | |
writer.append("/>"); | |
} | |
private void visitActions(Collection<? extends ModelAction> actions) throws Exception { | |
for (ModelAction action : actions) { | |
action.accept(actionVisitor); | |
} | |
} | |
private void visitSubWidgets(Collection<? extends ModelWidget> subWidgets) throws Exception { | |
for (ModelWidget subWidget : subWidgets) { | |
subWidget.accept(this); | |
} | |
} | |
private void visitUpdateAreas(Collection<ModelForm.UpdateArea> updateAreas) throws Exception { | |
for (ModelForm.UpdateArea updateArea : updateAreas) { | |
writer.append("<on-event-update-area"); | |
visitAttribute("event-type", updateArea.getEventType()); | |
visitAttribute("area-id", updateArea.getAreaId()); | |
visitAttribute("area-target", updateArea.getAreaTarget()); | |
writer.append(">"); | |
visitAutoEntityParameters(updateArea.getAutoEntityParameters()); | |
visitAutoServiceParameters(updateArea.getAutoServiceParameters()); | |
visitParameters(updateArea.getParameterList()); | |
writer.append("</on-event-update-area>"); | |
} | |
} | |
} |