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