Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Unified Diff: editor/tools/plugins/com.google.dart.tools.deploy/src/com/google/dart/tools/ui/theme/mapper/ThemePreferenceMapper.java

Issue 11364134: Merge libv1. (Closed) Base URL: https://dart.googlecode.com/svn/experimental/lib_v2/dart
Patch Set: Reupload due to error Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: editor/tools/plugins/com.google.dart.tools.deploy/src/com/google/dart/tools/ui/theme/mapper/ThemePreferenceMapper.java
diff --git a/editor/tools/plugins/com.google.dart.tools.deploy/src/com/google/dart/tools/ui/theme/mapper/ThemePreferenceMapper.java b/editor/tools/plugins/com.google.dart.tools.deploy/src/com/google/dart/tools/ui/theme/mapper/ThemePreferenceMapper.java
index 56e596721dfdef137879c9544a44123afe67aaae..eff2f1d39f732458b1c14d80765129d3cc0998a6 100644
--- a/editor/tools/plugins/com.google.dart.tools.deploy/src/com/google/dart/tools/ui/theme/mapper/ThemePreferenceMapper.java
+++ b/editor/tools/plugins/com.google.dart.tools.deploy/src/com/google/dart/tools/ui/theme/mapper/ThemePreferenceMapper.java
@@ -13,10 +13,13 @@
*/
package com.google.dart.tools.ui.theme.mapper;
+import com.google.dart.tools.deploy.Activator;
import com.google.dart.tools.ui.theme.ColorThemeSetting;
+import com.google.dart.tools.ui.theme.preferences.PreviewPreferences;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.ui.preferences.WorkingCopyManager;
import org.osgi.service.prefs.BackingStoreException;
import java.util.Map;
@@ -27,22 +30,17 @@ import java.util.Map;
* @see com.github.eclipsecolortheme.mapper.ThemePreferenceMapper
*/
public abstract class ThemePreferenceMapper {
+
/** The associated Eclipse preferences. */
protected IEclipsePreferences preferences;
- /**
- * Creates a new mapper.
- */
- public ThemePreferenceMapper() {
- }
+ /** Copy of the preferences used to update the preview. */
+ private IEclipsePreferences previewPreferences;
/**
* Creates a new mapper.
- *
- * @param plugin The ID of the Eclipse plugin whose preferences should be altered.
*/
- public ThemePreferenceMapper(String plugin) {
- setPluginId(plugin);
+ public ThemePreferenceMapper() {
}
/**
@@ -59,6 +57,10 @@ public abstract class ThemePreferenceMapper {
preferences.flush();
}
+ public IEclipsePreferences getPreviewPreferences() {
+ return previewPreferences;
+ }
+
/**
* Maps the {@code theme} to the associated Eclipse preferences.
*
@@ -66,13 +68,36 @@ public abstract class ThemePreferenceMapper {
*/
public abstract void map(Map<String, ColorThemeSetting> theme);
+ public void previewRun(Runnable runnable) {
+ IEclipsePreferences prefs = preferences;
+ try {
+ preferences = previewPreferences;
+ runnable.run();
+ } catch (Throwable ex) {
+ // TODO(messick): Add proper error handling.
+ ex.printStackTrace();
+ } finally {
+ preferences = prefs;
+ }
+ }
+
/**
* Sets the plugin ID and loads preferences.
*
* @param plugin The ID of the Eclipse plugin whose preferences should be altered.
*/
- public void setPluginId(String plugin) {
+ public void setPluginId(String plugin, WorkingCopyManager manager) {
preferences = InstanceScope.INSTANCE.getNode(plugin);
+ previewPreferences = new PreviewPreferences();
+ try {
+ String[] keys = preferences.keys();
+ for (String key : keys) {
+ previewPreferences.put(key, preferences.get(key, null));
+ }
+ } catch (BackingStoreException ex) {
+ Activator.logError(ex);
+ }
+ preferences = manager.getWorkingCopy(preferences);
}
/**

Powered by Google App Engine
This is Rietveld 408576698