samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/Anagrams.java
1 package org.apidesign.anagram.gui;
3 import org.apidesign.anagram.api.Scrambler;
4 import org.apidesign.anagram.api.UI;
5 import org.apidesign.anagram.api.WordLibrary;
7 /** Modified version of classical NetBeans Anagrams example for purposes
10 * @author Dirk Ruiz, Jaroslav Tulach
12 // BEGIN: anagram.ui.Anagrams
13 public abstract class Anagrams extends javax.swing.JFrame implements UI {
16 getRootPane().setDefaultButton(guessButton);
18 String version = System.getProperty("anagram.version");
19 if (version != null) {
20 if (version.startsWith("app-")) {
21 version = version.substring(4);
23 setTitle("Anagrams - " + version + " version");
27 protected abstract WordLibrary getWordLibrary();
28 protected abstract Scrambler getScrambler();
30 public void display() {
34 // FINISH: anagram.ui.Anagrams
39 public final String getOriginalWord() {
43 public final String getScrambledWord() {
47 /** This method is called from within the constructor to
48 * initialize the form.
49 * WARNING: Do NOT modify this code. The content of this method is
50 * always regenerated by the Form Editor.
52 private void initComponents() {//GEN-BEGIN:initComponents
53 java.awt.GridBagConstraints gridBagConstraints;
55 mainPanel = new javax.swing.JPanel();
56 scrambledLabel = new javax.swing.JLabel();
57 guessLabel = new javax.swing.JLabel();
58 feedbackLabel = new javax.swing.JLabel();
59 guessButton = new javax.swing.JButton();
60 scrambledWord = new javax.swing.JTextField();
61 guessedWord = new javax.swing.JTextField();
62 nextTrial = new javax.swing.JButton();
63 mainMenu = new javax.swing.JMenuBar();
64 File = new javax.swing.JMenu();
65 jMenuItem1 = new javax.swing.JMenuItem();
66 jMenuItem2 = new javax.swing.JMenuItem();
69 addWindowListener(new java.awt.event.WindowAdapter() {
70 public void windowClosing(java.awt.event.WindowEvent evt) {
75 mainPanel.setLayout(new java.awt.GridBagLayout());
77 mainPanel.setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets(11, 11, 12, 12)));
78 mainPanel.setMinimumSize(new java.awt.Dimension(297, 200));
79 mainPanel.setPreferredSize(new java.awt.Dimension(297, 200));
80 scrambledLabel.setText("Scrambled Word:");
81 gridBagConstraints = new java.awt.GridBagConstraints();
82 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
83 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
84 gridBagConstraints.insets = new java.awt.Insets(12, 12, 12, 6);
85 mainPanel.add(scrambledLabel, gridBagConstraints);
87 guessLabel.setText("Your Guess:");
88 gridBagConstraints = new java.awt.GridBagConstraints();
89 gridBagConstraints.gridx = 0;
90 gridBagConstraints.gridy = 1;
91 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
92 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
93 gridBagConstraints.insets = new java.awt.Insets(0, 12, 12, 6);
94 mainPanel.add(guessLabel, gridBagConstraints);
96 feedbackLabel.setText(" ");
97 gridBagConstraints = new java.awt.GridBagConstraints();
98 gridBagConstraints.gridx = 1;
99 gridBagConstraints.gridy = 2;
100 gridBagConstraints.gridwidth = 2;
101 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
102 gridBagConstraints.weightx = 1.0;
103 gridBagConstraints.insets = new java.awt.Insets(0, 0, 6, 6);
104 mainPanel.add(feedbackLabel, gridBagConstraints);
106 guessButton.setMnemonic('G');
107 guessButton.setText("Guess");
108 guessButton.setToolTipText("Guess the scrambled word.");
109 guessButton.addActionListener(new java.awt.event.ActionListener() {
110 public void actionPerformed(java.awt.event.ActionEvent evt) {
111 guessedWordActionPerformed(evt);
115 gridBagConstraints = new java.awt.GridBagConstraints();
116 gridBagConstraints.gridx = 2;
117 gridBagConstraints.gridy = 3;
118 gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
119 gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 6);
120 mainPanel.add(guessButton, gridBagConstraints);
122 scrambledWord.setEditable(false);
123 gridBagConstraints = new java.awt.GridBagConstraints();
124 gridBagConstraints.gridwidth = 3;
125 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
126 gridBagConstraints.weightx = 1.0;
127 gridBagConstraints.insets = new java.awt.Insets(12, 0, 12, 11);
128 mainPanel.add(scrambledWord, gridBagConstraints);
130 gridBagConstraints = new java.awt.GridBagConstraints();
131 gridBagConstraints.gridx = 1;
132 gridBagConstraints.gridy = 1;
133 gridBagConstraints.gridwidth = 3;
134 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
135 gridBagConstraints.weightx = 1.0;
136 gridBagConstraints.insets = new java.awt.Insets(0, 0, 12, 11);
137 mainPanel.add(guessedWord, gridBagConstraints);
139 nextTrial.setMnemonic('N');
140 nextTrial.setText("New Word");
141 nextTrial.setToolTipText("Fetch a new word.");
142 nextTrial.addActionListener(new java.awt.event.ActionListener() {
143 public void actionPerformed(java.awt.event.ActionEvent evt) {
144 nextTrialActionPerformed(evt);
148 gridBagConstraints = new java.awt.GridBagConstraints();
149 gridBagConstraints.gridx = 3;
150 gridBagConstraints.gridy = 3;
151 gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 11);
152 mainPanel.add(nextTrial, gridBagConstraints);
154 getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER);
156 File.setText("File");
157 jMenuItem1.setText("About");
158 jMenuItem1.setToolTipText("About");
159 jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
160 public void actionPerformed(java.awt.event.ActionEvent evt) {
161 jMenuItem1ActionPerformed(evt);
165 File.add(jMenuItem1);
167 jMenuItem2.setText("Exit");
168 jMenuItem2.setToolTipText("Quit Team, Quit!");
169 jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
170 public void actionPerformed(java.awt.event.ActionEvent evt) {
171 jMenuItem2ActionPerformed(evt);
175 File.add(jMenuItem2);
179 setJMenuBar(mainMenu);
181 java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
182 setBounds((screenSize.width-400)/2, (screenSize.height-250)/2, 400, 250);
183 }//GEN-END:initComponents
185 private void nextTrialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nextTrialActionPerformed
188 feedbackLabel.setText(" ");
190 guessedWord.setText("");
191 getRootPane().setDefaultButton(guessButton);
193 guessedWord.requestFocus();
194 }//GEN-LAST:event_nextTrialActionPerformed
196 protected final void initWord() {
198 String[] words = getWordLibrary().getWords();
199 int index = wordIdx % words.length;
201 original = words[index];
202 scrambled = getScrambler().scramble(original);
204 scrambledWord.setText(scrambled);
207 private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
209 }//GEN-LAST:event_jMenuItem2ActionPerformed
211 private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
213 }//GEN-LAST:event_jMenuItem1ActionPerformed
215 private void guessedWordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_guessedWordActionPerformed
217 if(guessedWord.getText().equals(original)) {
218 feedbackLabel.setText("Correct! Try a new word!");
219 getRootPane().setDefaultButton(nextTrial);
221 feedbackLabel.setText("Incorrect! Try again!");
222 guessedWord.setText("");
225 guessedWord.requestFocus();
226 }//GEN-LAST:event_guessedWordActionPerformed
228 /** Exit the Application */
229 private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
231 }//GEN-LAST:event_exitForm
234 public void setVisible(boolean v) {
237 guessedWord.requestFocus();
241 // Variables declaration - do not modify//GEN-BEGIN:variables
242 private javax.swing.JMenu File;
243 private javax.swing.JLabel feedbackLabel;
244 private javax.swing.JButton guessButton;
245 private javax.swing.JLabel guessLabel;
246 private javax.swing.JTextField guessedWord;
247 private javax.swing.JMenuItem jMenuItem1;
248 private javax.swing.JMenuItem jMenuItem2;
249 private javax.swing.JMenuBar mainMenu;
250 private javax.swing.JPanel mainPanel;
251 private javax.swing.JButton nextTrial;
252 private javax.swing.JLabel scrambledLabel;
253 private javax.swing.JTextField scrambledWord;
254 // End of variables declaration//GEN-END:variables