From 65587cd05003054735c9ac9f88e73b81103c1f6b Mon Sep 17 00:00:00 2001
From: Alexander Diewald <diewald@fortiss.org>
Date: Wed, 1 Apr 2020 20:31:30 +0200
Subject: [PATCH] HACK: JFX: Enable deleting connectors again

Issue-Ref: 3985
Issue-Url: https://af3-developer.fortiss.org/issues/3985
Signed-off-by: Alexander Diewald <diewald@fortiss.org>
---
 .../src/org/fortiss/tooling/base/ui/utils/.ratings   |  2 +-
 .../tooling/base/ui/utils/LWFXEditorUtils.java       | 12 ++++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/utils/.ratings b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/utils/.ratings
index a92b49bdc..85140cb87 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/utils/.ratings
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/utils/.ratings
@@ -5,7 +5,7 @@ EllipseLayoutUIUtils.java 4dd9dbd96a45e8c455c019caa19e4a50f18336af GREEN
 FXDNDUtils.java 6ce94e239e68f9e2b3cc0524b072606f4a120076 GREEN
 FontUtils.java a167a05bdaa8da9853705cc5134f30f6d81bc9f2 GREEN
 GCStateManager.java 983973a92376b5c757c1253b32e33d0666ccdf7b GREEN
-LWFXEditorUtils.java 24ec0e23dc4b4e768ede8209335985867bdf0e35 GREEN
+LWFXEditorUtils.java 32b62765bec43e610e49d11213d58285ccfe9b06 YELLOW
 LayoutDataUIUtils.java c85886ac313a6efb122532218eb134047ffd6631 GREEN
 PropertiesViewUtils.java d345b4501c4092228edf1c98e0189317d53aaf22 GREEN
 RectangleLayoutUIUtils.java ef4b872bb5b4a51174e9a29d9ef05e7cb3bff3a1 GREEN
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/utils/LWFXEditorUtils.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/utils/LWFXEditorUtils.java
index 24ec0e23d..32b62765b 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/utils/LWFXEditorUtils.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/utils/LWFXEditorUtils.java
@@ -109,6 +109,12 @@ public final class LWFXEditorUtils {
 	 */
 	public static boolean stickyConnectorHasVisibleConnections(IConnector connector) {
 		IHierarchicElement elem = connector.getOwner();
+		if(elem == null) {
+			// TODO #3985: Work around NPE when deleting Connectors. We need a proper adapter-based
+			// solution that deregisters any children from the parent bundle via its decompose
+			// method before it is deleted.
+			return true;
+		}
 		IHierarchicElementContainer diagram = elem.getContainer();
 		for(IConnection conn : connector.getIncoming()) {
 			if(conn.getOwner() == diagram) {
@@ -129,6 +135,12 @@ public final class LWFXEditorUtils {
 	 */
 	public static boolean freeConnectorHasVisibleConnections(IConnector connector) {
 		IHierarchicElement diagram = connector.getOwner();
+		if(diagram == null) {
+			// TODO #3985: Work around NPE when deleting Connectors. We need a proper adapter-based
+			// solution that deregisters any children from the parent bundle via its decompose
+			// method before it is deleted.
+			return true;
+		}
 		for(IConnection conn : connector.getIncoming()) {
 			if(conn.getOwner() == diagram) {
 				return true;
-- 
GitLab