1 import java.awt.*;
2 import java.awt.event.*;
3 import java.applet.*;
4 import javax.swing.*;
5 import java.io.*;
6 import java.net.*;
7 import java.awt.datatransfer.*;
8 
9 public class BadApplet extends JApplet {
10     JTabbedPane tabs        = new JTabbedPane();
11     JPanel FileSystemTests  = new JPanel();
12     JPanel NetworkTests     = new JPanel();
13     JPanel EnvironmentTests = new JPanel();
14 
15     JButton writeFileButton      = new JButton("Write File");
16     JButton readFileButton       = new JButton("Read File");
17     JButton connectSocketButton  = new JButton("Connect Socket");
18     JButton frameButton          = new JButton("Open Frame Without Warning Tag");
19     JButton readSystemPropButton = new JButton("Read System Property");
20     JButton printButton          = new JButton("Print");
21     JButton clipBoardButton      = new JButton("Read Clipboard");
22 
23     JTextField writePath         = new JTextField( "/amd/ns/root/home/sbarnes/test.txt" );
24     JTextField readPath          = new JTextField("/amd/ns/root/home/sbarnes/test.txt");
25     JTextField url               = new JTextField("URL");
26     JTextField port              = new JTextField("port");
27     JTextField systemProp        = new JTextField("os.name");
28     JTextField output            = new JTextField();
29 
30     //Construct the applet
BadApplet()31     public BadApplet() {
32         try {
33             //event handlers ******************************************************
34             writeFileButton.addActionListener(new java.awt.event.ActionListener() {
35                 public void actionPerformed(ActionEvent e) {
36                     writeFileButton_actionPerformed(e);
37                 }
38             });
39             readFileButton.addActionListener(new java.awt.event.ActionListener() {
40                 public void actionPerformed(ActionEvent e) {
41                     readFileButton_actionPerformed(e);
42                 }
43             });
44             connectSocketButton.addActionListener(new java.awt.event.ActionListener() {
45                 public void actionPerformed(ActionEvent e) {
46                     connectSocketButton_actionPerformed(e);
47                 }
48             });
49             frameButton.addActionListener(new java.awt.event.ActionListener() {
50                 public void actionPerformed(ActionEvent e) {
51                 frameButton_actionPerformed(e);
52                 }
53             });
54             readSystemPropButton.addActionListener(new java.awt.event.ActionListener() {
55                 public void actionPerformed(ActionEvent e) {
56                     readSystemPropButton_actionPerformed(e);
57                 }
58             });
59             printButton.addActionListener(new java.awt.event.ActionListener() {
60                 public void actionPerformed(ActionEvent e) {
61                     printButton_actionPerformed(e);
62                 }
63             });
64             clipBoardButton.addActionListener(new java.awt.event.ActionListener() {
65                 public void actionPerformed(ActionEvent e) {
66                     clipBoard_actionPerformed(e);
67                 }
68             });
69 
70             //do layout ***********************************************************
71             getContentPane().setLayout( new BorderLayout() );
72 
73             FileSystemTests.setLayout( new FlowLayout( FlowLayout.LEFT ) );
74             FileSystemTests.add( writeFileButton );
75             FileSystemTests.add( writePath );
76             FileSystemTests.add( readFileButton );
77             FileSystemTests.add( readPath );
78 
79             NetworkTests.setLayout( new FlowLayout( FlowLayout.LEFT ) );
80             NetworkTests.add( connectSocketButton );
81             NetworkTests.add( url );
82             NetworkTests.add( port );
83 
84             EnvironmentTests.setLayout( new FlowLayout( FlowLayout.LEFT ) );
85             EnvironmentTests.add( frameButton );
86             EnvironmentTests.add( readSystemPropButton );
87             EnvironmentTests.add( systemProp );
88             EnvironmentTests.add( printButton );
89             EnvironmentTests.add( clipBoardButton );
90 
91             tabs.add( FileSystemTests, "File System" );
92             tabs.add( NetworkTests, "Network" );
93             tabs.add( EnvironmentTests, "Environment" );
94 
95             this.getContentPane().add( tabs, BorderLayout.CENTER );
96             this.getContentPane().add( output, BorderLayout.SOUTH );
97         }
98         catch(Exception e) {
99             e.printStackTrace();
100         }
101     }
102 
paint( Graphics g )103     public void paint( Graphics g )
104     {
105         System.out.println( "graphics g = " + g );
106         System.out.println( "clip area = " + g.getClip() );
107         System.out.println( "bounds of the clip area = " + g.getClipBounds() );
108 
109         super.paint( g );
110     }
111 
112     //Initialize the applet
init()113     public void init() {}
114 
writeFileButton_actionPerformed(ActionEvent e)115     void writeFileButton_actionPerformed(ActionEvent e) {
116         try{
117             PrintWriter writer = new PrintWriter(new FileOutputStream(writePath.getText()));
118             writer.println("Here is some text");
119             writer.close();
120             output.setText("Write was successful");
121         } catch (Exception ex){output.setText(ex.getMessage());}
122     }
123 
readSystemPropButton_actionPerformed(ActionEvent e)124     void readSystemPropButton_actionPerformed(ActionEvent e) {
125         try{
126             output.setText(System.getProperty(systemProp.getText()));
127         } catch (Exception ex){output.setText("Error getting prop: " + ex.getMessage());}
128     }
129 
readFileButton_actionPerformed(ActionEvent e)130     void readFileButton_actionPerformed(ActionEvent e) {
131         try{
132             BufferedReader reader = new BufferedReader(new FileReader(readPath.getText()));
133             output.setText("Read was successful: " + reader.readLine());
134         } catch (Exception ex){output.setText(ex.getMessage());}
135     }
136 
connectSocketButton_actionPerformed(ActionEvent e)137     void connectSocketButton_actionPerformed(ActionEvent e) {
138         try{
139             Integer thePort = new Integer(port.getText());
140             Socket socket = new Socket(url.getText(), thePort.intValue());
141             socket.getOutputStream();
142             output.setText("Socket connection successful");
143         } catch (Exception ex){output.setText("Socket unsuccessfull: " + ex.getMessage());}
144     }
145 
frameButton_actionPerformed(ActionEvent e)146     void frameButton_actionPerformed(ActionEvent e) {
147         JFrame frame = new JFrame("Does this Frame have a warning sign");
148         frame.setSize(200,200);
149         frame.show();
150         if (frame.getWarningString() == null)
151             output.setText("No warning string in frame");
152         else
153             output.setText(frame.getWarningString());
154     }
155 
clipBoard_actionPerformed(ActionEvent e)156     void clipBoard_actionPerformed(ActionEvent e) {
157         try {
158             Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
159 
160             Transferable trans = clip.getContents(null);
161             if (trans == null){
162                 output.setText("Clipboard is empty");
163                 return;
164             }
165             output.setText((String)trans.getTransferData(DataFlavor.stringFlavor));
166         }catch(Exception ex){ex.getMessage();}
167     }
168 
printButton_actionPerformed(ActionEvent e)169     void printButton_actionPerformed(ActionEvent e) {
170         try{
171             JFrame testFrame = new JFrame("test");
172             testFrame.getContentPane().add(this, BorderLayout.CENTER);
173             PrintJob printer = Toolkit.getDefaultToolkit().getPrintJob(testFrame, "Applet Print Test", null);
174 
175             if (printer == null){
176                 output.setText("PrintJob is null");
177                 return;
178             }
179 
180             Graphics g = printer.getGraphics();
181             g.drawString("This is the applet print test", 50, 50);
182             g.dispose();
183             printer.end();
184         }catch(Exception ex){ex.getMessage();}
185     }
186 
187     //Main method
main(String[] args)188     public static void main(String[] args) {
189         BadApplet applet = new BadApplet();
190 
191         JFrame frame = new JFrame();
192         frame.setDefaultCloseOperation( WindowConstants.DISPOSE_ON_CLOSE );
193         frame.setTitle("Applet Frame");
194         frame.getContentPane().add(applet, BorderLayout.CENTER);
195         frame.setSize(400,320);
196         frame.setVisible(true);
197 
198         applet.init();
199         applet.start();
200     }
201 
202 }
203