Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/PropertyStore.java')
-rw-r--r--codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/PropertyStore.java234
1 files changed, 234 insertions, 0 deletions
diff --git a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/PropertyStore.java b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/PropertyStore.java
new file mode 100644
index 00000000000..cb30907d4e2
--- /dev/null
+++ b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/PropertyStore.java
@@ -0,0 +1,234 @@
+/*******************************************************************************
+ * Copyright (c) 2003 Berthold Daum.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ * Berthold Daum
+ *******************************************************************************/
+
+package org.eclipse.cdt.codan.internal.ui.preferences;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.QualifiedName;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferenceStore;
+
+/**
+ * @author Berthold Daum
+ *
+ */
+public class PropertyStore extends PreferenceStore {
+
+ private IResource resource;
+ private IPreferenceStore workbenchStore;
+ private String pageId;
+ private boolean inserting = false;
+
+ public PropertyStore(
+ IResource resource,
+ IPreferenceStore workbenchStore,
+ String pageId) {
+ this.resource = resource;
+ this.workbenchStore = workbenchStore;
+ this.pageId = pageId;
+ }
+
+ /*** Write modified values back to properties ***/
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.IPersistentPreferenceStore#save()
+ */
+ public void save() throws IOException {
+ writeProperties();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.PreferenceStore#save(java.io.OutputStream, java.lang.String)
+ */
+ public void save(OutputStream out, String header) throws IOException {
+ writeProperties();
+ }
+
+ /**
+ * Writes modified preferences into resource properties.
+ */
+ private void writeProperties() throws IOException {
+ String[] preferences = super.preferenceNames();
+ for (int i = 0; i < preferences.length; i++) {
+ String name = preferences[i];
+ try {
+ setProperty(name, getString(name));
+ } catch (CoreException e) {
+ throw new IOException(Messages.getString("PropertyStore.Cannot_write_resource_property") + name); //$NON-NLS-1$
+ }
+ }
+ }
+
+ /**
+ * Convenience method to set a property
+ * @param name - the preference name
+ * @param value - the property value or null to delete the property
+ * @throws CoreException
+ */
+ private void setProperty(String name, String value) throws CoreException {
+ resource.setPersistentProperty(new QualifiedName(pageId, name), value);
+ }
+
+ /*** Get default values (Delegate to workbench store) ***/
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultBoolean(java.lang.String)
+ */
+ public boolean getDefaultBoolean(String name) {
+ return workbenchStore.getDefaultBoolean(name);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultDouble(java.lang.String)
+ */
+ public double getDefaultDouble(String name) {
+ return workbenchStore.getDefaultDouble(name);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultFloat(java.lang.String)
+ */
+ public float getDefaultFloat(String name) {
+ return workbenchStore.getDefaultFloat(name);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultInt(java.lang.String)
+ */
+ public int getDefaultInt(String name) {
+ return workbenchStore.getDefaultInt(name);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultLong(java.lang.String)
+ */
+ public long getDefaultLong(String name) {
+ return workbenchStore.getDefaultLong(name);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.IPreferenceStore#getDefaultString(java.lang.String)
+ */
+ public String getDefaultString(String name) {
+ return workbenchStore.getDefaultString(name);
+ }
+
+ /*** Get property values ***/
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.IPreferenceStore#getBoolean(java.lang.String)
+ */
+ public boolean getBoolean(String name) {
+ insertValue(name);
+ return super.getBoolean(name);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.IPreferenceStore#getDouble(java.lang.String)
+ */
+ public double getDouble(String name) {
+ insertValue(name);
+ return super.getDouble(name);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.IPreferenceStore#getFloat(java.lang.String)
+ */
+ public float getFloat(String name) {
+ insertValue(name);
+ return super.getFloat(name);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.IPreferenceStore#getInt(java.lang.String)
+ */
+ public int getInt(String name) {
+ insertValue(name);
+ return super.getInt(name);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.IPreferenceStore#getLong(java.lang.String)
+ */
+ public long getLong(String name) {
+ insertValue(name);
+ return super.getLong(name);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.IPreferenceStore#getString(java.lang.String)
+ */
+ public String getString(String name) {
+ insertValue(name);
+ return super.getString(name);
+ }
+
+ /**
+ * @param name
+ */
+ private synchronized void insertValue(String name) {
+ if (inserting)
+ return;
+ if (super.contains(name))
+ return;
+ inserting = true;
+ String prop = null;
+ try {
+ prop = getProperty(name);
+ } catch (CoreException e) {
+ }
+ if (prop == null)
+ prop = workbenchStore.getString(name);
+ if (prop != null)
+ setValue(name, prop);
+ inserting = false;
+ }
+
+ /**
+ * Convenience method to fetch a property
+ * @param name - the preference name
+ * @return - the property value
+ * @throws CoreException
+ */
+ private String getProperty(String name) throws CoreException {
+ return resource.getPersistentProperty(new QualifiedName(pageId, name));
+ }
+
+ /*** Misc ***/
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.IPreferenceStore#contains(java.lang.String)
+ */
+ public boolean contains(String name) {
+ return workbenchStore.contains(name);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.IPreferenceStore#setToDefault(java.lang.String)
+ */
+ public void setToDefault(String name) {
+ setValue(name, getDefaultString(name));
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.preference.IPreferenceStore#isDefault(java.lang.String)
+ */
+ public boolean isDefault(String name) {
+ String defaultValue = getDefaultString(name);
+ if (defaultValue == null) return false;
+ return defaultValue.equals(getString(name));
+ }
+
+}

Back to the top