Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package WordMVC;
- /** Application class that does wiring for MVC */
- public class AppMain
- {
- public static void main(String [] args)
- {
- WordModel wm = new WordModel("exhilaration");
- WordGUI gui = new WordGUI();
- WordHTMLview view = new WordHTMLview();
- wm.addObserver(gui);
- wm.addObserver(view);
- gui.update(wm,null);
- view.update(wm,null);
- WordController controller = new WordController(wm);
- }
- }
- package WordMVC;
- import javax.swing.JFrame;
- import javax.swing.JButton;
- import java.awt.*;
- import java.awt.event.*;
- /** Displays the buttons and responds to clicks */
- public class WordController extends JFrame implements ActionListener
- {
- private WordModel model;
- private JButton left;
- private JButton right;
- public WordController(WordModel model)
- {
- this.model = model;
- left = new JButton("<");
- right = new JButton(">");
- left.addActionListener(this);
- right.addActionListener(this);
- setLayout(new FlowLayout());
- getContentPane().add(left);
- getContentPane().add(right);
- setDefaultCloseOperation(EXIT_ON_CLOSE);
- pack();
- setVisible(true);
- }
- public void actionPerformed(ActionEvent evt)
- {
- if (evt.getSource() == left)
- {
- model.goLeft();
- }
- if (evt.getSource() == right)
- {
- model.goRight();
- }
- }
- }
- package WordMVC;
- import javax.swing.*;
- import java.util.Observer;
- import java.util.Observable;
- /** Graphical view of the word */
- public class WordGUI extends JFrame implements Observer
- {
- JLabel wordLabel = new JLabel();
- public WordGUI()
- {
- wordLabel.setText("Text appears here");
- getContentPane().add(wordLabel);
- setDefaultCloseOperation(EXIT_ON_CLOSE);
- setLocation(0,100);
- pack();
- setVisible(true);
- }
- public void update(Observable obs, Object obj)
- {
- wordLabel.setText(((WordModel)obs).getValue());
- }
- }
- package WordMVC;
- import java.util.Observable;
- public class WordHTMLview extends WordGUI
- {
- public WordHTMLview()
- {
- super();
- setLocation(200,100);
- }
- @Override
- public void update(Observable obs, Object obj)
- {
- String display = ((WordModel)obs).getValue();
- wordLabel.setText("<HTML><I><BIG>" + display + "</BIG></I></HTML>");
- pack();
- }
- }
- package WordMVC;
- import java.util.Observable;
- /** A word that can be "rotated" left or right */
- public class WordModel extends Observable
- {
- private String theWord;
- public WordModel(String letters)
- {
- this.theWord = letters;
- }
- public void setValue(String letters)
- {
- this.theWord = letters;
- setChanged();
- notifyObservers();
- }
- public String getValue()
- {
- return new String(theWord);
- }
- public void goLeft()
- {
- theWord = theWord.substring(1) + theWord.charAt(0);
- setChanged();
- notifyObservers();
- }
- public void goRight()
- {
- theWord = theWord.charAt(theWord.length()-1) + theWord.substring(0,theWord.length()-1);
- setChanged();
- notifyObservers();
- }
- }
- package WordMVC;
- /**
- * The test class WordModelTest.
- *
- * @author jdalbey
- * @version 2014.10.10
- */
- public class WordModelTest extends junit.framework.TestCase implements java.util.Observer
- {
- boolean updateFlag;
- public void testLeft()
- {
- updateFlag = false;
- WordMVC.WordModel word1 = new WordMVC.WordModel("ABC");
- word1.addObserver(this);
- word1.goLeft();
- assertTrue(updateFlag);
- assertEquals("BCA", word1.getValue());
- }
- public void testRight()
- {
- updateFlag = false;
- WordMVC.WordModel word2 = new WordMVC.WordModel("XYZ");
- word2.addObserver(this);
- word2.goRight();
- assertTrue(updateFlag);
- assertEquals("ZXY", word2.getValue());
- }
- public void update(java.util.Observable obs, Object obj)
- {
- updateFlag = true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement