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

Templates/Project/Maven2=Java with Maven
UseOpenPanel.jTextArea1.text=Any Maven-based project can be opened and used within the IDE without any import procedure.\n\nClick Finish to open a project using the Open Project dialog.\n\n
LBL_Description=&Description\:
LBL_ProjectName=Project &Name\:
LBL_ProjectLocation=Project &Location\:
LBL_ProjectFolder=Project Fol&der:
LBL_ArtifactId=&Artifact Id\:
LBL_GroupId=&Group Id\:
LBL_Version=&Version\:
LBL_Package=&Package\:
BTN_Browse=Br&owse...
LBL_Optional=(Optional)
BTN_SetupNewer.text=Set Up Newer &Maven
BasicPanelVisual.tblAdditionalProps.AccessibleContext.accessibleDescription=Table of additional properties
BasicPanelVisual.btnSetupNewer.AccessibleContext.accessibleDescription=Set up newer version of Maven
BasicPanelVisual.txtGroupId.AccessibleContext.accessibleDescription=Group Id of artifact
BasicPanelVisual.AccessibleContext.accessibleDescription=Fill in properties of new project and artifact
BasicPanelVisual.txtArtifactId.AccessibleContext.accessibleDescription=Identification name of artifact
BasicPanelVisual.projectNameTextField.AccessibleContext.accessibleDescription=Name of new project
BasicPanelVisual.txtVersion.AccessibleContext.accessibleDescription=Artifact version
BasicPanelVisual.projectLocationTextField.AccessibleContext.accessibleDescription=Disk location of new project
BasicPanelVisual.browseButton.AccessibleContext.accessibleDescription=Browse project location
BasicPanelVisual.jLabel1.AccessibleContext.accessibleDescription=Package is optional
BasicPanelVisual.createdFolderTextField.AccessibleContext.accessibleDescription=Target folder of new project
BasicPanelVisual.txtPackage.AccessibleContext.accessibleDescription=Package of artifact, optional value
ArchetypesPanel.taDescription.accessibledesc=Details of the selected archetype.
ChooseArchetypePanel.labelVersion.text=&Version:
ChooseArchetypePanel.labelGroupId.text=&Group ID:
ChooseArchetypePanel.taDescription.text=Searching...
ChooseArchetypePanel.labelArchetypes.text=Known Arche&types:
ChooseArchetypePanel.labelRepository.text=&Repository:
ChooseArchetypePanel.showOld.text=Show &Older
ChooseArchetypePanel.labelFilter.text=&Search:
ChooseArchetypePanel.labelArtifactId.text=&Artifact ID:
