###############################################################################
# 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.
###############################################################################

# Enable HTML whitespace compression; deprecated: use output specific "compress" setting instead; see for example screen.compress
#compress.HTML=true

# Enable screen widget boundary comments.
# A setting of true will enable widget boundary comments. The true setting can be
# overridden in an application's web.xml file or in the screen rendering context.
# A setting of false will override all other settings and disable all widget
# boundary comments. 
widget.verbose=true

# Default number of items to be displayed per page in a list form
widget.form.defaultViewSize=20

# Default number of items to be displayed in lookup ajax autocompleter
widget.autocompleter.defaultViewSize=10

# Default minimum number of characters an user has to type before the ajax autocompleter activates (jQuery default is 1)
widget.autocompleter.defaultMinLength=2

# Default delay in milliseconds the Autocomplete waits after a keystroke to activate itself. A zero-delay makes sense for local data (more responsive), but can produce a lot of load for remote data, while being less responsive.
widget.autocompleter.defaultDelay=300

# Show/hide the ID field that is returned from ajax autocompleter
widget.autocompleter.displayReturnField=Y

# Show/hide description for lookup field
widget.lookup.showDescription=Y

# Default text find field's option
widget.form.defaultTextFindOption=contains

# Controls whether to display help text tooltips for form field titles
widget.form.displayhelpText=Y

# Controls the initial results display in Find screens. If set to Y, the
# search result list will be populated when the Find screen first appears.
# If set to N, the search result list will be empty when the Find screen
# first appears.
widget.defaultNoConditionFind=N

# Configurations for the Widget View Handlers implemented using the MacroScreenViewHandler
#
# html output
screen.name=html
screen.screenrenderer=component://widget/templates/htmlScreenMacroLibrary.ftl
screen.formrenderer=component://widget/templates/htmlFormMacroLibrary.ftl
screen.menurenderer=component://widget/templates/htmlMenuMacroLibrary.ftl
screen.treerenderer=component://widget/templates/htmlTreeMacroLibrary.ftl
screen.encoder=html
screen.compress=false
screen.default.contenttype=UTF-8
screen.default.encoding=none
# text output
screentext.name=text
screentext.screenrenderer=component://widget/templates/textScreenMacroLibrary.ftl
screentext.formrenderer=component://widget/templates/textFormMacroLibrary.ftl
screentext.treerenderer=component://widget/templates/textTreeMacroLibrary.ftl
screentext.default.contenttype=UTF-8
screentext.default.encoding=none
# xml output
screenxml.name=xml
screenxml.screenrenderer=component://widget/templates/xmlScreenMacroLibrary.ftl
screenxml.formrenderer=component://widget/templates/xmlFormMacroLibrary.ftl
screenxml.treerenderer=component://widget/templates/xmlTreeMacroLibrary.ftl
screenxml.encoder=xml
screenxml.default.contenttype=UTF-8
screenxml.default.encoding=none
# fo output
screenfop.name=xsl-fo
screenfop.screenrenderer=component://widget/templates/foScreenMacroLibrary.ftl
screenfop.formrenderer=component://widget/templates/foFormMacroLibrary.ftl
screenfop.treerenderer=component://widget/templates/foTreeMacroLibrary.ftl
screenfop.default.contenttype=application/pdf
screenfop.default.encoding=none
# csv output
screencsv.name=csv
screencsv.screenrenderer=component://widget/templates/csvScreenMacroLibrary.ftl
screencsv.formrenderer=component://widget/templates/csvFormMacroLibrary.ftl
screencsv.treerenderer=component://widget/templates/csvTreeMacroLibrary.ftl
screencsv.default.contenttype=UTF-8
screencsv.default.encoding=none
