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