home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2003 July / PCpro_2003_07.ISO / vollvers / edhtml / EdHTMLv5.0.exe / Main / hhctrl.cab / HHCtrl.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-12-12  |  13.8 KB  |  749 lines

  1. import java.applet.Applet;
  2. import java.awt.BorderLayout;
  3. import java.awt.Button;
  4. import java.awt.Color;
  5. import java.awt.Component;
  6. import java.awt.Container;
  7. import java.awt.Dimension;
  8. import java.awt.Event;
  9. import java.awt.Font;
  10. import java.awt.Frame;
  11. import java.awt.Graphics;
  12. import java.awt.Image;
  13. import java.awt.LayoutManager;
  14. import java.io.BufferedInputStream;
  15. import java.io.DataInputStream;
  16. import java.io.StringBufferInputStream;
  17. import java.net.MalformedURLException;
  18. import java.net.URL;
  19. import java.util.Properties;
  20. import java.util.Vector;
  21.  
  22. public class HHCtrl extends Applet implements Runnable {
  23.    private static final int CMD_CONTENTS = 0;
  24.    private static final int CMD_INDEX = 1;
  25.    private static final int CMD_RELATED = 2;
  26.    private Dimension m_Size;
  27.    private boolean fLoaded;
  28.    private Image m_bgImage;
  29.    private Color m_fontColor;
  30.    private long m_exWinStyle;
  31.    private long m_winStyle;
  32.    private long[] m_flags;
  33.    private boolean fSized;
  34.    TreeView m_tview;
  35.    private int m_itemHeight;
  36.    private int m_style;
  37.    private int m_redrawMode;
  38.    private int m_clickMode;
  39.    private int m_sizeMode;
  40.    private IndexPanel m_index;
  41.    private int m_autoKey;
  42.    private Color m_bgcolor;
  43.    private Button btnRelated;
  44.    private RelatedDialog m_dlgRelated;
  45.    private Vector q_commands;
  46.    private Vector q_objects;
  47.    private Thread m_workerThread;
  48.    private Properties m_locStrings;
  49.    static final int WCMD_LOADLIST = 1;
  50.    static final int WCMD_SHOWDOC = 2;
  51.    static final int WCMD_SHOWURL = 3;
  52.    static final int WCMD_CLICK = 4;
  53.    private int m_command;
  54.    private String m_button;
  55.    private String m_targetFrame;
  56.    private String m_initState;
  57.    private int m_autoExpandLevel;
  58.    private Vector m_itemParams;
  59.    private Vector m_relatedParams;
  60.    private Font m_font;
  61.    private final int maxWidth;
  62.    private final int maxHeight;
  63.    private final int minWidth;
  64.    private final int minHeight;
  65.    private final String PARAM_command;
  66.    private final String PARAM_button;
  67.    private final String PARAM_item1;
  68.    private final String PARAM_background;
  69.    private final String PARAM_backgroundimage;
  70.    private final String PARAM_properties;
  71.    private final String PARAM_font;
  72.    private final String PARAM_flags;
  73.    private final String PARAM_frame;
  74.    private final String PARAM_sizemode;
  75.    private final String m_engStrings;
  76.  
  77.    void setWinStyle(long var1) {
  78.       this.m_winStyle = var1;
  79.       if ((this.m_winStyle & 512L) > 0L && this.m_command == 0) {
  80.          this.m_tview.reshape(2, 2, ((Component)this).size().width - 4, ((Component)this).size().height - 4);
  81.          ((Component)this).repaint();
  82.       } else {
  83.          this.m_tview.reshape(0, 0, ((Component)this).size().width, ((Component)this).size().height);
  84.          ((Component)this).repaint();
  85.       }
  86.    }
  87.  
  88.    public void stop() {
  89.       if (this.m_workerThread != null) {
  90.          this.m_workerThread.stop();
  91.          this.m_workerThread = null;
  92.       }
  93.  
  94.       if (this.m_command == 2 && this.m_dlgRelated != null) {
  95.          this.m_dlgRelated.hide();
  96.       }
  97.  
  98.    }
  99.  
  100.    private synchronized void addJob(int var1, Object var2) {
  101.       this.q_commands.addElement(new Integer(var1));
  102.       this.q_objects.addElement(var2);
  103.       this.notifyAll();
  104.    }
  105.  
  106.    private void initContents() {
  107.       ((Container)this).setLayout((LayoutManager)null);
  108.       this.m_tview = new TreeView(this);
  109.       this.m_tview.setSize(new Dimension(((Component)this).size().width, ((Component)this).size().height));
  110.       ((Container)this).add(this.m_tview);
  111.       this.m_tview.addControls();
  112.       if ((this.m_winStyle & 512L) > 0L && this.m_sizeMode == 0) {
  113.          this.m_tview.reshape(2, 2, ((Component)this).size().width - 4, ((Component)this).size().height - 4);
  114.       } else if (this.m_sizeMode == 0) {
  115.          this.m_tview.reshape(0, 0, ((Component)this).size().width, ((Component)this).size().height);
  116.       }
  117.  
  118.       this.m_tview.setBackground(this.m_bgcolor);
  119.       this.m_tview.setBackgroundImage(this.m_bgImage);
  120.       this.m_tview.setItemHeight(this.m_itemHeight);
  121.       this.m_tview.setStyle(this.m_style);
  122.       this.m_tview.setStyles(this.m_winStyle, this.m_exWinStyle);
  123.       this.m_tview.setRedrawMode(this.m_redrawMode);
  124.       this.m_tview.setClickMode(this.m_clickMode);
  125.       this.m_tview.setAutoExpandLevel(this.m_autoExpandLevel);
  126.       this.m_tview.setFont(this.m_font);
  127.       ((Component)this).repaint();
  128.    }
  129.  
  130.    public boolean gotFocus(Event var1, Object var2) {
  131.       return this.m_tview.gotFocus(var1, var2);
  132.    }
  133.  
  134.    public boolean lostFocus(Event var1, Object var2) {
  135.       return this.m_tview.lostFocus(var1, var2);
  136.    }
  137.  
  138.    private synchronized void runJob() {
  139.       while(this.q_commands.size() == 0) {
  140.          try {
  141.             this.wait();
  142.          } catch (InterruptedException var3) {
  143.          }
  144.       }
  145.  
  146.       int var1 = (Integer)this.q_commands.elementAt(0);
  147.       Object var2 = this.q_objects.elementAt(0);
  148.       this.q_commands.removeElementAt(0);
  149.       this.q_objects.removeElementAt(0);
  150.       switch (var1) {
  151.          case 1:
  152.             this.fLoaded = true;
  153.             this.initList();
  154.             return;
  155.          case 2:
  156.             this.loadElement((Element)var2);
  157.             return;
  158.          case 3:
  159.             this.loadURL((String)var2, this.m_targetFrame);
  160.             return;
  161.          case 4:
  162.             this.showRelated();
  163.             return;
  164.          default:
  165.       }
  166.    }
  167.  
  168.    void initList() {
  169.       boolean var1 = false;
  170.       if (this.m_itemParams.size() > 0 && ((String)this.m_itemParams.elementAt(0)).compareTo("") != 0) {
  171.          ((Applet)this).showStatus(this.getString("cnt.load") + ": " + (String)this.m_itemParams.elementAt(0));
  172.  
  173.          try {
  174.             URL var2 = new URL(((Applet)this).getDocumentBase(), (String)this.m_itemParams.elementAt(0));
  175.             var1 = this.m_tview.loadFromHHC(var2);
  176.             if (this.m_tview.getFrame().compareTo("") != 0) {
  177.                this.m_targetFrame = this.m_tview.getFrame();
  178.             }
  179.          } catch (MalformedURLException var3) {
  180.             ((Applet)this).showStatus(this.getString("cnt.load.err") + " " + (String)this.m_itemParams.elementAt(0));
  181.          }
  182.       }
  183.  
  184.       if (!var1) {
  185.          ((Applet)this).showStatus(this.getString("cnt.load.err") + " " + (String)this.m_itemParams.elementAt(0));
  186.       }
  187.  
  188.       ((Component)this).repaint();
  189.       this.m_tview.repaint();
  190.    }
  191.  
  192.    private Font parseFont(String var1) {
  193.       byte var3 = 12;
  194.       byte var4 = 5;
  195.       if (var1 == null) {
  196.          this.m_fontColor = Color.black;
  197.          return new Font("Helvetica", 0, 12);
  198.       } else {
  199.          String var5 = "Helvetica";
  200.          int var6 = var3;
  201.          int var7 = 0;
  202.          int var8 = var1.indexOf(",");
  203.          if (var8 > 0) {
  204.             String var2;
  205.             if (var8 != -1) {
  206.                var2 = var1.substring(0, var8);
  207.             } else {
  208.                var2 = var1;
  209.             }
  210.  
  211.             if (var2.length() > 0) {
  212.                var5 = var2;
  213.             }
  214.          }
  215.  
  216.          if (var8 >= 0) {
  217.             var1 = var1.substring(var8 + 1);
  218.             var8 = var1.indexOf(",");
  219.             String var13;
  220.             if (var8 != -1) {
  221.                var13 = var1.substring(0, var8);
  222.             } else {
  223.                var13 = var1;
  224.             }
  225.  
  226.             if (var13.length() > 0) {
  227.                try {
  228.                   var6 = Integer.parseInt(var13);
  229.                   if (var6 < var4) {
  230.                      var6 = var3;
  231.                   }
  232.                } catch (Exception var11) {
  233.                   var6 = var3;
  234.                }
  235.             }
  236.          }
  237.  
  238.          if (var8 >= 0) {
  239.             var1 = var1.substring(var8 + 1);
  240.             var8 = var1.indexOf(",");
  241.          }
  242.  
  243.          if (var8 >= 0) {
  244.             var1 = var1.substring(var8 + 1);
  245.             var8 = var1.indexOf(",");
  246.             String var14;
  247.             if (var8 != -1) {
  248.                var14 = var1.substring(0, var8).trim().toUpperCase();
  249.             } else {
  250.                var14 = var1.trim().toUpperCase();
  251.             }
  252.  
  253.             if (var14.length() > 0) {
  254.                try {
  255.                   int var9 = Integer.parseInt(var14, 16);
  256.                   this.m_fontColor = new Color(var9);
  257.                } catch (Exception var10) {
  258.                   this.m_fontColor = Color.black;
  259.                }
  260.             }
  261.          }
  262.  
  263.          if (var8 >= 0) {
  264.             var1 = var1.substring(var8 + 1);
  265.             var8 = var1.indexOf(",");
  266.             String var15;
  267.             if (var8 != -1) {
  268.                var15 = var1.substring(0, var8).trim().toUpperCase();
  269.             } else {
  270.                var15 = var1.trim().toUpperCase();
  271.             }
  272.  
  273.             var7 = 0;
  274.             if (var15.length() > 0) {
  275.                if (var15.indexOf("BOLD") != -1) {
  276.                   ++var7;
  277.                }
  278.  
  279.                if (var15.indexOf("ITALIC") != -1) {
  280.                   var7 += 2;
  281.                }
  282.             }
  283.          }
  284.  
  285.          return new Font(var5, var7, var6);
  286.       }
  287.    }
  288.  
  289.    private void initRelated() {
  290.       this.btnRelated = new Button(this.m_button);
  291.       ((Container)this).setLayout(new BorderLayout());
  292.       ((Container)this).add("Center", this.btnRelated);
  293.       this.m_relatedParams = this.m_itemParams;
  294.       this.m_dlgRelated = new RelatedDialog(this.getString("rel.dlgcaption"), this.m_targetFrame, this, this.getParentFrame());
  295.       ((Component)this).setFont(new Font("Dialog", 0, 16));
  296.       this.m_dlgRelated.CreateControls();
  297.    }
  298.  
  299.    public void paint(Graphics var1) {
  300.       this.m_Size = ((Component)this).size();
  301.       if (this.m_sizeMode == 0 && ((Component)this).size().width > 0 && ((Component)this).size().height > 0 && this.m_command == 0) {
  302.          this.m_tview.setRedraw(false);
  303.          if ((this.m_winStyle & 512L) > 0L) {
  304.             this.m_tview.reshape(2, 2, ((Component)this).size().width - 4, ((Component)this).size().height - 4);
  305.             this.m_tview.setRedraw(true);
  306.             this.m_tview.setSize(new Dimension(((Component)this).size().width - 4, ((Component)this).size().height - 4));
  307.          } else {
  308.             this.m_tview.reshape(0, 0, ((Component)this).size().width, ((Component)this).size().height);
  309.             this.m_tview.setRedraw(true);
  310.             this.m_tview.setSize(new Dimension(((Component)this).size().width, ((Component)this).size().height));
  311.          }
  312.  
  313.          this.m_tview.doValidate();
  314.       }
  315.  
  316.       if ((this.m_winStyle & 512L) > 0L && this.m_command == 0) {
  317.          var1.setColor(Color.gray);
  318.          var1.drawLine(0, 0, 0, this.m_Size.height);
  319.          var1.drawLine(0, 0, this.m_Size.width, 0);
  320.          var1.setColor(Color.black);
  321.          var1.drawLine(1, 1, this.m_Size.width - 2, 1);
  322.          var1.drawLine(1, 1, 1, this.m_Size.height - 2);
  323.          var1.setColor(Color.white);
  324.          var1.drawLine(0, this.m_Size.height - 1, this.m_Size.width, this.m_Size.height - 1);
  325.          var1.drawLine(this.m_Size.width - 1, 0, this.m_Size.width - 1, this.m_Size.height);
  326.          var1.setColor(Color.lightGray);
  327.          var1.drawLine(1, this.m_Size.height - 2, this.m_Size.width - 2, this.m_Size.height - 2);
  328.          var1.drawLine(this.m_Size.width - 2, 1, 1, this.m_Size.height - 2);
  329.       }
  330.  
  331.    }
  332.  
  333.    private void initIndex() {
  334.       this.m_winStyle = 0L;
  335.       ((Container)this).setLayout(new BorderLayout());
  336.       this.m_index = new IndexPanel(this);
  337.       this.m_index.setBackground(this.m_bgcolor);
  338.       this.m_index.setBackgroundImage(this.m_bgImage);
  339.       this.m_index.setFont(this.m_font, this.m_fontColor);
  340.       ((Container)this).add("Center", this.m_index);
  341.       this.m_index.CreateControls();
  342.       ((Container)this).validate();
  343.       this.m_dlgRelated = new RelatedDialog(this.getString("rel.dlgcaption"), this.m_targetFrame, this, this.getParentFrame());
  344.       ((Component)this).setFont(new Font("Dialog", 0, 12));
  345.       this.m_dlgRelated.CreateControls();
  346.    }
  347.  
  348.    public String[][] getParameterInfo() {
  349.       String[][] var1 = new String[][]{{"Command", "String", "Command"}, {"button", "String", "Button"}, {"Font", "String", "Font"}, {"Flags", "String", "Flags"}, {"Background", "String", "Background"}, {"BackgroundImage", "String", "Background Image"}, {"Frame", "String", "Frame"}, {"Properties", "String", "Property file"}};
  350.       return var1;
  351.    }
  352.  
  353.    private void loadRelated() {
  354.       if (this.m_dlgRelated.lstItems.getSelectedIndex() != -1) {
  355.          String var2 = (String)this.m_dlgRelated.m_itemList.elementAt(this.m_dlgRelated.lstItems.getSelectedIndex());
  356.          if (var2 != null) {
  357.             int var3 = var2.indexOf(";");
  358.             if (var3 != -1) {
  359.                String var1 = var2.substring(var3 + 1);
  360.                this.loadURL(var1, this.m_targetFrame);
  361.             }
  362.          }
  363.       }
  364.    }
  365.  
  366.    protected String getString(String var1) {
  367.       if (var1.equalsIgnoreCase("cnt.load.status") && this.m_command == 1) {
  368.          return this.m_locStrings.getProperty("idx.load.status2");
  369.       } else {
  370.          return var1.equalsIgnoreCase("cnt.load.status2") && this.m_command == 1 ? this.m_locStrings.getProperty("idx.load.status2") : this.m_locStrings.getProperty(var1);
  371.       }
  372.    }
  373.  
  374.    public void syncURL(String var1) {
  375.       if (this.m_command == 0) {
  376.          this.m_tview.sync(var1, 0);
  377.       }
  378.  
  379.    }
  380.  
  381.    private void loadURL(String var1, String var2) {
  382.       String var3 = System.getProperty("java.vendor");
  383.       if (var3.indexOf("Microsoft") != -1 && var1.indexOf("#") != -1) {
  384.          var1 = var1.substring(0, var1.indexOf("#") + 1) + var1.substring(var1.indexOf("#"));
  385.       }
  386.  
  387.       try {
  388.          URL var7 = new URL(var1);
  389.          if (var2.compareTo("") == 0) {
  390.             ((Applet)this).getAppletContext().showDocument(var7);
  391.          } else {
  392.             ((Applet)this).getAppletContext().showDocument(var7, var2);
  393.          }
  394.       } catch (MalformedURLException var6) {
  395.          try {
  396.             URL var4 = new URL(((Applet)this).getDocumentBase(), var1);
  397.             if (var2.compareTo("") == 0) {
  398.                ((Applet)this).getAppletContext().showDocument(var4);
  399.             } else {
  400.                ((Applet)this).getAppletContext().showDocument(var4, var2);
  401.             }
  402.          } catch (MalformedURLException var5) {
  403.             ((Applet)this).showStatus(this.getString("err.badurl") + " " + var1);
  404.          }
  405.       }
  406.    }
  407.  
  408.    public void update(Graphics var1) {
  409.       if (this.m_sizeMode == 0) {
  410.          this.paint(var1);
  411.       }
  412.  
  413.    }
  414.  
  415.    void showRelated() {
  416.       if (this.m_relatedParams.size() > 1) {
  417.          Thread var3 = Thread.currentThread();
  418.          this.m_dlgRelated.setCallingThread(var3);
  419.          this.m_dlgRelated.setItems(this.m_relatedParams);
  420.          this.m_dlgRelated.show();
  421.          if (this.m_dlgRelated.getStatus() == 0) {
  422.             var3.suspend();
  423.          }
  424.  
  425.          int var1 = this.m_dlgRelated.getStatus();
  426.          switch (var1) {
  427.             case 1:
  428.                this.loadRelated();
  429.             case 2:
  430.          }
  431.       }
  432.  
  433.       if (this.m_relatedParams.size() == 1) {
  434.          String var5 = (String)this.m_relatedParams.elementAt(0);
  435.          int var4 = var5.indexOf(";");
  436.          if (var4 == -1) {
  437.             return;
  438.          }
  439.  
  440.          String var2 = var5.substring(var4 + 1);
  441.          this.addJob(3, var2);
  442.       }
  443.  
  444.    }
  445.  
  446.    private void parseFlags(String var1) {
  447.       if (var1 == null) {
  448.          this.m_flags[0] = 512L;
  449.          this.m_flags[1] = 8388661L;
  450.          this.m_flags[2] = -1L;
  451.       } else {
  452.          int var3 = var1.indexOf(",");
  453.          if (var3 > 0) {
  454.             String var2;
  455.             if (var3 != -1) {
  456.                var2 = var1.substring(0, var3);
  457.             } else {
  458.                var2 = var1;
  459.             }
  460.  
  461.             if (var2.length() > 0 && (var2.startsWith("0x") || var2.startsWith("0X"))) {
  462.                try {
  463.                   this.m_flags[0] = Long.parseLong(var2.substring(2), 16);
  464.                } catch (Exception var6) {
  465.                   this.m_flags[0] = 512L;
  466.                }
  467.             }
  468.          }
  469.  
  470.          if (var3 >= 0) {
  471.             var1 = var1.substring(var3 + 1);
  472.             var3 = var1.indexOf(",");
  473.             String var8;
  474.             if (var3 != -1) {
  475.                var8 = var1.substring(0, var3);
  476.             } else {
  477.                var8 = var1;
  478.             }
  479.  
  480.             if (var8.length() > 0 && (var8.startsWith("0x") || var8.startsWith("0X"))) {
  481.                try {
  482.                   this.m_flags[1] = Long.parseLong(var8.substring(2), 16);
  483.                } catch (Exception var5) {
  484.                   this.m_flags[1] = 53L;
  485.                }
  486.             }
  487.          }
  488.  
  489.          if (var3 >= 0) {
  490.             var1 = var1.substring(var3 + 1);
  491.             var3 = var1.indexOf(",");
  492.             String var9;
  493.             if (var3 != -1) {
  494.                var9 = var1.substring(0, var3);
  495.             } else {
  496.                var9 = var1;
  497.             }
  498.  
  499.             if (var9.length() > 0 && (var9.startsWith("0x") || var9.startsWith("0X"))) {
  500.                try {
  501.                   this.m_flags[2] = Long.parseLong(var9.substring(2), 16);
  502.                } catch (Exception var4) {
  503.                   this.m_flags[2] = -1L;
  504.                }
  505.             }
  506.          }
  507.       }
  508.  
  509.       this.m_winStyle = this.m_flags[0];
  510.       this.m_exWinStyle = this.m_flags[1];
  511.    }
  512.  
  513.    public void start() {
  514.       this.m_Size = ((Component)this).size();
  515.       if (this.m_workerThread == null) {
  516.          this.m_workerThread = new Thread(this);
  517.          this.m_workerThread.start();
  518.       }
  519.  
  520.       ((Component)this).requestFocus();
  521.    }
  522.  
  523.    public String getAppletInfo() {
  524.       return "HTML Help Java Applet Version 4.72.7346 \r\n" + "Copyright (C) 1996-1997 Microsoft Corporation. All rights reserved";
  525.    }
  526.  
  527.    public boolean action(Event var1, Object var2) {
  528.       if (this.m_command == 0) {
  529.          if (((Element)var2).m_url.compareTo("") != 0) {
  530.             ((Applet)this).showStatus(this.getString("cnt.load") + ": " + ((Element)var2).m_url);
  531.             this.addJob(2, var2);
  532.          } else {
  533.             ((Applet)this).showStatus(((Element)var2).m_text);
  534.          }
  535.  
  536.          return true;
  537.       } else if (this.m_command == 1) {
  538.          if ((Element)var2 != null) {
  539.             this.addJob(2, var2);
  540.          }
  541.  
  542.          return true;
  543.       } else if (this.m_command == 2 && var1.target == this.btnRelated) {
  544.          this.addJob(4, "");
  545.          return true;
  546.       } else {
  547.          return false;
  548.       }
  549.    }
  550.  
  551.    private Frame getParentFrame() {
  552.       Container var1;
  553.       for(var1 = ((Component)this).getParent(); var1 != null && !(var1 instanceof Frame); var1 = ((Component)var1).getParent()) {
  554.       }
  555.  
  556.       return var1 instanceof Frame ? (Frame)var1 : null;
  557.    }
  558.  
  559.    public void HHClick() {
  560.       if (this.m_command == 2) {
  561.          this.addJob(4, "");
  562.       }
  563.  
  564.    }
  565.  
  566.    public void click() {
  567.       if (this.m_command == 2) {
  568.          this.addJob(4, "");
  569.       }
  570.  
  571.    }
  572.  
  573.    public void run() {
  574.       if (this.m_command == 0 && !this.fLoaded) {
  575.          this.initList();
  576.          this.fLoaded = true;
  577.       }
  578.  
  579.       if (this.m_command == 1 && !this.fLoaded) {
  580.          try {
  581.             this.m_index.loadFromHHC(new URL(((Applet)this).getDocumentBase(), (String)this.m_itemParams.elementAt(0)));
  582.             if (this.m_index.getFrame().compareTo("") != 0) {
  583.                this.m_targetFrame = this.m_index.getFrame();
  584.             }
  585.  
  586.             this.fLoaded = true;
  587.          } catch (MalformedURLException var1) {
  588.             ((Applet)this).showStatus(this.getString("idx.load.err") + " " + (String)this.m_itemParams.elementAt(0));
  589.          }
  590.       }
  591.  
  592.       while(true) {
  593.          try {
  594.             this.runJob();
  595.          } catch (InterruptedException var2) {
  596.             this.stop();
  597.          }
  598.       }
  599.    }
  600.  
  601.    public void init() {
  602.       String var1 = ((Applet)this).getParameter("Command");
  603.       if (var1 != null) {
  604.          if (var1.toUpperCase().startsWith("RELATED TOPICS")) {
  605.             this.m_command = 2;
  606.          }
  607.  
  608.          if (var1.equalsIgnoreCase("INDEX")) {
  609.             this.m_command = 1;
  610.          }
  611.       }
  612.  
  613.       var1 = ((Applet)this).getParameter("button");
  614.       if (var1 != null) {
  615.          this.m_button = var1;
  616.       }
  617.  
  618.       this.m_itemParams = new Vector();
  619.       int var2 = 1;
  620.  
  621.       while((var1 = ((Applet)this).getParameter("Item" + var2++)) != null) {
  622.          this.m_itemParams.addElement(var1);
  623.       }
  624.  
  625.       if (this.m_command == 0) {
  626.          this.m_bgcolor = Color.white;
  627.       }
  628.  
  629.       if (this.m_command == 1) {
  630.          this.m_bgcolor = Color.lightGray;
  631.       }
  632.  
  633.       var1 = ((Applet)this).getParameter("Background");
  634.       if (var1 != null) {
  635.          try {
  636.             int var3 = Integer.valueOf(var1, 16);
  637.             if (var3 != -1) {
  638.                this.m_bgcolor = new Color(var3);
  639.             }
  640.          } catch (Exception var10) {
  641.          }
  642.       }
  643.  
  644.       var1 = ((Applet)this).getParameter("BackgroundImage");
  645.       if (var1 != null) {
  646.          try {
  647.             this.m_bgImage = ((Applet)this).getImage(new URL(((Applet)this).getDocumentBase(), var1));
  648.          } catch (Exception var9) {
  649.             this.m_bgImage = null;
  650.          }
  651.       }
  652.  
  653.       this.m_font = this.parseFont(((Applet)this).getParameter("Font"));
  654.       this.parseFlags(((Applet)this).getParameter("Flags"));
  655.       new Color(0, 0, 128);
  656.       var1 = ((Applet)this).getParameter("Frame");
  657.       if (var1 != null) {
  658.          this.m_targetFrame = var1;
  659.       }
  660.  
  661.       Properties var17 = new Properties();
  662.  
  663.       try {
  664.          var17.load(new StringBufferInputStream(this.m_engStrings));
  665.       } catch (Exception var8) {
  666.       }
  667.  
  668.       this.m_locStrings = new Properties(var17);
  669.       var1 = ((Applet)this).getParameter("Properties");
  670.       if (var1 != null) {
  671.          try {
  672.             URL var4 = new URL(((Applet)this).getCodeBase(), var1);
  673.             BufferedInputStream var5 = new BufferedInputStream(var4.openStream(), 8192);
  674.             DataInputStream var6 = (DataInputStream)Runtime.getRuntime().getLocalizedInputStream(new DataInputStream(var5));
  675.             this.m_locStrings.load(var6);
  676.          } catch (Exception var7) {
  677.             ((Applet)this).showStatus(this.getString("err.propload"));
  678.          }
  679.       }
  680.  
  681.       switch (this.m_command) {
  682.          case 0:
  683.             this.initContents();
  684.             return;
  685.          case 1:
  686.             this.initIndex();
  687.             return;
  688.          case 2:
  689.             this.initRelated();
  690.             return;
  691.          default:
  692.       }
  693.    }
  694.  
  695.    public boolean handleEvent(Event var1) {
  696.       return super.handleEvent(var1);
  697.    }
  698.  
  699.    private void loadElement(Object var1) {
  700.       if (((Element)var1).m_related == null) {
  701.          if (((Element)var1).m_url.compareTo("") != 0) {
  702.             this.loadURL(((Element)var1).m_url, ((Element)var1).m_target.compareTo("") == 0 ? this.m_targetFrame : ((Element)var1).m_target);
  703.             return;
  704.          }
  705.       } else {
  706.          this.m_relatedParams = ((Element)var1).m_related;
  707.          Thread var2 = new Thread(this.m_dlgRelated);
  708.          var2.start();
  709.       }
  710.  
  711.    }
  712.  
  713.    public HHCtrl() {
  714.       this.m_fontColor = Color.black;
  715.       this.m_exWinStyle = 8388661L;
  716.       this.m_winStyle = 512L;
  717.       this.m_itemHeight = 18;
  718.       this.m_style = TreeView.STYLE_WIN95;
  719.       this.m_redrawMode = 1;
  720.       this.m_clickMode = 1;
  721.       this.m_bgcolor = Color.white;
  722.       this.m_button = "";
  723.       this.m_targetFrame = "";
  724.       this.m_autoExpandLevel = 2;
  725.       this.maxWidth = 1500;
  726.       this.maxHeight = 1500;
  727.       this.minWidth = 50;
  728.       this.minHeight = 50;
  729.       this.PARAM_command = "Command";
  730.       this.PARAM_button = "button";
  731.       this.PARAM_item1 = "Item1";
  732.       this.PARAM_background = "Background";
  733.       this.PARAM_backgroundimage = "BackgroundImage";
  734.       this.PARAM_properties = "Properties";
  735.       this.PARAM_font = "Font";
  736.       this.PARAM_flags = "Flags";
  737.       this.PARAM_frame = "Frame";
  738.       this.PARAM_sizemode = "SizeMode";
  739.       this.m_engStrings = "err.propload=Error loading properties\n" + "err.badurl=Invalid URL:\n" + "cnt.load=Loading\n" + "cnt.load.status=Loading contents...\n" + "cnt.load.elementname=Loading...\n" + "cnt.load.success=Contents loaded successfully.\n" + "cnt.load.status2=Loading contents\n" + "cnt.load.err=Error loading\n" + "cnt.merge.err=Error merging\n" + "cnt.merge.elementname=Loading...\n" + "cnt.merge.errelement=Cannot load section\n" + "cnt.merge.success=Section loaded successfully.\n" + "idx.load.err=Error loading\n" + "idx.load.success=Index loaded successfully\n" + "idx.load.status=Loading index...\n" + "idx.load.status2=Loading index\n" + "idx.load.elementname=Loading...\n" + "idx.display=Display\n" + "rel.dlgwidth=294\n" + "rel.dlgheight=238\n" + "rel.btnwidth=50\n" + "rel.dlgcaption=Topics Found\n" + "rel.display=Display\n" + "rel.cancel=Cancel\n" + "rel.label=Click a topic, then click Display.\n";
  740.       this.m_flags = new long[3];
  741.       this.q_commands = new Vector();
  742.       this.q_objects = new Vector();
  743.    }
  744.  
  745.    public boolean keyDown(Event var1, int var2) {
  746.       return this.m_command == 0 ? this.m_tview.keyDown(var1, var2) : false;
  747.    }
  748. }
  749.