/*******************************************************************************
* Copyright (c) 2011, 2012 RĂ¼diger Herrmann 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:
* RĂ¼digier Herrmann - initial API and implementation
* EclipseSource - ongoing developemnt
******************************************************************************/
package org.eclipse.rap.demo.controls;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
class CheckWidgetCellEditor extends CellEditor {
private static final char ESCAPE_CHAR = '\u001b';
private Button checkbox;
CheckWidgetCellEditor( Composite parent ) {
super( parent, SWT.CHECK );
}
@Override
protected Control createControl( Composite parent ) {
checkbox = new Button( parent, getStyle() );
checkbox.addKeyListener( new KeyAdapter() {
@Override
public void keyReleased( KeyEvent event ) {
if( event.character == ESCAPE_CHAR ) {
fireCancelEditor();
}
}
} );
return checkbox;
}
@Override
protected Object doGetValue() {
return checkbox.getSelection() ? Boolean.TRUE : Boolean.FALSE;
}
@Override
protected void doSetFocus() {
checkbox.setFocus();
}
@Override
protected void doSetValue( Object value ) {
checkbox.setSelection( ( ( Boolean )value ).booleanValue() );
}
}