home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 7: Programming / CDAT7.iso / Share / Java / JDesignerPro / Jdp3_0.exe / data1.cab / Program_Files / JDPMain.jar / JDPTabSelectTopPanel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-01-12  |  11.9 KB  |  803 lines

  1. import java.awt.CardLayout;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import java.awt.Dimension;
  6. import java.awt.Event;
  7. import java.awt.Font;
  8. import java.awt.FontMetrics;
  9. import java.awt.Graphics;
  10. import java.awt.Image;
  11. import java.awt.LayoutManager;
  12. import java.awt.Panel;
  13. import java.awt.Rectangle;
  14. import java.awt.image.ImageObserver;
  15.  
  16. class JDPTabSelectTopPanel extends Panel {
  17.    Image offscreen;
  18.    Rectangle offscreensize;
  19.    // $FF: renamed from: gr java.awt.Graphics
  20.    Graphics field_0;
  21.    Graphics grI;
  22.    JDPUser user;
  23.    JDPTabSelectPanel target;
  24.    JDPMenuStruct menu;
  25.    String orientation;
  26.    JDPTabSelectSidePanel topPanel;
  27.    int[] menuindex;
  28.    String currentmenu;
  29.    String[] menustack;
  30.    int[] menustacklastoption;
  31.    int currentlevel;
  32.    int prevcurrentlevel;
  33.    int currentsel;
  34.    int totaltabs;
  35.    int firsttab;
  36.    int[] firsttabstack;
  37.    int tabsdisplayed;
  38.    Rectangle[] tabs;
  39.    Rectangle[] nexttabs;
  40.    boolean[] panelLoaded;
  41.    Rectangle Bounds;
  42.    boolean north = true;
  43.    // $FF: renamed from: fm java.awt.FontMetrics
  44.    protected FontMetrics field_1;
  45.    int[] widths;
  46.    int[] boldWidths;
  47.    boolean loadPanel;
  48.    boolean selectionMade;
  49.    int tabheight = 23;
  50.    Font plainFont;
  51.    Font boldFont;
  52.    int plainHeight;
  53.    int boldHeight;
  54.    Font lastFont;
  55.    int prevTitleHeight;
  56.    Image iconImages;
  57.  
  58.    void processSelection(int var1) {
  59.       if (!this.target.ismenu) {
  60.          this.currentsel = var1;
  61.          this.selectionMade = true;
  62.          this.update(((Component)this).getGraphics());
  63.       } else if (this.menuindex != null) {
  64.          if (this.currentlevel > 0 && var1 - this.firsttab == 0) {
  65.             this.currentlevel += -1;
  66.             this.firsttab = this.firsttabstack[this.currentlevel];
  67.             this.currentsel = this.menustacklastoption[this.currentlevel];
  68.          } else {
  69.             if (this.currentlevel > 0) {
  70.                this.currentsel = var1 - 1;
  71.             } else {
  72.                this.currentsel = var1;
  73.             }
  74.  
  75.             if (this.menu.menutype[this.menuindex[this.currentsel]].compareTo("M") == 0) {
  76.                if (this.menu.menuobject[this.menuindex[this.currentsel]].length() > 0) {
  77.                   this.firsttabstack[this.currentlevel] = this.firsttab;
  78.                   ++this.currentlevel;
  79.                   this.firsttab = 0;
  80.                   this.menustack[this.currentlevel] = this.menu.menuobject[this.menuindex[this.currentsel]];
  81.                   this.currentsel = 0;
  82.                }
  83.             } else {
  84.                this.loadPanel = true;
  85.                this.menustacklastoption[this.currentlevel] = this.currentsel;
  86.                if (this.firsttab > var1) {
  87.                   this.firsttab = var1 - 1;
  88.                   if (this.firsttab < 0) {
  89.                      this.firsttab = 0;
  90.                   }
  91.                }
  92.             }
  93.          }
  94.  
  95.          this.selectionMade = true;
  96.          this.loadMenuTitles();
  97.          this.update(((Component)this).getGraphics());
  98.       }
  99.    }
  100.  
  101.    void loadMenuTitles() {
  102.       this.totaltabs = 0;
  103.       this.menuindex = new int[200];
  104.       if (this.target.ismenu) {
  105.          for(int var1 = 0; var1 < this.menu.menuname.length; ++var1) {
  106.             if (this.menu.menuname[var1] == null || this.menustack[this.currentlevel] == null) {
  107.                return;
  108.             }
  109.  
  110.             if (this.menu.menuname[var1].compareTo(this.menustack[this.currentlevel]) == 0) {
  111.                this.menuindex[this.totaltabs++] = var1;
  112.             }
  113.          }
  114.  
  115.          this.target.titles = new String[this.totaltabs];
  116.  
  117.          for(int var3 = 0; var3 < this.totaltabs; ++var3) {
  118.             int var2 = this.menuindex[var3];
  119.             if (this.target.titles.length > var3 && this.menu.menudesc.length > var2) {
  120.                this.target.titles[var3] = this.menu.menudesc[var2];
  121.             }
  122.          }
  123.       }
  124.  
  125.    }
  126.  
  127.    void loadPrevTab() {
  128.       if (this.currentsel > 0) {
  129.          this.currentsel += -1;
  130.          if (this.currentlevel > 0) {
  131.             this.processSelection(this.currentsel + 1);
  132.             return;
  133.          }
  134.  
  135.          this.processSelection(this.currentsel);
  136.       }
  137.  
  138.    }
  139.  
  140.    public JDPTabSelectTopPanel(JDPUser var1, JDPTabSelectPanel var2, JDPMenuStruct var3, String var4, JDPTabSelectSidePanel var5) {
  141.       this.user = var1;
  142.       this.target = var2;
  143.       this.menu = var3;
  144.       this.orientation = var4;
  145.       this.topPanel = var5;
  146.       this.menustack = new String[40];
  147.       this.menustacklastoption = new int[40];
  148.       this.menustack[0] = var3.initmenu;
  149.       this.firsttabstack = new int[40];
  150.       ((Container)this).setLayout((LayoutManager)null);
  151.       Rectangle var6 = ((Component)this).bounds();
  152.       this.plainFont = ((Component)this).getFont();
  153.       if (this.plainFont == null) {
  154.          this.plainFont = var1.plainFont;
  155.       }
  156.  
  157.       this.plainFont = new Font(this.plainFont.getName(), 0, this.plainFont.getSize());
  158.       this.boldFont = new Font(this.plainFont.getName(), 1, this.plainFont.getSize());
  159.       if (var4.compareTo("North") == 0) {
  160.          this.north = true;
  161.          if (var2.ismenu) {
  162.             ((Component)this).reshape(0, 0, var6.width, 25);
  163.          } else {
  164.             ((Component)this).reshape(0, 0, var6.width, 25);
  165.          }
  166.       } else {
  167.          this.north = false;
  168.          ((Component)this).reshape(0, 0, 23, var6.height);
  169.       }
  170.    }
  171.  
  172.    public void paint(Graphics var1) {
  173.       this.update(var1);
  174.    }
  175.  
  176.    boolean isSelected(int var1) {
  177.       return this.currentsel == var1;
  178.    }
  179.  
  180.    String getSelectedItem() {
  181.       return this.menu.menudesc[this.menuindex[this.currentsel]];
  182.    }
  183.  
  184.    void drawIcon(int var1, int var2, int var3, String var4) {
  185.       if (this.iconImages == null) {
  186.          this.iconImages = ((Component)this).createImage(20, 19);
  187.       }
  188.  
  189.       byte var5 = 0;
  190.       if (!((Component)this).isEnabled()) {
  191.          var5 = 1;
  192.       }
  193.  
  194.       this.grI = this.iconImages.getGraphics();
  195.       this.grI.setColor(this.user.u._cvtcolor(var4));
  196.       this.grI.fillRect(0, 0, this.Bounds.width, this.Bounds.height);
  197.       this.grI.drawImage(this.target.iconImage, -var1 * 20, -20 * var5, (ImageObserver)null);
  198.       this.field_0.drawImage(this.iconImages, var2 - 7, var3 - 12, (ImageObserver)null);
  199.    }
  200.  
  201.    void select(int var1) {
  202.       if (var1 < this.totaltabs || var1 < this.target.titles.length) {
  203.          this.currentsel = var1;
  204.          if (this.currentlevel > 0) {
  205.             this.processSelection(this.currentsel + 1);
  206.             return;
  207.          }
  208.  
  209.          this.processSelection(this.currentsel);
  210.       }
  211.  
  212.    }
  213.  
  214.    public Dimension minimumSize() {
  215.       Dimension var1 = new Dimension(100, 6);
  216.       if (this.orientation.compareTo("North") == 0) {
  217.          int var2 = 100;
  218.          int var3 = 14;
  219.          if (this.widths != null) {
  220.             for(int var4 = 0; var4 < this.menu.menudesc.length; ++var4) {
  221.                if (this.menu.menudesc[var4] != null) {
  222.                   int var5 = this.StringWidth(this.menu.menudesc[var4]);
  223.                   if (var5 > var2) {
  224.                      var2 = var5;
  225.                   }
  226.                }
  227.             }
  228.  
  229.             var2 += 60;
  230.          }
  231.  
  232.          if (this.field_1 != null) {
  233.             var3 = this.field_1.getHeight();
  234.          }
  235.  
  236.          if (this.target.ismenu) {
  237.             var1 = new Dimension(var2, var3 + 12);
  238.          } else {
  239.             var1 = new Dimension(var2, var3 + 11);
  240.          }
  241.       }
  242.  
  243.       return var1;
  244.    }
  245.  
  246.    public void update(Graphics var1) {
  247.       Rectangle var2 = ((Component)this).bounds();
  248.       if (this.offscreen == null || var2.width != this.offscreensize.width || var2.height != this.offscreensize.height) {
  249.          if (var2.width <= 0) {
  250.             return;
  251.          }
  252.  
  253.          this.offscreen = ((Component)this).createImage(var2.width, var2.height);
  254.          this.offscreensize = var2;
  255.          this.field_0 = this.offscreen.getGraphics();
  256.          this.field_0.setFont(((Component)this).getFont());
  257.       }
  258.  
  259.       if (this.target.imageLoader != null && this.target.imageLoader.getImageReady()) {
  260.          this.target.iconImage = this.target.imageLoader.thisImage;
  261.          this.target.imageLoader = null;
  262.       }
  263.  
  264.       Color var3 = ((Component)this).getBackground();
  265.       Color var4 = JDPUtils.brighter(var3);
  266.       Color var5 = JDPUtils.darker(var3);
  267.       Color var6 = JDPUtils.darker(var5);
  268.       this.field_0.setColor(var3);
  269.       this.field_0.fillRect(0, 0, var2.width, var2.height);
  270.       this.field_0.setColor(Color.black);
  271.       this.plainFont = ((Component)this).getFont();
  272.       if (this.plainFont == null) {
  273.          this.plainFont = this.user.plainFont;
  274.       }
  275.  
  276.       this.plainFont = new Font(this.plainFont.getName(), 0, this.plainFont.getSize());
  277.       this.boldFont = new Font(this.plainFont.getName(), 1, this.plainFont.getSize());
  278.       this.field_0.setFont(this.plainFont);
  279.       this.StringWidth("");
  280.       if (this.field_1 != null) {
  281.          int var7 = this.field_1.getHeight();
  282.          if (var7 != this.prevTitleHeight && this.prevTitleHeight != 0 || var7 + 12 != ((Component)this).bounds().height) {
  283.             this.prevTitleHeight = var7;
  284.             if (this.target != null && this.target.countComponents() > 0) {
  285.                try {
  286.                   this.target.layout();
  287.                } catch (Exception var20) {
  288.                   return;
  289.                }
  290.  
  291.                this.target.paintAll(this.target.getGraphics());
  292.             }
  293.          }
  294.  
  295.          this.prevTitleHeight = var7;
  296.       }
  297.  
  298.       int var21 = 13;
  299.       int var8 = this.firsttab;
  300.       this.totaltabs = 0;
  301.       this.menuindex = new int[200];
  302.       String var9 = "";
  303.       this.Bounds = ((Component)this).bounds();
  304.       this.tabheight = this.Bounds.height - 2;
  305.  
  306.       for(int var10 = 0; var10 < this.menu.menuname.length; ++var10) {
  307.          if (this.menu.menuname[var10] == null || this.menustack[this.currentlevel] == null) {
  308.             return;
  309.          }
  310.  
  311.          if (this.menu.menuname[var10].compareTo(this.menustack[this.currentlevel]) == 0) {
  312.             this.menuindex[this.totaltabs++] = var10;
  313.          }
  314.  
  315.          if (this.target.ismenu) {
  316.             if (this.menu.menuobject[var10].compareTo(this.menustack[this.currentlevel]) == 0 && this.menu.menutype[var10].compareTo("M") == 0) {
  317.                var9 = this.menu.menudesc[var10];
  318.             }
  319.          } else {
  320.             var9 = this.target.menuTitle;
  321.          }
  322.       }
  323.  
  324.       this.nexttabs = new Rectangle[2];
  325.       this.tabs = new Rectangle[30];
  326.       int var22 = 0;
  327.       int var11 = 0;
  328.       if (!this.north) {
  329.          var21 = 3;
  330.          this.topPanel.clearEdge();
  331.       }
  332.  
  333.       if (this.firsttab > 0) {
  334.          var22 = var21 - 9;
  335.          var11 = var21 + 15;
  336.          var21 = var21 + 15 + 11;
  337.          if (this.currentlevel > 0) {
  338.             --var21;
  339.          }
  340.  
  341.          if (this.north && var11 < this.Bounds.width) {
  342.             this.field_0.setColor(var4);
  343.             this.field_0.drawLine(var22 + 2, 5, var11 - 1, 5);
  344.             this.field_0.drawLine(var22 + 1, 6, var22 + 1, this.tabheight - 2);
  345.             this.field_0.setColor(var6);
  346.             this.field_0.drawLine(var11, 6, var11, this.tabheight - 2);
  347.             this.field_0.setColor(Color.black);
  348.             this.field_0.drawLine(var11 + 1, 8, var11 + 1, this.tabheight - 2);
  349.             this.nexttabs[0] = new Rectangle();
  350.             this.nexttabs[0].reshape(var22, 4, var11 - var22, this.tabheight - 4);
  351.             int var12 = var11 - 12;
  352.             int[] var13 = new int[]{var12 + 4, var12, var12 + 4, var12 + 4};
  353.             int[] var14 = new int[]{9, 13, 17, 9};
  354.             this.field_0.fillPolygon(var13, var14, 3);
  355.          }
  356.       }
  357.  
  358.       if (this.currentlevel > 0) {
  359.          this.field_0.setFont(this.plainFont);
  360.          int var27 = var21 + this.StringWidth("back");
  361.          if (this.north) {
  362.             this.field_0.drawString("back", var21, 4 + this.boldHeight);
  363.          }
  364.  
  365.          this.field_0.setColor(Color.black);
  366.          if (this.north) {
  367.             int[] var32 = new int[]{var27 + 4, var27, var27 + 8, var27 + 4};
  368.             int[] var37 = new int[]{11, 16, 16, 11};
  369.             this.field_0.fillPolygon(var32, var37, 3);
  370.          } else {
  371.             int[] var33 = new int[]{11, 7, 15, 11};
  372.             int[] var38 = new int[]{18, 24, 24, 18};
  373.             this.field_0.fillPolygon(var33, var38, 3);
  374.          }
  375.  
  376.          this.field_0.setColor(var4);
  377.          if (this.totaltabs == 0) {
  378.             if (this.north) {
  379.                this.field_0.drawLine(4, this.tabheight - 1, this.Bounds.width - 5, this.tabheight - 1);
  380.             } else {
  381.                this.field_0.drawLine(this.Bounds.width - 1, 4, this.Bounds.width - 1, this.tabheight - 5);
  382.             }
  383.          }
  384.  
  385.          var22 = var21 - 9;
  386.          var11 = var27 + 14;
  387.          if (this.north) {
  388.             this.field_0.drawLine(var22 + 2, 5, var11 - 1, 5);
  389.             this.field_0.drawLine(var22 + 1, 6, var22 + 1, this.tabheight - 2);
  390.             this.field_0.setColor(var6);
  391.             this.field_0.drawLine(var11, 6, var11, this.tabheight - 2);
  392.             this.field_0.setColor(Color.black);
  393.             this.field_0.drawLine(var11 + 1, 8, var11 + 1, this.tabheight - 2);
  394.             this.tabs[var8] = new Rectangle();
  395.             this.tabs[var8++].reshape(var22, 4, var11 - var22, this.tabheight - 4);
  396.          } else {
  397.             this.topPanel.setEdge();
  398.             this.field_0.drawLine(3, var22 + 2, 3, var11 - 1);
  399.             this.field_0.drawLine(6, var22 + 1, this.Bounds.width - 4, var22 + 1);
  400.             this.field_0.setColor(var6);
  401.             this.field_0.drawLine(6, var11, this.Bounds.width - 5, var11);
  402.             this.field_0.setColor(Color.black);
  403.             this.field_0.drawLine(8, var11 + 1, this.Bounds.width - 5, var11 + 1);
  404.             this.tabs[var8] = new Rectangle();
  405.             this.tabs[var8++].reshape(4, var22, this.Bounds.width - 8, var11 - var22);
  406.          }
  407.  
  408.          var21 = var11 + 11;
  409.       }
  410.  
  411.       if (this.currentsel < this.firsttab) {
  412.          this.currentsel = this.firsttab;
  413.       }
  414.  
  415.       this.tabsdisplayed = 0;
  416.  
  417.       for(int var28 = this.firsttab; var28 < this.totaltabs; ++var28) {
  418.          int var34 = this.menuindex[var28];
  419.          this.field_0.setFont(this.plainFont);
  420.          byte var39 = 0;
  421.          var22 = var21 - 9;
  422.          var11 = var21 + this.StringWidth(this.menu.menudesc[var34]) + 6;
  423.          if (this.target.iconNumbers != null && this.target.iconNumbers.length > var34 && this.target.iconNumbers[var34] >= 0) {
  424.             var11 += 19;
  425.          }
  426.  
  427.          if (var28 == this.currentsel) {
  428.             this.field_0.setFont(this.boldFont);
  429.             var39 = 2;
  430.             if (var28 > this.firsttab) {
  431.                ++var22;
  432.             }
  433.  
  434.             var11 = var21 + this.StringWidth(this.menu.menudesc[var34]) + 6;
  435.             if (this.target.iconNumbers != null && this.target.iconNumbers.length > var34 && this.target.iconNumbers[var34] >= 0) {
  436.                var11 += 19;
  437.             }
  438.  
  439.             this.field_0.setColor(var4);
  440.             if (this.north) {
  441.                if (this.menu.menutype[var34].compareTo("M") == 0) {
  442.                   var11 += 9;
  443.                }
  444.  
  445.                byte var15 = 29;
  446.                if (var28 == this.totaltabs - 1) {
  447.                   var15 = 5;
  448.                }
  449.  
  450.                if (var11 < this.Bounds.width - var15) {
  451.                   ++this.tabsdisplayed;
  452.                   this.field_0.drawLine(3, this.tabheight - 1, var22 - 1, this.tabheight - 1);
  453.                   this.field_0.drawLine(3, this.tabheight - 1, 3, this.Bounds.height);
  454.                   this.field_0.drawLine(var11, this.tabheight - 1, this.Bounds.width - 6, this.tabheight - 1);
  455.                   this.field_0.drawLine(var22, 3, var11 - 1, 3);
  456.                   this.field_0.drawLine(var22 - 1, 4, var22 - 1, this.tabheight - 1);
  457.                   this.field_0.setColor(var6);
  458.                   this.field_0.drawLine(var11, 4, var11, this.tabheight - 1);
  459.                   if (!this.target.ismenu) {
  460.                      this.field_0.drawLine(this.Bounds.width - 4, this.tabheight - 1, this.Bounds.width - 4, this.Bounds.height);
  461.                      this.field_0.setColor(var5);
  462.                      this.field_0.drawLine(this.Bounds.width - 5, this.tabheight, this.Bounds.width - 5, this.Bounds.height);
  463.                   }
  464.  
  465.                   this.field_0.setColor(Color.black);
  466.                   this.field_0.drawLine(var11 + 1, 6, var11 + 1, this.tabheight - 2);
  467.                   if (this.menu.menutabcolor[var34].equals("LightGray")) {
  468.                      this.field_0.setColor(var3);
  469.                   } else {
  470.                      this.field_0.setColor(this.user.u._cvtcolor(this.menu.menutabcolor[var34]));
  471.                   }
  472.  
  473.                   this.field_0.fillRect(var22, 4, var11 - var22, this.tabheight - 4);
  474.                } else {
  475.                   this.field_0.drawLine(3, this.tabheight - 1, this.Bounds.width - 5, this.tabheight - 1);
  476.                   this.field_0.setColor(var6);
  477.                   this.field_0.drawLine(var11, this.tabheight - 1, var11, this.Bounds.height);
  478.                }
  479.             } else if (var11 < this.Bounds.height) {
  480.                ++this.tabsdisplayed;
  481.                if (var22 > 15) {
  482.                   this.field_0.drawLine(this.Bounds.width - 5, 0, this.Bounds.width - 5, var22 - 1);
  483.                }
  484.  
  485.                this.field_0.drawLine(this.Bounds.width - 5, var11, this.Bounds.width - 5, this.Bounds.height);
  486.                this.field_0.drawLine(3, var22, 3, var11 - 1);
  487.                this.field_0.drawLine(4, var22 - 1, this.Bounds.width - 5, var22 - 1);
  488.                this.field_0.setColor(var6);
  489.                this.field_0.drawLine(4, var11, this.Bounds.width - 5, var11);
  490.                this.field_0.setColor(Color.black);
  491.                this.field_0.drawLine(6, var11 + 1, this.Bounds.width - 6, var11 + 1);
  492.             } else {
  493.                this.field_0.drawLine(this.Bounds.width - 5, 4, this.Bounds.width - 5, this.Bounds.height - 5);
  494.             }
  495.  
  496.             this.field_0.setFont(this.boldFont);
  497.          } else if (this.north) {
  498.             if (this.menu.menutype[var34].compareTo("M") == 0) {
  499.                var11 += 9;
  500.             }
  501.  
  502.             byte var41 = 29;
  503.             if (var28 == this.totaltabs - 1) {
  504.                var41 = 5;
  505.             }
  506.  
  507.             if (var11 < this.Bounds.width - var41) {
  508.                ++this.tabsdisplayed;
  509.                this.field_0.setColor(var4);
  510.                this.field_0.drawLine(var22 + 2, 5, var11 - 1, 5);
  511.                this.field_0.drawLine(var22 + 1, 6, var22 + 1, this.tabheight - 2);
  512.                this.field_0.setColor(var6);
  513.                this.field_0.drawLine(var11, 6, var11, this.tabheight - 2);
  514.                this.field_0.setColor(Color.black);
  515.                this.field_0.drawLine(var11 + 1, 8, var11 + 1, this.tabheight - 2);
  516.                if (this.menu.menutabcolor[var34].equals("LightGray")) {
  517.                   this.field_0.setColor(var3);
  518.                } else {
  519.                   this.field_0.setColor(this.user.u._cvtcolor(this.menu.menutabcolor[var34]));
  520.                }
  521.  
  522.                this.field_0.fillRect(var22 + 2, 6, var11 - var22 - 2, this.tabheight - 7);
  523.             } else {
  524.                this.field_0.setColor(var6);
  525.                this.field_0.drawLine(var11 + 20, this.tabheight - 1, var11 + 20, this.Bounds.height);
  526.             }
  527.          } else if (var11 < this.Bounds.height) {
  528.             ++this.tabsdisplayed;
  529.             if (var28 == 0) {
  530.                this.topPanel.setEdge();
  531.             }
  532.  
  533.             this.field_0.setColor(var4);
  534.             this.field_0.drawLine(3, var22 + 2, 3, var11 - 1);
  535.             this.field_0.drawLine(4, var22 + 1, this.Bounds.width - 6, var22 + 1);
  536.             this.field_0.setColor(var6);
  537.             this.field_0.drawLine(4, var11, this.Bounds.width - 6, var11);
  538.             this.field_0.setColor(Color.black);
  539.             this.field_0.drawLine(6, var11 + 1, this.Bounds.width - 6, var11 + 1);
  540.          }
  541.  
  542.          if (this.north) {
  543.             byte var43 = 29;
  544.             if (var28 == this.totaltabs - 1) {
  545.                var43 = 5;
  546.             }
  547.  
  548.             if (var11 < this.Bounds.width - var43) {
  549.                this.tabs[var8] = new Rectangle();
  550.                this.tabs[var8++].reshape(var22, 4, var11 - var22, this.tabheight - 4);
  551.                this.field_0.setColor(this.user.u._cvtcolor(this.menu.menutextcolor[var34]));
  552.                int var16 = this.boldHeight;
  553.                if (var28 != this.currentsel) {
  554.                   var16 = this.plainHeight + 1;
  555.                }
  556.  
  557.                if (this.target.iconNumbers != null && this.target.iconNumbers.length > var34 && this.target.iconNumbers[var34] >= 0) {
  558.                   this.drawIcon(this.target.iconNumbers[var34], var21 - var39 + 1, 3 + var16, this.menu.menutabcolor[var34]);
  559.                   if (var28 != this.currentsel) {
  560.                      this.field_0.setColor(var4);
  561.                      this.field_0.drawLine(var21 - var39 - 6, this.tabheight - 1, var21 - var39 + 13, this.tabheight - 1);
  562.                      this.field_0.setColor(var3);
  563.                      this.field_0.drawLine(var21 - var39 - 6, this.tabheight + 1, var21 - var39 + 13, this.tabheight + 1);
  564.                   }
  565.  
  566.                   this.field_0.setColor(var3);
  567.                   this.field_0.drawLine(var21 - var39 - 6, this.tabheight, var21 - var39 + 13, this.tabheight);
  568.                   var21 += 18;
  569.                }
  570.  
  571.                this.field_0.setColor(this.user.u._cvtcolor(this.menu.menutextcolor[var34]));
  572.                this.field_0.drawString(this.menu.menudesc[var34], var21 - var39, 3 + var16);
  573.                if (this.menu.menutype[var34].compareTo("M") == 0) {
  574.                   int var17 = var11 - 12;
  575.                   int[] var18 = new int[]{var17, var17 + 8, var17 + 4, var17};
  576.                   int[] var19 = new int[]{11, 11, 15, 11};
  577.                   this.field_0.fillPolygon(var18, var19, 3);
  578.                }
  579.             } else {
  580.                if (var28 < this.totaltabs) {
  581.                   if (var28 <= this.currentsel) {
  582.                      this.firsttab = var28;
  583.                      ((Component)this).repaint();
  584.                   }
  585.  
  586.                   var22 = var21 - 9;
  587.                   var11 = var21 + 13;
  588.                   this.field_0.setColor(var4);
  589.                   this.field_0.drawLine(var22 + 2, 5, var11 - 1, 5);
  590.                   this.field_0.drawLine(var22 + 1, 6, var22 + 1, this.tabheight - 2);
  591.                   this.field_0.setColor(var6);
  592.                   this.field_0.drawLine(var11, 6, var11, this.tabheight - 2);
  593.                   this.field_0.setColor(Color.black);
  594.                   this.field_0.drawLine(var11 + 1, 8, var11 + 1, this.tabheight - 2);
  595.                   this.nexttabs[1] = new Rectangle();
  596.                   this.nexttabs[1].reshape(var22, 4, var11 - var22, this.tabheight - 4);
  597.                   int var44 = var11 - 12;
  598.                   int[] var45 = new int[]{var44, var44 + 4, var44, var44};
  599.                   int[] var46 = new int[]{9, 13, 17, 9};
  600.                   this.field_0.fillPolygon(var45, var46, 3);
  601.                }
  602.  
  603.                var28 = this.totaltabs;
  604.             }
  605.          } else if (var11 < this.Bounds.height) {
  606.             this.tabs[var8] = new Rectangle();
  607.             this.tabs[var8++].reshape(4, var22, this.Bounds.width - 8, var11 - var22);
  608.             this.field_0.setColor(this.user.u._cvtcolor(this.menu.menutextcolor[var34]));
  609.  
  610.             for(int var42 = 0; var42 < this.menu.menudesc[var34].length(); ++var42) {
  611.                this.field_0.drawString(this.menu.menudesc[var34].substring(var42, var42 + 1), 8, 7 + var21 - var39 + var42 * 8);
  612.             }
  613.          }
  614.  
  615.          this.field_0.setColor(Color.black);
  616.          var21 = var11 + 10;
  617.       }
  618.  
  619.       if (this.north) {
  620.          this.field_0.setFont(this.boldFont);
  621.          int var29 = this.Bounds.width - this.StringWidth(var9) - 10;
  622.          if (var29 > var11 + 10) {
  623.             this.field_0.drawString(var9, var29, 18);
  624.          }
  625.       }
  626.  
  627.       var1.drawImage(this.offscreen, 0, 0, (ImageObserver)null);
  628.       if (this.panelLoaded == null) {
  629.          this.panelLoaded = new boolean[this.menu.menuname.length];
  630.       }
  631.  
  632.       if (this.totaltabs > 0) {
  633.          int var30 = this.menuindex[this.currentsel];
  634.          if (!this.panelLoaded[var30] && this.target.ismenu) {
  635.             if (!this.menu.menutype[var30].equals("P") || !this.loadPanel && (this.currentlevel != 0 || this.currentsel != 0) && this.totaltabs != 1 && this.menu.menuobject[var30].indexOf("Browser") <= 0 && !this.menu.menuobject[var30].startsWith("JDPWelcome")) {
  636.                if (this.menu.menutype[var30].compareTo("B") == 0) {
  637.                   this.target.placePanel[var30].add("Center", this.user.JDPBuildTestPanel[this.user.JDPBuildTestPanelDisplay++]);
  638.                   this.panelLoaded[var30] = true;
  639.                   this.target.placePanel[var30].paintAll(this.target.placePanel[var30].getGraphics());
  640.                   ((CardLayout)this.target.cardPanel.getLayout()).show(this.target.cardPanel, Integer.toString(var30));
  641.                } else {
  642.                   ((CardLayout)this.target.cardPanel.getLayout()).show(this.target.cardPanel, "Blank");
  643.                }
  644.             } else {
  645.                this.target.placePanel[var30].add("Center", new JDPPanelLoader(this.user, this.menu.menuobject[var30], this.menu.menuparm[var30], this.panelLoaded, var30));
  646.                this.panelLoaded[var30] = true;
  647.                this.target.placePanel[var30].paintAll(this.target.placePanel[var30].getGraphics());
  648.                ((CardLayout)this.target.cardPanel.getLayout()).show(this.target.cardPanel, Integer.toString(var30));
  649.             }
  650.          } else {
  651.             if (var30 >= 0) {
  652.                ((CardLayout)this.target.cardPanel.getLayout()).show(this.target.cardPanel, Integer.toString(var30));
  653.             }
  654.  
  655.             if (this.selectionMade && this.target.placePanel[var30] != null) {
  656.                Event var35 = new Event(this.target, 202, "JDPTabSelectPanel");
  657.                this.target.placePanel[var30].deliverEvent(var35);
  658.             }
  659.          }
  660.  
  661.          boolean var36 = true;
  662.  
  663.          for(int var40 = 0; var40 < this.menuindex.length; ++var40) {
  664.             var30 = this.menuindex[var40];
  665.             if (!this.panelLoaded[var30] && this.menu.menutype[var30].equals("A")) {
  666.                this.target.placePanel[var30].add("Center", new JDPPanelLoader(this.user, this.menu.menuobject[var30], this.menu.menuparm[var30], this.panelLoaded, var30));
  667.                this.panelLoaded[var30] = true;
  668.                if (var36) {
  669.                   this.currentsel = var40;
  670.                   this.target.placePanel[var30].paintAll(this.target.placePanel[var30].getGraphics());
  671.                   ((CardLayout)this.target.cardPanel.getLayout()).show(this.target.cardPanel, Integer.toString(var30));
  672.                   var36 = false;
  673.                   ((Component)this).repaint();
  674.                }
  675.             }
  676.          }
  677.       } else {
  678.          ((CardLayout)this.target.cardPanel.getLayout()).show(this.target.cardPanel, "Blank");
  679.       }
  680.  
  681.       this.prevcurrentlevel = this.currentlevel;
  682.       this.selectionMade = false;
  683.    }
  684.  
  685.    int getSelectedIndex() {
  686.       return this.currentsel;
  687.    }
  688.  
  689.    boolean loadObject(String var1) {
  690.       for(int var2 = 0; var2 < this.menu.menuobject.length; ++var2) {
  691.          if (this.menu.menuobject[var2].equals(var1) && (this.menu.menutype[var2].equals("P") || this.menu.menutype[var2].equals("A"))) {
  692.             this.target.placePanel[var2].add("Center", new JDPPanelLoader(this.user, this.menu.menuobject[var2], this.menu.menuparm[var2], this.panelLoaded, var2, true));
  693.             this.panelLoaded[var2] = true;
  694.             return true;
  695.          }
  696.       }
  697.  
  698.       return false;
  699.    }
  700.  
  701.    public Dimension preferredSize() {
  702.       return this.minimumSize();
  703.    }
  704.  
  705.    public void layout() {
  706.       this.loadMenuTitles();
  707.       ((Component)this).repaint();
  708.    }
  709.  
  710.    public boolean handleEvent(Event var1) {
  711.       switch (var1.id) {
  712.          case 202:
  713.             ((Component)this).repaint();
  714.             return false;
  715.          case 502:
  716.             this.loadPanel = false;
  717.             if (this.nexttabs[0] != null && this.nexttabs[0].inside(var1.x, var1.y)) {
  718.                int var4 = 0;
  719.                int var3 = 0;
  720.  
  721.                for(var3 = this.firsttab; var3 > 0; --var3) {
  722.                   var4 = var4 + this.StringWidth(this.menu.menudesc[this.menuindex[var3]]) + 6;
  723.                   if (var4 > this.Bounds.width - 40) {
  724.                      break;
  725.                   }
  726.                }
  727.  
  728.                this.firsttab = var3;
  729.                this.currentsel = var3;
  730.                this.selectionMade = true;
  731.                this.loadMenuTitles();
  732.                ((Component)this).repaint();
  733.                this.target.requestFocus();
  734.                return true;
  735.             } else if (this.nexttabs[1] != null && this.nexttabs[1].inside(var1.x, var1.y)) {
  736.                this.firsttab += this.tabsdisplayed;
  737.                this.selectionMade = true;
  738.                this.loadMenuTitles();
  739.                ((Component)this).repaint();
  740.                this.target.requestFocus();
  741.                return true;
  742.             } else {
  743.                for(int var2 = this.firsttab; var2 <= this.totaltabs + 1; ++var2) {
  744.                   if (this.tabs[var2] != null && this.tabs[var2].inside(var1.x, var1.y)) {
  745.                      this.processSelection(var2);
  746.                      this.target.requestFocus();
  747.                      return true;
  748.                   }
  749.                }
  750.  
  751.                return false;
  752.             }
  753.          default:
  754.             return false;
  755.       }
  756.    }
  757.  
  758.    void loadNextTab() {
  759.       if (this.currentsel < this.totaltabs - 1) {
  760.          ++this.currentsel;
  761.          if (this.currentlevel > 0) {
  762.             this.processSelection(this.currentsel + 1);
  763.             return;
  764.          }
  765.  
  766.          this.processSelection(this.currentsel);
  767.       }
  768.  
  769.    }
  770.  
  771.    public int StringWidth(String var1) {
  772.       if (this.field_0 == null) {
  773.          return 0;
  774.       } else if (var1 != null && !var1.equals("")) {
  775.          if (this.field_0.getFont() != this.lastFont) {
  776.             this.field_1 = this.field_0.getFontMetrics();
  777.             this.lastFont = this.field_0.getFont();
  778.             this.plainHeight = this.field_1.getHeight();
  779.             this.boldHeight = this.field_1.getHeight();
  780.          }
  781.  
  782.          return this.field_1 != null ? this.field_1.stringWidth(var1) : 0;
  783.       } else {
  784.          return 0;
  785.       }
  786.    }
  787.  
  788.    boolean selectObject(String var1) {
  789.       for(int var2 = 0; var2 < this.menu.menuobject.length; ++var2) {
  790.          if (this.menu.menuobject[var2].equals(var1)) {
  791.             for(int var3 = 0; var3 < this.menuindex.length; ++var3) {
  792.                if (this.menuindex[var3] == var2) {
  793.                   this.select(var2);
  794.                   return true;
  795.                }
  796.             }
  797.          }
  798.       }
  799.  
  800.       return false;
  801.    }
  802. }
  803.