home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / plaf / basic / BasicOptionPaneUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  11.6 KB  |  559 lines

  1. package javax.swing.plaf.basic;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Dimension;
  7. import java.awt.GridBagConstraints;
  8. import java.awt.GridBagLayout;
  9. import java.awt.Insets;
  10. import java.awt.LayoutManager;
  11. import java.awt.event.ActionListener;
  12. import java.beans.PropertyChangeListener;
  13. import javax.swing.AbstractButton;
  14. import javax.swing.ActionMap;
  15. import javax.swing.Box;
  16. import javax.swing.BoxLayout;
  17. import javax.swing.Icon;
  18. import javax.swing.InputMap;
  19. import javax.swing.JButton;
  20. import javax.swing.JComboBox;
  21. import javax.swing.JComponent;
  22. import javax.swing.JLabel;
  23. import javax.swing.JList;
  24. import javax.swing.JOptionPane;
  25. import javax.swing.JPanel;
  26. import javax.swing.JRootPane;
  27. import javax.swing.JScrollPane;
  28. import javax.swing.JTextField;
  29. import javax.swing.LookAndFeel;
  30. import javax.swing.SwingUtilities;
  31. import javax.swing.UIManager;
  32. import javax.swing.plaf.ActionMapUIResource;
  33. import javax.swing.plaf.ComponentUI;
  34. import javax.swing.plaf.OptionPaneUI;
  35. import javax.swing.text.JTextComponent;
  36.  
  37. public class BasicOptionPaneUI extends OptionPaneUI {
  38.    public static final int MinimumWidth = 262;
  39.    public static final int MinimumHeight = 90;
  40.    protected JOptionPane optionPane;
  41.    protected Dimension minimumSize;
  42.    protected JComponent inputComponent;
  43.    protected Component initialFocusComponent;
  44.    protected boolean hasCustomComponents;
  45.    protected PropertyChangeListener propertyChangeListener;
  46.  
  47.    public static ComponentUI createUI(JComponent var0) {
  48.       return new BasicOptionPaneUI();
  49.    }
  50.  
  51.    public void installUI(JComponent var1) {
  52.       this.optionPane = (JOptionPane)var1;
  53.       this.installDefaults();
  54.       this.optionPane.setLayout(this.createLayoutManager());
  55.       this.installComponents();
  56.       this.installListeners();
  57.       this.installKeyboardActions();
  58.    }
  59.  
  60.    public void uninstallUI(JComponent var1) {
  61.       this.uninstallComponents();
  62.       this.optionPane.setLayout((LayoutManager)null);
  63.       this.uninstallKeyboardActions();
  64.       this.uninstallListeners();
  65.       this.uninstallDefaults();
  66.       this.optionPane = null;
  67.    }
  68.  
  69.    protected void installDefaults() {
  70.       LookAndFeel.installColorsAndFont(this.optionPane, "OptionPane.background", "OptionPane.foreground", "OptionPane.font");
  71.       LookAndFeel.installBorder(this.optionPane, "OptionPane.border");
  72.       this.minimumSize = UIManager.getDimension("OptionPane.minimumSize");
  73.       this.optionPane.setOpaque(true);
  74.    }
  75.  
  76.    protected void uninstallDefaults() {
  77.       LookAndFeel.uninstallBorder(this.optionPane);
  78.    }
  79.  
  80.    protected void installComponents() {
  81.       this.optionPane.add(this.createMessageArea());
  82.       Container var1 = this.createSeparator();
  83.       if (var1 != null) {
  84.          this.optionPane.add(var1);
  85.       }
  86.  
  87.       this.optionPane.add(this.createButtonArea());
  88.    }
  89.  
  90.    protected void uninstallComponents() {
  91.       this.hasCustomComponents = false;
  92.       this.inputComponent = null;
  93.       this.initialFocusComponent = null;
  94.       this.optionPane.removeAll();
  95.    }
  96.  
  97.    protected LayoutManager createLayoutManager() {
  98.       return new BoxLayout(this.optionPane, 1);
  99.    }
  100.  
  101.    protected void installListeners() {
  102.       if ((this.propertyChangeListener = this.createPropertyChangeListener()) != null) {
  103.          this.optionPane.addPropertyChangeListener(this.propertyChangeListener);
  104.       }
  105.  
  106.    }
  107.  
  108.    protected void uninstallListeners() {
  109.       if (this.propertyChangeListener != null) {
  110.          this.optionPane.removePropertyChangeListener(this.propertyChangeListener);
  111.          this.propertyChangeListener = null;
  112.       }
  113.  
  114.    }
  115.  
  116.    protected PropertyChangeListener createPropertyChangeListener() {
  117.       return new PropertyChangeHandler(this);
  118.    }
  119.  
  120.    protected void installKeyboardActions() {
  121.       InputMap var1 = this.getInputMap(2);
  122.       SwingUtilities.replaceUIInputMap(this.optionPane, 2, var1);
  123.       ActionMap var2 = this.getActionMap();
  124.       SwingUtilities.replaceUIActionMap(this.optionPane, var2);
  125.    }
  126.  
  127.    protected void uninstallKeyboardActions() {
  128.       SwingUtilities.replaceUIInputMap(this.optionPane, 2, (InputMap)null);
  129.       SwingUtilities.replaceUIActionMap(this.optionPane, (ActionMap)null);
  130.    }
  131.  
  132.    InputMap getInputMap(int var1) {
  133.       if (var1 == 2) {
  134.          Object[] var2 = UIManager.get("OptionPane.windowBindings");
  135.          if (var2 != null) {
  136.             return LookAndFeel.makeComponentInputMap(this.optionPane, var2);
  137.          }
  138.       }
  139.  
  140.       return null;
  141.    }
  142.  
  143.    ActionMap getActionMap() {
  144.       ActionMap var1 = (ActionMap)UIManager.get("OptionPane.actionMap");
  145.       if (var1 == null) {
  146.          var1 = this.createActionMap();
  147.          if (var1 != null) {
  148.             UIManager.put("OptionPane.actionMap", var1);
  149.          }
  150.       }
  151.  
  152.       return var1;
  153.    }
  154.  
  155.    ActionMap createActionMap() {
  156.       ActionMapUIResource var1 = new ActionMapUIResource();
  157.       ((ActionMap)var1).put("close", new CloseAction((1)null));
  158.       return var1;
  159.    }
  160.  
  161.    public Dimension getMinimumOptionPaneSize() {
  162.       return this.minimumSize == null ? new Dimension(262, 90) : new Dimension(this.minimumSize.width, this.minimumSize.height);
  163.    }
  164.  
  165.    public Dimension getPreferredSize(JComponent var1) {
  166.       if ((JOptionPane)var1 == this.optionPane) {
  167.          Dimension var2 = this.getMinimumOptionPaneSize();
  168.          LayoutManager var3 = ((Container)var1).getLayout();
  169.          if (var3 != null) {
  170.             Dimension var4 = var3.preferredLayoutSize(var1);
  171.             return var2 != null ? new Dimension(Math.max(var4.width, var2.width), Math.max(var4.height, var2.height)) : var4;
  172.          } else {
  173.             return var2;
  174.          }
  175.       } else {
  176.          return null;
  177.       }
  178.    }
  179.  
  180.    public Dimension getMinimumSize(JComponent var1) {
  181.       return this.getPreferredSize(var1);
  182.    }
  183.  
  184.    public Dimension getMaximumSize(JComponent var1) {
  185.       return this.getPreferredSize(var1);
  186.    }
  187.  
  188.    protected Container createMessageArea() {
  189.       JPanel var1 = new JPanel();
  190.       ((JComponent)var1).setBorder(UIManager.getBorder("OptionPane.messageAreaBorder"));
  191.       ((Container)var1).setLayout(new BorderLayout());
  192.       1 var2 = new 1(this);
  193.       2 var3 = new 2(this);
  194.       3 var4 = new 3(this);
  195.       ((Container)var3).setLayout(new BorderLayout());
  196.       ((Container)var3).add(var4, "West");
  197.       ((Container)var3).add(var2, "Center");
  198.       ((Container)var2).setLayout(new GridBagLayout());
  199.       GridBagConstraints var5 = new GridBagConstraints();
  200.       var5.gridx = var5.gridy = 0;
  201.       var5.gridwidth = 0;
  202.       var5.gridheight = 1;
  203.       var5.anchor = 17;
  204.       var5.insets = new Insets(0, 0, 3, 0);
  205.       this.addMessageComponents(var2, var5, this.getMessage(), this.getMaxCharactersPerLineCount(), false);
  206.       ((Container)var1).add(var3, "Center");
  207.       this.addIcon(var1);
  208.       return var1;
  209.    }
  210.  
  211.    protected void addMessageComponents(Container var1, GridBagConstraints var2, Object var3, int var4, boolean var5) {
  212.       if (var3 != null) {
  213.          if (var3 instanceof Component) {
  214.             if (!(var3 instanceof JScrollPane) && !(var3 instanceof JPanel)) {
  215.                var2.fill = 2;
  216.             } else {
  217.                var2.fill = 1;
  218.                var2.weighty = (double)1.0F;
  219.             }
  220.  
  221.             var2.weightx = (double)1.0F;
  222.             var1.add((Component)var3, var2);
  223.             var2.weightx = (double)0.0F;
  224.             var2.weighty = (double)0.0F;
  225.             var2.fill = 0;
  226.             ++var2.gridy;
  227.             if (!var5) {
  228.                this.hasCustomComponents = true;
  229.             }
  230.          } else if (var3 instanceof Object[]) {
  231.             Object[] var6 = var3;
  232.  
  233.             for(int var7 = 0; var7 < var6.length; ++var7) {
  234.                this.addMessageComponents(var1, var2, var6[var7], var4, false);
  235.             }
  236.          } else if (var3 instanceof Icon) {
  237.             JLabel var10 = new JLabel((Icon)var3, 0);
  238.             ((JComponent)var10).setForeground(UIManager.getColor("OptionPane.messageForeground"));
  239.             this.addMessageComponents(var1, var2, var10, var4, true);
  240.          } else {
  241.             String var11 = var3.toString();
  242.             int var12 = var11.length();
  243.             if (var12 <= 0) {
  244.                return;
  245.             }
  246.  
  247.             int var8 = var11.indexOf(10);
  248.             if (var8 >= 0) {
  249.                if (var8 == 0) {
  250.                   this.addMessageComponents(var1, var2, new 4(this), var4, true);
  251.                } else {
  252.                   this.addMessageComponents(var1, var2, var11.substring(0, var8), var4, false);
  253.                }
  254.  
  255.                this.addMessageComponents(var1, var2, var11.substring(var8 + 1), var4, false);
  256.             } else if (var12 > var4) {
  257.                Box var9 = Box.createVerticalBox();
  258.                this.burstStringInto(var9, var11, var4);
  259.                this.addMessageComponents(var1, var2, var9, var4, true);
  260.             } else {
  261.                JLabel var13 = new JLabel(var11, 2);
  262.                ((JComponent)var13).setForeground(UIManager.getColor("OptionPane.messageForeground"));
  263.                this.addMessageComponents(var1, var2, var13, var4, true);
  264.             }
  265.          }
  266.  
  267.       }
  268.    }
  269.  
  270.    protected Object getMessage() {
  271.       this.inputComponent = null;
  272.       if (this.optionPane != null) {
  273.          if (!this.optionPane.getWantsInput()) {
  274.             return this.optionPane.getMessage();
  275.          } else {
  276.             Object var1 = this.optionPane.getMessage();
  277.             Object[] var2 = this.optionPane.getSelectionValues();
  278.             Object var3 = this.optionPane.getInitialSelectionValue();
  279.             Object var4;
  280.             if (var2 != null) {
  281.                if (var2.length < 20) {
  282.                   JComboBox var5 = new JComboBox();
  283.                   int var6 = 0;
  284.  
  285.                   for(int var7 = var2.length; var6 < var7; ++var6) {
  286.                      var5.addItem(var2[var6]);
  287.                   }
  288.  
  289.                   if (var3 != null) {
  290.                      var5.setSelectedItem(var3);
  291.                   }
  292.  
  293.                   this.inputComponent = var5;
  294.                   var4 = var5;
  295.                } else {
  296.                   JList var8 = new JList(var2);
  297.                   JScrollPane var11 = new JScrollPane(var8);
  298.                   var8.setVisibleRowCount(10);
  299.                   if (var3 != null) {
  300.                      var8.setSelectedValue(var3, true);
  301.                   }
  302.  
  303.                   ((Component)var8).addMouseListener(new ListSelectionListener(this, (1)null));
  304.                   var4 = var11;
  305.                   this.inputComponent = var8;
  306.                }
  307.             } else {
  308.                JTextField var9 = new JTextField(20);
  309.                if (var3 != null) {
  310.                   String var12 = var3.toString();
  311.                   ((JTextComponent)var9).setText(var12);
  312.                   ((JTextComponent)var9).setSelectionStart(0);
  313.                   ((JTextComponent)var9).setSelectionEnd(var12.length());
  314.                }
  315.  
  316.                var9.addActionListener(new TextFieldActionListener(this, (1)null));
  317.                var4 = this.inputComponent = var9;
  318.             }
  319.  
  320.             Object[] var10;
  321.             if (var1 == null) {
  322.                var10 = new Object[]{var4};
  323.             } else {
  324.                var10 = new Object[]{var1, var4};
  325.             }
  326.  
  327.             return var10;
  328.          }
  329.       } else {
  330.          return null;
  331.       }
  332.    }
  333.  
  334.    protected void addIcon(Container var1) {
  335.       Icon var2 = this.getIcon();
  336.       if (var2 != null) {
  337.          JLabel var3 = new JLabel(var2);
  338.          var3.setVerticalAlignment(1);
  339.          var1.add(var3, "West");
  340.       }
  341.  
  342.    }
  343.  
  344.    protected Icon getIcon() {
  345.       Icon var1 = this.optionPane == null ? null : this.optionPane.getIcon();
  346.       if (var1 == null && this.optionPane != null) {
  347.          var1 = this.getIconForType(this.optionPane.getMessageType());
  348.       }
  349.  
  350.       return var1;
  351.    }
  352.  
  353.    protected Icon getIconForType(int var1) {
  354.       if (var1 >= 0 && var1 <= 3) {
  355.          switch (var1) {
  356.             case 0:
  357.                return UIManager.getIcon("OptionPane.errorIcon");
  358.             case 1:
  359.                return UIManager.getIcon("OptionPane.informationIcon");
  360.             case 2:
  361.                return UIManager.getIcon("OptionPane.warningIcon");
  362.             case 3:
  363.                return UIManager.getIcon("OptionPane.questionIcon");
  364.             default:
  365.                return null;
  366.          }
  367.       } else {
  368.          return null;
  369.       }
  370.    }
  371.  
  372.    protected int getMaxCharactersPerLineCount() {
  373.       return this.optionPane.getMaxCharactersPerLineCount();
  374.    }
  375.  
  376.    protected void burstStringInto(Container var1, String var2, int var3) {
  377.       int var4 = var2.length();
  378.       if (var4 > 0) {
  379.          if (var4 > var3) {
  380.             int var5 = var2.lastIndexOf(32, var3);
  381.             if (var5 <= 0) {
  382.                var5 = var2.indexOf(32, var3);
  383.             }
  384.  
  385.             if (var5 > 0 && var5 < var4) {
  386.                this.burstStringInto(var1, var2.substring(0, var5), var3);
  387.                this.burstStringInto(var1, var2.substring(var5 + 1), var3);
  388.                return;
  389.             }
  390.          }
  391.  
  392.          JLabel var6 = new JLabel(var2, 2);
  393.          ((JComponent)var6).setForeground(UIManager.getColor("OptionPane.messageForeground"));
  394.          var1.add(var6);
  395.       }
  396.    }
  397.  
  398.    protected Container createSeparator() {
  399.       return null;
  400.    }
  401.  
  402.    protected Container createButtonArea() {
  403.       JPanel var1 = new JPanel();
  404.       ((JComponent)var1).setBorder(UIManager.getBorder("OptionPane.buttonAreaBorder"));
  405.       ((Container)var1).setLayout(new ButtonAreaLayout(true, 6));
  406.       this.addButtonComponents(var1, this.getButtons(), this.getInitialValueIndex());
  407.       return var1;
  408.    }
  409.  
  410.    protected void addButtonComponents(Container var1, Object[] var2, int var3) {
  411.       if (var2 != null && var2.length > 0) {
  412.          boolean var4 = this.getSizeButtonsToSameWidth();
  413.          boolean var5 = true;
  414.          int var6 = var2.length;
  415.          JButton[] var7 = null;
  416.          int var8 = 0;
  417.          if (var4) {
  418.             var7 = new JButton[var6];
  419.          }
  420.  
  421.          for(int var9 = 0; var9 < var6; ++var9) {
  422.             Object var10 = var2[var9];
  423.             Object var11;
  424.             if (var10 instanceof Component) {
  425.                var5 = false;
  426.                var11 = (Component)var10;
  427.                var1.add((Component)var11);
  428.                this.hasCustomComponents = true;
  429.             } else {
  430.                JButton var12;
  431.                if (var10 instanceof Icon) {
  432.                   var12 = new JButton((Icon)var10);
  433.                } else {
  434.                   var12 = new JButton(var10.toString());
  435.                }
  436.  
  437.                var1.add(var12);
  438.                ActionListener var13 = this.createButtonActionListener(var9);
  439.                if (var13 != null) {
  440.                   ((AbstractButton)var12).addActionListener(var13);
  441.                }
  442.  
  443.                var11 = var12;
  444.             }
  445.  
  446.             if (var4 && var5 && var11 instanceof JButton) {
  447.                var7[var9] = (JButton)var11;
  448.                var8 = Math.max(var8, ((Component)var11).getMinimumSize().width);
  449.             }
  450.  
  451.             if (var9 == var3) {
  452.                this.initialFocusComponent = (Component)var11;
  453.                if (this.initialFocusComponent instanceof JButton) {
  454.                   JButton var16 = (JButton)this.initialFocusComponent;
  455.                   ((JComponent)var16).addAncestorListener(new 5(this));
  456.                }
  457.             }
  458.          }
  459.  
  460.          ((ButtonAreaLayout)var1.getLayout()).setSyncAllWidths(var4 && var5);
  461.          if (var4 && var5) {
  462.             int var15 = var6 <= 2 ? 8 : 4;
  463.  
  464.             for(int var17 = 0; var17 < var6; ++var17) {
  465.                JButton var14 = var7[var17];
  466.                ((AbstractButton)var14).setMargin(new Insets(2, var15, 2, var15));
  467.             }
  468.          }
  469.       }
  470.  
  471.    }
  472.  
  473.    protected ActionListener createButtonActionListener(int var1) {
  474.       return new ButtonActionListener(this, var1);
  475.    }
  476.  
  477.    protected Object[] getButtons() {
  478.       if (this.optionPane != null) {
  479.          Object[] var1 = this.optionPane.getOptions();
  480.          if (var1 == null) {
  481.             int var3 = this.optionPane.getOptionType();
  482.             String[] var2;
  483.             if (var3 == 0) {
  484.                var2 = new String[]{(String)UIManager.get("OptionPane.yesButtonText"), (String)UIManager.get("OptionPane.noButtonText")};
  485.             } else if (var3 == 1) {
  486.                var2 = new String[]{(String)UIManager.get("OptionPane.yesButtonText"), (String)UIManager.get("OptionPane.noButtonText"), (String)UIManager.get("OptionPane.cancelButtonText")};
  487.             } else if (var3 == 2) {
  488.                var2 = new String[]{(String)UIManager.get("OptionPane.okButtonText"), (String)UIManager.get("OptionPane.cancelButtonText")};
  489.             } else {
  490.                var2 = new String[]{(String)UIManager.get("OptionPane.okButtonText")};
  491.             }
  492.  
  493.             return var2;
  494.          } else {
  495.             return var1;
  496.          }
  497.       } else {
  498.          return null;
  499.       }
  500.    }
  501.  
  502.    protected boolean getSizeButtonsToSameWidth() {
  503.       return true;
  504.    }
  505.  
  506.    protected int getInitialValueIndex() {
  507.       if (this.optionPane != null) {
  508.          Object var1 = this.optionPane.getInitialValue();
  509.          Object[] var2 = this.optionPane.getOptions();
  510.          if (var2 == null) {
  511.             return 0;
  512.          }
  513.  
  514.          if (var1 != null) {
  515.             for(int var3 = var2.length - 1; var3 >= 0; --var3) {
  516.                if (var2[var3].equals(var1)) {
  517.                   return var3;
  518.                }
  519.             }
  520.          }
  521.       }
  522.  
  523.       return -1;
  524.    }
  525.  
  526.    protected void resetInputValue() {
  527.       if (this.inputComponent != null && this.inputComponent instanceof JTextField) {
  528.          this.optionPane.setInputValue(((JTextField)this.inputComponent).getText());
  529.       } else if (this.inputComponent != null && this.inputComponent instanceof JComboBox) {
  530.          this.optionPane.setInputValue(((JComboBox)this.inputComponent).getSelectedItem());
  531.       } else if (this.inputComponent != null) {
  532.          this.optionPane.setInputValue(((JList)this.inputComponent).getSelectedValue());
  533.       }
  534.  
  535.    }
  536.  
  537.    public void selectInitialValue(JOptionPane var1) {
  538.       if (this.inputComponent != null) {
  539.          this.inputComponent.requestFocus();
  540.       } else {
  541.          if (this.initialFocusComponent != null) {
  542.             this.initialFocusComponent.requestFocus();
  543.          }
  544.  
  545.          if (this.initialFocusComponent instanceof JButton) {
  546.             JRootPane var2 = SwingUtilities.getRootPane(this.initialFocusComponent);
  547.             if (var2 != null) {
  548.                var2.setDefaultButton((JButton)this.initialFocusComponent);
  549.             }
  550.          }
  551.       }
  552.  
  553.    }
  554.  
  555.    public boolean containsCustomComponents(JOptionPane var1) {
  556.       return this.hasCustomComponents;
  557.    }
  558. }
  559.