/** * */ package de.urszeidler.shr5.runtime.ui.widgets; import java.util.Map.Entry; import java.util.Set; 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.emf.databinding.EMFObservables; import org.eclipse.emf.databinding.EMFUpdateValueStrategy; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ToolBarManager; import org.eclipse.jface.databinding.swt.ISWTObservableValue; import org.eclipse.jface.databinding.swt.IWidgetValueProperty; import org.eclipse.jface.databinding.swt.WidgetProperties; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.window.ToolTip; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.FillLayout; 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.Event; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.ToolBar; import de.urszeidler.eclipse.shr5.AbstraktPersona; import de.urszeidler.eclipse.shr5.KoerperPersona; import de.urszeidler.eclipse.shr5.Shr5Package; import de.urszeidler.eclipse.shr5.runtime.ExtendetData; 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.binding.PathToImageConverter; import de.urszeidler.shr5.runtime.ui.widgets.StateMonitorWidget.MonitorType; /** * @author urs */ public class RuntimeCharacterTooltip extends ToolTip { private Shell parentShell; private StateMonitorWidget stateMonitorWidgetPhysical; private StateMonitorWidget stateMonitorWidgetMental; private StateMonitorWidget stateMonitorWidgetOverDead; private Label lblName; private Label label_image; private ToolBarManager extendetDataToolbar; private RuntimeCharacter runtimeCharacter; // private Table table; /** */ public RuntimeCharacterTooltip(Control control) { super(control); this.parentShell = control.getShell(); } public RuntimeCharacterTooltip(Control control, RuntimeCharacter subject) { this(control); this.runtimeCharacter = subject; } /* * (non-Javadoc) * @see org.eclipse.jface.window.ToolTip#createToolTipContentArea(org.eclipse.swt.widgets.Event, org.eclipse.swt.widgets.Composite) */ /** * @wbp.parser.entryPoint */ protected Composite createToolTipContentArea(Event event, Composite parent) { // Object object = event.data; Composite comp = new Composite(parent, SWT.NONE); comp.setLayout(new GridLayout(1, false)); lblName = new Label(comp, SWT.NONE); lblName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1)); lblName.setText("titel"); Composite composite = new Composite(comp, SWT.NONE); composite.setLayout(new GridLayout(4, false)); composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1)); label_image = new Label(composite, SWT.NONE); label_image.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1)); Group grpPhysical = new Group(composite, SWT.NONE); grpPhysical.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, false, 1, 1)); grpPhysical.setSize(66, 82); grpPhysical.setText("physical"); Group grpMental = new Group(composite, SWT.NONE); grpMental.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, false, 1, 1)); grpMental.setText("mental"); Group grpRest = new Group(composite, SWT.NONE); grpRest.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, false, 1, 1)); grpRest.setText("Extra"); grpPhysical.setLayout(new FillLayout(SWT.HORIZONTAL)); stateMonitorWidgetPhysical = new StateMonitorWidget(grpPhysical, SWT.NONE); stateMonitorWidgetPhysical.setType(MonitorType.physical); grpMental.setLayout(new FillLayout(SWT.HORIZONTAL)); stateMonitorWidgetMental = new StateMonitorWidget(grpMental, SWT.NONE); stateMonitorWidgetMental.setType(MonitorType.mental); grpRest.setLayout(new FillLayout(SWT.HORIZONTAL)); stateMonitorWidgetOverDead = new StateMonitorWidget(grpRest, SWT.NONE, 3, false); stateMonitorWidgetOverDead.setType(MonitorType.overflow); Group grpExtendedData = new Group(comp, SWT.NONE); grpExtendedData.setLayout(new FillLayout(SWT.HORIZONTAL)); grpExtendedData.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1)); grpExtendedData.setText("extended data"); if (runtimeCharacter != null && runtimeCharacter.getCharacter() != null && runtimeCharacter.getCharacter().getPersona() != null) { AbstraktPersona persona2 = runtimeCharacter.getCharacter().getPersona(); KoerperPersona koerperPersona = (KoerperPersona)persona2; stateMonitorWidgetMental.setMaxConditions(koerperPersona.getZustandGeistigMax()); stateMonitorWidgetPhysical.setMaxConditions(koerperPersona.getZustandKoerperlichMax()); stateMonitorWidgetOverDead.setMaxConditions(koerperPersona.getZustandGrenze()); } extendetDataToolbar = new ToolBarManager(SWT.VERTICAL); LabelProvider labelProvider = AdapterFactoryUtil.getInstance().getLabelProvider(); Set<Entry<ExtendetData, Object>> entrySet = runtimeCharacter.getExtendetData().entrySet(); for (Entry<ExtendetData, Object> entry : entrySet) { ExtendetData key = entry.getKey(); if (key.getEObject() != null) { extendetDataToolbar.add(new Action(labelProvider.getText(key.getEObject()) + " " + labelProvider.getText(key.getEFeature()) + " " + entry.getValue()) { }); } } ToolBar createControl = extendetDataToolbar.createControl(grpExtendedData); grpExtendedData.layout(true, true); // Composite composite_1 = new Composite(comp, SWT.NONE); // composite_1.setLayout(new FillLayout(SWT.HORIZONTAL)); // composite_1.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1)); // TableViewer tableViewer = new TableViewer(composite_1, SWT.BORDER | SWT.FULL_SELECTION); // table = tableViewer.getTable(); // // TableViewerColumn tableViewerColumn = new TableViewerColumn(tableViewer, SWT.NONE); // TableColumn tblclmnData = tableViewerColumn.getColumn(); // tblclmnData.setWidth(150); // tblclmnData.setText("data"); // tableViewerColumn.setLabelProvider(new CellLabelProvider() { // @Override // public void update(ViewerCell cell) { // Entry<ExtendetData, Object> element = (Entry<ExtendetData,Object>)cell.getElement(); // cell.setText(element.getKey().toString()); // } // }); // // TableViewerColumn tableViewerColumn_1 = new TableViewerColumn(tableViewer, SWT.NONE); // TableColumn tblclmnValue = tableViewerColumn_1.getColumn(); // tblclmnValue.setWidth(100); // tblclmnValue.setText("value"); // tableViewerColumn_1.setLabelProvider(new CellLabelProvider() { // // @Override // public void update(ViewerCell cell) { // Entry<ExtendetData, Object> element = (Entry<ExtendetData,Object>)cell.getElement(); // cell.setText(element.getValue().toString()); // } // }); // // tableViewer.setContentProvider(new SimpleListContenProvider(new // AdapterFactoryContentProvider(AdapterFactoryUtil.getInstance().getAdapterFactory()))); // tableViewer.setInput(runtimeCharacter.getExtendetData().entrySet()); // tableViewer.set initDataBindings(); return comp; } // protected Composite createContentArea(Composite parent) { // return new Composite(parent, SWT.NONE); // } protected void openHelp() { parentShell.setFocus(); } protected DataBindingContext initDataBindings() { DataBindingContext bindingContext = new DataBindingContext(); // IWidgetValueProperty image = WidgetProperties.image(); ISWTObservableValue observedImage = image.observe(label_image); IObservableValue observeValue = EMFObservables.observeValue(bindingContext.getValidationRealm(), runtimeCharacter.getCharacter().getPersona(), Shr5Package.Literals.BESCHREIBBAR__IMAGE); 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); // // IObservableValue observeTextLabel_nameObserveWidget_1 = WidgetProperties.text().observe(lblName); IObservableValue characterNameObserveValue = EMFObservables.observeValue(bindingContext.getValidationRealm(), runtimeCharacter.getCharacter() .getPersona(), Shr5Package.Literals.BESCHREIBBAR__NAME); bindingContext.bindValue(observeTextLabel_nameObserveWidget_1, characterNameObserveValue, new UpdateValueStrategy( UpdateValueStrategy.POLICY_NEVER), new EMFUpdateValueStrategy()); // if (stateMonitorWidgetMental != null) { ISWTObservableValue observe = new DamageStateValueProperty().observe(stateMonitorWidgetMental); IObservableValue observeValue1 = EMFObservables.observeValue(bindingContext.getValidationRealm(), runtimeCharacter, 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(), runtimeCharacter, 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(), runtimeCharacter, RuntimePackage.Literals.PHYICAL_STATE__OVER_DEAD); bindingContext.bindValue(observe, observeValue1, new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), new EMFUpdateValueStrategy()); } return bindingContext; } }