]> git.uio.no Git - ifi-stolz-refaktor.git/blobdiff - case-study/jdt-before/ui/org/eclipse/jdt/internal/ui/preferences/PreferencesAccess.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / jdt-before / ui / org / eclipse / jdt / internal / ui / preferences / PreferencesAccess.java
diff --git a/case-study/jdt-before/ui/org/eclipse/jdt/internal/ui/preferences/PreferencesAccess.java b/case-study/jdt-before/ui/org/eclipse/jdt/internal/ui/preferences/PreferencesAccess.java
new file mode 100644 (file)
index 0000000..abf9a1a
--- /dev/null
@@ -0,0 +1,135 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.jdt.internal.ui.preferences;
+
+import org.osgi.service.prefs.BackingStoreException;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.preferences.DefaultScope;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IScopeContext;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ProjectScope;
+
+import org.eclipse.ui.preferences.IWorkingCopyManager;
+
+/**
+ *
+ */
+public class PreferencesAccess {
+
+       public static PreferencesAccess getOriginalPreferences() {
+               return new PreferencesAccess();
+       }
+
+       public static PreferencesAccess getWorkingCopyPreferences(IWorkingCopyManager workingCopyManager) {
+               return new WorkingCopyPreferencesAccess(workingCopyManager);
+       }
+
+       private PreferencesAccess() {
+               // can only extends in this file
+       }
+
+       public IScopeContext getDefaultScope() {
+               return DefaultScope.INSTANCE;
+       }
+
+       public IScopeContext getInstanceScope() {
+               return InstanceScope.INSTANCE;
+       }
+
+       public IScopeContext getProjectScope(IProject project) {
+               return new ProjectScope(project);
+       }
+
+       /**
+        * Applies the changes
+        *
+        * @throws BackingStoreException thrown when the changes could not be applied
+        */
+       public void applyChanges() throws BackingStoreException {
+       }
+
+
+       private static class WorkingCopyPreferencesAccess extends PreferencesAccess {
+
+               private final IWorkingCopyManager fWorkingCopyManager;
+
+               private WorkingCopyPreferencesAccess(IWorkingCopyManager workingCopyManager) {
+                       fWorkingCopyManager= workingCopyManager;
+               }
+
+               private final IScopeContext getWorkingCopyScopeContext(IScopeContext original) {
+                       return new WorkingCopyScopeContext(fWorkingCopyManager, original);
+               }
+
+               @Override
+               public IScopeContext getDefaultScope() {
+                       return getWorkingCopyScopeContext(super.getDefaultScope());
+               }
+
+               @Override
+               public IScopeContext getInstanceScope() {
+                       return getWorkingCopyScopeContext(super.getInstanceScope());
+               }
+
+               @Override
+               public IScopeContext getProjectScope(IProject project) {
+                       return getWorkingCopyScopeContext(super.getProjectScope(project));
+               }
+
+               /* (non-Javadoc)
+                * @see org.eclipse.jdt.internal.ui.preferences.PreferencesAccess#applyChanges()
+                */
+               @Override
+               public void applyChanges() throws BackingStoreException {
+                       fWorkingCopyManager.applyChanges();
+               }
+       }
+
+
+       private static class WorkingCopyScopeContext implements IScopeContext {
+
+               private final IWorkingCopyManager fWorkingCopyManager;
+               private final IScopeContext fOriginal;
+
+               public WorkingCopyScopeContext(IWorkingCopyManager workingCopyManager, IScopeContext original) {
+                       fWorkingCopyManager= workingCopyManager;
+                       fOriginal= original;
+               }
+
+               /* (non-Javadoc)
+                * @see org.eclipse.core.runtime.preferences.IScopeContext#getName()
+                */
+               public String getName() {
+                       return fOriginal.getName();
+               }
+
+               /* (non-Javadoc)
+                * @see org.eclipse.core.runtime.preferences.IScopeContext#getNode(java.lang.String)
+                */
+               public IEclipsePreferences getNode(String qualifier) {
+                       return fWorkingCopyManager.getWorkingCopy(fOriginal.getNode(qualifier));
+               }
+
+               /* (non-Javadoc)
+                * @see org.eclipse.core.runtime.preferences.IScopeContext#getLocation()
+                */
+               public IPath getLocation() {
+                       return fOriginal.getLocation();
+               }
+       }
+
+
+}