| /** |
| * |
| * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation |
| */ |
| package org.eclipse.osbp.infogrid.api; |
| |
| import java.lang.reflect.Field; |
| import java.util.Date; |
| |
| import org.eclipse.osbp.dsl.common.datatypes.IDto; |
| import org.eclipse.osbp.ecview.core.common.model.core.YField; |
| import org.eclipse.osbp.ecview.core.extension.model.extension.ExtensionModelFactory; |
| import org.eclipse.osbp.ecview.core.extension.model.extension.YComboBox; |
| import org.eclipse.osbp.infogrid.model.gridsource.CxGridProperty; |
| import org.eclipse.osbp.runtime.common.annotations.DtoUtils; |
| |
| public class ECViewGridEditorFieldFactory implements IECViewGridEditorFieldFactory { |
| |
| private ExtensionModelFactory factory = ExtensionModelFactory.eINSTANCE; |
| |
| @Override |
| public YField createEditorField(CxGridProperty prop, Class<?> propertyType, Class<?> rootType) { |
| |
| if (GridUtil.isNestedAndBindsDto(rootType, prop)) { |
| // nested field |
| Class<?> nestedType = GridUtil.getDtoType(rootType, prop); |
| // if the first type in the dot path is a dto, we use a combo for |
| // editing |
| if (IDto.class.isAssignableFrom(nestedType)) { |
| YComboBox combo = factory.createYComboBox(); |
| combo.setType(nestedType); |
| combo.setTypeQualifiedName(nestedType.getName()); |
| combo.setUseBeanService(true); |
| |
| Field dkField = DtoUtils.getDomainKeyField(nestedType); |
| if (dkField != null) { |
| combo.setCaptionProperty(dkField.getName()); |
| return combo; |
| } |
| // combo will be there, but toString is shown as caption |
| return combo; |
| } |
| } |
| |
| if (propertyType == String.class) { |
| return factory.createYTextField(); |
| } else if (propertyType == Integer.class || propertyType == Integer.TYPE) { |
| return factory.createYNumericField(); |
| } else if (propertyType == Short.class || propertyType == Short.TYPE) { |
| return factory.createYNumericField(); |
| } else if (propertyType == Byte.class || propertyType == Byte.TYPE) { |
| return factory.createYNumericField(); |
| } else if (propertyType == Float.class || propertyType == Float.TYPE) { |
| return factory.createYDecimalField(); |
| } else if (propertyType == Double.class || propertyType == Double.TYPE) { |
| return factory.createYDecimalField(); |
| } else if (propertyType == Long.class || propertyType == Long.TYPE) { |
| return factory.createYNumericField(); |
| } else if (propertyType == Character.class || propertyType == Character.TYPE) { |
| return factory.createYTextField(); |
| } else if (propertyType == Boolean.class || propertyType == Boolean.TYPE) { |
| return factory.createYCheckBox(); |
| } else if (propertyType == Date.class) { |
| return factory.createYDateTime(); |
| } |
| |
| return null; |
| } |
| |
| } |