package interfaces.JGUI; import java.awt.*; import java.applet.*; import java.net.*; import PREDATOR.*; import PREDATOR.ADT.*; import java.util.*; public class MapApplet extends Applet { MapPanel m_mapPanel; QueryPanel m_queryPanel; ResultPanel m_resultPanel; ResultTable m_resultTable; ResultTuple m_resultTuple; JGUI m_JGUI; String m_host, m_port; String m_configSelect; public void init() { setLayout(null); // setBackground(Color.white); m_mapPanel = new MapPanel(this); m_queryPanel = new QueryPanel(this); m_resultPanel = new ResultPanel(this); try { m_resultTable = new ResultTable(new Vector(), this); } catch (Exception e) { } m_port = getParameter("PORT"); m_host = getCodeBase().getHost(); m_JGUI = (JGUI) getAppletContext().getApplet("JGUI"); m_mapPanel.reshape(0, 0, 600, 675); m_queryPanel.reshape(600, 0, 400, 300); m_resultPanel.reshape(600, 300, 400, 375); add(m_mapPanel); add(m_queryPanel); add(m_resultPanel); } public void updatePanels() { validate(); return; } public String getQuery() { return m_queryPanel.getQuery(m_mapPanel.m_map.getPinX(), m_mapPanel.m_map.getPinY(), m_mapPanel.m_map.getScale()); } public void showResult(Vector result) { try { m_resultTable = new ResultTable(result, this); m_mapPanel.m_map.showResult(m_resultTable); m_resultPanel.showResult(m_resultTable); } catch (Exception e) { String str = new String(); for (int i = 0 ; i < result.size() ; i++) str += result.elementAt(i) + " "; m_resultPanel.showResult(str); } } public void submitQuery() { m_resultPanel.showResult(getQuery()); updatePanels(); return; } public void sendQuery(String query) { m_JGUI.sendQuery(query); updatePanels(); return; } public boolean mouseDown (Event evt, int x, int y) { m_configSelect = m_queryPanel.m_configGrp.getCurrent().getLabel(); for (int i = 0 ; i < m_resultTable.size() ; i++) { int urlX = (int)((m_resultTable.getX(i) - m_mapPanel.m_map.m_cornerX) * 600 / (m_mapPanel.m_map.m_size * Globals.m_mileToDeg)); int urlY = (int)((m_resultTable.getY(i) - m_mapPanel.m_map.m_cornerY) * 600 / (m_mapPanel.m_map.m_size * Globals.m_mileToDeg)); if ((x > (urlX - 6)) && (x < (urlX + 6)) && (y > (urlY - 7)) && (y < (urlY + 7))) { if (m_configSelect.equals("remove")) { m_resultTuple = (ResultTuple) m_resultTable.elementAt(i); submitQuery(); return true; } else { try { AppletContext context = getAppletContext(); context.showDocument(m_resultTable.getURL(i), "_noblank"); } catch (MalformedURLException e) { } return true; } } } m_mapPanel.drawPin(x, y); validate(); return true; } public void showMessage(String message) { m_resultPanel.showResult(message); } public boolean keyDown(Event evt, int key) { if (key == Event.F1) { m_resultPanel.deliverEvent(new Event(m_resultPanel.m_sendQuery, Event.ACTION_EVENT, "")); return true; } else if (key == Event.F2) { m_resultPanel.deliverEvent(new Event(m_resultPanel.m_reset, Event.ACTION_EVENT, "")); return true; } return false; } }