Add capability to enable events with different parameters on session,
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng.ui / src / org / eclipse / linuxtools / lttng / ui / views / control / handlers / EnableEventOnChannelHandler.java
index 2c20bddf285577840edbd2c07ec6658b2041bbff..8c0b02dc1920b8b1c00dbdde6aa897ca2f25b84c 100644 (file)
@@ -19,7 +19,12 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.linuxtools.lttng.ui.views.control.ControlView;
+import org.eclipse.linuxtools.lttng.ui.views.control.model.LogLevelType;
+import org.eclipse.linuxtools.lttng.ui.views.control.model.TraceLogLevel;
+import org.eclipse.linuxtools.lttng.ui.views.control.model.TraceSessionState;
 import org.eclipse.linuxtools.lttng.ui.views.control.model.impl.TraceChannelComponent;
+import org.eclipse.linuxtools.lttng.ui.views.control.model.impl.TraceDomainComponent;
+import org.eclipse.linuxtools.lttng.ui.views.control.model.impl.TraceSessionComponent;
 import org.eclipse.ui.IWorkbenchPage;
 
 /**
@@ -43,10 +48,10 @@ public class EnableEventOnChannelHandler extends BaseEnableEventHandler {
     // ------------------------------------------------------------------------
     /*
      * (non-Javadoc)
-     * @see org.eclipse.linuxtools.lttng.ui.views.control.handlers.BaseEnableEventHandler#enableEvents(java.util.List, org.eclipse.core.runtime.IProgressMonitor)
+     * @see org.eclipse.linuxtools.lttng.ui.views.control.handlers.BaseEnableEventHandler#enableEvents(java.util.List, boolean, org.eclipse.core.runtime.IProgressMonitor)
      */
     @Override
-    void enableEvents(List<String> eventNames, IProgressMonitor monitor) throws ExecutionException {
+    public void enableEvents(List<String> eventNames, boolean isKernel, IProgressMonitor monitor) throws ExecutionException {
         fChannel.enableEvents(eventNames, monitor);
     }
 
@@ -55,7 +60,7 @@ public class EnableEventOnChannelHandler extends BaseEnableEventHandler {
      * @see org.eclipse.linuxtools.lttng.ui.views.control.handlers.BaseEnableEventHandler#enableSyscalls(org.eclipse.core.runtime.IProgressMonitor)
      */
     @Override
-    void enableSyscalls(IProgressMonitor monitor) throws ExecutionException {
+    public void enableSyscalls(IProgressMonitor monitor) throws ExecutionException {
         fChannel.enableSyscalls(monitor);
     }
 
@@ -64,7 +69,7 @@ public class EnableEventOnChannelHandler extends BaseEnableEventHandler {
      * @see org.eclipse.linuxtools.lttng.ui.views.control.handlers.BaseEnableEventHandler#enableProbe(java.lang.String, java.lang.String, org.eclipse.core.runtime.IProgressMonitor)
      */
     @Override
-    void enableProbe(String eventName, String probe, IProgressMonitor monitor) throws ExecutionException {
+    public void enableProbe(String eventName, String probe, IProgressMonitor monitor) throws ExecutionException {
         fChannel.enableProbe(eventName, probe, monitor);
     }
 
@@ -73,10 +78,28 @@ public class EnableEventOnChannelHandler extends BaseEnableEventHandler {
      * @see org.eclipse.linuxtools.lttng.ui.views.control.handlers.BaseEnableEventHandler#enableFunctionProbe(java.lang.String, java.lang.String, org.eclipse.core.runtime.IProgressMonitor)
      */
     @Override
-    void enableFunctionProbe(String eventName, String probe, IProgressMonitor monitor) throws ExecutionException {
+    public void enableFunctionProbe(String eventName, String probe, IProgressMonitor monitor) throws ExecutionException {
         fChannel.enableFunctionProbe(eventName, probe, monitor);
     }
     
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.linuxtools.lttng.ui.views.control.handlers.BaseEnableEventHandler#enableLogLevel(java.lang.String, org.eclipse.linuxtools.lttng.ui.views.control.model.LogLevelType, org.eclipse.linuxtools.lttng.ui.views.control.model.TraceLogLevel, org.eclipse.core.runtime.IProgressMonitor)
+     */
+    @Override
+    public void enableLogLevel(String eventName, LogLevelType logLevelType, TraceLogLevel level, IProgressMonitor monitor) throws ExecutionException {
+        fChannel.enableLogLevel(eventName, logLevelType, level, monitor);
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.linuxtools.lttng.ui.views.control.handlers.BaseEnableEventHandler#getDomain()
+     */
+    @Override
+    public TraceDomainComponent getDomain() {
+        return (TraceDomainComponent) fChannel.getParent();
+    }
+
     /*
      * (non-Javadoc)
      * @see org.eclipse.core.commands.AbstractHandler#isEnabled()
@@ -96,8 +119,13 @@ public class EnableEventOnChannelHandler extends BaseEnableEventHandler {
             for (Iterator<?> iterator = structered.iterator(); iterator.hasNext();) {
                 Object element = (Object) iterator.next();
                 if (element instanceof TraceChannelComponent) {
-                    fChannel = (TraceChannelComponent) element;
-                    fSession = fChannel.getSession();
+                    // Add only if corresponding TraceSessionComponents is inactive and not destroyed
+                    TraceChannelComponent channel = (TraceChannelComponent) element; 
+                    TraceSessionComponent session = channel.getSession();
+                    if(session.getSessionState() == TraceSessionState.INACTIVE && !session.isDestroyed()) {
+                        fChannel = channel;
+                        fSession = session;
+                    }
                 }
             }
         }
This page took 0.040794 seconds and 5 git commands to generate.