MainJavadocExample
DBTreeBuilder Demo
Selected Node:
 
 


XML Configuration for this example:
  <!-- ======================================================================================= -->
  <!--                     EditTreeForm: used in DBTreeRenderer demo.                          -->
  <!-- ======================================================================================= -->
  <SearchForm name="EditTreeForm" 
              rendererClass="com.raritantechnologies.searchApp.taglibrary.SearchFormTableRenderer"
              tableProps="align='left' " >

     <!-- Select Taxonomies: Special case logic: use DBTreeBuilder_taxName as initField to and    -->
     <!-- force the renderer to update from sessionData. This is done to achieve correct response -->
     <!-- on a 'Change Taxonomy Name' command by synchronizing with the  DBTreeManager.           -->                                                  -->
     <!-- Also note that the fieldID is not used because                                          -->
     <!-- the taxName can be changed. Uses a hidden field ('taxName') that is coordinated using   -->
     <!-- the javascript action.                                                                  -->
     <SearchElementRenderer rendererClass="com.raritantechnologies.quickstart.taglibrary.forms.SelectElementRenderer"
                   fieldID="taxNameSel" 
                   multiSelect="false" 
                   submitOnChange="true"
                   onChangeHandler="javascript:changeTaxonomy( this );"
                   initFrom="sessionData" initField="DBTreeManager_taxName" >

        <Data searchSource="TaxonomyNameSearch"
              resultNameField="TaxonomyName"
              resultValueField="TaxonomyName" 
              alwaysInitialize="true"
              noSelectionChoice="- Select Taxonomy -" >
        </Data>

        <OnChangeFunction>
       function changeTaxonomy( select )
       {
          document.forms['EditTreeForm'].elements['nodeName'].value = select.value;
          document.forms['EditTreeForm'].elements['nodeID'].value = document.forms['NodeIDsForm'].elements[ select.value ].value;
          document.forms['EditTreeForm'].elements['taxName'].value = select.value;
          document.forms['EditTreeForm'].elements['command'].value = 'selectTaxonomy';
          document.forms['EditTreeForm'].submit( );
          return false;
       }
        </OnChangeFunction>

     </SearchElementRenderer>
     <!-- End of SelectElementRenderer -->

     <SearchElementRenderer rendererClass="com.raritantechnologies.quickstart.taglibrary.forms.HiddenInputElementRenderer"
                            fieldID="nodeID" initFrom="request" />

     <SearchElementRenderer rendererClass="com.raritantechnologies.quickstart.taglibrary.forms.HiddenInputElementRenderer"
                            fieldID="taxName" 
                            initFrom="sessionData"
                            initField="DBTreeManager_taxName" />

     <SearchElementRenderer rendererClass="com.raritantechnologies.quickstart.taglibrary.forms.HiddenInputElementRenderer"
                            fieldID="nodeName" initFrom="request" />

     <SearchElementRenderer rendererClass="com.raritantechnologies.utils.tree.taglibrary.TaxonomyNodeNameRenderer"
                            databaseManagerName="MySQLServerDBManager" />

     <SearchElementRenderer rendererClass="com.raritantechnologies.quickstart.taglibrary.forms.HiddenInputElementRenderer"
                            fieldID="command" staticValue="none" />

     <SearchElementRenderer rendererClass="com.raritantechnologies.quickstart.taglibrary.forms.HiddenInputElementRenderer"
                            fieldID="tabSet" staticValue="none" />

     <SearchElementRenderer rendererClass="com.raritantechnologies.quickstart.taglibrary.forms.HiddenInputElementRenderer"
                            fieldID="nameInput"  initFrom="request" />

     <SearchElementRenderer rendererClass="com.raritantechnologies.searchApp.taglibrary.TabbedSearchElementRenderer"
                            align="left" >


       <TabRenderer class="com.raritantechnologies.utils.tree.taglibrary.TreeTabRenderer"
                    initialTab="none" 
                    tabSetName="DBTreeForm"
                    tabSetParam="tabSet"
                    tabFormName="EditTreeForm" isPersistent="false" >

          <TreeBuilder class="com.raritantechnologies.utils.tree.SAXTreeBuilder" >

             <TreeNode nodeTag="Node" nameAttribute="name" >
               <AttributeMap input="activeOn" />
             </TreeNode>

             <TreeXML>
                <Node name="Root" />

                <Node name="Edit Taxonomy">
                   <Node name="Create" />
                   <Node name="Edit"   />
                   <Node name="Delete" />
                </Node>

                <Node name="Edit Node">
                   <Node name="Create"  />
                   <Node name="Edit"   activeOn="sessionData:DBTreeManager_nodeSelected=true" />
                   <Node name="Cut"    activeOn="sessionData:DBTreeManager_nodeSelected=true" />
                   <Node name="Paste"  activeOn="sessionData:DBTreeManager_copyNodeStatus=NOT NULL" />
                   <Node name="Delete" activeOn="sessionData:DBTreeManager_nodeSelected=true" />
                </Node>
             </TreeXML>

          </TreeBuilder>

          <TreeRenderer class="com.raritantechnologies.utils.tree.taglibrary.DropdownMenuTreeRenderer"
                        nameAttribute="name" locationAttribute="href" activeAttribute="activeOn"
                        useAction="onClick" zIndex="8" />

          <TreeTabMap>
            <Tab ID="CreateTaxonomy"   nodeID="/Root/Edit Taxonomy/Create" />
            <Tab ID="EditTaxonomy"     nodeID="/Root/Edit Taxonomy/Edit" />

            <Tab action="javascript:DeleteTaxonomy( );"     nodeID="/Root/Edit Taxonomy/Delete" />

            <Tab ID="CreateNode"       nodeID="/Root/Edit Node/Create" />
            <Tab ID="EditNode"         nodeID="/Root/Edit Node/Edit" />

            <Tab action="javascript:CutNodeSubmit( );"     nodeID="/Root/Edit Node/Cut" />
            <Tab action="javascript:PasteNodeSubmit( );"   nodeID="/Root/Edit Node/Paste" />
            <Tab action="javascript:DeleteNodeSubmit( );"  nodeID="/Root/Edit Node/Delete" />
          </TreeTabMap>
       </TabRenderer>

       <TabbedElementRenderers>

        <SearchElementRenderer tabID="none" rendererClass="com.raritantechnologies.quickstart.taglibrary.forms.NullElementRenderer"
                               width="280" />

        <!-- ============================================================================= -->
        <!--           CreateTaxonomy SearchElementRenderer                                -->
        <!-- ============================================================================= -->
        <SearchElementRenderer tabID="CreateTaxonomy" rendererClass="com.raritantechnologies.searchApp.taglibrary.SearchFormRowRenderer" >

            <SearchElementRenderer rendererClass="com.raritantechnologies.quickstart.taglibrary.forms.TextInputElementRenderer"
                                   fieldID="createTaxNameInput" width="50" initClear="true"  />

            <SearchElementRenderer rendererClass="com.raritantechnologies.quickstart.taglibrary.forms.InputButtonElement"
                            text="Create Taxonomy"  
                            name="CreateTaxonomyButton"
                            cssClass="commandButton"
                            onClick="CreateTaxonomySubmit( );" 
                            renderAsHyperlink="true" >
              <SubmitHandler>
              function CreateTaxonomySubmit()
              {
                document.forms['EditTreeForm'].elements['command'].value = 'Create Taxonomy';
                document.forms['EditTreeForm'].elements['nameInput'].value = document.forms['EditTreeForm'].elements['createTaxNameInput'].value;
                document.forms['EditTreeForm'].elements['taxName'].value = document.forms['EditTreeForm'].elements['createTaxNameInput'].value;
                document.forms['EditTreeForm'].submit( );
                return false;
              }
              </SubmitHandler>

            </SearchElementRenderer>

         </SearchElementRenderer>

         <!-- ============================================================================= -->
         <!--           EditTaxonomy SearchElementRenderer                                  -->
         <!-- ============================================================================= -->
         <SearchElementRenderer tabID="EditTaxonomy" rendererClass="com.raritantechnologies.searchApp.taglibrary.SearchFormRowRenderer" >

            <SearchElementRenderer rendererClass="com.raritantechnologies.quickstart.taglibrary.forms.TextInputElementRenderer"
                                   fieldID="editTaxNameInput" width="50" initClear="true"  />

            <SearchElementRenderer rendererClass="com.raritantechnologies.quickstart.taglibrary.forms.InputButtonElement"
                                   text="Change Taxonomy Name"
                                   name="ChangeTaxonomyButton"
                                   cssClass="commandButton"  
                            onClick="ChangeTaxonomyName( );" 
                            renderAsHyperlink="true" >
              <SubmitHandler>
              function ChangeTaxonomyName()
              {
                 document.forms['EditTreeForm'].elements['command'].value = 'Edit Taxonomy';
                 document.forms['EditTreeForm'].elements['nameInput'].value = document.forms['EditTreeForm'].elements['editTaxNameInput'].value;
                 document.forms['EditTreeForm'].elements['taxName'].value = document.forms['EditTreeForm'].elements['taxNameSel'].value;
                 document.forms['EditTreeForm'].submit( );
                 return false;
              }
              </SubmitHandler>

            </SearchElementRenderer>

         </SearchElementRenderer>


         <!-- ============================================================================= -->
         <!--           CreateNode SearchElementRenderer                                    -->
         <!-- ============================================================================= -->
         <SearchElementRenderer tabID="CreateNode" rendererClass="com.raritantechnologies.searchApp.taglibrary.SearchFormRowRenderer" >

            <SearchElementRenderer rendererClass="com.raritantechnologies.quickstart.taglibrary.forms.TextInputElementRenderer"
                                fieldID="createNodeNameInput" width="50" initClear="true"  />

            <SearchElementRenderer rendererClass="com.raritantechnologies.quickstart.taglibrary.forms.InputButtonElement"
                            text="Add Sub Node" 
                            name="AddNodeButton"
                            cssClass="commandButton"
                            onClick="AddNodeSubmit( );"
                            renderAsHyperlink="true" >
              <SubmitHandler>
              function AddNodeSubmit()
              {
                document.forms['EditTreeForm'].elements['command'].value = 'Add Node';
                document.forms['EditTreeForm'].elements['nameInput'].value = document.forms['EditTreeForm'].elements['createNodeNameInput'].value;
                document.forms['EditTreeForm'].submit( );
                return false;
              }
              </SubmitHandler>

           </SearchElementRenderer>

         </SearchElementRenderer>


         <!-- ============================================================================= -->
         <!--           EditNode SearchElementRenderer                                      -->
         <!-- ============================================================================= -->
         <SearchElementRenderer tabID="EditNode" rendererClass="com.raritantechnologies.searchApp.taglibrary.SearchFormRowRenderer" >

           <SearchElementRenderer rendererClass="com.raritantechnologies.quickstart.taglibrary.forms.TextInputElementRenderer"
                                  fieldID="editNodeNameInput" width="50" initClear="true"  />

           <SearchElementRenderer rendererClass="com.raritantechnologies.quickstart.taglibrary.forms.InputButtonElement"
                                  text="Edit Node"  
                                  name="EditNodeButton"
                                  cssClass="commandButton"
                                  onClick="EditNodeSubmit( );"
                                  renderAsHyperlink="true" >
             <SubmitHandler>
             function EditNodeSubmit()
             {
                document.forms['EditTreeForm'].elements['command'].value = 'Edit Node';
                document.forms['EditTreeForm'].elements['nameInput'].value = document.forms['EditTreeForm'].elements['editNodeNameInput'].value;
                document.forms['EditTreeForm'].submit( );
                return false;
             }
             </SubmitHandler>

           </SearchElementRenderer>
         </SearchElementRenderer>

       </TabbedElementRenderers>

       <SubmitHandler name="treeJavascript" >

       function CutNodeSubmit()
       {
          document.forms['EditTreeForm'].elements['command'].value = 'Cut Node';
          document.forms['EditTreeForm'].submit( );
          return false;
       }

       function PasteNodeSubmit()
       {
          document.forms['EditTreeForm'].elements['command'].value = 'Paste Node';
          document.forms['EditTreeForm'].elements['nodeName'].value = document.forms['EditTreeForm'].elements['nameInput'].value;
          document.forms['EditTreeForm'].submit( );
          return false;
       }

       function DeleteNodeSubmit()
       {
          document.forms['EditTreeForm'].elements['command'].value = 'Delete Node';
          document.forms['EditTreeForm'].elements['nodeName'].value = '';
          document.forms['EditTreeForm'].submit( );
          return false;
       }

       function DeleteTaxonomy()
       {
          document.forms['EditTreeForm'].elements['command'].value = 'Delete Taxonomy';
          document.forms['EditTreeForm'].elements['taxName'].value = document.forms['EditTreeForm'].elements['taxNameSel'].value;
          document.forms['EditTreeForm'].submit( );
          return false;
       }
       </SubmitHandler>

    </SearchElementRenderer>

  </SearchForm>