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

  1. package javax.swing.plaf.metal;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import java.awt.Dimension;
  6. import java.awt.Graphics;
  7. import java.awt.Insets;
  8. import java.awt.LayoutManager;
  9. import java.awt.event.FocusListener;
  10. import java.beans.PropertyChangeEvent;
  11. import java.beans.PropertyChangeListener;
  12. import javax.swing.AbstractButton;
  13. import javax.swing.ComboBoxEditor;
  14. import javax.swing.JButton;
  15. import javax.swing.JComboBox;
  16. import javax.swing.JComponent;
  17. import javax.swing.KeyStroke;
  18. import javax.swing.plaf.ComponentUI;
  19. import javax.swing.plaf.basic.BasicComboBoxUI;
  20. import javax.swing.plaf.basic.ComboPopup;
  21.  
  22. public class MetalComboBoxUI extends BasicComboBoxUI {
  23.    FocusListener focusDelegator;
  24.  
  25.    public void configureArrowButton() {
  26.       if (super.arrowButton != null) {
  27.          super.arrowButton.setRequestFocusEnabled(!super.comboBox.isEditable() && super.comboBox.isEnabled());
  28.          if (super.keyListener != null) {
  29.             super.arrowButton.addKeyListener(super.keyListener);
  30.          }
  31.  
  32.          if (super.popupKeyListener != null) {
  33.             super.arrowButton.addKeyListener(super.popupKeyListener);
  34.          }
  35.  
  36.          if (super.focusListener != null) {
  37.             super.arrowButton.addFocusListener(super.focusListener);
  38.          }
  39.  
  40.          if (super.popupMouseListener != null) {
  41.             super.arrowButton.addMouseListener(super.popupMouseListener);
  42.          }
  43.  
  44.          if (super.popupMouseMotionListener != null) {
  45.             super.arrowButton.addMouseMotionListener(super.popupMouseMotionListener);
  46.          }
  47.       }
  48.  
  49.    }
  50.  
  51.    public void configureEditor() {
  52.       super.configureEditor();
  53.       if (super.popupKeyListener != null) {
  54.          super.editor.removeKeyListener(super.popupKeyListener);
  55.       }
  56.  
  57.       if (super.focusListener != null) {
  58.          super.editor.addFocusListener(super.focusListener);
  59.       }
  60.  
  61.    }
  62.  
  63.    protected JButton createArrowButton() {
  64.       MetalComboBoxButton var1 = new MetalComboBoxButton(super.comboBox, new MetalComboBoxIcon(), super.comboBox.isEditable(), super.currentValuePane, super.listBox);
  65.       ((AbstractButton)var1).setMargin(new Insets(0, 1, 1, 3));
  66.       return var1;
  67.    }
  68.  
  69.    protected ComboBoxEditor createEditor() {
  70.       return new MetalComboBoxEditor.UIResource();
  71.    }
  72.  
  73.    FocusListener createFocusDelegator() {
  74.       return new FocusDelegator(this);
  75.    }
  76.  
  77.    protected LayoutManager createLayoutManager() {
  78.       return new MetalComboBoxLayoutManager(this);
  79.    }
  80.  
  81.    protected ComboPopup createPopup() {
  82.       return new MetalComboPopup(this, super.comboBox);
  83.    }
  84.  
  85.    public PropertyChangeListener createPropertyChangeListener() {
  86.       return new MetalPropertyChangeListener(this);
  87.    }
  88.  
  89.    public static ComponentUI createUI(JComponent var0) {
  90.       return new MetalComboBoxUI();
  91.    }
  92.  
  93.    protected void editablePropertyChanged(PropertyChangeEvent var1) {
  94.       if (super.arrowButton instanceof MetalComboBoxButton) {
  95.          MetalComboBoxButton var2 = (MetalComboBoxButton)super.arrowButton;
  96.          var2.setIconOnly(super.comboBox.isEditable());
  97.          ((JComponent)var2).setRequestFocusEnabled(!super.comboBox.isEditable() && super.comboBox.isEnabled());
  98.          super.comboBox.repaint();
  99.       }
  100.  
  101.    }
  102.  
  103.    void enabledPropertyChanged(PropertyChangeEvent var1) {
  104.       if (super.arrowButton instanceof MetalComboBoxButton) {
  105.          super.arrowButton.setRequestFocusEnabled(!super.comboBox.isEditable() && super.comboBox.isEnabled());
  106.          super.comboBox.repaint();
  107.       }
  108.  
  109.    }
  110.  
  111.    JButton getArrowButton() {
  112.       return super.arrowButton;
  113.    }
  114.  
  115.    public Dimension getMinimumSize(JComponent var1) {
  116.       if (!super.isMinimumSizeDirty) {
  117.          return new Dimension(super.cachedMinimumSize);
  118.       } else {
  119.          Object var2 = null;
  120.          Dimension var6;
  121.          if (!super.comboBox.isEditable() && super.arrowButton != null && super.arrowButton instanceof MetalComboBoxButton) {
  122.             MetalComboBoxButton var7 = (MetalComboBoxButton)super.arrowButton;
  123.             Insets var8 = ((JComponent)var7).getInsets();
  124.             Insets var9 = super.comboBox.getInsets();
  125.             var6 = ((BasicComboBoxUI)this).getDisplaySize();
  126.             var6.width += var9.left + var9.right;
  127.             var6.width += var8.left + var8.right;
  128.             var6.width += var8.right + var7.getComboIcon().getIconWidth();
  129.             var6.height += var9.top + var9.bottom;
  130.             var6.height += var8.top + var8.bottom;
  131.          } else if (super.comboBox.isEditable() && super.arrowButton != null && super.editor != null) {
  132.             var6 = super.getMinimumSize(var1);
  133.             Insets var3 = super.arrowButton.getMargin();
  134.             Insets var4 = super.comboBox.getInsets();
  135.             if (super.editor instanceof JComponent) {
  136.                Insets var5 = ((JComponent)super.editor).getInsets();
  137.                var6.height += var5.top + var5.bottom;
  138.             }
  139.  
  140.             var6.height += var3.top + var3.bottom;
  141.             var6.height += var4.top + var4.bottom;
  142.          } else {
  143.             var6 = super.getMinimumSize(var1);
  144.          }
  145.  
  146.          super.cachedMinimumSize.setSize(var6.width, var6.height);
  147.          super.isMinimumSizeDirty = false;
  148.          return new Dimension(super.cachedMinimumSize);
  149.       }
  150.    }
  151.  
  152.    protected void installKeyboardActions() {
  153.       super.installKeyboardActions();
  154.       1 var1 = new 1(this);
  155.       this.metalGetComboBox().registerKeyboardAction(var1, KeyStroke.getKeyStroke(40, 0), 1);
  156.       2 var2 = new 2(this);
  157.       this.metalGetComboBox().registerKeyboardAction(var2, KeyStroke.getKeyStroke(40, 8), 1);
  158.       this.metalGetComboBox().registerKeyboardAction(var2, KeyStroke.getKeyStroke(38, 8), 1);
  159.       3 var3 = new 3(this);
  160.       this.metalGetComboBox().registerKeyboardAction(var3, KeyStroke.getKeyStroke(38, 0), 1);
  161.    }
  162.  
  163.    protected void installListeners() {
  164.       if ((super.itemListener = ((BasicComboBoxUI)this).createItemListener()) != null) {
  165.          super.comboBox.addItemListener(super.itemListener);
  166.       }
  167.  
  168.       if ((super.propertyChangeListener = this.createPropertyChangeListener()) != null) {
  169.          super.comboBox.addPropertyChangeListener(super.propertyChangeListener);
  170.       }
  171.  
  172.       super.keyListener = ((BasicComboBoxUI)this).createKeyListener();
  173.       super.focusListener = ((BasicComboBoxUI)this).createFocusListener();
  174.       super.popupKeyListener = super.popup.getKeyListener();
  175.       super.popupMouseListener = super.popup.getMouseListener();
  176.       super.popupMouseMotionListener = super.popup.getMouseMotionListener();
  177.       if (super.comboBox.getModel() != null && (super.listDataListener = ((BasicComboBoxUI)this).createListDataListener()) != null) {
  178.          super.comboBox.getModel().addListDataListener(super.listDataListener);
  179.       }
  180.  
  181.       if ((this.focusDelegator = this.createFocusDelegator()) != null) {
  182.          super.comboBox.addFocusListener(this.focusDelegator);
  183.       }
  184.  
  185.    }
  186.  
  187.    public void installUI(JComponent var1) {
  188.       super.installUI(var1);
  189.       super.comboBox.setRequestFocusEnabled(true);
  190.    }
  191.  
  192.    public boolean isFocusTraversable(JComboBox var1) {
  193.       return false;
  194.    }
  195.  
  196.    boolean isPopupVisible() {
  197.       return super.isPopupVisible(super.comboBox);
  198.    }
  199.  
  200.    public void layoutComboBox(Container var1, MetalComboBoxLayoutManager var2) {
  201.       if (super.comboBox.isEditable()) {
  202.          var2.superLayout(var1);
  203.       } else if (super.arrowButton != null) {
  204.          Insets var3 = super.comboBox.getInsets();
  205.          int var4 = super.comboBox.getWidth();
  206.          int var5 = super.comboBox.getHeight();
  207.          super.arrowButton.setBounds(var3.left, var3.top, var4 - (var3.left + var3.right), var5 - (var3.top + var3.bottom));
  208.       }
  209.  
  210.    }
  211.  
  212.    JButton metalGetArrowButton() {
  213.       return super.arrowButton;
  214.    }
  215.  
  216.    JComboBox metalGetComboBox() {
  217.       return super.comboBox;
  218.    }
  219.  
  220.    Component metalGetEditor() {
  221.       return super.editor;
  222.    }
  223.  
  224.    public void paint(Graphics var1, JComponent var2) {
  225.    }
  226.  
  227.    protected void removeListeners() {
  228.       if (super.itemListener != null) {
  229.          super.comboBox.removeItemListener(super.itemListener);
  230.       }
  231.  
  232.       if (super.propertyChangeListener != null) {
  233.          super.comboBox.removePropertyChangeListener(super.propertyChangeListener);
  234.       }
  235.  
  236.    }
  237.  
  238.    protected void selectNextPossibleValue() {
  239.       super.selectNextPossibleValue();
  240.    }
  241.  
  242.    protected void selectPreviousPossibleValue() {
  243.       super.selectPreviousPossibleValue();
  244.    }
  245.  
  246.    void togglePopup() {
  247.       ((BasicComboBoxUI)this).toggleOpenClose();
  248.    }
  249.  
  250.    public void unconfigureArrowButton() {
  251.       if (super.arrowButton != null) {
  252.          super.unconfigureArrowButton();
  253.          if (super.keyListener != null) {
  254.             super.arrowButton.removeKeyListener(super.keyListener);
  255.          }
  256.  
  257.          if (super.popupKeyListener != null) {
  258.             super.arrowButton.removeKeyListener(super.popupKeyListener);
  259.          }
  260.  
  261.          if (super.focusListener != null) {
  262.             super.arrowButton.removeFocusListener(super.focusListener);
  263.          }
  264.       }
  265.  
  266.    }
  267.  
  268.    public void unconfigureEditor() {
  269.       super.unconfigureEditor();
  270.       if (super.focusListener != null) {
  271.          super.editor.removeFocusListener(super.focusListener);
  272.       }
  273.  
  274.    }
  275.  
  276.    protected void uninstallKeyboardActions() {
  277.       super.uninstallKeyboardActions();
  278.       super.comboBox.unregisterKeyboardAction(KeyStroke.getKeyStroke(40, 0));
  279.       super.comboBox.unregisterKeyboardAction(KeyStroke.getKeyStroke(40, 8));
  280.       super.comboBox.unregisterKeyboardAction(KeyStroke.getKeyStroke(38, 0));
  281.       super.comboBox.unregisterKeyboardAction(KeyStroke.getKeyStroke(38, 8));
  282.    }
  283.  
  284.    protected void uninstallListeners() {
  285.       if (super.itemListener != null) {
  286.          super.comboBox.removeItemListener(super.itemListener);
  287.       }
  288.  
  289.       if (super.propertyChangeListener != null) {
  290.          super.comboBox.removePropertyChangeListener(super.propertyChangeListener);
  291.       }
  292.  
  293.       if (super.comboBox.getModel() != null && super.listDataListener != null) {
  294.          super.comboBox.getModel().removeListDataListener(super.listDataListener);
  295.       }
  296.  
  297.       if (this.focusDelegator != null) {
  298.          super.comboBox.removeFocusListener(this.focusDelegator);
  299.       }
  300.  
  301.    }
  302.  
  303.    public void uninstallUI(JComponent var1) {
  304.       super.uninstallUI(var1);
  305.    }
  306. }
  307.