History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/sun/tools/jconsole/OverviewTab.java (1 of 18352 files). Show all

Unified · Split

java/pkg/sun/tools/jconsole/OverviewTab.java+156−0
@@ -0,0 +1,156 @@
1/*
2 * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package sun.tools.jconsole;
27
28import java.awt.*;
29import java.lang.reflect.InvocationTargetException;
30import java.util.ArrayList;
31
32import javax.swing.*;
33import javax.swing.border.*;
34
35import static sun.tools.jconsole.JConsole.*;
36import static sun.tools.jconsole.Resources.*;
37
38
39@SuppressWarnings("serial")
40class OverviewTab extends Tab {
41 JPanel gridPanel;
42 TimeComboBox timeComboBox;
43
44 public static String getTabName() {
45 return getText("Overview");
46 }
47
48 public OverviewTab(VMPanel vmPanel) {
49 super(vmPanel, getTabName());
50
51 setBorder(new EmptyBorder(4, 4, 3, 4));
52 setLayout(new BorderLayout());
53
54 JPanel topPanel = new JPanel(new BorderLayout());
55 add(topPanel, BorderLayout.NORTH);
56
57 JPanel controlPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 20, 5));
58 topPanel.add(controlPanel, BorderLayout.CENTER);
59
60 timeComboBox = new TimeComboBox();
61 LabeledComponent lc = new LabeledComponent(Resources.getText("Time Range:"),
62 getMnemonicInt("Time Range:"),
63 timeComboBox);
64 controlPanel.add(lc);
65
66 gridPanel = new JPanel(new AutoGridLayout(10, 6));
67 gridPanel.setBorder(null);
68 JScrollPane sp = new JScrollPane(gridPanel);
69 sp.setBorder(null);
70 sp.setViewportBorder(null);
71 add(sp, BorderLayout.CENTER);
72
73 // Note that panels are added on first update
74 }
75
76
77 public SwingWorker<?, ?> newSwingWorker() {
78 return new SwingWorker<Object, Object>() {
79 public Object doInBackground() {
80 return null;
81 }
82
83 protected void done() {
84 if (gridPanel.getComponentCount() == 0) {
85 final ArrayList<Plotter> plotters = new ArrayList<Plotter>();
86 for (Tab tab : vmPanel.getTabs()) {
87 OverviewPanel[] ops = tab.getOverviewPanels();
88 if (ops != null) {
89 for (OverviewPanel op : ops) {
90 gridPanel.add(op);
91 Plotter plotter = op.getPlotter();
92 if (plotter != null) {
93 plotters.add(plotter);
94 timeComboBox.addPlotter(plotter);
95 }
96 }
97 }
98 }
99 if (plotters.size() > 0) {
100 workerAdd(new Runnable() {
101 public void run() {
102 ProxyClient proxyClient = vmPanel.getProxyClient();
103 for (Plotter plotter : plotters) {
104 proxyClient.addWeakPropertyChangeListener(plotter);
105 }
106 }
107 });
108 }
109 if (getParent() instanceof JTabbedPane) {
110 Utilities.updateTransparency((JTabbedPane)getParent());
111 }
112 }
113 }
114 };
115 }
116
117
118
119 private class AutoGridLayout extends GridLayout {
120 public AutoGridLayout(int hGap, int vGap) {
121 super(0, 1, hGap, vGap);
122 }
123
124 public Dimension preferredLayoutSize(Container parent) {
125 return minimumLayoutSize(parent);
126 }
127
128 public Dimension minimumLayoutSize(Container parent) {
129 updateColumns(parent);
130 return super.minimumLayoutSize(parent);
131 }
132
133 private void updateColumns(Container parent) {
134 // Use the outer panel width, not the scrolling gridPanel
135 int parentWidth = OverviewTab.this.getWidth();
136
137 int columnWidth = 1;
138
139 for (Component c : parent.getComponents()) {
140 columnWidth = Math.max(columnWidth, c.getPreferredSize().width);
141 }
142
143 int n = parent.getComponentCount();
144 int maxCols = Math.min(n, parentWidth / columnWidth);
145
146 for (int columns = maxCols; columns >= 1; columns--) {
147 if (columns == 1) {
148 setColumns(maxCols);
149 } else if ((n % columns) == 0) {
150 setColumns(columns);
151 break;
152 }
153 }
154 }
155 }
156}