com.synflow.cx.ui.Initializer.java Source code

Java tutorial

Introduction

Here is the source code for com.synflow.cx.ui.Initializer.java

Source

/*******************************************************************************
 * Copyright (c) 2012-2013 Synflow SAS.
 * 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:
 *    Matthieu Wipliez - initial API and implementation and/or initial documentation
 *******************************************************************************/
package com.synflow.cx.ui;

import static com.synflow.core.ISynflowConstants.FOLDER_IR;
import static org.eclipse.xtext.builder.EclipseOutputConfigurationProvider.OUTPUT_CLEANUP_DERIVED;
import static org.eclipse.xtext.builder.EclipseOutputConfigurationProvider.OUTPUT_CLEAN_DIRECTORY;
import static org.eclipse.xtext.builder.EclipseOutputConfigurationProvider.OUTPUT_CREATE_DIRECTORY;
import static org.eclipse.xtext.builder.EclipseOutputConfigurationProvider.OUTPUT_DERIVED;
import static org.eclipse.xtext.builder.EclipseOutputConfigurationProvider.OUTPUT_DESCRIPTION;
import static org.eclipse.xtext.builder.EclipseOutputConfigurationProvider.OUTPUT_DIRECTORY;
import static org.eclipse.xtext.builder.EclipseOutputConfigurationProvider.OUTPUT_NAME;
import static org.eclipse.xtext.builder.EclipseOutputConfigurationProvider.OUTPUT_OVERRIDE;
import static org.eclipse.xtext.builder.EclipseOutputConfigurationProvider.OUTPUT_PREFERENCE_TAG;
import static org.eclipse.xtext.ui.editor.occurrences.MarkOccurrenceActionContributor.EDITOR_MARK_OCCURRENCES;

import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.xtext.generator.OutputConfiguration;
import org.eclipse.xtext.generator.OutputConfigurationProvider;
import org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreAccess;
import org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer;
import org.eclipse.xtext.ui.editor.preferences.PreferenceConstants;

import com.google.inject.Inject;

/**
 * This class providers an initializer for the Builder Preference Access that
 * sets default output directory to ".ir" instead of "./src-gen".
 * 
 * @author Matthieu Wipliez
 * 
 */
public class Initializer implements IPreferenceStoreInitializer {

    private OutputConfigurationProvider outputConfigurationProvider;

    private String getKey(OutputConfiguration outputConfiguration, String preferenceName) {
        return OUTPUT_PREFERENCE_TAG + PreferenceConstants.SEPARATOR + outputConfiguration.getName()
                + PreferenceConstants.SEPARATOR + preferenceName;
    }

    public OutputConfigurationProvider getOutputConfigurationProvider() {
        return outputConfigurationProvider;
    }

    @Override
    public void initialize(IPreferenceStoreAccess preferenceStoreAccess) {
        IPreferenceStore store = preferenceStoreAccess.getWritablePreferenceStore();
        intializeBuilderPreferences(store);
        initializeOutputPreferences(store);

        preferenceStoreAccess.getWritablePreferenceStore().setDefault(EDITOR_MARK_OCCURRENCES, true);
    }

    private void initializeOutputPreferences(IPreferenceStore store) {
        for (OutputConfiguration configuration : getOutputConfigurationProvider().getOutputConfigurations()) {
            store.setDefault(getKey(configuration, OUTPUT_NAME), configuration.getName());
            store.setDefault(getKey(configuration, OUTPUT_DESCRIPTION), configuration.getDescription());
            store.setDefault(getKey(configuration, OUTPUT_DERIVED), configuration.isSetDerivedProperty());

            store.setDefault(getKey(configuration, OUTPUT_DIRECTORY), FOLDER_IR);

            store.setDefault(getKey(configuration, OUTPUT_CREATE_DIRECTORY),
                    configuration.isCreateOutputDirectory());
            store.setDefault(getKey(configuration, OUTPUT_CLEAN_DIRECTORY),
                    configuration.isCanClearOutputDirectory());
            store.setDefault(getKey(configuration, OUTPUT_OVERRIDE), configuration.isOverrideExistingResources());
            store.setDefault(getKey(configuration, OUTPUT_CLEANUP_DERIVED),
                    configuration.isCleanUpDerivedResources());
        }
    }

    private void intializeBuilderPreferences(IPreferenceStore store) {
        store.setDefault("autobuilding", true);
    }

    @Inject
    public void setOutputConfigurationProvider(OutputConfigurationProvider outputConfigurationProvider) {
        this.outputConfigurationProvider = outputConfigurationProvider;
    }

}