home *** CD-ROM | disk | FTP | other *** search
/ Borland JBuilder 6 / jbuilder6.iso / IBM VisualAge for Java Enterprise v4.0 Retail / ivj40 / setup / IDE.Cab / F77650_DB2v6SmartGuideNotebookUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-04-25  |  15.2 KB  |  693 lines

  1. package com.ibm.ivb.sguides.db2v6;
  2.  
  3. import com.ibm.ivb.sguides.SGColorUtil;
  4. import com.ibm.ivb.sguides.SGImageUtil;
  5. import com.ibm.ivb.sguides.SmartGuide;
  6. import com.ibm.ivb.sguides.SmartGuideManager;
  7. import com.ibm.ivb.sguides.SmartGuideNotebook;
  8. import com.ibm.ivb.sguides.SmartGuidePage;
  9. import com.ibm.ivb.sguides.basic.BasicSmartGuideNotebookUI;
  10. import java.awt.Color;
  11. import java.awt.Component;
  12. import java.awt.Container;
  13. import java.awt.Dimension;
  14. import java.awt.Font;
  15. import java.awt.FontMetrics;
  16. import java.awt.Graphics;
  17. import java.awt.Image;
  18. import java.awt.Insets;
  19. import java.awt.LayoutManager;
  20. import java.awt.MediaTracker;
  21. import java.awt.Rectangle;
  22. import java.awt.Toolkit;
  23. import java.awt.event.ActionEvent;
  24. import java.awt.event.ActionListener;
  25. import java.awt.event.FocusEvent;
  26. import java.awt.event.FocusListener;
  27. import java.awt.event.MouseEvent;
  28. import java.awt.event.MouseListener;
  29. import java.awt.image.ImageObserver;
  30. import java.awt.image.MemoryImageSource;
  31. import java.util.EventObject;
  32. import javax.swing.Icon;
  33. import javax.swing.JButton;
  34. import javax.swing.JComponent;
  35. import javax.swing.SwingUtilities;
  36. import javax.swing.border.Border;
  37. import javax.swing.plaf.ComponentUI;
  38. import javax.swing.plaf.basic.BasicGraphicsUtils;
  39.  
  40. public class DB2v6SmartGuideNotebookUI extends BasicSmartGuideNotebookUI implements LayoutManager, MouseListener, FocusListener, ActionListener {
  41.    private static final String kCBIBMCopyright = "(c) Copyright IBM Corporation 1998";
  42.    protected JButton left;
  43.    protected JButton right;
  44.    protected static Font tfont;
  45.    protected static Icon leftIcon;
  46.    protected static Icon rightIcon;
  47.    static Color textColor = new Color(0, 0, 128);
  48.    protected int tabGap;
  49.    protected boolean tabOverlap = true;
  50.    protected int overlapWidth = 3;
  51.    protected int tabStart = 5;
  52.    protected int tpad = 10;
  53.    protected int firstPage;
  54.    protected int lastPage = -1;
  55.    protected int tabWidth = 50;
  56.    protected int doplerShift = 2;
  57.    Color bright1;
  58.    Color bright2;
  59.    Color bright3;
  60.    Color dark1;
  61.    Color dark2;
  62.    Color dark3;
  63.    protected boolean hasFocus = false;
  64.    Image dimage;
  65.    static int dheight = 20;
  66.    // $FF: renamed from: c java.awt.Component
  67.    static Component field_0 = new 1();
  68.    // $FF: renamed from: mt java.awt.MediaTracker
  69.    MediaTracker field_1;
  70.  
  71.    public DB2v6SmartGuideNotebookUI() {
  72.       this.field_1 = new MediaTracker(field_0);
  73.       super.titleEnabled = true;
  74.       super.descEnabled = true;
  75.       if (leftIcon == null) {
  76.          leftIcon = new TabButtonIcon(true);
  77.          rightIcon = new TabButtonIcon(false);
  78.       }
  79.  
  80.       this.left = new JButton(leftIcon);
  81.       this.left.setMargin(new Insets(2, 2, 2, 2));
  82.       this.right = new JButton(rightIcon);
  83.       this.right.setMargin(new Insets(2, 2, 2, 2));
  84.       this.left.addActionListener(this);
  85.       this.right.addActionListener(this);
  86.    }
  87.  
  88.    public void actionPerformed(ActionEvent var1) {
  89.       Object var2 = ((EventObject)var1).getSource();
  90.       if (var2 == this.left) {
  91.          if (this.firstPage > 0) {
  92.             --this.firstPage;
  93.          }
  94.       } else if (var2 == this.right && this.lastPage + 1 < super.sgbook.getPageCount()) {
  95.          ++this.firstPage;
  96.       }
  97.  
  98.       super.sgbook.repaint();
  99.    }
  100.  
  101.    protected void adjustVisibleTab() {
  102.       SmartGuidePage var1 = super.sgbook.getCurrentPage();
  103.       int var2 = super.sgbook.getPageIndex(var1);
  104.       if (var2 != -1) {
  105.          if (var2 < this.firstPage) {
  106.             this.firstPage = var2;
  107.             this.lastPage = this.getLastPageIndex(this.firstPage);
  108.          } else {
  109.             if (var2 > this.lastPage) {
  110.                this.lastPage = var2;
  111.                this.firstPage = this.getFirstPageIndex(this.lastPage);
  112.             }
  113.  
  114.          }
  115.       }
  116.    }
  117.  
  118.    protected void calculateColorShades(Color var1) {
  119.       this.bright1 = SGColorUtil.getBrighterColor(var1, 1);
  120.       this.bright2 = SGColorUtil.getBrighterColor(var1, 2);
  121.       this.bright3 = SGColorUtil.getBrighterColor(var1, 3);
  122.       this.dark1 = SGColorUtil.getDarkerColor(var1, 1);
  123.       this.dark2 = SGColorUtil.getDarkerColor(var1, 2);
  124.       this.dark3 = SGColorUtil.getDarkerColor(var1, 3);
  125.    }
  126.  
  127.    protected Dimension calculateSize() {
  128.       int var1 = 0;
  129.       int var2 = 0;
  130.  
  131.       for(int var3 = 0; var3 < super.sgbook.getPageCount(); ++var3) {
  132.          SmartGuidePage var4 = super.sgbook.getPageAt(var3);
  133.          Component var5 = var4.getClient();
  134.          Dimension var6 = new Dimension(0, 0);
  135.          Dimension var7 = new Dimension(0, 0);
  136.          if (var5 != null) {
  137.             var6 = var5.getPreferredSize();
  138.          }
  139.  
  140.          Icon var8 = var4.getIcon();
  141.          if (var8 != null && var4.getIconMode()) {
  142.             var7 = new Dimension(var8.getIconWidth(), var8.getIconHeight());
  143.          }
  144.  
  145.          int var9 = BasicSmartGuideNotebookUI.cinsets.left + var6.width + BasicSmartGuideNotebookUI.cinsets.right;
  146.          int var10 = BasicSmartGuideNotebookUI.cinsets.top + var6.height + BasicSmartGuideNotebookUI.cinsets.bottom;
  147.          int var11 = 0;
  148.          int var12 = 0;
  149.          var11 = BasicSmartGuideNotebookUI.cinsets.top + super.title.getPreferredSize().height + BasicSmartGuideNotebookUI.cinsets.top;
  150.          Icon var13 = (Icon)super.sgbook.getSmartGuide().getClientProperty("CommonIcon");
  151.          if (var13 != null) {
  152.             var11 = Math.max(var11, var13.getIconHeight());
  153.          }
  154.  
  155.          super.desc.setSize(var6.width, 0);
  156.          var12 = super.desc.getPreferredHeight(var6.width, var4.getDescription());
  157.          var12 += BasicSmartGuideNotebookUI.cinsets.top;
  158.          int var14 = 0;
  159.          if (var8 != null) {
  160.             var14 = BasicSmartGuideNotebookUI.imageInsets.left + var7.width + BasicSmartGuideNotebookUI.imageInsets.right;
  161.          }
  162.  
  163.          var1 = Math.max(var9 + var14, var1);
  164.          var2 = Math.max(var10 + var11 + var12, var2);
  165.       }
  166.  
  167.       var2 += this.getTabAreaHeight();
  168.       var1 = Math.max(var1, 600);
  169.       var2 = Math.max(var2, 400);
  170.       return new Dimension(var1, var2);
  171.    }
  172.  
  173.    protected int calculateTabWidth(SmartGuidePage var1) {
  174.       String var2 = var1.getShortTitle();
  175.       FontMetrics var3 = super.sgbook.getFontMetrics(super.sgbook.getFont());
  176.       int var4 = var2 != null ? var3.stringWidth(var2) : 0;
  177.       var4 = Math.max(var4, this.tabWidth);
  178.       return this.tpad + var4 + this.tpad;
  179.    }
  180.  
  181.    public static ComponentUI createUI(JComponent var0) {
  182.       return new DB2v6SmartGuideNotebookUI();
  183.    }
  184.  
  185.    public void focusGained(FocusEvent var1) {
  186.       this.hasFocus = true;
  187.       super.sgbook.repaint();
  188.    }
  189.  
  190.    public void focusLost(FocusEvent var1) {
  191.       this.hasFocus = false;
  192.       super.sgbook.repaint();
  193.    }
  194.  
  195.    private int getButtonsInset() {
  196.       return !this.left.isVisible() ? 0 : 5 + this.right.getWidth() + this.left.getWidth();
  197.    }
  198.  
  199.    protected int getFirstPageIndex(int var1) {
  200.       int var2 = this.tabStart;
  201.       int var3 = this.getShaftEnd();
  202.       int var4 = 0;
  203.       SmartGuidePage var5 = super.sgbook.getPageAt(var1);
  204.  
  205.       for(var4 = var1; var5 != null; --var4) {
  206.          int var6 = this.calculateTabWidth(super.sgbook.getPageAt(var4));
  207.          var3 -= var6;
  208.          if (var3 < var2) {
  209.             ++var4;
  210.             break;
  211.          }
  212.  
  213.          var3 -= this.tabGap;
  214.          var5 = var5.getPreviousPage();
  215.       }
  216.  
  217.       return var4;
  218.    }
  219.  
  220.    protected int getLastPageIndex(int var1) {
  221.       int var2 = this.tabStart;
  222.       int var3 = this.getShaftEnd();
  223.       int var4 = var1;
  224.  
  225.       for(SmartGuidePage var5 = super.sgbook.getPageAt(var1); var5 != null; var5 = var5.getNextPage()) {
  226.          int var6 = this.calculateTabWidth(super.sgbook.getPageAt(var4));
  227.          var2 += var6 + this.tabGap;
  228.          if (var2 > var3) {
  229.             --var4;
  230.             break;
  231.          }
  232.  
  233.          ++var4;
  234.       }
  235.  
  236.       return var4;
  237.    }
  238.  
  239.    protected int getShaftEnd() {
  240.       int var1 = super.sgbook.getWidth();
  241.       return var1 - 5 - this.left.getWidth() - this.right.getWidth() - 5;
  242.    }
  243.  
  244.    protected boolean getShowTabs() {
  245.       Boolean var1 = (Boolean)SmartGuideManager.getManager().getProperty("NoTabs");
  246.       return var1 == null || !var1;
  247.    }
  248.  
  249.    protected int getTabAreaHeight() {
  250.       return this.getShowTabs() ? 30 : 0;
  251.    }
  252.  
  253.    protected Font getTitleFont() {
  254.       if (tfont == null) {
  255.          tfont = new Font("SansSerif", 1, 14);
  256.       }
  257.  
  258.       return tfont;
  259.    }
  260.  
  261.    public void installUI(JComponent var1) {
  262.       super.installUI(var1);
  263.       var1.setBorder((Border)null);
  264.       BasicSmartGuideNotebookUI.cinsets.top = 10;
  265.       BasicSmartGuideNotebookUI.cinsets.left = 10;
  266.       BasicSmartGuideNotebookUI.cinsets.bottom = 10;
  267.       BasicSmartGuideNotebookUI.cinsets.right = 10;
  268.       super.title.setForeground(textColor);
  269.       super.sgbook.addMouseListener(this);
  270.       super.sgbook.addFocusListener(this);
  271.       super.sgbook.add(this.left);
  272.       super.sgbook.add(this.right);
  273.    }
  274.  
  275.    public void layoutContainer(Container var1) {
  276.       Dimension var2 = ((Component)var1).getSize();
  277.       Rectangle var3 = new Rectangle(var2);
  278.       int var4 = this.getTabAreaHeight();
  279.       var3.y += var4;
  280.       var3.height -= var4;
  281.       int var5 = var4 - this.right.getHeight() - 2;
  282.       int var6 = var2.width - 5 - this.right.getWidth();
  283.       this.left.setSize(this.left.getPreferredSize());
  284.       this.right.setSize(this.right.getPreferredSize());
  285.       this.right.setLocation(var6, var5);
  286.       this.left.setLocation(var6 - this.left.getWidth(), var5);
  287.       boolean var7 = false;
  288.       int var8 = 0;
  289.       if (super.icon != null) {
  290.          var8 = BasicSmartGuideNotebookUI.imageInsets.left + super.icon.getIconWidth() + BasicSmartGuideNotebookUI.imageInsets.right;
  291.       }
  292.  
  293.       int var10000 = var3.width - var8;
  294.       Component var10 = super.prevPage != null ? super.prevPage.getClient() : null;
  295.       Component var11 = super.currPage != null ? super.currPage.getClient() : null;
  296.       if (var10 != null && var10.getParent() == null && var11 != null && SwingUtilities.findFocusOwner(var10) != null) {
  297.          var7 = true;
  298.       }
  299.  
  300.       int var13 = 0;
  301.       Icon var14 = (Icon)super.sgbook.getSmartGuide().getClientProperty("CommonIcon");
  302.       super.title.setSize(super.title.getPreferredSize());
  303.       var13 = BasicSmartGuideNotebookUI.cinsets.top + super.title.getHeight() + BasicSmartGuideNotebookUI.cinsets.top;
  304.       if (var14 != null) {
  305.          var13 = Math.max(var14.getIconHeight(), var13);
  306.       }
  307.  
  308.       super.title.setLocation(BasicSmartGuideNotebookUI.cinsets.left, var4 + var13 / 2);
  309.       int var12 = var4 + var13;
  310.       int var15 = var3.width - BasicSmartGuideNotebookUI.cinsets.left - BasicSmartGuideNotebookUI.cinsets.right;
  311.       if (var14 != null) {
  312.          var15 -= var14.getIconWidth();
  313.       }
  314.  
  315.       super.desc.setSize(var15, super.desc.getPreferredHeight(var15));
  316.       var12 += BasicSmartGuideNotebookUI.cinsets.top;
  317.       super.desc.setLocation(BasicSmartGuideNotebookUI.cinsets.left + var3.x, var12);
  318.       var12 += super.desc.getSize().height + BasicSmartGuideNotebookUI.cinsets.top;
  319.       if (var11 != null) {
  320.          var11.setLocation(var3.x + BasicSmartGuideNotebookUI.cinsets.left, var12 + BasicSmartGuideNotebookUI.cinsets.top);
  321.          var11.setSize(var3.width - var8 - BasicSmartGuideNotebookUI.cinsets.left - BasicSmartGuideNotebookUI.cinsets.right, var3.height - (var12 - var3.y) - BasicSmartGuideNotebookUI.cinsets.top - BasicSmartGuideNotebookUI.cinsets.bottom);
  322.          var11.setVisible(true);
  323.          var11.validate();
  324.          if (var7) {
  325.             ((BasicSmartGuideNotebookUI)this).transferFocusTo(var11);
  326.          }
  327.       }
  328.  
  329.       if (this.firstPage > 0 || this.lastPage != -1 && this.lastPage < super.sgbook.getPageCount() - 1) {
  330.          this.adjustVisibleTab();
  331.       }
  332.  
  333.    }
  334.  
  335.    protected Image makeDitherImage(String var1, int var2, int var3) {
  336.       if (this.dimage != null && this.dimage.getWidth((ImageObserver)null) == var2) {
  337.          return this.dimage;
  338.       } else {
  339.          var3 = dheight;
  340.          int[] var4 = new int[var2 * var3];
  341.          int var5 = 0;
  342.          Color var6 = super.sgbook.getBackground();
  343.          int var7 = var6.getRed() + 1;
  344.          int var8 = var6.getGreen() + 1;
  345.          int var9 = var6.getBlue() + 1;
  346.          short var10 = 165;
  347.          short var11 = 165;
  348.          short var12 = 181;
  349.          boolean var13 = true;
  350.          int var14 = var10 - var7;
  351.          int var15 = var11 - var8;
  352.          int var16 = var12 - var9;
  353.          double var17 = (double)(var2 * var2);
  354.  
  355.          for(int var19 = 0; var19 < var3; ++var19) {
  356.             for(int var20 = 0; var20 < var2; ++var20) {
  357.                double var24 = (double)(var20 * var20);
  358.                double var26 = var24 / var17;
  359.                byte var28 = 3;
  360.                int var21 = (int)(var26 * (double)var14) + var7;
  361.                int var22 = (int)(var26 * (double)var15) + var8;
  362.                int var23 = (int)(var26 * (double)var16) + var9;
  363.                int var29 = var28 + var28;
  364.                var21 += (int)((double)var29 * Math.random() - (double)var28);
  365.                var22 += (int)((double)var29 * Math.random() - (double)var28);
  366.                var23 += (int)((double)var29 * Math.random() - (double)var28);
  367.                var4[var5++] = -16777216 | var21 << 16 | var22 << 8 | var23;
  368.             }
  369.          }
  370.  
  371.          Image var32 = Toolkit.getDefaultToolkit().createImage(new MemoryImageSource(var2, var3, var4, 0, var2));
  372.          this.field_1.addImage(var32, 0);
  373.  
  374.          try {
  375.             this.field_1.waitForID(0);
  376.          } catch (InterruptedException var30) {
  377.             return null;
  378.          }
  379.  
  380.          this.dimage = var32;
  381.          return var32;
  382.       }
  383.    }
  384.  
  385.    public void mouseClicked(MouseEvent var1) {
  386.    }
  387.  
  388.    public void mouseEntered(MouseEvent var1) {
  389.    }
  390.  
  391.    public void mouseExited(MouseEvent var1) {
  392.    }
  393.  
  394.    public void mousePressed(MouseEvent var1) {
  395.       if (this.getShowTabs()) {
  396.          SmartGuidePage var2 = super.sgbook.getCurrentPage();
  397.          boolean var3 = var2.isPageComplete();
  398.  
  399.          for(int var4 = this.firstPage; var4 <= this.lastPage; ++var4) {
  400.             SmartGuidePage var5 = super.sgbook.getPageAt(var4);
  401.             Rectangle var6 = (Rectangle)var5.getUIData();
  402.             if (var6.contains(var1.getPoint())) {
  403.                if (var5 == super.sgbook.getCurrentPage()) {
  404.                   super.sgbook.requestFocus();
  405.                   super.sgbook.repaint();
  406.                } else if (!var3) {
  407.                   Toolkit.getDefaultToolkit().beep();
  408.                } else {
  409.                   super.sgbook.getSmartGuide().turnToPage(var5);
  410.                }
  411.             }
  412.          }
  413.  
  414.       }
  415.    }
  416.  
  417.    public void mouseReleased(MouseEvent var1) {
  418.    }
  419.  
  420.    public void paint(Graphics var1, JComponent var2) {
  421.       if (this.getShowTabs()) {
  422.          this.paintTabs(super.sgbook, var1);
  423.       }
  424.  
  425.       Dimension var3 = ((Component)var2).getSize();
  426.       int var4 = this.getTabAreaHeight();
  427.       Rectangle var5 = new Rectangle(var3);
  428.       var5.y += var4;
  429.       var5.height -= var4;
  430.       int var6 = BasicSmartGuideNotebookUI.imageInsets.left + BasicSmartGuideNotebookUI.imageInsets.right;
  431.       if (super.icon != null) {
  432.          var6 += super.icon.getIconWidth();
  433.       }
  434.  
  435.       int var7 = var5.x + var5.width - var6;
  436.       int var8 = super.desc.getY() + super.desc.getHeight() + BasicSmartGuideNotebookUI.cinsets.top;
  437.       SmartGuidePage var9 = super.sgbook.getCurrentPage();
  438.       Icon var10 = (Icon)super.sgbook.getSmartGuide().getClientProperty("CommonIcon");
  439.       int var11 = super.desc.getY() - BasicSmartGuideNotebookUI.cinsets.top - var4;
  440.       int var12 = var5.width - super.desc.getX() - 1;
  441.       int var13 = var12 / 5;
  442.       var12 -= var13;
  443.       Image var14 = this.makeDitherImage(var9.toString(), var12, var11);
  444.       if (var14 != null) {
  445.          if (var14.getWidth((ImageObserver)null) == var12 && var14.getHeight((ImageObserver)null) == var11) {
  446.             var1.drawImage(var14, super.desc.getX() + var13, var4 + 2, (ImageObserver)null);
  447.          } else {
  448.             SGImageUtil.tileImage(var1, var14, super.desc.getX() + var13, var4 + 2, var12, var11);
  449.          }
  450.       }
  451.  
  452.       if (var10 != null) {
  453.          byte var15 = 10;
  454.          int var16 = var3.width - var15 - var10.getIconWidth();
  455.          int var17 = var4 + 2 + var11 / 2 - var10.getIconHeight() / 2;
  456.          var10.paintIcon(var2, var1, var16, var17);
  457.       }
  458.  
  459.       if (super.icon != null) {
  460.          int var19 = var5.height - var8;
  461.          super.icon.paintIcon(var2, var1, var7 + BasicSmartGuideNotebookUI.imageInsets.left, var8 + var19 / 2 - super.icon.getIconHeight() / 2);
  462.       }
  463.  
  464.    }
  465.  
  466.    protected boolean paintOneTab(Graphics var1, SmartGuidePage var2, int var3, int var4, int var5, int var6, int var7, boolean var8) {
  467.       String var9 = var2.getShortTitle();
  468.       Color var10 = super.sgbook.getBackground();
  469.       boolean var11 = false;
  470.       FontMetrics var12 = var1.getFontMetrics();
  471.       String var13 = var6 + ". " + var9;
  472.       if (this.bright1 == null) {
  473.          this.calculateColorShades(var10);
  474.       }
  475.  
  476.       int var14 = var13 != null ? var12.stringWidth(var13) : 0;
  477.       var14 = Math.max(var14, this.tabWidth);
  478.       int var15 = this.tpad + var14 + this.tpad;
  479.       if (var8) {
  480.          var15 += this.overlapWidth + this.overlapWidth;
  481.       }
  482.  
  483.       if (var3 + var15 > var7 - this.tabGap) {
  484.          return false;
  485.       } else {
  486.          int var16 = super.sgbook.getCurrentPageNumber();
  487.          boolean var17 = super.sgbook.getCurrentPage().isPageComplete();
  488.          int var18 = var4 - 4;
  489.          int var19 = var18;
  490.          byte var20 = 10;
  491.          int var21 = var20;
  492.          if (var5 == var16) {
  493.             var11 = true;
  494.             var19 = var18 - this.doplerShift;
  495.             var21 = var20 - this.doplerShift;
  496.          }
  497.  
  498.          var1.setColor(var10);
  499.          int var22 = var4 - 2;
  500.          var1.fillRect(var3, var21, var15, (var11 ? 2 : 0) + var4 - var21 - 1);
  501.          var1.setColor(this.bright3);
  502.          var1.drawLine(var3, var22 + (var11 ? 1 : 0), var3, var21 + 2);
  503.          var1.drawLine(var3, var21 + 2, var3 + 2, var21);
  504.          var1.drawLine(var3 + 2, var21, var3 + var15 - 3, var21);
  505.          var1.setColor(this.bright1);
  506.          var1.drawLine(var3 + 1, var22 + (var11 ? 2 : 0), var3 + 1, var21 + 2);
  507.          var1.drawLine(var3 + 2, var21 + 1, var3 + var15 - 3, var21 + 1);
  508.          var1.setColor(this.dark2);
  509.          var1.drawLine(var3 + var15 - 2, var22, var3 + var15 - 2, var21 + 2);
  510.          var1.setColor(Color.black);
  511.          var1.drawLine(var3 + var15 - 1, var22, var3 + var15 - 1, var21 + 2);
  512.          var1.drawLine(var3 + var15 - 1, var21 + 2, var3 + var15 - 2, var21 + 1);
  513.          if (var11) {
  514.             var1.setColor(var10);
  515.             var1.fillRect(var3 + var15 - 2, var22 + 1, 2, 2);
  516.          }
  517.  
  518.          Rectangle var23 = (Rectangle)var2.getUIData();
  519.          if (var23 == null) {
  520.             var23 = new Rectangle();
  521.             var2.setUIData(var23);
  522.          }
  523.  
  524.          if (var13 != null) {
  525.             var1.setFont(super.sgbook.getFont());
  526.             int var24 = var3 + var15 / 2 - var14 / 2;
  527.             if (!var11 && !var17) {
  528.                var1.setColor(var10.brighter());
  529.                var1.drawString(var13, var24, var19);
  530.                var1.setColor(var10.darker());
  531.                var1.drawString(var13, var24 - 1, var19 - 1);
  532.             } else {
  533.                var1.setColor(var11 ? textColor : super.sgbook.getForeground());
  534.                var1.drawString(var13, var24, var19);
  535.             }
  536.  
  537.             if (var11 && this.hasFocus) {
  538.                var1.setColor(super.sgbook.getForeground());
  539.                BasicGraphicsUtils.drawDashedRect(var1, var3 + 4, var21 + 3, var15 - 8, var4 - var21 - 5);
  540.             }
  541.          }
  542.  
  543.          var23.x = var3;
  544.          var23.y = var20;
  545.          var23.width = var15;
  546.          var23.height = var4 - var20;
  547.          return true;
  548.       }
  549.    }
  550.  
  551.    protected void paintTabs(SmartGuideNotebook var1, Graphics var2) {
  552.       int var3 = this.getTabAreaHeight();
  553.       Color var4 = ((Component)var1).getBackground();
  554.       var4.darker();
  555.       Color var5 = var4.brighter();
  556.       Color var6 = SGColorUtil.getBrighterColor(var4, 1);
  557.       var2.setColor(var4);
  558.       var2.fillRect(0, 0, ((JComponent)var1).getWidth(), var3);
  559.       var2.setColor(var5);
  560.       var2.drawLine(0, 0, ((JComponent)var1).getWidth() - 1, 0);
  561.       var2.setColor(var4);
  562.       var2.draw3DRect(1, 2, ((JComponent)var1).getWidth() - 3, var3 - 3, false);
  563.       var2.setColor(var6);
  564.       var2.drawLine(1, var3, ((JComponent)var1).getWidth() - 3, var3);
  565.       boolean var7 = true;
  566.       int var8 = this.tabStart;
  567.       int var9 = this.getShaftEnd();
  568.       int var10 = 0;
  569.       SmartGuidePage var11 = var1.getCurrentPage();
  570.       if (this.tabOverlap) {
  571.          var8 += this.overlapWidth;
  572.       }
  573.  
  574.       int var12 = this.firstPage;
  575.       SmartGuidePage var13 = var1.getPageAt(this.firstPage);
  576.       int var14 = 0;
  577.       int var15 = 0;
  578.  
  579.       while(true) {
  580.          ++var14;
  581.          if (!this.paintOneTab(var2, var13, var8, var3, var12, var14, var9, false)) {
  582.             var7 = false;
  583.             break;
  584.          }
  585.  
  586.          if (var11 == var13) {
  587.             var10 = var12;
  588.             var15 = var14;
  589.          }
  590.  
  591.          this.lastPage = var12;
  592.          Rectangle var16 = (Rectangle)var13.getUIData();
  593.          var8 += var16.width + this.tabGap;
  594.          var13 = var13.getNextPage();
  595.          if (var13 == null) {
  596.             break;
  597.          }
  598.  
  599.          var12 = var13.getPageIndex();
  600.       }
  601.  
  602.       this.updateTabButtons(this.firstPage > 0 || this.lastPage != -1 && this.lastPage < var1.getPageCount() - 1);
  603.       if (this.tabOverlap && var11 != null && var10 >= this.firstPage && var10 <= this.lastPage) {
  604.          Rectangle var19 = (Rectangle)var11.getUIData();
  605.          if (var19 != null) {
  606.             var8 = var19.x - this.overlapWidth;
  607.             this.paintOneTab(var2, var11, var8, var3, var10, var15, var9, true);
  608.          }
  609.       }
  610.  
  611.    }
  612.  
  613.    private String parsePrefix(String var1, SmartGuidePage var2) {
  614.       SmartGuidePage var3 = var2;
  615.       int var4 = 1;
  616.  
  617.       int var5;
  618.       for(var5 = 1; var3.getPreviousPage() != null; ++var4) {
  619.          var3 = var3.getPreviousPage();
  620.       }
  621.  
  622.       while(var3.getNextPage() != null) {
  623.          var3 = var3.getNextPage();
  624.          ++var5;
  625.       }
  626.  
  627.       StringBuffer var6 = new StringBuffer();
  628.  
  629.       for(int var7 = 0; var7 < var1.length(); ++var7) {
  630.          char var8 = var1.charAt(var7);
  631.          if (var8 == '%' && var7 < var1.length() - 1) {
  632.             char var9 = var1.charAt(var7 + 1);
  633.             if (var9 == 'C') {
  634.                var6.append(Integer.toString(var4));
  635.                ++var7;
  636.                continue;
  637.             }
  638.  
  639.             if (var9 == 'T') {
  640.                var6.append(Integer.toString(var5));
  641.                ++var7;
  642.                continue;
  643.             }
  644.          }
  645.  
  646.          var6.append(var8);
  647.       }
  648.  
  649.       return var6.toString();
  650.    }
  651.  
  652.    public void uninstallUI(JComponent var1) {
  653.       super.sgbook.removeMouseListener(this);
  654.       super.sgbook.removeFocusListener(this);
  655.       super.sgbook.remove(this.left);
  656.       super.sgbook.remove(this.right);
  657.       super.uninstallUI(var1);
  658.    }
  659.  
  660.    private void updateTabButtons(boolean var1) {
  661.       this.left.setVisible(var1);
  662.       this.right.setVisible(var1);
  663.       this.left.setEnabled(this.firstPage > 0);
  664.       this.right.setEnabled(this.lastPage < super.sgbook.getPageCount() - 1);
  665.    }
  666.  
  667.    protected void updateTitle(SmartGuidePage var1) {
  668.       SmartGuide var2 = super.sgbook.getSmartGuide();
  669.       String var3 = "";
  670.       if (var1.getPreviousPage() == null) {
  671.          var3 = (String)var2.getClientProperty("FirstStepText");
  672.          if (var3 == null) {
  673.             var3 = "First Step";
  674.          }
  675.       } else if (var1.getNextPage() == null) {
  676.          var3 = (String)var2.getClientProperty("LastStepText");
  677.          if (var3 == null) {
  678.             var3 = "Last Step";
  679.          }
  680.       } else {
  681.          var3 = (String)var2.getClientProperty("StepText");
  682.          if (var3 == null) {
  683.             var3 = "Step";
  684.          }
  685.  
  686.          var3 = this.parsePrefix(var3, var1);
  687.       }
  688.  
  689.       String var4 = var3 + ": " + var1.getTitle();
  690.       super.title.setText(var4);
  691.    }
  692. }
  693.