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 public abstract class Anagrams extends javax.swing.JFrame implements UI {
18 /** Creates new form Anagrams */
21 getRootPane().setDefaultButton(guessButton);
24 protected abstract WordLibrary getWordLibrary();
25 protected abstract Scrambler getScrambler();
29 public void addNotify() {
34 /** This method is called from within the constructor to
35 * initialize the form.
36 * WARNING: Do NOT modify this code. The content of this method is
37 * always regenerated by the Form Editor.
39 private void initComponents() {//GEN-BEGIN:initComponents
40 java.awt.GridBagConstraints gridBagConstraints;
42 mainPanel = new javax.swing.JPanel();
43 scrambledLabel = new javax.swing.JLabel();
44 guessLabel = new javax.swing.JLabel();
45 feedbackLabel = new javax.swing.JLabel();
46 guessButton = new javax.swing.JButton();
47 scrambledWord = new javax.swing.JTextField();
48 guessedWord = new javax.swing.JTextField();
49 nextTrial = new javax.swing.JButton();
50 mainMenu = new javax.swing.JMenuBar();
51 File = new javax.swing.JMenu();
52 jMenuItem1 = new javax.swing.JMenuItem();
53 jMenuItem2 = new javax.swing.JMenuItem();
56 addWindowListener(new java.awt.event.WindowAdapter() {
57 public void windowClosing(java.awt.event.WindowEvent evt) {
62 mainPanel.setLayout(new java.awt.GridBagLayout());
64 mainPanel.setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets(11, 11, 12, 12)));
65 mainPanel.setMinimumSize(new java.awt.Dimension(297, 200));
66 mainPanel.setPreferredSize(new java.awt.Dimension(297, 200));
67 scrambledLabel.setText("Scrambled Word:");
68 gridBagConstraints = new java.awt.GridBagConstraints();
69 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
70 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
71 gridBagConstraints.insets = new java.awt.Insets(12, 12, 12, 6);
72 mainPanel.add(scrambledLabel, gridBagConstraints);
74 guessLabel.setText("Your Guess:");
75 gridBagConstraints = new java.awt.GridBagConstraints();
76 gridBagConstraints.gridx = 0;
77 gridBagConstraints.gridy = 1;
78 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
79 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
80 gridBagConstraints.insets = new java.awt.Insets(0, 12, 12, 6);
81 mainPanel.add(guessLabel, gridBagConstraints);
83 feedbackLabel.setText(" ");
84 gridBagConstraints = new java.awt.GridBagConstraints();
85 gridBagConstraints.gridx = 1;
86 gridBagConstraints.gridy = 2;
87 gridBagConstraints.gridwidth = 2;
88 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
89 gridBagConstraints.weightx = 1.0;
90 gridBagConstraints.insets = new java.awt.Insets(0, 0, 6, 6);
91 mainPanel.add(feedbackLabel, gridBagConstraints);
93 guessButton.setMnemonic('G');
94 guessButton.setText("Guess");
95 guessButton.setToolTipText("Guess the scrambled word.");
96 guessButton.addActionListener(new java.awt.event.ActionListener() {
97 public void actionPerformed(java.awt.event.ActionEvent evt) {
98 guessedWordActionPerformed(evt);
102 gridBagConstraints = new java.awt.GridBagConstraints();
103 gridBagConstraints.gridx = 2;
104 gridBagConstraints.gridy = 3;
105 gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
106 gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 6);
107 mainPanel.add(guessButton, gridBagConstraints);
109 scrambledWord.setEditable(false);
110 gridBagConstraints = new java.awt.GridBagConstraints();
111 gridBagConstraints.gridwidth = 3;
112 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
113 gridBagConstraints.weightx = 1.0;
114 gridBagConstraints.insets = new java.awt.Insets(12, 0, 12, 11);
115 mainPanel.add(scrambledWord, gridBagConstraints);
117 gridBagConstraints = new java.awt.GridBagConstraints();
118 gridBagConstraints.gridx = 1;
119 gridBagConstraints.gridy = 1;
120 gridBagConstraints.gridwidth = 3;
121 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
122 gridBagConstraints.weightx = 1.0;
123 gridBagConstraints.insets = new java.awt.Insets(0, 0, 12, 11);
124 mainPanel.add(guessedWord, gridBagConstraints);
126 nextTrial.setMnemonic('N');
127 nextTrial.setText("New Word");
128 nextTrial.setToolTipText("Fetch a new word.");
129 nextTrial.addActionListener(new java.awt.event.ActionListener() {
130 public void actionPerformed(java.awt.event.ActionEvent evt) {
131 nextTrialActionPerformed(evt);
135 gridBagConstraints = new java.awt.GridBagConstraints();
136 gridBagConstraints.gridx = 3;
137 gridBagConstraints.gridy = 3;
138 gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 11);
139 mainPanel.add(nextTrial, gridBagConstraints);
141 getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER);
143 File.setText("File");
144 jMenuItem1.setText("About");
145 jMenuItem1.setToolTipText("About");
146 jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
147 public void actionPerformed(java.awt.event.ActionEvent evt) {
148 jMenuItem1ActionPerformed(evt);
152 File.add(jMenuItem1);
154 jMenuItem2.setText("Exit");
155 jMenuItem2.setToolTipText("Quit Team, Quit!");
156 jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
157 public void actionPerformed(java.awt.event.ActionEvent evt) {
158 jMenuItem2ActionPerformed(evt);
162 File.add(jMenuItem2);
166 setJMenuBar(mainMenu);
168 java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
169 setBounds((screenSize.width-400)/2, (screenSize.height-250)/2, 400, 250);
170 }//GEN-END:initComponents
172 private void nextTrialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nextTrialActionPerformed
175 feedbackLabel.setText(" ");
177 guessedWord.setText("");
178 getRootPane().setDefaultButton(guessButton);
180 guessedWord.requestFocus();
181 }//GEN-LAST:event_nextTrialActionPerformed
183 private void initWord() {
185 String[] words = getWordLibrary().getWords();
186 int index = wordIdx % words.length;
188 original = words[index];
189 scrambled = getScrambler().scramble(original);
191 scrambledWord.setText(scrambled);
194 private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
196 }//GEN-LAST:event_jMenuItem2ActionPerformed
198 private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
200 }//GEN-LAST:event_jMenuItem1ActionPerformed
202 private void guessedWordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_guessedWordActionPerformed
204 if(guessedWord.getText().equals(original)) {
205 feedbackLabel.setText("Correct! Try a new word!");
206 getRootPane().setDefaultButton(nextTrial);
208 feedbackLabel.setText("Incorrect! Try again!");
209 guessedWord.setText("");
212 guessedWord.requestFocus();
213 }//GEN-LAST:event_guessedWordActionPerformed
215 /** Exit the Application */
216 private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
218 }//GEN-LAST:event_exitForm
221 public void setVisible(boolean v) {
224 guessedWord.requestFocus();
228 // Variables declaration - do not modify//GEN-BEGIN:variables
229 private javax.swing.JMenu File;
230 private javax.swing.JLabel feedbackLabel;
231 private javax.swing.JButton guessButton;
232 private javax.swing.JLabel guessLabel;
233 private javax.swing.JTextField guessedWord;
234 private javax.swing.JMenuItem jMenuItem1;
235 private javax.swing.JMenuItem jMenuItem2;
236 private javax.swing.JMenuBar mainMenu;
237 private javax.swing.JPanel mainPanel;
238 private javax.swing.JButton nextTrial;
239 private javax.swing.JLabel scrambledLabel;
240 private javax.swing.JTextField scrambledWord;
241 // End of variables declaration//GEN-END:variables