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