// Fig. 24.2: SiteSelector.java // This program loads a document from a URL. import java.net.MalformedURLException; import java.net.URL; import java.util.HashMap; import java.util.ArrayList; import java.awt.BorderLayout; import java.applet.AppletContext; import javax.swing.JApplet; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JScrollPane; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; public class SiteSelector extends JApplet { private HashMap< Object, URL > sites; // site names and URLs private ArrayList< String > siteNames; // site names private JList siteChooser; // list of sites to choose from // read HTML parameters and set up GUI public void init() { sites = new HashMap< Object, URL >(); // create HashMap siteNames = new ArrayList< String >(); // create ArrayList // obtain parameters from HTML document getSitesFromHTMLParameters(); // create GUI components and layout interface add( new JLabel( "Choose a site to browse" ), BorderLayout.NORTH ); siteChooser = new JList( siteNames.toArray() ); // populate JList siteChooser.addListSelectionListener( new ListSelectionListener() // anonymous inner class { // go to site user selected public void valueChanged( ListSelectionEvent event ) { // get selected site name Object object = siteChooser.getSelectedValue(); // use site name to locate corresponding URL URL newDocument = sites.get( object ); // get applet container AppletContext browser = getAppletContext(); // tell applet container to change pages browser.showDocument( newDocument ); } // end method valueChanged } // end anonymous inner class ); // end call to addListSelectionListener add( new JScrollPane( siteChooser ), BorderLayout.CENTER ); } // end method init // obtain parameters from HTML document private void getSitesFromHTMLParameters() { String title; // site title String location; // location of site URL url; // URL of location int counter = 0; // count number of sites title = getParameter( "title" + counter ); // get first site title // loop until no more parameters in HTML document while ( title != null ) { // obtain site location location = getParameter( "location" + counter ); try // place title/URL in HashMap and title in ArrayList { url = new URL( location ); // convert location to URL sites.put( title, url ); // put title/URL in HashMap siteNames.add( title ); // put title in ArrayList } // end try catch ( MalformedURLException urlException ) { urlException.printStackTrace(); } // end catch counter++; title = getParameter( "title" + counter ); // get next site title } // end while } // end method getSitesFromHTMLParameters } // end class SiteSelector /************************************************************************** * (C) Copyright 1992-2005 by Deitel & Associates, Inc. and * * Pearson Education, Inc. All Rights Reserved. * * * * DISCLAIMER: The authors and publisher of this book have used their * * best efforts in preparing the book. These efforts include the * * development, research, and testing of the theories and programs * * to determine their effectiveness. The authors and publisher make * * no warranty of any kind, expressed or implied, with regard to these * * programs or to the documentation contained in these books. The authors * * and publisher shall not be liable in any event for incidental or * * consequential damages in connection with, or arising out of, the * * furnishing, performance, or use of these programs. * *************************************************************************/