/* Applet Copyright (C) 2004, Raymond Software, Inc. */
/* GoogleAPIDemo Copyright (C) 2002, Google, Inc. */
package com.google.soap.search;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import java.util.*;
import java.net.*;
import java.lang.*;
/**
* This applet demonstrates how to use the Google Web APIs for
* searching, spell checking, and fetching pages from the cache.
*
* @see com.google.soap.search.GoogleSearch
* @see com.google.soap.search.GoogleSearchResult
*/
public class GoogleAPIDemo extends JApplet {
private JFrame frame;
private JTextField keyField;
private JTextArea argField;
private JTextArea parmField;
private JButton searchBtn;
private JButton cacheBtn;
private JButton spellBtn;
private JPanel fieldPanel;
private JPanel buttonPanel;
private JScrollPane argScrollPane;
private JScrollPane parmScrollPane;
private Container cp;
private JButton showHideBtn;
private SecurityManager manager;
String directive;
String directiveArg;
String clientKey;
GoogleSearch s;
GoogleSearchResult r;
String suggestion;
String cachedString;
public void init() {
// set the default look and feel
String laf = UIManager.getSystemLookAndFeelClassName();
try {
// UIManager.setLookAndFeel(laf);
// If you want the Cross Platform L&F instead, comment out the above line and
// uncomment the following:
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
} catch (UnsupportedLookAndFeelException exc) {
System.err.println ("Warning: UnsupportedLookAndFeel: " + laf);
} catch (Exception exc) {
System.err.println ("Error loading " + laf + ": " + exc);
}
// create the GUI
// separate window
frame = new JFrame();
frame.setTitle("Google Web API Demo Applet");
frame.setSize(500, 400);
cp = frame.getContentPane();
fieldPanel = new JPanel();
buttonPanel = new JPanel();
cp.add(fieldPanel, BorderLayout.CENTER);
cp.add(buttonPanel, BorderLayout.SOUTH);
BorderLayout bordLayout = new BorderLayout();
fieldPanel.setLayout(bordLayout);
keyField = new JTextField("Enter your Google key here", 20);
keyField.setEditable(true);
fieldPanel.add(keyField, BorderLayout.NORTH);
parmField = new JTextArea("Parameters:", 5, 20);
parmField.setEditable(false);
parmScrollPane = new JScrollPane(parmField);
fieldPanel.add(parmScrollPane, BorderLayout.CENTER);
argField = new JTextArea("Enter a search string or a URI here", 15, 20);
argField.setEditable(true);
argScrollPane = new JScrollPane(argField);
fieldPanel.add(argScrollPane, BorderLayout.SOUTH);
searchBtn = new JButton("Search");
buttonPanel.add(searchBtn);
cacheBtn = new JButton("Cached");
buttonPanel.add(cacheBtn);
spellBtn = new JButton("Spell");
buttonPanel.add(spellBtn);
// Show/Hide button on the web page
this.getContentPane().setLayout(new FlowLayout());
showHideBtn = new JButton("Show(Hide)");
this.getContentPane().add(showHideBtn);
// display the Google key if set above
// keyField.setText(clientKey);
this.setVisible(true);
frame.setVisible(true);
} // Init
public void start() {
try {
// Create a Google Search object
s = new GoogleSearch();
}
catch (Exception e) {
argField.setText("Exception: " + e);
argScrollPane.validate();
}
keyField.requestFocus();
keyField.selectAll();
showHideBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//Toolkit.getDefaultToolkit().beep();
if (frame.isVisible()) frame.setVisible(false);
else frame.setVisible(true);
}
});
searchBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//Toolkit.getDefaultToolkit().beep();
clientKey = keyField.getText();
directive = "search";
directiveArg = argField.getText();
// Report the arguments passed
parmField.setText("Parameters:\n" +
"Client key = " + clientKey + "\n" +
"Directive = " + directive + "\n" +
"Args = " + directiveArg);
parmScrollPane.validate();
try {
s.setKey(clientKey);
s.setQueryString(directiveArg);
// Report the results of the query
r = s.doSearch();
argField.setText("Google Search Results:\n" +
"======================\n" + r.toString());
argScrollPane.validate();
} catch (GoogleSearchFault f) {
argField.setText("The call to the Google Web APIs failed: " + f.toString());
argScrollPane.validate();
}
catch (Exception e) {
argField.setText("Exception: " + e);
argScrollPane.validate();
}
}
});
cacheBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//Toolkit.getDefaultToolkit().beep();
clientKey = keyField.getText();
directive = "cached";
directiveArg = argField.getText();
// Report the arguments passed
parmField.setText("Parameters:\n" +
"Client key = " + clientKey + "\n" +
"Directive = " + directive + "\n" +
"Args = " + directiveArg);
parmScrollPane.validate();
try {
s.setKey(clientKey);
// Report the results of the query
byte [] cachedBytes = s.doGetCachedPage(directiveArg);
// Note - this conversion to String should be done with reference
// to the encoding of the cached page, but we don't do that here.
cachedString = new String(cachedBytes);
argField.setText("Cached page:\n" +
"============\n" + cachedString);
argScrollPane.validate();
} catch (GoogleSearchFault f) {
argField.setText("The call to the Google Web APIs failed: " + f.toString());
argScrollPane.validate();
}
catch (Exception e) {
argField.setText("Exception: " + e);
argScrollPane.validate();
}
}
});
spellBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//Toolkit.getDefaultToolkit().beep();
clientKey = keyField.getText();
directive = "spell";
directiveArg = argField.getText();
// Report the arguments passed
parmField.setText("Parameters:\n" +
"Client key = " + clientKey + "\n" +
"Directive = " + directive + "\n" +
"Args = " + directiveArg);
parmScrollPane.validate();
try {
s.setKey(clientKey);
// Report the results of the query
suggestion = s.doSpellingSuggestion(directiveArg);
argField.setText("Spelling suggestion:\n" + suggestion);
argScrollPane.validate();
} catch (GoogleSearchFault f) {
argField.setText("The call to the Google Web APIs failed: " + f.toString());
argScrollPane.validate();
}
catch (Exception e) {
argField.setText("Exception: " + e);
argScrollPane.validate();
}
}
});
} // Start
} // Applet