Model View COMP 401 Spring 2013 Lecture 22 4 9 2013 ColorChooser Widget Review lec21 v7 Color object embedded within the widget Fine for a small piece of immutable informaJon Not so great for a complex abstracJon UI may not always be needed Model View PaQern Keep object represenJng the data separate from widget providing the UI Model Object represenJng abstracJon within your applicaJon View Object widget represenJng UI to model Inform when data changes Model View Inform when user interacts COMP 401 Spring 2012 3 Model View Example Playlist This is the model object Manages a list of Song objects PlaylistView This is the view object Provides a UI for interacJng with Playlist lec22 v1 Playlist lec22 v2 PlaylistView Encapsulates a reference to Playlist object Builds a simple view of the playlist lec22 v3 AddSongWidget An interface for adding a new song to the Playlist lec22 v4 ConnecJng model to view Model needs to inform the view whenever it changes so that the view can rebuild to re ect any changes My approach here is to make the model observable And to register PlaylistView as an observer Notes revalidate required whenever contents of a Java Swing container are changed lec22 v5 NoJce duplicaJon of code in constructor when list is rst built and when rebuilt when responding to model update Refactor into a helper method JScrollPane Wraps another Swing component that may change size and provides scrolling view as needed lec22 v6 Add a shu e buQon lec22 v7 Create more interesJng song lisJng SongLisJngWidget Includes a buQons for removing the song from the playlist and moving them up and down the list BorderFactory Swing class for creaJng borders for components Unicode characters Lots of glyphs available Changed Song to use star glyph for raJng Added method to playlist for moving songs Model View Inform when data changes Model View Inform when user interacts Playlist PlaylistView update PlaylistView shu e Playlist addSong removeSong moveSong AddSongWidget SongLisJngWidget SongLisJngWidget SongLisJngWidget SongLisJngWidget SongLisJngWidget SongLisJngWidget Model View Summary Model provides access to an abstracJon Any manipulaJon modi caJon done via public methods provided by model View builds an interface for rendering current state of the model InteracJons with interface translated to appropriate calls on model methods Model View Inadequacies Good for simple direct UI elements Model driving UI is just one object UI re ects model state directly User interacJons with view have direct mapping to updates to model Complex behavior harder to express Dynamic user interfaces Complex models Contextual user interacJons COMP 401 Spring 2012 15 Classic MVC hQp www oracle com technetwork arJcles javase mvc 136693 html COMP 401 Spring 2012 16 Alternate MVC hQp www oracle com technetwork arJcles javase mvc 136693 html COMP 401 Spring 2012 17 A7 ChessGame ChessPiece make up the model ChessGameView is view CommandLoop acts as controller update ChessGame ChessGameView update ChessPiece ChessPiece ChessPiece ChessPiece ChessPiece ChessPiece moveAQempted moveTo CommandLoop
View Full Document
Unlocking...