catch up with branch daily

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/BeanReferenceFieldPresentation.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/BeanReferenceFieldPresentation.java
index d49d41b..6e952bd 100644
--- a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/BeanReferenceFieldPresentation.java
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/BeanReferenceFieldPresentation.java
@@ -41,6 +41,7 @@
 import org.eclipse.osbp.ecview.core.ui.core.editparts.extension.IBeanReferenceFieldEditpart;
 import org.eclipse.osbp.runtime.common.annotations.TargetEnumConstraints;
 import org.eclipse.osbp.runtime.common.state.ISharedStateContext;
+import org.eclipse.osbp.runtime.common.types.IBundleSpace;
 import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.VaadinRenderer;
 import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.common.AbstractFieldWidgetPresenter;
 import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.internal.util.Util;
@@ -171,12 +172,20 @@
 	 * @return the filter
 	 */
 	protected Filter createFilter() {
-		Class<?> sourceType = modelAccess.yField.getReferenceSourceType();
+		String sourceTypeFqn = modelAccess.yField.getReferenceSourceTypeQualifiedName();
 		String sourceProperty = modelAccess.yField.getReferenceSourceTypeProperty();
-		if (sourceType == null || sourceProperty == null || sourceProperty.equals("")) {
+		if (sourceTypeFqn == null || sourceProperty == null || sourceProperty.equals("")) {
 			return null;
 		}
 
+		IBundleSpace bundleSpace = getViewContext().getService(IBundleSpace.class.getName());
+		Class<?> sourceType = null;
+		try {
+			sourceType = bundleSpace.forName(sourceTypeFqn);
+		} catch (ClassNotFoundException e1) {
+			LOGGER.error("{}", e1);
+		}
+				
 		try {
 			java.lang.reflect.Field sourceField = sourceType.getDeclaredField(sourceProperty);
 
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/CustomTableFieldFactory.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/CustomTableFieldFactory.java
new file mode 100644
index 0000000..4f5ceeb
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/CustomTableFieldFactory.java
@@ -0,0 +1,33 @@
+package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.internal;
+
+import com.vaadin.data.Container;
+import com.vaadin.data.Property;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.DefaultFieldFactory;
+import com.vaadin.ui.Field;
+import com.vaadin.ui.RichTextArea;
+import com.vaadin.ui.TextField;
+
+@SuppressWarnings("serial")
+public class CustomTableFieldFactory extends DefaultFieldFactory {
+	@SuppressWarnings("rawtypes")
+	@Override
+	public Field createField(Container container, Object itemId, Object propertyId, Component uiContext) {
+		Class<?> clz = container.getType(propertyId);
+		if(String.class.isAssignableFrom(clz)) {
+	        Property containerProperty = container.getContainerProperty(itemId,
+	                propertyId);
+	        Class<?> type = containerProperty.getType();
+	        if (type == null) {
+	            return null;
+	        }
+	        Field<?> field = new RichTextArea();
+	        field.setCaption(createCaptionByPropertyId(propertyId));
+			return field;
+		} else {
+			Field<?> field = new TextField();//super.createField(container, itemId, propertyId, uiContext);
+	        field.setCaption(createCaptionByPropertyId(propertyId));
+			return field;
+		}
+	}
+}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/TablePresentation.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/TablePresentation.java
index b925b67..5cc15a8 100644
--- a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/TablePresentation.java
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/TablePresentation.java
@@ -102,6 +102,7 @@
 import com.vaadin.ui.Component;
 import com.vaadin.ui.ComponentContainer;
 import com.vaadin.ui.Field;
+import com.vaadin.ui.HasComponents;
 import com.vaadin.ui.Table;
 import com.vaadin.ui.Table.Align;
 import com.vaadin.ui.Table.ColumnCollapseEvent;
@@ -1023,6 +1024,15 @@
 		private Timer sortTimer;
 		private boolean isSorting;
 
+	    @Override
+	    public void markAsDirtyRecursive() {
+	        if(isVisible()) {
+	        	super.markAsDirtyRecursive();
+		        // Avoid sending a partial repaint (#8714)
+		        refreshRowCache();
+	        }
+	    }
+
 		@SuppressWarnings("unchecked")
 		CustomTable() {
 			addValueChangeListener(e -> {