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