<?xml version="1.0" encoding="UTF-8"?>
<!--

    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.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
<filesystem>
    <folder name="Loaders">
        <folder name="text">
            <folder name="x-manifest">
                <folder name="Actions">
                    <file name="org-openide-actions-CopyAction.shadow">
                        <attr name="originalFile" stringvalue="Actions/Edit/org-openide-actions-CopyAction.instance"/>
                        <attr name="position" intvalue="400"/>
                    </file>
                    <file name="org-openide-actions-CutAction.shadow">
                        <attr name="originalFile" stringvalue="Actions/Edit/org-openide-actions-CutAction.instance"/>
                        <attr name="position" intvalue="300"/>
                    </file>
                    <file name="org-openide-actions-DeleteAction.shadow">
                        <attr name="originalFile" stringvalue="Actions/Edit/org-openide-actions-DeleteAction.instance"/>
                        <attr name="position" intvalue="600"/>
                    </file>
                    <file name="org-openide-actions-FileSystemAction.shadow">
                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-FileSystemAction.instance"/>
                        <attr name="position" intvalue="1100"/>
                    </file>
                    <file name="org-openide-actions-OpenAction.shadow">
                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-OpenAction.instance"/>
                        <attr name="position" intvalue="100"/>
                    </file>
                    <file name="org-openide-actions-PropertiesAction.shadow">
                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-PropertiesAction.instance"/>
                        <attr name="position" intvalue="1400"/>
                    </file>
                    <file name="org-openide-actions-RenameAction.shadow">
                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-RenameAction.instance"/>
                        <attr name="position" intvalue="700"/>
                    </file>
                    <file name="org-openide-actions-SaveAsTemplateAction.shadow">
                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-SaveAsTemplateAction.instance"/>
                        <attr name="position" intvalue="900"/>
                    </file>
                    <file name="org-openide-actions-ToolsAction.shadow">
                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-ToolsAction.instance"/>
                        <attr name="position" intvalue="1300"/>
                    </file>
                    <file name="sep-1.instance">
                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
                        <attr name="position" intvalue="200"/>
                    </file>
                    <file name="sep-2.instance">
                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
                        <attr name="position" intvalue="500"/>
                    </file>
                    <file name="sep-3.instance">
                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
                        <attr name="position" intvalue="800"/>
                    </file>
                    <file name="sep-4.instance">
                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
                        <attr name="position" intvalue="1000"/>
                    </file>
                    <file name="sep-5.instance">
                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
                        <attr name="position" intvalue="1200"/>
                    </file>
                </folder>
                <folder name="Factories">
                    <file name="MfDataLoader.instance">
                        <attr name="dataObjectClass" stringvalue="org.netbeans.modules.languages.manifest.MfDataObject"/>
                        <attr name="instanceCreate" methodvalue="org.openide.loaders.DataLoaderPool.factory"/>
                        <attr name="SystemFileSystem.icon" urlvalue="nbresloc:/org/netbeans/modules/languages/manifest/manifest_file_16.png"/>
                        <attr name="mimeType" stringvalue="text/x-manifest"/>
                    </file>
                </folder>
            </folder>
        </folder>
    </folder>
    <folder name="OptionsDialog">
        <folder name="PreviewExamples">
            <folder name="text">
                <file name="x-manifest" url="ManifestExample.mf"/>
            </folder>
        </folder>
    </folder>
    <folder name="Editors">
        <folder name="text">
            <folder name="x-manifest">
                <folder name="Preferences">
                    <folder name="Defaults">
                        <file name="org-netbeans-modules-languages-manifest-preferences.xml" url="DefaultPreferences.xml" />
                    </folder>
                </folder>
            </folder>
        </folder>
    </folder>
</filesystem>
