Revision: 6607
http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6607&view=rev
Author: wis775
Date: 2012-03-26 20:12:53 +0000 (Mon, 26 Mar 2012)
Log Message:
-----------
Added a ThreadDump to Help => About => Threads
Modified Paths:
--------------
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/AboutBoxDialog.java
trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/gui/I18NStrings.properties
trunk/sql12/doc/src/main/resources/changes.txt
Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/AboutBoxDialog.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/AboutBoxDialog.java 2012-03-22 20:30:24 UTC (rev 6606)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/AboutBoxDialog.java 2012-03-26 20:12:53 UTC (rev 6607)
@@ -19,6 +19,7 @@
*/
import java.awt.BorderLayout;
import java.awt.Color;
+import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -27,9 +28,15 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
+import java.lang.management.ManagementFactory;
+import java.lang.management.ThreadInfo;
+import java.lang.management.ThreadMXBean;
import java.net.URL;
+import java.util.Map;
+import java.util.Set;
import java.util.StringTokenizer;
+import javax.management.MXBean;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JButton;
@@ -39,6 +46,7 @@
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
+import javax.swing.JTextArea;
import javax.swing.Timer;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
@@ -54,6 +62,7 @@
import net.sourceforge.squirrel_sql.fw.gui.PropertyPanel;
import net.sourceforge.squirrel_sql.fw.util.StringManager;
import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
+import net.sourceforge.squirrel_sql.fw.util.StringUtilities;
import net.sourceforge.squirrel_sql.fw.util.Utilities;
import net.sourceforge.squirrel_sql.fw.util.log.ILogger;
import net.sourceforge.squirrel_sql.fw.util.log.LoggerController;
@@ -84,6 +93,8 @@
/** System panel. */
private SystemPanel _systemPnl;
+
+ private ThreadPanel _threadPnl;
/** Close button for dialog. */
private final JButton _closeBtn = new JButton(s_stringMgr.getString("AboutBoxDialog.close"));
@@ -168,6 +179,9 @@
+ (System.currentTimeMillis() - start)
+ "ms");
}
+
+ _threadPnl = new ThreadPanel();
+ _tabPnl.add(s_stringMgr.getString("AboutBoxDialog.threads"), _threadPnl);
_tabPnl.addChangeListener(new ChangeListener()
{
@@ -396,6 +410,8 @@
}
}
+
+
private static class MemoryPanel
extends PropertyPanel
implements ActionListener
@@ -476,4 +492,55 @@
_freeMemoryLbl.setText(Utilities.formatSize(freeMemory, 1));
}
}
+
+ private static final class ThreadPanel extends JPanel
+ {
+ private static final long serialVersionUID = 1L;
+
+ private JTextArea content;
+
+ ThreadPanel()
+ {
+ super();
+ setLayout(new BorderLayout());
+
+ content = new JTextArea(5,20);
+ content.setEditable(false);
+ content.setLineWrap(false);
+ doThreadDump();
+ add(new JScrollPane(content), BorderLayout.CENTER);
+ add(createButtons(), BorderLayout.SOUTH);
+ }
+
+ /**
+ * @return
+ */
+ private JPanel createButtons() {
+ JPanel buttonPanel = new JPanel(new BorderLayout());
+ JButton refreshButton = new JButton(s_stringMgr.getString("ThreadPanel.refresh"));
+ buttonPanel.add(refreshButton, BorderLayout.WEST);
+
+ refreshButton.addActionListener(new ActionListener() {
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ doThreadDump();
+ }
+ });
+
+ return buttonPanel;
+ }
+
+ private void doThreadDump() {
+ StringBuilder sb = new StringBuilder(1000);
+
+ ThreadInfo[] threadInfos = ManagementFactory.getThreadMXBean().dumpAllThreads(true, true);
+ for (ThreadInfo threadInfo : threadInfos) {
+ sb.append(threadInfo.toString());
+ sb.append(StringUtilities.getEolStr());
+ }
+
+ content.setText(sb.toString());
+ }
+ }
}
Modified: trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/gui/I18NStrings.properties
===================================================================
--- trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/gui/I18NStrings.properties 2012-03-22 20:30:24 UTC (rev 6606)
+++ trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/gui/I18NStrings.properties 2012-03-26 20:12:53 UTC (rev 6607)
@@ -22,6 +22,7 @@
AboutBoxDialog.info.endmemtimer=Ending memory timer (AboutBox)
AboutBoxDialog.systempanelcreatetime=SystemPanel created in
AboutBoxDialog.system=System
+AboutBoxDialog.threads=Threads
AboutBoxDialog.usedheap=Used heap:
HtmlViewerPanel.error.displayurl=Error displaying URL
@@ -96,3 +97,5 @@
MemoryPanel.sessionInfo.toString1=Session: ID={0}, Alias={1}: created at {2}, closed at {3}
MemoryPanel.sessionInfo.toString2=Session: ID={0}, Alias={1}: created at {2}
MemoryPanel.sessionInfo.toString3=Session: ID={0}, Alias={1}: created at {2}, closed at {3}, finalized at {4}
+
+ThreadPanel.refresh=Refresh
Modified: trunk/sql12/doc/src/main/resources/changes.txt
===================================================================
--- trunk/sql12/doc/src/main/resources/changes.txt 2012-03-22 20:30:24 UTC (rev 6606)
+++ trunk/sql12/doc/src/main/resources/changes.txt 2012-03-26 20:12:53 UTC (rev 6607)
@@ -9,6 +9,9 @@
Enhancements:
+About Dialog:
+ Added a tab for displaying the status off all threads.
+
3463374: Ability to rename SQL Worksheet tabs through Session menu, tab's right mouse menu or shortcut shift F6. (Thanks to Vladislav Vavra for the patch.)
Hibernate Plugin:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|