// Copyright 1997
// Black Dirt Software
// All rights reserved

import java.util.*;
public class bdcSSTab extends Control {
    private   int         numTabs = 3;
    private   int         tabsPerRow = 3;
    private   String addTabControls = "";
    private   Hashtable tabCaptions = new Hashtable();


    /////////////////////////////////
    // Component Definition Methods
    //////////////////////////////////


    public void initialize(Control c) {
       super.initialize(c);
      this.setType("SSTab");
      this.setJavaType("BDTab");
//      dumpControlInfo( );
//      setHeight (getHeight() + 22); // make taller
      getSSTabInfo();
    }

    public String declareString() {
        int i = 0;
        String returnString = "";

        //  BDTab SSTab1 =  new BDTab( 3,3 );
        returnString = "    BDTab  " + this.getName() + " = new BDTab(" +  numTabs + ", " + tabsPerRow + "); "  + "\n";

        //  Panel SSTab1Panel0 = new Panel();

        for (i = 0; i < numTabs; i++){
          returnString = returnString + "    Panel " + this.getName()+ "Panel" + i + " = new Panel();" + "\n";
        }
        return(returnString);                
    }

    public String controlArrayInitString() {
        return ("      " + this.getName() + "[" + getIndex() + "] = new Button(" + "\"" +  this.getCaption() + "\""  + ");"  );
    }

    public String addString( Control cParent) {
    int i;
    Integer key;
    String currentTab = "";

      String returnString = "";
      returnString = defaultAddString(cParent);

/*
    SSTab1.addTab("tab 0",SSTab1Panel0);
    SSTab1.setTab("tab 0");
    SSTab1Panel0.setLayout(new BDLayout());
    SSTab1.addTab("tab 1",SSTab1Panel1);
    SSTab1Panel1.setLayout(new BDLayout());
    SSTab1.addTab("tab 2",SSTab1Panel2);
    SSTab1Panel2.setLayout(new BDLayout());

*/

    for (i = 0; i < numTabs; i++){
        key = new Integer(i);
        if (!tabCaptions.containsKey(key)){
                currentTab = "Tab " + i;
                currentTab = "\"" + currentTab + "\"";
//              System.out.println("tabs " + i);
        } else{
//              System.out.println("tabs " + (String)tabCaptions.get(key) );
                currentTab = (String)tabCaptions.get(key);
        }
        returnString = returnString + "      " + getName() + ".addTab(" +  currentTab + ", " + getName() + "Panel" + i + ");" +"\n";
        if ( i == 0){
          returnString = returnString + "      " + getName() + ".setTab(" + currentTab + ");" +"\n";
        }
        returnString = returnString + "      " +  getName() + "Panel" + i + ".setLayout(new BDLayout());" +"\n";

    }
     returnString = returnString + addTabControls;

      return(returnString);
      
    }


    public String addString11( Control cParent) {
    int i;
    Integer key;
    String currentTab = "";

      String returnString = "";
      returnString = defaultAddString11(cParent);

/*
    SSTab1.addTab("tab 0",SSTab1Panel0);
    SSTab1.setTab("tab 0");
    SSTab1Panel0.setLayout(new BDLayout());
    SSTab1.addTab("tab 1",SSTab1Panel1);
    SSTab1Panel1.setLayout(new BDLayout());
    SSTab1.addTab("tab 2",SSTab1Panel2);
    SSTab1Panel2.setLayout(new BDLayout());

*/

    for (i = 0; i < numTabs; i++){
        key = new Integer(i);
        if (!tabCaptions.containsKey(key)){
                currentTab = "Tab " + i;
                currentTab = "\"" + currentTab + "\"";
//              System.out.println("tabs " + i);
        } else{
//              System.out.println("tabs " + (String)tabCaptions.get(key) );
                currentTab = (String)tabCaptions.get(key);
        }
        returnString = returnString + "      " + getName() + ".addTab(" +  currentTab + ", " + getName() + "Panel" + i + ");" +"\n";
        if ( i == 0){
          returnString = returnString + "      " + getName() + ".setTab(" + currentTab + ");" +"\n";
        }
        returnString = returnString + "      " +  getName() + "Panel" + i + ".setLayout(new BDLayout());" +"\n";

    }
     returnString = returnString + addTabControls;

      return(returnString);
      
    }



    public void getSSTabInfo( ) {
   

      java.util.Enumeration thisInfo;
      ControlData cd;
      ToolkitInfo thisToolkitInfo;
      String  value;      
      String  property;
      String indexString;
      String tabIndexString;
      String controlIndexString;

      int leftParen;
      int rightParen;
      int nextParen;

      property = new String();
      value = new String();

      thisToolkitInfo = new ToolkitInfo();
      

      thisInfo = ControlInfo.elements();
      while(thisInfo.hasMoreElements()){
          cd = (ControlData) thisInfo.nextElement();
          property = cd.getProperty();
          value = cd.getValue();
// interested in TabCaptions and Controls within Tabs

          if (property.equals("Tabs")) {
                numTabs = new Integer(value).intValue();
//                System.out.println("numTabs " + numTabs);
          }

          if (property.equals("TabsPerRow")) {
                tabsPerRow = new Integer(value).intValue();
//                System.out.println("tabsPerRow " + tabsPerRow);
          }

          if ( property.startsWith("TabCaption(")  || property.startsWith("tabcaption(") ){
                leftParen = property.indexOf("(");
                rightParen = property.indexOf(")");

                nextParen = rightParen+1;
                tabIndexString = property.substring(leftParen+1, rightParen);
                 tabCaptions.put( new Integer (tabIndexString) , value);
//                System.out.println("TabCaption " + tabIndexString + " " + value);
          }
          else if (property.startsWith("Tab(")  || property.startsWith("tab(") ){
            if (property.indexOf("Control(") > 0 || property.indexOf("control(") > 0) {

                leftParen = property.indexOf("(");
                rightParen = property.indexOf(")");

                nextParen = rightParen+1;
                tabIndexString = property.substring(leftParen+1, rightParen);


                if (property.indexOf (").", nextParen) < 0) { // for VB 5                leftParen = property.indexOf("(", nextParen) ;

                  rightParen = property.indexOf(")", nextParen);


                  controlIndexString = property.substring(leftParen+1, rightParen);

                  value = thisToolkitInfo.stripQuotes(value);

                  if (value.indexOf("(") > 0) {
                      value = value.replace('(', '[');
                  }
                 if (value.indexOf(")") > 0) {
                     value = value.replace(')', ']');
                 }
//                System.out.println("" + value);

                  addTabControls = addTabControls + "      " + getName() + "Panel" + tabIndexString + ".add(" + value + ");" + "\n";
//                System.out.println("" + tabIndexString + " " + controlIndexString + " " + leftParen + " " + rightParen + " " + property + "---" + value);
                } // end if ).

              }
          }
      } // end while
    }   // end getGridInfo




}
