samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/Anagrams.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 10:08:42 +0200
changeset 252 763bf709a318
parent 251 266127621c8f
child 255 6ef1415912c1
permissions -rw-r--r--
Merge: Patrick's touches
     1 package org.apidesign.anagram.gui;
     2 
     3 import org.apidesign.anagram.api.Scrambler;
     4 import org.apidesign.anagram.api.UI;
     5 import org.apidesign.anagram.api.WordLibrary;
     6 
     7 /** Modified version of classical NetBeans Anagrams example for purposes
     8  * of modular world.
     9  *
    10  * @author  Dirk Ruiz, Jaroslav Tulach
    11  */
    12 // BEGIN: anagram.ui.Anagrams
    13 public abstract class Anagrams extends javax.swing.JFrame implements UI {
    14     public Anagrams() {
    15         initComponents();        
    16         getRootPane().setDefaultButton(guessButton);
    17         
    18         String version = System.getProperty("anagram.version");
    19         if (version != null) {
    20             if (version.startsWith("app-")) {
    21                 version = version.substring(4);
    22             }
    23             setTitle("Anagrams - " + version + " version");
    24         }
    25     }
    26     
    27     protected abstract WordLibrary getWordLibrary();
    28     protected abstract Scrambler getScrambler();
    29     
    30     public void display() {
    31         initWord();
    32         setVisible(true);
    33     }
    34 // FINISH: anagram.ui.Anagrams
    35     int wordIdx = 0;
    36     String original;
    37     String scrambled;
    38     
    39     public final String getOriginalWord() {
    40         return original;
    41     }
    42     
    43     public final String getScrambledWord() {
    44         return scrambled;
    45     }
    46     
    47     /** This method is called from within the constructor to
    48      * initialize the form.
    49      * WARNING: Do NOT modify this code. The content of this method is
    50      * always regenerated by the Form Editor.
    51      */
    52     private void initComponents() {//GEN-BEGIN:initComponents
    53         java.awt.GridBagConstraints gridBagConstraints;
    54 
    55         mainPanel = new javax.swing.JPanel();
    56         scrambledLabel = new javax.swing.JLabel();
    57         guessLabel = new javax.swing.JLabel();
    58         feedbackLabel = new javax.swing.JLabel();
    59         guessButton = new javax.swing.JButton();
    60         scrambledWord = new javax.swing.JTextField();
    61         guessedWord = new javax.swing.JTextField();
    62         nextTrial = new javax.swing.JButton();
    63         mainMenu = new javax.swing.JMenuBar();
    64         File = new javax.swing.JMenu();
    65         jMenuItem1 = new javax.swing.JMenuItem();
    66         jMenuItem2 = new javax.swing.JMenuItem();
    67 
    68         setTitle("Anagrams");
    69         addWindowListener(new java.awt.event.WindowAdapter() {
    70             public void windowClosing(java.awt.event.WindowEvent evt) {
    71                 exitForm(evt);
    72             }
    73         });
    74 
    75         mainPanel.setLayout(new java.awt.GridBagLayout());
    76 
    77         mainPanel.setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets(11, 11, 12, 12)));
    78         mainPanel.setMinimumSize(new java.awt.Dimension(297, 200));
    79         mainPanel.setPreferredSize(new java.awt.Dimension(297, 200));
    80         scrambledLabel.setText("Scrambled Word:");
    81         gridBagConstraints = new java.awt.GridBagConstraints();
    82         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    83         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
    84         gridBagConstraints.insets = new java.awt.Insets(12, 12, 12, 6);
    85         mainPanel.add(scrambledLabel, gridBagConstraints);
    86 
    87         guessLabel.setText("Your Guess:");
    88         gridBagConstraints = new java.awt.GridBagConstraints();
    89         gridBagConstraints.gridx = 0;
    90         gridBagConstraints.gridy = 1;
    91         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    92         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
    93         gridBagConstraints.insets = new java.awt.Insets(0, 12, 12, 6);
    94         mainPanel.add(guessLabel, gridBagConstraints);
    95 
    96         feedbackLabel.setText(" ");
    97         gridBagConstraints = new java.awt.GridBagConstraints();
    98         gridBagConstraints.gridx = 1;
    99         gridBagConstraints.gridy = 2;
   100         gridBagConstraints.gridwidth = 2;
   101         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
   102         gridBagConstraints.weightx = 1.0;
   103         gridBagConstraints.insets = new java.awt.Insets(0, 0, 6, 6);
   104         mainPanel.add(feedbackLabel, gridBagConstraints);
   105 
   106         guessButton.setMnemonic('G');
   107         guessButton.setText("Guess");
   108         guessButton.setToolTipText("Guess the scrambled word.");
   109         guessButton.addActionListener(new java.awt.event.ActionListener() {
   110             public void actionPerformed(java.awt.event.ActionEvent evt) {
   111                 guessedWordActionPerformed(evt);
   112             }
   113         });
   114 
   115         gridBagConstraints = new java.awt.GridBagConstraints();
   116         gridBagConstraints.gridx = 2;
   117         gridBagConstraints.gridy = 3;
   118         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
   119         gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 6);
   120         mainPanel.add(guessButton, gridBagConstraints);
   121 
   122         scrambledWord.setEditable(false);
   123         gridBagConstraints = new java.awt.GridBagConstraints();
   124         gridBagConstraints.gridwidth = 3;
   125         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
   126         gridBagConstraints.weightx = 1.0;
   127         gridBagConstraints.insets = new java.awt.Insets(12, 0, 12, 11);
   128         mainPanel.add(scrambledWord, gridBagConstraints);
   129 
   130         gridBagConstraints = new java.awt.GridBagConstraints();
   131         gridBagConstraints.gridx = 1;
   132         gridBagConstraints.gridy = 1;
   133         gridBagConstraints.gridwidth = 3;
   134         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
   135         gridBagConstraints.weightx = 1.0;
   136         gridBagConstraints.insets = new java.awt.Insets(0, 0, 12, 11);
   137         mainPanel.add(guessedWord, gridBagConstraints);
   138 
   139         nextTrial.setMnemonic('N');
   140         nextTrial.setText("New Word");
   141         nextTrial.setToolTipText("Fetch a new word.");
   142         nextTrial.addActionListener(new java.awt.event.ActionListener() {
   143             public void actionPerformed(java.awt.event.ActionEvent evt) {
   144                 nextTrialActionPerformed(evt);
   145             }
   146         });
   147 
   148         gridBagConstraints = new java.awt.GridBagConstraints();
   149         gridBagConstraints.gridx = 3;
   150         gridBagConstraints.gridy = 3;
   151         gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 11);
   152         mainPanel.add(nextTrial, gridBagConstraints);
   153 
   154         getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER);
   155 
   156         File.setText("File");
   157         jMenuItem1.setText("About");
   158         jMenuItem1.setToolTipText("About");
   159         jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
   160             public void actionPerformed(java.awt.event.ActionEvent evt) {
   161                 jMenuItem1ActionPerformed(evt);
   162             }
   163         });
   164 
   165         File.add(jMenuItem1);
   166 
   167         jMenuItem2.setText("Exit");
   168         jMenuItem2.setToolTipText("Quit Team, Quit!");
   169         jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
   170             public void actionPerformed(java.awt.event.ActionEvent evt) {
   171                 jMenuItem2ActionPerformed(evt);
   172             }
   173         });
   174 
   175         File.add(jMenuItem2);
   176 
   177         mainMenu.add(File);
   178 
   179         setJMenuBar(mainMenu);
   180 
   181         java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
   182         setBounds((screenSize.width-400)/2, (screenSize.height-250)/2, 400, 250);
   183     }//GEN-END:initComponents
   184 
   185     private void nextTrialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nextTrialActionPerformed
   186         wordIdx++;
   187         
   188         feedbackLabel.setText(" ");
   189         initWord();
   190         guessedWord.setText("");
   191         getRootPane().setDefaultButton(guessButton);        
   192         
   193         guessedWord.requestFocus();
   194     }//GEN-LAST:event_nextTrialActionPerformed
   195 
   196     protected final void initWord() {
   197         
   198         String[] words = getWordLibrary().getWords();
   199         int index = wordIdx % words.length;
   200         
   201         original = words[index];
   202         Scrambler scrambler = getScrambler();
   203         scrambled = scrambler != null ? scrambler.scramble(original) : original;
   204         
   205         scrambledWord.setText(scrambled);
   206     }
   207     
   208     private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
   209         System.exit(0);
   210     }//GEN-LAST:event_jMenuItem2ActionPerformed
   211 
   212     private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
   213         new About().show();
   214     }//GEN-LAST:event_jMenuItem1ActionPerformed
   215         
   216     private void guessedWordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_guessedWordActionPerformed
   217         
   218         if(guessedWord.getText().equals(original)) {
   219             feedbackLabel.setText("Correct! Try a new word!");
   220             getRootPane().setDefaultButton(nextTrial);
   221         } else {
   222             feedbackLabel.setText("Incorrect! Try again!");
   223             guessedWord.setText("");
   224         }
   225         
   226         guessedWord.requestFocus();
   227     }//GEN-LAST:event_guessedWordActionPerformed
   228     
   229     /** Exit the Application */
   230     private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
   231         System.exit(0);
   232     }//GEN-LAST:event_exitForm
   233 
   234     @Override
   235     public void setVisible(boolean v) {
   236         super.setVisible(v);
   237         if (v) {
   238             guessedWord.requestFocus();
   239         }
   240     }
   241     
   242     // Variables declaration - do not modify//GEN-BEGIN:variables
   243     private javax.swing.JMenu File;
   244     private javax.swing.JLabel feedbackLabel;
   245     private javax.swing.JButton guessButton;
   246     private javax.swing.JLabel guessLabel;
   247     private javax.swing.JTextField guessedWord;
   248     private javax.swing.JMenuItem jMenuItem1;
   249     private javax.swing.JMenuItem jMenuItem2;
   250     private javax.swing.JMenuBar mainMenu;
   251     private javax.swing.JPanel mainPanel;
   252     private javax.swing.JButton nextTrial;
   253     private javax.swing.JLabel scrambledLabel;
   254     private javax.swing.JTextField scrambledWord;
   255     // End of variables declaration//GEN-END:variables
   256     
   257 }