control: Bug 483560: Refresh UI once after adding all children events
authorBernd Hufmann <Bernd.Hufmann@ericsson.com>
Tue, 8 Dec 2015 12:28:10 +0000 (07:28 -0500)
committerBernd Hufmann <bernd.hufmann@ericsson.com>
Wed, 9 Dec 2015 19:27:24 +0000 (14:27 -0500)
This will redraw the tree only once after all children event components
are added for channels, ust and kernel provider. Before this change the
UI was redrawn after each event.

Change-Id: If48ac0740be8884bcf52bb7f3da4a15859a3639f
Signed-off-by: Bernd Hufmann <Bernd.Hufmann@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/62200
Reviewed-by: Hudson CI
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Tested-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/model/impl/KernelProviderComponent.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/model/impl/TraceControlComponent.java
lttng/org.eclipse.tracecompass.lttng2.control.ui/src/org/eclipse/tracecompass/internal/lttng2/control/ui/views/model/impl/UstProviderComponent.java

index 2992cb304c95549a9349cca2aade49653f31d027..aa42d659437579a8119f8e94561d592220e6c9d1 100644 (file)
@@ -12,6 +12,7 @@
 
 package org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl;
 
+import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
@@ -63,12 +64,14 @@ public class KernelProviderComponent extends TraceControlComponent {
      * @param eventInfos - events information to set.
      */
     public void setEventInfo(List<IBaseEventInfo> eventInfos) {
+        List<ITraceControlComponent> eventComponents = new ArrayList<>();
         for (Iterator<IBaseEventInfo> iterator = eventInfos.iterator(); iterator.hasNext();) {
             IBaseEventInfo baseEventInfo = iterator.next();
             BaseEventComponent component = new BaseEventComponent(baseEventInfo.getName(), this);
             component.setEventInfo(baseEventInfo);
-            addChild(component);
+            eventComponents.add(component);
         }
+        setChildren(eventComponents);
     }
 
     @Override
index b66988853f5185ccd5b2b9dcad9170161a22942e..2712be60ff6681cc2b7eea69cf2cafb543bc1eb6 100644 (file)
@@ -160,8 +160,8 @@ public class TraceControlComponent implements ITraceControlComponent {
         for (Iterator<ITraceControlComponent> iterator = children.iterator(); iterator.hasNext();) {
             ITraceControlComponent traceControlComponent = iterator.next();
             fChildren.add(traceControlComponent);
-            fireComponentChanged(this);
         }
+        fireComponentChanged(this);
     }
 
     @Override
@@ -274,7 +274,6 @@ public class TraceControlComponent implements ITraceControlComponent {
             fListeners.remove(listener);
         }
     }
-
     @Override
     public void fireComponentAdded(ITraceControlComponent parent, ITraceControlComponent component) {
         if (component == null) {
@@ -308,7 +307,6 @@ public class TraceControlComponent implements ITraceControlComponent {
             }
         }
     }
-
     @Override
     public void fireComponentChanged(ITraceControlComponent component) {
         if (component == null) {
index b1b297b3a15e77704f24930079da35f8cc857c43..d43a5087e4ba77a8703602060873e420e0a35b53 100644 (file)
@@ -12,6 +12,9 @@
 
 package org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.IBaseEventInfo;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.IUstProviderInfo;
 import org.eclipse.tracecompass.internal.lttng2.control.core.model.impl.UstProviderInfo;
@@ -70,11 +73,13 @@ public class UstProviderComponent extends TraceControlComponent {
     public void setUstProvider(IUstProviderInfo providerInfo) {
         fProviderInfo = providerInfo;
         IBaseEventInfo[] events = providerInfo.getEvents();
+        List<ITraceControlComponent> eventComponents = new ArrayList<>();
         for (int i = 0; i < events.length; i++) {
             BaseEventComponent component  = new BaseEventComponent(events[i].getName(), this);
             component.setEventInfo(events[i]);
-            addChild(component);
+            eventComponents.add(component);
         }
+        setChildren(eventComponents);
         setName(getName() + " [PID=" + fProviderInfo.getPid() + "]"); //$NON-NLS-1$ //$NON-NLS-2$
     }
 
This page took 0.026961 seconds and 5 git commands to generate.