home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 144 / DPCS0200.iso / Internet / Supanet / system / swing.jar / javax / swing / JComboBox.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-05  |  11.3 KB  |  460 lines

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