/*
* Copyright (c) 2004-2011 Marco Maccaferri 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:
* Marco Maccaferri - initial API and implementation
*/
package org.eclipsetrader.ui.internal.preferences;
import org.eclipse.jface.preference.ColorSelector;
import org.eclipse.jface.preference.IPreferenceStore;
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.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.themes.ITheme;
import org.eclipse.ui.themes.IThemeManager;
import org.eclipsetrader.ui.internal.UIActivator;
public class WatchListPreferencesPage extends PreferencePage implements IWorkbenchPreferencePage {
private Button alternateBackground;
private Button enableTickDecorator;
private ColorSelector positiveTickColor;
private ColorSelector negativeTickColor;
private Button drawTickOutline;
private Button fadeToBackground;
private ITheme theme;
public WatchListPreferencesPage() {
}
/* (non-Javadoc)
* @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
*/
@Override
public void init(IWorkbench workbench) {
setPreferenceStore(UIActivator.getDefault().getPreferenceStore());
IThemeManager themeManager = PlatformUI.getWorkbench().getThemeManager();
theme = themeManager.getCurrentTheme();
}
/* (non-Javadoc)
* @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
*/
@Override
protected Control createContents(Composite parent) {
Composite content = new Composite(parent, SWT.NONE);
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 2;
gridLayout.marginWidth = gridLayout.marginHeight = 0;
content.setLayout(gridLayout);
alternateBackground = new Button(content, SWT.CHECK);
alternateBackground.setText("Alternate rows background");
alternateBackground.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false, 2, 1));
enableTickDecorator = new Button(content, SWT.CHECK);
enableTickDecorator.setText("Enable highlights");
enableTickDecorator.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false, 2, 1));
enableTickDecorator.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
updateControlsEnablement();
}
});
Label label = new Label(content, SWT.NONE);
label.setText("Positive highlight");
label.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
((GridData) label.getLayoutData()).horizontalIndent = convertHorizontalDLUsToPixels(18);
positiveTickColor = new ColorSelector(content);
label = new Label(content, SWT.NONE);
label.setText("Negative highlight");
label.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
((GridData) label.getLayoutData()).horizontalIndent = convertHorizontalDLUsToPixels(18);
negativeTickColor = new ColorSelector(content);
drawTickOutline = new Button(content, SWT.CHECK);
drawTickOutline.setText("Highlight outline");
drawTickOutline.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false, 2, 1));
((GridData) drawTickOutline.getLayoutData()).horizontalIndent = convertHorizontalDLUsToPixels(18);
fadeToBackground = new Button(content, SWT.CHECK);
fadeToBackground.setText("Fade to background");
fadeToBackground.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false, 2, 1));
((GridData) fadeToBackground.getLayoutData()).horizontalIndent = convertHorizontalDLUsToPixels(18);
IPreferenceStore preferenceStore = getPreferenceStore();
alternateBackground.setSelection(preferenceStore.getBoolean(UIActivator.PREFS_WATCHLIST_ALTERNATE_BACKGROUND));
enableTickDecorator.setSelection(preferenceStore.getBoolean(UIActivator.PREFS_WATCHLIST_ENABLE_TICK_DECORATORS));
positiveTickColor.setColorValue(theme.getColorRegistry().getRGB(UIActivator.PREFS_WATCHLIST_POSITIVE_TICK_COLOR));
negativeTickColor.setColorValue(theme.getColorRegistry().getRGB(UIActivator.PREFS_WATCHLIST_NEGATIVE_TICK_COLOR));
drawTickOutline.setSelection(preferenceStore.getBoolean(UIActivator.PREFS_WATCHLIST_DRAW_TICK_OUTLINE));
fadeToBackground.setSelection(preferenceStore.getBoolean(UIActivator.PREFS_WATCHLIST_FADE_TO_BACKGROUND));
updateControlsEnablement();
return content;
}
private void updateControlsEnablement() {
positiveTickColor.setEnabled(enableTickDecorator.getSelection());
negativeTickColor.setEnabled(enableTickDecorator.getSelection());
drawTickOutline.setEnabled(enableTickDecorator.getSelection());
fadeToBackground.setEnabled(enableTickDecorator.getSelection());
}
/* (non-Javadoc)
* @see org.eclipse.jface.preference.PreferencePage#performDefaults()
*/
@Override
protected void performDefaults() {
IPreferenceStore preferenceStore = getPreferenceStore();
ITheme theme = getTheme();
alternateBackground.setSelection(preferenceStore.getDefaultBoolean(UIActivator.PREFS_WATCHLIST_ALTERNATE_BACKGROUND));
enableTickDecorator.setSelection(preferenceStore.getDefaultBoolean(UIActivator.PREFS_WATCHLIST_ENABLE_TICK_DECORATORS));
drawTickOutline.setSelection(preferenceStore.getDefaultBoolean(UIActivator.PREFS_WATCHLIST_DRAW_TICK_OUTLINE));
fadeToBackground.setSelection(preferenceStore.getDefaultBoolean(UIActivator.PREFS_WATCHLIST_FADE_TO_BACKGROUND));
positiveTickColor.setColorValue(theme.getColorRegistry().getRGB(UIActivator.PREFS_WATCHLIST_POSITIVE_TICK_COLOR));
negativeTickColor.setColorValue(theme.getColorRegistry().getRGB(UIActivator.PREFS_WATCHLIST_NEGATIVE_TICK_COLOR));
updateControlsEnablement();
super.performDefaults();
}
/* (non-Javadoc)
* @see org.eclipse.jface.preference.PreferencePage#performOk()
*/
@Override
public boolean performOk() {
performApply();
return super.performOk();
}
/* (non-Javadoc)
* @see org.eclipse.jface.preference.PreferencePage#performApply()
*/
@Override
protected void performApply() {
IPreferenceStore preferenceStore = getPreferenceStore();
ITheme theme = getTheme();
preferenceStore.setValue(UIActivator.PREFS_WATCHLIST_ALTERNATE_BACKGROUND, alternateBackground.getSelection());
preferenceStore.setValue(UIActivator.PREFS_WATCHLIST_ENABLE_TICK_DECORATORS, enableTickDecorator.getSelection());
preferenceStore.setValue(UIActivator.PREFS_WATCHLIST_DRAW_TICK_OUTLINE, drawTickOutline.getSelection());
preferenceStore.setValue(UIActivator.PREFS_WATCHLIST_FADE_TO_BACKGROUND, fadeToBackground.getSelection());
theme.getColorRegistry().put(UIActivator.PREFS_WATCHLIST_POSITIVE_TICK_COLOR, positiveTickColor.getColorValue());
theme.getColorRegistry().put(UIActivator.PREFS_WATCHLIST_NEGATIVE_TICK_COLOR, negativeTickColor.getColorValue());
}
public ITheme getTheme() {
return theme;
}
public void setTheme(ITheme theme) {
this.theme = theme;
}
}