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