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