blob: 6690e1144c6b247f864b82acea01918551d09208 [file] [log] [blame]
/**
* <copyright>
*
* Copyright (c) 2011 See4sys 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:
* See4sys - Initial API and implementation
*
* </copyright>
*/
package org.eclipse.sphinx.xtendxpand.ui.preferences;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ProjectScope;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.sphinx.platform.ui.preferences.AbstractPreferenceAndPropertyPage;
import org.eclipse.sphinx.xtendxpand.preferences.OutletsPreference;
import org.eclipse.sphinx.xtendxpand.ui.groups.OutletsGroup;
import org.eclipse.sphinx.xtendxpand.ui.groups.ProtectedRegionGroup;
import org.eclipse.sphinx.xtendxpand.ui.internal.messages.Messages;
import org.eclipse.sphinx.xtendxpand.ui.outlet.providers.OutletProvider;
import org.eclipse.sphinx.xtendxpand.util.XtendXpandUtil;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.preferences.ScopedPreferenceStore;
public abstract class AbstractOutletsPreferencePage extends AbstractPreferenceAndPropertyPage {
private OutletsGroup outletsGroup;
private ProtectedRegionGroup protectedRegionGroup;
private TableViewer tableViewer;
private OutletProvider outletProvider;
public AbstractOutletsPreferencePage() {
super(XtendXpandUtil.XTEND_XPAND_NATURE_ID, GRID);
}
public AbstractOutletsPreferencePage(String requiredProjectNatureId, int style) {
super(requiredProjectNatureId, style);
}
protected OutletsPreference getOutletsPreference() {
return OutletsPreference.INSTANCE;
}
@Override
protected IPreferenceStore doGetPreferenceStore() {
if (isProjectPreferencePage()) {
ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(new ProjectScope((IProject) getElement()), getOutletsPreference()
.getQualifier());
return scopedPreferenceStore;
}
return null;
}
@Override
protected void addFields(Composite parent) {
addOutletsGroup(parent);
addProtectedRegionGroup(parent);
}
protected void addOutletsGroup(Composite parent) {
outletProvider = new OutletProvider((IProject) getElement(), getOutletsPreference());
outletsGroup = new OutletsGroup(Messages.label_outletsGroupName, outletProvider);
outletsGroup.createContent(parent, 2);
tableViewer = outletsGroup.getTableViewer();
Dialog.applyDialogFont(parent);
}
protected void addProtectedRegionGroup(Composite parent) {
protectedRegionGroup = new ProtectedRegionGroup(Messages.label_protectedRegionGroupName, (IProject) getElement());
protectedRegionGroup.createContent(parent, 3);
}
@Override
protected void enablePreferenceContent(boolean useProjectSpecificSettings) {
if (outletsGroup != null) {
outletsGroup.setEnabled(useProjectSpecificSettings);
}
}
@Override
protected void performDefaults() {
outletsGroup.setToDefault();
protectedRegionGroup.setToDefault();
tableViewer.refresh();
super.performDefaults();
}
@Override
public boolean performOk() {
outletsGroup.store();
protectedRegionGroup.store();
return super.performOk();
}
@Override
public void dispose() {
outletsGroup.dispose();
protectedRegionGroup.dispose();
super.dispose();
}
@Override
protected void adjustGridLayout() {
super.adjustGridLayout();
if (((GridLayout) getFieldEditorParent().getLayout()).numColumns == 0) {
((GridLayout) getFieldEditorParent().getLayout()).numColumns = 1;
}
}
}