jtulach@576: package org.apidesign.demo.anagramwithspringandlookup; jtulach@576: jtulach@576: /** jtulach@576: */ jtulach@579: // BEGIN: anagramdemo.springlookup.Anagrams jtulach@576: public class Anagrams extends javax.swing.JFrame implements UI { jtulach@576: private WordLibrary wordLibrary; jtulach@576: private Scrambler scrambler; jtulach@576: jtulach@576: public Anagrams(WordLibrary w, Scrambler s) { jtulach@576: wordLibrary = w; jtulach@576: scrambler = s; jtulach@579: init(); jtulach@576: } jtulach@579: // FINISH: anagramdemo.springlookup.Anagrams jtulach@576: jtulach@576: private WordLibrary getWordLibrary() { jtulach@576: return wordLibrary; jtulach@576: } jtulach@576: private Scrambler getScrambler() { jtulach@576: return scrambler; jtulach@576: } jtulach@576: jtulach@576: public void display() { jtulach@576: initWord(); jtulach@576: setVisible(true); jtulach@576: } jtulach@576: int wordIdx = 0; jtulach@576: String original; jtulach@576: String scrambled; jtulach@576: jtulach@579: private void init() { jtulach@576: initComponents(); jtulach@576: getRootPane().setDefaultButton(guessButton); jtulach@576: jtulach@576: String version = System.getProperty("anagram.version"); jtulach@576: if (version != null) { jtulach@576: if (version.startsWith("app-")) { jtulach@576: version = version.substring(4); jtulach@576: } jtulach@576: setTitle("Anagrams - " + version + " version"); jtulach@576: } jtulach@576: } jtulach@576: jtulach@576: public final String getOriginalWord() { jtulach@576: return original; jtulach@576: } jtulach@576: jtulach@576: public final String getScrambledWord() { jtulach@576: return scrambled; jtulach@576: } jtulach@576: jtulach@576: /** This method is called from within the constructor to jtulach@576: * initialize the form. jtulach@576: * WARNING: Do NOT modify this code. The content of this method is jtulach@576: * always regenerated by the Form Editor. jtulach@576: */ jtulach@576: // //GEN-BEGIN:initComponents jtulach@576: private void initComponents() { jtulach@576: java.awt.GridBagConstraints gridBagConstraints; jtulach@576: jtulach@576: mainPanel = new javax.swing.JPanel(); jtulach@576: scrambledLabel = new javax.swing.JLabel(); jtulach@576: guessLabel = new javax.swing.JLabel(); jtulach@576: feedbackLabel = new javax.swing.JLabel(); jtulach@576: guessButton = new javax.swing.JButton(); jtulach@576: scrambledWord = new javax.swing.JTextField(); jtulach@576: guessedWord = new javax.swing.JTextField(); jtulach@576: nextTrial = new javax.swing.JButton(); jtulach@576: mainMenu = new javax.swing.JMenuBar(); jtulach@576: File = new javax.swing.JMenu(); jtulach@576: jMenuItem1 = new javax.swing.JMenuItem(); jtulach@576: jMenuItem2 = new javax.swing.JMenuItem(); jtulach@576: jtulach@576: setTitle("Anagrams"); jtulach@576: addWindowListener(new java.awt.event.WindowAdapter() { jtulach@576: public void windowClosing(java.awt.event.WindowEvent evt) { jtulach@576: exitForm(evt); jtulach@576: } jtulach@576: }); jtulach@576: jtulach@576: mainPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(11, 11, 12, 12)); jtulach@576: mainPanel.setMinimumSize(new java.awt.Dimension(297, 200)); jtulach@576: mainPanel.setPreferredSize(new java.awt.Dimension(297, 200)); jtulach@576: mainPanel.setLayout(new java.awt.GridBagLayout()); jtulach@576: jtulach@576: scrambledLabel.setText("Scrambled Word:"); jtulach@576: gridBagConstraints = new java.awt.GridBagConstraints(); jtulach@576: gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; jtulach@576: gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; jtulach@576: gridBagConstraints.insets = new java.awt.Insets(12, 12, 12, 6); jtulach@576: mainPanel.add(scrambledLabel, gridBagConstraints); jtulach@576: jtulach@576: guessLabel.setText("Your Guess:"); jtulach@576: gridBagConstraints = new java.awt.GridBagConstraints(); jtulach@576: gridBagConstraints.gridx = 0; jtulach@576: gridBagConstraints.gridy = 1; jtulach@576: gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; jtulach@576: gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; jtulach@576: gridBagConstraints.insets = new java.awt.Insets(0, 12, 12, 6); jtulach@576: mainPanel.add(guessLabel, gridBagConstraints); jtulach@576: jtulach@576: feedbackLabel.setText(" "); jtulach@576: gridBagConstraints = new java.awt.GridBagConstraints(); jtulach@576: gridBagConstraints.gridx = 1; jtulach@576: gridBagConstraints.gridy = 2; jtulach@576: gridBagConstraints.gridwidth = 2; jtulach@576: gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; jtulach@576: gridBagConstraints.weightx = 1.0; jtulach@576: gridBagConstraints.insets = new java.awt.Insets(0, 0, 6, 6); jtulach@576: mainPanel.add(feedbackLabel, gridBagConstraints); jtulach@576: jtulach@576: guessButton.setMnemonic('G'); jtulach@576: guessButton.setText("Guess"); jtulach@576: guessButton.setToolTipText("Guess the scrambled word."); jtulach@576: guessButton.addActionListener(new java.awt.event.ActionListener() { jtulach@576: public void actionPerformed(java.awt.event.ActionEvent evt) { jtulach@576: guessedWordActionPerformed(evt); jtulach@576: } jtulach@576: }); jtulach@576: gridBagConstraints = new java.awt.GridBagConstraints(); jtulach@576: gridBagConstraints.gridx = 2; jtulach@576: gridBagConstraints.gridy = 3; jtulach@576: gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; jtulach@576: gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 6); jtulach@576: mainPanel.add(guessButton, gridBagConstraints); jtulach@576: jtulach@576: scrambledWord.setEditable(false); jtulach@576: gridBagConstraints = new java.awt.GridBagConstraints(); jtulach@576: gridBagConstraints.gridwidth = 3; jtulach@576: gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; jtulach@576: gridBagConstraints.weightx = 1.0; jtulach@576: gridBagConstraints.insets = new java.awt.Insets(12, 0, 12, 11); jtulach@576: mainPanel.add(scrambledWord, gridBagConstraints); jtulach@576: gridBagConstraints = new java.awt.GridBagConstraints(); jtulach@576: gridBagConstraints.gridx = 1; jtulach@576: gridBagConstraints.gridy = 1; jtulach@576: gridBagConstraints.gridwidth = 3; jtulach@576: gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; jtulach@576: gridBagConstraints.weightx = 1.0; jtulach@576: gridBagConstraints.insets = new java.awt.Insets(0, 0, 12, 11); jtulach@576: mainPanel.add(guessedWord, gridBagConstraints); jtulach@576: jtulach@576: nextTrial.setMnemonic('N'); jtulach@576: nextTrial.setText("New Word"); jtulach@576: nextTrial.setToolTipText("Fetch a new word."); jtulach@576: nextTrial.addActionListener(new java.awt.event.ActionListener() { jtulach@576: public void actionPerformed(java.awt.event.ActionEvent evt) { jtulach@576: nextTrialActionPerformed(evt); jtulach@576: } jtulach@576: }); jtulach@576: gridBagConstraints = new java.awt.GridBagConstraints(); jtulach@576: gridBagConstraints.gridx = 3; jtulach@576: gridBagConstraints.gridy = 3; jtulach@576: gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 11); jtulach@576: mainPanel.add(nextTrial, gridBagConstraints); jtulach@576: jtulach@576: getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER); jtulach@576: jtulach@576: File.setText("File"); jtulach@576: jtulach@576: jMenuItem1.setText("About"); jtulach@576: jMenuItem1.setToolTipText("About"); jtulach@576: jMenuItem1.addActionListener(new java.awt.event.ActionListener() { jtulach@576: public void actionPerformed(java.awt.event.ActionEvent evt) { jtulach@576: jMenuItem1ActionPerformed(evt); jtulach@576: } jtulach@576: }); jtulach@576: File.add(jMenuItem1); jtulach@576: jtulach@576: jMenuItem2.setText("Exit"); jtulach@576: jMenuItem2.setToolTipText("Quit Team, Quit!"); jtulach@576: jMenuItem2.addActionListener(new java.awt.event.ActionListener() { jtulach@576: public void actionPerformed(java.awt.event.ActionEvent evt) { jtulach@576: jMenuItem2ActionPerformed(evt); jtulach@576: } jtulach@576: }); jtulach@576: File.add(jMenuItem2); jtulach@576: jtulach@576: mainMenu.add(File); jtulach@576: jtulach@576: setJMenuBar(mainMenu); jtulach@576: jtulach@576: java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); jtulach@576: setBounds((screenSize.width-400)/2, (screenSize.height-250)/2, 400, 250); jtulach@576: }// //GEN-END:initComponents jtulach@576: jtulach@576: private void nextTrialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nextTrialActionPerformed jtulach@576: wordIdx++; jtulach@576: jtulach@576: feedbackLabel.setText(" "); jtulach@576: initWord(); jtulach@576: guessedWord.setText(""); jtulach@576: getRootPane().setDefaultButton(guessButton); jtulach@576: jtulach@576: guessedWord.requestFocus(); jtulach@576: }//GEN-LAST:event_nextTrialActionPerformed jtulach@576: jtulach@576: protected final void initWord() { jtulach@576: jtulach@576: String[] words = getWordLibrary().getWords(); jtulach@576: int index = wordIdx % words.length; jtulach@576: jtulach@576: original = words[index]; jtulach@579: Scrambler tmp = getScrambler(); jtulach@579: scrambled = tmp != null ? tmp.scramble(original) : original; jtulach@576: jtulach@576: scrambledWord.setText(scrambled); jtulach@576: } jtulach@576: jtulach@576: private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed jtulach@576: System.exit(0); jtulach@576: }//GEN-LAST:event_jMenuItem2ActionPerformed jtulach@576: jtulach@576: private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed jtulach@576: new About().show(); jtulach@576: }//GEN-LAST:event_jMenuItem1ActionPerformed jtulach@576: jtulach@576: private void guessedWordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_guessedWordActionPerformed jtulach@576: jtulach@576: if(guessedWord.getText().equals(original)) { jtulach@576: feedbackLabel.setText("Correct! Try a new word!"); jtulach@576: getRootPane().setDefaultButton(nextTrial); jtulach@576: } else { jtulach@576: feedbackLabel.setText("Incorrect! Try again!"); jtulach@576: guessedWord.setText(""); jtulach@576: } jtulach@576: jtulach@576: guessedWord.requestFocus(); jtulach@576: }//GEN-LAST:event_guessedWordActionPerformed jtulach@576: jtulach@576: /** Exit the Application */ jtulach@576: private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm jtulach@576: System.exit(0); jtulach@576: }//GEN-LAST:event_exitForm jtulach@576: jtulach@576: @Override jtulach@576: public void setVisible(boolean v) { jtulach@576: super.setVisible(v); jtulach@576: if (v) { jtulach@576: guessedWord.requestFocus(); jtulach@576: } jtulach@576: } jtulach@576: jtulach@576: // Variables declaration - do not modify//GEN-BEGIN:variables jtulach@576: private javax.swing.JMenu File; jtulach@576: private javax.swing.JLabel feedbackLabel; jtulach@576: private javax.swing.JButton guessButton; jtulach@576: private javax.swing.JLabel guessLabel; jtulach@576: private javax.swing.JTextField guessedWord; jtulach@576: private javax.swing.JMenuItem jMenuItem1; jtulach@576: private javax.swing.JMenuItem jMenuItem2; jtulach@576: private javax.swing.JMenuBar mainMenu; jtulach@576: private javax.swing.JPanel mainPanel; jtulach@576: private javax.swing.JButton nextTrial; jtulach@576: private javax.swing.JLabel scrambledLabel; jtulach@576: private javax.swing.JTextField scrambledWord; jtulach@576: // End of variables declaration//GEN-END:variables jtulach@576: jtulach@576: }