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 / AbstractOptionPaneUI.class (.txt) next >
Encoding:
Java Class File  |  1998-02-26  |  6.7 KB  |  281 lines

  1. package com.sun.java.swing.plaf.basic;
  2.  
  3. import com.sun.java.swing.AbstractButton;
  4. import com.sun.java.swing.Box;
  5. import com.sun.java.swing.BoxLayout;
  6. import com.sun.java.swing.Icon;
  7. import com.sun.java.swing.JButton;
  8. import com.sun.java.swing.JComponent;
  9. import com.sun.java.swing.JLabel;
  10. import com.sun.java.swing.JRootPane;
  11. import com.sun.java.swing.SwingUtilities;
  12. import com.sun.java.swing.UIManager;
  13. import com.sun.java.swing.plaf.OptionPaneUI;
  14. import java.awt.BorderLayout;
  15. import java.awt.Color;
  16. import java.awt.Component;
  17. import java.awt.Container;
  18. import java.awt.GridBagConstraints;
  19. import java.awt.GridBagLayout;
  20. import java.awt.Insets;
  21. import java.io.Serializable;
  22.  
  23. public abstract class AbstractOptionPaneUI extends OptionPaneUI implements Serializable {
  24.    protected Component initialFocusComponent;
  25.    protected boolean hasCustomComponents;
  26.  
  27.    public abstract Icon getIcon();
  28.  
  29.    public abstract Object getMessage();
  30.  
  31.    public abstract Object[] getButtons();
  32.  
  33.    public abstract Container getContainer();
  34.  
  35.    public abstract int getInitialIndex();
  36.  
  37.    protected Color getLabelColor() {
  38.       return UIManager.getColor("OptionPane.foreground");
  39.    }
  40.  
  41.    public boolean getSizeButtonsToSameWidth() {
  42.       return false;
  43.    }
  44.  
  45.    public boolean containsCustomComponents() {
  46.       return this.hasCustomComponents;
  47.    }
  48.  
  49.    public int getMaxCharactersPerLineCount() {
  50.       return Integer.MAX_VALUE;
  51.    }
  52.  
  53.    public void selectInitialValue() {
  54.       if (this.initialFocusComponent != null) {
  55.          this.initialFocusComponent.requestFocus();
  56.       }
  57.  
  58.       if (this.initialFocusComponent instanceof JButton) {
  59.          JRootPane var1 = SwingUtilities.getRootPane(this.initialFocusComponent);
  60.          if (var1 != null) {
  61.             var1.setDefaultButton((JButton)this.initialFocusComponent);
  62.          }
  63.       }
  64.  
  65.    }
  66.  
  67.    protected void burstStringInto(Container var1, String var2, int var3) {
  68.       int var4 = var2.length();
  69.       if (var4 > 0) {
  70.          if (var4 > var3) {
  71.             int var5 = var2.lastIndexOf(32, var3);
  72.             if (var5 <= 0) {
  73.                var5 = var2.indexOf(32, var3);
  74.             }
  75.  
  76.             if (var5 > 0 && var5 < var4) {
  77.                this.burstStringInto(var1, var2.substring(0, var5), var3);
  78.                this.burstStringInto(var1, var2.substring(var5 + 1), var3);
  79.                return;
  80.             }
  81.          }
  82.  
  83.          var1.add(new JLabel(var2, 2));
  84.       }
  85.    }
  86.  
  87.    protected void appendDescription(Container var1, GridBagConstraints var2, Object var3, int var4, boolean var5) {
  88.       if (var3 != null) {
  89.          if (var3 instanceof Component) {
  90.             var2.fill = 2;
  91.             var2.weightx = (double)1.0F;
  92.             var1.add((Component)var3, var2);
  93.             var2.weightx = (double)0.0F;
  94.             var2.fill = 0;
  95.             ++var2.gridy;
  96.             if (!var5) {
  97.                this.hasCustomComponents = true;
  98.                return;
  99.             }
  100.          } else {
  101.             if (var3 instanceof Object[]) {
  102.                Object[] var11 = var3;
  103.  
  104.                for(int var12 = 0; var12 < var11.length; ++var12) {
  105.                   this.appendDescription(var1, var2, var11[var12], var4, false);
  106.                }
  107.  
  108.                return;
  109.             }
  110.  
  111.             if (var3 instanceof Icon) {
  112.                JLabel var10 = new JLabel((Icon)var3, var4);
  113.                ((Component)var10).setForeground(this.getLabelColor());
  114.                this.appendDescription(var1, var2, var10, var4, true);
  115.                return;
  116.             }
  117.  
  118.             String var6 = var3.toString();
  119.             int var7 = var6.length();
  120.             if (var7 <= 0) {
  121.                return;
  122.             }
  123.  
  124.             int var8 = var6.indexOf(10);
  125.             if (var8 >= 0) {
  126.                if (var8 == 0) {
  127.                   this.appendDescription(var1, var2, new 1(), var4, true);
  128.                } else {
  129.                   this.appendDescription(var1, var2, var6.substring(0, var8), var4, false);
  130.                }
  131.  
  132.                this.appendDescription(var1, var2, var6.substring(var8 + 1), var4, false);
  133.                return;
  134.             }
  135.  
  136.             if (var7 > var4) {
  137.                Box var13 = Box.createVerticalBox();
  138.                this.burstStringInto(var13, var6, var4);
  139.                this.appendDescription(var1, var2, var13, var4, true);
  140.                return;
  141.             }
  142.  
  143.             JLabel var9 = new JLabel(var6, 2);
  144.             ((Component)var9).setForeground(this.getLabelColor());
  145.             this.appendDescription(var1, var2, var9, var4, true);
  146.          }
  147.  
  148.       }
  149.    }
  150.  
  151.    protected void appendButtons(Container var1, Object[] var2, int var3) {
  152.       if (var2 != null && var2.length > 0) {
  153.          boolean var4 = this.getSizeButtonsToSameWidth();
  154.          boolean var5 = true;
  155.          int var6 = var2.length;
  156.          JButton[] var7 = null;
  157.          int var8 = 0;
  158.          if (var4) {
  159.             var7 = new JButton[var6];
  160.          }
  161.  
  162.          for(int var9 = 0; var9 < var6; ++var9) {
  163.             Object var10 = var2[var9];
  164.             Object var11;
  165.             if (var10 instanceof Component) {
  166.                var5 = false;
  167.                var11 = (Component)var10;
  168.                var1.add((Component)var11);
  169.                this.hasCustomComponents = true;
  170.             } else {
  171.                JButton var12;
  172.                if (var10 instanceof Icon) {
  173.                   var12 = new JButton((Icon)var10);
  174.                } else {
  175.                   var12 = new JButton(var10.toString());
  176.                }
  177.  
  178.                var1.add(var12);
  179.                ((AbstractButton)var12).addActionListener(new 2(var9, this));
  180.                var11 = var12;
  181.             }
  182.  
  183.             if (var4 && var5 && var11 instanceof JButton) {
  184.                var7[var9] = (JButton)var11;
  185.                var8 = Math.max(var8, ((Component)var11).getMinimumSize().width);
  186.             }
  187.  
  188.             if (var9 == var3) {
  189.                this.initialFocusComponent = (Component)var11;
  190.                if (this.initialFocusComponent instanceof JButton) {
  191.                   JButton var16 = (JButton)this.initialFocusComponent;
  192.                   ((JComponent)var16).addAncestorListener(new 3());
  193.                }
  194.             }
  195.          }
  196.  
  197.          ((SyncingLayoutManager)var1.getLayout()).setSyncsAll(var4 && var5);
  198.          if (var4 && var5) {
  199.             byte var15;
  200.             if (var6 <= 2) {
  201.                var15 = 8;
  202.             } else {
  203.                var15 = 4;
  204.             }
  205.  
  206.             for(int var17 = 0; var17 < var6; ++var17) {
  207.                JButton var14 = var7[var17];
  208.                ((AbstractButton)var14).setMargin(new Insets(2, var15, 2, var15));
  209.             }
  210.          }
  211.       }
  212.  
  213.    }
  214.  
  215.    public void createdButtonFired(int var1) {
  216.    }
  217.  
  218.    protected void emptyContainer(Container var1) {
  219.       var1.removeAll();
  220.    }
  221.  
  222.    protected void addIcon(Container var1) {
  223.       Icon var2 = this.getIcon();
  224.       if (var2 != null) {
  225.          JLabel var3 = new JLabel(var2);
  226.          var3.setVerticalAlignment(1);
  227.          var1.add(var3, "West");
  228.       }
  229.  
  230.    }
  231.  
  232.    protected Container createBody() {
  233.       4 var1 = new 4(this);
  234.       ((Container)var1).setLayout(new BorderLayout());
  235.       GridBagConstraints var2 = new GridBagConstraints();
  236.       5 var3 = new 5();
  237.       6 var4 = new 6();
  238.       ((Container)var4).setLayout(new BorderLayout());
  239.       ((Container)var4).add(new 7(), "West");
  240.       ((Container)var4).add(var3, "Center");
  241.       ((Container)var3).setLayout(new GridBagLayout());
  242.       var2.gridx = var2.gridy = 0;
  243.       var2.gridwidth = 0;
  244.       var2.gridheight = 1;
  245.       var2.anchor = 17;
  246.       var2.insets = new Insets(0, 0, 3, 0);
  247.       this.appendDescription(var3, var2, this.getMessage(), this.getMaxCharactersPerLineCount(), false);
  248.       ((Container)var1).add(var4, "Center");
  249.       this.addIcon(var1);
  250.       return var1;
  251.    }
  252.  
  253.    protected Insets getButtonInsets() {
  254.       return new Insets(6, 0, 0, 0);
  255.    }
  256.  
  257.    protected Insets getBodyInsets() {
  258.       return new Insets(0, 0, 0, 0);
  259.    }
  260.  
  261.    protected Container createButtons() {
  262.       8 var1 = new 8(this);
  263.       ((Container)var1).setLayout(new SyncingLayoutManager(true, 6));
  264.       this.appendButtons(var1, this.getButtons(), this.getInitialIndex());
  265.       return var1;
  266.    }
  267.  
  268.    protected void validateComponent() {
  269.       Container var1 = this.getContainer();
  270.       this.hasCustomComponents = false;
  271.       this.initialFocusComponent = null;
  272.       if (var1 != null) {
  273.          this.emptyContainer(var1);
  274.          var1.setLayout(new BoxLayout(var1, 1));
  275.          var1.add(this.createBody());
  276.          var1.add(this.createButtons());
  277.       }
  278.  
  279.    }
  280. }
  281.