1 /* 2 * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. 3 * Copyright (c) 2019, Red Hat Inc. All rights reserved. 4 * 5 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 6 * 7 * The contents of this file are subject to the terms of either the Universal Permissive License 8 * v 1.0 as shown at http://oss.oracle.com/licenses/upl 9 * 10 * or the following license: 11 * 12 * Redistribution and use in source and binary forms, with or without modification, are permitted 13 * provided that the following conditions are met: 14 * 15 * 1. Redistributions of source code must retain the above copyright notice, this list of conditions 16 * and the following disclaimer. 17 * 18 * 2. Redistributions in binary form must reproduce the above copyright notice, this list of 19 * conditions and the following disclaimer in the documentation and/or other materials provided with 20 * the distribution. 21 * 22 * 3. Neither the name of the copyright holder nor the names of its contributors may be used to 23 * endorse or promote products derived from this software without specific prior written permission. 24 * 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR 26 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 27 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 28 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 31 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY 32 * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 */ 34 package org.openjdk.jmc.ui; 35 36 import java.awt.GraphicsEnvironment; 37 import java.util.logging.Level; 38 39 import org.eclipse.core.runtime.Platform; 40 import org.eclipse.jface.resource.ImageRegistry; 41 import org.openjdk.jmc.ui.common.security.SecurityManagerFactory; 42 import org.openjdk.jmc.ui.common.util.Environment; 43 import org.openjdk.jmc.ui.common.util.Environment.OSType; 44 import org.openjdk.jmc.ui.misc.TrayManager; 45 import org.openjdk.jmc.ui.preferences.PreferenceConstants; 46 import org.openjdk.jmc.ui.security.DialogSecurityManager; 47 import org.osgi.framework.BundleContext; 48 49 /** 50 * The Core Plug-in class for Mission Control 51 */ 52 public class UIPlugin extends MCAbstractUIPlugin { 53 public static final String PLUGIN_ID = "org.openjdk.jmc.ui"; //$NON-NLS-1$ 54 55 // general 56 public static final String ICON_AMPERSAND = "other.gif"; //$NON-NLS-1$ 57 public static final String ICON_HELP = "help.gif"; //$NON-NLS-1$ 58 public static final String ICON_ERROR = "error_obj.gif"; //$NON-NLS-1$ 59 public static final String ICON_ALERT = "alert_obj.png"; //$NON-NLS-1$ 60 public static final String ICON_TABLE_SETTINGS = "settings_obj.gif"; //$NON-NLS-1$ 61 public static final String ICON_REFRESH = "refresh_tab.gif"; //$NON-NLS-1$ 62 public static final String ICON_REFRESH_GRAY = "refresh_tab_grey.gif"; //$NON-NLS-1$ 63 public static final String ICON_STACKTRACE_ELEMENT = "stckframe_obj.gif"; //$NON-NLS-1$ 64 public static final String IMAGE_TABLE_SETTINGS = "tablesettings.gif"; //$NON-NLS-1$ 65 public static final String ICON_VERTICAL_LAYOUT = "th_vertical.gif"; //$NON-NLS-1$ 66 public static final String ICON_HORIZONTAL_LAYOUT = "th_horizontal.gif"; //$NON-NLS-1$ 67 public static final String ICON_EXPAND_ALL = "expandall.gif"; //$NON-NLS-1$ 68 public static final String ICON_COLLAPSE_ALL = "collapseall.gif"; //$NON-NLS-1$ 69 public static final String ICON_EXPAND_GRAYED = "collapsegrayed.gif"; //$NON-NLS-1$ 70 public static final String ICON_CLOCK = "clock16.gif"; //$NON-NLS-1$ 71 public static final String ICON_PROPERTY_OBJECT = "property_obj.gif"; //$NON-NLS-1$ 72 public static final String ICON_BINARY = "binary_co.gif"; //$NON-NLS-1$ 73 public static final String ICON_DATA = "data.gif"; //$NON-NLS-1$ 74 public static final String ICON_GARBAGE_BIN = "trash.png"; //$NON-NLS-1$ 75 public static final String ICON_ADRESS = "adress.gif"; //$NON-NLS-1$ 76 public static final String ICON_PASTE = "paste_edit.gif"; //$NON-NLS-1$ 77 public static final String ICON_CHANGE = "change.gif"; //$NON-NLS-1$ 78 public static final String ICON_SAVE = "save_edit.gif"; //$NON-NLS-1$ 79 public static final String ICON_ADD = "add.gif"; //$NON-NLS-1$; 80 public static final String ICON_CUT = "cut_edit.gif"; //$NON-NLS-1$ 81 public static final String ICON_TIMESPAN = "time-span-16.png"; //$NON-NLS-1$ 82 public static final String ICON_TREE_MODE = "tree_mode.png"; //$NON-NLS-1$ 83 public static final String ICON_RESET_TO_DEFAULTS = "undo.gif"; //$NON-NLS-1$ 84 public static final String ICON_LOCK_TREE = "lock_tree.png"; //$NON-NLS-1$ 85 public static final String ICON_REGEX = "regex.png"; //$NON-NLS-1$; 86 87 // control 88 public static final String ICON_STOP = "stop.gif"; //$NON-NLS-1$ 89 public static final String ICON_PLAY = "play.gif"; //$NON-NLS-1$ 90 public static final String ICON_PAUSE = "pause-16.png"; //$NON-NLS-1$ 91 public static final String ICON_STEP_OVER = "stepover.gif"; //$NON-NLS-1$ 92 93 public static final String ICON_STOP_GREY = "stopgrey.gif"; //$NON-NLS-1$ 94 public static final String ICON_PLAY_GREY = "playgrey.gif"; //$NON-NLS-1$ 95 public static final String ICON_PAUSE_GREY = "pause_grey.gif"; //$NON-NLS-1$ 96 public static final String ICON_STEP_OVER_GREY = "stepover_grey.gif"; //$NON-NLS-1$ 97 98 public static final String ICON_EXPORT = "export.gif"; //$NON-NLS-1$ 99 public static final String ICON_IMPORT = "import.gif"; //$NON-NLS-1$ 100 101 // overlay 102 public static final String ICON_OVERLAY_ERROR = "error_co.gif"; //$NON-NLS-1$ 103 public static final String ICON_OVERLAY_RECURSIVE = "recursive_co.gif"; //$NON-NLS-1$ 104 public static final String ICON_OVERLAY_STATIC = "static_co.gif"; //$NON-NLS-1$ 105 106 // class 107 public static final String ICON_CLASS_PUBLIC = "class_obj.gif"; //$NON-NLS-1$ 108 109 // exception 110 public static final String ICON_EXCEPTION = "jexception_obj.png"; //$NON-NLS-1$ 111 public static final String ICON_RUNTIME_EXCEPTION = "jexceptiond_obj.png"; //$NON-NLS-1$ 112 113 // method 114 public static final String ICON_METHOD_DEFAULT = "methdef_obj.gif"; //$NON-NLS-1$ 115 public static final String ICON_METHOD_PRIVATE = "methpri_obj.gif"; //$NON-NLS-1$ 116 public static final String ICON_METHOD_PUBLIC = "methpub_obj.gif"; //$NON-NLS-1$ 117 public static final String ICON_METHOD_PROTECTED = "methpro_obj.gif"; //$NON-NLS-1$ 118 public static final String ICON_METHOD_NON_OPTIMIZED = "non-optimized-method-16.png"; //$NON-NLS-1$ 119 public static final String ICON_METHOD_OPTIMZED = "optimized-method-16.png"; //$NON-NLS-1$ 120 public static final String ICON_METHOD_CALLER = "caller.png"; //$NON-NLS-1$ 121 public static final String ICON_METHOD_CALLEE = "callee.png"; //$NON-NLS-1$ 122 123 // package 124 public static final String ICON_PACKAGE = "package_obj.gif"; //$NON-NLS-1$ 125 public static final String ICON_LOGICAL_PACKAGE = "logical_package_obj.gif"; //$NON-NLS-1$ 126 127 // module 128 public static final String ICON_MODULE = "jigsaw-32.png"; //$NON-NLS-1$ 129 130 // font awesome 131 public static final String ICON_FA_SCALE_TO_FIT = "fa-scale-to-fit-16.png"; 132 public static final String ICON_FA_SELECTION = "fa-selection-16.png"; 133 public static final String ICON_FA_ZOOM_IN = "fa-zoom-in-16.png"; 134 public static final String ICON_FA_ZOOM_OUT = "fa-zoom-out-16.png"; 135 public static final String ICON_FA_ZOOM_PAN = "fa-zoom-pan-16.png"; 136 137 // thread 138 public final static String ICON_THREAD_RUNNING = "thread_obj.gif"; //$NON-NLS-1$ 139 public final static String ICON_THREAD_SUSPENDED = "threads_obj.gif"; //$NON-NLS-1$ 140 public final static String ICON_THREAD_TERMINATED = "threadt_obj.gif"; //$NON-NLS-1$ 141 public static final String ICON_THREAD_DEADLOCKED = "live-thread-deadlocked-16.PNG"; //$NON-NLS-1$ 142 public static final String ICON_THREAD_DEADLOCKED_GREY = "live-thread-deadlocked-grey-16.PNG"; //$NON-NLS-1$ 143 public static final String ICON_THREAD_NEW = "live-thread-new-16.png"; //$NON-NLS-1$ 144 public static final String ICON_THREAD_TIMEWAITING = "live-thread-timewaiting-16.png"; //$NON-NLS-1$ 145 public static final String ICON_THREAD_WAITING = "live-thread-waiting-16.png"; //$NON-NLS-1$ 146 public static final String ICON_THREAD_BLOCKED = "live-thread-locked-16.png"; //$NON-NLS-1$ 147 public static final String ICON_THREAD_GROUP = "threadgroup.gif"; //$NON-NLS-1$ 148 public static final String ICON_THREAD_LOCK = ICON_THREAD_BLOCKED; 149 150 public static final String ICON_ZOOM_IN = "zoom-in-16.png"; //$NON-NLS-1$ 151 public static final String ICON_ZOOM_OUT = "zoom-out-16.png"; //$NON-NLS-1$ 152 public static final String ICON_SELECT_ALL = "select-all-16.png"; //$NON-NLS-1$ 153 public static final String ICON_NAV_FORWARD = "forward_nav.gif"; //$NON-NLS-1$ 154 public static final String ICON_NAV_BACKWARD = "backward_nav.gif"; //$NON-NLS-1$ 155 public static final String ICON_NAV_DOWN = "down_nav.gif"; //$NON-NLS-1$ 156 public static final String ICON_NAV_UP = "up_nav.gif"; //$NON-NLS-1$ 157 public static final String ICON_ZOOM_ON = "zoom-tool-on-16.png"; //$NON-NLS-1$ 158 public static final String ICON_ZOOM_OFF = "zoom-tool-off-16.png"; //$NON-NLS-1$ 159 public static final String ICON_SELECT_ON = "selection-tool-on-16.png"; //$NON-NLS-1$ 160 public static final String ICON_SELECT_OFF = "selection-tool-off-16.png"; //$NON-NLS-1$ 161 162 public static final String ICON_FOLDER = "fldr_obj.gif"; //$NON-NLS-1$ 163 public static final String ICON_FOLDER_CLOSED = "closedFolder.gif"; //$NON-NLS-1$ 164 165 public static final String ICON_COLOR_PALETTE = "color-palette.gif"; //$NON-NLS-1$ 166 167 public static final String ICON_DIAL_PANEL = "single-dial.png"; //$NON-NLS-1$ 168 public static final String ICON_DIAL_BACKGROUND = "dial-bkgnd.png"; //$NON-NLS-1$ 169 public static final String ICON_DIAL_PANEL2 = "dial2.png"; //$NON-NLS-1$TDial 170 171 public static final String ICON_DIAL_PANEL_1_10 = "dial_1_to_10.png"; //$NON-NLS-1$ 172 public static final String ICON_DIAL_PANEL_10_100 = "dial_10_to_100.png"; //$NON-NLS-1$ 173 public static final String ICON_DIAL_PANEL_100_1000 = "dial_100_to_1000.png"; //$NON-NLS-1$ 174 public final static String ICON_DELETE = "delete-16.png"; //$NON-NLS-1$ 175 176 public final static String ICON_MISSION_CONTROL = "mission_control.gif"; //$NON-NLS-1$ 177 public static final String ICON_TOOLS = "external_tools.gif"; //$NON-NLS-1$ 178 public static final String ICON_TOOLBAR = "toolbar.gif"; //$NON-NLS-1$ 179 180 public static final String ICON_LAYOUT = "layout.gif"; //$NON-NLS-1$ 181 182 public static final String ICON_SERVICES = "service.gif"; //$NON-NLS-1$ 183 184 public static final String ICON_TABGROUP_OTHER = "tabgroup_other.png"; //$NON-NLS-1$ 185 186 public static final String ICON_BANNER_PASSWORD_WIZARD = "bannerpasswordwiz.gif"; //$NON-NLS-1$ 187 188 public static final String ICON_OVERLAY_WARNING = "overlay_warning.gif"; //$NON-NLS-1$ 189 190 public static final String ICON_FIND = "search-glass.png"; //$NON-NLS-1$ 191 192 public static enum ImageRegistryPrefixes { 193 COLORED_SQUARE, TYPE_IMAGES, NONE // Use NONE prefix to avoid conflict with other prefixes 194 } 195 196 // The shared instance. 197 private static UIPlugin plugin; 198 private TrayManager m_trayManager; 199 200 /** 201 * The constructor. 202 */ 203 public UIPlugin() { 204 super(PLUGIN_ID); 205 plugin = this; 206 } 207 208 /** 209 * This method is called upon plug-in activation 210 */ 211 @Override 212 public void start(BundleContext context) throws Exception { 213 super.start(context); 214 initSwingLookAndFeel(); 215 // FIXME: Move to extension point 216 SecurityManagerFactory.setDefaultSecurityManager(new DialogSecurityManager()); 217 } 218 219 /** 220 * This method is called when the plug-in is stopped 221 */ 222 @Override 223 public void stop(BundleContext context) throws Exception { 224 super.stop(context); 225 plugin = null; 226 Platform.getInstanceLocation().release(); 227 } 228 229 @Override 230 protected void initializeImageRegistry(ImageRegistry registry) { 231 registerImage(registry, ICON_CLASS_PUBLIC, ICON_CLASS_PUBLIC); 232 registerImage(registry, ICON_AMPERSAND, ICON_AMPERSAND); 233 registerImage(registry, ICON_HELP, ICON_HELP); 234 registerImage(registry, ICON_EXCEPTION, ICON_EXCEPTION); 235 registerImage(registry, ICON_RUNTIME_EXCEPTION, ICON_RUNTIME_EXCEPTION); 236 registerImage(registry, ICON_PACKAGE, ICON_PACKAGE); 237 registerImage(registry, ICON_LOGICAL_PACKAGE, ICON_LOGICAL_PACKAGE); 238 registerImage(registry, ICON_METHOD_PROTECTED, ICON_METHOD_PROTECTED); 239 registerImage(registry, ICON_METHOD_PRIVATE, ICON_METHOD_PRIVATE); 240 registerImage(registry, ICON_METHOD_PUBLIC, ICON_METHOD_PUBLIC); 241 registerImage(registry, ICON_METHOD_DEFAULT, ICON_METHOD_DEFAULT); 242 registerImage(registry, ICON_METHOD_CALLEE, ICON_METHOD_CALLEE); 243 registerImage(registry, ICON_METHOD_CALLER, ICON_METHOD_CALLER); 244 registerImage(registry, ICON_ALERT, ICON_ALERT); 245 registerImage(registry, ICON_VERTICAL_LAYOUT, ICON_VERTICAL_LAYOUT); 246 registerImage(registry, ICON_HORIZONTAL_LAYOUT, ICON_HORIZONTAL_LAYOUT); 247 registerImage(registry, ICON_TABLE_SETTINGS, ICON_TABLE_SETTINGS); 248 registerImage(registry, ICON_STACKTRACE_ELEMENT, ICON_STACKTRACE_ELEMENT); 249 registerImage(registry, ICON_REFRESH, ICON_REFRESH); 250 registerImage(registry, ICON_REFRESH_GRAY, ICON_REFRESH_GRAY); 251 registerImage(registry, ICON_METHOD_NON_OPTIMIZED, ICON_METHOD_NON_OPTIMIZED); 252 registerImage(registry, ICON_METHOD_OPTIMZED, ICON_METHOD_OPTIMZED); 253 registerImage(registry, ICON_DATA, ICON_DATA); 254 registerImage(registry, ICON_BINARY, ICON_BINARY); 255 registerImage(registry, ICON_GARBAGE_BIN, ICON_GARBAGE_BIN); 256 registerImage(registry, ICON_ADRESS, ICON_ADRESS); 257 registerImage(registry, ICON_STOP, ICON_STOP); 258 registerImage(registry, ICON_PLAY, ICON_PLAY); 259 registerImage(registry, ICON_STEP_OVER, ICON_STEP_OVER); 260 261 registerImage(registry, ICON_STOP_GREY, ICON_STOP_GREY); 262 registerImage(registry, ICON_PLAY_GREY, ICON_PLAY_GREY); 263 registerImage(registry, ICON_STEP_OVER_GREY, ICON_STEP_OVER_GREY); 264 registerImage(registry, ICON_PAUSE_GREY, ICON_PAUSE_GREY); 265 266 registerImage(registry, ICON_IMPORT, ICON_IMPORT); 267 registerImage(registry, ICON_EXPORT, ICON_EXPORT); 268 269 registerImage(registry, ICON_PASTE, ICON_PASTE); 270 registerImage(registry, ICON_SAVE, ICON_SAVE); 271 registerImage(registry, ICON_CHANGE, ICON_CHANGE); 272 registerImage(registry, ICON_ADD, ICON_ADD); 273 registerImage(registry, ICON_CUT, ICON_CUT); 274 registerImage(registry, ICON_TIMESPAN, ICON_TIMESPAN); 275 registerImage(registry, ICON_REGEX, ICON_REGEX); 276 277 registerImage(registry, ICON_CLOCK, ICON_CLOCK); 278 registerImage(registry, ICON_PROPERTY_OBJECT, ICON_PROPERTY_OBJECT); 279 280 registerImage(registry, ICON_EXPAND_ALL, ICON_EXPAND_ALL); 281 registerImage(registry, ICON_COLLAPSE_ALL, ICON_COLLAPSE_ALL); 282 283 // font awesome 284 registerImage(registry, ICON_FA_SCALE_TO_FIT, ICON_FA_SCALE_TO_FIT); 285 registerImage(registry, ICON_FA_SELECTION, ICON_FA_SELECTION); 286 registerImage(registry, ICON_FA_ZOOM_IN, ICON_FA_ZOOM_IN); 287 registerImage(registry, ICON_FA_ZOOM_OUT, ICON_FA_ZOOM_OUT); 288 registerImage(registry, ICON_FA_ZOOM_PAN, ICON_FA_ZOOM_PAN); 289 290 // Threads 291 registerImage(registry, ICON_THREAD_RUNNING, ICON_THREAD_RUNNING); 292 registerImage(registry, ICON_THREAD_SUSPENDED, ICON_THREAD_SUSPENDED); 293 registerImage(registry, ICON_THREAD_TERMINATED, ICON_THREAD_TERMINATED); 294 registerImage(registry, ICON_THREAD_DEADLOCKED, ICON_THREAD_DEADLOCKED); 295 registerImage(registry, ICON_THREAD_DEADLOCKED_GREY, ICON_THREAD_DEADLOCKED_GREY); 296 registerImage(registry, ICON_THREAD_TIMEWAITING, ICON_THREAD_TIMEWAITING); 297 registerImage(registry, ICON_THREAD_WAITING, ICON_THREAD_WAITING); 298 registerImage(registry, ICON_THREAD_BLOCKED, ICON_THREAD_BLOCKED); 299 registerImage(registry, ICON_THREAD_NEW, ICON_THREAD_NEW); 300 registerImage(registry, ICON_THREAD_GROUP, ICON_THREAD_GROUP); 301 302 // overlay 303 registerImage(registry, ICON_ERROR, ICON_ERROR); 304 registerImage(registry, ICON_OVERLAY_ERROR, ICON_OVERLAY_ERROR); 305 registerImage(registry, ICON_OVERLAY_RECURSIVE, ICON_OVERLAY_RECURSIVE); 306 307 registerImage(registry, IMAGE_TABLE_SETTINGS, IMAGE_TABLE_SETTINGS); 308 309 // Panning and zooming 310 registerImage(registry, ICON_ZOOM_IN, ICON_ZOOM_IN); 311 registerImage(registry, ICON_ZOOM_OUT, ICON_ZOOM_OUT); 312 registerImage(registry, ICON_SELECT_ALL, ICON_SELECT_ALL); 313 registerImage(registry, ICON_ZOOM_OFF, ICON_ZOOM_OFF); 314 registerImage(registry, ICON_ZOOM_ON, ICON_ZOOM_ON); 315 registerImage(registry, ICON_SELECT_ON, ICON_SELECT_ON); 316 registerImage(registry, ICON_SELECT_OFF, ICON_SELECT_OFF); 317 318 registerImage(registry, ICON_NAV_FORWARD, ICON_NAV_FORWARD); 319 registerImage(registry, ICON_NAV_BACKWARD, ICON_NAV_BACKWARD); 320 registerImage(registry, ICON_NAV_UP, ICON_NAV_UP); 321 registerImage(registry, ICON_NAV_DOWN, ICON_NAV_DOWN); 322 323 registerImage(registry, ICON_DIAL_PANEL, ICON_DIAL_PANEL); 324 registerImage(registry, ICON_DIAL_PANEL_1_10, ICON_DIAL_PANEL_1_10); 325 registerImage(registry, ICON_DIAL_PANEL_10_100, ICON_DIAL_PANEL_10_100); 326 registerImage(registry, ICON_DIAL_PANEL_100_1000, ICON_DIAL_PANEL_100_1000); 327 328 registerImage(registry, ICON_DIAL_BACKGROUND, ICON_DIAL_BACKGROUND); 329 registerImage(registry, ICON_FOLDER, ICON_FOLDER); 330 registerImage(registry, ICON_FOLDER_CLOSED, ICON_FOLDER_CLOSED); 331 332 registerImage(registry, ICON_COLOR_PALETTE, ICON_COLOR_PALETTE); 333 334 registerImage(registry, ICON_DELETE, ICON_DELETE); 335 registerImage(registry, ICON_MISSION_CONTROL, ICON_MISSION_CONTROL); 336 337 registerImage(registry, ICON_TOOLS, ICON_TOOLS); 338 registerImage(registry, ICON_TOOLBAR, ICON_TOOLBAR); 339 registerImage(registry, ICON_LAYOUT, ICON_LAYOUT); 340 341 registerImage(registry, ICON_SERVICES, ICON_SERVICES); 342 343 registerImage(registry, ICON_TABGROUP_OTHER, ICON_TABGROUP_OTHER); 344 345 registerImage(registry, ICON_BANNER_PASSWORD_WIZARD, ICON_BANNER_PASSWORD_WIZARD); 346 347 registerImage(registry, ICON_RESET_TO_DEFAULTS, ICON_RESET_TO_DEFAULTS); 348 349 registerImage(registry, ICON_LOCK_TREE, ICON_LOCK_TREE); 350 351 } 352 353 /** 354 * Returns the shared instance. 355 */ 356 public static UIPlugin getDefault() { 357 return plugin; 358 } 359 360 public boolean getAccessibilityMode() { 361 return getPreferenceStore().getBoolean(PreferenceConstants.P_ACCESSIBILITY_MODE); 362 } 363 364 /** 365 * @return the tray manager 366 */ 367 public TrayManager getTrayManager() { 368 return m_trayManager; 369 } 370 371 /** 372 * @param trayManager 373 */ 374 public void setTrayManager(TrayManager trayManager) { 375 m_trayManager = trayManager; 376 } 377 378 /** 379 * Sets the Swing look and feel if needed. 380 */ 381 private static void initSwingLookAndFeel() { 382 // Avoid the possibly broken GTK look and feel on Linux 383 String laf = System.getProperty("swing.defaultlaf"); //$NON-NLS-1$ 384 if (Environment.getOSType() == OSType.LINUX && laf == null && !GraphicsEnvironment.isHeadless()) { 385 laf = "javax.swing.plaf.metal.MetalLookAndFeel"; //$NON-NLS-1$ 386 System.setProperty("swing.defaultlaf", laf); //$NON-NLS-1$ 387 System.setProperty("swing.systemlaf", laf); //$NON-NLS-1$ 388 UIPlugin.getDefault().getLogger().log(Level.INFO, 389 "On Linux, setting look and feel system properties to " + laf); //$NON-NLS-1$ 390 } 391 } 392 }