#####################
# Layout of help view
#####################

# Location of the banner page to display in the top frame.
# Example: banner=/org.eclipse.help.webapp/advanced/banner.html
banner=

# Height of the banner frame
# Example: banner_height=60
banner_height=

# Location of the footer page to display in the bottom frame.
# Example: footer=/org.eclipse.help.webapp/advanced/banner.html
footer=

# Height of the footer frame
# Example: footer_height=60
footer_height=

# The page to show in the content area when opening help.
# Specify your html page as /pluginId/path/to/home.html.
# Currently, the default home is /org.eclipse.help/doc/help_home.html.
help_home=/org.eclipse.help.base/doc/help_home.html

# The page to show in the content area when a topic file cannot be opened
# If this variable is not specified the browser will show it's default 404 error page
page_not_found=/org.eclipse.help.base/doc/page_not_found.html

##############################
# css/presentation
##############################

# The css files below can each contain zero or more comma separated paths of the form /plugin/path
# If the string contains ${os} then that will be replaced with the name of the OS
# Any other parameters of the form ${parameter} are reserved for future use

# The css file to include in every non navigation page served by the help system 
topic_css=

# The css file to include in every navigation page generated by the help system 
nav_css=/PRODUCT_PLUGIN/book.css

# The css file to include in every page displayed in the help view or help tray 
narrow_css=/PRODUCT_PLUGIN/narrow_book.css,/PRODUCT_PLUGIN/${os}_narrow_book.css

# The css file to include in every disabled page served by help system 
disabled_css=/PRODUCT_PLUGIN/disabled_book.css

# The css file to include in every page served by the remote help system 
remote_css

# Set to true or false to control the visibility of the index view.
indexView=true

# Set to true or false to control the visibility of the filter dialog.
# Note that the filter dialog will not be shown if no scopes have been
# defined using the org.eclipse.help.base.scope extension point
filterDialog=false

# Set to true or false to control the visibility of the bookmarks view.
# Note: this option has no effect in the infocenter.
bookmarksView=true

# Set to true or false to control the title of the browser window.
# If true, the title will have a form "Help - <PRODUCT_NAME>",
# otherwise the title will be "<PRODUCT_NAME>", where <PRODUCT_NAME>
# is the name of Eclipse product set in the primary feature.
windowTitlePrefix=true

##############################
# Style of help view
##############################

# Directory containing images used in the help view.
# Images must have the same name as those in the org.eclipse.help.webapp
# plug-in.
# Use the /pluginID/directory format.
imagesDirectory=images

showBreadcrumbs=true

# CSS background for toolbars.
# Value is used in browsers that display advanced help UI.
advanced.toolbarBackground=ButtonFace

# CSS background for navigation views.
# Value is used in browsers that display advanced help UI.
advanced.viewBackground=

# CSS font for toolbars.
# Value is used in browsers that display advanced help UI.
advanced.toolbarFont=icon

# CSS font for navigation views.
# Value is used in browsers that display advanced help UI.
advanced.viewFont=icon

# Initial value for whether toc is synchronized with contents
advanced.syncDefault=true

# Background color for toolbars.
# Value is used in browsers displaying basic help UI.
basic.toolbarBackground=#D4D0C8

# Background color for navigation views.
# Value is used in browsers displaying basic help UI.
basic.viewBackground=#FFFFFF

######################
# Infocenter languages
######################

# List of locales that infocenter will recognize and provide a customized
# content for; if locales (or languages) accepted by client browser are not
# matched with any locales in this list, the browser will be served content for
# default locale - the server locale, or locale specified by eclipse -nl command
# line option; if list is not specified, the browser will be served contents
# for its preferred locale;  note: not providing this option may result in a
# large memory and disk space requirements as navigations and indexes will be
# created for each distinct preferred locale among browsers accessing the
# infocenter.
# Example: locales=en ja zh_CN zh_TW
locales=

###############################
# Pre-built documentation index
###############################

# If pre-built documentation index is provided with the product, the ID of
# the plug-in delivering the index must be specified to the help system here.
#productIndex=com.my.plugin

######################
# Browsers
######################
# Use embedded when possible (on Windows or Linux), or always external.  Setting
# to true will force use of external browser.  Option has no effect if embedded
# browser is not available on a given platform.
#always_external_browser=

# Default external browser.  ID of one of the external web browsers contributed
# to org.eclipse.help.base.browser extension point that help system will use.
# The browser's adapter available() method must return true on the current
# system.
#default_browser=

# Executable path for custom browser
#custom_browser_path=

######################
# Display of topics from disabled capabilities
######################
# Help system filters topics from disabled capabilities.  This option controls
# this behavior and existence of  Show All Topics button.
# 
# Accepted values: never, off, on, always
#  never - topic from disabled capabilities are not shown
#  off - user can choose to show all topics, disabled topics initially hidden
#  on - user can choose to show all topics, all topics initially shown
#  always - topic from disabled capabilities are shown (filtering disabled)
showDisabledActivityTopics=always

######################
# Active (live) help disabling
######################
# Allows enabling and disabling execution of active help
# The option has no effect in the infocenter setup, where active help is
# disabled.
# Accepted values:
#  true - default active help actions enabled
#  false - active help framework disabled
activeHelp=true

#########################
# Remote help
#########################
remoteHelpOn=false
remoteHelpName=
remoteHelpHost=
remoteHelpPath=
remoteHelpProtocol=
remoteHelpUseDefaultPort=
remoteHelpPort=
remoteHelpICEnabled=
#########################
# Internal
#########################

indexInstruction=true
indexButton=true
indexPlusMinus=true
indexExpandAll=false
highlight-on=true

#########################
# Infocenter Security
#########################
# Increases security  by preventing urls referencing external sites from being passed
# in as the topic parameter. 
restrictTopicParameter=true

########################
# Properties defined for Quick Print
########################
# Max connection numbers for concurrent print(print selected topic and all subtopics)
# Assign a value no greater than Integer.MAX_VALUE
# Assign nothing to accept the default settings of the application
# Example: maxConnections=
maxConnections=10

# Max topic numbers allowed for print in one request
# Assign a value no greater than Integer.MAX_VALUE
# Assign nothing to accept the default settings of the application
# Example: maxTopics=
maxTopics=500

#########################
# Search Results
#########################
showSearchDescription=true
showSearchCategories=false