/** * */ package de.urszeidler.shr5.runtime.ui.widgets; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.UpdateValueStrategy; import org.eclipse.core.databinding.conversion.IConverter; import org.eclipse.core.databinding.observable.value.IObservableValue; import org.eclipse.core.databinding.observable.value.IValueChangeListener; import org.eclipse.core.databinding.observable.value.ValueChangeEvent; import org.eclipse.core.databinding.observable.value.WritableValue; import org.eclipse.emf.databinding.EMFObservables; import org.eclipse.emf.databinding.EMFUpdateValueStrategy; import org.eclipse.jface.databinding.swt.ISWTObservableValue; import org.eclipse.jface.databinding.swt.IWidgetValueProperty; import org.eclipse.jface.databinding.swt.WidgetProperties; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; 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.Label; import org.eclipse.swt.widgets.Text; import de.urszeidler.eclipse.shr5.Shr5Package; import de.urszeidler.eclipse.shr5.Shr5Package.Literals; import de.urszeidler.eclipse.shr5.gameplay.GameplayPackage; import de.urszeidler.eclipse.shr5.gameplay.Initative; import de.urszeidler.shr5.ecp.binding.PathToImageConverter; /** * @author urs */ public class EditableInitativeComposite extends Composite implements IValueChangeListener { // private final FormToolkit toolkit = new FormToolkit(Display.getCurrent()); protected DataBindingContext m_bindingContext; protected WritableValue nameable = new WritableValue(); // private Beschreibbar character = Shr5Factory.eINSTANCE.createBioWare(); // private Group mainGroup = null; private Label label_image = null; private Label label_name = null; //private String grouname; //protected ToolBar actionBar; private GridLayout gridLayout1; private Image background; private Initative ini; private Text txtNewText; private Button btnCheckButton; public EditableInitativeComposite(Composite parent, int style,Initative ini) { super(parent, style); nameable.addValueChangeListener(this); this.ini = ini; initialize(); this.nameable.setValue(ini.getSubject().getCharacter().getPersona()); } private void initialize() { // addDisposeListener(new DisposeListener() { // public void widgetDisposed(DisposeEvent e) { // toolkit.dispose(); // // } // }); // toolkit.adapt(this); // toolkit.paintBordersFor(this); gridLayout1 = new GridLayout(); gridLayout1.numColumns = 5; gridLayout1.marginHeight = 0; gridLayout1.marginTop = 0; gridLayout1.marginBottom = 5; gridLayout1.horizontalSpacing = 0; gridLayout1.verticalSpacing = 0; createMainGroup(); this.setLayout(gridLayout1); this.pack(); new Label(this, SWT.NONE); } /** * This method initializes mainGroup */ private void createMainGroup() { GridData gridData3 = new GridData(); gridData3.widthHint = 100; gridData3.minimumWidth = 20; gridData3.verticalAlignment = GridData.CENTER; gridData3.grabExcessHorizontalSpace = true; gridData3.horizontalAlignment = SWT.FILL; GridData gridData2 = new GridData(); gridData2.heightHint = 24; gridData2.widthHint = 24; GridData gridData = new GridData(); gridData.widthHint = 193; gridData.horizontalAlignment = GridData.FILL; gridData.grabExcessHorizontalSpace = true; gridData.grabExcessVerticalSpace = false; gridData.verticalAlignment = GridData.FILL; label_image = new Label(this,SWT.BORDER); label_image.setLayoutData(gridData2); label_name = new Label(this, SWT.NONE); label_name.setAlignment(SWT.LEFT); label_name.setLayoutData(gridData3); txtNewText = new Text(this, SWT.NONE); txtNewText.setText("1000 "); GridData gd_txtNewText = new GridData(SWT.RIGHT, SWT.CENTER, true, false, 1, 1); gd_txtNewText.widthHint = 40; txtNewText.setLayoutData(gd_txtNewText); btnCheckButton = new Button(this, SWT.CHECK); btnCheckButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); btnCheckButton.setText("seize"); btnCheckButton.setEnabled(ini.getSubject().canUseEdge()); m_bindingContext = initDataBindings(); } public Label getLabel_image() { return label_image; } public Label getLabel_name() { return label_name; } @Override public void dispose() { nameable.removeValueChangeListener(this); nameable.dispose(); super.dispose(); } @Override public void handleValueChange(ValueChangeEvent event) { //updateToolbar(); } // // public void setNameable(Initative ini) { // this.ini = ini; // this.nameable.setValue(ini.getSubject()); // // } protected DataBindingContext initDataBindings() { DataBindingContext bindingContext = new DataBindingContext(); // IObservableValue observeTextLabel_nameObserveWidget_1 = WidgetProperties.text().observe(label_name); IObservableValue characterNameObserveValue = EMFObservables.observeDetailValue(bindingContext.getValidationRealm(), nameable, Literals.BESCHREIBBAR__NAME); bindingContext.bindValue(observeTextLabel_nameObserveWidget_1, characterNameObserveValue, new UpdateValueStrategy( UpdateValueStrategy.POLICY_NEVER), new EMFUpdateValueStrategy()); // IWidgetValueProperty image = WidgetProperties.image(); ISWTObservableValue observedImage = image.observe(label_image); IObservableValue observeValue = EMFObservables.observeDetailValue(bindingContext.getValidationRealm(), nameable, Shr5Package.Literals.BESCHREIBBAR__IMAGE); IConverter converter = null; converter = new PathToImageConverter(String.class, Image.class, 24); UpdateValueStrategy toModel = new UpdateValueStrategy(); UpdateValueStrategy toWidget = new UpdateValueStrategy().setConverter(converter); bindingContext.bindValue(observedImage, observeValue, toModel, toWidget); // // IObservableValue observeTextTxtNewTextObserveWidget = WidgetProperties.text(SWT.Modify).observeDelayed(200, txtNewText); IObservableValue iniIniObserveValue = EMFObservables.observeValue(ini, GameplayPackage.Literals.INITATIVE__INI); bindingContext.bindValue(observeTextTxtNewTextObserveWidget, iniIniObserveValue, new EMFUpdateValueStrategy(), new EMFUpdateValueStrategy()); // IObservableValue observeSelectionBtnCheckButtonObserveWidget = WidgetProperties.selection().observe(btnCheckButton); IObservableValue iniSizeInitativeObserveValue = EMFObservables.observeValue(ini, GameplayPackage.Literals.INITATIVE__SIZE_INITATIVE); bindingContext.bindValue(observeSelectionBtnCheckButtonObserveWidget, iniSizeInitativeObserveValue, new EMFUpdateValueStrategy(), new EMFUpdateValueStrategy()); // return bindingContext; } }