/* * 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.GlobalPreferences; import java.util.prefs.Preferences; import org.netbeans.lib.profiler.charts.swing.Utils; import org.openide.util.NbPreferences; /** * * @author Jiri Sedlacek */ public final class TracerOptions { private static final String PROP_PROBES_APP = "TracerOptions.probesApp"; // NOI18N public static final int KEY_PROBES_FIRSTEXP = 0; public static final int KEY_PROBES_ALLEXP = 1; public static final int KEY_PROBES_ALLCOLL = 2; private static final int PROBES_APP_DEFAULT = KEY_PROBES_FIRSTEXP; private static final String PROP_REFRESH_RATE = "TracerOptions.refreshRate"; // NOI18N private static final String PROP_REFRESH_CUSTOMIZABLE = "TracerOptions.refreshCustomizable"; // NOI18N private static final String PROP_SHOW_VALUES = "TracerOptions.showValues"; // NOI18N private static final String PROP_SHOW_LEGEND = "TracerOptions.showLegend"; // NOI18N private static final String PROP_ROWS_DECORATION = "TracerOptions.rowsDecoration"; // NOI18N private static final String PROP_ROWS_SELECTION = "TracerOptions.rowsSelection"; // NOI18N private static final String PROP_INITIALLY_OPEN = "TracerOptions.initiallyOpen"; // NOI18N private static final String PROP_PROBE_ADDED = "TracerOptions.probeAdded"; // NOI18N private static final String PROP_PROBE_ADDED2 = "TracerOptions.probeAdded2"; // NOI18N private static final String PROP_SESSION_STARTED = "TracerOptions.sessionStarted"; // NOI18N private static final String PROP_ROW_SELECTED = "TracerOptions.rowSelected"; // NOI18N private static final String PROP_ROW_SELECTED2 = "TracerOptions.rowSelected2"; // NOI18N public static final String VIEWS_UNCHANGED = ""; // NOI18N public static final String VIEW_PROBES = "KEY_probes"; // NOI18N public static final String VIEW_TIMELINE = "KEY_timeline"; // NOI18N public static final String VIEW_SETTINGS = "KEY_settings"; // NOI18N public static final String VIEW_DETAILS = "KEY_details"; // NOI18N static final String INITIALLY_OPEN_DEFAULT = VIEW_PROBES; static final String PROBE_ADDED_DEFAULT = INITIALLY_OPEN_DEFAULT + "," + VIEW_TIMELINE; // NOI18N static final String PROBE_ADDED_DEFAULT2 = INITIALLY_OPEN_DEFAULT; static final String SESSION_STARTED_DEFAULT = VIEW_TIMELINE; static final String ROW_SELECTED_DEFAULT = SESSION_STARTED_DEFAULT + "," + VIEW_DETAILS; // NOI18N static final String ROW_SELECTED_DEFAULT2 = SESSION_STARTED_DEFAULT; private static final String PROP_CLEAR_SELECTION = "TracerOptions.clearSelection"; // NOI18N private static final String PROP_ZOOM_MODE = "TracerOptions.zoomMode"; // NOI18N private static final String KEY_FIXED_SCALE = "KEY_fixedScale"; // NOI18N private static final String KEY_SCALE_TO_FIT = "KEY_scaleToFit"; // NOI18N public static final String FIXED_SCALE = "fixed scale"; public static final String SCALE_TO_FIT = "scale to fit"; private static final String PROP_MOUSE_WHEEL_ACTION = "TracerOptions.mouseWheelAction"; // NOI18N private static final String KEY_MOUSE_WHEEL_ZOOMS = "KEY_mouseWheelZooms"; // NOI18N private static final String KEY_MOUSE_WHEEL_HSCROLLS = "KEY_mouseWheelHScrolls"; // NOI18N private static final String KEY_MOUSE_WHEEL_VSCROLLS = "KEY_mouseWheelVScrolls"; // NOI18N public static final String MOUSE_WHEEL_ZOOMS = "zoom"; public static final String MOUSE_WHEEL_HSCROLLS = "horizontal scroll"; public static final String MOUSE_WHEEL_VSCROLLS = "vertical scroll"; private static final String PROP_TIMELINE_TOOLBAR = "TracerOptions.timelineToolbar"; // NOI18N private static final String PROP_SELECTION_TOOLBAR = "TracerOptions.selectionToolbar"; // NOI18N private static final String PROP_EXTRA_TOOLBAR = "TracerOptions.extraToolbar"; // NOI18N public static final int SHOW_ALWAYS = 0; public static final int SHOW_AS_NEEDED = 1; public static final int SHOW_NEVER = 2; private static final int TIMELINE_TOOLBAR_DEFAULT = SHOW_AS_NEEDED; private static final int SELECTION_TOOLBAR_DEFAULT = SHOW_AS_NEEDED; private static final int EXTRA_TOOLBAR_DEFAULT = SHOW_AS_NEEDED; private static TracerOptions INSTANCE; private final Preferences prefs; public static synchronized TracerOptions getInstance() { if (INSTANCE == null) INSTANCE = new TracerOptions(); return INSTANCE; } void setProbesApp(int probesApp) { prefs.putInt(PROP_PROBES_APP, probesApp); } public int getProbesApp() { return prefs.getInt(PROP_PROBES_APP, PROBES_APP_DEFAULT); } void setRefresh(int refreshRate) { prefs.putInt(PROP_REFRESH_RATE, refreshRate); } int getRefresh() { return prefs.getInt(PROP_REFRESH_RATE, -1); } public int getRefreshRate() { int refresh = getRefresh(); return refresh != -1 ? refresh : GlobalPreferences.sharedInstance().getMonitoredDataPoll() * 1000; } void setRefreshCustomizable(boolean customizable) { prefs.putBoolean(PROP_REFRESH_CUSTOMIZABLE, customizable); } public boolean isRefreshCustomizable() { return prefs.getBoolean(PROP_REFRESH_CUSTOMIZABLE, false); } void setShowValuesEnabled(boolean showValuesEnabled) { prefs.putBoolean(PROP_SHOW_VALUES, showValuesEnabled); } public boolean isShowValuesEnabled() { return prefs.getBoolean(PROP_SHOW_VALUES, true); } void setShowLegendEnabled(boolean showLegendEnabled) { prefs.putBoolean(PROP_SHOW_LEGEND, showLegendEnabled); } public boolean isShowLegendEnabled() { return prefs.getBoolean(PROP_SHOW_LEGEND, true); // Default 'false' might be better } void setRowsDecorationEnabled(boolean rowsDecorationEnabled) { if (Utils.forceSpeed()) return; prefs.putBoolean(PROP_ROWS_DECORATION, rowsDecorationEnabled); } public boolean isRowsDecorationEnabled() { if (Utils.forceSpeed()) return false; return prefs.getBoolean(PROP_ROWS_DECORATION, !Utils.forceSpeed()); } void setRowsSelectionEnabled(boolean rowsSelectionEnabled) { prefs.putBoolean(PROP_ROWS_SELECTION, rowsSelectionEnabled); } public boolean isRowsSelectionEnabled() { return prefs.getBoolean(PROP_ROWS_SELECTION, !Utils.forceSpeed()); } void setInitiallyOpened(String opened) { prefs.put(PROP_INITIALLY_OPEN, opened); } public String getInitiallyOpened() { return prefs.get(PROP_INITIALLY_OPEN, INITIALLY_OPEN_DEFAULT); } void setOnProbeAdded(String opened) { prefs.put(PROP_PROBE_ADDED, opened); } public String getOnProbeAdded() { return prefs.get(PROP_PROBE_ADDED, PROBE_ADDED_DEFAULT); } void setOnProbeAdded2(String opened) { prefs.put(PROP_PROBE_ADDED2, opened); } public String getOnProbeAdded2() { return prefs.get(PROP_PROBE_ADDED2, PROBE_ADDED_DEFAULT2); } void setOnSessionStart(String opened) { prefs.put(PROP_SESSION_STARTED, opened); } public String getOnSessionStart() { return prefs.get(PROP_SESSION_STARTED, SESSION_STARTED_DEFAULT); } void setOnRowSelected(String opened) { prefs.put(PROP_ROW_SELECTED, opened); } public String getOnRowSelected() { return prefs.get(PROP_ROW_SELECTED, ROW_SELECTED_DEFAULT); } void setOnRowSelected2(String opened) { prefs.put(PROP_ROW_SELECTED2, opened); } public String getOnRowSelected2() { return prefs.get(PROP_ROW_SELECTED2, ROW_SELECTED_DEFAULT2); } void setZoomMode(String zoomMode) { if (SCALE_TO_FIT.equals(zoomMode)) prefs.put(PROP_ZOOM_MODE, KEY_SCALE_TO_FIT); else prefs.put(PROP_ZOOM_MODE, KEY_FIXED_SCALE); } public String getZoomMode() { String zoomMode = prefs.get(PROP_ZOOM_MODE, KEY_FIXED_SCALE); if (KEY_SCALE_TO_FIT.equals(zoomMode)) return SCALE_TO_FIT; return FIXED_SCALE; } void setMouseWheelAction(String mouseWheelAction) { if (MOUSE_WHEEL_HSCROLLS.equals(mouseWheelAction)) prefs.put(PROP_MOUSE_WHEEL_ACTION, KEY_MOUSE_WHEEL_HSCROLLS); else if (MOUSE_WHEEL_VSCROLLS.equals(mouseWheelAction)) prefs.put(PROP_MOUSE_WHEEL_ACTION, KEY_MOUSE_WHEEL_VSCROLLS); else prefs.put(PROP_MOUSE_WHEEL_ACTION, KEY_MOUSE_WHEEL_ZOOMS); } public String getMouseWheelAction() { String mouseWheelAction = prefs.get(PROP_MOUSE_WHEEL_ACTION, KEY_MOUSE_WHEEL_ZOOMS); if (KEY_MOUSE_WHEEL_HSCROLLS.equals(mouseWheelAction)) return MOUSE_WHEEL_HSCROLLS; else if (KEY_MOUSE_WHEEL_VSCROLLS.equals(mouseWheelAction)) return MOUSE_WHEEL_VSCROLLS; return MOUSE_WHEEL_ZOOMS; } void setTimelineToolbar(int visible) { prefs.putInt(PROP_TIMELINE_TOOLBAR, visible); } public int getTimelineToolbar() { return prefs.getInt(PROP_TIMELINE_TOOLBAR, TIMELINE_TOOLBAR_DEFAULT); } void setSelectionToolbar(int visible) { prefs.putInt(PROP_SELECTION_TOOLBAR, visible); } public int getSelectionToolbar() { return prefs.getInt(PROP_SELECTION_TOOLBAR, SELECTION_TOOLBAR_DEFAULT); } void setExtraToolbar(int visible) { prefs.putInt(PROP_EXTRA_TOOLBAR, visible); } public int getExtraToolbar() { return prefs.getInt(PROP_EXTRA_TOOLBAR, EXTRA_TOOLBAR_DEFAULT); } void setClearSelection(boolean clear) { prefs.putBoolean(PROP_CLEAR_SELECTION, clear); } public boolean isClearSelection() { return prefs.getBoolean(PROP_CLEAR_SELECTION, true); } private TracerOptions() { prefs = NbPreferences.forModule(TracerOptions.class); } }