/***************************************************************************** * 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.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 org.eclipse.swt.widgets.Label; import eu.geclipse.traceview.IEventMarker; import eu.geclipse.traceview.internal.Activator; /** * Editor of Nope Event Legend Preferences */ public class EventPreferenceEditor { IPreferenceStore store; String preference; String label; Button drawButton; Button button; Combo combo; /** * Creates a new EventSubTypePreferenceEditor * * @param composite * @param label * @param preference */ public EventPreferenceEditor( final Composite composite, final String label, final String preference ) { this.label = label; this.preference = preference; this.store = Activator.getDefault().getPreferenceStore(); // Label Label name = new Label( composite, SWT.NONE ); name.setText( label ); // ColorSelector ColorSelector colorSelector = new ColorSelector( composite ); colorSelector.setColorValue( PreferenceConverter.getColor( this.store, preference + 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 ) { handleColorPropertyChangeEvent( event ); } } ); // CheckBox this.drawButton = new Button( composite, SWT.CHECK ); this.drawButton.setSelection( this.store.getBoolean( preference + PreferenceConstants.P_DRAW ) ); this.drawButton.addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected( final SelectionEvent event ) { handleDrawPropertyChangeEvent(); } } ); // ColorSelector colorSelector = new ColorSelector( composite ); colorSelector.setColorValue( PreferenceConverter.getColor( this.store, preference + PreferenceConstants.P_FILL_COLOR ) ); gd = new GridData(); gd.widthHint = 32; gd.heightHint = 16; colorSelector.getButton().setLayoutData( gd ); colorSelector.addListener( new IPropertyChangeListener() { public void propertyChange( final PropertyChangeEvent event ) { handleFillColorPropertyChangeEvent( event ); } } ); // CheckBox this.button = new Button( composite, SWT.CHECK ); this.button.setSelection( this.store.getBoolean( preference + PreferenceConstants.P_FILL ) ); this.button.addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected( final SelectionEvent event ) { handleFillPropertyChangeEvent(); } } ); // Type Combo this.combo = new Combo( composite, SWT.READ_ONLY ); // int selection = this.store.getInt( this.name + PreferenceConstants.shape // ); int selection = 0; 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 ); } protected void handleDrawPropertyChangeEvent() { this.store.setValue( this.preference + PreferenceConstants.P_DRAW, this.drawButton.getSelection() ); } protected void handleFillPropertyChangeEvent() { this.store.setValue( this.preference + PreferenceConstants.P_FILL, this.button.getSelection() ); } protected void handleColorPropertyChangeEvent( final PropertyChangeEvent event ) { if( event.getNewValue() instanceof RGB ) { RGB rgb = ( RGB )event.getNewValue(); PreferenceConverter.setValue( this.store, this.preference + PreferenceConstants.P_COLOR, rgb ); } } protected void handleFillColorPropertyChangeEvent( final PropertyChangeEvent event ) { if( event.getNewValue() instanceof RGB ) { RGB rgb = ( RGB )event.getNewValue(); PreferenceConverter.setValue( this.store, this.preference + PreferenceConstants.P_FILL_COLOR, rgb ); } } protected void handleSelectionEvent2() { int value = 0; switch( this.combo.getSelectionIndex() ) { case 0: value = IEventMarker.No_Event; 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.preference + PreferenceConstants.P_SHAPE, value ); } }