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 */
22 getRootPane().setDefaultButton(guessButton);
25 protected abstract WordLibrary getWordLibrary();
26 protected abstract Scrambler getScrambler();
28 /** This method is called from within the constructor to
29 * initialize the form.
30 * WARNING: Do NOT modify this code. The content of this method is
31 * always regenerated by the Form Editor.
33 private void initComponents() {//GEN-BEGIN:initComponents
34 java.awt.GridBagConstraints gridBagConstraints;
36 mainPanel = new javax.swing.JPanel();
37 scrambledLabel = new javax.swing.JLabel();
38 guessLabel = new javax.swing.JLabel();
39 feedbackLabel = new javax.swing.JLabel();
40 guessButton = new javax.swing.JButton();
41 scrambledWord = new javax.swing.JTextField();
42 guessedWord = new javax.swing.JTextField();
43 nextTrial = new javax.swing.JButton();
44 mainMenu = new javax.swing.JMenuBar();
45 File = new javax.swing.JMenu();
46 jMenuItem1 = new javax.swing.JMenuItem();
47 jMenuItem2 = new javax.swing.JMenuItem();
50 addWindowListener(new java.awt.event.WindowAdapter() {
51 public void windowClosing(java.awt.event.WindowEvent evt) {
56 mainPanel.setLayout(new java.awt.GridBagLayout());
58 mainPanel.setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets(11, 11, 12, 12)));
59 mainPanel.setMinimumSize(new java.awt.Dimension(297, 200));
60 mainPanel.setPreferredSize(new java.awt.Dimension(297, 200));
61 scrambledLabel.setText("Scrambled Word:");
62 gridBagConstraints = new java.awt.GridBagConstraints();
63 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
64 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
65 gridBagConstraints.insets = new java.awt.Insets(12, 12, 12, 6);
66 mainPanel.add(scrambledLabel, gridBagConstraints);
68 guessLabel.setText("Your Guess:");
69 gridBagConstraints = new java.awt.GridBagConstraints();
70 gridBagConstraints.gridx = 0;
71 gridBagConstraints.gridy = 1;
72 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
73 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
74 gridBagConstraints.insets = new java.awt.Insets(0, 12, 12, 6);
75 mainPanel.add(guessLabel, gridBagConstraints);
77 feedbackLabel.setText(" ");
78 gridBagConstraints = new java.awt.GridBagConstraints();
79 gridBagConstraints.gridx = 1;
80 gridBagConstraints.gridy = 2;
81 gridBagConstraints.gridwidth = 2;
82 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
83 gridBagConstraints.weightx = 1.0;
84 gridBagConstraints.insets = new java.awt.Insets(0, 0, 6, 6);
85 mainPanel.add(feedbackLabel, gridBagConstraints);
87 guessButton.setMnemonic('G');
88 guessButton.setText("Guess");
89 guessButton.setToolTipText("Guess the scrambled word.");
90 guessButton.addActionListener(new java.awt.event.ActionListener() {
91 public void actionPerformed(java.awt.event.ActionEvent evt) {
92 guessedWordActionPerformed(evt);
96 gridBagConstraints = new java.awt.GridBagConstraints();
97 gridBagConstraints.gridx = 2;
98 gridBagConstraints.gridy = 3;
99 gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
100 gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 6);
101 mainPanel.add(guessButton, gridBagConstraints);
103 scrambledWord.setEditable(false);
104 gridBagConstraints = new java.awt.GridBagConstraints();
105 gridBagConstraints.gridwidth = 3;
106 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
107 gridBagConstraints.weightx = 1.0;
108 gridBagConstraints.insets = new java.awt.Insets(12, 0, 12, 11);
109 mainPanel.add(scrambledWord, gridBagConstraints);
111 gridBagConstraints = new java.awt.GridBagConstraints();
112 gridBagConstraints.gridx = 1;
113 gridBagConstraints.gridy = 1;
114 gridBagConstraints.gridwidth = 3;
115 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
116 gridBagConstraints.weightx = 1.0;
117 gridBagConstraints.insets = new java.awt.Insets(0, 0, 12, 11);
118 mainPanel.add(guessedWord, gridBagConstraints);
120 nextTrial.setMnemonic('N');
121 nextTrial.setText("New Word");
122 nextTrial.setToolTipText("Fetch a new word.");
123 nextTrial.addActionListener(new java.awt.event.ActionListener() {
124 public void actionPerformed(java.awt.event.ActionEvent evt) {
125 nextTrialActionPerformed(evt);
129 gridBagConstraints = new java.awt.GridBagConstraints();
130 gridBagConstraints.gridx = 3;
131 gridBagConstraints.gridy = 3;
132 gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 11);
133 mainPanel.add(nextTrial, gridBagConstraints);
135 getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER);
137 File.setText("File");
138 jMenuItem1.setText("About");
139 jMenuItem1.setToolTipText("About");
140 jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
141 public void actionPerformed(java.awt.event.ActionEvent evt) {
142 jMenuItem1ActionPerformed(evt);
146 File.add(jMenuItem1);
148 jMenuItem2.setText("Exit");
149 jMenuItem2.setToolTipText("Quit Team, Quit!");
150 jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
151 public void actionPerformed(java.awt.event.ActionEvent evt) {
152 jMenuItem2ActionPerformed(evt);
156 File.add(jMenuItem2);
160 setJMenuBar(mainMenu);
162 java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
163 setBounds((screenSize.width-400)/2, (screenSize.height-250)/2, 400, 250);
164 }//GEN-END:initComponents
166 private void nextTrialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nextTrialActionPerformed
169 feedbackLabel.setText(" ");
171 guessedWord.setText("");
172 getRootPane().setDefaultButton(guessButton);
174 guessedWord.requestFocus();
175 }//GEN-LAST:event_nextTrialActionPerformed
177 private void initWord() {
179 String[] words = getWordLibrary().getWords();
180 int index = wordIdx % words.length;
182 original = words[index];
183 scrambled = getScrambler().scramble(original);
185 scrambledWord.setText(scrambled);
188 private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
190 }//GEN-LAST:event_jMenuItem2ActionPerformed
192 private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
194 }//GEN-LAST:event_jMenuItem1ActionPerformed
196 private void guessedWordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_guessedWordActionPerformed
198 if(guessedWord.getText().equals(original)) {
199 feedbackLabel.setText("Correct! Try a new word!");
200 getRootPane().setDefaultButton(nextTrial);
202 feedbackLabel.setText("Incorrect! Try again!");
203 guessedWord.setText("");
206 guessedWord.requestFocus();
207 }//GEN-LAST:event_guessedWordActionPerformed
209 /** Exit the Application */
210 private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
212 }//GEN-LAST:event_exitForm
215 public void setVisible(boolean v) {
218 guessedWord.requestFocus();
222 // Variables declaration - do not modify//GEN-BEGIN:variables
223 private javax.swing.JMenu File;
224 private javax.swing.JLabel feedbackLabel;
225 private javax.swing.JButton guessButton;
226 private javax.swing.JLabel guessLabel;
227 private javax.swing.JTextField guessedWord;
228 private javax.swing.JMenuItem jMenuItem1;
229 private javax.swing.JMenuItem jMenuItem2;
230 private javax.swing.JMenuBar mainMenu;
231 private javax.swing.JPanel mainPanel;
232 private javax.swing.JButton nextTrial;
233 private javax.swing.JLabel scrambledLabel;
234 private javax.swing.JTextField scrambledWord;
235 // End of variables declaration//GEN-END:variables