###############################################################################
# Copyright (c) 2000, 2014 IBM Corporation 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:
#     IBM Corporation - initial API and implementation
#     Sebastian Davids (sdavids@gmx.de)
#        - Fix for Bug 57087
#        - Fix for Bug 138034 [Preferences] Label decorations page - extra space
#        - Fix for Bug 128529
#     Semion Chichelnitsky (semion@il.ibm.com) - bug 278064
###############################################################################

# Based on /org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties

FilteredTree_AccessibleListenerClearButton=Clear filter field
FilteredTree_ClearToolTip=Clear
FilteredTree_FilterMessage=type filter text
FilteredTree_AccessibleListenerFiltered={0} {1} matches.

# --- Help Menu ---
AboutDialog_shellTitle = About {0}
AboutDialog_defaultProductName =

# ==============================================================================
# About Dialog
# ==============================================================================
AboutPluginsDialog_state_installed = Installed
AboutPluginsDialog_state_resolved = Resolved
AboutPluginsDialog_state_starting = Starting
AboutPluginsDialog_state_stopping = Stopping
AboutPluginsDialog_state_uninstalled = Uninstalled
AboutPluginsDialog_state_active = Active
AboutPluginsDialog_state_unknown = Unknown State
