/*******************************************************************************
* Copyright (c) 2008 Olivier Moises
*
* 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:
* Olivier Moises- initial API and implementation
*******************************************************************************/
package org.eclipse.wazaabi.engine.swt.commons.views;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Widget;
import org.eclipse.wazaabi.engine.core.editparts.WidgetEditPart;
import org.eclipse.wazaabi.engine.core.views.CheckBoxView;
import org.eclipse.wazaabi.mm.core.widgets.CheckBox;
import org.eclipse.wazaabi.mm.swt.descriptors.SWTDescriptorsPackage;
public class SWTCheckBoxView extends AbstractSWTButtonView implements
CheckBoxView {
private SelectionListener selectionListener = new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
setUserSelection();
}
public void widgetDefaultSelected(SelectionEvent e) {
setUserSelection();
}
};
public SelectionListener getSelectionListener() {
return selectionListener;
}
protected void setUserSelection() {
boolean selection = ((org.eclipse.swt.widgets.Button) getSWTWidget())
.getSelection();
if (selection != ((CheckBox) getHost().getModel()).isSelected())
((CheckBox) getHost().getModel()).setSelected(selection);
}
@Override
protected Widget createSWTWidget(Widget parent, int swtStyle, int index) {
Widget w = super.createSWTWidget(parent, swtStyle, index);
if (w instanceof org.eclipse.swt.widgets.Button)
((org.eclipse.swt.widgets.Button) w)
.addSelectionListener(getSelectionListener());
return w;
}
public EClass getWidgetViewEClass() {
return SWTDescriptorsPackage.Literals.CHECK_BOX;
}
@Override
protected int computeSWTCreationStyle(WidgetEditPart editPart) {
return super.computeSWTCreationStyle(editPart) | SWT.CHECK;
}
public void setSelected(boolean selected) {
((org.eclipse.swt.widgets.Button) getSWTWidget())
.setSelection(selected);
}
public boolean isSelected() {
return ((org.eclipse.swt.widgets.Button) getSWTWidget()).getSelection();
}
}