it.unibz.instasearch.prefs.PreferenceInitializer.java Source code

Java tutorial

Introduction

Here is the source code for it.unibz.instasearch.prefs.PreferenceInitializer.java

Source

/*
 * Copyright (c) 2009 Andrejs Jermakovics.
 * 
 * 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:
 *     Andrejs Jermakovics - initial implementation
 */
package it.unibz.instasearch.prefs;

import it.unibz.instasearch.InstaSearchPlugin;

import java.util.Arrays;
import java.util.TreeSet;

import org.apache.commons.lang.StringUtils;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.content.IContentType;
import org.eclipse.core.runtime.content.IContentTypeManager;
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.ui.IFileEditorMapping;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.registry.EditorRegistry;

/**
 * Class used to initialize default preference values.
 */
@SuppressWarnings("restriction")
public class PreferenceInitializer extends AbstractPreferenceInitializer {

    private static final String DEFAULT_EXTENSIONS = "java,xml,xsd,txt,jsp,css,c,cpp,h,hpp,mf,properties,php,php4,php5,js,inc,ini,sql,sqlj,pl,sh,bat,cmd,htm,html";

    /**
     * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
     */
    public void initializeDefaultPreferences() {
        IPreferenceStore store = InstaSearchPlugin.getDefault().getPreferenceStore();
        store.setDefault(PreferenceConstants.P_CHECK_UPDATES, true);
        store.setDefault(PreferenceConstants.P_SHOW_MATCH_COUNT, true);
        store.setDefault(PreferenceConstants.P_INDEX_ARCHIVES, false);
        store.setDefault(PreferenceConstants.P_INDEX_EMPTY_EXTENSION, false);
        store.setDefault(PreferenceConstants.P_FUZZY_SEARCH_AUTO, true);
        store.setDefault(PreferenceConstants.P_SHOW_FULL_PATH, true);
        store.setDefault(PreferenceConstants.P_DIALOG_ON_SHORTCUT, false);
        store.setDefault(PreferenceConstants.P_INCREMENTAL_SEARCH, true);

        store.setDefault(PreferenceConstants.P_SHOWN_FILES_COUNT, 25);
        store.setDefault(PreferenceConstants.P_SHOWN_LINES_COUNT, 4);

        store.setDefault(PreferenceConstants.P_UPDATE_CHECK_DELAY, 10000);
        store.setDefault(PreferenceConstants.P_TYPING_SEARCH_DELAY, 200);
        store.setDefault(PreferenceConstants.P_INDEX_UPDATE_INTERVAL, 60000);
        store.setDefault(PreferenceConstants.P_INDEX_UPDATE_ENABLED, true);

        String extensions = getIndexableExtensions();
        store.setDefault(PreferenceConstants.P_INDEXABLE_EXTENSIONS, extensions);
        store.setDefault(PreferenceConstants.P_SEARCH_EXTENSIONS, "");
        store.setDefault(PreferenceConstants.P_EXCLUDE_DIRS, "");
    }

    /**
     * Get extensions that Eclipse knows of and the default ones
     * @return comma separated string of extensions
     */
    public static String getIndexableExtensions() {
        String defaultExtArray[] = DEFAULT_EXTENSIONS.split(",");

        TreeSet<String> extensions = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
        extensions.addAll(Arrays.asList(defaultExtArray));

        IFileEditorMapping[] allMappings = ((EditorRegistry) PlatformUI.getWorkbench().getEditorRegistry())
                .getUnifiedMappings();

        IContentType text = Platform.getContentTypeManager().getContentType(IContentTypeManager.CT_TEXT);

        for (int i = 0; i < allMappings.length; i++) {
            if (allMappings[i].getName().equals("*")) {
                String ext = allMappings[i].getExtension();
                IContentType type = Platform.getContentTypeManager().findContentTypeFor("." + ext);

                if (type != null && type.isKindOf(text))
                    extensions.add(ext);
            }
        }

        IContentType[] types = Platform.getContentTypeManager().getAllContentTypes();
        for (IContentType type : types) {
            if (type.isKindOf(text)) {
                String exts[] = type.getFileSpecs(IContentType.FILE_EXTENSION_SPEC);
                extensions.addAll(Arrays.asList(exts));
            }
        }

        return StringUtils.join(extensions.toArray(), ",");
    }

}