/*****************************************************************************
* 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.nope.ui;
import org.eclipse.jface.preference.ColorSelector;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceConverter;
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.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import eu.geclipse.traceview.IEventMarker;
import eu.geclipse.traceview.nope.Activator;
import eu.geclipse.traceview.nope.preferences.PreferenceConstants;
/**
* Editor of Nope Event Legend Preferences
*/
public class EventSubTypePreferenceEditor {
IPreferenceStore store;
String name;
Button button;
Combo combo;
ColorSelector colorSelector;
/**
* Creates a new EventSubTypePreferenceEditor
*
* @param composite
* @param name
*/
public EventSubTypePreferenceEditor( final Composite composite,
final String name )
{
this.name = name;
this.store = Activator.getDefault().getPreferenceStore();
// CheckBox
this.button = new Button( composite, SWT.CHECK );
this.button.setText( name );
this.button.setSelection( this.store.getBoolean( name
+ PreferenceConstants.enabled ) );
this.button.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( final SelectionEvent event ) {
handleSelectionEvent();
}
} );
// ColorSelector
this.colorSelector = new ColorSelector( composite );
this.colorSelector.setColorValue( PreferenceConverter.getColor( this.store,
name
+ PreferenceConstants.color ) );
GridData gd = new GridData();
gd.widthHint = 32;
gd.heightHint = 16;
this.colorSelector.getButton().setLayoutData( gd );
this.colorSelector.addListener( new IPropertyChangeListener() {
public void propertyChange( final PropertyChangeEvent event ) {
handlePropertyChangeEvent( event );
}
} );
// Combo
this.combo = new Combo( composite, SWT.READ_ONLY );
int selection = this.store.getInt( this.name + PreferenceConstants.shape );
switch( selection ) {
case IEventMarker.No_Event:
selection = 0;
break;
case IEventMarker.Rectangle_Event:
selection = 1;
break;
case IEventMarker.Ellipse_Event:
selection = 2;
break;
case IEventMarker.Cross_Event:
selection = 3;
break;
case IEventMarker.Triangle_Event:
selection = 4;
break;
case IEventMarker.Diamond_Event:
selection = 5;
break;
default:
selection = 0;
}
this.combo.setItems( new String[]{
"None", //$NON-NLS-1$
"Rectangle", //$NON-NLS-1$
"Circle", //$NON-NLS-1$
"Cross", //$NON-NLS-1$
"Triangle", //$NON-NLS-1$
"Diamond" //$NON-NLS-1$
} );
this.combo.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( final SelectionEvent event ) {
handleSelectionEvent2();
}
} );
this.combo.select( selection );
setEnabled( this.button.getSelection() );
}
protected void handlePropertyChangeEvent( final PropertyChangeEvent event ) {
if( event.getNewValue() instanceof RGB ) {
RGB rgb = ( RGB )event.getNewValue();
PreferenceConverter.setValue( this.store,
this.name + PreferenceConstants.color,
rgb );
}
}
protected void handleSelectionEvent() {
this.store.setValue( this.name + PreferenceConstants.enabled,
this.button.getSelection() );
setEnabled( this.button.getSelection() );
}
protected void setEnabled( boolean state ) {
this.colorSelector.setEnabled( state );
this.combo.setEnabled( state );
}
protected void handleSelectionEvent2() {
int value = 0;
switch( this.combo.getSelectionIndex() ) {
case 0:
value = IEventMarker.No_Mark;
break;
case 1:
value = IEventMarker.Rectangle_Event;
break;
case 2:
value = IEventMarker.Ellipse_Event;
break;
case 3:
value = IEventMarker.Cross_Event;
break;
case 4:
value = IEventMarker.Triangle_Event;
break;
case 5:
value = IEventMarker.Diamond_Event;
break;
default:
value = -1;
}
this.store.setValue( this.name + PreferenceConstants.shape, value );
}
}