com.nokia.carbide.cpp.internal.project.ui.preferences.CarbidePreferencePage.java Source code

Java tutorial

Introduction

Here is the source code for com.nokia.carbide.cpp.internal.project.ui.preferences.CarbidePreferencePage.java

Source

/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description: 
*
*/
package com.nokia.carbide.cpp.internal.project.ui.preferences;

import com.nokia.carbide.cpp.internal.api.project.core.ResourceChangeListener;
import com.nokia.carbide.cpp.internal.project.ui.Messages;
import com.nokia.carbide.cpp.internal.project.ui.ProjectUIHelpIds;
import com.nokia.carbide.cpp.project.ui.utils.ProjectUIUtils;

import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
import org.eclipse.ui.*;

public class CarbidePreferencePage extends PreferencePage implements IWorkbenchPreferencePage {

    private Button keepProjectFilesInSync;

    private Composite addGroup;
    private Button addAskFirst;
    private Button addAlways;
    private Button addNever;

    private Composite deleteGroup;
    private Button deleteAskFirst;
    private Button deleteAlways;
    private Button deleteNever;

    private Button indexBuildOnly;

    private Button indexAll;

    public CarbidePreferencePage() {
        super();
    }

    protected Control createContents(Composite parent) {
        Composite content = new Composite(parent, SWT.NONE);
        content.setLayout(new GridLayout());

        Group inSyncGroup = new Group(content, SWT.NONE);
        inSyncGroup.setLayout(new GridLayout());
        inSyncGroup.setText(Messages.getString("CarbidePreferencePage.ProjectSyncTitle")); //$NON-NLS-1$
        GridDataFactory.fillDefaults().grab(true, false).applyTo(inSyncGroup);

        keepProjectFilesInSync = new Button(inSyncGroup, SWT.CHECK);
        GridDataFactory.defaultsFor(keepProjectFilesInSync).indent(0, 10).applyTo(keepProjectFilesInSync);
        keepProjectFilesInSync.setText(Messages.getString("CarbidePreferencePage.EnableResourceListenerText")); //$NON-NLS-1$
        keepProjectFilesInSync
                .setToolTipText(Messages.getString("CarbidePreferencePage.EnableResourceListenerTooltip")); //$NON-NLS-1$
        keepProjectFilesInSync.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                updateProjectSyncEnabledState();
            }
        });

        addGroup = new Composite(inSyncGroup, SWT.NONE);
        addGroup.setFont(parent.getFont());
        addGroup.setLayout(new GridLayout());
        GridDataFactory.fillDefaults().grab(true, false).applyTo(addGroup);
        addGroup.setToolTipText(Messages.getString("CarbidePreferencePage.AddedFilesToolTip")); //$NON-NLS-1$

        Label addLabel = new Label(addGroup, SWT.NONE);
        addLabel.setText(Messages.getString("CarbidePreferencePage.AddedFilesText")); //$NON-NLS-1$

        addAskFirst = new Button(addGroup, SWT.RADIO);
        addAskFirst.setText(Messages.getString("CarbidePreferencePage.AskFirstText")); //$NON-NLS-1$
        addAskFirst.setToolTipText(Messages.getString("CarbidePreferencePage.AskFirstToolTip")); //$NON-NLS-1$
        GridDataFactory.defaultsFor(addAskFirst).indent(10, 0).applyTo(addAskFirst);

        addAlways = new Button(addGroup, SWT.RADIO);
        addAlways.setText(Messages.getString("CarbidePreferencePage.AlwaysText")); //$NON-NLS-1$
        addAlways.setToolTipText(Messages.getString("CarbidePreferencePage.AlwaysToolTip")); //$NON-NLS-1$
        GridDataFactory.defaultsFor(addAlways).indent(10, 0).applyTo(addAlways);

        addNever = new Button(addGroup, SWT.RADIO);
        addNever.setText(Messages.getString("CarbidePreferencePage.NeverText")); //$NON-NLS-1$
        addNever.setToolTipText(Messages.getString("CarbidePreferencePage.NeverToolTip")); //$NON-NLS-1$
        GridDataFactory.defaultsFor(addNever).indent(10, 0).applyTo(addNever);

        deleteGroup = new Composite(inSyncGroup, SWT.NONE);
        deleteGroup.setLayout(new GridLayout());
        GridDataFactory.fillDefaults().grab(true, false).applyTo(deleteGroup);
        deleteGroup.setFont(parent.getFont());
        deleteGroup.setToolTipText(Messages.getString("CarbidePreferencePage.ChangedFilesToolTip")); //$NON-NLS-1$

        Label deleteLabel = new Label(deleteGroup, SWT.NONE);
        deleteLabel.setText(Messages.getString("CarbidePreferencePage.ChangedFilesText")); //$NON-NLS-1$

        deleteAskFirst = new Button(deleteGroup, SWT.RADIO);
        deleteAskFirst.setText(Messages.getString("CarbidePreferencePage.AskFirstText")); //$NON-NLS-1$
        deleteAskFirst.setToolTipText(Messages.getString("CarbidePreferencePage.AskFirstToolTip")); //$NON-NLS-1$
        GridDataFactory.defaultsFor(deleteAskFirst).indent(10, 0).applyTo(deleteAskFirst);

        deleteAlways = new Button(deleteGroup, SWT.RADIO);
        deleteAlways.setText(Messages.getString("CarbidePreferencePage.AlwaysText")); //$NON-NLS-1$
        deleteAlways.setToolTipText(Messages.getString("CarbidePreferencePage.AlwaysToolTip")); //$NON-NLS-1$
        GridDataFactory.defaultsFor(deleteAlways).indent(10, 0).applyTo(deleteAlways);

        deleteNever = new Button(deleteGroup, SWT.RADIO);
        deleteNever.setText(Messages.getString("CarbidePreferencePage.NeverText")); //$NON-NLS-1$
        deleteNever.setToolTipText(Messages.getString("CarbidePreferencePage.NeverToolTip")); //$NON-NLS-1$
        GridDataFactory.defaultsFor(deleteNever).indent(10, 0).applyTo(deleteNever);

        boolean keepInSync = ProjectUIUtils.keepProjectsInSync();
        int addOption = ProjectUIUtils.getAddFilesToProjectOption();
        int deleteOption = ProjectUIUtils.getChangedFilesInProjectOption();
        setUpdateFilesOptions(keepInSync, addOption, deleteOption);
        updateProjectSyncEnabledState();

        Group indexGroup = new Group(content, SWT.NONE);
        GridLayoutFactory.swtDefaults().margins(10, 10).applyTo(indexGroup);
        indexGroup.setText(Messages.getString("CarbidePreferencePage.IndexingTitle")); //$NON-NLS-1$
        GridDataFactory.fillDefaults().grab(true, false).applyTo(indexGroup);

        indexBuildOnly = new Button(indexGroup, SWT.RADIO);
        indexBuildOnly.setText(Messages.getString("CarbidePreferencePage.IndexOnlyBuildLabel")); //$NON-NLS-1$
        indexBuildOnly.setToolTipText(Messages.getString("CarbidePreferencePage.IndexOnlyBuildTooltip")); //$NON-NLS-1$
        GridDataFactory.defaultsFor(indexBuildOnly).applyTo(indexBuildOnly);

        indexAll = new Button(indexGroup, SWT.RADIO);
        indexAll.setText(Messages.getString("CarbidePreferencePage.IndexAllLabel")); //$NON-NLS-1$
        indexAll.setToolTipText(Messages.getString("CarbidePreferencePage.IndexAllToolTip")); //$NON-NLS-1$
        GridDataFactory.defaultsFor(indexAll).applyTo(indexAll);

        boolean indexAllOption = ProjectUIUtils.getIndexAllOption();
        indexBuildOnly.setSelection(!indexAllOption);
        indexAll.setSelection(indexAllOption);

        PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, ProjectUIHelpIds.CARBIDE_PREFS_PAGE);

        return content;
    }

    private void updateProjectSyncEnabledState() {
        boolean enabled = keepProjectFilesInSync.getSelection();
        addGroup.setEnabled(enabled);
        addAskFirst.setEnabled(enabled);
        addAlways.setEnabled(enabled);
        addNever.setEnabled(enabled);
        deleteGroup.setEnabled(enabled);
        deleteAskFirst.setEnabled(enabled);
        deleteAlways.setEnabled(enabled);
        deleteNever.setEnabled(enabled);
    }

    public void init(IWorkbench workbench) {
    }

    @Override
    protected void performDefaults() {
        setUpdateFilesOptions(true, 0, 0);
        updateProjectSyncEnabledState();
        indexBuildOnly.setSelection(true);
        indexAll.setSelection(false);
        super.performDefaults();
    }

    private void setUpdateFilesOptions(boolean keepInSync, int addOptions, int deleteOptions) {
        keepProjectFilesInSync.setSelection(keepInSync);
        addAskFirst.setSelection(ResourceChangeListener.UPDATE_FILES_OPTION_ASK == addOptions);
        addAlways.setSelection(ResourceChangeListener.UPDATE_FILES_OPTION_ALWAYS == addOptions);
        addNever.setSelection(ResourceChangeListener.UPDATE_FILES_OPTION_NEVER == addOptions);
        deleteAskFirst.setSelection(ResourceChangeListener.UPDATE_FILES_OPTION_ASK == deleteOptions);
        deleteAlways.setSelection(ResourceChangeListener.UPDATE_FILES_OPTION_ALWAYS == deleteOptions);
        deleteNever.setSelection(ResourceChangeListener.UPDATE_FILES_OPTION_NEVER == deleteOptions);
    }

    public boolean performOk() {
        ProjectUIUtils.setKeepProjectsInSync(keepProjectFilesInSync.getSelection());

        if (addAskFirst.getSelection()) {
            ProjectUIUtils.setAddFilesToProjectOption(ResourceChangeListener.UPDATE_FILES_OPTION_ASK);
        } else if (addAlways.getSelection()) {
            ProjectUIUtils.setAddFilesToProjectOption(ResourceChangeListener.UPDATE_FILES_OPTION_ALWAYS);
        } else {
            ProjectUIUtils.setAddFilesToProjectOption(ResourceChangeListener.UPDATE_FILES_OPTION_NEVER);
        }

        if (deleteAskFirst.getSelection()) {
            ProjectUIUtils.setChangedFilesInProjectOption(ResourceChangeListener.UPDATE_FILES_OPTION_ASK);
        } else if (deleteAlways.getSelection()) {
            ProjectUIUtils.setChangedFilesInProjectOption(ResourceChangeListener.UPDATE_FILES_OPTION_ALWAYS);
        } else {
            ProjectUIUtils.setChangedFilesInProjectOption(ResourceChangeListener.UPDATE_FILES_OPTION_NEVER);
        }

        ProjectUIUtils.setIndexAllOption(indexAll.getSelection());

        return super.performOk();
    }

}