package de.urszeidler.shr5.runtime.ui.dialogs; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.UpdateValueStrategy; import org.eclipse.core.databinding.observable.value.IObservableValue; import org.eclipse.emf.databinding.EMFObservables; import org.eclipse.emf.databinding.EMFUpdateValueStrategy; import org.eclipse.jface.databinding.swt.ISWTObservableValue; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.forms.widgets.ExpandableComposite; import org.eclipse.ui.forms.widgets.FormToolkit; import de.urszeidler.eclipse.shr5.AbstraktPersona; import de.urszeidler.eclipse.shr5.Beschreibbar; import de.urszeidler.eclipse.shr5.KoerperPersona; import de.urszeidler.eclipse.shr5.gameplay.Command; import de.urszeidler.eclipse.shr5.gameplay.SubjectCommand; import de.urszeidler.eclipse.shr5.runtime.RuntimeCharacter; import de.urszeidler.eclipse.shr5.runtime.RuntimePackage; import de.urszeidler.eclipse.shr5.util.AdapterFactoryUtil; import de.urszeidler.shr5.ecp.util.ShadowrunEditingTools; import de.urszeidler.shr5.runtime.ui.widgets.DamageStateValueProperty; import de.urszeidler.shr5.runtime.ui.widgets.StateMonitorWidget; import de.urszeidler.shr5.runtime.ui.widgets.StateMonitorWidget.MonitorType; public class DamageProbeFinishedDialog extends TitleAreaDialog { private DataBindingContext m_bindingContext; private Command probe; private Beschreibbar desc; // private Label lblImage; // private Label lblName; // private Label lblProbetext; private Label lblProberesult; private LabelProvider labelProvider; // private Text txtProbe; private Composite composite; private final FormToolkit formToolkit = new FormToolkit(Display.getDefault()); private StateMonitorWidget stateMonitorWidgetMental; private StateMonitorWidget stateMonitorWidgetPhysical; private RuntimeCharacter character; private StateMonitorWidget stateMonitorWidgetOverDead; private Composite composite_state; /** * Create the dialog. * * @param parentShell * @wbp.parser.constructor */ public DamageProbeFinishedDialog(Shell parentShell, Command probe) { super(parentShell); setHelpAvailable(false); this.probe = probe; if (probe instanceof SubjectCommand) { SubjectCommand sc = (SubjectCommand)probe; desc = sc.getSubject().getCharacter().getPersona(); character = sc.getSubject(); } } public DamageProbeFinishedDialog(Shell shell, Command cmd, LabelProvider labelProvider) { this(shell, cmd); this.labelProvider = labelProvider; } /** * Create contents of the dialog. * * @param parent */ @Override protected Control createDialogArea(Composite parent) { setTitle(Messages.DamageProbeFinishedDialog_titel); if (desc != null) setTitleImage(AdapterFactoryUtil.getInstance().getImageScaledBy(48f, desc.getImage())); setMessage(labelProvider.getText(probe)); Composite area = (Composite)super.createDialogArea(parent); Composite container = new Composite(area, SWT.NONE); container.setLayout(new GridLayout(2, false)); container.setLayoutData(new GridData(GridData.FILL_BOTH)); // lblImage = new Label(container, SWT.NONE); // GridData gd_lblImage = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); // gd_lblImage.widthHint = 32; // gd_lblImage.heightHint = 32; // lblImage.setLayoutData(gd_lblImage); // lblImage.setText("Image"); //$NON-NLS-1$ // // lblName = new Label(container, SWT.NONE); // lblName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); // lblName.setText("name"); //$NON-NLS-1$ // txtProbe = new Text(container, SWT.BORDER | SWT.READ_ONLY | SWT.WRAP | SWT.MULTI); // txtProbe.setEnabled(false); // txtProbe.setText(labelProvider.getText(probe)); // GridData gd_txtProbe = new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1); // gd_txtProbe.heightHint = 34; // txtProbe.setLayoutData(gd_txtProbe); lblProberesult = new Label(container, SWT.WRAP); GridData gd_lblProberesult = new GridData(SWT.LEFT, SWT.TOP, true, false, 2, 1); // gd_lblProberesult.widthHint = 441; gd_lblProberesult.heightHint = 34; lblProberesult.setLayoutData(gd_lblProberesult); lblProberesult.setText(ShadowrunEditingTools.command2String(probe)); composite = new Composite(container, SWT.NONE); composite.setLayout(new GridLayout(4, false)); composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 2, 1)); formToolkit.adapt(composite); formToolkit.paintBordersFor(composite); ExpandableComposite xpndblcmpstPhysical = formToolkit.createExpandableComposite(composite, ExpandableComposite.TWISTIE); xpndblcmpstPhysical.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1)); formToolkit.paintBordersFor(xpndblcmpstPhysical); xpndblcmpstPhysical.setText(Messages.DamageProbeFinishedDialog_physical_state); xpndblcmpstPhysical.setExpanded(true); stateMonitorWidgetPhysical = new StateMonitorWidget(xpndblcmpstPhysical, SWT.NONE); stateMonitorWidgetPhysical.setType(MonitorType.physical); xpndblcmpstPhysical.setClient(stateMonitorWidgetPhysical); ExpandableComposite xpndblcmpstMental = formToolkit.createExpandableComposite(composite, ExpandableComposite.TWISTIE); xpndblcmpstMental.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1)); xpndblcmpstMental.setText(Messages.DamageProbeFinishedDialog_mental_state); xpndblcmpstMental.setExpanded(true); stateMonitorWidgetMental = new StateMonitorWidget(xpndblcmpstMental, SWT.NONE); stateMonitorWidgetMental.setType(MonitorType.mental); xpndblcmpstMental.setClient(stateMonitorWidgetMental); ExpandableComposite xpndblcmpstOverdead = formToolkit.createExpandableComposite(composite, ExpandableComposite.TWISTIE); xpndblcmpstOverdead.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1)); formToolkit.paintBordersFor(xpndblcmpstOverdead); xpndblcmpstOverdead.setText(Messages.DamageProbeFinishedDialog_overdead_state); xpndblcmpstOverdead.setExpanded(true); stateMonitorWidgetOverDead = new StateMonitorWidget(xpndblcmpstOverdead, SWT.NONE); stateMonitorWidgetOverDead.setType(MonitorType.overflow); xpndblcmpstOverdead.setClient(stateMonitorWidgetOverDead); composite_state = formToolkit.createComposite(composite, SWT.NONE); formToolkit.paintBordersFor(composite_state); composite_state.setLayout(new GridLayout(1, false)); if (character != null && character.getCharacter() != null && character.getCharacter().getPersona() != null) { AbstraktPersona persona2 = character.getCharacter().getPersona(); KoerperPersona koerperPersona = (KoerperPersona)persona2; stateMonitorWidgetMental.setMaxConditions(koerperPersona.getZustandGeistigMax()); stateMonitorWidgetPhysical.setMaxConditions(koerperPersona.getZustandKoerperlichMax()); stateMonitorWidgetOverDead.setMaxConditions(koerperPersona.getZustandGrenze()); } return area; } /** * Create contents of the button bar. * * @param parent */ @Override protected void createButtonsForButtonBar(Composite parent) { createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true); createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false); m_bindingContext = initDataBindings(); } /** * Return the initial size of the dialog. */ @Override protected Point getInitialSize() { return new Point(448, 399); } protected DataBindingContext initDataBindings() { DataBindingContext bindingContext = new DataBindingContext(); // // IObservableValue observeTextLblNameObserveWidget = WidgetProperties.text().observe(lblName); // IObservableValue objectNameObserveValue = EMFProperties.value( // // FeaturePath.fromList(Shr5Package.Literals.BESCHREIBBAR__NAME)).observe(desc); // bindingContext.bindValue(observeTextLblNameObserveWidget, objectNameObserveValue, new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), // new EMFUpdateValueStrategy()); // // // // IWidgetValueProperty image = WidgetProperties.image(); // ISWTObservableValue observedImage = image.observe(lblImage); // IObservableValue observeValue = EMFProperties.value( // // FeaturePath.fromList(Shr5Package.Literals.BESCHREIBBAR__IMAGE)).observe(desc); // // IConverter converter = null; // // converter = new PathToImageConverter(String.class, Image.class, 32); // UpdateValueStrategy toModel = new UpdateValueStrategy(); // UpdateValueStrategy toWidget = new UpdateValueStrategy().setConverter(converter); // bindingContext.bindValue(observedImage, observeValue, toModel, toWidget); if (stateMonitorWidgetMental != null) { ISWTObservableValue observe = new DamageStateValueProperty().observe(stateMonitorWidgetMental); IObservableValue observeValue1 = EMFObservables.observeValue(bindingContext.getValidationRealm(), character, RuntimePackage.Literals.PHYICAL_STATE__MENTAL_DAMAGE); bindingContext.bindValue(observe, observeValue1, new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), new EMFUpdateValueStrategy()); } if (stateMonitorWidgetPhysical != null) { ISWTObservableValue observe = new DamageStateValueProperty().observe(stateMonitorWidgetPhysical); IObservableValue observeValue1 = EMFObservables.observeValue(bindingContext.getValidationRealm(), character, RuntimePackage.Literals.PHYICAL_STATE__PHYSICAL_DAMAGE); bindingContext.bindValue(observe, observeValue1, new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), new EMFUpdateValueStrategy()); } if (stateMonitorWidgetOverDead != null) { ISWTObservableValue observe = new DamageStateValueProperty().observe(stateMonitorWidgetOverDead); IObservableValue observeValue1 = EMFObservables.observeValue(bindingContext.getValidationRealm(), character, RuntimePackage.Literals.PHYICAL_STATE__OVER_DEAD); bindingContext.bindValue(observe, observeValue1, new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), new EMFUpdateValueStrategy()); } return bindingContext; } }