#
# 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.
#

## manifest.mf
OpenIDE-Module-Display-Category=JavaFX 2
OpenIDE-Module-Name=JavaFX 2 Samples

## xmlfs localization
Templates/Project/Samples/JavaFX=JavaFX
Templates/Project/Samples/JavaFX/BrickBreaker.zip=BrickBreaker
Templates/Project/Samples/JavaFX/AdvancedMedia.zip=AdvancedMedia
Templates/Project/Samples/JavaFX/AudioVisualizer3D.zip=AudioVisualizer3D
Templates/Project/Samples/JavaFX/ColorfulCircles.zip=ColorfulCircles
Templates/Project/Samples/JavaFX/CreateAdvancedStage.zip=CreateAdvancedStage
Templates/Project/Samples/JavaFX/Cube3D.zip=Cube3D
Templates/Project/Samples/JavaFX/CubeSystem3D.zip=CubeSystem3D
Templates/Project/Samples/JavaFX/DigitalClock.zip=DigitalClock
Templates/Project/Samples/JavaFX/DisplayShelf.zip=DisplayShelf
Templates/Project/Samples/JavaFX/Fireworks.zip=Fireworks
Templates/Project/Samples/JavaFX/FXML-LoginDemo.zip=FXML-LoginDemo
Templates/Project/Samples/JavaFX/HTMLEditorApp.zip=HTMLEditorApp
Templates/Project/Samples/JavaFX/ChangeListener.zip=ChangeListener
Templates/Project/Samples/JavaFX/ChartAdvancedArea.zip=ChartAdvancedArea
Templates/Project/Samples/JavaFX/ChartAdvancedBar.zip=ChartAdvancedBar
Templates/Project/Samples/JavaFX/ChartAdvancedPie.zip=ChartAdvancedPie
Templates/Project/Samples/JavaFX/ChartAdvancedScatter.zip=ChartAdvancedScatter
Templates/Project/Samples/JavaFX/ChartAdvancedScatterLive.zip=ChartAdvancedScatterLive
Templates/Project/Samples/JavaFX/ChartAdvancedStockLine.zip=ChartAdvancedStockLine
Templates/Project/Samples/JavaFX/ChartAudioArea.zip=ChartAudioArea
Templates/Project/Samples/JavaFX/ChartAudioBar.zip=ChartAudioBar
Templates/Project/Samples/JavaFX/ChartLine.zip=ChartLine
Templates/Project/Samples/JavaFX/ColorPicker.zip=ColorPicker
Templates/Project/Samples/JavaFX/KeyStrokeMotion.zip=KeyStrokeMotion
Templates/Project/Samples/JavaFX/MouseEvents.zip=MouseEvents
Templates/Project/Samples/JavaFX/PaginationDemo.zip=PaginationDemo
Templates/Project/Samples/JavaFX/PuzzlePieces.zip=PuzzlePieces
Templates/Project/Samples/JavaFX/StopWatch.zip=StopWatch
Templates/Project/Samples/JavaFX/SwingInterop.zip=SwingInterop
Templates/Project/Samples/JavaFX/TimelineEvents.zip=TimelineEvents
Templates/Project/Samples/JavaFX/TimelineInterpolator.zip=TimelineInterpolator
Templates/Project/Samples/JavaFX/TransitionPath.zip=TransitionPath
Templates/Project/Samples/JavaFX/TransitionRotate.zip=TransitionRotate
Templates/Project/Samples/JavaFX/WebViewBrowser.zip=WebViewBrowser
Templates/Project/Samples/JavaFX/Xylophone.zip=Xylophone

# A11Y Panels
ACS_NWP1_NamePanel_A11YDesc=Project Name and Location Panel

#PanelProjectLocationVisual
LBL_NWP1_ProjectTitleName=Name and Location

LBL_NWP1_ProjectName_Label=Project Name:
LBL_NPW1_DefaultProjectName=SampleApplication{0}
LBL_NWP1_ProjectLocation_Label=Project Location:
LBL_NWP1_BrowseLocation_Button=Browse...
LBL_NWP1_CreatedProjectFolder_Lablel=Project Folder:

LBL_NWP1_ProjectName_LabelMnemonic=N
LBL_NWP1_ProjectLocation_LabelMnemonic=L
LBL_NWP1_CreatedProjectFolder_LablelMnemonic=D

ACS_LBL_NWP1_ProjectName_A11YDesc=Project Name
ACS_LBL_NPW1_ProjectLocation_A11YDesc=Project Location
ACS_LBL_NWP1_BrowseLocation_A11YDesc=Browse Project Location
ACS_LBL_NWP1_CreatedProjectFolder_A11YDesc=Project Folder

LBL_NWP1_SelectProjectLocation=Select Project Location
MSG_IllegalProjectName=Project Name is not valid folder name.
MSG_ProjectFolderExists=Project Folder already exists and is not empty.
LBL_Platform_ComboBox=JavaFX Platform:
WARN_PanelOptionsVisual.notFXPlatform=<b>Failed to automatically set-up a JavaFX Platform.</b><br>Please go to Platform Manager, create a non-default Java SE platform, then go to the JavaFX tab,<br>enable JavaFX and fill in the paths to valid JavaFX SDK and JavaFX Runtime.<br>Note: JavaFX SDK can be downloaded from <a href='http://www.oracle.com/technetwork/java/javafx/downloads'>JavaFX website</a>.<html>
TXT_SetupFXPlatformProgress=Setting-up JavaFX enabled Java platform...
LBL_PanelOptions_Manage_Button=&Manage Platforms...
WARN_Issue204880=Project could not be created possibly due to delayed wizard property initialization.\nPlease retry creating the project.
LBL_Platform_Progress=Setting up JavaFX Platform...
ACSN_platformProgress=Setting up JavaFX Platform...
ACSD_platformProgress=The progress bar shows progress when creating default FX-enabled Java platform.
ACSN_labelPlatform=JavaFX Platform:
ACSD_labelPlatform=Choose FX-enabled Java Platform for this sample to run on.
ACSN_buttonManagePlatforms=&Manage Platforms...
ACSD_buttonManagePlatforms=Press to open Java Platform manager to manually create or delete Java platforms, including FX-enabled platforms.
