<?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="Editors">
        <folder name="text">
            <folder name="xhtml">
                <folder name="HyperlinkProviders">
                    <file name="ELHyperlinkProvider.instance">
                        <attr name="instanceClass" stringvalue="org.netbeans.modules.web.el.navigation.ELHyperlinkProvider"/>
                        <attr name="instanceOf" stringvalue="org.netbeans.lib.editor.hyperlink.spi.HyperlinkProviderExt"/>
                        <attr name="position" intvalue="1100"/>
                    </file>
                </folder>
                <folder name="Popup">
                    <folder name="Navigation">
                        <attr name="displayName" bundlevalue="org.netbeans.modules.web.el.Bundle#LBL_Navigate"/>
                        <attr name="position" intvalue="500"/>
                        <file name="goto-declaration">
                            <attr name="position" intvalue="200"/>
                        </file>
                    </folder>
                </folder>
            </folder>
        </folder>
    </folder>
    <folder name="csl-hints">
        <folder name="text">
            <folder name="x-el">
                <folder name="hints">
                    <folder name="general">
                       <attr name="position" intvalue="100"/>
                        <attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.web.el.hints.Bundle"/>
                        <file name="org-netbeans-modules-web-el-hints-ResourceBundleKeys.instance"/>
                        <file name="org-netbeans-modules-web-el-hints-Identifiers.instance"/>
                    </folder>
                </folder>
            </folder>
        </folder>
    </folder>
    <folder name="OptionsDialog">
        <folder name="Editor">
            <folder name="Hints">
                <attr name="position" intvalue="0"/>
                <folder name="text">
                    <folder name="x-el">
                        <file name="ELHints.instance">
                            <attr name="instanceOf" stringvalue="org.netbeans.spi.options.OptionsPanelController"/>
                            <attr name="instanceCreate" methodvalue="org.netbeans.modules.web.el.hints.HintsAdvancedOption.createStatic"/>
                        </file>
                    </folder>
                </folder>
            </folder>
        </folder>
    </folder>

</filesystem>
