<?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.2//EN" "http://www.netbeans.org/dtds/filesystem-1_2.dtd">
<filesystem>
    <folder name="Actions">
        <folder name="Window">
            <file name="org-netbeans-modules-tasklist-ui-TaskListAction.instance">
                <attr name="instanceCreate" methodvalue="org.openide.windows.TopComponent.openAction"/>
                <attr name="component" methodvalue="org.netbeans.modules.tasklist.ui.TaskListTopComponent.findInstance"/>
                <attr name="iconBase" stringvalue="org/netbeans/modules/tasklist/ui/resources/taskList.png"/>
                <attr name="displayName" bundlevalue="org.netbeans.modules.tasklist.ui.Bundle#CTL_TaskListAction"/>
            </file>
        </folder>
    </folder>
    <folder name="Menu">
        <folder name="Window">
            <file name="org-netbeans-modules-tasklist-ui-TaskListAction.shadow">
                <attr name="originalFile" stringvalue="Actions/Window/org-netbeans-modules-tasklist-ui-TaskListAction.instance"/>
                <attr name="position" intvalue="700"/>
            </file>
            
            </folder>
    </folder>

    <folder name="Shortcuts">
        <file name="D-6.shadow">
            <attr name="originalFile" stringvalue="Actions/Window/org-netbeans-modules-tasklist-ui-TaskListAction.instance"/>
        </file>
    </folder>

    <folder name="Windows2">
        <folder name="Components">
            <file name="TaskListTopComponent.settings" url="resources/TaskListTopComponentSettings.xml"/>
        </folder>
        <folder name="Modes">
            <folder name="output">
                <file name="TaskListTopComponent.wstcref" url="resources/TaskListTopComponentWstcref.xml">
                    <attr name="position" intvalue="3200"/>
                </file>
            </folder>
        </folder>
    </folder>    

    <folder name="TaskList">
        
        <folder name="Groups">
            <file name="error.instance">
                <attr name="instanceCreate" methodvalue="org.netbeans.spi.tasklist.Task.createGroup"/>
                
                <attr name="localizingBundle" stringvalue="org.netbeans.modules.tasklist.ui.resources.Bundle"/>
                <attr name="groupName" stringvalue="nb-tasklist-error"/>
                <attr name="diplayNameKey" stringvalue="LBL_error_group"/>
                <attr name="descriptionKey" stringvalue="HINT_error_group"/>
                <attr name="iconKey" stringvalue="ICON_error"/>
                <attr name="position" intvalue="100"/>
            </file>
            
            <file name="warning.instance">
                <attr name="instanceCreate" methodvalue="org.netbeans.spi.tasklist.Task.createGroup"/>
                
                <attr name="localizingBundle" stringvalue="org.netbeans.modules.tasklist.ui.resources.Bundle"/>
                <attr name="groupName" stringvalue="nb-tasklist-warning"/>
                <attr name="diplayNameKey" stringvalue="LBL_warning_group"/>
                <attr name="descriptionKey" stringvalue="HINT_warning_group"/>
                <attr name="iconKey" stringvalue="ICON_warning"/>
                <attr name="position" intvalue="200"/>
            </file>
            </folder>
        
        <folder name="ScanningScopes">
            <file name="DefaultScope.instance">
                <attr name="instanceCreate" methodvalue="org.netbeans.modules.tasklist.impl.CurrentEditorScanningScope.create"/>
                <attr name="instanceOf" stringvalue="org.netbeans.spi.tasklist.TaskScanningScope"/>
                <attr name="position" intvalue="100"/>
            </file>
        </folder>
    </folder>
    
    <folder name="Editors">
        <file name="org-netbeans-modules-tasklist-impl-TaskIndexerFactory.instance">
            <attr name="instanceClass" stringvalue="org.netbeans.modules.tasklist.impl.TaskIndexerFactory"/>
        </file>
    </folder>

</filesystem>
