###############################################################################
# Copyright (c) 2013, 2015 vogella GmbH and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#     Lars Vogel <Lars.Vogel@gmail.com> - initial API and implementation
#     Simon Scholz <simon.scholz@vogella.com> - Bug 459578
###############################################################################
Plugin.name = Eclipse SDK Themes
Plugin.providerName = Eclipse.org

theme.classic = Classic
theme.gtk = Light
theme.mac = Light
theme.win = Light
theme.dark = Dark
theme.high-contrast = High Contrast
theme.system = System

#New theme element definitions
DARK_BACKGROUND=Dark Background Color
DARK_FOREGROUND=Dark Foreground Color
INACTIVE_UNSELECTED_TABS_COLOR_START=Inactive, unselected part color begin
INACTIVE_UNSELECTED_TABS_COLOR_START=Inactive, unselected part color begin
INACTIVE_UNSELECTED_TABS_COLOR_END=Inactive, unselected part color end
INACTIVE_TAB_TEXT_COLOR=Inactive part text color
INACTIVE_TAB_OUTER_KEYLINE_COLOR=Inactive part outer keyline color
INACTIVE_TAB_INNER_KEYLINE_COLOR=Inactive part inner keyline color
INACTIVE_TAB_OUTLINE_COLOR=Inactive part outline color
ACTIVE_UNSELECTED_TABS_COLOR_START=Active, unselected part color begin
ACTIVE_UNSELECTED_TABS_COLOR_END=Active, unselected part color end
ACTIVE_TAB_TEXT_COLOR=Active part text color
ACTIVE_TAB_OUTER_KEYLINE_COLOR=Active part outer keyline color
ACTIVE_TAB_INNER_KEYLINE_COLOR=Active part inner keyline color
ACTIVE_TAB_OUTLINE_COLOR=Active part outline color
INACTIVE_TAB_BG_START=Inactive, selected part background begin
INACTIVE_TAB_BG_END=Inactive, selected part background end
INACTIVE_TAB_UNSELECTED_TEXT_COLOR=Inactive, unselected part foreground
INACTIVE_TAB_SELECTED_TEXT_COLOR=Inactive, selected part foreground
ACTIVE_TAB_BG_START=Active, selected part background begin
ACTIVE_TAB_BG_END=Active, selected part background end
ACTIVE_TAB_UNSELECTED_TEXT_COLOR=Active, unselected part foreground
ACTIVE_TAB_SELECTED_TEXT_COLOR=Active, selected part foreground
ACTIVE_NOFOCUS_TAB_TEXT_COLOR=Active (no focus), selected part text color
ACTIVE_NOFOCUS_TAB_BG_START=Active (no focus), selected part background begin
ACTIVE_NOFOCUS_TAB_BG_END=Active (no focus), selected part background end
ACTIVE_NOFOCUS_TAB_SELECTED_TEXT_COLOR=Active (no focus), selected part foreground
LINK_COLOR=Link color
