###############################################################################
# Copyright (c) 2006, 2011 IBM Corporation and others.
# All rights reserved. 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
#
# Initial Contributors:
# The following IBM employees contributed to the Remote System Explorer
# component that contains this file: David McKnight, Kushal Munir, 
# Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson, 
# Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
# 
# Contributors:
# Willian Mitsuda - [184824] added a Remote action set item 
# David McKnight   (IBM)   - [187711] Link with Editor action for System View
# David McKnight   (IBM)   - [209593] [api] add support for "file permissions" and "owner" properties for unix files
# David McKnight     (IBM)  - [218227][usability] Contribute a "Show in RSE" action to Resource Navigator and Project Explorer
###############################################################################

# NLS_MESSAGEFORMAT_NONE
# NLS_ENCODING=UTF-8

pluginName = RSE Files UI
providerName = Eclipse TM Project

PreferencePage.UniversalFiles = Files
PreferencePage.Cache = File Cache

RemotePropertyPage.File.Info = Info
RemotePropertyPage.File.Permissions = Permissions

PropertyPage.ServerLauncherSettings = Server Launcher Settings
PropertyPage.Service = Service

# View Filters
ViewFilter.RSEConnections=Remote System Explorer Connections
ViewFilter.RSETempFiles=Remote System Explorer File Cache

# Decorators
LinkDecorator.label=Link Decorator
LibraryDecorator.label=Library Decorator
JavaExecutableDecorator.label=Java Executable Decorator
BinaryExecutableDecorator.label=Binary Executable Decorator
VirtualObjectDecorator.label=Virtual Object Decorator
ScriptExecutableDecorator.label=Script Executable Decorator

# Actions
synchronizeCache.label=Synchronize Cache
synchronizeCache.tooltip=Refresh changed files in the Remote System Explorer file cache.
Search.Page = Remote Search
searchMenu.label = Se&arch
Remote.ActionSet = Remote...
Remote.Search = &Remote...
Remote.Search.tooltip = Opens Remote Search dialog page for text and file searching on remote systems

LinkWithSystemView.label = Link with Editor

# Show in RSE View
ShowInRSEView.label = Show in Remote Systems view
ShowInRSEView.tooltip = Display the selected resource in the Remote Systems view


