package mapmaker;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
/** a wrapper for the View of mapmaker's MVC pattern
*/
public class JMap extends JPanel implements Observer {
MapViewer mv;
Dimension size;
/** @param map should be the same Observerable as given
* to the Model object
* @param mv the View object
*/
public JMap(Observable map, MapViewer mv) {
this.mv = mv;
map.addObserver(this);
mv.addListeners(this);
size = mv.getSize();
setOpaque(true);
} // JMap
public void paintComponent(Graphics g) {
super.paintComponent(g); //paint background
mv.paint(g);
} // paintComponent
public void update(Observable o, Object arg) {
if (!size.equals(mv.getSize())) {
size = mv.getSize();
// ensure that resizing takes place
// even if enclosing component doesn't deem it neccessary
revalidate();
repaint();
}
else
repaint();
requestFocus();
} // update
public Dimension getPreferredSize() {
return mv.getSize();
} // getPreferredSize
public Dimension getMaximumSize() {
return getPreferredSize();
} // getMaximumSize
} // JMap