package interfaces.JGUI; import java.awt.*; import java.net.*; public class MapPanel extends Panel { Map m_map; MapApplet m_mapApplet; Panel m_zoomPanel; Panel m_posPanel; TextField m_cityName; Choice m_zoomFactor; Button m_redrawButton; boolean m_definePos = false; Dimension m_defineDim = new Dimension(300, 300); Image m_pinPos; String m_currentCity = new String(); MapPanel(MapApplet mapApplet) { m_map = new Map(mapApplet); m_mapApplet = mapApplet; setLayout(null); setBackground(Color.white); m_zoomPanel = new Panel(); m_zoomPanel.setLayout(new FlowLayout(FlowLayout.CENTER)); m_zoomPanel.add(new Label("City: ")); m_cityName = new TextField(15); m_zoomPanel.add(m_cityName); m_zoomPanel.add(new Label("Zoom: ")); m_zoomFactor = new Choice(); m_zoomFactor.addItem("x1"); m_zoomFactor.addItem("x2"); m_zoomFactor.addItem("x4"); m_zoomFactor.addItem("x8"); m_zoomFactor.addItem("Original"); m_zoomFactor.addItem("x0.5"); m_zoomPanel.add(m_zoomFactor); m_redrawButton = new Button("Redraw"); m_zoomPanel.add(m_redrawButton); m_posPanel = new Panel(); m_posPanel.setLayout(new FlowLayout(FlowLayout.CENTER)); m_posPanel.add(new Label("latitude: " + m_map.getPinX() + " deg.")); m_posPanel.add(new Label(" longtitude: " + m_map.getPinY() + " deg.")); m_posPanel.add(new Label(" distance: " + m_map.getScale() + " miles.")); m_map.reshape(0, 0, 600, 600); add(m_map); m_zoomPanel.reshape(0, 600, 600, 37); add(m_zoomPanel); m_posPanel.reshape(0, 637, 600, 37); add(m_posPanel); } public boolean action(Event evt, Object arg) { if (evt.target == m_redrawButton) { String cityName = m_cityName.getText(); if (!cityName.equalsIgnoreCase(m_currentCity)) { m_map.m_drawPin = false; if (cityName.equalsIgnoreCase("Ithaca")) { m_map.drawMap("Ithaca", 43.1, -97.4, 32); m_currentCity = "Ithaca"; updateCurrentPos(); validate(); } // in case there are other cities } String zoomFactor = m_zoomFactor.getSelectedItem(); if (zoomFactor.equals("Original")) { if (cityName.equalsIgnoreCase("Ithaca")) { m_map.drawMap("Ithaca", 43.1, -97.4, 32); m_currentCity = "Ithaca"; m_zoomFactor.select("x1"); updateCurrentPos(); validate(); } return true; } m_map.drawZoom(zoomFactor); m_zoomFactor.select("x1"); updateCurrentPos(); validate(); } return true; } public void drawPin(int x, int y) { if ((x > 0) && (x < 600) && (y > 0) && (y < 600)) { m_map.drawPin(x, y); updateCurrentPos(); validate(); } } public void updateCurrentPos() { remove(m_posPanel); m_posPanel = new Panel(); m_posPanel.setLayout(new FlowLayout(FlowLayout.CENTER)); m_posPanel.add(new Label("latitude: " + m_map.getPinX() + " deg.")); m_posPanel.add(new Label(" longtitude: " + m_map.getPinY() + " deg.")); m_posPanel.add(new Label(" distance: " + m_map.getScale() + " miles.")); m_posPanel.reshape(0, 637, 600, 37); add(m_posPanel); } }