home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2004 May / DPPCPRO0504.ISO / May / Seatools / SeaTools.iso / tools / en / webhelp / webhelp.cab / XMLConsumer / IdxEntry.class (.txt) < prev    next >
Encoding:
Java Class File  |  2002-04-17  |  5.5 KB  |  268 lines

  1. package XMLConsumer;
  2.  
  3. import hhapplet.BsscFontFixPatch;
  4. import hhapplet.IActionSink;
  5. import hhapplet.URLFileHandler;
  6. import java.awt.Color;
  7. import java.awt.Font;
  8. import java.awt.FontMetrics;
  9. import java.awt.Graphics;
  10. import java.awt.Image;
  11. import java.awt.image.ImageObserver;
  12. import java.net.MalformedURLException;
  13. import java.net.URL;
  14. import java.util.Enumeration;
  15. import java.util.Vector;
  16.  
  17. public class IdxEntry implements IEntry {
  18.    public static final int IDX_NODE = 1;
  19.    public static final int IDX_KEY = 2;
  20.    public static final int IDX_SUBKEY = 3;
  21.    private int m_nNext;
  22.    private int m_nPrev;
  23.    private String m_name;
  24.    private Vector m_topics;
  25.    private int m_nType;
  26.    private int m_nLevel;
  27.    private boolean m_bSelect;
  28.    private boolean m_bHighLight;
  29.    private IdxData m_IdxData;
  30.    private String m_target;
  31.    private static SecondaryDialog m_dialog = null;
  32.    private static Color GREEN = new Color(0, 127, 0);
  33.    private static final int IDX_INDENT = 10;
  34.    private static Color m_activeColor;
  35.    private static Color m_hoverColor;
  36.    private static int m_indent;
  37.    private static Font m_normalFont;
  38.    private static Font m_hoverFont;
  39.    private static Color m_normalColor;
  40.    private static boolean m_normalUnderline;
  41.    private static boolean m_hoverUnderline;
  42.  
  43.    public static SecondaryDialog getDialog(IActionSink var0, URL var1, String var2, Vector var3) {
  44.       if (m_dialog != null) {
  45.          m_dialog.closeDialog();
  46.          m_dialog = null;
  47.       }
  48.  
  49.       m_dialog = new SecondaryDialog(var0, var1, var2, var3);
  50.       return m_dialog;
  51.    }
  52.  
  53.    public int getPrevSpan() {
  54.       return this.m_nPrev;
  55.    }
  56.  
  57.    public void setTarget(String var1) {
  58.       this.m_target = var1;
  59.    }
  60.  
  61.    public static void setHoverUnderline(boolean var0) {
  62.       m_hoverUnderline = var0;
  63.    }
  64.  
  65.    public boolean isMainEntry() {
  66.       return this.m_nType == 2;
  67.    }
  68.  
  69.    public static void setNormalColor(Color var0) {
  70.       m_normalColor = var0;
  71.    }
  72.  
  73.    public static void setHoverFont(Font var0) {
  74.       if (var0.getSize() != m_normalFont.getSize()) {
  75.          m_hoverFont = new Font(var0.getFamily(), var0.getStyle(), m_normalFont.getSize());
  76.       } else {
  77.          m_hoverFont = var0;
  78.       }
  79.    }
  80.  
  81.    public IdxEntry(String var1, int var2, int var3, int var4, IdxData var5) {
  82.       this.m_name = var1;
  83.       this.m_nPrev = var2;
  84.       this.m_nNext = 0;
  85.       this.m_nType = var3;
  86.       this.m_nLevel = var4;
  87.       this.m_bHighLight = false;
  88.       this.m_bSelect = false;
  89.       this.m_IdxData = var5;
  90.       this.m_target = null;
  91.    }
  92.  
  93.    public Enumeration getTopics() {
  94.       return this.m_topics != null ? this.m_topics.elements() : null;
  95.    }
  96.  
  97.    public void select(boolean var1) {
  98.       this.m_bSelect = var1;
  99.    }
  100.  
  101.    public void addTopic(Topic var1) {
  102.       if (this.m_topics == null) {
  103.          this.m_topics = new Vector();
  104.       }
  105.  
  106.       this.m_topics.addElement(var1);
  107.    }
  108.  
  109.    public static void setNormalFont(Font var0) {
  110.       m_normalFont = var0;
  111.    }
  112.  
  113.    public static void setNormalUnderline(boolean var0) {
  114.       m_normalUnderline = var0;
  115.    }
  116.  
  117.    public static void setActiveColor(Color var0) {
  118.       m_activeColor = var0;
  119.    }
  120.  
  121.    static {
  122.       m_activeColor = Color.gray;
  123.       m_hoverColor = GREEN;
  124.       m_indent = 10;
  125.       m_normalFont = new Font(BsscFontFixPatch.GetFontName(), 0, BsscFontFixPatch.GetFontSize());
  126.       m_hoverFont = new Font(BsscFontFixPatch.GetFontName(), 0, BsscFontFixPatch.GetFontSize());
  127.       m_normalColor = Color.black;
  128.       m_normalUnderline = false;
  129.       m_hoverUnderline = true;
  130.    }
  131.  
  132.    public String getName() {
  133.       return this.m_name;
  134.    }
  135.  
  136.    public void highLight(boolean var1) {
  137.       this.m_bHighLight = var1;
  138.    }
  139.  
  140.    public void action(IActionSink var1) {
  141.       if (this.m_topics != null) {
  142.          if (this.m_topics.size() == 1) {
  143.             Topic var7 = (Topic)this.m_topics.elementAt(0);
  144.  
  145.             try {
  146.                URL var3 = URLFileHandler.makeURL(this.m_IdxData.getProjURL(), var7.getURL(), (String)null);
  147.                String var4 = var3.toString();
  148.                if (var4.indexOf("file:/\\\\") == 0) {
  149.                   var4 = "file://" + var4.substring(8);
  150.                   var3 = new URL(var4);
  151.                }
  152.  
  153.                Vector var5 = new Vector();
  154.                var5.addElement(var3.toString());
  155.                var5.addElement(this.m_target);
  156.                var1.accept(var5);
  157.                return;
  158.             } catch (MalformedURLException var6) {
  159.                ((Throwable)var6).printStackTrace();
  160.                return;
  161.             }
  162.          }
  163.  
  164.          SecondaryDialog var2 = getDialog(var1, this.m_IdxData.getProjURL(), this.m_target, this.m_topics);
  165.          var2.showTopic();
  166.          var2.getList().requestFocus();
  167.       }
  168.  
  169.    }
  170.  
  171.    public int getType() {
  172.       return this.m_nType;
  173.    }
  174.  
  175.    public int getNextSpan() {
  176.       return this.m_nNext;
  177.    }
  178.  
  179.    public void display(Graphics var1, int var2, int var3, Color var4, Image var5) {
  180.       FontMetrics var6 = var1.getFontMetrics(m_normalFont);
  181.       FontMetrics var7 = var1.getFontMetrics(m_hoverFont);
  182.       int var8 = var6.stringWidth(this.m_name + " ");
  183.       int var9 = var7.stringWidth(this.m_name + " ");
  184.       var8 = var8 > var9 ? var8 : var9;
  185.       int var10 = var6.getAscent();
  186.       int var11 = var6.getLeading();
  187.       int var12 = var7.getAscent();
  188.       int var13 = var7.getLeading();
  189.       switch (this.m_nType) {
  190.          case 1:
  191.             Color var18 = var1.getColor();
  192.             if (this.m_bSelect) {
  193.                var1.setColor(m_activeColor);
  194.                var1.fill3DRect(0, var2 * var3, var8, var3, true);
  195.             } else if (var5 != null) {
  196.                var1.drawImage(var5, 0, var2 * var3, var8, var2 * var3 + var3, 0, var2 * var3, var8, var2 * var3 + var3, (ImageObserver)null);
  197.             } else {
  198.                var1.setColor(var4);
  199.                var1.fillRect(0, var2 * var3, var8, var3);
  200.             }
  201.  
  202.             var1.setColor(var18);
  203.             Font var19 = var1.getFont();
  204.             Font var16 = new Font(var19.getName(), var19.getStyle() | 1, var19.getSize());
  205.             var1.setFont(var16);
  206.             var1.drawString(this.m_name, 0, var2 * var3 + var10 + var11);
  207.             var1.setFont(var19);
  208.             return;
  209.          case 2:
  210.          case 3:
  211.             Color var14 = var1.getColor();
  212.             if (this.m_bSelect) {
  213.                var1.setColor(m_activeColor);
  214.                var1.fill3DRect(m_indent * this.m_nLevel, var2 * var3, var8, var3, true);
  215.             } else if (var5 != null) {
  216.                var1.drawImage(var5, m_indent * this.m_nLevel, var2 * var3, m_indent * this.m_nLevel + var8, var2 * var3 + var3, m_indent * this.m_nLevel, var2 * var3, m_indent * this.m_nLevel + var8, var2 * var3 + var3, (ImageObserver)null);
  217.             } else {
  218.                var1.setColor(var4);
  219.                var1.fillRect(m_indent * this.m_nLevel, var2 * var3, var8, var3);
  220.             }
  221.  
  222.             var1.setColor(var14);
  223.             Font var15 = var1.getFont();
  224.             if (this.m_bHighLight) {
  225.                var1.setColor(m_hoverColor);
  226.                var1.setFont(m_hoverFont);
  227.                var1.drawString(this.m_name, m_indent * this.m_nLevel, var2 * var3 + var12 + var13);
  228.                if (m_hoverUnderline) {
  229.                   var1.drawLine(m_indent * this.m_nLevel, (var2 + 1) * var3 - 1, m_indent * this.m_nLevel + var8 - 1, (var2 + 1) * var3 - 1);
  230.                }
  231.  
  232.                var1.setFont(var15);
  233.                var1.setColor(var14);
  234.                return;
  235.             } else {
  236.                var1.setColor(m_normalColor);
  237.                var1.setFont(m_normalFont);
  238.                var1.drawString(this.m_name, m_indent * this.m_nLevel, var2 * var3 + var10 + var11);
  239.                if (m_normalUnderline) {
  240.                   var1.drawLine(m_indent * this.m_nLevel, (var2 + 1) * var3 - 1, m_indent * this.m_nLevel + var8 - 1, (var2 + 1) * var3 - 1);
  241.                }
  242.  
  243.                var1.setFont(var15);
  244.                var1.setColor(var14);
  245.             }
  246.          default:
  247.       }
  248.    }
  249.  
  250.    public static void setIndent(int var0) {
  251.       m_indent = var0;
  252.    }
  253.  
  254.    public void setNextSpan(int var1) {
  255.       this.m_nNext = var1;
  256.    }
  257.  
  258.    public int getWidth(Graphics var1) {
  259.       FontMetrics var2 = var1.getFontMetrics(m_normalFont);
  260.       int var3 = var2.stringWidth(this.m_name + " ");
  261.       return m_indent * this.m_nLevel + var3 + 1;
  262.    }
  263.  
  264.    public static void setHoverColor(Color var0) {
  265.       m_hoverColor = var0;
  266.    }
  267. }
  268.