/*
* Copyright (c) Ian F. Darwin, http://www.darwinsys.com/, 1996-2002.
* All rights reserved. Software written by Ian F. Darwin and others.
* $Id: LICENSE,v 1.8 2004/02/09 03:33:38 ian Exp $
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* Java, the Duke mascot, and all variants of Sun's Java "steaming coffee
* cup" logo are trademarks of Sun Microsystems. Sun's, and James Gosling's,
* pioneering role in inventing and promulgating (and standardizing) the Java
* language and environment is gratefully acknowledged.
*
* The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&T, for
* inventing predecessor languages C and C++ is also gratefully acknowledged.
*/
////
//applet.html
/*
<TITLE>Ian Darwin's Demo Choice Applet</TITLE>
<BODY BGCOLOR="#c0e0d0">
<H1>Ian Darwin's Demo Choice Applet</H1>
<TABLE>
<TR><TD WIDTH=20%>
<P>Here it is, just what you need to replace JavaScript with:
<TD><!-- Need to adjust the height if you add more choices -->
<APPLET CODE=SumUp WIDTH=250 HEIGHT=150>
</APPLET>
</TABLE>
<HR>
<P>Hey, we'll even show you <A HREF="SumUp.java">how it works</A>.
*/
import java.applet.Applet;
import java.awt.Button;
import java.awt.Choice;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
/**
* <p>
* SumUp is a simple applet that adds up some numbers. To make this really
* useful for production, should implement a "little language" either in HTML
* PARAMs, such as
*
* <pre>
*
* &ltparam name="title1" value="Option One">
* &ltparam name="values1" value="0|100|200|300|400">
* &ltparam name="title1" value="Option Two">
* &ltparam name="values1" value="0|400|600|800|1000">
*
* </pre>
*
* <br/>or <br/>in a configuration file which we download and parse (see
* TreeLink.java in this directory) or load as a Properties file (see
* MenuIntl.java).
* </p>
* <p>
* Also, of course, the URL to go to should be a PARAM. Not to mention the
* colors (see ColorName and/or XColor).
* </p>
*
* @author Ian F. Darwin, http://www.darwinsys.com/
*/
public class SumUp extends Applet implements ActionListener {
/** The array of Choice items */
protected Choice cs[] = new Choice[10];
/** How many are actually in the array. */
protected int numChoices = 0;
/** The result of the summation */
protected Label resultField;
/** The pushbutton to send the form in */
protected Button sendButton;
/** init() is an Applet method called by the browser to initialize */
public void init() {
setBackground(Color.magenta);
// The layout of the Applet is a Grid; always add things in pairs!
setLayout(new GridLayout(0, 2));
Choice c;
add(new Label("Option 1"));
add(c = new Choice());
c.addItem("0");
c.addItem("100");
c.addItem("200");
c.addItem("400");
cs[numChoices++] = c;
add(new Label("Option 2"));
add(c = new Choice());
c.addItem("0");
c.addItem("100");
c.addItem("200");
c.addItem("400");
cs[numChoices++] = c;
Panel p = new Panel();
p.setBackground(Color.pink);
p.add(new Label("Total:"));
p.add(resultField = new Label("000000"));
add(p);
sendButton = new Button("Send it");
add(sendButton); // connect Button into Applet
sendButton.addActionListener(this); // connect it back to Applet
}
/**
* actionPerforformed() is called when a "high level" action happens (like
* the user pushing a Button!) in one of the components added to this
* Applet.
*/
public void actionPerformed(ActionEvent e) { // 1.1
int total = 0;
for (int i = 0; i < numChoices; i++) {
String text = cs[i].getSelectedItem();
// System.err.println("Selection " + i + " = " + text);
int value = Integer.parseInt(text);
total += value;
}
resultField.setText(Integer.toString(total));
try {
URL myNewURL = new URL("http://server/cgi-bin/credit?sum=" + total);
// System.out.println("URL = " + myNewURL); // debug...
// "And then a miracle occurs..."
getAppletContext().showDocument(myNewURL);
} catch (Exception err) {
System.err.println("Error!\n" + err);
showStatus("Error, look in Java Console for details!");
}
}
}
|