home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VCafe / WDESAMPL.BIN / NumberFormatFrame.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-03-14  |  12.7 KB  |  541 lines

  1. import java.awt.Checkbox;
  2. import java.awt.CheckboxGroup;
  3. import java.awt.Choice;
  4. import java.awt.Color;
  5. import java.awt.Component;
  6. import java.awt.Container;
  7. import java.awt.Event;
  8. import java.awt.FlowLayout;
  9. import java.awt.Font;
  10. import java.awt.Frame;
  11. import java.awt.Insets;
  12. import java.awt.Label;
  13. import java.awt.LayoutManager;
  14. import java.awt.Panel;
  15. import java.awt.TextComponent;
  16. import java.awt.TextField;
  17. import java.awt.Window;
  18. import java.awt.event.ItemEvent;
  19. import java.awt.event.ItemListener;
  20. import java.awt.event.KeyEvent;
  21. import java.awt.event.KeyListener;
  22. import java.awt.event.WindowEvent;
  23. import java.awt.event.WindowListener;
  24. import java.text.DecimalFormat;
  25. import java.text.NumberFormat;
  26. import java.text.ParsePosition;
  27. import java.util.EventObject;
  28. import java.util.Locale;
  29.  
  30. class NumberFormatFrame extends Frame implements KeyListener, ItemListener, WindowListener {
  31.    Panel localePanel;
  32.    CheckboxGroup group1;
  33.    Label label1;
  34.    Label label2;
  35.    Label label3;
  36.    Choice localeMenu;
  37.    Label localeLabel;
  38.    TextField inputText;
  39.    TextField outputText;
  40.    TextField patternText;
  41.    Label label4;
  42.    TextField negPrefix;
  43.    TextField negSuffix;
  44.    TextField posPrefix;
  45.    TextField posSuffix;
  46.    Label label5;
  47.    Label label6;
  48.    Label label7;
  49.    Label label8;
  50.    TextField intMin;
  51.    TextField intMax;
  52.    TextField decMin;
  53.    TextField decMax;
  54.    Label label9;
  55.    Label label10;
  56.    Label label11;
  57.    Label label12;
  58.    Checkbox getInstance;
  59.    Checkbox getCurrency;
  60.    Checkbox getPercent;
  61.    Checkbox getLocalized;
  62.    Label label13;
  63.    Label label14;
  64.    private static final String creditString = "v1.1a6, Demo:";
  65.    private static final String copyrightString = "";
  66.    private static final String copyrightString2 = "";
  67.    private static final int FIELD_COLUMNS = 35;
  68.    private static final boolean DEBUG = false;
  69.    private static boolean isLocalized;
  70.    private DecimalFormat format;
  71.    private Locale[] locales;
  72.    private DemoApplet applet;
  73.  
  74.    public NumberFormatFrame(DemoApplet var1) {
  75.       super("Number Formatting Demo");
  76.       this.applet = var1;
  77.       ((Window)this).addWindowListener(this);
  78.       this.init();
  79.       this.start();
  80.    }
  81.  
  82.    public void init() {
  83.       this.locales = Utility.getG7Locales();
  84.       this.buildGUI();
  85.       Locale.getDefault();
  86.  
  87.       for(int var1 = 0; var1 < this.locales.length; ++var1) {
  88.          if (this.locales[var1].getCountry().length() > 0) {
  89.             this.localeMenu.addItem(this.locales[var1].getDisplayName());
  90.             if (this.locales[var1].equals(Locale.getDefault())) {
  91.                this.localeMenu.select(var1);
  92.             }
  93.          }
  94.       }
  95.  
  96.       this.setFormatFromLocale();
  97.    }
  98.  
  99.    public void start() {
  100.       this.inputText.setText("-1234.56");
  101.       this.clickedRightButton();
  102.    }
  103.  
  104.    public void itemStateChanged(ItemEvent var1) {
  105.       if (((EventObject)var1).getSource() == this.getPercent) {
  106.          this.clickedGetPercent();
  107.       } else if (((EventObject)var1).getSource() == this.getCurrency) {
  108.          this.clickedGetCurrency();
  109.       } else if (((EventObject)var1).getSource() == this.getInstance) {
  110.          this.clickedGetDefault();
  111.       } else if (((EventObject)var1).getSource() == this.getLocalized) {
  112.          isLocalized = this.getLocalized.getState();
  113.          this.handleNewFormat();
  114.       } else {
  115.          if (((EventObject)var1).getSource() == this.localeMenu) {
  116.             this.selectedLocaleMenu();
  117.          }
  118.  
  119.       }
  120.    }
  121.  
  122.    public void keyPressed(KeyEvent var1) {
  123.    }
  124.  
  125.    public void keyReleased(KeyEvent var1) {
  126.       if (((EventObject)var1).getSource() == this.inputText) {
  127.          this.inputChanged();
  128.       } else if (((EventObject)var1).getSource() == this.patternText) {
  129.          this.patternChanged();
  130.       } else if (((EventObject)var1).getSource() == this.outputText) {
  131.          this.outputChanged();
  132.       } else if (((EventObject)var1).getSource() == this.posSuffix) {
  133.          this.posSuffixChanged();
  134.       } else if (((EventObject)var1).getSource() == this.posPrefix) {
  135.          this.posPrefixChanged();
  136.       } else if (((EventObject)var1).getSource() == this.negSuffix) {
  137.          this.negSuffixChanged();
  138.       } else if (((EventObject)var1).getSource() == this.negPrefix) {
  139.          this.negPrefixChanged();
  140.       } else if (((EventObject)var1).getSource() == this.decMax) {
  141.          this.decMaxChanged();
  142.       } else if (((EventObject)var1).getSource() == this.decMin) {
  143.          this.decMinChanged();
  144.       } else if (((EventObject)var1).getSource() == this.intMax) {
  145.          this.intMaxChanged();
  146.       } else {
  147.          if (((EventObject)var1).getSource() == this.intMin) {
  148.             this.intMinChanged();
  149.          }
  150.  
  151.       }
  152.    }
  153.  
  154.    public void keyTyped(KeyEvent var1) {
  155.    }
  156.  
  157.    public void windowClosed(WindowEvent var1) {
  158.    }
  159.  
  160.    public void windowDeiconified(WindowEvent var1) {
  161.    }
  162.  
  163.    public void windowIconified(WindowEvent var1) {
  164.    }
  165.  
  166.    public void windowActivated(WindowEvent var1) {
  167.    }
  168.  
  169.    public void windowDeactivated(WindowEvent var1) {
  170.    }
  171.  
  172.    public void windowOpened(WindowEvent var1) {
  173.    }
  174.  
  175.    public void windowClosing(WindowEvent var1) {
  176.       ((Component)this).setVisible(false);
  177.       ((Frame)this).dispose();
  178.       if (this.applet != null) {
  179.          this.applet.demoClosed();
  180.       } else {
  181.          System.exit(0);
  182.       }
  183.    }
  184.  
  185.    public void handleNewFormat() {
  186.       if (isLocalized) {
  187.          this.workaroundSetText(this.patternText, this.format.toLocalizedPattern());
  188.       } else {
  189.          this.workaroundSetText(this.patternText, this.format.toPattern());
  190.       }
  191.  
  192.       this.clickedRightButton();
  193.    }
  194.  
  195.    public void handleAttributeChange() {
  196.       this.handleNewFormat();
  197.    }
  198.  
  199.    public boolean handleFormatting(Event var1, Object var2) {
  200.       return true;
  201.    }
  202.  
  203.    public void setFormatFromLocale() {
  204.       int var1 = this.localeMenu.getSelectedIndex();
  205.       Locale var2 = this.locales[var1];
  206.       if (this.getPercent.getState()) {
  207.          this.format = (DecimalFormat)NumberFormat.getPercentInstance(var2);
  208.       } else if (this.getCurrency.getState()) {
  209.          this.format = (DecimalFormat)NumberFormat.getCurrencyInstance(var2);
  210.       } else {
  211.          this.format = (DecimalFormat)NumberFormat.getInstance(var2);
  212.       }
  213.  
  214.       this.handleNewFormat();
  215.       this.updateAttributes();
  216.    }
  217.  
  218.    public void workaroundSetText(TextComponent var1, String var2) {
  219.       String var3 = workaround(var1.getText());
  220.       if (!var3.equals(var2)) {
  221.          var1.setText(var2);
  222.       }
  223.    }
  224.  
  225.    public void updateAttributes() {
  226.       this.workaroundSetText(this.intMin, this.toString(this.format.getMinimumIntegerDigits()));
  227.       this.workaroundSetText(this.intMax, this.toString(this.format.getMaximumIntegerDigits()));
  228.       this.workaroundSetText(this.decMin, this.toString(this.format.getMinimumFractionDigits()));
  229.       this.workaroundSetText(this.decMax, this.toString(this.format.getMaximumFractionDigits()));
  230.       this.workaroundSetText(this.negPrefix, this.format.getNegativePrefix());
  231.       this.workaroundSetText(this.negSuffix, this.format.getNegativeSuffix());
  232.       this.workaroundSetText(this.posPrefix, this.format.getPositivePrefix());
  233.       this.workaroundSetText(this.posSuffix, this.format.getPositiveSuffix());
  234.    }
  235.  
  236.    public void clickedGetDefault() {
  237.       this.setFormatFromLocale();
  238.    }
  239.  
  240.    public void clickedGetCurrency() {
  241.       this.setFormatFromLocale();
  242.    }
  243.  
  244.    public void clickedGetPercent() {
  245.       this.setFormatFromLocale();
  246.    }
  247.  
  248.    public void selectedLocaleMenu() {
  249.       this.setFormatFromLocale();
  250.    }
  251.  
  252.    public void inputChanged() {
  253.       this.clickedRightButton();
  254.    }
  255.  
  256.    public void outputChanged() {
  257.       this.clickedLeftButton();
  258.    }
  259.  
  260.    public void clickedRightButton() {
  261.       String var1 = workaround(this.inputText.getText());
  262.  
  263.       Double var2;
  264.       try {
  265.          var2 = new Double(var1);
  266.       } catch (IllegalArgumentException var3) {
  267.          this.outputText.setText("");
  268.          this.inputText.selectAll();
  269.          return;
  270.       }
  271.  
  272.       this.workaroundSetText(this.outputText, this.format.format(var2));
  273.    }
  274.  
  275.    public void clickedLeftButton() {
  276.       String var1 = workaround(this.outputText.getText());
  277.       ParsePosition var3 = new ParsePosition(1);
  278.  
  279.       Number var2;
  280.       try {
  281.          var2 = this.format.parse(var1, var3);
  282.       } catch (IllegalArgumentException var5) {
  283.          this.errorText("Exception: " + var5.getClass() + ((Throwable)var5).getMessage());
  284.          this.inputText.setText("");
  285.          this.outputText.selectAll();
  286.          return;
  287.       }
  288.  
  289.       if (var3.getIndex() != var1.length()) {
  290.          this.errorText("excess text: " + var1.substring(var3.getIndex(), var1.length()));
  291.       }
  292.  
  293.       this.workaroundSetText(this.inputText, var2.toString());
  294.    }
  295.  
  296.    public void patternChanged() {
  297.       String var1 = workaround(this.patternText.getText());
  298.  
  299.       try {
  300.          if (isLocalized) {
  301.             this.format.applyLocalizedPattern(var1);
  302.             this.errorText("Pattern: " + var1 + " -> " + this.format.toLocalizedPattern());
  303.          } else {
  304.             this.format.applyPattern(var1);
  305.             this.errorText("Pattern: " + var1 + " -> " + this.format.toPattern());
  306.          }
  307.       } catch (Exception var3) {
  308.          this.errorText("Exception: " + var3.getClass() + ((Throwable)var3).getMessage());
  309.       }
  310.  
  311.       this.updateAttributes();
  312.       this.clickedRightButton();
  313.    }
  314.  
  315.    void addWithFont(Container var1, Component var2, Font var3) {
  316.       if (var3 != null) {
  317.          var2.setFont(var3);
  318.       }
  319.  
  320.       var1.add(var2);
  321.    }
  322.  
  323.    private void buildGUI() {
  324.       ((Component)this).setBackground(Color.white);
  325.       ((Container)this).setLayout(new FlowLayout(1, 2, 2));
  326.       Panel var1 = new Panel();
  327.       this.label1 = new Label("Decimal Number Formatting Demo", 1);
  328.       this.label1.setFont(Utility.titleFont);
  329.       ((Container)var1).add(this.label1);
  330.       this.label13 = new Label("v1.1a6, Demo:", 1);
  331.       this.label13.setFont(Utility.creditFont);
  332.       ((Container)var1).add(this.label13);
  333.       Utility.fixGrid(var1, 1);
  334.       ((Container)this).add(var1);
  335.       Panel var2 = new Panel();
  336.       this.label3 = new Label("New Number", 2);
  337.       this.label3.setFont(Utility.labelFont);
  338.       ((Container)var2).add(this.label3);
  339.       this.outputText = new TextField(35);
  340.       this.outputText.setFont(Utility.editFont);
  341.       ((Container)var2).add(this.outputText);
  342.       this.label2 = new Label("Java 1.0 Number", 2);
  343.       this.label2.setFont(Utility.labelFont);
  344.       ((Container)var2).add(this.label2);
  345.       this.inputText = new TextField(35);
  346.       this.inputText.addKeyListener(this);
  347.       this.inputText.setFont(Utility.editFont);
  348.       ((Container)var2).add(this.inputText);
  349.       this.label4 = new Label("Pattern", 2);
  350.       this.label4.setFont(Utility.labelFont);
  351.       ((Container)var2).add(this.label4);
  352.       this.patternText = new TextField(35);
  353.       this.patternText.addKeyListener(this);
  354.       this.patternText.setFont(Utility.editFont);
  355.       ((Container)var2).add(this.patternText);
  356.       ((Container)var2).add(new Label(" "));
  357.       this.getLocalized = new Checkbox("Localized Pattern");
  358.       this.getLocalized.addItemListener(this);
  359.       this.getLocalized.setFont(Utility.labelFont);
  360.       ((Container)var2).add(this.getLocalized);
  361.       Utility.fixGrid(var2, 2);
  362.       ((Container)this).add(var2);
  363.       this.localePanel = new Panel();
  364.       this.localeLabel = new Label("Locale:");
  365.       this.localeLabel.setFont(Utility.labelFont);
  366.       this.localePanel.add("loc", this.localeLabel);
  367.       this.localeMenu = new Choice();
  368.       this.localeMenu.addItemListener(this);
  369.       this.localeMenu.setFont(Utility.choiceFont);
  370.       this.localePanel.add(this.localeMenu);
  371.       this.group1 = new CheckboxGroup();
  372.       this.getInstance = new Checkbox("Default Format", this.group1, false);
  373.       this.getInstance.addItemListener(this);
  374.       this.getInstance.setFont(Utility.labelFont);
  375.       this.localePanel.add(this.getInstance);
  376.       this.getCurrency = new Checkbox("Currency Format", this.group1, true);
  377.       this.getCurrency.addItemListener(this);
  378.       this.getCurrency.setFont(Utility.labelFont);
  379.       this.localePanel.add(this.getCurrency);
  380.       this.getPercent = new Checkbox("Percent Format", this.group1, false);
  381.       this.getPercent.addItemListener(this);
  382.       this.getPercent.setFont(Utility.labelFont);
  383.       this.localePanel.add(this.getPercent);
  384.       Utility.fixGrid(this.localePanel, 1);
  385.       Panel var3 = new Panel();
  386.       ((Container)var3).add(this.localePanel);
  387.       BorderPanel var4 = new BorderPanel();
  388.       ((Component)var4).setBackground(Color.lightGray);
  389.       ((Container)var4).setLayout((LayoutManager)null);
  390.       ((Component)var4).setSize(8, 130);
  391.       ((Container)var3).add(var4);
  392.       Panel var5 = new Panel();
  393.       ((Container)var5).add(new Label(" "));
  394.       this.label11 = new Label("Min", 1);
  395.       this.label11.setFont(Utility.labelFont);
  396.       ((Container)var5).add(this.label11);
  397.       this.label12 = new Label("Max", 1);
  398.       this.label12.setFont(Utility.labelFont);
  399.       ((Container)var5).add(this.label12);
  400.       this.label9 = new Label("Integers", 2);
  401.       this.label9.setFont(Utility.labelFont);
  402.       ((Container)var5).add(this.label9);
  403.       this.intMin = new TextField(4);
  404.       this.intMin.addKeyListener(this);
  405.       this.intMin.setFont(Utility.editFont);
  406.       ((Container)var5).add(this.intMin);
  407.       this.intMax = new TextField(4);
  408.       this.intMax.addKeyListener(this);
  409.       this.intMax.setFont(Utility.editFont);
  410.       ((Container)var5).add(this.intMax);
  411.       this.label10 = new Label("Decimals", 2);
  412.       this.label10.setFont(Utility.labelFont);
  413.       ((Container)var5).add(this.label10);
  414.       this.decMin = new TextField(4);
  415.       this.decMin.addKeyListener(this);
  416.       this.decMin.setFont(Utility.editFont);
  417.       ((Container)var5).add(this.decMin);
  418.       this.decMax = new TextField(4);
  419.       this.decMax.addKeyListener(this);
  420.       this.decMax.setFont(Utility.editFont);
  421.       ((Container)var5).add(this.decMax);
  422.       ((Container)var5).add(new Label(" "));
  423.       this.label7 = new Label("Prefix", 1);
  424.       this.label7.setFont(Utility.labelFont);
  425.       ((Container)var5).add(this.label7);
  426.       this.label8 = new Label("Suffix", 1);
  427.       this.label8.setFont(Utility.labelFont);
  428.       ((Container)var5).add(this.label8);
  429.       this.label6 = new Label("Positive", 2);
  430.       this.label6.setFont(Utility.labelFont);
  431.       ((Container)var5).add(this.label6);
  432.       this.posPrefix = new TextField(4);
  433.       this.posPrefix.addKeyListener(this);
  434.       this.posPrefix.setFont(Utility.editFont);
  435.       ((Container)var5).add(this.posPrefix);
  436.       this.posSuffix = new TextField(4);
  437.       this.posSuffix.addKeyListener(this);
  438.       this.posSuffix.setFont(Utility.editFont);
  439.       ((Container)var5).add(this.posSuffix);
  440.       this.label5 = new Label("Negative", 2);
  441.       this.label5.setFont(Utility.labelFont);
  442.       ((Container)var5).add(this.label5);
  443.       this.negPrefix = new TextField(4);
  444.       this.negPrefix.addKeyListener(this);
  445.       this.negPrefix.setFont(Utility.editFont);
  446.       ((Container)var5).add(this.negPrefix);
  447.       this.negSuffix = new TextField(4);
  448.       this.negSuffix.addKeyListener(this);
  449.       this.negSuffix.setFont(Utility.editFont);
  450.       ((Container)var5).add(this.negSuffix);
  451.       Utility.fixGrid(var5, 3);
  452.       ((Container)var3).add(var5);
  453.       Utility.fixGrid(var3, 3);
  454.       Utility.setInsets(var3, var4, new Insets(20, 20, 2, 2));
  455.       ((Container)this).add(var3);
  456.       Panel var6 = new Panel();
  457.       this.addWithFont(var6, new Label("", 0), Utility.creditFont);
  458.       this.addWithFont(var6, new Label("", 0), Utility.creditFont);
  459.       Utility.fixGrid(var6, 1);
  460.       ((Container)this).add(var6);
  461.    }
  462.  
  463.    private String toString(int var1) {
  464.       Integer var2 = new Integer(var1);
  465.       return var2.toString();
  466.    }
  467.  
  468.    private int parseIntField(TextComponent var1) {
  469.       int var2 = 0;
  470.  
  471.       try {
  472.          Integer var3 = new Integer(workaround(var1.getText()));
  473.          var2 = var3;
  474.       } catch (NumberFormatException var4) {
  475.       }
  476.  
  477.       return var2;
  478.    }
  479.  
  480.    private void intMinChanged() {
  481.       this.format.setMinimumIntegerDigits(this.parseIntField(this.intMin));
  482.       this.updateAttributes();
  483.       this.handleAttributeChange();
  484.    }
  485.  
  486.    private void intMaxChanged() {
  487.       this.format.setMaximumIntegerDigits(this.parseIntField(this.intMax));
  488.       this.updateAttributes();
  489.       this.handleAttributeChange();
  490.    }
  491.  
  492.    private void decMinChanged() {
  493.       this.format.setMinimumFractionDigits(this.parseIntField(this.decMin));
  494.       this.updateAttributes();
  495.       this.handleAttributeChange();
  496.    }
  497.  
  498.    private void decMaxChanged() {
  499.       this.format.setMaximumFractionDigits(this.parseIntField(this.decMax));
  500.       this.updateAttributes();
  501.       this.handleAttributeChange();
  502.    }
  503.  
  504.    private void negPrefixChanged() {
  505.       this.format.setNegativePrefix(workaround(this.negPrefix.getText()));
  506.       this.updateAttributes();
  507.       this.handleAttributeChange();
  508.    }
  509.  
  510.    private void negSuffixChanged() {
  511.       this.format.setNegativeSuffix(workaround(this.negSuffix.getText()));
  512.       this.updateAttributes();
  513.       this.handleAttributeChange();
  514.    }
  515.  
  516.    private void posPrefixChanged() {
  517.       this.format.setPositivePrefix(workaround(this.posPrefix.getText()));
  518.       this.updateAttributes();
  519.       this.handleAttributeChange();
  520.    }
  521.  
  522.    private void posSuffixChanged() {
  523.       this.format.setPositiveSuffix(workaround(this.posSuffix.getText()));
  524.       this.updateAttributes();
  525.       this.handleAttributeChange();
  526.    }
  527.  
  528.    private static String workaround(String var0) {
  529.       StringBuffer var1 = new StringBuffer();
  530.  
  531.       for(int var2 = 0; var2 < var0.length(); ++var2) {
  532.          var1.append((char)(var0.charAt(var2) & 255));
  533.       }
  534.  
  535.       return var1.toString();
  536.    }
  537.  
  538.    private void errorText(String var1) {
  539.    }
  540. }
  541.