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