///******************************************************************************* // * Copyright (c) 2006 Wind River Systems 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: // * Markus Schorn - initial API and implementation // *******************************************************************************/ // //package org.eclipse.search2.internal.ui.text2; // //import java.util.ArrayList; // //import org.eclipse.core.runtime.IConfigurationElement; //import org.eclipse.core.runtime.Platform; //import org.eclipse.core.runtime.Preferences; // //import org.eclipse.jface.util.SafeRunnable; // //import org.eclipse.search.ui.text.TextSearchQueryProvider; // //import org.eclipse.search.internal.ui.SearchPlugin; //import org.eclipse.search.internal.ui.SearchPreferencePage; // //import org.eclipse.search2.internal.ui.SearchMessages; // //public class TextSearchQueryProviderRegistry { // // private static final String EXTENSION_POINT_ID= "org.eclipse.search.textSearchQueryProvider"; //$NON-NLS-1$ // private static final String PROVIDER_NODE_NAME= "textSearchQueryProvider"; //$NON-NLS-1$ // private static final String ATTRIB_ID= "id"; //$NON-NLS-1$ // private static final String ATTRIB_LABEL= "label"; //$NON-NLS-1$ // private static final String ATTRIB_CLASS= "class"; //$NON-NLS-1$ // // private TextSearchQueryProvider fPreferredProvider; // private String fPreferredProviderId; // // public TextSearchQueryProviderRegistry() { // fPreferredProviderId= null; // only null when not initialized // fPreferredProvider= null; // } // // public TextSearchQueryProvider getPreferred() { // String preferredId= getPreferredEngineID(); // if (!preferredId.equals(fPreferredProviderId)) { // updateProvider(preferredId); // } // return fPreferredProvider; // } // // private void updateProvider(String preferredId) { // fPreferredProviderId= preferredId; // fPreferredProvider= null; // if (preferredId.length() != 0) { // empty string: default engine // fPreferredProvider= createFromExtension(preferredId); // } // if (fPreferredProvider == null) { // fPreferredProvider= new DefaultTextSearchQueryProvider(); // } // } // // private String getPreferredEngineID() { // Preferences prefs= SearchPlugin.getDefault().getPluginPreferences(); // String preferedEngine= prefs.getString(SearchPreferencePage.TEXT_SEARCH_QUERY_PROVIDER); // return preferedEngine; // } // //// private void setPreferredEngineID(String id) { //// Preferences prefs= SearchPlugin.getDefault().getPluginPreferences(); //// prefs.setValue(SearchPreferencePage.TEXT_SEARCH_QUERY_PROVIDER, id); //// } // // private TextSearchQueryProvider createFromExtension(final String id) { // final TextSearchQueryProvider[] res= new TextSearchQueryProvider[] { null }; // // SafeRunnable safe= new SafeRunnable() { // public void run() throws Exception { // IConfigurationElement[] extensions= Platform.getExtensionRegistry().getConfigurationElementsFor(EXTENSION_POINT_ID); // for (int i= 0; i < extensions.length; i++) { // IConfigurationElement curr= extensions[i]; // if (PROVIDER_NODE_NAME.equals(curr.getName()) && id.equals(curr.getAttribute(ATTRIB_ID))) { // res[0]= (TextSearchQueryProvider) curr.createExecutableExtension(ATTRIB_CLASS); // return; // } // } // } // public void handleException(Throwable e) { // SearchPlugin.log(e); // } // }; // SafeRunnable.run(safe); // return res[0]; // } // // public String[][] getAvailableProviders() { // ArrayList res= new ArrayList(); // res.add(new String[] { SearchMessages.TextSearchQueryProviderRegistry_defaultProviderLabel, "" }); //$NON-NLS-1$ // // IConfigurationElement[] extensions= Platform.getExtensionRegistry().getConfigurationElementsFor(EXTENSION_POINT_ID); // for (int i= 0; i < extensions.length; i++) { // IConfigurationElement engine= extensions[i]; // if (PROVIDER_NODE_NAME.equals(engine.getName())) { // res.add(new String[] { engine.getAttribute(ATTRIB_LABEL), engine.getAttribute(ATTRIB_ID) }); // } // } // return (String[][]) res.toArray(new String[res.size()][]); // } //}