anagramdemo/anagrambase/src/main/java/org/apidesign/demo/anagramwithspringandlookup/Anagrams.java
1 package org.apidesign.demo.anagramwithspringandlookup;
5 // BEGIN: anagramdemo.springlookup.Anagrams
6 public class Anagrams extends javax.swing.JFrame implements UI {
7 private WordLibrary wordLibrary;
8 private Scrambler scrambler;
10 public Anagrams(WordLibrary w, Scrambler s) {
15 // FINISH: anagramdemo.springlookup.Anagrams
17 private WordLibrary getWordLibrary() {
20 private Scrambler getScrambler() {
24 public void display() {
34 getRootPane().setDefaultButton(guessButton);
36 String version = System.getProperty("anagram.version");
37 if (version != null) {
38 if (version.startsWith("app-")) {
39 version = version.substring(4);
41 setTitle("Anagrams - " + version + " version");
45 public final String getOriginalWord() {
49 public final String getScrambledWord() {
53 /** This method is called from within the constructor to
54 * initialize the form.
55 * WARNING: Do NOT modify this code. The content of this method is
56 * always regenerated by the Form Editor.
58 // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
59 private void initComponents() {
60 java.awt.GridBagConstraints gridBagConstraints;
62 mainPanel = new javax.swing.JPanel();
63 scrambledLabel = new javax.swing.JLabel();
64 guessLabel = new javax.swing.JLabel();
65 feedbackLabel = new javax.swing.JLabel();
66 guessButton = new javax.swing.JButton();
67 scrambledWord = new javax.swing.JTextField();
68 guessedWord = new javax.swing.JTextField();
69 nextTrial = new javax.swing.JButton();
70 mainMenu = new javax.swing.JMenuBar();
71 File = new javax.swing.JMenu();
72 jMenuItem1 = new javax.swing.JMenuItem();
73 jMenuItem2 = new javax.swing.JMenuItem();
76 addWindowListener(new java.awt.event.WindowAdapter() {
77 public void windowClosing(java.awt.event.WindowEvent evt) {
82 mainPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(11, 11, 12, 12));
83 mainPanel.setMinimumSize(new java.awt.Dimension(297, 200));
84 mainPanel.setPreferredSize(new java.awt.Dimension(297, 200));
85 mainPanel.setLayout(new java.awt.GridBagLayout());
87 scrambledLabel.setText("Scrambled Word:");
88 gridBagConstraints = new java.awt.GridBagConstraints();
89 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
90 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
91 gridBagConstraints.insets = new java.awt.Insets(12, 12, 12, 6);
92 mainPanel.add(scrambledLabel, gridBagConstraints);
94 guessLabel.setText("Your Guess:");
95 gridBagConstraints = new java.awt.GridBagConstraints();
96 gridBagConstraints.gridx = 0;
97 gridBagConstraints.gridy = 1;
98 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
99 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
100 gridBagConstraints.insets = new java.awt.Insets(0, 12, 12, 6);
101 mainPanel.add(guessLabel, gridBagConstraints);
103 feedbackLabel.setText(" ");
104 gridBagConstraints = new java.awt.GridBagConstraints();
105 gridBagConstraints.gridx = 1;
106 gridBagConstraints.gridy = 2;
107 gridBagConstraints.gridwidth = 2;
108 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
109 gridBagConstraints.weightx = 1.0;
110 gridBagConstraints.insets = new java.awt.Insets(0, 0, 6, 6);
111 mainPanel.add(feedbackLabel, gridBagConstraints);
113 guessButton.setMnemonic('G');
114 guessButton.setText("Guess");
115 guessButton.setToolTipText("Guess the scrambled word.");
116 guessButton.addActionListener(new java.awt.event.ActionListener() {
117 public void actionPerformed(java.awt.event.ActionEvent evt) {
118 guessedWordActionPerformed(evt);
121 gridBagConstraints = new java.awt.GridBagConstraints();
122 gridBagConstraints.gridx = 2;
123 gridBagConstraints.gridy = 3;
124 gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
125 gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 6);
126 mainPanel.add(guessButton, gridBagConstraints);
128 scrambledWord.setEditable(false);
129 gridBagConstraints = new java.awt.GridBagConstraints();
130 gridBagConstraints.gridwidth = 3;
131 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
132 gridBagConstraints.weightx = 1.0;
133 gridBagConstraints.insets = new java.awt.Insets(12, 0, 12, 11);
134 mainPanel.add(scrambledWord, gridBagConstraints);
135 gridBagConstraints = new java.awt.GridBagConstraints();
136 gridBagConstraints.gridx = 1;
137 gridBagConstraints.gridy = 1;
138 gridBagConstraints.gridwidth = 3;
139 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
140 gridBagConstraints.weightx = 1.0;
141 gridBagConstraints.insets = new java.awt.Insets(0, 0, 12, 11);
142 mainPanel.add(guessedWord, gridBagConstraints);
144 nextTrial.setMnemonic('N');
145 nextTrial.setText("New Word");
146 nextTrial.setToolTipText("Fetch a new word.");
147 nextTrial.addActionListener(new java.awt.event.ActionListener() {
148 public void actionPerformed(java.awt.event.ActionEvent evt) {
149 nextTrialActionPerformed(evt);
152 gridBagConstraints = new java.awt.GridBagConstraints();
153 gridBagConstraints.gridx = 3;
154 gridBagConstraints.gridy = 3;
155 gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 11);
156 mainPanel.add(nextTrial, gridBagConstraints);
158 getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER);
160 File.setText("File");
162 jMenuItem1.setText("About");
163 jMenuItem1.setToolTipText("About");
164 jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
165 public void actionPerformed(java.awt.event.ActionEvent evt) {
166 jMenuItem1ActionPerformed(evt);
169 File.add(jMenuItem1);
171 jMenuItem2.setText("Exit");
172 jMenuItem2.setToolTipText("Quit Team, Quit!");
173 jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
174 public void actionPerformed(java.awt.event.ActionEvent evt) {
175 jMenuItem2ActionPerformed(evt);
178 File.add(jMenuItem2);
182 setJMenuBar(mainMenu);
184 java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
185 setBounds((screenSize.width-400)/2, (screenSize.height-250)/2, 400, 250);
186 }// </editor-fold>//GEN-END:initComponents
188 private void nextTrialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nextTrialActionPerformed
191 feedbackLabel.setText(" ");
193 guessedWord.setText("");
194 getRootPane().setDefaultButton(guessButton);
196 guessedWord.requestFocus();
197 }//GEN-LAST:event_nextTrialActionPerformed
199 protected final void initWord() {
201 String[] words = getWordLibrary().getWords();
202 int index = wordIdx % words.length;
204 original = words[index];
205 Scrambler tmp = getScrambler();
206 scrambled = tmp != null ? tmp.scramble(original) : original;
208 scrambledWord.setText(scrambled);
211 private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
213 }//GEN-LAST:event_jMenuItem2ActionPerformed
215 private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
217 }//GEN-LAST:event_jMenuItem1ActionPerformed
219 private void guessedWordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_guessedWordActionPerformed
221 if(guessedWord.getText().equals(original)) {
222 feedbackLabel.setText("Correct! Try a new word!");
223 getRootPane().setDefaultButton(nextTrial);
225 feedbackLabel.setText("Incorrect! Try again!");
226 guessedWord.setText("");
229 guessedWord.requestFocus();
230 }//GEN-LAST:event_guessedWordActionPerformed
232 /** Exit the Application */
233 private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
235 }//GEN-LAST:event_exitForm
238 public void setVisible(boolean v) {
241 guessedWord.requestFocus();
245 // Variables declaration - do not modify//GEN-BEGIN:variables
246 private javax.swing.JMenu File;
247 private javax.swing.JLabel feedbackLabel;
248 private javax.swing.JButton guessButton;
249 private javax.swing.JLabel guessLabel;
250 private javax.swing.JTextField guessedWord;
251 private javax.swing.JMenuItem jMenuItem1;
252 private javax.swing.JMenuItem jMenuItem2;
253 private javax.swing.JMenuBar mainMenu;
254 private javax.swing.JPanel mainPanel;
255 private javax.swing.JButton nextTrial;
256 private javax.swing.JLabel scrambledLabel;
257 private javax.swing.JTextField scrambledWord;
258 // End of variables declaration//GEN-END:variables