/* * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package com.sun.tools.visualvm.modules.tracer.impl.options; import com.sun.tools.visualvm.core.options.UISupport; import com.sun.tools.visualvm.core.ui.components.SectionSeparator; import com.sun.tools.visualvm.core.ui.components.Spacer; import com.sun.tools.visualvm.modules.tracer.impl.swing.CustomComboRenderer; import com.sun.tools.visualvm.uisupport.VerticalLayout; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.util.ArrayList; import java.util.List; import javax.swing.AbstractButton; import javax.swing.BorderFactory; import javax.swing.DefaultListModel; import javax.swing.DefaultListSelectionModel; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.ListCellRenderer; import javax.swing.ListSelectionModel; import javax.swing.SwingUtilities; import javax.swing.border.Border; import org.netbeans.lib.profiler.charts.swing.Utils; /** * * @author Jiri Sedlacek */ final class TracerOptionsPanel extends JPanel { private final TracerOptionsPanelController controller; private boolean internalChange; TracerOptionsPanel(TracerOptionsPanelController controller) { this.controller = controller; initComponents(); } boolean dataValid() { return true; } void setProbesApp(int probesApp) { internalChange = true; probesDefaultsCombo.setSelectedIndex(probesApp); internalChange = false; } int getProbesApp() { return probesDefaultsCombo.getSelectedIndex(); } void setRefresh(int refresh) { internalChange = true; refreshCombo.setSelectedItem(refresh); internalChange = false; } int getRefresh() { return (Integer)refreshCombo.getSelectedItem(); } void setRefreshCustomizable(boolean customizable) { refreshCheckBox.setSelected(customizable); } boolean isRefreshCustomizable() { return refreshCheckBox.isSelected(); } void setShowValuesEnabled(boolean showValuesEnabled) { internalChange = true; minMaxValsCombo.setSelectedItem(showValuesEnabled); internalChange = false; } boolean isShowValuesEnabled() { return (Boolean)minMaxValsCombo.getSelectedItem(); } void setShowLegendEnabled(boolean showLegendEnabled) { internalChange = true; rowLegendCombo.setSelectedItem(showLegendEnabled); internalChange = false; } boolean isShowLegendEnabled() { return (Boolean)rowLegendCombo.getSelectedItem(); } void setRowsDecorationEnabled(boolean rowsDecorationEnabled) { internalChange = true; rowsDecorationCombo.setSelectedItem(rowsDecorationEnabled); internalChange = false; } boolean isRowsDecorationEnabled() { return (Boolean)rowsDecorationCombo.getSelectedItem(); } void setRowsSelectionEnabled(boolean rowsSelectionEnabled) { internalChange = true; rowsSelectionCombo.setSelectedIndex(rowsSelectionEnabled ? 0 : 1); internalChange = false; } boolean isRowsSelectionEnabled() { return rowsSelectionCombo.getSelectedIndex() == 0; } void setTimelineToolbar(int visible) { internalChange = true; timelineToolbarCombo.setSelectedIndex(visible); internalChange = false; } int getTimelineToolbar() { return timelineToolbarCombo.getSelectedIndex(); } void setSelectionToolbar(int visible) { internalChange = true; selectionToolbarCombo.setSelectedIndex(visible); internalChange = false; } int getSelectionToolbar() { return selectionToolbarCombo.getSelectedIndex(); } void setExtraToolbar(int visible) { internalChange = true; extraToolbarCombo.setSelectedIndex(visible); internalChange = false; } int getExtraToolbar() { return extraToolbarCombo.getSelectedIndex(); } void setInitiallyOpened(String opened) { internalChange = true; initialProbesCheckBox.setSelected( opened.contains(TracerOptions.VIEW_PROBES)); initialTimelineCheckBox.setSelected( opened.contains(TracerOptions.VIEW_TIMELINE)); initialDetailsCheckBox.setSelected( opened.contains(TracerOptions.VIEW_DETAILS)); internalChange = false; } String getInitiallyOpened() { String result = TracerOptions.VIEWS_UNCHANGED; result = append(result, TracerOptions.VIEW_PROBES, initialProbesCheckBox.isSelected()); result = append(result, TracerOptions.VIEW_TIMELINE, initialTimelineCheckBox.isSelected()); result = append(result, TracerOptions.VIEW_DETAILS, initialDetailsCheckBox.isSelected()); return result; } void setOnProbeAdded(String opened) { internalChange = true; if (TracerOptions.VIEWS_UNCHANGED.equals(opened)) { onProbeAddedProbesCheckBox.setSelected(false); onProbeAddedTimelineCheckBox.setSelected(false); onProbeAddedDetailsCheckBox.setSelected(false); onProbeAddedNothingCheckBox.setSelected(true); } else { onProbeAddedProbesCheckBox.setSelected( opened.contains(TracerOptions.VIEW_PROBES)); onProbeAddedTimelineCheckBox.setSelected( opened.contains(TracerOptions.VIEW_TIMELINE)); onProbeAddedDetailsCheckBox.setSelected( opened.contains(TracerOptions.VIEW_DETAILS)); onProbeAddedNothingCheckBox.setSelected(false); } internalChange = false; } String getOnProbeAdded() { String result = TracerOptions.VIEWS_UNCHANGED; result = append(result, TracerOptions.VIEW_PROBES, onProbeAddedProbesCheckBox.isSelected()); result = append(result, TracerOptions.VIEW_TIMELINE, onProbeAddedTimelineCheckBox.isSelected()); result = append(result, TracerOptions.VIEW_DETAILS, onProbeAddedDetailsCheckBox.isSelected()); return result; } void setOnProbeAdded2(String opened) { internalChange = true; if (TracerOptions.VIEWS_UNCHANGED.equals(opened)) { onProbeAddedProbesCheckBox2.setSelected(false); onProbeAddedTimelineCheckBox2.setSelected(false); onProbeAddedDetailsCheckBox2.setSelected(false); onProbeAddedNothingCheckBox2.setSelected(true); } else { onProbeAddedProbesCheckBox2.setSelected( opened.contains(TracerOptions.VIEW_PROBES)); onProbeAddedTimelineCheckBox2.setSelected( opened.contains(TracerOptions.VIEW_TIMELINE)); onProbeAddedDetailsCheckBox2.setSelected( opened.contains(TracerOptions.VIEW_DETAILS)); onProbeAddedNothingCheckBox2.setSelected(false); } internalChange = false; } String getOnProbeAdded2() { String result = TracerOptions.VIEWS_UNCHANGED; result = append(result, TracerOptions.VIEW_PROBES, onProbeAddedProbesCheckBox2.isSelected()); result = append(result, TracerOptions.VIEW_TIMELINE, onProbeAddedTimelineCheckBox2.isSelected()); result = append(result, TracerOptions.VIEW_DETAILS, onProbeAddedDetailsCheckBox2.isSelected()); return result; } void setOnSessionStart(String opened) { internalChange = true; if (TracerOptions.VIEWS_UNCHANGED.equals(opened)) { onStartProbesCheckBox.setSelected(false); onStartTimelineCheckBox.setSelected(false); onStartDetailsCheckBox.setSelected(false); onStartNothingCheckBox.setSelected(true); } else { onStartProbesCheckBox.setSelected( opened.contains(TracerOptions.VIEW_PROBES)); onStartTimelineCheckBox.setSelected( opened.contains(TracerOptions.VIEW_TIMELINE)); onStartDetailsCheckBox.setSelected( opened.contains(TracerOptions.VIEW_DETAILS)); onStartNothingCheckBox.setSelected(false); } internalChange = false; } String getOnSessionStart() { String result = TracerOptions.VIEWS_UNCHANGED; result = append(result, TracerOptions.VIEW_PROBES, onStartProbesCheckBox.isSelected()); result = append(result, TracerOptions.VIEW_TIMELINE, onStartTimelineCheckBox.isSelected()); result = append(result, TracerOptions.VIEW_DETAILS, onStartDetailsCheckBox.isSelected()); return result; } void setOnRowSelected(String opened) { internalChange = true; if (TracerOptions.VIEWS_UNCHANGED.equals(opened)) { onRowSelectedProbesCheckBox.setSelected(false); onRowSelectedTimelineCheckBox.setSelected(false); onRowSelectedDetailsCheckBox.setSelected(false); onRowSelectedNothingCheckBox.setSelected(true); } else { onRowSelectedProbesCheckBox.setSelected( opened.contains(TracerOptions.VIEW_PROBES)); onRowSelectedTimelineCheckBox.setSelected( opened.contains(TracerOptions.VIEW_TIMELINE)); onRowSelectedDetailsCheckBox.setSelected( opened.contains(TracerOptions.VIEW_DETAILS)); onRowSelectedNothingCheckBox.setSelected(false); } internalChange = false; } String getOnRowSelected() { String result = TracerOptions.VIEWS_UNCHANGED; result = append(result, TracerOptions.VIEW_PROBES, onRowSelectedProbesCheckBox.isSelected()); result = append(result, TracerOptions.VIEW_TIMELINE, onRowSelectedTimelineCheckBox.isSelected()); result = append(result, TracerOptions.VIEW_DETAILS, onRowSelectedDetailsCheckBox.isSelected()); return result; } void setOnRowSelected2(String opened) { internalChange = true; if (TracerOptions.VIEWS_UNCHANGED.equals(opened)) { onRowSelectedProbesCheckBox2.setSelected(false); onRowSelectedTimelineCheckBox2.setSelected(false); onRowSelectedDetailsCheckBox2.setSelected(false); onRowSelectedNothingCheckBox2.setSelected(true); } else { onRowSelectedProbesCheckBox2.setSelected( opened.contains(TracerOptions.VIEW_PROBES)); onRowSelectedTimelineCheckBox2.setSelected( opened.contains(TracerOptions.VIEW_TIMELINE)); onRowSelectedDetailsCheckBox2.setSelected( opened.contains(TracerOptions.VIEW_DETAILS)); onRowSelectedNothingCheckBox2.setSelected(false); } internalChange = false; } String getOnRowSelected2() { String result = TracerOptions.VIEWS_UNCHANGED; result = append(result, TracerOptions.VIEW_PROBES, onRowSelectedProbesCheckBox2.isSelected()); result = append(result, TracerOptions.VIEW_TIMELINE, onRowSelectedTimelineCheckBox2.isSelected()); result = append(result, TracerOptions.VIEW_DETAILS, onRowSelectedDetailsCheckBox2.isSelected()); return result; } void setZoomMode(String zoomMode) { internalChange = true; zoomModeCombo.setSelectedIndex(0); // fallback for invalid zoomMode zoomModeCombo.setSelectedItem(zoomMode); internalChange = false; } String getZoomMode() { return zoomModeCombo.getSelectedItem().toString(); } void setMouseWheelAction(String action) { internalChange = true; mouseWheelCombo.setSelectedIndex(0); // fallback for invalid action mouseWheelCombo.setSelectedItem(action); internalChange = false; } String getMouseWheelAction() { return mouseWheelCombo.getSelectedItem().toString(); } void setClearSelection(boolean clear) { clearSelectionsCheckBox.setSelected(clear); } boolean isClearSelection() { return clearSelectionsCheckBox.isSelected(); } private String append(String result, String item, boolean append) { if (!append) return result; if (result.length() == 0) return result += item; else return result += "," + item; // NOI18N } void update() { if (internalChange) return; // --- refreshInterval ------------------------------------------------- if (refreshCombo.getSelectedIndex() == 0) { refreshCheckBox.setSelected(false); refreshCheckBox.setEnabled(false); } else { refreshCheckBox.setEnabled(true); } // --- rowsDecoration -------------------------------------------------- if (Utils.forceSpeed()) { rowsDecorationCombo.setSelectedItem(Boolean.FALSE); rowsDecorationCombo.setEnabled(false); } // --- initiallyOpened ------------------------------------------------- List selected = getSelected(initiallyOpenedPanel); if (selected.isEmpty()) { // Fallback to defaults SwingUtilities.invokeLater(new Runnable() { public void run() { setInitiallyOpened(TracerOptions.INITIALLY_OPEN_DEFAULT); update(); } }); } else { initialProbesCheckBox.setEnabled(selected.size() > 1 || !selected.contains(initialProbesCheckBox)); initialTimelineCheckBox.setEnabled(selected.size() > 1 || !selected.contains(initialTimelineCheckBox)); initialDetailsCheckBox.setEnabled(selected.size() > 1 || !selected.contains(initialDetailsCheckBox)); } // --- onProbeAdded ---------------------------------------------------- if (onProbeAddedNothingCheckBox.isSelected()) { onProbeAddedProbesCheckBox.setSelected(false); onProbeAddedProbesCheckBox.setEnabled(false); onProbeAddedTimelineCheckBox.setSelected(false); onProbeAddedTimelineCheckBox.setEnabled(false); onProbeAddedDetailsCheckBox.setSelected(false); onProbeAddedDetailsCheckBox.setEnabled(false); } else { selected = getSelected(onProbeAddedPanel); if (selected.isEmpty()) { // Fallback to defaults SwingUtilities.invokeLater(new Runnable() { public void run() { setOnProbeAdded(TracerOptions.PROBE_ADDED_DEFAULT); update(); } }); } else { onProbeAddedProbesCheckBox.setEnabled(selected.size() > 1 || !selected.contains(onProbeAddedProbesCheckBox)); onProbeAddedTimelineCheckBox.setEnabled(selected.size() > 1 || !selected.contains(onProbeAddedTimelineCheckBox)); onProbeAddedDetailsCheckBox.setEnabled(selected.size() > 1 || !selected.contains(onProbeAddedDetailsCheckBox)); } } if (onProbeAddedNothingCheckBox2.isSelected()) { onProbeAddedProbesCheckBox2.setSelected(false); onProbeAddedProbesCheckBox2.setEnabled(false); onProbeAddedTimelineCheckBox2.setSelected(false); onProbeAddedTimelineCheckBox2.setEnabled(false); onProbeAddedDetailsCheckBox2.setSelected(false); onProbeAddedDetailsCheckBox2.setEnabled(false); } else { selected = getSelected(onProbeAddedPanel2); if (selected.isEmpty()) { // Fallback to defaults SwingUtilities.invokeLater(new Runnable() { public void run() { setOnProbeAdded2(TracerOptions.PROBE_ADDED_DEFAULT2); update(); } }); } else { onProbeAddedProbesCheckBox2.setEnabled(selected.size() > 1 || !selected.contains(onProbeAddedProbesCheckBox2)); onProbeAddedTimelineCheckBox2.setEnabled(selected.size() > 1 || !selected.contains(onProbeAddedTimelineCheckBox2)); onProbeAddedDetailsCheckBox2.setEnabled(selected.size() > 1 || !selected.contains(onProbeAddedDetailsCheckBox2)); } } // --- onStart --------------------------------------------------------- if (onStartNothingCheckBox.isSelected()) { onStartProbesCheckBox.setSelected(false); onStartProbesCheckBox.setEnabled(false); onStartTimelineCheckBox.setSelected(false); onStartTimelineCheckBox.setEnabled(false); onStartDetailsCheckBox.setSelected(false); onStartDetailsCheckBox.setEnabled(false); } else { selected = getSelected(onStartOpenedPanel); if (selected.isEmpty()) { // Fallback to defaults SwingUtilities.invokeLater(new Runnable() { public void run() { setOnSessionStart(TracerOptions.SESSION_STARTED_DEFAULT); update(); } }); } else { onStartProbesCheckBox.setEnabled(selected.size() > 1 || !selected.contains(onStartProbesCheckBox)); onStartTimelineCheckBox.setEnabled(selected.size() > 1 || !selected.contains(onStartTimelineCheckBox)); onStartDetailsCheckBox.setEnabled(selected.size() > 1 || !selected.contains(onStartDetailsCheckBox)); } } // --- onRowSelected --------------------------------------------------- if (onRowSelectedNothingCheckBox.isSelected()) { onRowSelectedProbesCheckBox.setSelected(false); onRowSelectedProbesCheckBox.setEnabled(false); onRowSelectedTimelineCheckBox.setSelected(false); onRowSelectedTimelineCheckBox.setEnabled(false); onRowSelectedDetailsCheckBox.setSelected(false); onRowSelectedDetailsCheckBox.setEnabled(false); } else { selected = getSelected(onRowSelectedPanel); if (selected.isEmpty()) { // Fallback to defaults SwingUtilities.invokeLater(new Runnable() { public void run() { setOnRowSelected(TracerOptions.ROW_SELECTED_DEFAULT); update(); } }); } else { onRowSelectedProbesCheckBox.setEnabled(selected.size() > 1 || !selected.contains(onRowSelectedProbesCheckBox)); onRowSelectedTimelineCheckBox.setEnabled(selected.size() > 1 || !selected.contains(onRowSelectedTimelineCheckBox)); onRowSelectedDetailsCheckBox.setEnabled(selected.size() > 1 || !selected.contains(onRowSelectedDetailsCheckBox)); } } if (onRowSelectedNothingCheckBox2.isSelected()) { onRowSelectedProbesCheckBox2.setSelected(false); onRowSelectedProbesCheckBox2.setEnabled(false); onRowSelectedTimelineCheckBox2.setSelected(false); onRowSelectedTimelineCheckBox2.setEnabled(false); onRowSelectedDetailsCheckBox2.setSelected(false); onRowSelectedDetailsCheckBox2.setEnabled(false); } else { selected = getSelected(onRowSelectedPanel2); if (selected.isEmpty()) { // Fallback to defaults SwingUtilities.invokeLater(new Runnable() { public void run() { setOnRowSelected2(TracerOptions.ROW_SELECTED_DEFAULT2); update(); } }); } else { onRowSelectedProbesCheckBox2.setEnabled(selected.size() > 1 || !selected.contains(onRowSelectedProbesCheckBox2)); onRowSelectedTimelineCheckBox2.setEnabled(selected.size() > 1 || !selected.contains(onRowSelectedTimelineCheckBox2)); onRowSelectedDetailsCheckBox2.setEnabled(selected.size() > 1 || !selected.contains(onRowSelectedDetailsCheckBox2)); } } controller.changed(); } private List<AbstractButton> getSelected(JPanel container) { List<AbstractButton> selected = new ArrayList(); for (Component c : container.getComponents()) if (c instanceof AbstractButton && ((AbstractButton)c).isSelected()) selected.add((AbstractButton)c); return selected; } private void initComponents() { setLayout(new GridBagLayout()); GridBagConstraints c; // probesDefaultsSeparator SectionSeparator probesDefaultsSeparator = UISupport.createSectionSeparator("Probes Settings"); // NOI18N c = new GridBagConstraints(); c.gridy = 0; c.gridwidth = GridBagConstraints.REMAINDER; c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.HORIZONTAL; c.insets = new Insets(0, 0, 5, 0); add(probesDefaultsSeparator, c); JLabel probesDefaultsLabel = new JLabel("Initial appearance:"); c.gridx = 0; c.gridy = 1; c.gridwidth = 1; c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.NONE; c.insets = new Insets(3, 15, 3, 5); add(probesDefaultsLabel, c); // probesDefaultsCombo probesDefaultsCombo = new JComboBox(new String[] { "first expanded", "all expanded", "all collapsed" }) { public Dimension getMinimumSize() { return getPreferredSize(); } protected void selectedItemChanged() { TracerOptionsPanel.this.update(); super.selectedItemChanged(); } }; probesDefaultsLabel.setLabelFor(probesDefaultsCombo); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 1; c.gridwidth = 1; c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(3, 5, 3, 0); add(probesDefaultsCombo, c); // timelineDefaultsSeparator SectionSeparator timelineDefaultsSeparator = UISupport.createSectionSeparator("Timeline Settings"); // NOI18N c = new GridBagConstraints(); c.gridy = 2; c.gridwidth = GridBagConstraints.REMAINDER; c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.HORIZONTAL; c.insets = new Insets(15, 0, 5, 0); add(timelineDefaultsSeparator, c); JLabel refreshRateLabel = new JLabel("Sampling frequency:"); c.gridx = 0; c.gridy = 3; c.gridwidth = 1; c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.NONE; c.insets = new Insets(3, 15, 3, 5); add(refreshRateLabel, c); Integer[] refreshRates = new Integer[] { -1, 100, 200, 500, 1000, 2000, 5000, 10000 }; refreshCombo = new JComboBox(refreshRates) { public Dimension getMinimumSize() { return getPreferredSize(); } protected void selectedItemChanged() { TracerOptionsPanel.this.update(); super.selectedItemChanged(); } }; refreshRateLabel.setLabelFor(refreshCombo); refreshCombo.setRenderer(new CustomComboRenderer.Number(refreshCombo, "ms", true)); refreshCombo.setEditable(false); c.gridx = 1; c.gridy = 3; c.gridwidth = 1; c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.HORIZONTAL; c.insets = new Insets(3, 5, 3, 0); add(refreshCombo, c); refreshCheckBox = new JCheckBox("Customizable in Tracer tab") { public Dimension getPreferredSize() { Dimension d = super.getPreferredSize(); d.height = Math.min(d.height, refreshCombo.getPreferredSize().height); return d; } public Dimension getMinimumSize() { return getPreferredSize(); } }; c.gridx = 2; c.gridy = 3; c.gridwidth = 1; c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.NONE; c.insets = new Insets(3, 5, 3, 0); add(refreshCheckBox, c); // zoomModeLabel JLabel zoomModeLabel = new JLabel("Zoom mode:"); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 4; c.gridwidth = 1; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(3, 15, 3, 5); add(zoomModeLabel, c); // zoomModeCombo zoomModeCombo = new JComboBox(new String[] { TracerOptions.FIXED_SCALE, TracerOptions.SCALE_TO_FIT }) { public Dimension getMinimumSize() { return getPreferredSize(); } protected void selectedItemChanged() { TracerOptionsPanel.this.update(); super.selectedItemChanged(); } }; zoomModeLabel.setLabelFor(zoomModeCombo); zoomModeCombo.setRenderer(new CustomComboRenderer.String(zoomModeCombo)); zoomModeCombo.setEditable(false); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 4; c.gridwidth = 1; c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(3, 5, 3, 0); add(zoomModeCombo, c); // customizableZoomModeLabel JLabel customizableZoomModeLabel = new JLabel("Customizable in Tracer tab"); customizableZoomModeLabel.setEnabled(false); c.gridx = 2; c.gridy = 4; c.gridwidth = 1; c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.NONE; c.insets = new Insets(3, 9, 3, 0); add(customizableZoomModeLabel, c); // mouseWheelLabel JLabel mouseWheelLabel = new JLabel("Mouse wheel action:"); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 5; c.gridwidth = 1; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(3, 15, 3, 5); add(mouseWheelLabel, c); // mouseWheelCombo mouseWheelCombo = new JComboBox(new String[] { TracerOptions.MOUSE_WHEEL_ZOOMS, TracerOptions.MOUSE_WHEEL_HSCROLLS, TracerOptions.MOUSE_WHEEL_VSCROLLS }) { public Dimension getMinimumSize() { return getPreferredSize(); } protected void selectedItemChanged() { TracerOptionsPanel.this.update(); super.selectedItemChanged(); } }; mouseWheelLabel.setLabelFor(mouseWheelCombo); mouseWheelCombo.setRenderer(new CustomComboRenderer.String(mouseWheelCombo)); mouseWheelCombo.setEditable(false); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 5; c.gridwidth = 1; c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(3, 5, 3, 0); add(mouseWheelCombo, c); // customizableMouseWheelLabel JLabel customizableMouseWheelLabel = new JLabel("Customizable in Tracer tab"); customizableMouseWheelLabel.setEnabled(false); c.gridx = 2; c.gridy = 5; c.gridwidth = 1; c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.NONE; c.insets = new Insets(3, 9, 3, 0); add(customizableMouseWheelLabel, c); // timelineAppearanceSeparator SectionSeparator timelineAppearanceSeparator = UISupport.createSectionSeparator("Timeline Appearance"); // NOI18N c = new GridBagConstraints(); c.gridy = 6; c.gridwidth = GridBagConstraints.REMAINDER; c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.HORIZONTAL; c.insets = new Insets(15, 0, 5, 0); add(timelineAppearanceSeparator, c); // minMaxValsLabel JLabel minMaxValsLabel = new JLabel("Show min/max values:"); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 7; c.gridwidth = 1; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(3, 15, 3, 5); add(minMaxValsLabel, c); // minMaxValsCombo minMaxValsCombo = new JComboBox(new Boolean[] { Boolean.TRUE, Boolean.FALSE }) { public Dimension getMinimumSize() { return getPreferredSize(); } // protected void selectedItemChanged() { // TracerOptionsPanel.this.update(); // super.selectedItemChanged(); // } }; minMaxValsLabel.setLabelFor(minMaxValsCombo); minMaxValsCombo.setRenderer(new CustomComboRenderer.Boolean(minMaxValsCombo)); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 7; c.gridwidth = 1; c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(3, 5, 3, 0); add(minMaxValsCombo, c); // customizableMinMaxValsLabel JLabel customizableMinMaxValsLabel = new JLabel("Customizable in Tracer tab"); customizableMinMaxValsLabel.setEnabled(false); c.gridx = 2; c.gridy = 7; c.gridwidth = 1; c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.NONE; c.insets = new Insets(3, 9, 3, 0); add(customizableMinMaxValsLabel, c); // rowLegendLabel JLabel rowLegendLabel = new JLabel("Show row legend:"); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 8; c.gridwidth = 1; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(3, 15, 3, 5); add(rowLegendLabel, c); // rowLegendCombo rowLegendCombo = new JComboBox(new Boolean[] { Boolean.TRUE, Boolean.FALSE }) { public Dimension getMinimumSize() { return getPreferredSize(); } // protected void selectedItemChanged() { // TracerOptionsPanel.this.update(); // super.selectedItemChanged(); // } }; rowLegendLabel.setLabelFor(rowLegendCombo); rowLegendCombo.setRenderer(new CustomComboRenderer.Boolean(rowLegendCombo)); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 8; c.gridwidth = 1; c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(3, 5, 3, 0); add(rowLegendCombo, c); // customizableRowLegendLabel JLabel customizableRowLegendLabel = new JLabel("Customizable in Tracer tab"); customizableRowLegendLabel.setEnabled(false); c.gridx = 2; c.gridy = 8; c.gridwidth = 1; c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.NONE; c.insets = new Insets(3, 9, 3, 0); add(customizableRowLegendLabel, c); // rowsDecorationLabel JLabel rowsDecorationLabel = new JLabel("Rows decoration:"); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 9; c.gridwidth = 1; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(3, 15, 3, 5); add(rowsDecorationLabel, c); // rowsDecorationCombo rowsDecorationCombo = new JComboBox(new Boolean[] { Boolean.TRUE, Boolean.FALSE }) { public Dimension getMinimumSize() { return getPreferredSize(); } // protected void selectedItemChanged() { // TracerOptionsPanel.this.update(); // super.selectedItemChanged(); // } }; rowsDecorationLabel.setLabelFor(rowsDecorationCombo); rowsDecorationCombo.setRenderer(new CustomComboRenderer.Boolean(rowsDecorationCombo)); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 9; c.gridwidth = 1; c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(3, 5, 3, 0); add(rowsDecorationCombo, c); // rowsSelectionLabel JLabel rowsSelectionLabel = new JLabel("Rows selection:"); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 10; c.gridwidth = 1; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(3, 15, 3, 5); add(rowsSelectionLabel, c); // rowsSelectionCombo rowsSelectionCombo = new JComboBox(new String[] { "panel and chart", "panel only" }) { public Dimension getMinimumSize() { return getPreferredSize(); } // protected void selectedItemChanged() { // TracerOptionsPanel.this.update(); // super.selectedItemChanged(); // } }; rowsSelectionLabel.setLabelFor(rowsSelectionCombo); // rowsSelectionCombo.setRenderer(new CustomComboRenderer.Boolean(rowsSelectionCombo)); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 10; c.gridwidth = 1; c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(3, 5, 3, 0); add(rowsSelectionCombo, c); // toolbarsBehaviorSeparator SectionSeparator toolbarsBehaviorSeparator = UISupport.createSectionSeparator("Toolbars Behavior"); // NOI18N c = new GridBagConstraints(); c.gridy = 11; c.gridwidth = GridBagConstraints.REMAINDER; c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.HORIZONTAL; c.insets = new Insets(15, 0, 5, 0); add(toolbarsBehaviorSeparator, c); // minMaxValsLabel JLabel timelineToolbarLabel = new JLabel("Timeline toolbar:"); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 12; c.gridwidth = 1; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(3, 15, 3, 5); add(timelineToolbarLabel, c); // timelineToolbarCombo timelineToolbarCombo = new JComboBox(new String[] { "always visible", "show with timeline" }) { public Dimension getMinimumSize() { return getPreferredSize(); } protected void selectedItemChanged() { TracerOptionsPanel.this.update(); super.selectedItemChanged(); } }; timelineToolbarLabel.setLabelFor(timelineToolbarCombo); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 12; c.gridwidth = 1; c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(3, 5, 3, 0); add(timelineToolbarCombo, c); // selectionToolbarLabel JLabel selectionToolbarLabel = new JLabel("Selection toolbar:"); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 13; c.gridwidth = 1; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(3, 15, 3, 5); add(selectionToolbarLabel, c); // rowLegendCombo selectionToolbarCombo = new JComboBox(new String[] { "always visible", "show on selection", "always hidden"}) { public Dimension getMinimumSize() { return getPreferredSize(); } protected void selectedItemChanged() { TracerOptionsPanel.this.update(); super.selectedItemChanged(); } }; selectionToolbarLabel.setLabelFor(selectionToolbarCombo); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 13; c.gridwidth = 1; c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(3, 5, 3, 0); add(selectionToolbarCombo, c); // extraToolbarLabel JLabel extraToolbarLabel = new JLabel("Export toolbar:"); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 14; c.gridwidth = 1; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(3, 15, 3, 5); add(extraToolbarLabel, c); // extraToolbarCombo extraToolbarCombo = new JComboBox(new String[] { "always visible", "show on data", "always hidden"}) { public Dimension getMinimumSize() { return getPreferredSize(); } protected void selectedItemChanged() { TracerOptionsPanel.this.update(); super.selectedItemChanged(); } }; extraToolbarLabel.setLabelFor(extraToolbarCombo); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 14; c.gridwidth = 1; c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(3, 5, 3, 0); add(extraToolbarCombo, c); // viewsBehaviorSeparator SectionSeparator viewsBehaviorSeparator = UISupport.createSectionSeparator("Views Behavior"); // NOI18N c = new GridBagConstraints(); c.gridy = 15; c.gridwidth = GridBagConstraints.REMAINDER; c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.HORIZONTAL; c.insets = new Insets(15, 0, 5, 0); add(viewsBehaviorSeparator, c); // viewsBehaviorPanel // JPanel viewsBehaviorPanel = new JPanel(new GridLayout(1, 3)); JPanel viewsBehaviorPanel = new JPanel(new BorderLayout(0, 0)); viewsBehaviorPanel.setOpaque(false); c = new GridBagConstraints(); c.gridy = 16; c.gridwidth = GridBagConstraints.REMAINDER; c.anchor = GridBagConstraints.NORTHWEST; c.fill = GridBagConstraints.HORIZONTAL; // c.insets = new Insets(3, 15, 0, 0); c.insets = new Insets(8, 15, 0, 0); add(viewsBehaviorPanel, c); final CardLayout viewsSettingsLayout = new CardLayout(); final JPanel viewsSettingsContainer = new JPanel(viewsSettingsLayout); final String INITIALLY_OPEN = "Initial appearance"; final String OPEN_PROBE_ADDED = "Probe added or removed"; final String OPEN_SESSION_STARTS = "Session started"; final String OPEN_ROW_SELECTED = "Row selected or unselected"; final DefaultListModel connectionTypeListModel = new DefaultListModel(); connectionTypeListModel.addElement(INITIALLY_OPEN); connectionTypeListModel.addElement(OPEN_PROBE_ADDED); connectionTypeListModel.addElement(OPEN_SESSION_STARTS); connectionTypeListModel.addElement(OPEN_ROW_SELECTED); JList connectionTypeList = new JList(connectionTypeListModel); connectionTypeList.setVisibleRowCount(connectionTypeListModel.getSize()); connectionTypeList.setSelectionModel(new DefaultListSelectionModel() { public void setSelectionInterval(int index0, int index1) { super.setSelectionInterval(index0, index1); viewsSettingsLayout.show(viewsSettingsContainer, connectionTypeListModel.get(getMinSelectionIndex()).toString()); } public void removeSelectionInterval(int i1, int i2) {} }); connectionTypeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); connectionTypeList.setSelectedIndex(0); final ListCellRenderer defaultRenderer = connectionTypeList.getCellRenderer(); Component rc = defaultRenderer.getListCellRendererComponent(connectionTypeList, "X", 0, false, false); // NOI18N connectionTypeList.setFixedCellHeight(rc.getPreferredSize().height + 2); connectionTypeList.setCellRenderer(new ListCellRenderer() { public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { return defaultRenderer.getListCellRendererComponent(list, " " + value + " ", index, isSelected, cellHasFocus); // NOI18N } }); JScrollPane connectionTypeScroll = new JScrollPane(connectionTypeList, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED) { public Dimension getMinimumSize() { return getPreferredSize(); } }; createBorder(connectionTypeScroll, BorderFactory.createEmptyBorder(0, 0, 0, 10)); viewsBehaviorPanel.add(connectionTypeScroll, BorderLayout.WEST); viewsBehaviorPanel.add(viewsSettingsContainer, BorderLayout.CENTER); // // initiallyOpenedPanel initiallyOpenedPanel = new JPanel(new VerticalLayout(false)); initiallyOpenedPanel.setBorder(titledBorder("Select the views to open:")); initiallyOpenedPanel.setOpaque(false); // initialProbesCheckBox initialProbesCheckBox = new JCheckBox("Probes") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; initiallyOpenedPanel.add(initialProbesCheckBox); // initialTimelineCheckBox initialTimelineCheckBox = new JCheckBox("Timeline") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; initiallyOpenedPanel.add(initialTimelineCheckBox); // // initialSettingsCheckBox // JCheckBox initialSettingsCheckBox = new JCheckBox("Settings"); // initiallyOpenedPanel.add(initialSettingsCheckBox); // initialSettingsCheckBox.setEnabled(false); // initialDetailsCheckBox initialDetailsCheckBox = new JCheckBox("Details") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; initiallyOpenedPanel.add(initialDetailsCheckBox); // viewsBehaviorPanel.add(initiallyOpenedPanel); viewsSettingsContainer.add(initiallyOpenedPanel, INITIALLY_OPEN); // onProbeAddedPanel onProbeAddedPanel = new JPanel(new VerticalLayout(false)); onProbeAddedPanel.setBorder(titledBorder("Open for selected probes:")); onProbeAddedPanel.setOpaque(false); // initialProbesCheckBox onProbeAddedProbesCheckBox = new JCheckBox("Probes") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; onProbeAddedPanel.add(onProbeAddedProbesCheckBox); // initialTimelineCheckBox onProbeAddedTimelineCheckBox = new JCheckBox("Timeline") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; onProbeAddedPanel.add(onProbeAddedTimelineCheckBox); // // initialSettingsCheckBox // JCheckBox onProbeAddedSettingsCheckBox = new JCheckBox("Settings"); // onProbeAddedPanel.add(onProbeAddedSettingsCheckBox); // onProbeAddedSettingsCheckBox.setEnabled(false); // initialDetailsCheckBox onProbeAddedDetailsCheckBox = new JCheckBox("Details") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; onProbeAddedPanel.add(onProbeAddedDetailsCheckBox); // onStartNothingCheckBox onProbeAddedNothingCheckBox = new JCheckBox("No change") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; onProbeAddedPanel.add(onProbeAddedNothingCheckBox); // viewsBehaviorPanel.add(onProbeAddedPanel); // onProbeAddedPanel2 onProbeAddedPanel2 = new JPanel(new VerticalLayout(false)); onProbeAddedPanel2.setBorder(titledBorder("Open for no selection:")); onProbeAddedPanel2.setOpaque(false); // initialProbesCheckBox2 onProbeAddedProbesCheckBox2 = new JCheckBox("Probes") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; onProbeAddedPanel2.add(onProbeAddedProbesCheckBox2); // initialTimelineCheckBox2 onProbeAddedTimelineCheckBox2 = new JCheckBox("Timeline") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; onProbeAddedPanel2.add(onProbeAddedTimelineCheckBox2); // // onProbeAddedSettingsCheckBox2 // JCheckBox onProbeAddedSettingsCheckBox2 = new JCheckBox("Settings"); // onProbeAddedPanel2.add(onProbeAddedSettingsCheckBox2); // onProbeAddedSettingsCheckBox2.setEnabled(false); // onProbeAddedDetailsCheckBox2 onProbeAddedDetailsCheckBox2 = new JCheckBox("Details") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; onProbeAddedPanel2.add(onProbeAddedDetailsCheckBox2); // onProbeAddedNothingCheckBox2 onProbeAddedNothingCheckBox2 = new JCheckBox("No change") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; onProbeAddedPanel2.add(onProbeAddedNothingCheckBox2); // viewsBehaviorPanel.add(onProbeAddedPanel2); JPanel onProbeAddedContainer = new JPanel(new GridLayout(1, 2)); onProbeAddedContainer.add(onProbeAddedPanel); onProbeAddedContainer.add(onProbeAddedPanel2); viewsSettingsContainer.add(onProbeAddedContainer, OPEN_PROBE_ADDED); // onStartOpenedPanel onStartOpenedPanel = new JPanel(new VerticalLayout(false)); onStartOpenedPanel.setBorder(titledBorder("Select the views to open:")); onStartOpenedPanel.setOpaque(false); // initialProbesCheckBox onStartProbesCheckBox = new JCheckBox("Probes") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; onStartOpenedPanel.add(onStartProbesCheckBox); // initialTimelineCheckBox onStartTimelineCheckBox = new JCheckBox("Timeline") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; onStartOpenedPanel.add(onStartTimelineCheckBox); // // initialSettingsCheckBox // JCheckBox onStartSettingsCheckBox = new JCheckBox("Settings"); // onStartOpenedPanel.add(onStartSettingsCheckBox); // onStartSettingsCheckBox.setEnabled(false); // initialDetailsCheckBox onStartDetailsCheckBox = new JCheckBox("Details") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; onStartOpenedPanel.add(onStartDetailsCheckBox); // onStartNothingCheckBox onStartNothingCheckBox = new JCheckBox("No change") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; onStartOpenedPanel.add(onStartNothingCheckBox); // viewsBehaviorPanel.add(onStartOpenedPanel); viewsSettingsContainer.add(onStartOpenedPanel, OPEN_SESSION_STARTS); // onRowSelectedPanel onRowSelectedPanel = new JPanel(new VerticalLayout(false)); onRowSelectedPanel.setBorder(titledBorder("Open for selected rows:")); onRowSelectedPanel.setOpaque(false); // initialProbesCheckBox onRowSelectedProbesCheckBox = new JCheckBox("Probes") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; onRowSelectedPanel.add(onRowSelectedProbesCheckBox); // initialTimelineCheckBox onRowSelectedTimelineCheckBox = new JCheckBox("Timeline") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; onRowSelectedPanel.add(onRowSelectedTimelineCheckBox); // // initialSettingsCheckBox // JCheckBox onProbeAddedSettingsCheckBox = new JCheckBox("Settings"); // onProbeAddedPanel.add(onProbeAddedSettingsCheckBox); // onProbeAddedSettingsCheckBox.setEnabled(false); // initialDetailsCheckBox onRowSelectedDetailsCheckBox = new JCheckBox("Details") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; onRowSelectedPanel.add(onRowSelectedDetailsCheckBox); // onStartNothingCheckBox onRowSelectedNothingCheckBox = new JCheckBox("No change") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; onRowSelectedPanel.add(onRowSelectedNothingCheckBox); // viewsBehaviorPanel.add(onProbeAddedPanel); // onRowSelectedPanel2 onRowSelectedPanel2 = new JPanel(new VerticalLayout(false)); onRowSelectedPanel2.setBorder(titledBorder("Open for no selection:")); onRowSelectedPanel2.setOpaque(false); // initialProbesCheckBox2 onRowSelectedProbesCheckBox2 = new JCheckBox("Probes") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; onRowSelectedPanel2.add(onRowSelectedProbesCheckBox2); // initialTimelineCheckBox2 onRowSelectedTimelineCheckBox2 = new JCheckBox("Timeline") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; onRowSelectedPanel2.add(onRowSelectedTimelineCheckBox2); // // onProbeAddedSettingsCheckBox2 // JCheckBox onProbeAddedSettingsCheckBox2 = new JCheckBox("Settings"); // onProbeAddedPanel2.add(onProbeAddedSettingsCheckBox2); // onProbeAddedSettingsCheckBox2.setEnabled(false); // onProbeAddedDetailsCheckBox2 onRowSelectedDetailsCheckBox2 = new JCheckBox("Details") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; onRowSelectedPanel2.add(onRowSelectedDetailsCheckBox2); // onProbeAddedNothingCheckBox2 onRowSelectedNothingCheckBox2 = new JCheckBox("No change") { protected void fireActionPerformed(ActionEvent e) { TracerOptionsPanel.this.update(); } }; onRowSelectedPanel2.add(onRowSelectedNothingCheckBox2); // viewsBehaviorPanel.add(onProbeAddedPanel2); JPanel onRowSelectedContainer = new JPanel(new GridLayout(1, 2)); onRowSelectedContainer.add(onRowSelectedPanel); onRowSelectedContainer.add(onRowSelectedPanel2); viewsSettingsContainer.add(onRowSelectedContainer, OPEN_ROW_SELECTED); // clearSelectionsCheckBox clearSelectionsCheckBox = new JCheckBox("Clear selected rows when closing Details view") { public Dimension getMinimumSize() { return getPreferredSize(); } }; c = new GridBagConstraints(); c.gridx = 0; c.gridy = 17; c.anchor = GridBagConstraints.WEST; c.fill = GridBagConstraints.NONE; c.gridwidth = GridBagConstraints.REMAINDER; c.insets = new Insets(8, 15, 0, 0); add(clearSelectionsCheckBox, c); // bottomFiller c = new GridBagConstraints(); c.gridx = 0; c.gridy = 100; c.weightx = 1; c.weighty = 1; c.anchor = GridBagConstraints.NORTHWEST; c.fill = GridBagConstraints.BOTH; c.gridwidth = GridBagConstraints.REMAINDER; add(Spacer.create(), c); } private JComboBox probesDefaultsCombo; private JComboBox refreshCombo; private JCheckBox refreshCheckBox; private JComboBox minMaxValsCombo; private JComboBox rowLegendCombo; private JComboBox rowsDecorationCombo; private JComboBox rowsSelectionCombo; private JComboBox timelineToolbarCombo; private JComboBox selectionToolbarCombo; private JComboBox extraToolbarCombo; private JPanel initiallyOpenedPanel; private JCheckBox initialProbesCheckBox; private JCheckBox initialTimelineCheckBox; private JCheckBox initialDetailsCheckBox; private JPanel onProbeAddedPanel; private JCheckBox onProbeAddedProbesCheckBox; private JCheckBox onProbeAddedTimelineCheckBox; private JCheckBox onProbeAddedDetailsCheckBox; private JCheckBox onProbeAddedNothingCheckBox; private JPanel onProbeAddedPanel2; private JCheckBox onProbeAddedProbesCheckBox2; private JCheckBox onProbeAddedTimelineCheckBox2; private JCheckBox onProbeAddedDetailsCheckBox2; private JCheckBox onProbeAddedNothingCheckBox2; private JPanel onStartOpenedPanel; private JCheckBox onStartProbesCheckBox; private JCheckBox onStartTimelineCheckBox; private JCheckBox onStartDetailsCheckBox; private JCheckBox onStartNothingCheckBox; private JPanel onRowSelectedPanel; private JCheckBox onRowSelectedProbesCheckBox; private JCheckBox onRowSelectedTimelineCheckBox; private JCheckBox onRowSelectedDetailsCheckBox; private JCheckBox onRowSelectedNothingCheckBox; private JPanel onRowSelectedPanel2; private JCheckBox onRowSelectedProbesCheckBox2; private JCheckBox onRowSelectedTimelineCheckBox2; private JCheckBox onRowSelectedDetailsCheckBox2; private JCheckBox onRowSelectedNothingCheckBox2; private JCheckBox clearSelectionsCheckBox; private JComboBox zoomModeCombo; private JComboBox mouseWheelCombo; private static Border titledBorder(String title) { String titleBorder = com.sun.tools.visualvm.uisupport.UISupport. isWindowsLookAndFeel() ? " " : ""; //NOI18N Border inner = BorderFactory.createEmptyBorder(0, 12, 3, 3); Border outer = BorderFactory.createTitledBorder(titleBorder + title); return BorderFactory.createCompoundBorder(outer, inner); } private static void createBorder(JComponent component, Border border) { Border cBorder = component.getBorder(); if (cBorder == null) component.setBorder(border); else component.setBorder(BorderFactory.createCompoundBorder(border, cBorder)); } }