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