1
/**********************************************************************
2
* Copyright (c) 2012 Ericsson
4
* All rights reserved. This program and the accompanying materials are
5
* made available under the terms of the Eclipse Public License v1.0 which
6
* accompanies this distribution, and is available at
7
* http://www.eclipse.org/legal/epl-v10.html
10
* Bernd Hufmann - Initial API and implementation
11
**********************************************************************/
12
package org.eclipse.linuxtools.internal.lttng2.ui.views.control.handlers;
14
import java.util.Iterator;
15
import java.util.List;
17
import org.eclipse.core.commands.ExecutionException;
18
import org.eclipse.core.runtime.IProgressMonitor;
19
import org.eclipse.jface.viewers.ISelection;
20
import org.eclipse.jface.viewers.StructuredSelection;
21
import org.eclipse.linuxtools.internal.lttng2.core.control.model.LogLevelType;
22
import org.eclipse.linuxtools.internal.lttng2.core.control.model.TraceLogLevel;
23
import org.eclipse.linuxtools.internal.lttng2.ui.views.control.ControlView;
24
import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceChannelComponent;
25
import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceDomainComponent;
26
import org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.impl.TraceSessionComponent;
27
import org.eclipse.ui.IWorkbenchPage;
31
* Command handler implementation to enable events for a known channel.
34
* @author Bernd Hufmann
36
public class EnableEventOnChannelHandler extends BaseEnableEventHandler {
38
// ------------------------------------------------------------------------
40
// ------------------------------------------------------------------------
42
// ------------------------------------------------------------------------
44
// ------------------------------------------------------------------------
47
* @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.handlers.BaseEnableEventHandler#enableEvents(org.eclipse.linuxtools.internal.lttng2.ui.views.control.handlers.CommandParameter, java.util.List, boolean, org.eclipse.core.runtime.IProgressMonitor)
50
public void enableEvents(CommandParameter param, List<String> eventNames, boolean isKernel, IProgressMonitor monitor) throws ExecutionException {
51
if (param instanceof ChannelCommandParameter) {
52
((ChannelCommandParameter)param).getChannel().enableEvents(eventNames, monitor);
58
* @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.handlers.BaseEnableEventHandler#enableSyscalls(org.eclipse.linuxtools.internal.lttng2.ui.views.control.handlers.CommandParameter, org.eclipse.core.runtime.IProgressMonitor)
61
public void enableSyscalls(CommandParameter param, IProgressMonitor monitor) throws ExecutionException {
62
if (param instanceof ChannelCommandParameter) {
63
((ChannelCommandParameter)param).getChannel().enableSyscalls(monitor);
69
* @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.handlers.BaseEnableEventHandler#enableProbe(org.eclipse.linuxtools.internal.lttng2.ui.views.control.handlers.CommandParameter, java.lang.String, boolean, java.lang.String, org.eclipse.core.runtime.IProgressMonitor)
72
public void enableProbe(CommandParameter param, String eventName, boolean isFunction, String probe, IProgressMonitor monitor) throws ExecutionException {
73
if (param instanceof ChannelCommandParameter) {
74
((ChannelCommandParameter)param).getChannel().enableProbe(eventName, isFunction, probe, monitor);
80
* @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.handlers.BaseEnableEventHandler#enableLogLevel(org.eclipse.linuxtools.internal.lttng2.ui.views.control.handlers.CommandParameter, java.lang.String, org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.LogLevelType, org.eclipse.linuxtools.internal.lttng2.ui.views.control.model.TraceLogLevel, org.eclipse.core.runtime.IProgressMonitor)
83
public void enableLogLevel(CommandParameter param, String eventName, LogLevelType logLevelType, TraceLogLevel level, IProgressMonitor monitor) throws ExecutionException {
84
if (param instanceof ChannelCommandParameter) {
85
((ChannelCommandParameter)param).getChannel().enableLogLevel(eventName, logLevelType, level, monitor);
91
* @see org.eclipse.linuxtools.internal.lttng2.ui.views.control.handlers.BaseEnableEventHandler#getDomain(org.eclipse.linuxtools.internal.lttng2.ui.views.control.handlers.CommandParameter)
94
public TraceDomainComponent getDomain(CommandParameter param) {
95
if (param instanceof ChannelCommandParameter) {
96
return (TraceDomainComponent) ((ChannelCommandParameter)param).getChannel().getParent();
103
* @see org.eclipse.core.commands.AbstractHandler#isEnabled()
106
public boolean isEnabled() {
107
// Get workbench page for the Control View
108
IWorkbenchPage page = getWorkbenchPage();
113
TraceChannelComponent channel = null;
114
TraceSessionComponent session = null;
115
ISelection selection = page.getSelection(ControlView.ID);
116
if (selection instanceof StructuredSelection) {
117
StructuredSelection structered = ((StructuredSelection) selection);
118
for (Iterator<?> iterator = structered.iterator(); iterator.hasNext();) {
119
Object element = (Object) iterator.next();
120
if (element instanceof TraceChannelComponent) {
121
// Add only if corresponding TraceSessionComponents is inactive and not destroyed
122
TraceChannelComponent tmpChannel = (TraceChannelComponent) element;
123
session = tmpChannel.getSession();
124
if(!session.isDestroyed()) {
125
channel = tmpChannel;
131
boolean isEnabled = (channel != null);
136
fParam = new ChannelCommandParameter(session, channel);