<?xml version="1.0"?>
<PropertyList>
  <x>-20</x>
  <y>-20</y>
  <name>doc-browser</name>
  <dialog-name>doc-browser</dialog-name>
  <layout>vbox</layout>
  <resizable>true</resizable>

  <group>
    <layout>hbox</layout>
    <empty>
      <stretch>1</stretch>
    </empty>
    <text>
      <label>Documentation Browser</label>
    </text>
    <empty>
      <stretch>1</stretch>
    </empty>
    <button>
      <pref-width>16</pref-width>
      <pref-height>16</pref-height>
      <legend/>
      <keynum>27</keynum>
      <border>2</border>
      <binding>
        <command>dialog-close</command>
      </binding>
    </button>
  </group>

  <hrule/>

  <group>
    <layout>hbox</layout>
    <list>
      <pref-width>170</pref-width>
      <pref-height>500</pref-height>
      <name>filename</name>
      <halign>fill</halign>
      <property>/sim/gui/dialogs/doc-browser/filename</property>
      <value>clear</value>
      <binding>
        <command>dialog-apply</command>
        <object-name>filename</object-name>
      </binding>
      <binding>
        <command>dialog-update</command>
        <object-name>editfield</object-name>
      </binding>
    </list>
    <textbox>
      <name>editfield</name>
      <halign>fill</halign>
      <valign>fill</valign>
      <stretch>true</stretch>
      <pref-width>600</pref-width>
      <pref-height>250</pref-height>
      <padding>6</padding>
      <slider>20</slider>
      <editable>falsee</editable>
      <wrap>false</wrap>
      <font>
        <name>FIXED_8x13</name>
      </font>
      <property>/sim/gui/dialogs/doc-browser/edit</property>
    </textbox>
  </group>

  <nasal>
    <open>
       var self = cmdarg();
       var dlg = props.globals.getNode("/sim/gui/dialogs/doc-browser", 1);
       var edit = dlg.getNode("edit", 1);
       if( !contains(globals, "__doc_browser") )
         globals["__doc_browser"] = {};
  
       var path = getprop("/sim/fg-root") ~ "/Docs/";
       # hard coded list of file names, because not all files are plain text - not even the README* files
       # TODO: it would probably make sense to sort these files (README, introduction, properties etc)
       var doc_files = [
         "README",
         "README.introduction",
         "README.fgjs",
         "README.xmlsyntax",
         "README.multiscreen",
         "README.properties",
         "README.IO",
         "README.logging",
         "README.protocol",
         "README.scenery",
         "README.materials",
         "README.yasim",
         "README.JSBsim",
         "README.submodels",
         "README.3DClouds",
         "README.flightrecorder",
         "README.jsclient",
         "README.multiplayer",
         "README.tutorials",
         "README.conditions",
         "README.commands",
         "README.digitalfilters",
         "README.airspeed-indicator",
         "README.hud",
         # "README.xmlhud", deprecated?
         "README.gui",
         "README.layout",
         "README.osgtext",
         "README.wildfire",
         "README.electrical",
         "README.effects",
         "README.xmlparticles",
         "README.sound",
         "README.xmlsound",
         "README.xmlpanel",
         "README.minipanel"
       ];
       var filename_list = self.getNode("group[1]/list");
       var n=0;
       # add the filenames to the list box
       foreach(var file; doc_files)
       {
         filename_list.getChild("value",n,1).setValue( file );
         n+=1;
       }
       var filename_property = "/sim/gui/dialogs/doc-browser/filename";
       var update = func {
         var file = getprop(filename_property);
           var doc_file = path ~ file;
           setprop("/sim/gui/dialogs/doc-browser/edit", io.readfile(doc_file));
       }
  
       var listener = setlistener(filename_property, update);
       setprop("/sim/gui/dialogs/doc-browser/filename", "README.introduction");
    </open>
    <close>removelistener(listener);</close>
  </nasal>
</PropertyList>