home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / plaf / metal / MetalToolBarUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  4.5 KB  |  172 lines

  1. package com.sun.java.swing.plaf.metal;
  2.  
  3. import com.sun.java.swing.AbstractButton;
  4. import com.sun.java.swing.JButton;
  5. import com.sun.java.swing.JComponent;
  6. import com.sun.java.swing.border.Border;
  7. import com.sun.java.swing.border.CompoundBorder;
  8. import com.sun.java.swing.plaf.ComponentUI;
  9. import com.sun.java.swing.plaf.UIResource;
  10. import com.sun.java.swing.plaf.basic.BasicToolBarUI;
  11. import java.awt.Component;
  12. import java.awt.Container;
  13. import java.awt.event.ContainerEvent;
  14. import java.awt.event.ContainerListener;
  15. import java.beans.PropertyChangeListener;
  16. import java.util.Hashtable;
  17.  
  18. public class MetalToolBarUI extends BasicToolBarUI implements ContainerListener {
  19.    protected static Border rolloverBorder = new CompoundBorder(new MetalRolloverButtonBorder(), new ToolBarButtonMargin());
  20.    protected static Border nonRolloverBorder = new MetalButtonBorder();
  21.    protected Hashtable borderTable = new Hashtable();
  22.    protected ContainerListener contListener;
  23.    private boolean rolloverBorders = false;
  24.    private PropertyChangeListener rolloverListener;
  25.    protected static String IS_ROLLOVER = "JToolBar.isRollover";
  26.  
  27.    public static ComponentUI createUI(JComponent var0) {
  28.       return new MetalToolBarUI();
  29.    }
  30.  
  31.    public void installUI(JComponent var1) {
  32.       this.rolloverListener = new RolloverListener(this);
  33.       var1.addPropertyChangeListener(this.rolloverListener);
  34.       super.installUI(var1);
  35.       Object var2 = var1.getClientProperty(IS_ROLLOVER);
  36.       if (var2 != null) {
  37.          this.setRolloverBorders((Boolean)var2);
  38.       } else {
  39.          this.setRolloverBorders(false);
  40.       }
  41.    }
  42.  
  43.    public void uninstallUI(JComponent var1) {
  44.       var1.removePropertyChangeListener(this.rolloverListener);
  45.       super.uninstallUI(var1);
  46.       this.installNormalBorders(var1);
  47.    }
  48.  
  49.    protected void installListeners(JComponent var1) {
  50.       super.installListeners(var1);
  51.       if ((this.contListener = this.createContainerListener(var1)) != null) {
  52.          ((Container)var1).addContainerListener(this.contListener);
  53.       }
  54.  
  55.    }
  56.  
  57.    protected void uninstallListeners(JComponent var1) {
  58.       super.uninstallListeners(var1);
  59.       if (this.contListener != null) {
  60.          ((Container)var1).removeContainerListener(this.contListener);
  61.          this.contListener = null;
  62.       }
  63.  
  64.    }
  65.  
  66.    protected ContainerListener createContainerListener(JComponent var1) {
  67.       return this;
  68.    }
  69.  
  70.    public boolean isRolloverBorders() {
  71.       return this.rolloverBorders;
  72.    }
  73.  
  74.    public void setRolloverBorders(boolean var1) {
  75.       this.rolloverBorders = var1;
  76.       if (this.rolloverBorders) {
  77.          this.installRolloverBorders(super.toolBar);
  78.       } else {
  79.          this.installNonRolloverBorders(super.toolBar);
  80.       }
  81.    }
  82.  
  83.    protected void installRolloverBorders(JComponent var1) {
  84.       Component[] var2 = ((Container)var1).getComponents();
  85.  
  86.       for(int var3 = 0; var3 < var2.length; ++var3) {
  87.          if (var2[var3] instanceof JComponent) {
  88.             ((JComponent)var2[var3]).updateUI();
  89.             this.setBorderToRollover(var2[var3]);
  90.          }
  91.       }
  92.  
  93.    }
  94.  
  95.    protected void installNonRolloverBorders(JComponent var1) {
  96.       Component[] var2 = ((Container)var1).getComponents();
  97.  
  98.       for(int var3 = 0; var3 < var2.length; ++var3) {
  99.          if (var2[var3] instanceof JComponent) {
  100.             ((JComponent)var2[var3]).updateUI();
  101.             this.setBorderToNonRollover(var2[var3]);
  102.          }
  103.       }
  104.  
  105.    }
  106.  
  107.    protected void installNormalBorders(JComponent var1) {
  108.       Component[] var2 = ((Container)var1).getComponents();
  109.  
  110.       for(int var3 = 0; var3 < var2.length; ++var3) {
  111.          this.setBorderToNormal(var2[var3]);
  112.       }
  113.  
  114.    }
  115.  
  116.    protected void setBorderToRollover(Component var1) {
  117.       if (var1 instanceof JButton) {
  118.          JButton var2 = (JButton)var1;
  119.          if (((AbstractButton)var2).getUI() instanceof MetalButtonUI) {
  120.             if (((JComponent)var2).getBorder() instanceof UIResource) {
  121.                this.borderTable.put(var2, ((JComponent)var2).getBorder());
  122.             }
  123.  
  124.             if (((JComponent)var2).getBorder() instanceof UIResource || ((JComponent)var2).getBorder() == nonRolloverBorder) {
  125.                ((JComponent)var2).setBorder(rolloverBorder);
  126.             }
  127.          }
  128.       }
  129.  
  130.    }
  131.  
  132.    protected void setBorderToNonRollover(Component var1) {
  133.       if (var1 instanceof JButton) {
  134.          JButton var2 = (JButton)var1;
  135.          if (((AbstractButton)var2).getUI() instanceof MetalButtonUI) {
  136.             if (((JComponent)var2).getBorder() instanceof UIResource) {
  137.                this.borderTable.put(var2, ((JComponent)var2).getBorder());
  138.             }
  139.  
  140.             if (((JComponent)var2).getBorder() instanceof UIResource || ((JComponent)var2).getBorder() == rolloverBorder) {
  141.                ((JComponent)var2).setBorder(nonRolloverBorder);
  142.             }
  143.          }
  144.       }
  145.  
  146.    }
  147.  
  148.    protected void setBorderToNormal(Component var1) {
  149.       if (var1 instanceof JButton) {
  150.          JButton var2 = (JButton)var1;
  151.          if (((AbstractButton)var2).getUI() instanceof MetalButtonUI && (((JComponent)var2).getBorder() == rolloverBorder || ((JComponent)var2).getBorder() == nonRolloverBorder)) {
  152.             ((JComponent)var2).setBorder((Border)this.borderTable.remove(var2));
  153.          }
  154.       }
  155.  
  156.    }
  157.  
  158.    public void componentAdded(ContainerEvent var1) {
  159.       Component var2 = var1.getChild();
  160.       if (this.rolloverBorders) {
  161.          this.setBorderToRollover(var2);
  162.       } else {
  163.          this.setBorderToNonRollover(var2);
  164.       }
  165.    }
  166.  
  167.    public void componentRemoved(ContainerEvent var1) {
  168.       Component var2 = var1.getChild();
  169.       this.setBorderToNormal(var2);
  170.    }
  171. }
  172.