# plugin_customization.ini 
# sets default values for plug-in-specific preferences
# keys are qualified by plug-in id
# e.g., com.example.acmeplugin/myproperty=myvalue
# java.io.Properties file (ISO 8859-1 with "\" escapes)
# "%key" are externalized strings defined in plugin_customization.properties
# This file does not need to be translated.

#-----------------------------------------
# Startup and Workbench settings
#-----------------------------------------
# show progress on startup
org.eclipse.ui/SHOW_PROGRESS_ON_STARTUP = true

# use the window set by default
org.eclipse.ui/USE_WINDOW_WORKING_SET_BY_DEFAULT=true

# Property "org.eclipse.ui/defaultPerspectiveId" controls the 
# perspective that the workbench opens initially
org.eclipse.ui/defaultPerspectiveId=org.eclipse.blockchain.ui.perspective

# new-style tabs by default
org.eclipse.ui/SHOW_TRADITIONAL_STYLE_TABS=false

# put the perspective switcher on the top right
org.eclipse.ui/DOCK_PERSPECTIVE_BAR=topRight

# disable in place editors
org.eclipse.ui/DISABLE_OPEN_EDITOR_IN_PLACE=true

org.eclipse.ui/DOCK_PERSPECTIVE_BAR=topRight
org.eclipse.ui/ENABLE_ANIMATIONS=false
org.eclipse.ui/SHOW_TRADITIONAL_STYLE_TABS=false

# Enable auto refresh in case file is out of sync
org.eclipse.core.resources/refresh.lightweight.enabled=true

#-----------------------------------------
# Intro related preferences (since 3.2)
#-----------------------------------------
# Welcome theme to use
org.eclipse.ui.intro/INTRO_THEME = org.eclipse.ui.intro.universal.slate
# Root page links to show in the Universal Welcome 
org.eclipse.ui.intro.universal/INTRO_ROOT_PAGES = firststeps
# Default Welcome start page, other than root
org.eclipse.ui.intro/INTRO_START_PAGE = firststeps
# Initial page layout of the Universal Welcome
org.eclipse.ui.intro.universal/INTRO_DATA = product:introData.xml
# Page to show when you press on the Home button
org.eclipse.ui.intro/INTRO_HOME_PAGE = root
# The id of the page which will be shown when welcome is displayed in a non-maximized form.
org.eclipse.ui.intro/INTRO_STANDBY_PAGE = firststeps

#-----------------------------------------
# Memory monitor enablement
#-----------------------------------------
# show heap space at UI
org.eclipse.ui/SHOW_MEMORY_MONITOR=true
org.eclipse.ui.workbench/HeapStatus.showMax=true