diff --git a/cmake/org.eclipse.cdt.cmake.is.core.ui/src/org/eclipse/cdt/cmake/is/core/ui/internal/IndexerSupportPreferencePage.java b/cmake/org.eclipse.cdt.cmake.is.core.ui/src/org/eclipse/cdt/cmake/is/core/ui/internal/IndexerSupportPreferencePage.java index 7bb2fb6fe23..c7dd3bdf009 100644 --- a/cmake/org.eclipse.cdt.cmake.is.core.ui/src/org/eclipse/cdt/cmake/is/core/ui/internal/IndexerSupportPreferencePage.java +++ b/cmake/org.eclipse.cdt.cmake.is.core.ui/src/org/eclipse/cdt/cmake/is/core/ui/internal/IndexerSupportPreferencePage.java @@ -16,7 +16,7 @@ import java.util.regex.PatternSyntaxException; import org.eclipse.cdt.cmake.is.core.IParserPreferences; import org.eclipse.cdt.cmake.is.core.IParserPreferencesAccess; import org.eclipse.cdt.cmake.is.core.IParserPreferencesMetadata; -import org.eclipse.cdt.core.options.OptionMetadata; +import org.eclipse.core.runtime.preferences.PreferenceMetadata; import org.eclipse.e4.core.contexts.EclipseContextFactory; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.preference.PreferencePage; @@ -155,7 +155,7 @@ public class IndexerSupportPreferencePage extends PreferencePage implements IWor * @param text text to display on the check-box */ private static Button createCheckbox(Composite parent, int horizontalAlignment, int horizontalSpan, - OptionMetadata option) { + PreferenceMetadata option) { Button b = new Button(parent, SWT.CHECK); b.setText(option.name()); b.setToolTipText(option.description()); diff --git a/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/IParserPreferencesMetadata.java b/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/IParserPreferencesMetadata.java index 9072340efd8..db3da662124 100644 --- a/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/IParserPreferencesMetadata.java +++ b/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/IParserPreferencesMetadata.java @@ -11,7 +11,7 @@ package org.eclipse.cdt.cmake.is.core; -import org.eclipse.cdt.core.options.OptionMetadata; +import org.eclipse.core.runtime.preferences.PreferenceMetadata; /** * The metadata for options to configure the {@code compile_commands.json} parser. @@ -24,19 +24,19 @@ public interface IParserPreferencesMetadata { * * @return the metadata for the preference option, never {@null} */ - OptionMetadata tryVersionSuffix(); + PreferenceMetadata tryVersionSuffix(); /** * Returns the metadata for the {@link IParserPreferences#getVersionSuffixPattern()} preference. * * @return the metadata for the preference option, never {@null} */ - OptionMetadata versionSuffixPattern(); + PreferenceMetadata versionSuffixPattern(); /** * Returns the metadata for the {@link IParserPreferences#getAllocateConsole()} preference. * * @return the metadata for the preference option, never {@null} */ - OptionMetadata allocateConsole(); + PreferenceMetadata allocateConsole(); } diff --git a/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/internal/Messages.java b/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/internal/Messages.java index aff6c3696a6..a49ee8853ac 100644 --- a/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/internal/Messages.java +++ b/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/internal/Messages.java @@ -19,6 +19,7 @@ import org.eclipse.osgi.util.NLS; */ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.cdt.cmake.is.core.internal.messages"; //$NON-NLS-1$ + public static String ParserPreferencesAccess_e_get_preferences; public static String ParserPreferencesMetadata_label_console; public static String ParserPreferencesMetadata_label_suffix; public static String ParserPreferencesMetadata_label_try_suffix; diff --git a/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/internal/ParserPreferences.java b/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/internal/ParserPreferences.java index e2e305b6e47..16784f9c3ed 100644 --- a/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/internal/ParserPreferences.java +++ b/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/internal/ParserPreferences.java @@ -15,17 +15,17 @@ import java.util.Objects; import org.eclipse.cdt.cmake.is.core.IParserPreferences; import org.eclipse.cdt.cmake.is.core.IParserPreferencesMetadata; -import org.eclipse.cdt.core.options.OptionStorage; +import org.eclipse.core.runtime.preferences.IPreferenceMetadataStore; /** * @author weber */ final class ParserPreferences implements IParserPreferences { - private final OptionStorage optionStorage; + private final IPreferenceMetadataStore optionStorage; private final IParserPreferencesMetadata metadata; - public ParserPreferences(OptionStorage optionStorage, IParserPreferencesMetadata metadata) { + public ParserPreferences(IPreferenceMetadataStore optionStorage, IParserPreferencesMetadata metadata) { this.optionStorage = Objects.requireNonNull(optionStorage, "optionStorage"); //$NON-NLS-1$ this.metadata = Objects.requireNonNull(metadata, "metadata"); //$NON-NLS-1$ } diff --git a/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/internal/ParserPreferencesAccess.java b/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/internal/ParserPreferencesAccess.java index 60773d727bd..939736c3931 100644 --- a/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/internal/ParserPreferencesAccess.java +++ b/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/internal/ParserPreferencesAccess.java @@ -11,15 +11,18 @@ package org.eclipse.cdt.cmake.is.core.internal; +import java.util.Optional; + import org.eclipse.cdt.cmake.is.core.IParserPreferences; import org.eclipse.cdt.cmake.is.core.IParserPreferencesAccess; import org.eclipse.cdt.cmake.is.core.IParserPreferencesMetadata; -import org.eclipse.cdt.core.options.OptionStorage; -import org.eclipse.cdt.core.options.OsgiPreferenceStorage; +import org.eclipse.core.runtime.preferences.IEclipsePreferences; +import org.eclipse.core.runtime.preferences.IPreferenceMetadataStore; import org.eclipse.core.runtime.preferences.IScopeContext; import org.eclipse.core.runtime.preferences.InstanceScope; +import org.eclipse.core.runtime.preferences.OsgiPreferenceMetadataStore; +import org.eclipse.osgi.util.NLS; import org.osgi.service.component.annotations.Component; -import org.osgi.service.prefs.Preferences; /** * @author weber @@ -33,8 +36,8 @@ public class ParserPreferencesAccess implements IParserPreferencesAccess { this.metadata = new ParserPreferencesMetadata(); } - private OptionStorage workspaceStorage() { - return new OsgiPreferenceStorage(preferences(InstanceScope.INSTANCE)); + private IPreferenceMetadataStore workspaceStorage() { + return new OsgiPreferenceMetadataStore(preferences(InstanceScope.INSTANCE)); } @Override @@ -47,8 +50,14 @@ public class ParserPreferencesAccess implements IParserPreferencesAccess { return metadata; } - private Preferences preferences(IScopeContext scope) { - return scope.getNode(nodeQualifier()).node(nodePath()); + private IEclipsePreferences preferences(IScopeContext scope) { + return Optional.ofNullable(scope.getNode(nodeQualifier()))// + .map(n -> n.node(nodePath()))// + .filter(IEclipsePreferences.class::isInstance)// + .map(IEclipsePreferences.class::cast)// + .orElseThrow(() -> new IllegalStateException(// + NLS.bind(Messages.ParserPreferencesAccess_e_get_preferences, // + nodeQualifier(), nodePath()))); } private String nodeQualifier() { diff --git a/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/internal/ParserPreferencesMetadata.java b/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/internal/ParserPreferencesMetadata.java index 63d4d6280ae..33649278b4c 100644 --- a/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/internal/ParserPreferencesMetadata.java +++ b/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/internal/ParserPreferencesMetadata.java @@ -12,40 +12,40 @@ package org.eclipse.cdt.cmake.is.core.internal; import org.eclipse.cdt.cmake.is.core.IParserPreferencesMetadata; -import org.eclipse.cdt.core.options.BaseOption; -import org.eclipse.cdt.core.options.OptionMetadata; +import org.eclipse.core.runtime.preferences.PreferenceMetadata; /** * @author weber */ final class ParserPreferencesMetadata implements IParserPreferencesMetadata { - private final OptionMetadata tryVersionSuffixOption; - private final OptionMetadata versionSuffixPatternOption; - private final OptionMetadata allocateConsoleOption; + private final PreferenceMetadata tryVersionSuffixOption; + private final PreferenceMetadata versionSuffixPatternOption; + private final PreferenceMetadata allocateConsoleOption; public ParserPreferencesMetadata() { - this.tryVersionSuffixOption = new BaseOption<>(Boolean.class, "versionSuffixPatternEnabled", false, //$NON-NLS-1$ + this.tryVersionSuffixOption = new PreferenceMetadata<>(Boolean.class, "versionSuffixPatternEnabled", false, //$NON-NLS-1$ Messages.ParserPreferencesMetadata_label_try_suffix, Messages.ParserPreferencesMetadata_ttip_try_suffix); - this.versionSuffixPatternOption = new BaseOption<>(String.class, "versionSuffixPattern", "-?\\d+(\\.\\d+)*", //$NON-NLS-1$ //$NON-NLS-2$ + this.versionSuffixPatternOption = new PreferenceMetadata<>(String.class, "versionSuffixPattern", //$NON-NLS-1$ + "-?\\d+(\\.\\d+)*", //$NON-NLS-1$ Messages.ParserPreferencesMetadata_label_suffix, Messages.ParserPreferencesMetadata_ttip_suffix); - this.allocateConsoleOption = new BaseOption<>(Boolean.class, "allocateConsole", false, //$NON-NLS-1$ + this.allocateConsoleOption = new PreferenceMetadata<>(Boolean.class, "allocateConsole", false, //$NON-NLS-1$ Messages.ParserPreferencesMetadata_label_console); } @Override - public OptionMetadata tryVersionSuffix() { + public PreferenceMetadata tryVersionSuffix() { return tryVersionSuffixOption; } @Override - public OptionMetadata versionSuffixPattern() { + public PreferenceMetadata versionSuffixPattern() { return versionSuffixPatternOption; } @Override - public OptionMetadata allocateConsole() { + public PreferenceMetadata allocateConsole() { return allocateConsoleOption; } } diff --git a/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/internal/messages.properties b/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/internal/messages.properties index e6d267870aa..e19e075194c 100644 --- a/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/internal/messages.properties +++ b/cmake/org.eclipse.cdt.cmake.is.core/src/main/java/org/eclipse/cdt/cmake/is/core/internal/messages.properties @@ -11,6 +11,7 @@ # Contributors: # Martin Weber - initial API and implementation ############################################################################### +ParserPreferencesAccess_e_get_preferences=Unable to get preferences for node: {0}.{1} ParserPreferencesMetadata_label_console=&Show output of compiler built-in detection in a console in the Console View ParserPreferencesMetadata_label_suffix=&Suffix pattern: ParserPreferencesMetadata_label_try_suffix=&Also try with version suffix