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

  1. package com.sun.java.swing;
  2.  
  3. import com.sun.java.accessibility.Accessible;
  4. import com.sun.java.accessibility.AccessibleContext;
  5. import com.sun.java.accessibility.AccessibleState;
  6. import com.sun.java.swing.event.ChangeEvent;
  7. import com.sun.java.swing.event.ChangeListener;
  8. import com.sun.java.swing.plaf.TabbedPaneUI;
  9. import java.awt.Color;
  10. import java.awt.Component;
  11. import java.awt.Container;
  12. import java.awt.Rectangle;
  13. import java.awt.event.MouseEvent;
  14. import java.io.Serializable;
  15. import java.util.Vector;
  16.  
  17. public class JTabbedPane extends JComponent implements Serializable, Accessible, SwingConstants {
  18.    protected int tabPlacement;
  19.    protected SingleSelectionModel model;
  20.    private boolean haveRegistered;
  21.    protected ChangeListener changeListener;
  22.    Vector pages;
  23.    protected transient ChangeEvent changeEvent;
  24.    // $FF: synthetic field
  25.    static Class class$com$sun$java$swing$event$ChangeListener;
  26.  
  27.    public JTabbedPane() {
  28.       this(1);
  29.    }
  30.  
  31.    public JTabbedPane(int var1) {
  32.       this.tabPlacement = 1;
  33.       this.setTabPlacement(var1);
  34.       this.pages = new Vector(1);
  35.       this.setModel(new DefaultSingleSelectionModel());
  36.       this.updateUI();
  37.    }
  38.  
  39.    public TabbedPaneUI getUI() {
  40.       return (TabbedPaneUI)super.ui;
  41.    }
  42.  
  43.    public void setUI(TabbedPaneUI var1) {
  44.       super.setUI(var1);
  45.    }
  46.  
  47.    public void updateUI() {
  48.       int var1 = this.getTabCount();
  49.  
  50.       while(var1-- > 0) {
  51.          Page var2 = (Page)this.pages.elementAt(var1);
  52.          Component var3 = var2.component;
  53.          if (var3.getParent() != this && var3 instanceof Container) {
  54.             var2.needsUIUpdate = true;
  55.          } else {
  56.             var2.needsUIUpdate = false;
  57.          }
  58.       }
  59.  
  60.       this.setUI((TabbedPaneUI)UIManager.getUI(this));
  61.    }
  62.  
  63.    public String getUIClassID() {
  64.       return "TabbedPaneUI";
  65.    }
  66.  
  67.    protected ChangeListener createChangeListener() {
  68.       return new ModelListener(this);
  69.    }
  70.  
  71.    public void addChangeListener(ChangeListener var1) {
  72.       super.listenerList.add(class$com$sun$java$swing$event$ChangeListener != null ? class$com$sun$java$swing$event$ChangeListener : (class$com$sun$java$swing$event$ChangeListener = JComponent.class$("com.sun.java.swing.event.ChangeListener")), var1);
  73.    }
  74.  
  75.    public void removeChangeListener(ChangeListener var1) {
  76.       super.listenerList.remove(class$com$sun$java$swing$event$ChangeListener != null ? class$com$sun$java$swing$event$ChangeListener : (class$com$sun$java$swing$event$ChangeListener = JComponent.class$("com.sun.java.swing.event.ChangeListener")), var1);
  77.    }
  78.  
  79.    protected void fireStateChanged() {
  80.       Object[] var1 = super.listenerList.getListenerList();
  81.  
  82.       for(int var2 = var1.length - 2; var2 >= 0; var2 -= 2) {
  83.          if (var1[var2] == (class$com$sun$java$swing$event$ChangeListener != null ? class$com$sun$java$swing$event$ChangeListener : (class$com$sun$java$swing$event$ChangeListener = JComponent.class$("com.sun.java.swing.event.ChangeListener")))) {
  84.             if (this.changeEvent == null) {
  85.                this.changeEvent = new ChangeEvent(this);
  86.             }
  87.  
  88.             ((ChangeListener)var1[var2 + 1]).stateChanged(this.changeEvent);
  89.          }
  90.       }
  91.  
  92.    }
  93.  
  94.    public SingleSelectionModel getModel() {
  95.       return this.model;
  96.    }
  97.  
  98.    public void setModel(SingleSelectionModel var1) {
  99.       SingleSelectionModel var2 = this.getModel();
  100.       if (var2 != null) {
  101.          var2.removeChangeListener(this.changeListener);
  102.          this.changeListener = null;
  103.       }
  104.  
  105.       this.model = var1;
  106.       if (var1 != null) {
  107.          this.changeListener = this.createChangeListener();
  108.          var1.addChangeListener(this.changeListener);
  109.       }
  110.  
  111.       ((JComponent)this).firePropertyChange("model", var2, var1);
  112.    }
  113.  
  114.    public int getTabPlacement() {
  115.       return this.tabPlacement;
  116.    }
  117.  
  118.    public void setTabPlacement(int var1) {
  119.       if (var1 != 1 && var1 != 2 && var1 != 3 && var1 != 4) {
  120.          throw new IllegalArgumentException("illegal tab placement: must be TOP, BOTTOM, LEFT, or RIGHT");
  121.       } else {
  122.          if (this.tabPlacement != var1) {
  123.             int var2 = this.tabPlacement;
  124.             this.tabPlacement = var1;
  125.             ((JComponent)this).firePropertyChange("tabPlacement", var2, var1);
  126.             ((Container)this).invalidate();
  127.          }
  128.  
  129.       }
  130.    }
  131.  
  132.    public int getSelectedIndex() {
  133.       return this.model.getSelectedIndex();
  134.    }
  135.  
  136.    public void setSelectedIndex(int var1) {
  137.       int var2 = this.model.getSelectedIndex();
  138.       this.model.setSelectedIndex(var1);
  139.       if (var2 >= 0 && var2 != var1) {
  140.          Page var10000 = (Page)this.pages.elementAt(var2);
  141.          if (super.accessibleContext != null) {
  142.             super.accessibleContext.firePropertyChange("AccessibleState", AccessibleState.SELECTED, (Object)null);
  143.          }
  144.       }
  145.  
  146.       if (var1 >= 0 && var2 != var1) {
  147.          Page var3 = (Page)this.pages.elementAt(var1);
  148.          if (super.accessibleContext != null) {
  149.             super.accessibleContext.firePropertyChange("AccessibleState", (Object)null, AccessibleState.SELECTED);
  150.          }
  151.       }
  152.  
  153.    }
  154.  
  155.    public Component getSelectedComponent() {
  156.       int var1 = this.getSelectedIndex();
  157.       return var1 == -1 ? null : this.getComponentAt(var1);
  158.    }
  159.  
  160.    public void setSelectedComponent(Component var1) {
  161.       int var2 = this.indexOfComponent(var1);
  162.       if (var2 != -1) {
  163.          this.setSelectedIndex(var2);
  164.       } else {
  165.          throw new IllegalArgumentException("component not found in tabbed pane");
  166.       }
  167.    }
  168.  
  169.    public void insertTab(String var1, Icon var2, Component var3, String var4, int var5) {
  170.       ImageIcon var6 = null;
  171.       if (var2 != null && var2 instanceof ImageIcon) {
  172.          var6 = new ImageIcon(GrayFilter.createDisabledImage(((ImageIcon)var2).getImage()));
  173.       }
  174.  
  175.       this.pages.insertElementAt(new Page(this, this, var1 != null ? var1 : "", var2, var6, var3, var4), var5);
  176.       ((Container)this).invalidate();
  177.       if (this.pages.size() == 1) {
  178.          this.setSelectedIndex(0);
  179.       }
  180.  
  181.       if (!this.haveRegistered && var4 != null) {
  182.          ToolTipManager.sharedInstance().registerComponent(this);
  183.          this.haveRegistered = true;
  184.       }
  185.  
  186.       if (super.accessibleContext != null) {
  187.          super.accessibleContext.firePropertyChange("AccessibleVisibleData", (Object)null, var3);
  188.       }
  189.  
  190.    }
  191.  
  192.    public void addTab(String var1, Icon var2, Component var3, String var4) {
  193.       this.insertTab(var1, var2, var3, var4, this.pages.size());
  194.    }
  195.  
  196.    public void addTab(String var1, Icon var2, Component var3) {
  197.       this.insertTab(var1, var2, var3, (String)null, this.pages.size());
  198.    }
  199.  
  200.    public void addTab(String var1, Component var2) {
  201.       this.insertTab(var1, (Icon)null, var2, (String)null, this.pages.size());
  202.    }
  203.  
  204.    public void removeTabAt(int var1) {
  205.       int var2 = this.getTabCount();
  206.       int var3 = this.getSelectedIndex();
  207.       if (var3 >= var2 - 1) {
  208.          this.setSelectedIndex(var3 - 1);
  209.       }
  210.  
  211.       Component var4 = this.getComponentAt(var1);
  212.       if (super.accessibleContext != null) {
  213.          super.accessibleContext.firePropertyChange("AccessibleVisibleData", var4, (Object)null);
  214.       }
  215.  
  216.       this.pages.removeElementAt(var1);
  217.       ((Container)this).invalidate();
  218.    }
  219.  
  220.    public int getTabCount() {
  221.       return this.pages.size();
  222.    }
  223.  
  224.    public int getTabRunCount() {
  225.       return super.ui != null ? ((TabbedPaneUI)super.ui).getTabRunCount(this) : 0;
  226.    }
  227.  
  228.    public String getTitleAt(int var1) {
  229.       return ((Page)this.pages.elementAt(var1)).title;
  230.    }
  231.  
  232.    public Icon getIconAt(int var1) {
  233.       return ((Page)this.pages.elementAt(var1)).icon;
  234.    }
  235.  
  236.    public Icon getDisabledIconAt(int var1) {
  237.       return ((Page)this.pages.elementAt(var1)).disabledIcon;
  238.    }
  239.  
  240.    public Color getBackgroundAt(int var1) {
  241.       return ((Page)this.pages.elementAt(var1)).getBackground();
  242.    }
  243.  
  244.    public Color getForegroundAt(int var1) {
  245.       return ((Page)this.pages.elementAt(var1)).getForeground();
  246.    }
  247.  
  248.    public boolean isEnabledAt(int var1) {
  249.       return ((Page)this.pages.elementAt(var1)).isEnabled();
  250.    }
  251.  
  252.    public Component getComponentAt(int var1) {
  253.       return ((Page)this.pages.elementAt(var1)).component;
  254.    }
  255.  
  256.    public Rectangle getBoundsAt(int var1) {
  257.       return super.ui != null ? ((TabbedPaneUI)super.ui).getTabBounds(this, var1) : null;
  258.    }
  259.  
  260.    public void setTitleAt(int var1, String var2) {
  261.       String var3 = ((Page)this.pages.elementAt(var1)).title;
  262.       ((Page)this.pages.elementAt(var1)).title = var2;
  263.       ((Container)this).invalidate();
  264.       if (var3 != var2 && super.accessibleContext != null) {
  265.          super.accessibleContext.firePropertyChange("AccessibleVisibleData", var3, var2);
  266.       }
  267.  
  268.    }
  269.  
  270.    public void setIconAt(int var1, Icon var2) {
  271.       Icon var3 = ((Page)this.pages.elementAt(var1)).icon;
  272.       ((Page)this.pages.elementAt(var1)).icon = var2;
  273.       ((Container)this).invalidate();
  274.       this.getAccessibleContext();
  275.       if (var3 != var2 && super.accessibleContext != null) {
  276.          super.accessibleContext.firePropertyChange("AccessibleVisibleData", var3, var2);
  277.       }
  278.  
  279.    }
  280.  
  281.    public void setDisabledIconAt(int var1, Icon var2) {
  282.       ((Page)this.pages.elementAt(var1)).disabledIcon = var2;
  283.       if (!this.isEnabledAt(var1)) {
  284.          ((Container)this).invalidate();
  285.       }
  286.  
  287.    }
  288.  
  289.    public void setBackgroundAt(int var1, Color var2) {
  290.       ((Page)this.pages.elementAt(var1)).setBackground(var2);
  291.       ((Component)this).repaint();
  292.    }
  293.  
  294.    public void setForegroundAt(int var1, Color var2) {
  295.       ((Page)this.pages.elementAt(var1)).setForeground(var2);
  296.       ((Component)this).repaint();
  297.    }
  298.  
  299.    public void setEnabledAt(int var1, boolean var2) {
  300.       ((Page)this.pages.elementAt(var1)).setEnabled(var2);
  301.       ((Component)this).repaint();
  302.    }
  303.  
  304.    public void setComponentAt(int var1, Component var2) {
  305.       ((Page)this.pages.elementAt(var1)).component = var2;
  306.       ((Container)this).invalidate();
  307.    }
  308.  
  309.    public int indexOfTab(String var1) {
  310.       for(int var2 = 0; var2 < this.getTabCount(); ++var2) {
  311.          if (this.getTitleAt(var2).equals(var1 == null ? "" : var1)) {
  312.             return var2;
  313.          }
  314.       }
  315.  
  316.       return -1;
  317.    }
  318.  
  319.    public int indexOfTab(Icon var1) {
  320.       for(int var2 = 0; var2 < this.getTabCount(); ++var2) {
  321.          if (this.getIconAt(var2).equals(var1)) {
  322.             return var2;
  323.          }
  324.       }
  325.  
  326.       return -1;
  327.    }
  328.  
  329.    public int indexOfComponent(Component var1) {
  330.       for(int var2 = 0; var2 < this.getTabCount(); ++var2) {
  331.          if (this.getComponentAt(var2).equals(var1)) {
  332.             return var2;
  333.          }
  334.       }
  335.  
  336.       return -1;
  337.    }
  338.  
  339.    public String getToolTipText(MouseEvent var1) {
  340.       if (super.ui != null) {
  341.          int var2 = ((TabbedPaneUI)super.ui).tabForCoordinate(this, var1.getX(), var1.getY());
  342.          if (var2 != -1) {
  343.             return ((Page)this.pages.elementAt(var2)).tip;
  344.          }
  345.       }
  346.  
  347.       return super.getToolTipText(var1);
  348.    }
  349.  
  350.    public AccessibleContext getAccessibleContext() {
  351.       if (super.accessibleContext == null) {
  352.          super.accessibleContext = new AccessibleJTabbedPane(this);
  353.       }
  354.  
  355.       return super.accessibleContext;
  356.    }
  357. }
  358.