home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / sun / beans / editors / FontEditor.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  4.9 KB  |  181 lines

  1. package sun.beans.editors;
  2.  
  3. import java.awt.Choice;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Dimension;
  7. import java.awt.Event;
  8. import java.awt.Font;
  9. import java.awt.FontMetrics;
  10. import java.awt.Graphics;
  11. import java.awt.Label;
  12. import java.awt.LayoutManager;
  13. import java.awt.Panel;
  14. import java.awt.Rectangle;
  15. import java.awt.Toolkit;
  16. import java.beans.PropertyChangeListener;
  17. import java.beans.PropertyChangeSupport;
  18. import java.beans.PropertyEditor;
  19.  
  20. public class FontEditor extends Panel implements PropertyEditor {
  21.    private Font font;
  22.    private Toolkit toolkit;
  23.    private String sampleText = "Abcde...";
  24.    private Label sample;
  25.    private Choice familyChoser;
  26.    private Choice styleChoser;
  27.    private Choice sizeChoser;
  28.    private String[] fonts;
  29.    private String[] styleNames = new String[]{"plain", "bold", "italic"};
  30.    private int[] styles = new int[]{0, 1, 2};
  31.    private int[] pointSizes = new int[]{3, 5, 8, 10, 12, 14, 18, 24, 36, 48};
  32.    private PropertyChangeSupport support = new PropertyChangeSupport(this);
  33.  
  34.    public FontEditor() {
  35.       ((Container)this).setLayout((LayoutManager)null);
  36.       this.toolkit = Toolkit.getDefaultToolkit();
  37.       this.fonts = this.toolkit.getFontList();
  38.       this.familyChoser = new Choice();
  39.  
  40.       for(int var1 = 0; var1 < this.fonts.length; ++var1) {
  41.          this.familyChoser.addItem(this.fonts[var1]);
  42.       }
  43.  
  44.       ((Container)this).add(this.familyChoser);
  45.       this.familyChoser.reshape(20, 5, 100, 30);
  46.       this.styleChoser = new Choice();
  47.  
  48.       for(int var2 = 0; var2 < this.styleNames.length; ++var2) {
  49.          this.styleChoser.addItem(this.styleNames[var2]);
  50.       }
  51.  
  52.       ((Container)this).add(this.styleChoser);
  53.       this.styleChoser.reshape(145, 5, 70, 30);
  54.       this.sizeChoser = new Choice();
  55.  
  56.       for(int var3 = 0; var3 < this.pointSizes.length; ++var3) {
  57.          this.sizeChoser.addItem(String.valueOf(this.pointSizes[var3]));
  58.       }
  59.  
  60.       ((Container)this).add(this.sizeChoser);
  61.       this.sizeChoser.reshape(220, 5, 70, 30);
  62.       ((Component)this).resize(300, 40);
  63.    }
  64.  
  65.    public Dimension preferredSize() {
  66.       return new Dimension(300, 40);
  67.    }
  68.  
  69.    public void setValue(Object var1) {
  70.       this.font = (Font)var1;
  71.       this.changeFont(this.font);
  72.  
  73.       for(int var2 = 0; var2 < this.fonts.length; ++var2) {
  74.          if (this.fonts[var2].equals(this.font.getFamily())) {
  75.             this.familyChoser.select(var2);
  76.             break;
  77.          }
  78.       }
  79.  
  80.       for(int var3 = 0; var3 < this.styleNames.length; ++var3) {
  81.          if (this.font.getStyle() == this.styles[var3]) {
  82.             this.styleChoser.select(var3);
  83.             break;
  84.          }
  85.       }
  86.  
  87.       for(int var4 = 0; var4 < this.pointSizes.length; ++var4) {
  88.          if (this.font.getSize() <= this.pointSizes[var4]) {
  89.             this.sizeChoser.select(var4);
  90.             return;
  91.          }
  92.       }
  93.  
  94.    }
  95.  
  96.    private void changeFont(Font var1) {
  97.       this.font = var1;
  98.       if (this.sample != null) {
  99.          ((Container)this).remove(this.sample);
  100.       }
  101.  
  102.       this.sample = new Label(this.sampleText);
  103.       this.sample.setFont(this.font);
  104.       ((Container)this).add(this.sample);
  105.       Container var2 = ((Component)this).getParent();
  106.       if (var2 != null) {
  107.          ((Component)var2).invalidate();
  108.          ((Component)var2).layout();
  109.       }
  110.  
  111.       ((Container)this).invalidate();
  112.       ((Container)this).layout();
  113.       ((Component)this).repaint();
  114.       this.support.firePropertyChange("", (Object)null, (Object)null);
  115.    }
  116.  
  117.    public Object getValue() {
  118.       return this.font;
  119.    }
  120.  
  121.    public String getJavaInitializationString() {
  122.       return "new java.awt.Font(\"" + this.font.getFamily() + "\", " + this.font.getStyle() + ", " + this.font.getSize() + ")";
  123.    }
  124.  
  125.    public boolean action(Event var1, Object var2) {
  126.       String var3 = this.familyChoser.getSelectedItem();
  127.       int var4 = this.styles[this.styleChoser.getSelectedIndex()];
  128.       int var5 = this.pointSizes[this.sizeChoser.getSelectedIndex()];
  129.  
  130.       try {
  131.          Font var6 = new Font(var3, var4, var5);
  132.          this.changeFont(var6);
  133.       } catch (Exception var7) {
  134.          System.err.println("Couldn't create font " + var3 + "-" + this.styleNames[var4] + "-" + var5);
  135.       }
  136.  
  137.       return false;
  138.    }
  139.  
  140.    public boolean isPaintable() {
  141.       return true;
  142.    }
  143.  
  144.    public void paintValue(Graphics var1, Rectangle var2) {
  145.       Font var3 = var1.getFont();
  146.       var1.setFont(this.font);
  147.       FontMetrics var4 = var1.getFontMetrics();
  148.       int var5 = (var2.height - var4.getAscent()) / 2;
  149.       var1.drawString(this.sampleText, 0, var2.height - var5);
  150.       var1.setFont(var3);
  151.    }
  152.  
  153.    public String getAsText() {
  154.       return null;
  155.    }
  156.  
  157.    public void setAsText(String var1) throws IllegalArgumentException {
  158.       throw new IllegalArgumentException(var1);
  159.    }
  160.  
  161.    public String[] getTags() {
  162.       return null;
  163.    }
  164.  
  165.    public Component getCustomEditor() {
  166.       return this;
  167.    }
  168.  
  169.    public boolean supportsCustomEditor() {
  170.       return true;
  171.    }
  172.  
  173.    public void addPropertyChangeListener(PropertyChangeListener var1) {
  174.       this.support.addPropertyChangeListener(var1);
  175.    }
  176.  
  177.    public void removePropertyChangeListener(PropertyChangeListener var1) {
  178.       this.support.removePropertyChangeListener(var1);
  179.    }
  180. }
  181.