# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
OpenIDE-Module-Display-Category=HTML5
OpenIDE-Module-Long-Description=\
    Mobile Platforms support for Cordova
OpenIDE-Module-Name=Mobile Platforms
OpenIDE-Module-Short-Description=Mobile Platforms
MobilePlatformsSetup.mobilePlatforms.text=Setup Mobile Platforms...
MobilePlatformsSetup.mobilePlatformsLabel.text=Mobile Platforms are not configured.

BrowserConfigurationPanel.jHighlightSelectionCheckBox.text=Synchronize Navigator and browser element highlighting
BrowserConfigurationPanel.jAutoRefreshCheckBox.text=Auto-refresh