home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / JComboBox.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  10.4 KB  |  410 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.swing.event.ListDataEvent;
  6. import com.sun.java.swing.event.ListDataListener;
  7. import com.sun.java.swing.plaf.ComboBoxUI;
  8. import java.awt.Container;
  9. import java.awt.ItemSelectable;
  10. import java.awt.event.ActionEvent;
  11. import java.awt.event.ActionListener;
  12. import java.awt.event.ItemEvent;
  13. import java.awt.event.ItemListener;
  14. import java.awt.event.KeyEvent;
  15. import java.util.Vector;
  16.  
  17. public class JComboBox extends JComponent implements ItemSelectable, ListDataListener, ActionListener, Accessible {
  18.    protected ComboBoxModel dataModel;
  19.    protected ListCellRenderer renderer;
  20.    protected ComboBoxEditor editor;
  21.    protected int maximumRowCount = 8;
  22.    protected boolean isEditable = false;
  23.    protected Object selectedItemReminder;
  24.    protected KeySelectionManager keySelectionManager;
  25.    protected String actionCommand = "comboBoxChanged";
  26.    protected boolean lightWeightPopupEnabled = true;
  27.    // $FF: synthetic field
  28.    static Class class$java$awt$event$ItemListener;
  29.    // $FF: synthetic field
  30.    static Class class$java$awt$event$ActionListener;
  31.  
  32.    public JComboBox(ComboBoxModel var1) {
  33.       this.setModel(var1);
  34.       this.updateUI();
  35.       ((JComponent)this).addAncestorListener(new 1(this));
  36.    }
  37.  
  38.    public JComboBox(Object[] var1) {
  39.       this.setModel(new DefaultComboBoxModel(this, var1));
  40.       this.updateUI();
  41.    }
  42.  
  43.    public JComboBox(Vector var1) {
  44.       this.setModel(new DefaultComboBoxModel(this, var1));
  45.       this.updateUI();
  46.    }
  47.  
  48.    public JComboBox() {
  49.       this.setModel(new DefaultComboBoxModel(this));
  50.       this.updateUI();
  51.    }
  52.  
  53.    public void setUI(ComboBoxUI var1) {
  54.       super.setUI(var1);
  55.    }
  56.  
  57.    public void updateUI() {
  58.       this.setUI((ComboBoxUI)UIManager.getUI(this));
  59.    }
  60.  
  61.    public String getUIClassID() {
  62.       return "ComboBoxUI";
  63.    }
  64.  
  65.    public ComboBoxUI getUI() {
  66.       return (ComboBoxUI)super.ui;
  67.    }
  68.  
  69.    public void setModel(ComboBoxModel var1) {
  70.       ComboBoxModel var2 = this.dataModel;
  71.       if (this.dataModel != null) {
  72.          this.dataModel.removeListDataListener(this);
  73.       }
  74.  
  75.       this.dataModel = var1;
  76.       ((JComponent)this).firePropertyChange("model", var2, this.dataModel);
  77.       this.dataModel.addListDataListener(this);
  78.       ((Container)this).invalidate();
  79.    }
  80.  
  81.    public ComboBoxModel getModel() {
  82.       return this.dataModel;
  83.    }
  84.  
  85.    public void setLightWeightPopupEnabled(boolean var1) {
  86.       this.lightWeightPopupEnabled = var1;
  87.    }
  88.  
  89.    public boolean isLightWeightPopupEnabled() {
  90.       return this.lightWeightPopupEnabled;
  91.    }
  92.  
  93.    public void setEditable(boolean var1) {
  94.       this.isEditable = var1;
  95.       this.getUI().editablePropertyChanged();
  96.    }
  97.  
  98.    public boolean isEditable() {
  99.       return this.isEditable;
  100.    }
  101.  
  102.    public void setMaximumRowCount(int var1) {
  103.       ComboBoxUI var2 = this.getUI();
  104.       this.maximumRowCount = var1;
  105.       var2.maximumRowCountChanged();
  106.    }
  107.  
  108.    public int getMaximumRowCount() {
  109.       return this.maximumRowCount;
  110.    }
  111.  
  112.    public void setRenderer(ListCellRenderer var1) {
  113.       this.renderer = var1;
  114.       ((Container)this).invalidate();
  115.    }
  116.  
  117.    public ListCellRenderer getRenderer() {
  118.       return this.renderer;
  119.    }
  120.  
  121.    public void setEditor(ComboBoxEditor var1) {
  122.       if (this.editor != null) {
  123.          this.editor.removeActionListener(this);
  124.       }
  125.  
  126.       this.editor = var1;
  127.       if (this.editor != null) {
  128.          this.editor.addActionListener(this);
  129.       }
  130.  
  131.       this.getUI().editablePropertyChanged();
  132.    }
  133.  
  134.    public ComboBoxEditor getEditor() {
  135.       return this.editor;
  136.    }
  137.  
  138.    public void setSelectedItem(Object var1) {
  139.       this.dataModel.setSelectedItem(var1);
  140.    }
  141.  
  142.    public Object getSelectedItem() {
  143.       return this.dataModel.getSelectedItem();
  144.    }
  145.  
  146.    public void setSelectedIndex(int var1) {
  147.       int var2 = this.dataModel.getSize();
  148.       if (var1 >= 0 && var1 < var2) {
  149.          this.setSelectedItem(this.dataModel.getElementAt(var1));
  150.       } else {
  151.          throw new IllegalArgumentException("setSelectedIndex: " + var1 + " out of bounds");
  152.       }
  153.    }
  154.  
  155.    public int getSelectedIndex() {
  156.       Object var1 = this.dataModel.getSelectedItem();
  157.       int var2 = 0;
  158.  
  159.       for(int var3 = this.dataModel.getSize(); var2 < var3; ++var2) {
  160.          Object var4 = this.dataModel.getElementAt(var2);
  161.          if (var4.equals(var1)) {
  162.             return var2;
  163.          }
  164.       }
  165.  
  166.       return -1;
  167.    }
  168.  
  169.    public void addItem(Object var1) {
  170.       this.checkDefaultComboBoxModel();
  171.       ((DefaultComboBoxModel)this.dataModel).addObject(var1);
  172.    }
  173.  
  174.    public void insertItemAt(Object var1, int var2) {
  175.       this.checkDefaultComboBoxModel();
  176.       ((DefaultComboBoxModel)this.dataModel).insertObjectAt(var1, var2);
  177.    }
  178.  
  179.    public void removeItem(Object var1) {
  180.       this.checkDefaultComboBoxModel();
  181.       int var2 = ((DefaultComboBoxModel)this.dataModel).getIndexOf(var1);
  182.       ((DefaultComboBoxModel)this.dataModel).removeObject(var1);
  183.       if (!this.isEditable() && this.dataModel.getSize() > 0 && var2 < this.dataModel.getSize()) {
  184.          this.setSelectedIndex(var2);
  185.       }
  186.  
  187.    }
  188.  
  189.    public void removeItemAt(int var1) {
  190.       this.checkDefaultComboBoxModel();
  191.       ((DefaultComboBoxModel)this.dataModel).removeObjectAt(var1);
  192.    }
  193.  
  194.    public void removeAllItems() {
  195.       this.checkDefaultComboBoxModel();
  196.       ((DefaultComboBoxModel)this.dataModel).removeAllObjects();
  197.       if (!this.isEditable()) {
  198.          this.setSelectedItem((Object)null);
  199.       }
  200.  
  201.    }
  202.  
  203.    void checkDefaultComboBoxModel() {
  204.       if (!(this.dataModel instanceof DefaultComboBoxModel)) {
  205.          throw new InternalError("Cannot use this method with a custom data model.");
  206.       }
  207.    }
  208.  
  209.    public void showPopup() {
  210.       this.getUI().showPopup();
  211.    }
  212.  
  213.    public void hidePopup() {
  214.       this.getUI().hidePopup();
  215.    }
  216.  
  217.    public void addItemListener(ItemListener var1) {
  218.       super.listenerList.add(class$java$awt$event$ItemListener != null ? class$java$awt$event$ItemListener : (class$java$awt$event$ItemListener = JComponent.class$("java.awt.event.ItemListener")), var1);
  219.    }
  220.  
  221.    public void removeItemListener(ItemListener var1) {
  222.       super.listenerList.remove(class$java$awt$event$ItemListener != null ? class$java$awt$event$ItemListener : (class$java$awt$event$ItemListener = JComponent.class$("java.awt.event.ItemListener")), var1);
  223.    }
  224.  
  225.    public void addActionListener(ActionListener var1) {
  226.       super.listenerList.add(class$java$awt$event$ActionListener != null ? class$java$awt$event$ActionListener : (class$java$awt$event$ActionListener = JComponent.class$("java.awt.event.ActionListener")), var1);
  227.    }
  228.  
  229.    public void removeActionListener(ActionListener var1) {
  230.       super.listenerList.remove(class$java$awt$event$ActionListener != null ? class$java$awt$event$ActionListener : (class$java$awt$event$ActionListener = JComponent.class$("java.awt.event.ActionListener")), var1);
  231.    }
  232.  
  233.    public void setActionCommand(String var1) {
  234.       this.actionCommand = var1;
  235.    }
  236.  
  237.    public String getActionCommand() {
  238.       return this.actionCommand;
  239.    }
  240.  
  241.    protected void fireItemStateChanged(ItemEvent var1) {
  242.       Object[] var2 = super.listenerList.getListenerList();
  243.  
  244.       for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
  245.          if (var2[var3] == (class$java$awt$event$ItemListener != null ? class$java$awt$event$ItemListener : (class$java$awt$event$ItemListener = JComponent.class$("java.awt.event.ItemListener")))) {
  246.             ((ItemListener)var2[var3 + 1]).itemStateChanged(var1);
  247.          }
  248.       }
  249.  
  250.    }
  251.  
  252.    protected void fireActionEvent() {
  253.       ActionEvent var1 = null;
  254.       Object[] var2 = super.listenerList.getListenerList();
  255.  
  256.       for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
  257.          if (var2[var3] == (class$java$awt$event$ActionListener != null ? class$java$awt$event$ActionListener : (class$java$awt$event$ActionListener = JComponent.class$("java.awt.event.ActionListener")))) {
  258.             if (var1 == null) {
  259.                var1 = new ActionEvent(this, 1001, this.getActionCommand());
  260.             }
  261.  
  262.             ((ActionListener)var2[var3 + 1]).actionPerformed(var1);
  263.          }
  264.       }
  265.  
  266.    }
  267.  
  268.    protected void selectedItemChanged() {
  269.       if (this.selectedItemReminder != null) {
  270.          this.fireItemStateChanged(new ItemEvent(this, 701, this.selectedItemReminder, 2));
  271.       }
  272.  
  273.       this.selectedItemReminder = this.getModel().getSelectedItem();
  274.       if (this.selectedItemReminder != null) {
  275.          this.fireItemStateChanged(new ItemEvent(this, 701, this.selectedItemReminder, 1));
  276.       }
  277.  
  278.       this.fireActionEvent();
  279.    }
  280.  
  281.    public Object[] getSelectedObjects() {
  282.       Object var1 = this.getSelectedItem();
  283.       if (var1 == null) {
  284.          return new Object[0];
  285.       } else {
  286.          Object[] var2 = new Object[]{var1};
  287.          return var2;
  288.       }
  289.    }
  290.  
  291.    public void actionPerformed(ActionEvent var1) {
  292.       Object var2 = this.getEditor().getItem();
  293.       this.getModel().setSelectedItem(var2);
  294.       this.getUI().hidePopup();
  295.    }
  296.  
  297.    public void contentsChanged(ListDataEvent var1) {
  298.       ComboBoxModel var2 = this.getModel();
  299.       Object var3 = var2.getSelectedItem();
  300.       if (!this.isEditable() && var2 instanceof DefaultComboBoxModel && var3 == null && this.getModel().getSize() > 0) {
  301.          this.setSelectedIndex(0);
  302.       } else if (this.selectedItemReminder == null) {
  303.          if (var3 != null) {
  304.             this.selectedItemChanged();
  305.          }
  306.       } else if (!this.selectedItemReminder.equals(var3)) {
  307.          this.selectedItemChanged();
  308.       }
  309.  
  310.       if (!this.isEditable() && var3 != null) {
  311.          boolean var6 = true;
  312.          Object var8 = var2.getSelectedItem();
  313.          int var4 = 0;
  314.  
  315.          for(int var5 = var2.getSize(); var4 < var5; ++var4) {
  316.             Object var7 = var2.getElementAt(var4);
  317.             if (var7.equals(var8)) {
  318.                var6 = false;
  319.                break;
  320.             }
  321.          }
  322.  
  323.          if (var6) {
  324.             if (var2.getSize() > 0) {
  325.                this.setSelectedIndex(0);
  326.                return;
  327.             }
  328.  
  329.             this.setSelectedItem((Object)null);
  330.          }
  331.       }
  332.  
  333.    }
  334.  
  335.    public boolean selectWithKeyChar(char var1) {
  336.       if (this.keySelectionManager == null) {
  337.          this.keySelectionManager = this.createDefaultKeySelectionManager();
  338.       }
  339.  
  340.       int var2 = this.keySelectionManager.selectionForKey(var1, this.getModel());
  341.       if (var2 != -1) {
  342.          this.setSelectedIndex(var2);
  343.          return true;
  344.       } else {
  345.          return false;
  346.       }
  347.    }
  348.  
  349.    public void intervalAdded(ListDataEvent var1) {
  350.       this.contentsChanged(var1);
  351.    }
  352.  
  353.    public void intervalRemoved(ListDataEvent var1) {
  354.       this.contentsChanged(var1);
  355.    }
  356.  
  357.    public void setEnabled(boolean var1) {
  358.       super.setEnabled(var1);
  359.       this.getUI().enablePropertyChanged();
  360.    }
  361.  
  362.    public void configureEditor(ComboBoxEditor var1, Object var2) {
  363.       var1.setItem(var2);
  364.    }
  365.  
  366.    public void processKeyEvent(KeyEvent var1) {
  367.       if (var1.getKeyCode() == 9) {
  368.          this.hidePopup();
  369.       }
  370.  
  371.       super.processKeyEvent(var1);
  372.    }
  373.  
  374.    public boolean isFocusTraversable() {
  375.       return this.getUI().isFocusTraversable();
  376.    }
  377.  
  378.    public void setKeySelectionManager(KeySelectionManager var1) {
  379.       this.keySelectionManager = var1;
  380.    }
  381.  
  382.    public KeySelectionManager getKeySelectionManager() {
  383.       return this.keySelectionManager;
  384.    }
  385.  
  386.    public int getItemCount() {
  387.       return this.dataModel.getSize();
  388.    }
  389.  
  390.    public Object getItemAt(int var1) {
  391.       return this.dataModel.getElementAt(var1);
  392.    }
  393.  
  394.    protected KeySelectionManager createDefaultKeySelectionManager() {
  395.       return new DefaultKeySelectionManager(this);
  396.    }
  397.  
  398.    public boolean isOpaque() {
  399.       return true;
  400.    }
  401.  
  402.    public AccessibleContext getAccessibleContext() {
  403.       if (super.accessibleContext == null) {
  404.          super.accessibleContext = new AccessibleJComboBox(this);
  405.       }
  406.  
  407.       return super.accessibleContext;
  408.    }
  409. }
  410.