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

  1. package com.sun.java.swing.plaf.basic;
  2.  
  3. import com.sun.java.swing.Icon;
  4. import com.sun.java.swing.JComboBox;
  5. import com.sun.java.swing.JComponent;
  6. import com.sun.java.swing.JList;
  7. import com.sun.java.swing.JOptionPane;
  8. import com.sun.java.swing.JScrollPane;
  9. import com.sun.java.swing.JTextField;
  10. import com.sun.java.swing.LookAndFeel;
  11. import com.sun.java.swing.UIManager;
  12. import com.sun.java.swing.plaf.ComponentUI;
  13. import com.sun.java.swing.text.JTextComponent;
  14. import java.awt.Component;
  15. import java.awt.Container;
  16. import java.awt.Dimension;
  17. import java.awt.Insets;
  18. import java.awt.LayoutManager;
  19. import java.beans.PropertyChangeEvent;
  20. import java.beans.PropertyChangeListener;
  21. import java.util.EventObject;
  22.  
  23. public class BasicOptionPaneUI extends AbstractOptionPaneUI implements PropertyChangeListener {
  24.    public static final int MIN_WIDTH = 262;
  25.    public static final int MIN_HEIGHT = 90;
  26.    public static final String[] yesNoOptions = new String[]{"Yes", "No"};
  27.    public static final String[] yesNoCancelOptions = new String[]{"Yes", "No", "Cancel"};
  28.    public static final String[] defaultOptions = new String[]{"OK"};
  29.    public static final String[] okCancelOptions = new String[]{"OK", "Cancel"};
  30.    protected JOptionPane optionPane;
  31.    protected JComponent inputComponent;
  32.    protected PropertyChangeListener propListener;
  33.  
  34.    public static ComponentUI createUI(JComponent var0) {
  35.       return new BasicOptionPaneUI();
  36.    }
  37.  
  38.    public void installUI(JComponent var1) {
  39.       this.optionPane = (JOptionPane)var1;
  40.       this.installDefaults(var1);
  41.       Dimension var2 = this.getMinimumOptionPaneSize();
  42.       if (var2 != null) {
  43.          this.optionPane.setMinimumSize(var2);
  44.       }
  45.  
  46.       ((AbstractOptionPaneUI)this).validateComponent();
  47.       var1.setOpaque(true);
  48.       this.installListeners(var1);
  49.    }
  50.  
  51.    public void uninstallUI(JComponent var1) {
  52.       if ((JOptionPane)var1 == this.optionPane) {
  53.          ((AbstractOptionPaneUI)this).emptyContainer(this.optionPane);
  54.          this.uninstallListeners(var1);
  55.          this.uninstallDefaults(var1);
  56.          this.optionPane = null;
  57.       }
  58.  
  59.    }
  60.  
  61.    protected void installDefaults(JComponent var1) {
  62.       LookAndFeel.installColorsAndFont(var1, "OptionPane.background", "OptionPane.foreground", "OptionPane.font");
  63.       LookAndFeel.installBorder(var1, "OptionPane.border");
  64.    }
  65.  
  66.    protected void uninstallDefaults(JComponent var1) {
  67.       LookAndFeel.uninstallBorder(var1);
  68.    }
  69.  
  70.    protected void installListeners(JComponent var1) {
  71.       if ((this.propListener = this.createPropertyChangeListener(var1)) != null) {
  72.          this.optionPane.addPropertyChangeListener(this.propListener);
  73.       }
  74.  
  75.    }
  76.  
  77.    protected void uninstallListeners(JComponent var1) {
  78.       if (this.propListener != null) {
  79.          this.optionPane.removePropertyChangeListener(this.propListener);
  80.          this.propListener = null;
  81.       }
  82.  
  83.    }
  84.  
  85.    protected PropertyChangeListener createPropertyChangeListener(JComponent var1) {
  86.       return this;
  87.    }
  88.  
  89.    public void propertyChange(PropertyChangeEvent var1) {
  90.       if (((EventObject)var1).getSource() == this.optionPane) {
  91.          String var2 = var1.getPropertyName();
  92.          if (var2.equals("options") || var2.equals("initialValue") || var2.equals("icon") || var2.equals("messageType") || var2.equals("optionType") || var2.equals("message") || var2.equals("selectionValues") || var2.equals("initialSelectionValue") || var2.equals("wantsInput")) {
  93.             ((AbstractOptionPaneUI)this).validateComponent();
  94.          }
  95.       }
  96.  
  97.    }
  98.  
  99.    public Icon getIcon() {
  100.       Icon var1 = this.optionPane == null ? null : this.optionPane.getIcon();
  101.       if (var1 == null && this.optionPane != null) {
  102.          var1 = this.getIconForType(this.optionPane.getMessageType());
  103.       }
  104.  
  105.       return var1;
  106.    }
  107.  
  108.    public Icon getIconForType(int var1) {
  109.       if (var1 >= 0 && var1 <= 3) {
  110.          switch (var1) {
  111.             case 0:
  112.                return UIManager.getIcon("OptionPane.errorIcon");
  113.             case 1:
  114.                return UIManager.getIcon("OptionPane.informationIcon");
  115.             case 2:
  116.                return UIManager.getIcon("OptionPane.warningIcon");
  117.             case 3:
  118.                return UIManager.getIcon("OptionPane.questionIcon");
  119.             default:
  120.                return null;
  121.          }
  122.       } else {
  123.          return null;
  124.       }
  125.    }
  126.  
  127.    public int getMaxCharactersPerLineCount() {
  128.       return this.optionPane.getMaxCharactersPerLineCount();
  129.    }
  130.  
  131.    public Object getMessage() {
  132.       this.inputComponent = null;
  133.       if (this.optionPane != null) {
  134.          if (!this.optionPane.getWantsInput()) {
  135.             return this.optionPane.getMessage();
  136.          } else {
  137.             Object var1 = this.optionPane.getMessage();
  138.             Object[] var2 = this.optionPane.getSelectionValues();
  139.             Object var3 = this.optionPane.getInitialSelectionValue();
  140.             Object var4;
  141.             if (var2 != null) {
  142.                if (var2.length < 20) {
  143.                   JComboBox var5 = new JComboBox();
  144.                   int var6 = 0;
  145.  
  146.                   for(int var7 = var2.length; var6 < var7; ++var6) {
  147.                      var5.addItem(var2[var6]);
  148.                   }
  149.  
  150.                   if (var3 != null) {
  151.                      var5.setSelectedItem(var3);
  152.                   }
  153.  
  154.                   this.inputComponent = var5;
  155.                   var4 = var5;
  156.                } else {
  157.                   JList var8 = new JList(var2);
  158.                   JScrollPane var11 = new JScrollPane(var8);
  159.                   var8.setVisibleRowCount(10);
  160.                   if (var3 != null) {
  161.                      var8.setSelectedValue(var3, true);
  162.                   }
  163.  
  164.                   ((Component)var8).addMouseListener(new ListSelectionListener(this));
  165.                   var4 = var11;
  166.                   this.inputComponent = var8;
  167.                }
  168.             } else {
  169.                JTextField var9 = new JTextField(20);
  170.                if (var3 != null) {
  171.                   ((JTextComponent)var9).setText(var3.toString());
  172.                }
  173.  
  174.                var9.addActionListener(new TextFieldActionListener(this));
  175.                var4 = this.inputComponent = var9;
  176.             }
  177.  
  178.             Object[] var10;
  179.             if (var1 == null) {
  180.                var10 = new Object[]{var4};
  181.             } else {
  182.                var10 = new Object[]{var1, var4};
  183.             }
  184.  
  185.             return var10;
  186.          }
  187.       } else {
  188.          return null;
  189.       }
  190.    }
  191.  
  192.    public Object[] getButtons() {
  193.       if (this.optionPane != null) {
  194.          Object[] var1 = this.optionPane.getOptions();
  195.          if (var1 == null) {
  196.             int var2 = this.optionPane.getOptionType();
  197.             if (var2 == 0) {
  198.                return yesNoOptions;
  199.             } else if (var2 == 1) {
  200.                return yesNoCancelOptions;
  201.             } else {
  202.                return var2 == 2 ? okCancelOptions : defaultOptions;
  203.             }
  204.          } else {
  205.             return var1;
  206.          }
  207.       } else {
  208.          return null;
  209.       }
  210.    }
  211.  
  212.    public Container getContainer() {
  213.       return this.optionPane;
  214.    }
  215.  
  216.    public int getInitialIndex() {
  217.       if (this.optionPane != null) {
  218.          Object var1 = this.optionPane.getInitialValue();
  219.          Object[] var2 = this.optionPane.getOptions();
  220.          if (var2 == null) {
  221.             return 0;
  222.          }
  223.  
  224.          if (var1 != null) {
  225.             for(int var3 = var2.length - 1; var3 >= 0; --var3) {
  226.                if (var2[var3].equals(var1)) {
  227.                   return var3;
  228.                }
  229.             }
  230.          }
  231.       }
  232.  
  233.       return -1;
  234.    }
  235.  
  236.    protected void resetInputValue() {
  237.       if (this.inputComponent != null && this.inputComponent instanceof JTextField) {
  238.          this.optionPane.setInputValue(((JTextField)this.inputComponent).getText());
  239.       } else if (this.inputComponent != null && this.inputComponent instanceof JComboBox) {
  240.          this.optionPane.setInputValue(((JComboBox)this.inputComponent).getSelectedItem());
  241.       } else {
  242.          if (this.inputComponent != null) {
  243.             this.optionPane.setInputValue(((JList)this.inputComponent).getSelectedValue());
  244.          }
  245.  
  246.       }
  247.    }
  248.  
  249.    public void createdButtonFired(int var1) {
  250.       if (this.optionPane != null) {
  251.          Object[] var2 = this.optionPane.getOptions();
  252.          if (var2 == null) {
  253.             int var3 = this.optionPane.getOptionType();
  254.             if (this.inputComponent != null && (var3 == 0 || var3 == 1 || var3 == 2) && var1 == 0) {
  255.                this.resetInputValue();
  256.             }
  257.  
  258.             if (var3 == 2 && var1 == 1) {
  259.                this.optionPane.setValue(new Integer(2));
  260.                return;
  261.             }
  262.  
  263.             this.optionPane.setValue(new Integer(var1));
  264.             return;
  265.          }
  266.  
  267.          this.optionPane.setValue(var2[var1]);
  268.       }
  269.  
  270.    }
  271.  
  272.    public Dimension getMinimumOptionPaneSize() {
  273.       return new Dimension(262, 90);
  274.    }
  275.  
  276.    public Dimension getPreferredSize(JComponent var1) {
  277.       if ((JOptionPane)var1 == this.optionPane) {
  278.          Dimension var2 = this.getMinimumOptionPaneSize();
  279.          LayoutManager var3 = ((Container)var1).getLayout();
  280.          if (var3 != null) {
  281.             Dimension var4 = var3.preferredLayoutSize(var1);
  282.             return var2 != null ? new Dimension(Math.max(var4.width, var2.width), Math.max(var4.height, var2.height)) : var4;
  283.          } else {
  284.             return var2;
  285.          }
  286.       } else {
  287.          return null;
  288.       }
  289.    }
  290.  
  291.    public Dimension getMinimumSize(JComponent var1) {
  292.       return this.getPreferredSize(var1);
  293.    }
  294.  
  295.    public Dimension getMaximumSize(JComponent var1) {
  296.       return this.getPreferredSize(var1);
  297.    }
  298.  
  299.    public Insets getInsets(JComponent var1) {
  300.       return null;
  301.    }
  302.  
  303.    public boolean getSizeButtonsToSameWidth() {
  304.       return true;
  305.    }
  306.  
  307.    public void selectInitialValue() {
  308.       if (this.inputComponent != null) {
  309.          this.inputComponent.requestFocus();
  310.       } else {
  311.          super.selectInitialValue();
  312.       }
  313.    }
  314. }
  315.