src/share/classes/sun/tools/jconsole/ThreadTab.java

Print this page
rev 5340 : 7017818: NLS: JConsoleResources.java cannot be handled by translation team
Reviewed-by: duke

*** 33,59 **** import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; import java.util.*; import java.util.concurrent.*; import java.util.List; - import sun.awt.*; - - import static sun.tools.jconsole.OverviewPanel.*; - import static sun.tools.jconsole.Resources.*; import static sun.tools.jconsole.Utilities.*; @SuppressWarnings("serial") class ThreadTab extends Tab implements ActionListener, DocumentListener, ListSelectionListener { PlotterPanel threadMeter; TimeComboBox timeComboBox; JTabbedPane threadListTabbedPane; ! DefaultListModel listModel; JTextField filterTF; JLabel messageLabel; JSplitPane threadsSplitPane; HashMap<Long, String> nameCache = new HashMap<Long, String>(); --- 33,57 ---- import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; + import sun.tools.jconsole.resources.Messages; + import java.util.*; import java.util.concurrent.*; import java.util.List; import static sun.tools.jconsole.Utilities.*; @SuppressWarnings("serial") class ThreadTab extends Tab implements ActionListener, DocumentListener, ListSelectionListener { PlotterPanel threadMeter; TimeComboBox timeComboBox; JTabbedPane threadListTabbedPane; ! DefaultListModel<Long> listModel; JTextField filterTF; JLabel messageLabel; JSplitPane threadsSplitPane; HashMap<Long, String> nameCache = new HashMap<Long, String>();
*** 62,74 **** private static final String threadCountKey = "threadCount"; private static final String peakKey = "peak"; - private static final String threadCountName = Resources.getText("Live Threads"); - private static final String peakName = Resources.getText("Peak"); - private static final Color threadCountColor = Plotter.defaultColor; private static final Color peakColor = Color.red; private static final Border thinEmptyBorder = new EmptyBorder(2, 2, 2, 2); --- 60,69 ----
*** 91,101 **** */ public static String getTabName() { ! return Resources.getText("Threads"); } public ThreadTab(VMPanel vmPanel) { super(vmPanel, getTabName()); --- 86,96 ---- */ public static String getTabName() { ! return Messages.THREADS; } public ThreadTab(VMPanel vmPanel) { super(vmPanel, getTabName());
*** 109,140 **** add(plotterPanel, BorderLayout.CENTER); JPanel controlPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 20, 5)); topPanel.add(controlPanel, BorderLayout.CENTER); ! threadMeter = new PlotterPanel(Resources.getText("Number of Threads"), Plotter.Unit.NONE, true); ! threadMeter.plotter.createSequence(threadCountKey, threadCountName, threadCountColor, true); ! threadMeter.plotter.createSequence(peakKey, peakName, peakColor, true); setAccessibleName(threadMeter.plotter, ! getText("ThreadTab.threadPlotter.accessibleName")); plotterPanel.add(threadMeter); timeComboBox = new TimeComboBox(threadMeter.plotter); ! controlPanel.add(new LabeledComponent(Resources.getText("Time Range:"), ! getMnemonicInt("Time Range:"), timeComboBox)); ! listModel = new DefaultListModel(); JTextArea textArea = new JTextArea(); textArea.setBorder(thinEmptyBorder); textArea.setEditable(false); setAccessibleName(textArea, ! getText("ThreadTab.threadInfo.accessibleName")); ! JList list = new ThreadJList(listModel, textArea); Dimension di = new Dimension(super.getPreferredSize()); di.width = Math.min(di.width, 200); JScrollPane threadlistSP = new JScrollPane(list); --- 104,135 ---- add(plotterPanel, BorderLayout.CENTER); JPanel controlPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 20, 5)); topPanel.add(controlPanel, BorderLayout.CENTER); ! threadMeter = new PlotterPanel(Messages.NUMBER_OF_THREADS, Plotter.Unit.NONE, true); ! threadMeter.plotter.createSequence(threadCountKey, Messages.LIVE_THREADS, threadCountColor, true); ! threadMeter.plotter.createSequence(peakKey, Messages.PEAK, peakColor, true); setAccessibleName(threadMeter.plotter, ! Messages.THREAD_TAB_THREAD_PLOTTER_ACCESSIBLE_NAME); plotterPanel.add(threadMeter); timeComboBox = new TimeComboBox(threadMeter.plotter); ! controlPanel.add(new LabeledComponent(Messages.TIME_RANGE_COLON, ! Resources.getMnemonicInt(Messages.TIME_RANGE_COLON), timeComboBox)); ! listModel = new DefaultListModel<Long>(); JTextArea textArea = new JTextArea(); textArea.setBorder(thinEmptyBorder); textArea.setEditable(false); setAccessibleName(textArea, ! Messages.THREAD_TAB_THREAD_INFO_ACCESSIBLE_NAME); ! ThreadJList list = new ThreadJList(listModel, textArea); Dimension di = new Dimension(super.getPreferredSize()); di.width = Math.min(di.width, 200); JScrollPane threadlistSP = new JScrollPane(list);
*** 163,185 **** JSeparator separator = new JSeparator(JSeparator.VERTICAL); separator.setPreferredSize(new Dimension(separator.getPreferredSize().width, filterTF.getPreferredSize().height)); firstTabToolPanel.add(separator); ! JButton detectDeadlockButton = new JButton(Resources.getText("Detect Deadlock")); ! detectDeadlockButton.setMnemonic(getMnemonicInt("Detect Deadlock")); detectDeadlockButton.setActionCommand("detectDeadlock"); detectDeadlockButton.addActionListener(this); ! detectDeadlockButton.setToolTipText(getText("Detect Deadlock.toolTip")); firstTabToolPanel.add(detectDeadlockButton); messageLabel = new JLabel(); firstTabToolPanel.add(messageLabel); firstTabPanel.add(threadsSplitPane, BorderLayout.CENTER); firstTabPanel.add(firstTabToolPanel, BorderLayout.SOUTH); ! threadListTabbedPane.addTab(Resources.getText("Threads"), firstTabPanel); plotterPanel.add(threadListTabbedPane); } private long oldThreads[] = new long[0]; --- 158,180 ---- JSeparator separator = new JSeparator(JSeparator.VERTICAL); separator.setPreferredSize(new Dimension(separator.getPreferredSize().width, filterTF.getPreferredSize().height)); firstTabToolPanel.add(separator); ! JButton detectDeadlockButton = new JButton(Messages.DETECT_DEADLOCK); ! detectDeadlockButton.setMnemonic(Resources.getMnemonicInt(Messages.DETECT_DEADLOCK)); detectDeadlockButton.setActionCommand("detectDeadlock"); detectDeadlockButton.addActionListener(this); ! detectDeadlockButton.setToolTipText(Messages.DETECT_DEADLOCK_TOOLTIP); firstTabToolPanel.add(detectDeadlockButton); messageLabel = new JLabel(); firstTabToolPanel.add(messageLabel); firstTabPanel.add(threadsSplitPane, BorderLayout.CENTER); firstTabPanel.add(firstTabToolPanel, BorderLayout.SOUTH); ! threadListTabbedPane.addTab(Messages.THREADS, firstTabPanel); plotterPanel.add(threadListTabbedPane); } private long oldThreads[] = new long[0];
*** 354,389 **** // VM doesn't support monitor usage monitoring ti = threadMBean.getThreadInfo(threadID, Integer.MAX_VALUE); } if (ti != null) { if (ti.getLockName() == null) { ! sb.append(Resources.getText("Name State", ti.getThreadName(), ti.getThreadState().toString())); } else if (ti.getLockOwnerName() == null) { ! sb.append(Resources.getText("Name State LockName", ti.getThreadName(), ti.getThreadState().toString(), ti.getLockName())); } else { ! sb.append(Resources.getText("Name State LockName LockOwner", ti.getThreadName(), ti.getThreadState().toString(), ti.getLockName(), ti.getLockOwnerName())); } ! sb.append(Resources.getText("BlockedCount WaitedCount", ti.getBlockedCount(), ti.getWaitedCount())); ! sb.append(Resources.getText("Stack trace")); int index = 0; for (StackTraceElement e : ti.getStackTrace()) { sb.append(e.toString()+"\n"); if (monitors != null) { for (MonitorInfo mi : monitors) { if (mi.getLockedStackDepth() == index) { ! sb.append(Resources.getText("Monitor locked", mi.toString())); } } } index++; } --- 349,384 ---- // VM doesn't support monitor usage monitoring ti = threadMBean.getThreadInfo(threadID, Integer.MAX_VALUE); } if (ti != null) { if (ti.getLockName() == null) { ! sb.append(Resources.format(Messages.NAME_STATE, ti.getThreadName(), ti.getThreadState().toString())); } else if (ti.getLockOwnerName() == null) { ! sb.append(Resources.format(Messages.NAME_STATE_LOCK_NAME, ti.getThreadName(), ti.getThreadState().toString(), ti.getLockName())); } else { ! sb.append(Resources.format(Messages.NAME_STATE_LOCK_NAME_LOCK_OWNER, ti.getThreadName(), ti.getThreadState().toString(), ti.getLockName(), ti.getLockOwnerName())); } ! sb.append(Resources.format(Messages.BLOCKED_COUNT_WAITED_COUNT, ti.getBlockedCount(), ti.getWaitedCount())); ! sb.append(Messages.STACK_TRACE); int index = 0; for (StackTraceElement e : ti.getStackTrace()) { sb.append(e.toString()+"\n"); if (monitors != null) { for (MonitorInfo mi : monitors) { if (mi.getLockedStackDepth() == index) { ! sb.append(Resources.format(Messages.MONITOR_LOCKED, mi.toString())); } } } index++; }
*** 427,437 **** new Thread() { public void run() { try { SwingUtilities.invokeAndWait(new Runnable() { public void run() { ! String msg = Resources.getText("No deadlock detected"); messageLabel.setText(msg); threadListTabbedPane.revalidate(); } }); sleep(30 * 1000); --- 422,432 ---- new Thread() { public void run() { try { SwingUtilities.invokeAndWait(new Runnable() { public void run() { ! String msg = Messages.NO_DEADLOCK_DETECTED; messageLabel.setText(msg); threadListTabbedPane.revalidate(); } }); sleep(30 * 1000);
*** 457,473 **** threadListTabbedPane.removeTabAt(1); } if (deadlockedThreads != null) { for (int i = 0; i < deadlockedThreads.length; i++) { ! DefaultListModel listModel = new DefaultListModel(); JTextArea textArea = new JTextArea(); textArea.setBorder(thinEmptyBorder); textArea.setEditable(false); setAccessibleName(textArea, ! getText("ThreadTab.threadInfo.accessibleName")); ! JList list = new ThreadJList(listModel, textArea); JScrollPane threadlistSP = new JScrollPane(list); JScrollPane textAreaSP = new JScrollPane(textArea); threadlistSP.setBorder(null); textAreaSP.setBorder(null); JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, --- 452,468 ---- threadListTabbedPane.removeTabAt(1); } if (deadlockedThreads != null) { for (int i = 0; i < deadlockedThreads.length; i++) { ! DefaultListModel<Long> listModel = new DefaultListModel<Long>(); JTextArea textArea = new JTextArea(); textArea.setBorder(thinEmptyBorder); textArea.setEditable(false); setAccessibleName(textArea, ! Messages.THREAD_TAB_THREAD_INFO_ACCESSIBLE_NAME); ! ThreadJList list = new ThreadJList(listModel, textArea); JScrollPane threadlistSP = new JScrollPane(list); JScrollPane textAreaSP = new JScrollPane(textArea); threadlistSP.setBorder(null); textAreaSP.setBorder(null); JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
*** 475,487 **** splitPane.setOneTouchExpandable(true); splitPane.setBorder(null); splitPane.setDividerLocation(threadsSplitPane.getDividerLocation()); String tabName; if (deadlockedThreads.length > 1) { ! tabName = Resources.getText("deadlockTabN", i+1); } else { ! tabName = Resources.getText("deadlockTab"); } threadListTabbedPane.addTab(tabName, splitPane); for (long t : deadlockedThreads[i]) { listModel.addElement(t); --- 470,482 ---- splitPane.setOneTouchExpandable(true); splitPane.setBorder(null); splitPane.setDividerLocation(threadsSplitPane.getDividerLocation()); String tabName; if (deadlockedThreads.length > 1) { ! tabName = Resources.format(Messages.DEADLOCK_TAB_N, i+1); } else { ! tabName = Messages.DEADLOCK_TAB; } threadListTabbedPane.addTab(tabName, splitPane); for (long t : deadlockedThreads[i]) { listModel.addElement(t);
*** 589,611 **** doUpdate(); } ! private class ThreadJList extends JList { private JTextArea textArea; ! ThreadJList(DefaultListModel listModel, JTextArea textArea) { super(listModel); this.textArea = textArea; setBorder(thinEmptyBorder); addListSelectionListener(ThreadTab.this); setCellRenderer(new DefaultListCellRenderer() { ! public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); if (value != null) { String name = nameCache.get(value); --- 584,606 ---- doUpdate(); } ! private class ThreadJList extends JList<Long> { private JTextArea textArea; ! ThreadJList(DefaultListModel<Long> listModel, JTextArea textArea) { super(listModel); this.textArea = textArea; setBorder(thinEmptyBorder); addListSelectionListener(ThreadTab.this); setCellRenderer(new DefaultListCellRenderer() { ! public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); if (value != null) { String name = nameCache.get(value);
*** 689,702 **** } private static class ThreadOverviewPanel extends OverviewPanel { ThreadOverviewPanel() { ! super(getText("Threads"), threadCountKey, threadCountName, null); } private void updateThreadsInfo(long tlCount, long tpCount, long ttCount, long timeStamp) { getPlotter().addValues(timeStamp, tlCount); ! getInfoLabel().setText(getText(infoLabelFormat, tlCount, tpCount, ttCount)); } } } --- 684,697 ---- } private static class ThreadOverviewPanel extends OverviewPanel { ThreadOverviewPanel() { ! super(Messages.THREADS, threadCountKey, Messages.LIVE_THREADS, null); } private void updateThreadsInfo(long tlCount, long tpCount, long ttCount, long timeStamp) { getPlotter().addValues(timeStamp, tlCount); ! getInfoLabel().setText(Resources.format(infoLabelFormat, tlCount, tpCount, ttCount)); } } }