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