<?xml version="1.0"?>
<!--

    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.

-->
<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.2//EN" "http://www.netbeans.org/dtds/filesystem-1_2.dtd">
<filesystem>
    <folder name="Shortcuts">
        <file name="DS-J.shadow">
            <attr name="originalFile" stringvalue="Actions/Tools/org-netbeans-modules-i18n-InsertI18nStringAction.instance"/>
        </file>
    </folder>
    <folder name="Actions">
        <folder name="Tools">
            <file name="org-netbeans-modules-i18n-I18nAction.instance"/>
            <file name="org-netbeans-modules-i18n-wizard-I18nWizardAction.instance"/>
            <file name="org-netbeans-modules-i18n-wizard-I18nTestWizardAction.instance"/>
            <file name="org-netbeans-modules-i18n-InsertI18nStringAction.instance"/>
        </folder>
    </folder>
    <folder name="Menu">
        <folder name="Tools">
            <folder name="I18N">
                <attr name="displayName" bundlevalue="org.netbeans.modules.i18n.Bundle#LBL_I18nGroupActionName"/>
                <attr name="position" intvalue="180"/>
                <file name="org-netbeans-modules-i18n-I18nAction.shadow">
                    <attr name="originalFile" stringvalue="Actions/Tools/org-netbeans-modules-i18n-I18nAction.instance"/>
                    <attr name="position" intvalue="100"/>
                </file>
                <file name="org-netbeans-modules-i18n-InsertI18nStringAction.shadow">
                    <attr name="originalFile" stringvalue="Actions/Tools/org-netbeans-modules-i18n-InsertI18nStringAction.instance"/>
                    <attr name="position" intvalue="200"/>
                </file>
                <file name="sep-1.instance">
                    <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
                    <attr name="position" intvalue="300"/>
                </file>
                <file name="org-netbeans-modules-i18n-wizard-I18nWizardAction.shadow">
                    <attr name="originalFile" stringvalue="Actions/Tools/org-netbeans-modules-i18n-wizard-I18nWizardAction.instance"/>
                    <attr name="position" intvalue="400"/>
                </file>
                <file name="org-netbeans-modules-i18n-wizard-I18nTestWizardAction.shadow">
                    <attr name="originalFile" stringvalue="Actions/Tools/org-netbeans-modules-i18n-wizard-I18nTestWizardAction.instance"/>
                    <attr name="position" intvalue="500"/>
                </file>
            </folder>
        </folder>
    </folder>
</filesystem>
