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

  1. package XMLConsumer;
  2.  
  3. import hhapplet.BsscFontFixPatch;
  4. import hhapplet.IActionSink;
  5. import hhapplet.ImageCache;
  6. import hhapplet.URLFileHandler;
  7. import java.awt.Color;
  8. import java.awt.Font;
  9. import java.awt.FontMetrics;
  10. import java.awt.Graphics;
  11. import java.awt.Image;
  12. import java.awt.image.ImageObserver;
  13. import java.net.MalformedURLException;
  14. import java.net.URL;
  15. import java.util.Vector;
  16. import treeview.ImageSet;
  17. import treeview.SiblingChildTree;
  18. import treeview.TreeViewImageSet;
  19.  
  20. public class TocEntry extends SiblingChildTree implements IEntry {
  21.    public static final int TOC_BOOK = 1;
  22.    public static final int TOC_ITEM = 2;
  23.    public static final int TOC_CHUNK = 3;
  24.    public static final int TOC_PROJECT = 4;
  25.    public static final int TOC_REMOTEITEM = 5;
  26.    private static final int TOC_INDENT = 16;
  27.    private String m_name;
  28.    private String m_url;
  29.    private String m_ref;
  30.    private int m_nType;
  31.    private int m_nLevel;
  32.    private boolean m_bSelect;
  33.    private boolean m_bHighLight;
  34.    private TocData m_TocData;
  35.    private boolean m_bOpen;
  36.    private int m_nPosOffset;
  37.    private int m_nIndex;
  38.    private ITocEntryContainer m_Container;
  39.    private String m_strTarget;
  40.    private String m_strIcon;
  41.    private Image m_openIcon;
  42.    private Image m_closeIcon;
  43.    public static final int BOOKOPEN = 1;
  44.    public static final int BOOKCLOSE = 2;
  45.    public static final int ITEM = 3;
  46.    public static final int REMOTE = 4;
  47.    public static final int NEWBOOKOPEN = 5;
  48.    public static final int NEWBOOKCLOSE = 6;
  49.    public static final int NEWITEM = 7;
  50.    public static final int NEWREMOTE = 8;
  51.    private static Image m_iconBookClose;
  52.    private static Image m_iconBookOpen;
  53.    private static Image m_iconItem;
  54.    private static Image m_iconRemote;
  55.    private static Image m_iconNewBookClose;
  56.    private static Image m_iconNewBookOpen;
  57.    private static Image m_iconNewItem;
  58.    private static Image m_iconNewRemote;
  59.    private static Color GREEN = new Color(0, 127, 0);
  60.    private static Color m_activeColor;
  61.    private static int m_indent;
  62.    private static Font m_normalFont;
  63.    private static Font m_hoverFont;
  64.    private static Color m_normalColor;
  65.    private static Color m_hoverColor;
  66.    private static boolean m_normalUnderline;
  67.    private static boolean m_hoverUnderline;
  68.    private static ImageObserver m_observer;
  69.  
  70.    public void setContainer(ITocEntryContainer var1) {
  71.       this.m_Container = var1;
  72.    }
  73.  
  74.    public ITocEntryContainer getContainer() {
  75.       return this.m_Container;
  76.    }
  77.  
  78.    public static boolean hasImage(Image var0) {
  79.       return m_iconBookClose == var0 || m_iconBookOpen == var0 || m_iconItem == var0 || m_iconRemote == var0 || m_iconNewBookClose == var0 || m_iconNewBookOpen == var0 || m_iconNewItem == var0 || m_iconNewRemote == var0;
  80.    }
  81.  
  82.    public TocEntry getDirectParent() {
  83.       return (TocEntry)((SiblingChildTree)this).getParent();
  84.    }
  85.  
  86.    public void updatePosOffset(int var1) {
  87.       this.m_nPosOffset += var1;
  88.    }
  89.  
  90.    public boolean isMainEntry() {
  91.       return true;
  92.    }
  93.  
  94.    public TocEntry getPrevSibling() {
  95.       return (TocEntry)((SiblingChildTree)this).getSiblingLeft();
  96.    }
  97.  
  98.    public void select(boolean var1) {
  99.       this.m_bSelect = var1;
  100.    }
  101.  
  102.    public static void setNormalUnderline(boolean var0) {
  103.       m_normalUnderline = var0;
  104.    }
  105.  
  106.    public static void setActiveColor(Color var0) {
  107.       m_activeColor = var0;
  108.    }
  109.  
  110.    public String getName() {
  111.       return this.m_name;
  112.    }
  113.  
  114.    public void highLight(boolean var1) {
  115.       this.m_bHighLight = var1;
  116.    }
  117.  
  118.    public static void setIconImage(int var0, Image var1) {
  119.       switch (var0) {
  120.          case 1:
  121.             m_iconBookOpen = var1;
  122.             return;
  123.          case 2:
  124.             m_iconBookClose = var1;
  125.             return;
  126.          case 3:
  127.             m_iconItem = var1;
  128.             return;
  129.          case 4:
  130.             m_iconRemote = var1;
  131.             return;
  132.          case 5:
  133.             m_iconNewBookOpen = var1;
  134.             return;
  135.          case 6:
  136.             m_iconNewBookClose = var1;
  137.             return;
  138.          case 7:
  139.             m_iconNewItem = var1;
  140.             return;
  141.          case 8:
  142.             m_iconNewRemote = var1;
  143.             return;
  144.          default:
  145.       }
  146.    }
  147.  
  148.    private static Image getImage(int var0) {
  149.       TreeViewImageSet var1 = TreeViewImageSet.getInstance();
  150.       return var1 != null ? ((ImageSet)var1).getImage(var0) : null;
  151.    }
  152.  
  153.    public int getType() {
  154.       return this.m_nType;
  155.    }
  156.  
  157.    private Image getREmoteItemIcon() {
  158.       if (this.m_closeIcon == null) {
  159.          if (this.m_strIcon != null) {
  160.             String var1 = this.getIcon(this.m_strIcon, 0);
  161.             if (var1 != null) {
  162.                ImageCache var2 = ImageCache.getInstance();
  163.                String var3 = this.getFullPath(var1);
  164.                this.m_closeIcon = var2.GetImage(var3);
  165.             }
  166.          } else if (m_iconRemote != null) {
  167.             this.m_closeIcon = m_iconRemote;
  168.          } else {
  169.             this.m_closeIcon = getImage(14);
  170.          }
  171.       }
  172.  
  173.       return this.m_closeIcon;
  174.    }
  175.  
  176.    public int getPosOffset() {
  177.       return this.m_nPosOffset;
  178.    }
  179.  
  180.    public void setPosOffset(int var1) {
  181.       this.m_nPosOffset = var1;
  182.    }
  183.  
  184.    public int getLevel() {
  185.       return this.m_nLevel;
  186.    }
  187.  
  188.    public int getWidth(Graphics var1) {
  189.       FontMetrics var2 = var1.getFontMetrics(m_normalFont);
  190.       int var3 = var2.stringWidth(this.m_name + " ");
  191.       Image var4 = null;
  192.       switch (this.m_nType) {
  193.          case 1:
  194.          case 3:
  195.          case 4:
  196.             if (this.m_bOpen) {
  197.                var4 = this.getBookOpenIcon();
  198.             } else {
  199.                var4 = this.getBookCloseIcon();
  200.             }
  201.             break;
  202.          case 2:
  203.             var4 = this.getItemIcon();
  204.             break;
  205.          case 5:
  206.             var4 = this.getREmoteItemIcon();
  207.       }
  208.  
  209.       int var5 = 0;
  210.       if (var4 != null) {
  211.          var5 = var4.getWidth(m_observer) + 1;
  212.       }
  213.  
  214.       return m_indent * this.m_nLevel + var3 + 1 + var5;
  215.    }
  216.  
  217.    private Image getBookOpenIcon() {
  218.       if (this.m_openIcon == null) {
  219.          if (this.m_strIcon != null) {
  220.             String var1 = this.getIcon(this.m_strIcon, 1);
  221.             if (var1 != null) {
  222.                ImageCache var2 = ImageCache.getInstance();
  223.                String var3 = this.getFullPath(var1);
  224.                this.m_closeIcon = var2.GetImage(var3);
  225.             }
  226.          } else if (m_iconBookOpen != null) {
  227.             this.m_openIcon = m_iconBookOpen;
  228.          } else {
  229.             this.m_openIcon = getImage(1);
  230.          }
  231.       }
  232.  
  233.       return this.m_openIcon;
  234.    }
  235.  
  236.    private Image getItemIcon() {
  237.       if (this.m_closeIcon == null) {
  238.          if (this.m_strIcon != null) {
  239.             String var1 = this.getIcon(this.m_strIcon, 0);
  240.             if (var1 != null) {
  241.                ImageCache var2 = ImageCache.getInstance();
  242.                String var3 = this.getFullPath(var1);
  243.                this.m_closeIcon = var2.GetImage(var3);
  244.             }
  245.          } else if (m_iconItem != null) {
  246.             this.m_closeIcon = m_iconItem;
  247.          } else {
  248.             this.m_closeIcon = getImage(8);
  249.          }
  250.       }
  251.  
  252.       return this.m_closeIcon;
  253.    }
  254.  
  255.    public int getPrevSpan() {
  256.       TocEntry var1 = (TocEntry)((SiblingChildTree)this).getSiblingLeft();
  257.       if (var1 != null) {
  258.          int var2 = var1.getIndex();
  259.          return this.m_nIndex - var2 - 1;
  260.       } else {
  261.          return -1;
  262.       }
  263.    }
  264.  
  265.    public void setTarget(String var1) {
  266.       this.m_strTarget = var1;
  267.    }
  268.  
  269.    public TocEntry getNextSibling() {
  270.       return (TocEntry)((SiblingChildTree)this).getSibling();
  271.    }
  272.  
  273.    public static void setHoverUnderline(boolean var0) {
  274.       m_hoverUnderline = var0;
  275.    }
  276.  
  277.    public static void setHoverFont(Font var0) {
  278.       if (var0.getSize() != m_normalFont.getSize()) {
  279.          m_hoverFont = new Font(var0.getFamily(), var0.getStyle(), m_normalFont.getSize());
  280.       } else {
  281.          m_hoverFont = var0;
  282.       }
  283.    }
  284.  
  285.    public static void setNormalColor(Color var0) {
  286.       m_normalColor = var0;
  287.    }
  288.  
  289.    public TocEntry(String var1, String var2, String var3, int var4, int var5, int var6, TocData var7) {
  290.       this.m_name = var1;
  291.       this.m_url = var2;
  292.       this.m_nIndex = var4;
  293.       this.m_nType = var5;
  294.       this.m_nLevel = var6;
  295.       this.m_bHighLight = false;
  296.       this.m_bSelect = false;
  297.       this.m_TocData = var7;
  298.       this.m_bOpen = false;
  299.       this.m_nPosOffset = 0;
  300.       this.m_Container = null;
  301.       this.m_ref = var3;
  302.    }
  303.  
  304.    public boolean isOpen() {
  305.       return this.m_bOpen;
  306.    }
  307.  
  308.    public TocEntry getFirstChild() {
  309.       return (TocEntry)((SiblingChildTree)this).getChild();
  310.    }
  311.  
  312.    public static void SetObserver(ImageObserver var0) {
  313.       m_observer = var0;
  314.    }
  315.  
  316.    public void setIcon(String var1) {
  317.       this.m_strIcon = var1;
  318.    }
  319.  
  320.    private String getIcon(String var1, int var2) {
  321.       int var3;
  322.       for(var3 = var1.indexOf(59); var2-- > 0 && var3 != -1; var3 = var1.indexOf(59)) {
  323.          var1 = var1.substring(var3 + 1);
  324.       }
  325.  
  326.       if (var2 < 0) {
  327.          return var3 != -1 ? var1.substring(0, var3) : var1;
  328.       } else {
  329.          return null;
  330.       }
  331.    }
  332.  
  333.    public static void setNormalFont(Font var0) {
  334.       m_normalFont = var0;
  335.    }
  336.  
  337.    public TocEntry getNextOut() {
  338.       for(TocEntry var1 = this; var1 != null; var1 = var1.getDirectParent()) {
  339.          TocEntry var2 = var1.getNextSibling();
  340.          if (var2 != null) {
  341.             return var2;
  342.          }
  343.       }
  344.  
  345.       return null;
  346.    }
  347.  
  348.    private String getFullPath(String var1) {
  349.       String var2 = null;
  350.  
  351.       try {
  352.          URL var3 = URLFileHandler.makeURL(this.m_TocData.getProjURL(), var1, (String)null);
  353.          var2 = var3.toString();
  354.       } catch (MalformedURLException var4) {
  355.          ((Throwable)var4).printStackTrace();
  356.       }
  357.  
  358.       return var2;
  359.    }
  360.  
  361.    static {
  362.       m_activeColor = Color.gray;
  363.       m_indent = 16;
  364.       m_normalFont = new Font(BsscFontFixPatch.GetFontName(), 0, BsscFontFixPatch.GetFontSize());
  365.       m_hoverFont = new Font(BsscFontFixPatch.GetFontName(), 0, BsscFontFixPatch.GetFontSize());
  366.       m_normalColor = Color.black;
  367.       m_hoverColor = GREEN;
  368.       m_normalUnderline = false;
  369.       m_hoverUnderline = true;
  370.       m_observer = null;
  371.    }
  372.  
  373.    public int getIndex() {
  374.       return this.m_nIndex;
  375.    }
  376.  
  377.    public void toggle() {
  378.       this.m_bOpen = !this.m_bOpen;
  379.    }
  380.  
  381.    public void action(IActionSink var1) {
  382.       Vector var2 = new Vector();
  383.       var2.addElement(this);
  384.       var2.addElement(this.m_url);
  385.       var2.addElement(this.m_ref);
  386.       var2.addElement(this.m_TocData);
  387.       var2.addElement(this.m_strTarget);
  388.       var1.accept(var2);
  389.    }
  390.  
  391.    public int getNextSpan() {
  392.       TocEntry var1 = (TocEntry)((SiblingChildTree)this).getSibling();
  393.       if (var1 != null) {
  394.          int var2 = var1.getIndex();
  395.          return var2 - this.m_nIndex - 1;
  396.       } else {
  397.          return -1;
  398.       }
  399.    }
  400.  
  401.    public void display(Graphics var1, int var2, int var3, Color var4, Image var5) {
  402.       FontMetrics var6 = var1.getFontMetrics(m_normalFont);
  403.       FontMetrics var7 = var1.getFontMetrics(m_hoverFont);
  404.       int var8 = var6.stringWidth(this.m_name + " ");
  405.       int var9 = var7.stringWidth(this.m_name + " ");
  406.       var8 = var8 > var9 ? var8 : var9;
  407.       int var10 = var6.getAscent();
  408.       int var11 = var6.getLeading();
  409.       int var12 = var7.getAscent();
  410.       int var13 = var7.getLeading();
  411.       Image var14 = null;
  412.       switch (this.m_nType) {
  413.          case 1:
  414.          case 3:
  415.          case 4:
  416.             if (this.m_bOpen) {
  417.                var14 = this.getBookOpenIcon();
  418.             } else {
  419.                var14 = this.getBookCloseIcon();
  420.             }
  421.             break;
  422.          case 2:
  423.             var14 = this.getItemIcon();
  424.             break;
  425.          case 5:
  426.             var14 = this.getREmoteItemIcon();
  427.       }
  428.  
  429.       Color var15 = var1.getColor();
  430.       Font var16 = var1.getFont();
  431.       int var17 = 0;
  432.       if (var14 != null) {
  433.          var17 = var14.getWidth(m_observer) + 1;
  434.       }
  435.  
  436.       var1.drawImage(var14, m_indent * this.m_nLevel, var2 * var3, m_observer);
  437.       if (this.m_bSelect) {
  438.          var1.setColor(m_activeColor);
  439.          var1.fill3DRect(m_indent * this.m_nLevel + var17, var2 * var3, var8, var3, true);
  440.          var1.setColor(var15);
  441.       } else if (var5 != null) {
  442.          var1.drawImage(var5, m_indent * this.m_nLevel + var17, var2 * var3, m_indent * this.m_nLevel + var17 + var8, var2 * var3 + var3, m_indent * this.m_nLevel + var17, var2 * var3, m_indent * this.m_nLevel + var17 + var8, var2 * var3 + var3, (ImageObserver)null);
  443.       } else {
  444.          var1.setColor(var4);
  445.          var1.fillRect(m_indent * this.m_nLevel + var17, var2 * var3, var8, var3);
  446.          var1.setColor(var15);
  447.       }
  448.  
  449.       if (this.m_bHighLight) {
  450.          var1.setFont(m_hoverFont);
  451.          var1.setColor(m_hoverColor);
  452.          var1.drawString(this.m_name, m_indent * this.m_nLevel + var17, var2 * var3 + var12 + var13);
  453.          if (m_hoverUnderline) {
  454.             var1.drawLine(m_indent * this.m_nLevel + var17, (var2 + 1) * var3 - 1, m_indent * this.m_nLevel + var8 - 1 + var17, (var2 + 1) * var3 - 1);
  455.          }
  456.  
  457.          var1.setFont(var16);
  458.          var1.setColor(var15);
  459.       } else {
  460.          var1.setFont(m_normalFont);
  461.          var1.setColor(m_normalColor);
  462.          var1.drawString(this.m_name, m_indent * this.m_nLevel + var17, var2 * var3 + var10 + var11);
  463.          if (m_normalUnderline) {
  464.             var1.drawLine(m_indent * this.m_nLevel + var17, (var2 + 1) * var3 - 1, m_indent * this.m_nLevel + var8 - 1 + var17, (var2 + 1) * var3 - 1);
  465.          }
  466.  
  467.          var1.setFont(var16);
  468.          var1.setColor(var15);
  469.       }
  470.    }
  471.  
  472.    public static void setIndent(int var0) {
  473.       m_indent = var0;
  474.    }
  475.  
  476.    public static void setHoverColor(Color var0) {
  477.       m_hoverColor = var0;
  478.    }
  479.  
  480.    private Image getBookCloseIcon() {
  481.       if (this.m_closeIcon == null) {
  482.          if (this.m_strIcon != null) {
  483.             String var1 = this.getIcon(this.m_strIcon, 0);
  484.             if (var1 != null) {
  485.                ImageCache var2 = ImageCache.getInstance();
  486.                String var3 = this.getFullPath(var1);
  487.                this.m_closeIcon = var2.GetImage(var3);
  488.             }
  489.          } else if (m_iconBookClose != null) {
  490.             this.m_closeIcon = m_iconBookClose;
  491.          } else {
  492.             this.m_closeIcon = getImage(0);
  493.          }
  494.       }
  495.  
  496.       return this.m_closeIcon;
  497.    }
  498. }
  499.