diff options
author | Sopot Cela | 2015-07-24 12:19:31 +0000 |
---|---|---|
committer | Sopot Cela | 2015-07-24 12:19:31 +0000 |
commit | 500e8529b6f541fae6caf3549a95da9e67cecf7f (patch) | |
tree | 74416789d02bbdc28d905762bb66644ce263c0fa | |
parent | 73380715ff68fdd606bd64876a25d62f591ede84 (diff) | |
download | eclipse.platform.ui-500e8529b6f541fae6caf3549a95da9e67cecf7f.tar.gz eclipse.platform.ui-500e8529b6f541fae6caf3549a95da9e67cecf7f.tar.xz eclipse.platform.ui-500e8529b6f541fae6caf3549a95da9e67cecf7f.zip |
Bug 472707 - Allow user to disable CSS styling
Change-Id: I3898e73329d526bf7cd267ee88f19a72ec1acc2f Signed-off-by:
Sopot Cela <scela@redhat.com>
Change-Id: Id63123584aac33739e6e342921d4421d82e1b034
4 files changed, 22 insertions, 10 deletions
diff --git a/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/PartRenderingEngine.java b/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/PartRenderingEngine.java index 82155bcf005..37c368aa5c7 100644 --- a/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/PartRenderingEngine.java +++ b/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/PartRenderingEngine.java @@ -106,6 +106,10 @@ public class PartRenderingEngine implements IPresentationEngine { private static final String defaultFactoryUrl = "bundleclass://org.eclipse.e4.ui.workbench.renderers.swt/" + "org.eclipse.e4.ui.workbench.renderers.swt.WorkbenchRendererFactory"; + + public static final String ENABLED_THEME_KEY = "themeEnabled"; + + private static boolean enableThemePreference; private String factoryUrl; IRendererFactory curFactory = null; @@ -474,6 +478,9 @@ public class PartRenderingEngine implements IPresentationEngine { curFactory = factory; context.set(IRendererFactory.class, curFactory); + IEclipsePreferences node = InstanceScope.INSTANCE.getNode("org.eclipse.e4.ui.workbench.renderers.swt"); + enableThemePreference = node.getBoolean(ENABLED_THEME_KEY, true); + cssThemeChangedHandler = new StylingPreferencesHandler(context.get(Display.class)); } @@ -1226,7 +1233,7 @@ public class PartRenderingEngine implements IPresentationEngine { IEclipseContext appContext) { String cssTheme = (String) appContext.get(E4Application.THEME_ID); String cssURI = (String) appContext.get(IWorkbench.CSS_URI_ARG); - if ("none".equals(cssTheme)) { + if ("none".equals(cssTheme) || (!enableThemePreference)) { appContext.set(IStylingEngine.SERVICE_NAME, new IStylingEngine() { @Override public void setClassname(Object widget, String classname) { diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java index 8787b989edc..2f54d6a377e 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java @@ -28,7 +28,7 @@ public class WorkbenchMessages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.ui.internal.messages";//$NON-NLS-1$ - public static String ThemingDisabled; + public static String ThemingEnabled; public static String ThemeChangeWarningText; diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java index e49e89fa966..0939286158b 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java @@ -34,6 +34,7 @@ import org.eclipse.e4.core.contexts.IEclipseContext; import org.eclipse.e4.ui.css.swt.theme.ITheme; import org.eclipse.e4.ui.css.swt.theme.IThemeEngine; import org.eclipse.e4.ui.internal.workbench.swt.E4Application; +import org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine; import org.eclipse.e4.ui.model.application.MApplication; import org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer; import org.eclipse.jface.dialogs.Dialog; @@ -100,19 +101,22 @@ public class ViewsPreferencePage extends PreferencePage implements private Map<String, String> themeAssociations; private boolean highContrastMode; + private Button themingEnabled; + @Override protected Control createContents(Composite parent) { initializeDialogUnits(parent); Composite comp = new Composite(parent, SWT.NONE); + themingEnabled = createCheckButton(comp, WorkbenchMessages.ThemingEnabled, engine != null); + // if started with "-cssTheme none", CSS settings should be disabled // but other appearance settings should be *not* disabled if (engine == null) { GridLayout layout = new GridLayout(1, false); layout.horizontalSpacing = 10; comp.setLayout(layout); - new Label(comp, SWT.NONE).setText(WorkbenchMessages.ThemingDisabled); Label separator = new Label(comp, SWT.SEPARATOR | SWT.HORIZONTAL); GridData layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false); layoutData.verticalIndent = 20; @@ -294,14 +298,15 @@ public class ViewsPreferencePage extends PreferencePage implements apiStore.setValue(IWorkbenchPreferenceConstants.USE_COLORED_LABELS, useColoredLabels.getSelection()); ((PreferencePageEnhancer) Tweaklets.get(PreferencePageEnhancer.KEY)).performOK(); + IEclipsePreferences prefs = getSwtRendererPreferences(); if (enableMru != null) { - IEclipsePreferences prefs = getSwtRendererPreferences(); prefs.putBoolean(StackRenderer.MRU_KEY, enableMru.getSelection()); - try { - prefs.flush(); - } catch (BackingStoreException e) { - WorkbenchPlugin.log("Failed to set SWT renderer preferences", e); //$NON-NLS-1$ - } + } + prefs.putBoolean(PartRenderingEngine.ENABLED_THEME_KEY, themingEnabled.getSelection()); + try { + prefs.flush(); + } catch (BackingStoreException e) { + WorkbenchPlugin.log("Failed to set SWT renderer preferences", e); //$NON-NLS-1$ } return super.performOk(); } diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties index 886459c4b6b..394f94d14ba 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties @@ -501,7 +501,7 @@ OpenPerspectiveDialogAction_tooltip=Open Perspective PreferencePage_noDescription = (No description available) PreferencePageParameterValues_pageLabelSeparator = \ >\ ThemeChangeWarningText = A restart may be required for the theme change to take full effect. -ThemingDisabled = Theming is disabled. +ThemingEnabled = Enable theming (requires restart) # --- Workbench ----- WorkbenchPreference_openMode=Open mode WorkbenchPreference_doubleClick=D&ouble click |