# HG changeset patch # User Jaroslav Tulach # Date 1213430813 -7200 # Node ID fc45e7b76ee88993e12e9a46f50e516112a7ec30 # Parent a7d412ef33a1a98f0acbf804398a1f44570ef517 GUI for anagrams diff -r a7d412ef33a1 -r fc45e7b76ee8 samples/componentinjection/anagram-modular/nbproject/project.xml --- a/samples/componentinjection/anagram-modular/nbproject/project.xml Sat Jun 14 10:06:50 2008 +0200 +++ b/samples/componentinjection/anagram-modular/nbproject/project.xml Sat Jun 14 10:06:53 2008 +0200 @@ -28,6 +28,12 @@ UTF-8 + + java + src-gui + UTF-8 + + . UTF-8 @@ -78,6 +84,10 @@ src-scrambler-simple + + + src-gui + build.xml @@ -111,6 +121,12 @@ 1.5 + src-gui + src-api + build/gui/classes + 1.5 + + src-test src-new-api:../libs/dist/junit-4.4.jar 1.5 diff -r a7d412ef33a1 -r fc45e7b76ee8 samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/About.form --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/About.form Sat Jun 14 10:06:53 2008 +0200 @@ -0,0 +1,76 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r a7d412ef33a1 -r fc45e7b76ee8 samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/About.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/About.java Sat Jun 14 10:06:53 2008 +0200 @@ -0,0 +1,91 @@ +package org.apidesign.anagram.gui; + +/** + * + * @author Dirk Ruiz + */ +public class About extends javax.swing.JFrame { + + /** Creates new form About */ + public About() { + initComponents(); + } + + /** 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; + + jPanel1 = new javax.swing.JPanel(); + jTextArea1 = new javax.swing.JTextArea(); + jButton1 = new javax.swing.JButton(); + + getContentPane().setLayout(new java.awt.GridBagLayout()); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setTitle("About Anagrams"); + addWindowListener(new java.awt.event.WindowAdapter() { + public void windowClosing(java.awt.event.WindowEvent evt) { + exitForm(evt); + } + }); + + jPanel1.setLayout(new java.awt.GridBagLayout()); + + jPanel1.setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets(11, 11, 12, 12))); + jTextArea1.setBackground((java.awt.Color) javax.swing.UIManager.getDefaults().get("Panel.background")); + jTextArea1.setEditable(false); + jTextArea1.setLineWrap(true); + jTextArea1.setText("Anagrams\n\nCopyright (c) 2003 Irritable Enterprises, Inc."); + jTextArea1.setToolTipText("null"); + jTextArea1.setWrapStyleWord(true); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; + gridBagConstraints.insets = new java.awt.Insets(0, 0, 12, 0); + gridBagConstraints.weightx = 1.0; + gridBagConstraints.weighty = 1.0; + jPanel1.add(jTextArea1, gridBagConstraints); + + jButton1.setText("Close"); + jButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton1ActionPerformed(evt); + } + }); + + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.gridy = 1; + jPanel1.add(jButton1, gridBagConstraints); + + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; + gridBagConstraints.weightx = 1.0; + gridBagConstraints.weighty = 1.0; + getContentPane().add(jPanel1, gridBagConstraints); + + pack(); + java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); + setSize(new java.awt.Dimension(309, 231)); + setLocation((screenSize.width-309)/2,(screenSize.height-231)/2); + }//GEN-END:initComponents + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed + this.hide(); + }//GEN-LAST:event_jButton1ActionPerformed + + /** Exit the Application */ + private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm + //System.exit(0); + }//GEN-LAST:event_exitForm + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton jButton1; + private javax.swing.JTextArea jTextArea1; + private javax.swing.JPanel jPanel1; + // End of variables declaration//GEN-END:variables + +} diff -r a7d412ef33a1 -r fc45e7b76ee8 samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/Anagrams.form --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/Anagrams.form Sat Jun 14 10:06:53 2008 +0200 @@ -0,0 +1,161 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r a7d412ef33a1 -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 + +}