From 26d1a570731f3e7a199f2636fb1f91103d37bbe9 Mon Sep 17 00:00:00 2001
From: reaboi <reaboi@fortiss.org>
Date: Fri, 3 Aug 2018 13:39:10 +0200
Subject: [PATCH] 1326 comments in code specification m

YELLOW

Signed-off-by: reaboi <reaboi@fortiss.org>
---
 .../fortiss/tooling/kernel/ui/util/.ratings   |  2 +-
 .../kernel/ui/util/DataBindingUtils.java      | 71 ++++++-------------
 2 files changed, 21 insertions(+), 52 deletions(-)

diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/.ratings b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/.ratings
index 758979967..c008af9ab 100644
--- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/.ratings
+++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/.ratings
@@ -1,7 +1,7 @@
 ActionUtils.java 4553e487264e3d1f86f4767da4a7400cce4b9a5d GREEN
 ConstraintsUIUtils.java 69d5e08bbf768baf2790380e36f1020ef826a33e GREEN
 CopyPasteUtils.java 66ff2c44bef3bfecc85a6d3109c6b15a8960fa38 GREEN
-DataBindingUtils.java 83d5db7e58da9e3081f9d8f406532b6d35f6deaf RED
+DataBindingUtils.java 1d4c4da38227974b94c74b0302d6597f418d0c0a YELLOW
 DragAndDropUtils.java 7aab91518aa12d76533a345bf6ed0be9ac7ff0e5 GREEN
 EObjectSelectionUtils.java 928280b5dd3bb634debc1ac3be9f15b4e45f2683 GREEN
 KernelUIUtils.java b038a28a44e17e5bca4d71f5dee70ee92e5324b9 GREEN
diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/DataBindingUtils.java b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/DataBindingUtils.java
index 83d5db7e5..1d4c4da38 100644
--- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/DataBindingUtils.java
+++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/DataBindingUtils.java
@@ -115,46 +115,8 @@ public final class DataBindingUtils {
 			IConverter textToModelConverter, IValidator textValidator,
 			IValidator textPostConvertValidator) {
 
-		Binding[] bindings = new Binding[3];
-
-		// normal model to control
-		UpdateValueStrategy modelToTextStrategy =
-				new UpdateValueStrategy(true, UpdateValueStrategy.POLICY_UPDATE)
-						.setConverter(modelToTextConverter);
-
-		// use POLICY_UPDATE to actually perform the update
-		UpdateValueStrategy textToModelStrategyWithUpdate =
-				new UpdateValueStrategy(true, UpdateValueStrategy.POLICY_UPDATE)
-						.setConverter(textToModelConverter).setAfterGetValidator(textValidator)
-						.setAfterConvertValidator(textPostConvertValidator);
-
-		// add the "normal" binding to actually update the model
-		bindings[0] =
-				dbc.bindValue(observeText(control, SWT.Modify), modelValue,
-						textToModelStrategyWithUpdate, modelToTextStrategy);
-
-		// here it is important to only use POLICY_CONVERT, to not write through
-		// to the model
-		UpdateValueStrategy textToModelStrategyNoUpdate =
-				new UpdateValueStrategy(true, UpdateValueStrategy.POLICY_CONVERT)
-						.setConverter(textToModelConverter).setAfterGetValidator(textValidator)
-						.setAfterConvertValidator(textPostConvertValidator);
-
-		// perform a binding which only serves for validation purposes
-		bindings[1] =
-				dbc.bindValue(observeText(control, SWT.Modify), modelValue,
-						textToModelStrategyNoUpdate, new UpdateValueStrategy(
-								UpdateValueStrategy.POLICY_NEVER));
-
-		// add validation of required/supported
-		final Object data = control.getData(DECORATION_KEY);
-		if(data instanceof ControlDecoration) {
-			bindings[2] =
-					dbc.bindValue(
-							JFaceObservables.observeControlDecoration((ControlDecoration)data),
-							bindings[1].getValidationStatus(), null, null);
-		}
-		return bindings;
+		return performComplexTextBinding(dbc, control, modelValue, null, modelToTextConverter,
+				textToModelConverter, textValidator, textPostConvertValidator);
 	}
 
 	/**
@@ -185,14 +147,18 @@ public final class DataBindingUtils {
 	 * @return the array of constructed bindings
 	 */
 
-	// TODO(HP): is it not possible to have a single method that can deal with the code
-	// specification with or without comments?
-	public static Binding[] performComplexTextAndCommentBinding(DataBindingContext dbc,
-			Control control, IObservableValue modelValue, IObservableValue modelValueComment,
+	public static Binding[] performComplexTextBinding(DataBindingContext dbc, Control control,
+			IObservableValue modelValue, IObservableValue modelValueComment,
 			IConverter modelToTextConverter, IConverter textToModelConverter,
 			IValidator textValidator, IValidator textPostConvertValidator) {
 
-		Binding[] bindings = new Binding[4];
+		Binding[] bindings;
+
+		if(modelValueComment == null) {
+			bindings = new Binding[3];
+		} else {
+			bindings = new Binding[4];
+		}
 
 		// normal model to control
 		UpdateValueStrategy modelToTextStrategy =
@@ -210,10 +176,6 @@ public final class DataBindingUtils {
 				dbc.bindValue(observeText(control, SWT.Modify), modelValue,
 						textToModelStrategyWithUpdate, modelToTextStrategy);
 
-		// add the "normal" binding to actually update the comments
-		bindings[1] =
-				dbc.bindValue(observeText(control, SWT.Modify), modelValueComment, null, null);
-
 		// here it is important to only use POLICY_CONVERT, to not write through
 		// to the model
 		UpdateValueStrategy textToModelStrategyNoUpdate =
@@ -222,7 +184,7 @@ public final class DataBindingUtils {
 						.setAfterConvertValidator(textPostConvertValidator);
 
 		// perform a binding which only serves for validation purposes
-		bindings[2] =
+		bindings[1] =
 				dbc.bindValue(observeText(control, SWT.Modify), modelValue,
 						textToModelStrategyNoUpdate, new UpdateValueStrategy(
 								UpdateValueStrategy.POLICY_NEVER));
@@ -230,11 +192,18 @@ public final class DataBindingUtils {
 		// add validation of required/supported
 		final Object data = control.getData(DECORATION_KEY);
 		if(data instanceof ControlDecoration) {
-			bindings[3] =
+			bindings[2] =
 					dbc.bindValue(
 							JFaceObservables.observeControlDecoration((ControlDecoration)data),
 							bindings[1].getValidationStatus(), null, null);
 		}
+
+		// add the "normal" binding to actually update the comments
+		if(modelValueComment != null) {
+			bindings[3] =
+					dbc.bindValue(observeText(control, SWT.Modify), modelValueComment, null, null);
+		}
+
 		return bindings;
 	}
 
-- 
GitLab