MapWindow.java
/*
* $RCSfile: MapWindow.java,v $
* $Id: MapWindow.java,v 1.6 1998/11/30 02:21:07 devnull Exp $
* by Lee Wilson, http://www.ad1440.net/~devnull
* Development started on 1998 10 01
* (c) Devnull Software, LLC. (http://www.devnullsoftware.com)
*/
package com.devnullsoftware.javaterrain;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import matthew.awt.StrutLayout;
import com.devnullsoftware.config.*;
/**
Window to show generated terrain.
@author Lee Wilson
@version 1.0
*/
public class MapWindow
extends JFrame
implements ActionListener
{
//-------------------------------------------------------------------
// Global Constants
//
//-------------------------------------------------------------------
// Instance Variables
//
public JTextArea pTextArea;
public JScrollPane pMapScrollPane;
private Map pMap;
private MapCanvas pMapCanvas;
//-------------------------------------------------------------------
// Constructors
//
MapWindow(Map pMap,
int width, int height) {
// super (pMap.getName(), true, true, true, true);
super (pMap.getName());
this.pMap = pMap;
init();
setBounds (20,20,width,height);
}
private void init () {
JMenuBar pWorldMenuBar = new JMenuBar();
// setMenuBar(pWorldMenuBar);
setJMenuBar(pWorldMenuBar);
JMenu pWorldFileMenu = new JMenu ("File");
pWorldMenuBar.add(pWorldFileMenu);
pWorldFileMenu.add(menuItem("Save"));
pWorldFileMenu.add(menuItem("Save As"));
pWorldFileMenu.addSeparator();
pWorldFileMenu.add(menuItem("Close"));
JMenu pWorldEditMenu = new JMenu ("Edit");
pWorldMenuBar.add(pWorldEditMenu);
pWorldEditMenu.add(menuItem("World Parameters"));
JMenu pWorldViewMenu = new JMenu ("View");
pWorldMenuBar.add(pWorldViewMenu);
pWorldViewMenu.add(menuItem("Zoom In"));
pWorldViewMenu.add(menuItem("Zoom Out"));
Container pContentPane = getContentPane();
StrutLayout pLayout = new StrutLayout();
pContentPane.setLayout (pLayout);
pMapCanvas = new MapCanvas(pMap, this);
pMapScrollPane = new JScrollPane(pMapCanvas);
pMapScrollPane.setSize(10,10);
pContentPane.add (pMapScrollPane);
JPanel pMiscPanel = new JPanel (new BorderLayout());
pMapCanvas.setSmallViewSize(200,200);
JPanel pSmallMapPanel = new JPanel ();
pSmallMapPanel.setPreferredSize (new Dimension(200,200));
pSmallMapPanel.add(pMapCanvas.getSmallView());
pMiscPanel.add ("North", pSmallMapPanel);
pTextArea = new JTextArea (10,20);
pTextArea.setBackground (Color.black);
pTextArea.setForeground (Color.green);
JScrollPane pTextScrollPane = new JScrollPane();
pTextScrollPane.setViewportView(pTextArea);
pMiscPanel.add("Center", pTextScrollPane);
pContentPane.add (pMiscPanel,
new StrutLayout.StrutConstraint
(pMapScrollPane,
StrutLayout.TOP_RIGHT,
StrutLayout.TOP_LEFT,
StrutLayout.EAST));
JPanel pButtonPanel = new JPanel();
JButton pZoomInButton = button("+");
JButton pZoomOutButton = button("-");
JComboBox pViewModeChooser = comboBox();
pViewModeChooser.addItem("View Terrain");
pViewModeChooser.addItem("View Temperature");
pViewModeChooser.addItem("View Rainfall");
pViewModeChooser.addItem("View Elevation");
pButtonPanel.add(pZoomInButton);
pButtonPanel.add(pZoomOutButton);
pButtonPanel.add(pViewModeChooser);
pContentPane.add (pButtonPanel,
new StrutLayout.StrutConstraint
(pMapScrollPane,
StrutLayout.MID_BOTTOM,
StrutLayout.MID_TOP,
StrutLayout.SOUTH));
pLayout.setSprings(pMapScrollPane, StrutLayout.SPRING_BOTH);
StrutLayout.SizeGroup pSizeGroup = pLayout.createSizeGroup();
pSizeGroup.add (pMapScrollPane, StrutLayout.SIZE_HEIGHT);
pSizeGroup.add (pMiscPanel, StrutLayout.SIZE_HEIGHT);
pack();
mapDetails();
setVisible (true);
}
private JMenuItem menuItem (String sLabel) {
JMenuItem pMenuItem = new JMenuItem (sLabel);
pMenuItem.addActionListener(this);
return (pMenuItem);
}
private JButton button (String id) {
JButton b = new JButton (id);
b.addActionListener (this);
return (b);
}
private JComboBox comboBox () {
JComboBox b = new JComboBox ();
b.addActionListener (this);
return (b);
}
public void addText(String sText) {
pTextArea.append(sText);
}
//-------------------------------------------------------------------
// Accessors & Mutators
//
public void mapDetails () {
pTextArea.setText(null);
addText("World Name : "+pMap.getName()+"\n");
addText("Size : "+pMap.getDimension()
+" x "
+pMap.getDimension()
+"\n");
addText("High Elevation : "+pMap.getElevationHighest()+"\n");
addText("Low Elevation : "+pMap.getElevationLowest()+"\n");
addText("DeepOcean Elevation : "+pMap.getElevationDeepOcean()+"\n");
addText("Ocean Elevation : "+pMap.getElevationOcean()+"\n");
addText("Mountains Elevation : "+pMap.getElevationMountains()+"\n");
addText("I-Mountains Elevation: "+pMap.getElevationHighest()+"\n");
}
//-------------------------------------------------------------------
// Security
//
//-------------------------------------------------------------------
// Methods
//
//-------------------------------------------------------------------------
// ActionListener Interface
//
public void actionPerformed (ActionEvent e) {
String arg = e.getActionCommand ();
if (arg.equals ("Close")) {
dispose();
}
else if ( arg.equals ("-")
|| arg.equals ("Zoom Out")) {
pMapCanvas.zoomOut();
}
else if ( arg.equals ("+")
|| arg.equals ("Zoom In")) {
pMapCanvas.zoomIn();
}
else if (arg.equals ("World Parameters")) {
new ConfigWindow (pMap.getParams());
}
else if (arg.equals ("comboBoxChanged")) {
JComboBox pCB = (JComboBox)e.getSource();
String sAction = (String)pCB.getSelectedItem();
if (sAction.equals ("View Terrain")) {
pMapCanvas.setViewMode(MapCanvas.VIEW_TERRAIN);
}
else if (sAction.equals ("View Temperature")) {
pMapCanvas.setViewMode(MapCanvas.VIEW_TEMPERATURE);
}
else if (sAction.equals ("View Rainfall")) {
pMapCanvas.setViewMode(MapCanvas.VIEW_RAINFALL);
}
else if (sAction.equals ("View Elevation")) {
pMapCanvas.setViewMode(MapCanvas.VIEW_ELEVATION);
}
}
}
}