Listing 4. Model
import java.util.*;
/**
* EXTRACTS FROM JPModel, the data model for JabberPoint.
* It keeps track of all the slides in the presentation.
*/
public class JPModel extends Observable {
/** the Vector of Slides */
Vector show = new Vector();
/** The currently-displayed page */
int pageNumber = 0;
/** Append a slide to the presentation */
public void append(Slide s) {
show.addElement(s);
}
public Slide getPage() {
return (Slide)show.elementAt(pageNumber);
}
/* Here are some methods used
* in the Controller(s) to control
* what part of the data the view displays:
*/
/** setPage(int pnum) sets the current
* page(slide) and notifies all the view(s)
* of the current page
*/
public void setPage(int i) {
if (i<0 || i>=show.size())
throw new IllegalArgumentException();
pageNumber = i;
// for the Observers (required!)
setChanged();
// tell the observers the current page
notifyObservers(getPage());
}
/** Move to the previous page, unless
* at beginning */
public void prevPage() {
if (pageNumber > 0)
setPage(pageNumber-1);
}
// nextPage() is the same but in reverse
}