home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 October / PCO1097.ISO / FilesBBS / FREI / TOC42.EXE / TOCCanvas.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-08-29  |  6.4 KB  |  492 lines

  1. import java.awt.Canvas;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Font;
  5. import java.awt.FontMetrics;
  6. import java.awt.Graphics;
  7. import java.awt.Image;
  8.  
  9. public final class TOCCanvas extends Canvas {
  10.    // $FF: renamed from: ├â TOC
  11.    private TOC field_0;
  12.    // $FF: renamed from: ├ä TOCScroller
  13.    private TOCScroller field_1;
  14.    public Image offScrImg;
  15.    // $FF: renamed from: ├à java.awt.Graphics
  16.    private Graphics field_2;
  17.    // $FF: renamed from: ├å int
  18.    private int field_3;
  19.    // $FF: renamed from: ├ç int
  20.    private int field_4;
  21.    // $FF: renamed from: ├ê int
  22.    private int field_5;
  23.    // $FF: renamed from: ├ë int
  24.    private int field_6;
  25.    // $FF: renamed from: ├è int
  26.    private int field_7;
  27.    // $FF: renamed from: ├ï int
  28.    private int field_8;
  29.    // $FF: renamed from: ├î int
  30.    private int field_9;
  31.    public int xMax;
  32.    public int yMax;
  33.    // $FF: renamed from: ├ì int
  34.    private int field_10;
  35.    // $FF: renamed from: ├Ä int
  36.    private int field_11;
  37.    public boolean fUpdate;
  38.    public boolean fPaint;
  39.    public boolean fCalculating;
  40.    // $FF: renamed from: ├Å java.lang.String[]
  41.    private String[] field_12 = new String[3];
  42.    // $FF: renamed from: ├É java.awt.Color
  43.    private Color field_13 = new Color(255, 255, 192);
  44.    // $FF: renamed from: ├æ int
  45.    private int field_14;
  46.  
  47.    public TOCCanvas(TOC var1, TOCScroller var2) {
  48.       this.field_0 = var1;
  49.       this.field_1 = var2;
  50.       this.field_10 = 0;
  51.       this.field_11 = 0;
  52.       this.field_8 = -1;
  53.       this.field_9 = -1;
  54.       this.field_14 = -1;
  55.    }
  56.  
  57.    public void paint(Graphics var1) {
  58.       if (!this.field_0.fLicense && this.field_0.fInitDone) {
  59.          var1.setColor(Color.white);
  60.          var1.fillRect(0, 0, this.field_10, this.field_11);
  61.          var1.setColor(Color.black);
  62.          var1.setFont(new Font("Courier", 0, 18));
  63.          var1.drawString("Unauthorized copy", 10, 25);
  64.          var1.setFont(new Font("Courier", 0, 12));
  65.          var1.drawString("Please request a license from the author", 10, 50);
  66.          var1.drawString("101337.1424@compuserve.com", 10, 66);
  67.          this.fPaint = false;
  68.       } else if (!this.fPaint) {
  69.          this.field_0.TOCDrawImage(var1, this.offScrImg, 0, 0, this.field_0);
  70.       } else {
  71.          if (this.field_0.imgBackground == null) {
  72.             var1.setColor(this.field_0.bgC);
  73.             var1.fillRect(0, 0, this.field_10, this.field_11);
  74.          } else {
  75.             if (this.field_8 == -1) {
  76.                this.field_8 = this.field_0.imgBackground.getWidth(this.field_0);
  77.                this.field_9 = this.field_0.imgBackground.getHeight(this.field_0);
  78.             }
  79.  
  80.             for(int var2 = 0; var2 <= this.field_10; var2 += this.field_8) {
  81.                for(int var3 = 0; var3 <= this.field_11; var3 += this.field_9) {
  82.                   this.field_0.TOCDrawImage(var1, this.field_0.imgBackground, var2, var3, this.field_0);
  83.                }
  84.             }
  85.          }
  86.  
  87.          if (this.field_0.fScriptToLoad && this.field_0.fShowLoading) {
  88.             if (this.field_14 == -1) {
  89.                this.field_14 = this.field_0.standardFM.stringWidth("Loading. Please wait ...");
  90.             }
  91.  
  92.             var1.setFont(this.field_0.standardF);
  93.             var1.setColor(this.field_0.textC);
  94.             var1.drawString("Loading. Please wait ...", (this.field_10 - this.field_14) / 2, this.field_11 / 2);
  95.             this.fPaint = false;
  96.          } else {
  97.             while(this.fCalculating) {
  98.                this.field_0.wait(1);
  99.             }
  100.  
  101.             this.fCalculating = true;
  102.             this.paintTree(var1, this.field_0.TOCAnchor, 0, false);
  103.             this.fCalculating = false;
  104.             if ((this.field_0.helpItem != null || this.field_0.helpScroll != null) && this.field_0.helpCounter > 2) {
  105.                Object var13 = null;
  106.                int var4 = 0;
  107.                int var5 = 1;
  108.                String var14;
  109.                if (this.field_0.helpItem != null) {
  110.                   var14 = this.field_0.helpItem.helpText;
  111.                } else {
  112.                   var14 = this.field_0.helpScroll.helpText;
  113.                }
  114.  
  115.                String var15 = var14;
  116.                var4 = this.field_0.helpFM.stringWidth(var14) + 8;
  117.                int var8 = 0;
  118.  
  119.                do {
  120.                   this.field_12[var8] = null;
  121.                   ++var8;
  122.                } while(var8 < 3);
  123.  
  124.                if (var4 <= this.field_10) {
  125.                   this.field_12[0] = var14;
  126.                } else {
  127.                   var4 = 0;
  128.                   int var11 = -1;
  129.                   var8 = 0;
  130.  
  131.                   do {
  132.                      var14 = var14.trim();
  133.                      int var9 = 0;
  134.                      int var10 = -1;
  135.  
  136.                      while(var9 < this.field_10) {
  137.                         var10 = var14.indexOf(" ", var10 + 1);
  138.                         String var12;
  139.                         if (var10 == -1) {
  140.                            var12 = var14;
  141.                         } else {
  142.                            var12 = var14.substring(0, var10);
  143.                         }
  144.  
  145.                         var9 = this.field_0.helpFM.stringWidth(var12) + 8;
  146.                         if (var9 < this.field_10) {
  147.                            if (var9 > var4) {
  148.                               var4 = var9;
  149.                            }
  150.  
  151.                            this.field_12[var8] = var12;
  152.                            var11 = var10;
  153.                         }
  154.  
  155.                         if (var10 == -1) {
  156.                            var9 = this.field_10;
  157.                         }
  158.                      }
  159.  
  160.                      if (var8 == 2 && var11 != -1) {
  161.                         if (this.field_12[var8] != null) {
  162.                            this.field_12[var8] = this.field_12[var8].concat(" ...");
  163.                         } else {
  164.                            this.field_12[var8] = "...";
  165.                         }
  166.                      }
  167.  
  168.                      if (var11 != -1) {
  169.                         var14 = var14.substring(var11 + 1);
  170.                      } else {
  171.                         var8 = 3;
  172.                      }
  173.  
  174.                      ++var8;
  175.                   } while(var8 < 3);
  176.                }
  177.  
  178.                if (var4 == 0) {
  179.                   var4 = this.field_10 + 1;
  180.                }
  181.  
  182.                var8 = 0;
  183.  
  184.                do {
  185.                   if (this.field_12[var8] != null && this.field_12[var8].length() > 0) {
  186.                      var5 = var8 + 1;
  187.                   }
  188.  
  189.                   ++var8;
  190.                } while(var8 < 3);
  191.  
  192.                if (var5 == 0) {
  193.                   var5 = 1;
  194.                   this.field_12[0] = var15;
  195.                }
  196.  
  197.                int var20 = var5 * this.field_0.helpFM.getHeight() + 2;
  198.                int var21 = this.field_0.helpFM.getHeight();
  199.                int var6;
  200.                int var7;
  201.                if (this.field_0.helpItem != null) {
  202.                   var6 = this.field_0.helpItem.Textx1 + 4;
  203.                   var7 = this.field_0.helpItem.Texty2 + 1;
  204.                   if (var7 + var20 > this.field_11) {
  205.                      var7 = this.field_0.helpItem.Texty1 - var20 - 1;
  206.                   }
  207.                } else {
  208.                   var6 = this.field_0.Info.xHelp;
  209.                   var7 = this.field_11 - var20 - 2;
  210.                }
  211.  
  212.                if (var6 + var4 > this.field_10) {
  213.                   var6 -= var6 + var4 - this.field_10 + 1;
  214.                }
  215.  
  216.                if (var6 < 0) {
  217.                   var6 = 0;
  218.                }
  219.  
  220.                if (var7 > 0) {
  221.                   var1.setColor(this.field_13);
  222.                   var1.fillRect(var6, var7, var4, var20);
  223.                   var1.setColor(Color.black);
  224.                   var1.drawRect(var6, var7, var4, var20);
  225.                   var1.setFont(this.field_0.helpF);
  226.  
  227.                   for(int var19 = 0; var19 < var5; ++var19) {
  228.                      if (this.field_12[var19] != null) {
  229.                         var1.drawString(this.field_12[var19], var6 + 4, var7 + var19 * var21 + this.field_0.helpFM.getAscent());
  230.                      }
  231.                   }
  232.                }
  233.             }
  234.  
  235.             this.fPaint = false;
  236.          }
  237.       }
  238.    }
  239.  
  240.    // $FF: renamed from: ├â (java.awt.Graphics, int, int, int, int) void
  241.    private final void method_0(Graphics var1, int var2, int var3, int var4, int var5) {
  242.       if (var1 != null) {
  243.          var1.setColor(this.field_0.lineC);
  244.          if (var2 == var4) {
  245.             for(int var7 = var3; var7 <= var5; var7 += 2) {
  246.                var1.drawLine(var2, var7, var4, var7);
  247.             }
  248.  
  249.          } else {
  250.             for(int var6 = var2; var6 <= var4; var6 += 2) {
  251.                var1.drawLine(var6, var3, var6, var5);
  252.             }
  253.  
  254.          }
  255.       }
  256.    }
  257.  
  258.    public void update(Graphics var1) {
  259.       this.field_6 = ((Component)this).size().width;
  260.       this.field_7 = ((Component)this).size().height;
  261.       if (this.field_6 == 0) {
  262.          this.fUpdate = true;
  263.       } else {
  264.          if (this.offScrImg == null || this.field_6 != this.field_10 || this.field_7 != this.field_11) {
  265.             if (this.offScrImg != null) {
  266.                this.field_2.dispose();
  267.                this.offScrImg.flush();
  268.             }
  269.  
  270.             this.offScrImg = this.field_0.TOCCreateImage(this.field_6, this.field_7);
  271.             this.field_2 = this.offScrImg.getGraphics();
  272.             this.field_10 = this.field_6;
  273.             this.field_11 = this.field_7;
  274.             this.field_0.fRepaint = true;
  275.          }
  276.  
  277.          int var2 = 200;
  278.          this.fPaint = true;
  279.          this.paint(this.field_2);
  280.  
  281.          while(this.fPaint) {
  282.             --var2;
  283.             if (var2 <= 0) {
  284.                break;
  285.             }
  286.  
  287.             this.field_0.wait(1);
  288.          }
  289.  
  290.          this.fPaint = false;
  291.          this.field_0.TOCDrawImage(var1, this.offScrImg, 0, 0, this.field_0);
  292.          this.fUpdate = false;
  293.       }
  294.    }
  295.  
  296.    public final void paintTree(Graphics var1, TOCTreeItem var2, int var3, boolean var4) {
  297.       if (var2 == this.field_0.TOCAnchor) {
  298.          this.field_3 = 0;
  299.          this.field_4 = this.field_0.xOff - this.field_1.xScroll;
  300.          this.field_5 = this.field_0.yOff - this.field_1.yScroll;
  301.          if (var4) {
  302.             this.xMax = 0;
  303.             this.yMax = 0;
  304.          }
  305.       }
  306.  
  307.       boolean var5 = true;
  308.       int var6 = this.field_4;
  309.       int var7 = this.field_5;
  310.       int var8 = this.field_5;
  311.       byte var9 = 8;
  312.       int var10 = 0;
  313.       int var11 = var9 / 2;
  314.       int var17 = 0;
  315.       int var18 = 0;
  316.  
  317.       while(var2 != null) {
  318.          if (this.field_5 > this.field_7 && !var4) {
  319.             var2 = var2.next;
  320.          } else {
  321.             Font var19;
  322.             FontMetrics var20;
  323.             if (var2.textFont != null) {
  324.                var19 = var2.textFont;
  325.                var20 = ((Component)this).getFontMetrics(var19);
  326.             } else {
  327.                var19 = this.field_0.standardF;
  328.                var20 = this.field_0.standardFM;
  329.             }
  330.  
  331.             Color var21;
  332.             if (var2.textColor != null) {
  333.                var21 = var2.textColor;
  334.             } else {
  335.                var21 = this.field_0.textC;
  336.             }
  337.  
  338.             int var16 = var20.getAscent();
  339.             if (var9 > var16) {
  340.                var16 = var9;
  341.             }
  342.  
  343.             if (var2.isSelected) {
  344.                if (var2.imageOpen != null) {
  345.                   var10 = var2.imgOpenHeight;
  346.                   if (var10 > var16) {
  347.                      var16 = var10;
  348.                   }
  349.                } else if (var2.image != null) {
  350.                   var10 = var2.imgHeight;
  351.                   if (var10 > var16) {
  352.                      var16 = var10;
  353.                   }
  354.                }
  355.             } else if (var2.image != null) {
  356.                var10 = var2.imgHeight;
  357.                if (var10 > var16) {
  358.                   var16 = var10;
  359.                }
  360.             }
  361.  
  362.             int var12 = this.field_5 + var16 - (var16 - var20.getAscent()) / 2;
  363.             int var13 = this.field_5 + var16 - (var16 - var9) / 2 + 1;
  364.             int var15 = this.field_5 + (var16 - var10) / 2 + 1;
  365.             int var14 = this.field_5 + var16 + var20.getDescent() + var20.getLeading() + 2;
  366.             if (var14 + this.field_1.yScroll > this.yMax) {
  367.                this.yMax = var14 + this.field_1.yScroll;
  368.             }
  369.  
  370.             if (var5) {
  371.                if (this.field_3 > 0) {
  372.                   var7 = var3;
  373.                } else if (var2.child != null) {
  374.                   var7 = var13 + 2;
  375.                } else {
  376.                   var7 = var13 - var9 / 2;
  377.                }
  378.  
  379.                var5 = false;
  380.             }
  381.  
  382.             if (var14 > 0) {
  383.                var17 = this.field_4 + var11 + 1;
  384.                if (var2.child != null) {
  385.                   var2.Symbolx1 = this.field_4 + 1;
  386.                   var2.Symboly1 = var13 - var9;
  387.                   var2.Symbolx2 = var2.Symbolx1 + var9 + 4;
  388.                   var2.Symboly2 = var2.Symboly1 + var9;
  389.                   if (!var4) {
  390.                      var1.setColor(this.field_0.lineC);
  391.                      var1.drawRect(var2.Symbolx1, var2.Symboly1, var9, var9);
  392.                      var1.setColor(this.field_0.plusC);
  393.                      var1.drawLine(this.field_4 + 3, var13 - var11, this.field_4 + (var9 - 1), var13 - var11);
  394.                      if (!var2.isExpanded) {
  395.                         var1.drawLine(this.field_4 + 1 + var11, var13 - 2, this.field_4 + 1 + var11, var13 - var9 + 2);
  396.                      }
  397.                   }
  398.  
  399.                   this.field_4 += var9 + 3;
  400.                   var8 = var13 - var9 - 2;
  401.                } else {
  402.                   this.field_4 += var9 / 2 + 3;
  403.                   var8 = var13 - var11;
  404.                }
  405.  
  406.                if (!var4) {
  407.                   var18 = var13 - var11;
  408.                   this.method_0(var1, this.field_4, var18, var6 + var9 + 16 + (this.field_0.xIndent - 13), var18);
  409.                }
  410.             }
  411.  
  412.             if (var2.child != null) {
  413.                if (!var4) {
  414.                   this.method_0(var1, var17, var7, var17, var8);
  415.                }
  416.  
  417.                var7 = var13 + 2;
  418.             }
  419.  
  420.             this.field_4 = var6 + var9 + 20 + (this.field_0.xIndent - 13);
  421.             var2.Textx1 = this.field_4;
  422.             if (var14 > 0) {
  423.                if (var2.isSelected) {
  424.                   if (var2.imageOpen != null) {
  425.                      if (!var4) {
  426.                         this.field_0.TOCDrawImage(var1, var2.imageOpen, this.field_4, var15, this.field_0);
  427.                      }
  428.  
  429.                      this.field_4 += var2.imgOpenWidth + 6;
  430.                   } else if (var2.image != null) {
  431.                      if (!var4) {
  432.                         this.field_0.TOCDrawImage(var1, var2.image, this.field_4, var15, this.field_0);
  433.                      }
  434.  
  435.                      this.field_4 += var2.imgWidth + 6;
  436.                   }
  437.                } else if (var2.image != null) {
  438.                   if (!var4) {
  439.                      this.field_0.TOCDrawImage(var1, var2.image, this.field_4, var15, this.field_0);
  440.                   }
  441.  
  442.                   this.field_4 += var2.imgWidth + 6;
  443.                }
  444.             }
  445.  
  446.             var2.Texty1 = var12 - var20.getAscent() - 1;
  447.             var2.Textx2 = this.field_4 + var20.stringWidth(var2.text) + 2;
  448.             var2.Texty2 = var12 + var20.getDescent() + 1;
  449.             if (var4 && this.field_4 + var20.stringWidth(var2.text) + 2 + this.field_1.xScroll > this.xMax) {
  450.                this.xMax = this.field_4 + var20.stringWidth(var2.text) + 2 + this.field_1.xScroll;
  451.             }
  452.  
  453.             if (var14 > 0 && !var4) {
  454.                if (var2.isSelected && this.field_0.imgSelection == null) {
  455.                   var1.setColor(var21);
  456.                   var1.fillRect(this.field_4, var2.Texty1, var20.stringWidth(var2.text) + 2, var2.Texty2 - var2.Texty1);
  457.                   var1.setColor(this.field_0.reversC);
  458.                } else {
  459.                   var1.setColor(var21);
  460.                }
  461.  
  462.                if (var2.isSelected && this.field_0.imgSelection != null) {
  463.                   int var22 = this.field_5 + (var16 - this.field_0.imgSelection.getHeight(this.field_0)) / 2 + 1;
  464.                   this.field_0.TOCDrawImage(var1, this.field_0.imgSelection, this.field_4 + 1, var22, this.field_0);
  465.                   this.field_4 += this.field_0.imgSelection.getWidth(this.field_0) + 2;
  466.                }
  467.  
  468.                var1.setFont(var19);
  469.                var1.drawString(var2.text, this.field_4 + 1, var12);
  470.             }
  471.  
  472.             this.field_5 = var14;
  473.             if (var2.child != null && var2.isExpanded) {
  474.                this.field_4 = var6 + this.field_0.xIndent;
  475.                ++this.field_3;
  476.                this.paintTree(var1, var2.child, var13 - var11, var4);
  477.                this.field_3 += -1;
  478.             }
  479.  
  480.             this.field_4 = var6;
  481.             var2 = var2.next;
  482.          }
  483.       }
  484.  
  485.       if (!var4) {
  486.          var17 = this.field_4 + var11 + 1;
  487.          this.method_0(var1, var17, var7, var17, var8);
  488.       }
  489.  
  490.    }
  491. }
  492.