X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/OverlayPreferenceStore.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/OverlayPreferenceStore.java index a8d3a8a..acea1f5 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/OverlayPreferenceStore.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/OverlayPreferenceStore.java @@ -1,12 +1,19 @@ -/* - * (c) Copyright IBM Corp. 2000, 2001. - * All Rights Reserved. - */ +/******************************************************************************* + * Copyright (c) 2000, 2003 IBM Corporation and others. + * 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: + * IBM Corporation - initial API and implementation + *******************************************************************************/ package net.sourceforge.phpdt.internal.ui.preferences; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferenceStore; +import org.eclipse.jface.text.Assert; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; @@ -19,7 +26,7 @@ public class OverlayPreferenceStore implements IPreferenceStore { public static final class TypeDescriptor { private TypeDescriptor() { } - }; + } public static final TypeDescriptor BOOLEAN= new TypeDescriptor(); public static final TypeDescriptor DOUBLE= new TypeDescriptor(); @@ -37,7 +44,7 @@ public class OverlayPreferenceStore implements IPreferenceStore { fDescriptor= descriptor; fKey= key; } - }; + } private class PropertyListener implements IPropertyChangeListener { @@ -49,7 +56,7 @@ public class OverlayPreferenceStore implements IPreferenceStore { if (key != null) propagateProperty(fParent, key, fStore); } - }; + } private IPreferenceStore fParent; @@ -57,6 +64,7 @@ public class OverlayPreferenceStore implements IPreferenceStore { private OverlayKey[] fOverlayKeys; private PropertyListener fPropertyListener; + private boolean fLoaded; public OverlayPreferenceStore(IPreferenceStore parent, OverlayKey[] overlayKeys) { @@ -186,6 +194,9 @@ public class OverlayPreferenceStore implements IPreferenceStore { public void load() { for (int i= 0; i < fOverlayKeys.length; i++) loadProperty(fParent, fOverlayKeys[i], fStore, true); + + fLoaded= true; + } public void loadDefaults() { @@ -443,4 +454,32 @@ public class OverlayPreferenceStore implements IPreferenceStore { if (covers(name)) fStore.setValue(name, value); } -} \ No newline at end of file + + /** + * The keys to add to the list of overlay keys. + *

+ * Note: This method must be called before {@link #load()} is called. + *

+ * + * @param keys + * @since 3.0 + */ + public void addKeys(OverlayKey[] keys) { + Assert.isTrue(!fLoaded); + Assert.isNotNull(keys); + + int overlayKeysLength= fOverlayKeys.length; + OverlayKey[] result= new OverlayKey[keys.length + overlayKeysLength]; + + for (int i= 0, length= overlayKeysLength; i < length; i++) + result[i]= fOverlayKeys[i]; + + for (int i= 0, length= keys.length; i < length; i++) + result[overlayKeysLength + i]= keys[i]; + + fOverlayKeys= result; + + if (fLoaded) + load(); + } +}