package threads; import java.applet.Applet; import java.applet.AppletContext; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.PrintWriter; import java.io.StringWriter; import java.util.Enumeration; import java.util.EventObject; import javax.swing.JApplet; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; public class ThreadListerApplet extends JApplet implements ActionListener { public ThreadListerApplet() { m_dumpButton = new JButton("List Thread Groups"); m_clearButton = new JButton("Clear"); m_createButton = new JButton("Create ThreadGroups"); } public void actionPerformed(ActionEvent e) { JButton source = (JButton)e.getSource(); if (source == m_dumpButton) dumpData(false); else { if (source == m_clearButton) m_textarea.setText(""); else if (source == m_createButton) { m_textarea.setText(""); dumpData(true); m_createButton.setEnabled(false); } } } private void dumpData(boolean createGroups) { StringWriter sout = new StringWriter(); PrintWriter out = new PrintWriter(sout); String s = ""; if (createGroups) try { TestThreadGroup.createThreadGroups(); } catch(Exception e) { out.println("***Caught exception: " + e + "\nUnable to create thread groups."); } try { s = TestThreadGroup.dumpThreadGroupTree(); } catch(Exception e) { s = "***Caught exception: " + e + "\nUnable to dump thread group tree."; } out.print(s); out.println(); out.println("Applets:"); AppletContext appContext = getAppletContext(); int count = 0; Applet app; for(Enumeration e = appContext.getApplets(); e.hasMoreElements(); out.println(" " + app.getClass().getName())) { app = (Applet)e.nextElement(); count++; } out.println("Applet count = " + count); out.flush(); m_textarea.setText(sout.toString()); } public void init() { setContentPane( createLayout() ); } public JPanel createLayout() { JPanel contentPane = new JPanel(); contentPane.setLayout( new BorderLayout() ); m_textarea = new JTextArea(); contentPane.add(new JScrollPane(m_textarea), BorderLayout.CENTER); JPanel buttonPanel = new JPanel(); buttonPanel.setLayout( new FlowLayout() ); contentPane.add(buttonPanel, BorderLayout.NORTH); m_dumpButton.addActionListener(this); buttonPanel.add(m_dumpButton); m_clearButton.addActionListener(this); buttonPanel.add(m_clearButton); m_createButton.addActionListener(this); buttonPanel.add(m_createButton); return contentPane; } public void start() { dumpData(false); } private JTextArea m_textarea; private JButton m_dumpButton; private JButton m_clearButton; private JButton m_createButton; }