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