Академический Документы
Профессиональный Документы
Культура Документы
Karsten Lentzsch
JGoodies
J-Fall 2006
Goal
JGoodies
J-Fall 2006
Agenda
Introduction
Autonomous View
Model View Presenter
Presentation Model
Data Binding
JGoodies
J-Fall 2006
Agenda
Introduction
Autonomous View
Model View Presenter
Presentation Model
Data Binding
JGoodies
J-Fall 2006
Legend
Presentation (View)
Presentation Logic
Notifies
Refers to
Domain Object
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
Legend
Domain/business logic
Examples:
Book
Person
Address
Invoice
More generally:
object graph
Domain Object
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
Legend
Handlers for:
Presentation Logic
UI models
Swing Actions
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
Legend
Presentation (View)
Container:
Contains components:
Component initialization
Panel building code
GUI state:
JGoodies
J-Fall 2006
Legend
Role1
Role2
Separated layers
JGoodies
J-Fall 2006
Legend
Notifies
A refers to B
A holds a reference to B
B indirectly refers to A
Refers to
B
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
Domain
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
Domain
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
Reduces complexity
Multiple presentations
JGoodies
J-Fall 2006
Notifies
Refers to
Domain
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
Agenda
Introduction
Autonomous View
Model View Presenter
Presentation Model
Data Binding
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
Autonomous View
JGoodies
J-Fall 2006
Example GUI
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
Autonomous View
JGoodies
J-Fall 2006
Presentation (View)
Presentation Logic
Domain
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
Thin GUI:
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
Agenda
Introduction
Autonomous View
Model View Presenter
Presentation Model
Data Binding
JGoodies
J-Fall 2006
View
Presenter
Model
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
Presenter
Holds UI components
Holds GUI state
Inits components
Builds panel
Model
Holds domain data
Provides business logic
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
ChangeHandler
JTextField
Album
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
AlbumPresenter
JTextField
JCheckBox
ChangeHandler
JTextField
Album
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
Agenda
Introduction
Autonomous View
Model View Presenter
Presentation Model
Data Binding
JGoodies
J-Fall 2006
View
View
View
Presentation Model
Domain
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
Presentation Model
View
Presentation Model
Holds UI components
Holds all GUI state
Inits components
Builds panel
Listens to PM changes
Domain
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
Action
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
AlbumPresentationModel
AlbumView
JTextField
AlbumPM
Text Model
JTextField
Text Model
JCheckBox
Selection Model
JTextField
Text Model
Album
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
AlbumPresentationModel: Logic
AlbumView
JTextField
AlbumPM
Text Model
JTextField
Text Model
JCheckBox
Selection Model
JTextField
Text Model
ChangeHandler
ChangeHandler
Enablement Model
Album
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
AlbumPresentationModel: Logic
AlbumView
JTextField
AlbumPM
Text Model
JTextField
Text Model
JCheckBox
Selection Model
JTextField
Text Model
ChangeHandler
ChangeHandler
Enablement Model
Album
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
AlbumPresentationModel: Logic
AlbumView
JTextField
AlbumPM
Text Model
JTextField
Text Model
JCheckBox
Selection Model
JTextField
Text Model
ChangeHandler
Updates
ChangeHandler
Enablement Model
Album
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
AlbumPresentationModel: Logic
AlbumView
JTextField
AlbumPM
Text Model
JTextField
Text Model
JCheckBox
Selection Model
JTextField
Text Model
ChangeHandler
ChangeHandler
Notifies
Enablement Model
Album
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
AlbumPresentationModel: Logic
AlbumView
JTextField
AlbumPM
Text Model
JTextField
Text Model
JCheckBox
Selection Model
JTextField
Text Model
ChangeHandler
Updates enablement
ChangeHandler
Enablement Model
Album
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
JButton
JMenuItem
Action
Text
Icon
Enablement
Mnemonic
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
PopupMenu
JButton
JMenuItem
Presentation Model
ListModel
Action
Domain
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
JList
JTable
JButton
TableModelAdapter
Presentation Model
ListModel
Action
Domain
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
MVP
Presentation Model
JGoodies
J-Fall 2006
MVP
Presentation Model
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
Agenda
Introduction
Autonomous View
Model View Presenter
Presentation Model
Data Binding
JGoodies
J-Fall 2006
Data Binding
JGoodies
J-Fall 2006
Binding Examples
View
JButton
JTable
Presentation Model
Action
TableModel
JGoodies
J-Fall 2006
Binding Examples
View
JCheckBox
JTextField
selected=true
enabled=true
Album
classical=true
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
Binding Examples
GUI Form
JTextField
JCheckBox
JFormattedTextField
Database
JGoodies
J-Fall 2006
JTable
JTree
JButton
Presentation Model
ListModel
TableModel
TreeModel
Action
JGoodies
J-Fall 2006
JCheckBox
JFormattedTextField
Presentation Model
Document
ToggleButtonModel
Document
JGoodies
J-Fall 2006
JCheckBox
JFormattedTextField
Presentation Model
Text Model
Boolean Model
Date Model
JGoodies
J-Fall 2006
JCheckBox
JFormattedTextField
Presentation Model
Text Model
Boolean Model
Date Model
Album
artist=John
classical=true
Desktop Patterns and Data Binding
released=05/16/06
JGoodies
J-Fall 2006
JGoodies Binding
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
AlbumView: EnablementHandler
private void initPresentationLogic() {
// Synchronize field enablement
// with the PresentationModel state.
PropertyConnector.connect(
presentationModel,
composerEnabled,
composerField,
enabled);
}
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
Copying ...
Easy to understand
Works in almost all situations
Easy to debug; all data operations are explicit
Difficult to synchronize views
Needs discipline in a team
Coarse-grained updates
Leads to a lot of boilerplate code
Desktop Patterns and Data Binding
JGoodies
J-Fall 2006
Fine-grained updates
Simplifies synchronization
Harder to understand and debug
Extra work for method renaming and obfuscators
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
Summary
JGoodies
J-Fall 2006
Advice
JGoodies
J-Fall 2006
JGoodies
J-Fall 2006
Presentations - www.JGoodies.com/articles
JGoodies