| /******************************************************************************* |
| * 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 |
| * Olivier L. Larouche |
| * |
| * SPDX-License-Identifier: EPL-1.0 |
| *******************************************************************************/ |
| package org.eclipse.apogy.common.emf.ui.emfforms.renderers; |
| |
| import javax.inject.Inject; |
| import javax.vecmath.Color3f; |
| |
| import org.eclipse.emf.ecp.view.spi.context.ViewModelContext; |
| 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.graphics.RGB; |
| import org.slf4j.Logger; |
| import org.slf4j.LoggerFactory; |
| |
| public class Color3fControlSWTRenderer extends AbstractColorControlSWTRenderer { |
| |
| private static final Logger Logger = LoggerFactory.getLogger(Color3fControlSWTRenderer.class); |
| |
| @Inject |
| public Color3fControlSWTRenderer(VControl vElement, ViewModelContext viewContext, ReportService reportService, |
| EMFFormsDatabinding emfFormsDatabinding, EMFFormsLabelProvider emfFormsLabelProvider, |
| VTViewTemplateProvider vtViewTemplateProvider) { |
| super(vElement, viewContext, reportService, emfFormsDatabinding, emfFormsLabelProvider, vtViewTemplateProvider); |
| } |
| |
| @Override |
| protected RGB getRGB() { |
| |
| Object obj = getValue(); |
| /** Converts color3f */ |
| if (obj instanceof Color3f) { |
| Color3f color = (Color3f) obj; |
| |
| int red = Math.round(255.0f * (color.getX())); |
| int green = Math.round(255.0f * (color.getY())); |
| int blue = Math.round(255.0f * (color.getZ())); |
| |
| if (red >= 0 && green >= 0 && blue >= 0) { |
| return new RGB(red, green, blue); |
| } |
| } |
| return null; |
| |
| } |
| |
| @Override |
| protected Object convert(RGB rgb) { |
| if (rgb != null) { |
| Color3f color = new Color3f((rgb.red / 255.0f), (rgb.green / 255.0f), (rgb.blue / 255.0f)); |
| return color; |
| } else { |
| return getNullObj(); |
| } |
| } |
| |
| @Override |
| protected Object getNullObj() { |
| return new Color3f(-1, -1, -1); |
| } |
| |
| @Override |
| protected Object getValue() { |
| try { |
| Object obj = getModelValue().getValue(); |
| |
| if (obj instanceof Color3f) { |
| Color3f color = (Color3f) obj; |
| |
| if (color.getX() >= 0 && color.getY() >= 0 && color.getZ() >= 0) { |
| return color; |
| } |
| } |
| return null; |
| } catch (DatabindingFailedException e) { |
| Logger.error("Unable to set the RGB value."); |
| } |
| return null; |
| } |
| |
| } |