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