| /******************************************************************************* |
| * Copyright (c) 2018 Agence spatiale canadienne / Canadian Space Agency |
| * 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: |
| * Pierre Allard - initial API and implementation |
| * Regent L'Archeveque |
| * |
| * SPDX-License-Identifier: EPL-1.0 |
| *******************************************************************************/ |
| package org.eclipse.apogy.common.math.ui.renderers; |
| |
| import javax.inject.Inject; |
| |
| import org.eclipse.apogy.common.emf.transaction.ApogyCommonTransactionFacade; |
| import org.eclipse.apogy.common.math.ApogyCommonMathFactory; |
| import org.eclipse.apogy.common.math.Tuple3d; |
| import org.eclipse.apogy.common.math.ui.composites.Tuple3dComposite; |
| import org.eclipse.core.databinding.Binding; |
| import org.eclipse.emf.ecp.view.spi.context.ViewModelContext; |
| import org.eclipse.emf.ecp.view.spi.core.swt.SimpleControlSWTControlSWTRenderer; |
| import org.eclipse.emf.ecp.view.spi.model.VControl; |
| import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider; |
| import org.eclipse.emfforms.spi.common.report.ReportService; |
| import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException; |
| import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding; |
| import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.layout.FillLayout; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Control; |
| import org.eclipse.swt.widgets.Display; |
| import org.eclipse.ui.forms.widgets.ExpandableComposite; |
| import org.eclipse.ui.forms.widgets.FormToolkit; |
| import org.eclipse.ui.forms.widgets.Section; |
| import org.slf4j.Logger; |
| import org.slf4j.LoggerFactory; |
| |
| public class Tuple3dControlRenderer extends SimpleControlSWTControlSWTRenderer { |
| |
| private static final Logger Logger = LoggerFactory.getLogger(Tuple3dControlRenderer.class); |
| |
| private final FormToolkit toolkit = new FormToolkit(Display.getCurrent()); |
| |
| @Inject |
| public Tuple3dControlRenderer(VControl vElement, ViewModelContext viewContext, ReportService reportService, |
| EMFFormsDatabinding emfFormsDatabinding, EMFFormsLabelProvider emfFormsLabelProvider, |
| VTViewTemplateProvider vtViewTemplateProvider) { |
| super(vElement, viewContext, reportService, emfFormsDatabinding, emfFormsLabelProvider, vtViewTemplateProvider); |
| } |
| |
| @Override |
| protected Binding[] createBindings(Control control) throws DatabindingFailedException { |
| return new Binding[0]; |
| } |
| |
| @SuppressWarnings("unchecked") |
| @Override |
| protected Control createSWTControl(Composite parent) throws DatabindingFailedException { |
| /** Get the tuple */ |
| Tuple3d tuple3d = (Tuple3d) getValue(); |
| /** Initialize the tuple if needed */ |
| if (tuple3d == null) { |
| tuple3d = ApogyCommonMathFactory.eINSTANCE.createTuple3d(); |
| |
| getModelValue().setValue(tuple3d); |
| } |
| |
| Composite composite = new Composite(parent, SWT.None); |
| composite.setLayout(new FillLayout()); |
| |
| /** Tuple composite */ |
| Section section = this.toolkit.createSection(composite, |
| ExpandableComposite.TITLE_BAR | ExpandableComposite.EXPANDED); |
| this.toolkit.adapt(section); |
| section.setText("Tuple 3D"); |
| section.setExpanded(true); |
| |
| Tuple3dComposite tupleComposite = new Tuple3dComposite(section, SWT.None, |
| ApogyCommonTransactionFacade.INSTANCE.getTransactionalEditingDomain(tuple3d)); |
| tupleComposite.setTuple3d(tuple3d); |
| tupleComposite.setBackground(tupleComposite.getDisplay().getSystemColor(SWT.COLOR_WHITE)); |
| |
| section.setClient(tupleComposite); |
| |
| return composite; |
| } |
| |
| @Override |
| protected String getUnsetText() { |
| return "Unset"; |
| } |
| |
| protected Object getValue() { |
| try { |
| Object obj = getModelValue().getValue(); |
| return obj; |
| } catch (DatabindingFailedException e) { |
| Logger.error("Unable to set the RGB value."); |
| } |
| return null; |
| } |
| |
| @Override |
| protected void dispose() { |
| this.toolkit.dispose(); |
| super.dispose(); |
| } |
| } |