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();
28 public void display() {
33 public void addNotify() {
38 /** This method is called from within the constructor to
39 * initialize the form.
40 * WARNING: Do NOT modify this code. The content of this method is
41 * always regenerated by the Form Editor.
43 private void initComponents() {//GEN-BEGIN:initComponents
44 java.awt.GridBagConstraints gridBagConstraints;
46 mainPanel = new javax.swing.JPanel();
47 scrambledLabel = new javax.swing.JLabel();
48 guessLabel = new javax.swing.JLabel();
49 feedbackLabel = new javax.swing.JLabel();
50 guessButton = new javax.swing.JButton();
51 scrambledWord = new javax.swing.JTextField();
52 guessedWord = new javax.swing.JTextField();
53 nextTrial = new javax.swing.JButton();
54 mainMenu = new javax.swing.JMenuBar();
55 File = new javax.swing.JMenu();
56 jMenuItem1 = new javax.swing.JMenuItem();
57 jMenuItem2 = new javax.swing.JMenuItem();
60 addWindowListener(new java.awt.event.WindowAdapter() {
61 public void windowClosing(java.awt.event.WindowEvent evt) {
66 mainPanel.setLayout(new java.awt.GridBagLayout());
68 mainPanel.setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets(11, 11, 12, 12)));
69 mainPanel.setMinimumSize(new java.awt.Dimension(297, 200));
70 mainPanel.setPreferredSize(new java.awt.Dimension(297, 200));
71 scrambledLabel.setText("Scrambled Word:");
72 gridBagConstraints = new java.awt.GridBagConstraints();
73 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
74 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
75 gridBagConstraints.insets = new java.awt.Insets(12, 12, 12, 6);
76 mainPanel.add(scrambledLabel, gridBagConstraints);
78 guessLabel.setText("Your Guess:");
79 gridBagConstraints = new java.awt.GridBagConstraints();
80 gridBagConstraints.gridx = 0;
81 gridBagConstraints.gridy = 1;
82 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
83 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
84 gridBagConstraints.insets = new java.awt.Insets(0, 12, 12, 6);
85 mainPanel.add(guessLabel, gridBagConstraints);
87 feedbackLabel.setText(" ");
88 gridBagConstraints = new java.awt.GridBagConstraints();
89 gridBagConstraints.gridx = 1;
90 gridBagConstraints.gridy = 2;
91 gridBagConstraints.gridwidth = 2;
92 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
93 gridBagConstraints.weightx = 1.0;
94 gridBagConstraints.insets = new java.awt.Insets(0, 0, 6, 6);
95 mainPanel.add(feedbackLabel, gridBagConstraints);
97 guessButton.setMnemonic('G');
98 guessButton.setText("Guess");
99 guessButton.setToolTipText("Guess the scrambled word.");
100 guessButton.addActionListener(new java.awt.event.ActionListener() {
101 public void actionPerformed(java.awt.event.ActionEvent evt) {
102 guessedWordActionPerformed(evt);
106 gridBagConstraints = new java.awt.GridBagConstraints();
107 gridBagConstraints.gridx = 2;
108 gridBagConstraints.gridy = 3;
109 gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
110 gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 6);
111 mainPanel.add(guessButton, gridBagConstraints);
113 scrambledWord.setEditable(false);
114 gridBagConstraints = new java.awt.GridBagConstraints();
115 gridBagConstraints.gridwidth = 3;
116 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
117 gridBagConstraints.weightx = 1.0;
118 gridBagConstraints.insets = new java.awt.Insets(12, 0, 12, 11);
119 mainPanel.add(scrambledWord, gridBagConstraints);
121 gridBagConstraints = new java.awt.GridBagConstraints();
122 gridBagConstraints.gridx = 1;
123 gridBagConstraints.gridy = 1;
124 gridBagConstraints.gridwidth = 3;
125 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
126 gridBagConstraints.weightx = 1.0;
127 gridBagConstraints.insets = new java.awt.Insets(0, 0, 12, 11);
128 mainPanel.add(guessedWord, gridBagConstraints);
130 nextTrial.setMnemonic('N');
131 nextTrial.setText("New Word");
132 nextTrial.setToolTipText("Fetch a new word.");
133 nextTrial.addActionListener(new java.awt.event.ActionListener() {
134 public void actionPerformed(java.awt.event.ActionEvent evt) {
135 nextTrialActionPerformed(evt);
139 gridBagConstraints = new java.awt.GridBagConstraints();
140 gridBagConstraints.gridx = 3;
141 gridBagConstraints.gridy = 3;
142 gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 11);
143 mainPanel.add(nextTrial, gridBagConstraints);
145 getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER);
147 File.setText("File");
148 jMenuItem1.setText("About");
149 jMenuItem1.setToolTipText("About");
150 jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
151 public void actionPerformed(java.awt.event.ActionEvent evt) {
152 jMenuItem1ActionPerformed(evt);
156 File.add(jMenuItem1);
158 jMenuItem2.setText("Exit");
159 jMenuItem2.setToolTipText("Quit Team, Quit!");
160 jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
161 public void actionPerformed(java.awt.event.ActionEvent evt) {
162 jMenuItem2ActionPerformed(evt);
166 File.add(jMenuItem2);
170 setJMenuBar(mainMenu);
172 java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
173 setBounds((screenSize.width-400)/2, (screenSize.height-250)/2, 400, 250);
174 }//GEN-END:initComponents
176 private void nextTrialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nextTrialActionPerformed
179 feedbackLabel.setText(" ");
181 guessedWord.setText("");
182 getRootPane().setDefaultButton(guessButton);
184 guessedWord.requestFocus();
185 }//GEN-LAST:event_nextTrialActionPerformed
187 private void initWord() {
189 String[] words = getWordLibrary().getWords();
190 int index = wordIdx % words.length;
192 original = words[index];
193 scrambled = getScrambler().scramble(original);
195 scrambledWord.setText(scrambled);
198 private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
200 }//GEN-LAST:event_jMenuItem2ActionPerformed
202 private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
204 }//GEN-LAST:event_jMenuItem1ActionPerformed
206 private void guessedWordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_guessedWordActionPerformed
208 if(guessedWord.getText().equals(original)) {
209 feedbackLabel.setText("Correct! Try a new word!");
210 getRootPane().setDefaultButton(nextTrial);
212 feedbackLabel.setText("Incorrect! Try again!");
213 guessedWord.setText("");
216 guessedWord.requestFocus();
217 }//GEN-LAST:event_guessedWordActionPerformed
219 /** Exit the Application */
220 private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
222 }//GEN-LAST:event_exitForm
225 public void setVisible(boolean v) {
228 guessedWord.requestFocus();
232 // Variables declaration - do not modify//GEN-BEGIN:variables
233 private javax.swing.JMenu File;
234 private javax.swing.JLabel feedbackLabel;
235 private javax.swing.JButton guessButton;
236 private javax.swing.JLabel guessLabel;
237 private javax.swing.JTextField guessedWord;
238 private javax.swing.JMenuItem jMenuItem1;
239 private javax.swing.JMenuItem jMenuItem2;
240 private javax.swing.JMenuBar mainMenu;
241 private javax.swing.JPanel mainPanel;
242 private javax.swing.JButton nextTrial;
243 private javax.swing.JLabel scrambledLabel;
244 private javax.swing.JTextField scrambledWord;
245 // End of variables declaration//GEN-END:variables