/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.roles.ui.preferences;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.jface.dialogs.MessageDialogWithToggle;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IWorkbench;
import org.teiid.core.designer.util.I18nUtil;
import org.teiid.designer.roles.ui.RolesUiPlugin;
import org.teiid.designer.ui.PluginConstants;
import org.teiid.designer.ui.UiConstants;
import org.teiid.designer.ui.UiPlugin;
import org.teiid.designer.ui.common.util.WidgetFactory;
import org.teiid.designer.ui.preferences.IGeneralPreferencePageContributor;
/**
*
*/
public class AutoWillToggleChildrenPreferenceContributor implements
IGeneralPreferencePageContributor, UiConstants {
// /////////////////////////////////////////////////////////////////////////////////////////////
// CONSTANTS
// /////////////////////////////////////////////////////////////////////////////////////////////
private static final String PREF_ID = PluginConstants.Prefs.General.AUTO_WILL_TOGGLE_WITH_CHILDREN;
private static final String PREFIX = I18nUtil
.getPropertyPrefix(AutoWillToggleChildrenPreferenceContributor.class);
// /////////////////////////////////////////////////////////////////////////////////////////////
// FIELDS
// /////////////////////////////////////////////////////////////////////////////////////////////
private Button chkEnabled;
/**
* {@inheritDoc}
*
* @see org.teiid.designer.ui.preferences.IGeneralPreferencePageContributor#createPreferenceEditor(org.eclipse.swt.widgets.Composite)
*/
@Override
public void createPreferenceEditor( Composite theParent ) {
Composite pnl = new Composite(theParent, SWT.NONE);
pnl.setLayout(new GridLayout());
pnl.setLayoutData(new GridData());
this.chkEnabled = WidgetFactory.createCheckBox(pnl, getName());
this.chkEnabled.setLayoutData(new GridData());
this.chkEnabled.setToolTipText(getToolTip());
// initialize state
refresh();
}
/**
* {@inheritDoc}
*
* @see org.teiid.designer.ui.preferences.IGeneralPreferencePageContributor#getName()
*/
@Override
public String getName() {
return RolesUiPlugin.UTIL.getStringOrKey(PREFIX + "name"); //$NON-NLS-1$
}
/**
* Obtains the <code>IPreferenceStore</code> where this preference is being persisted.
* @return the preference store
* @since 5.0
*/
private IPreferenceStore getPreferenceStore() {
return UiPlugin.getDefault().getPreferenceStore();
}
/**
* {@inheritDoc}
*
* @see org.teiid.designer.ui.preferences.IGeneralPreferencePageContributor#getToolTip()
*/
@Override
public String getToolTip() {
return RolesUiPlugin.UTIL.getStringOrKey(PREFIX + "toolTip"); //$NON-NLS-1$
}
/**
* {@inheritDoc}
*
* @see org.teiid.designer.ui.preferences.IGeneralPreferencePageContributor#performCancel()
*/
@Override
public boolean performCancel() {
return true;
}
/**
* {@inheritDoc}
*
* @see org.teiid.designer.ui.preferences.IGeneralPreferencePageContributor#performDefaults()
*/
@Override
public boolean performDefaults() {
this.chkEnabled.setSelection(getPreferenceStoreValue(true));
return true;
}
/**
* {@inheritDoc}
*
* @see org.teiid.designer.ui.preferences.IGeneralPreferencePageContributor#performOk()
*/
@Override
public boolean performOk() {
String value = MessageDialogWithToggle.NEVER;
if (this.chkEnabled.getSelection()) {
value = MessageDialogWithToggle.ALWAYS;
}
getPreferenceStore().setValue(PREF_ID, value);
return true;
}
/**
* {@inheritDoc}
*
* @see org.teiid.designer.ui.preferences.IGeneralPreferencePageContributor#refresh()
*/
@Override
public void refresh() {
this.chkEnabled.setSelection(getPreferenceStoreValue(false));
}
/**
* {@inheritDoc}
*
* @see org.teiid.designer.ui.preferences.IGeneralPreferencePageContributor#setWorkbench(org.eclipse.ui.IWorkbench)
*/
@Override
public void setWorkbench( IWorkbench theWorkbench ) {
// nothing to do
}
/**
* Obtains the {@link IPreferenceStore}'s default or current value for this preference
* @param theDefaultFlag the flag indicating if the default or current value is being requested
* @return the value
* @since 5.0
*/
private boolean getPreferenceStoreValue(boolean theDefaultFlag) {
boolean result = false;
IPreferenceStore prefStore = getPreferenceStore();
String value = null;
if (theDefaultFlag) {
value = prefStore.getDefaultString(PREF_ID);
} else {
value = prefStore.getString(PREF_ID);
}
if (value.equals(MessageDialogWithToggle.ALWAYS)) {
result = true;
}
return result;
}
}