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