[yocto] [PATCH 4/5] plugins/sdk.ide: Relay events from child widgets to the parent composite

Timo Mueller mail at timomueller.eu
Tue Mar 5 00:29:23 PST 2013


From: Timo Mueller <timo.mueller at bmw-carit.de>

If the content of the YoctoUISettings changes, because a contained
widget reports a modify or selection event, an corresponding event is
triggered on the parent composite. UI elements containing the
YoctoUISettings can now register listeners and be notified when the
content changes.

Signed-off-by: Timo Mueller <timo.mueller at bmw-carit.de>
---
 .../src/org/yocto/sdk/ide/YoctoUISetting.java      | 38 +++++++++++++++++++---
 1 file changed, 34 insertions(+), 4 deletions(-)

diff --git a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoUISetting.java b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoUISetting.java
index 3aa38d9..95209b6 100644
--- a/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoUISetting.java
+++ b/plugins/org.yocto.sdk.ide/src/org/yocto/sdk/ide/YoctoUISetting.java
@@ -31,6 +31,7 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.DirectoryDialog;
 import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.FileDialog;
 import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Label;
@@ -48,6 +49,8 @@ public class YoctoUISetting {
 	private ModifyListener fModifyListener;
 	private YoctoUIElement yoctoUIElement;
 
+	private Group crossCompilerGroup;
+
 	private Button btnSDKRoot;
 	private Button btnQemu;
 	private Button btnPokyRoot;
@@ -79,15 +82,43 @@ public class YoctoUISetting {
 
 			public void widgetSelected(SelectionEvent e) {
 				controlChanged(e.widget);
+				relayEvent(e);
+			}
+
+			private void relayEvent(SelectionEvent e) {
+				Event event = new Event();
+				event.data = e.data;
+				event.detail = e.detail;
+				event.display = e.display;
+				event.doit = e.doit;
+				event.height = e.height;
+				event.item = e.item;
+				event.stateMask = e.stateMask;
+				event.text = e.text;
+				event.time = e.time;
+				event.widget = e.widget;
+				event.width = e.width;
+				event.x = e.x;
+				event.y = e.y;
+				crossCompilerGroup.getParent().notifyListeners(SWT.Selection, event);
 			}
-		};		
+		};
 
 		fModifyListener= new ModifyListener() {
 			public void modifyText(ModifyEvent e) {
 				controlModified(e.widget);
+				relayEvent(e);
 			}
-		};
 
+			private void relayEvent(ModifyEvent e) {
+				Event event = new Event();
+				event.data = e.data;
+				event.display = e.display;
+				event.time = e.time;
+				event.widget = e.widget;
+				crossCompilerGroup.getParent().notifyListeners(SWT.Modify, event);
+			}
+		};
 	}
 
 	private Control addControls(Control fControl, final String sKey, String sValue)
@@ -185,7 +216,7 @@ public class YoctoUISetting {
 		GridData gd = new GridData(SWT.FILL, SWT.CENTER, true, false);
 		GridLayout layout = new GridLayout(2, false);
 
-		Group crossCompilerGroup= new Group(composite, SWT.NONE);
+		crossCompilerGroup = new Group(composite, SWT.NONE);
 		layout= new GridLayout(2, false);
 		crossCompilerGroup.setLayout(layout);
 		gd= new GridData(SWT.FILL, SWT.CENTER, true, false);
@@ -521,5 +552,4 @@ public class YoctoUISetting {
 		}
 
 	}
-
 }
-- 
1.7.11.7




More information about the yocto mailing list