/*
* 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.runtime.ui.preferences;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
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.osgi.service.prefs.BackingStoreException;
import org.teiid.core.designer.util.I18nUtil;
import org.teiid.designer.runtime.DqpPlugin;
import org.teiid.designer.runtime.PreferenceConstants;
import org.teiid.designer.runtime.ui.DqpUiConstants;
import org.teiid.designer.ui.common.util.WidgetFactory;
import org.teiid.designer.ui.preferences.IGeneralPreferencePageContributor;
/**
* The <code>AutoCreateDataSourcePreferenceContributor</code> is the UI that manages the preference that controls if a data source
* is automatically created on the current Teiid Instance if the name of the data source matches the default name.
*
* @since 8.0
*/
public class AutoCreateDataSourcePreferenceContributor implements IGeneralPreferencePageContributor, DqpUiConstants {
/**
* The i18n key prefix.
*/
private static final String PREFIX = I18nUtil.getPropertyPrefix(AutoCreateDataSourcePreferenceContributor.class);
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 UTIL.getStringOrKey(PREFIX + "name"); //$NON-NLS-1$
}
/**
* Obtains the <code>IEclipsePreferences</code> where this preference is being persisted.
*
* @return the preferences
*/
private IEclipsePreferences getPreferences() {
return DqpPlugin.getInstance().getPreferences();
}
/**
* {@inheritDoc}
*
* @see org.teiid.designer.ui.preferences.IGeneralPreferencePageContributor#getToolTip()
*/
@Override
public String getToolTip() {
return 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(PreferenceConstants.AUTO_CREATE_DATA_SOURCE_DEFAULT);
// save
try {
getPreferences().flush();
return true;
} catch (BackingStoreException e) {
return false;
}
}
/**
* {@inheritDoc}
*
* @see org.teiid.designer.ui.preferences.IGeneralPreferencePageContributor#performOk()
*/
@Override
public boolean performOk() {
IEclipsePreferences prefs = getPreferences();
prefs.putBoolean(PreferenceConstants.AUTO_CREATE_DATA_SOURCE, this.chkEnabled.getSelection());
// save
try {
prefs.flush();
return true;
} catch (BackingStoreException e) {
return false;
}
}
/**
* {@inheritDoc}
*
* @see org.teiid.designer.ui.preferences.IGeneralPreferencePageContributor#refresh()
*/
@Override
public void refresh() {
IEclipsePreferences prefs = getPreferences();
boolean enable = prefs.getBoolean(PreferenceConstants.AUTO_CREATE_DATA_SOURCE,
PreferenceConstants.AUTO_CREATE_DATA_SOURCE_DEFAULT);
this.chkEnabled.setSelection(enable);
}
/**
* {@inheritDoc}
*
* @see org.teiid.designer.ui.preferences.IGeneralPreferencePageContributor#setWorkbench(org.eclipse.ui.IWorkbench)
*/
@Override
public void setWorkbench( IWorkbench theWorkbench ) {
// nothing to do
}
}