diff -r 000000000000 -r fc45e7b76ee8 samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/Anagrams.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/Anagrams.java Sat Jun 14 10:06:53 2008 +0200 @@ -0,0 +1,237 @@ +package org.apidesign.anagram.gui; + +import org.apidesign.anagram.api.Scrambler; +import org.apidesign.anagram.api.UI; +import org.apidesign.anagram.api.WordLibrary; + +/** Modified version of classical NetBeans Anagrams example for purposes + * of modular world. + * + * @author Dirk Ruiz, Jaroslav Tulach + */ +public abstract class Anagrams extends javax.swing.JFrame implements UI { + int wordIdx = 0; + String original; + String scrambled; + + + /** Creates new form Anagrams */ + public Anagrams() { + initComponents(); + initWord(); + getRootPane().setDefaultButton(guessButton); + } + + protected abstract WordLibrary getWordLibrary(); + protected abstract Scrambler getScrambler(); + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + private void initComponents() {//GEN-BEGIN:initComponents + java.awt.GridBagConstraints gridBagConstraints; + + mainPanel = new javax.swing.JPanel(); + scrambledLabel = new javax.swing.JLabel(); + guessLabel = new javax.swing.JLabel(); + feedbackLabel = new javax.swing.JLabel(); + guessButton = new javax.swing.JButton(); + scrambledWord = new javax.swing.JTextField(); + guessedWord = new javax.swing.JTextField(); + nextTrial = new javax.swing.JButton(); + mainMenu = new javax.swing.JMenuBar(); + File = new javax.swing.JMenu(); + jMenuItem1 = new javax.swing.JMenuItem(); + jMenuItem2 = new javax.swing.JMenuItem(); + + setTitle("Anagrams"); + addWindowListener(new java.awt.event.WindowAdapter() { + public void windowClosing(java.awt.event.WindowEvent evt) { + exitForm(evt); + } + }); + + mainPanel.setLayout(new java.awt.GridBagLayout()); + + mainPanel.setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets(11, 11, 12, 12))); + mainPanel.setMinimumSize(new java.awt.Dimension(297, 200)); + mainPanel.setPreferredSize(new java.awt.Dimension(297, 200)); + scrambledLabel.setText("Scrambled Word:"); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; + gridBagConstraints.insets = new java.awt.Insets(12, 12, 12, 6); + mainPanel.add(scrambledLabel, gridBagConstraints); + + guessLabel.setText("Your Guess:"); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 1; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; + gridBagConstraints.insets = new java.awt.Insets(0, 12, 12, 6); + mainPanel.add(guessLabel, gridBagConstraints); + + feedbackLabel.setText(" "); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 2; + gridBagConstraints.gridwidth = 2; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 0, 6, 6); + mainPanel.add(feedbackLabel, gridBagConstraints); + + guessButton.setMnemonic('G'); + guessButton.setText("Guess"); + guessButton.setToolTipText("Guess the scrambled word."); + guessButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + guessedWordActionPerformed(evt); + } + }); + + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 2; + gridBagConstraints.gridy = 3; + gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; + gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 6); + mainPanel.add(guessButton, gridBagConstraints); + + scrambledWord.setEditable(false); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridwidth = 3; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(12, 0, 12, 11); + mainPanel.add(scrambledWord, gridBagConstraints); + + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 1; + gridBagConstraints.gridy = 1; + gridBagConstraints.gridwidth = 3; + gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.insets = new java.awt.Insets(0, 0, 12, 11); + mainPanel.add(guessedWord, gridBagConstraints); + + nextTrial.setMnemonic('N'); + nextTrial.setText("New Word"); + nextTrial.setToolTipText("Fetch a new word."); + nextTrial.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + nextTrialActionPerformed(evt); + } + }); + + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 3; + gridBagConstraints.gridy = 3; + gridBagConstraints.insets = new java.awt.Insets(0, 0, 11, 11); + mainPanel.add(nextTrial, gridBagConstraints); + + getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER); + + File.setText("File"); + jMenuItem1.setText("About"); + jMenuItem1.setToolTipText("About"); + jMenuItem1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jMenuItem1ActionPerformed(evt); + } + }); + + File.add(jMenuItem1); + + jMenuItem2.setText("Exit"); + jMenuItem2.setToolTipText("Quit Team, Quit!"); + jMenuItem2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jMenuItem2ActionPerformed(evt); + } + }); + + File.add(jMenuItem2); + + mainMenu.add(File); + + setJMenuBar(mainMenu); + + java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); + setBounds((screenSize.width-400)/2, (screenSize.height-250)/2, 400, 250); + }//GEN-END:initComponents + + private void nextTrialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nextTrialActionPerformed + wordIdx++; + + feedbackLabel.setText(" "); + initWord(); + guessedWord.setText(""); + getRootPane().setDefaultButton(guessButton); + + guessedWord.requestFocus(); + }//GEN-LAST:event_nextTrialActionPerformed + + private void initWord() { + + String[] words = getWordLibrary().getWords(); + int index = wordIdx % words.length; + + original = words[index]; + scrambled = getScrambler().scramble(original); + + scrambledWord.setText(scrambled); + } + + private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed + System.exit(0); + }//GEN-LAST:event_jMenuItem2ActionPerformed + + private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed + new About().show(); + }//GEN-LAST:event_jMenuItem1ActionPerformed + + private void guessedWordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_guessedWordActionPerformed + + if(guessedWord.getText().equals(original)) { + feedbackLabel.setText("Correct! Try a new word!"); + getRootPane().setDefaultButton(nextTrial); + } else { + feedbackLabel.setText("Incorrect! Try again!"); + guessedWord.setText(""); + } + + guessedWord.requestFocus(); + }//GEN-LAST:event_guessedWordActionPerformed + + /** Exit the Application */ + private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm + System.exit(0); + }//GEN-LAST:event_exitForm + + @Override + public void setVisible(boolean v) { + super.setVisible(v); + if (v) { + guessedWord.requestFocus(); + } + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JMenu File; + private javax.swing.JLabel feedbackLabel; + private javax.swing.JButton guessButton; + private javax.swing.JLabel guessLabel; + private javax.swing.JTextField guessedWord; + private javax.swing.JMenuItem jMenuItem1; + private javax.swing.JMenuItem jMenuItem2; + private javax.swing.JMenuBar mainMenu; + private javax.swing.JPanel mainPanel; + private javax.swing.JButton nextTrial; + private javax.swing.JLabel scrambledLabel; + private javax.swing.JTextField scrambledWord; + // End of variables declaration//GEN-END:variables + +}