[577700] fixed search direction for watching subapp pins

With that also ? when watching subapp pins that are connected on the
outside with subapps is working correctly.

Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=577700
Change-Id: I80789f97bbb28638d8013e990e51ddafc8b00bb8
diff --git a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/DeviceMonitoringHandler.java b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/DeviceMonitoringHandler.java
index fd8ef68..9fe8384 100644
--- a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/DeviceMonitoringHandler.java
+++ b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/DeviceMonitoringHandler.java
@@ -135,10 +135,12 @@
 	private void checkSubappGroups(final HashMap<String, SubappGroup> collectedGroups, final Port port,
 			String portString, final MonitoringBaseElement element) {
 		List<MonitoringElement> subappPins = systemMonData.getSubappElements().get(portString);
-		final Entry<String, List<MonitoringElement>> subappEntry = systemMonData.getSubappElements(element);
-		if (element != null && subappPins == null && subappEntry != null) {
-			subappPins = subappEntry.getValue();
-			portString = subappEntry.getKey();
+		if (element != null && subappPins == null) {
+			final Entry<String, List<MonitoringElement>> subappEntry = systemMonData.getSubappElements(element);
+			if (subappEntry != null) {
+				subappPins = subappEntry.getValue();
+				portString = subappEntry.getKey();
+			}
 		}
 
 		if (subappPins != null) {
@@ -225,7 +227,7 @@
 				.equals(monitoringElement.getCurrentValue());
 	}
 
-	public static boolean isEventPin(final MonitoringElement monitoringElement) {
+	public static boolean isEventPin(final MonitoringBaseElement monitoringElement) {
 		return monitoringElement.getPort().getInterfaceElement() instanceof Event;
 	}
 
diff --git a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/SystemMonitoringData.java b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/SystemMonitoringData.java
index ac626b2..6e72163 100644
--- a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/SystemMonitoringData.java
+++ b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/SystemMonitoringData.java
@@ -17,7 +17,6 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -175,12 +174,12 @@
 
 
 	public void removeSubappElement(final MonitoringBaseElement element, final String portString) {
-		if (subappElements.containsKey(portString)) {
-			final List<MonitoringElement> subappPins = subappElements.get(portString);
+		if (getSubappElements().containsKey(portString)) {
+			final List<MonitoringElement> subappPins = getSubappElements().get(portString);
 			final boolean remove = subappPins.remove(element);
 			Assert.isTrue(remove);
 			if (subappPins.isEmpty()) {
-				subappElements.remove(portString);
+				getSubappElements().remove(portString);
 			}
 		}
 	}
@@ -191,7 +190,7 @@
 
 		if (port instanceof SubAppPortElement) {
 			final String portString = SubAppPortHelper
-					.findConnectedMonitoredSubappPort(port.getInterfaceElement(), subappElements);
+					.findConnectedMonitoredSubappPort(port.getInterfaceElement(), getSubappElements());
 			if (portString != null) {
 				addToSubappGroup(element, portString);
 			}
@@ -222,8 +221,8 @@
 	}
 
 	public boolean addToSubappGroup(final MonitoringBaseElement element, final String portString) {
-		if (subappElements.containsKey(portString)) {
-			final List<MonitoringElement> subappPins = subappElements.get(portString);
+		if (getSubappElements().containsKey(portString)) {
+			final List<MonitoringElement> subappPins = getSubappElements().get(portString);
 			subappPins.add((MonitoringElement) element);
 			return true;
 		}
@@ -234,7 +233,7 @@
 	public void createNewSubappGroup(final MonitoringBaseElement element, final String portString) {
 		final List<MonitoringElement> l = new ArrayList<>();
 		l.add((SubappMonitoringElement) element);
-		subappElements.put(portString, l);
+		getSubappElements().put(portString, l);
 		addExistingElementToSubappGroup(portString, l);
 	}
 
@@ -254,7 +253,7 @@
 		final IInterfaceElement interfaceElement = element.getPort().getInterfaceElement();
 
 		final String findConnectedMonitoredSubappPort = SubAppPortHelper
-				.findConnectedMonitoredSubappPort(interfaceElement, subappElements);
+				.findConnectedMonitoredSubappPort(interfaceElement, getSubappElements());
 
 		if (findConnectedMonitoredSubappPort != null) {
 			final List<MonitoringElement> list = subappElements.get(findConnectedMonitoredSubappPort);
@@ -270,13 +269,9 @@
 		return monitoredElements.get(port);
 	}
 
-	public Entry<String, List<MonitoringElement>> getSubappElements(final MonitoringBaseElement m)
-	{
-		final Iterator<Entry<String, List<MonitoringElement>>> entries = getSubappElements().entrySet().iterator();
-		while (entries.hasNext()) {
-			final Entry<String, List<MonitoringElement>> e = entries.next();
-			final List<MonitoringElement> l = e.getValue();
-			for (final MonitoringElement me : l) {
+	public Entry<String, List<MonitoringElement>> getSubappElements(final MonitoringBaseElement m) {
+		for (final Entry<String, List<MonitoringElement>> e : getSubappElements().entrySet()) {
+			for (final MonitoringElement me : e.getValue()) {
 				if (me.equals(m)) {
 					return e;
 				}
diff --git a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/model/SubAppPortHelper.java b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/model/SubAppPortHelper.java
index a81c1ca..aed9311 100644
--- a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/model/SubAppPortHelper.java
+++ b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/model/SubAppPortHelper.java
@@ -55,7 +55,7 @@
 	public static String findConnectedMonitoredSubappPort(final IInterfaceElement interfaceElement,
 			final Map<String, List<MonitoringElement>> subappElements) {
 
-		final boolean searchDirection = !interfaceElement.isIsInput();
+		final boolean searchDirection = interfaceElement.isIsInput();
 
 		IInterfaceElement currentIe = interfaceElement;
 		do {