/*****************************************************************************
* Copyright (c) 2006, 2008 g-Eclipse Consortium
* 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
*
* Initial development of the original code was made for the
* g-Eclipse project founded by European Union
* project number: FP6-IST-034327 http://www.geclipse.eu/
*
* Contributors:
* Christof Klausecker GUP, JKU - initial API and implementation
*****************************************************************************/
package eu.geclipse.traceview.preferences;
import org.eclipse.jface.preference.ColorSelector;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceConverter;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.RGB;
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.DirectoryDialog;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import eu.geclipse.traceview.internal.Activator;
import eu.geclipse.traceview.internal.Messages;
/**
* Preference Settings for Trace Visualization
*/
public class PreferencesPage extends PreferencePage
implements IWorkbenchPreferencePage
{
IPreferenceStore store;
Button button;
/**
* Creates a new PreferencePage
*/
public PreferencesPage() {
super();
this.store = Activator.getDefault().getPreferenceStore();
}
public void init( final IWorkbench workbench ) {
// nothing
}
@Override
protected Control createContents( final Composite parent ) {
this.setTitle( Messages.getString( "PreferencePage.Title" ) ); //$NON-NLS-1$
Composite composite = new Composite( parent, SWT.NULL );
GridLayout layout = new GridLayout();
GridData layoutData = new GridData( SWT.FILL, SWT.FILL, true, true );
composite.setLayout( layout );
composite.setLayoutData( layoutData );
createEventsGroup( composite );
createMessagesGroup( composite );
createSettingsGroup( composite );
createCacheGroup( composite );
return null;
}
private void createCacheGroup( final Composite composite ) {
// group
GridLayout layout = new GridLayout();
GridData layoutData = new GridData( SWT.FILL, SWT.FILL, true, false );
layout.numColumns = 2;
Group cacheGroup = new Group( composite, SWT.NONE );
cacheGroup.setLayout( layout );
cacheGroup.setLayoutData( layoutData );
cacheGroup.setText( "Trace cache" );
cacheGroup.setLayout( new GridLayout(3, false) );
Label cacheDirLabel = new Label(cacheGroup, SWT.NONE);
cacheDirLabel.setText( "Cache directory:" );
final Text cacheDirText = new Text( cacheGroup, SWT.BORDER | SWT.READ_ONLY );
GridData gData = new GridData(SWT.FILL, SWT.FILL, true, false);
cacheDirText.setLayoutData( gData );
cacheDirText.setText( this.store.getString( PreferenceConstants.P_CACHE_DIR ) );
Button cacheDirBrowseButton = new Button(cacheGroup, SWT.NONE);
cacheDirBrowseButton.setText( "Browse..." );
cacheDirBrowseButton.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( final SelectionEvent e ) {
DirectoryDialog dialog = new DirectoryDialog(getShell(), SWT.OPEN);
dialog.setText("Select trace cache directory");
dialog.setFilterPath(cacheDirText.getText());
String dir = dialog.open();
if (dir != null) {
cacheDirText.setText( dir );
PreferencesPage.this.store.setValue( PreferenceConstants.P_CACHE_DIR, dir );
}
}
} );
}
private void createEventsGroup( final Composite composite ) {
// group
GridLayout layout = new GridLayout();
GridData layoutData = new GridData( SWT.FILL, SWT.FILL, true, false );
layout.numColumns = 6;
Group eventGroup = new Group( composite, SWT.NONE );
eventGroup.setLayout( layout );
eventGroup.setLayoutData( layoutData );
eventGroup.setText( Messages.getString( "PreferencePage.Events" ) ); //$NON-NLS-1$
new EventPreferenceEditor( eventGroup,
Messages.getString( "PreferencePage.SendEvents" ), //$NON-NLS-1$
PreferenceConstants.P_SEND_EVENT );
new EventPreferenceEditor( eventGroup,
Messages.getString( "PreferencePage.ReceiveEvents" ), //$NON-NLS-1$
PreferenceConstants.P_RECV_EVENT );
new EventPreferenceEditor( eventGroup,
Messages.getString( "PreferencePage.TestEvents" ), //$NON-NLS-1$
PreferenceConstants.P_TEST_EVENT );
new EventPreferenceEditor( eventGroup,
Messages.getString( "PreferencePage.OtherEvents" ), //$NON-NLS-1$
PreferenceConstants.P_OTHER_EVENT );
}
private void createMessagesGroup( final Composite composite ) {
GridLayout layout = new GridLayout();
layout.numColumns = 2;
GridData layoutData = new GridData( SWT.FILL, SWT.FILL, true, false );
Group messageGroup = new Group( composite, SWT.NONE );
messageGroup.setLayout( layout );
messageGroup.setLayoutData( layoutData );
messageGroup.setText( Messages.getString( "PreferencePage.Messages" ) ); //$NON-NLS-1$
// Label
Label name = new Label( messageGroup, SWT.NONE );
name.setText( Messages.getString( "PreferencePage.Message" ) ); //$NON-NLS-1$
// ColorSelector
ColorSelector colorSelector = new ColorSelector( messageGroup );
colorSelector.setColorValue( PreferenceConverter.getColor( this.store,
PreferenceConstants.P_MESSAGE
+ PreferenceConstants.P_COLOR ) );
GridData gd = new GridData();
gd.widthHint = 32;
gd.heightHint = 16;
colorSelector.getButton().setLayoutData( gd );
colorSelector.addListener( new IPropertyChangeListener() {
public void propertyChange( final PropertyChangeEvent event ) {
if( event.getNewValue() instanceof RGB ) {
RGB rgb = ( RGB )event.getNewValue();
PreferenceConverter.setValue( PreferencesPage.this.store,
PreferenceConstants.P_MESSAGE
+ PreferenceConstants.P_COLOR,
rgb );
}
}
} );
}
private void createSettingsGroup( final Composite composite ) {
GridLayout layout = new GridLayout();
layout.numColumns = 2;
GridData layoutData = new GridData( SWT.FILL, SWT.FILL, true, false );
Group settingsGroup = new Group( composite, SWT.NONE );
settingsGroup.setLayout( layout );
settingsGroup.setLayoutData( layoutData );
settingsGroup.setText( Messages.getString( "PreferencePage.Settings" ) ); //$NON-NLS-1$
// CheckBox
layoutData = new GridData( SWT.FILL, SWT.FILL, true, false );
layoutData.horizontalSpan = 2;
this.button = new Button( settingsGroup, SWT.CHECK );
this.button.setText( Messages.getString( "PreferencePage.AntiAliasing" ) ); //$NON-NLS-1$
this.button.setSelection( this.store.getBoolean( PreferenceConstants.P_ANTI_ALIASING ) );
this.button.setLayoutData( layoutData );
this.button.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( final SelectionEvent event ) {
PreferencesPage.this.store.setValue( PreferenceConstants.P_ANTI_ALIASING,
PreferencesPage.this.button.getSelection() );
}
} );
// Selection Color
Label name = new Label( settingsGroup, SWT.NONE );
name.setText( Messages.getString( "PreferencePage.SelectionColor" ) ); //$NON-NLS-1$
// ColorSelector
ColorSelector colorSelector = new ColorSelector( settingsGroup );
colorSelector.setColorValue( PreferenceConverter.getColor( this.store,
PreferenceConstants.P_SELECTION_COLOR ) );
GridData gd = new GridData();
gd.widthHint = 32;
gd.heightHint = 16;
colorSelector.getButton().setLayoutData( gd );
colorSelector.addListener( new IPropertyChangeListener() {
public void propertyChange( final PropertyChangeEvent event ) {
if( event.getNewValue() instanceof RGB ) {
RGB rgb = ( RGB )event.getNewValue();
PreferenceConverter.setValue( PreferencesPage.this.store,
PreferenceConstants.P_SELECTION_COLOR,
rgb );
}
}
} );
}
}