home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2002 March / PCWMAR02.iso / software / windowsxp / ftgateoffice / ftgateoffice.exe / Main / webhelp.jar / hhapplet / SiteMapParserToIndex.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-11-07  |  4.2 KB  |  243 lines

  1. package hhapplet;
  2.  
  3. import java.applet.Applet;
  4. import java.util.Vector;
  5. import sitemap.SiteMapParserOutput;
  6.  
  7. public class SiteMapParserToIndex implements SiteMapParserOutput {
  8.    protected Applet m_applet;
  9.    protected IndexPane m_ipIndex;
  10.    protected int indent = 0;
  11.    protected int real_indent = 0;
  12.    protected boolean done_a_node = false;
  13.    protected int param_no = -1;
  14.    protected String m_strName;
  15.    protected Vector secondary_entries;
  16.    protected boolean m_bInGlobal = true;
  17.    protected char m_chCurrentStart = ' ';
  18.    protected int m_nItemsFound = 0;
  19.    protected String default_frame_name;
  20.  
  21.    public void end() {
  22.       this.m_ipIndex.getEditBox().enable(true);
  23.       this.m_ipIndex.ShowList();
  24.       this.m_ipIndex.getEditBox().requestFocus();
  25.       this.m_ipIndex.ResetCursor();
  26.       this.m_applet.showStatus(ResourceLib.GetRes("Done"));
  27.    }
  28.  
  29.    public SiteMapParserToIndex(Applet var1, BsscHelpRedirector var2) {
  30.       this.m_applet = var1;
  31.       this.m_ipIndex = new IndexPane(this.m_applet, var2);
  32.    }
  33.  
  34.    public void object_start() {
  35.       this.done_a_node = true;
  36.       this.m_bInGlobal = false;
  37.       this.param_no = -1;
  38.       this.secondary_entries = new Vector();
  39.    }
  40.  
  41.    public void throwMessage(String var1) {
  42.       this.m_applet.showStatus(var1);
  43.    }
  44.  
  45.    public void indent(int var1) {
  46.       if (var1 == 1) {
  47.          ++this.real_indent;
  48.          if (this.done_a_node) {
  49.             ++this.indent;
  50.          }
  51.       } else if (var1 == -1) {
  52.          this.real_indent += -1;
  53.          this.indent = this.real_indent;
  54.       }
  55.  
  56.       this.done_a_node = false;
  57.    }
  58.  
  59.    private String indent_string() {
  60.       String var1 = "";
  61.  
  62.       for(int var2 = 0; var2 < this.indent; ++var2) {
  63.          var1 = var1 + "  ";
  64.       }
  65.  
  66.       return var1;
  67.    }
  68.  
  69.    public IndexPane getIndex() {
  70.       return this.m_ipIndex;
  71.    }
  72.  
  73.    public void start() {
  74.       this.m_ipIndex.getEditBox().enable(false);
  75.       this.m_ipIndex.HideList();
  76.       this.m_ipIndex.SetWaitCursor();
  77.    }
  78.  
  79.    public boolean matchType(String var1) {
  80.       return var1 != null && var1.toUpperCase().endsWith(".HHK");
  81.    }
  82.  
  83.    public void putImage(String var1, long var2, Object var4) {
  84.    }
  85.  
  86.    public void object_end() {
  87.       this.m_ipIndex.add(this.indent_string() + this.m_strName, this.secondary_entries);
  88.       if (this.m_strName != null && this.m_strName.length() != 0) {
  89.          char var1 = Character.toUpperCase(this.m_strName.charAt(0));
  90.          if (this.indent == 0 && var1 != this.m_chCurrentStart) {
  91.             this.m_chCurrentStart = var1;
  92.             String var2 = ResourceLib.GetRes("LoadingIndex") + " [";
  93.             var2 = var2 + var1;
  94.             var2 = var2 + "]";
  95.             this.m_applet.showStatus(var2);
  96.          }
  97.  
  98.          ++this.m_nItemsFound;
  99.          if (this.m_nItemsFound % 50 == 0) {
  100.             this.m_ipIndex.paintAll(this.m_ipIndex.getGraphics());
  101.          }
  102.  
  103.       }
  104.    }
  105.  
  106.    public IndexSecondaryEntry getLatestEntry() {
  107.       int var1 = this.param_no == 0 ? 0 : this.param_no - 1;
  108.       if (this.secondary_entries.size() < var1 + 1) {
  109.          this.secondary_entries.setSize(var1 + 1);
  110.          this.secondary_entries.setElementAt(new IndexSecondaryEntry(), var1);
  111.       }
  112.  
  113.       return (IndexSecondaryEntry)this.secondary_entries.elementAt(var1);
  114.    }
  115.  
  116.    public void param(String var1, String var2) {
  117.       char var3 = Character.toUpperCase(var1.charAt(0));
  118.       if (this.m_bInGlobal) {
  119.          if (var3 == 'F' && var1.equalsIgnoreCase("FrameName")) {
  120.             this.default_frame_name = var2;
  121.             return;
  122.          }
  123.       } else {
  124.          switch (var3) {
  125.             case 'F':
  126.                if (var1.equalsIgnoreCase("Frame")) {
  127.                   this.getLatestEntry().frame = var2;
  128.                   return;
  129.                }
  130.                break;
  131.             case 'L':
  132.                if (var1.equalsIgnoreCase("Local")) {
  133.                   this.getLatestEntry().local = var2;
  134.                   return;
  135.                }
  136.                break;
  137.             case 'N':
  138.                if (var1.equalsIgnoreCase("Name")) {
  139.                   ++this.param_no;
  140.                   var2 = this.fixSpecialCharacters(var2);
  141.                   this.getLatestEntry().name = var2;
  142.                   if (this.getLatestEntry().frame == null) {
  143.                      this.getLatestEntry().frame = this.default_frame_name;
  144.                   }
  145.  
  146.                   if (this.param_no == 0) {
  147.                      this.m_strName = var2;
  148.                      return;
  149.                   }
  150.                }
  151.                break;
  152.             case 'S':
  153.                if (var1.equalsIgnoreCase("See Also")) {
  154.                   this.getLatestEntry().see_also = var2;
  155.                   return;
  156.                }
  157.                break;
  158.             case 'U':
  159.                if (var1.equalsIgnoreCase("URL")) {
  160.                   this.getLatestEntry().url = var2;
  161.                   return;
  162.                }
  163.          }
  164.       }
  165.  
  166.    }
  167.  
  168.    public String fixSpecialCharacters(String var1) {
  169.       if (var1 == null) {
  170.          return null;
  171.       } else {
  172.          int var2 = var1.indexOf(38);
  173.          if (var2 < 0) {
  174.             return var1;
  175.          } else {
  176.             String var3 = "";
  177.  
  178.             while(var2 > -1 && var2 < var1.length() - 2) {
  179.                var3 = var3 + var1.substring(0, var2);
  180.                String var4 = var1.substring(var2);
  181.                int var5 = var4.indexOf(59);
  182.                if (var5 < 0) {
  183.                   var3 = var3 + var4;
  184.                   break;
  185.                }
  186.  
  187.                if (var5 < var4.length() - 1) {
  188.                   var1 = var4.substring(var5 + 1);
  189.                } else {
  190.                   var1 = "";
  191.                }
  192.  
  193.                var4 = var4.substring(1, var5);
  194.                switch (Character.toUpperCase(var4.charAt(0))) {
  195.                   case 'A':
  196.                      if (var4.equalsIgnoreCase("amp")) {
  197.                         var4 = "&";
  198.                      }
  199.                      break;
  200.                   case 'C':
  201.                      if (var4.equalsIgnoreCase("copy")) {
  202.                         var4 = "(c)";
  203.                      }
  204.                      break;
  205.                   case 'G':
  206.                      if (var4.equalsIgnoreCase("gt")) {
  207.                         var4 = ">";
  208.                      }
  209.                      break;
  210.                   case 'L':
  211.                      if (var4.equalsIgnoreCase("lt")) {
  212.                         var4 = "<";
  213.                      }
  214.                      break;
  215.                   case 'N':
  216.                      if (var4.equalsIgnoreCase("nbsp")) {
  217.                         var4 = " ";
  218.                      }
  219.                      break;
  220.                   case 'Q':
  221.                      if (var4.equalsIgnoreCase("quot")) {
  222.                         var4 = "\"";
  223.                      }
  224.                      break;
  225.                   case 'R':
  226.                      if (var4.equalsIgnoreCase("reg")) {
  227.                         var4 = "(R)";
  228.                      }
  229.                }
  230.  
  231.                var3 = var3 + var4;
  232.                var2 = var1.indexOf(38);
  233.                if (var2 < 0) {
  234.                   var3 = var3 + var1;
  235.                }
  236.             }
  237.  
  238.             return var3;
  239.          }
  240.       }
  241.    }
  242. }
  243.