ISE 582 Web Technology for Industrial Engineering University
ISE 582: Web Technology for Industrial Engineering University of Southern California DJE Dept of Industrial and Systems Engineering Lecture 8 JAVA Cup 7: Model-View Design 7 November 2001 Information Technology for IE
GUI Design: Model-View Approach • Class Types • Relations Among Class Types • Turning the Movie Class into an Observable Class • Using the Observer • A Meter Listener for Mouse. Clicks • RECAP 7 November 2001 Information Technology for IE 2
Class Types • Model Classes: domain knowledge • View Classes: information-display • Observer / Listener (Adapter) Classes: modelview connections • Application Class: – Creates model/view/observer/listener instances – Connects model->(observer)->view and view>(listener)->model – Establish container-component relations among views 7 November 2001 Information Technology for IE 3
Relations Among Class Types Application Model 7 November 2001 View Information Technology for IE 4
Model: Movie Interface import java. io. *; public interface Movie. Interface { // Setters public abstract void set. Script (int i) ; public abstract void set. Acting (int i) ; public abstract void set. Direction (int i) ; // Getters public abstract int get. Script () ; public abstract int get. Acting () ; public abstract int get. Direction () ; public abstract String get. Title () ; public abstract String get. Poster () ; // Miscellaneous methods public abstract int rating () ; public abstract void changed () ; } 7 November 2001 Information Technology for IE 5
Making Movies Observable import java. util. *; public class Movie extends Observable implements Movie. Interface { // Define instance variables: String title, poster; int script=5, acting=5, direction=5 // Define 3 -parameter constructor: Movie (int s, int a, int d) // Define 4 -parameter constructor: Movie (int s, int a, int d, String t) // Define 5 -parameter constructor: Movie (int s, int a, int d, String t, String p) // Define setters: set. Script, set. Acting, set. Direction // Define getters: get. Script, get. Acting, get. Direction, get. Title, get. Poster // Define rating method // Define changed method } 7 November 2001 Information Technology for IE 6
Notifying Observers Blah blah… // Define setters and getters: public void set. Script(int s) { script = s; Establishes that a change set. Changed(); worthy of note has occurred notify. Observers(); } etc. … Activates connected observers Blah blah… and reset notification apparatus // changed method defined here public void changed () { set. Changed(); notify. Observers(); } Blah blah… 7 November 2001 Information Technology for IE 7
Professional Flourish Blah blah… private static int MIN=0, MAX=10; Blah blah… // changed method defined here public void set. Script (int s) { if (script != s) { script = Math. max( Math. min(s, MAX) , MIN ); set. Changed(); notify. Observers; } Blah blah… 7 November 2001 Information Technology for IE 8
Application Creating Movie in the M. App Blah blah … public void set. Meter (Meter m) {meter = m; } public Meter get. Meter() {return meter; } public void set. Movie (Movie m) {movie = m; } public Movie get. Movie() {return movie; } public static void main (String argv []) { new Movie. Application("Movie Application"); } private Meter meter; private Movie movie; public Movie. Application(String title) { super(title); set. Meter(new Meter(0, 30)); set. Movie(new Movie (5, 5, 5, "On to Java")); get. Content. Pane(). add("Center", get. Meter()); add. Window. Listener(new Local. Window. Listener()); set. Size(300, 100); show(); } etc… 7 November 2001 Information Technology for IE 9
Application On Demand Construction Blah blah … public void set. Meter (Meter m) {meter = m; } public Meter get. Meter() {if (meter==null) {set. Meter(new Meter(0, 30)); } return meter; } public void set. Movie (Movie m) {movie = m; } public Movie get. Movie() {if (movie==null) {set. Movie(new Movie (10, 10, ”Title”); } return movie; } public static void main (String argv []) { new Movie. Application("Movie Application"); } private Meter meter; private Movie movie; public Movie. Application(String title) { super(title); set. Meter(new Meter(0, 30)); set. Movie(new Movie (5, 5, 5, "On to Java")); get. Content. Pane(). add("Center", get. Meter()); add. Window. Listener(new Local. Window. Listener()); set. Size(300, 100); show(); } etc… 7 November 2001 Information Technology for IE 10
Using the Observer • Define an Observer class that implements the Observer interface • Embed it in the Movie. Application class as a private local class • Connect an Observer to a model using add. Observer method • Do the connecting in the set. Movie method to ensure correct correspondence 7 November 2001 Information Technology for IE 11
Application The Local Observer Class Blah blah … public void set. Movie (Movie m) { if(movie == m) {return; } if(movie instanceof Movie) {movie. delete. Observers(); } if(m instanceof Movie) { movie = m; movie. add. Observer(new Local. Movie. Observer()); movie. changed(); }} private class Local. Movie. Observer implements Observer { public void update (Observable observable, Object object) { get. Meter(). set. Value(get. Movie(). rating()); get. Meter(). set. Title(get. Movie(). get. Title()); }} 7 November 2001 Information Technology for IE 12
Application A Listener for the Meter Blah blah … public void set. Meter (Meter m) { meter = m; meter. add. Mouse. Listener(new Local. Meter. Listener()); } Blah blah … private class Local. Meter. Listener extends Mouse. Adapter { public void mouse. Clicked (Mouse. Event e) { int x = e. get. X(); int y = e. get. Y(); int v = (int) Math. round(get. Meter(). get. Value. At. Coordinates (x, y) / 3. 0); get. Movie(). set. Script(v); get. Movie(). set. Acting(v); get. Movie(). set. Direction(v); }} Blah blah … 7 November 2001 Information Technology for IE 13
Application • • • On Mouse. Click on Meter get. X, get. Y, get. Value. At. Coordinates set. Script, set. Changed, notify. Observers set. Acting, set. Changed, notify. Observers set. Direction, set. Changed, notify. Observers Update rating, set. Value, repaint, paint Movie 7 November 2001 Observer Listener Information Technology for IE Meter 14
- Slides: 14