blob: 2da07bb0d0b685732076fba629ef26aeb84feea8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2015 Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Yuriy Vashchuk - Initial API and implementation
* Patrick Tasse - Update filter nodes
*******************************************************************************/
package org.eclipse.tracecompass.tmf.ui.views.filter;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.tracecompass.internal.tmf.ui.Messages;
import org.eclipse.tracecompass.tmf.core.filter.model.TmfFilterAndNode;
import org.eclipse.tracecompass.tmf.core.filter.model.TmfFilterCompareNode;
import org.eclipse.tracecompass.tmf.core.filter.model.TmfFilterCompareNode.Type;
import org.eclipse.tracecompass.tmf.core.filter.model.TmfFilterContainsNode;
import org.eclipse.tracecompass.tmf.core.filter.model.TmfFilterEqualsNode;
import org.eclipse.tracecompass.tmf.core.filter.model.TmfFilterMatchesNode;
import org.eclipse.tracecompass.tmf.core.filter.model.TmfFilterNode;
import org.eclipse.tracecompass.tmf.core.filter.model.TmfFilterOrNode;
import org.eclipse.tracecompass.tmf.core.filter.model.TmfFilterTraceTypeNode;
/**
* This is the Label Provider for our Filter Tree
*
* @version 1.0
* @author Yuriy Vashchuk
*/
public class FilterTreeLabelProvider implements ILabelProvider {
private static final String EMPTY_STRING = ""; //$NON-NLS-1$
private static final String QUOTE = "\""; //$NON-NLS-1$
private static final String SPACE_QUOTE = " \""; //$NON-NLS-1$
private static final String NOT = "NOT "; //$NON-NLS-1$
@Override
public void addListener(ILabelProviderListener listener) {
// Do nothing
}
@Override
public void dispose() {
// Do nothing
}
@Override
public boolean isLabelProperty(Object element, String property) {
return false;
}
@Override
public void removeListener(ILabelProviderListener listener) {
// Do nothing
}
@Override
public Image getImage(Object element) {
return null;
}
@Override
public String getText(Object element) {
StringBuilder label = new StringBuilder();
if (element instanceof TmfFilterNode) {
TmfFilterNode node = (TmfFilterNode) element;
label.append(node.getNodeName()).append(' ').append(node.getFilterName() != null &&
!node.getFilterName().isEmpty() ? node.getFilterName() : Messages.FilterTreeLabelProvider_FilterNameHint);
} else if (element instanceof TmfFilterTraceTypeNode) {
TmfFilterTraceTypeNode node = (TmfFilterTraceTypeNode) element;
label.append(node.isNot() ? NOT : EMPTY_STRING).append("WITH ").append(node.getNodeName()).append(' ').append((node.getName() != null ? node.getName() : Messages.FilterTreeLabelProvider_TraceTypeHint)); //$NON-NLS-1$
} else if (element instanceof TmfFilterAndNode) {
TmfFilterAndNode node = (TmfFilterAndNode) element;
label.append((node.isNot() ? NOT : EMPTY_STRING)).append(node.getNodeName());
} else if (element instanceof TmfFilterOrNode) {
TmfFilterOrNode node = (TmfFilterOrNode) element;
label.append(node.isNot() ? NOT : EMPTY_STRING).append(node.getNodeName());
} else if (element instanceof TmfFilterContainsNode) {
TmfFilterContainsNode node = (TmfFilterContainsNode) element;
label.append(node.isNot() ? NOT : EMPTY_STRING)
.append(node.getEventAspect() != null ? node.getAspectLabel(false) : Messages.FilterTreeLabelProvider_AspectHint)
.append(' ').append(node.getNodeName()).append(node.getValue() != null ?
new StringBuilder().append(SPACE_QUOTE).append(node.getValue()).append(QUOTE).toString() : EMPTY_STRING);
} else if (element instanceof TmfFilterEqualsNode) {
TmfFilterEqualsNode node = (TmfFilterEqualsNode) element;
label.append(node.isNot() ? NOT : EMPTY_STRING)
.append(node.getEventAspect() != null ? node.getAspectLabel(false) : Messages.FilterTreeLabelProvider_AspectHint)
.append(' ').append(node.getNodeName())
.append(node.getValue() != null ? new StringBuilder().append(SPACE_QUOTE).append(node.getValue()).append(QUOTE).toString() : EMPTY_STRING);
} else if (element instanceof TmfFilterMatchesNode) {
TmfFilterMatchesNode node = (TmfFilterMatchesNode) element;
label.append(node.isNot() ? NOT : EMPTY_STRING)
.append(node.getEventAspect() != null ? node.getAspectLabel(false) : Messages.FilterTreeLabelProvider_AspectHint)
.append(' ').append(node.getNodeName())
.append(node.getRegex() != null ? new StringBuilder().append(SPACE_QUOTE).append(node.getRegex()).append(QUOTE).toString() : EMPTY_STRING);
} else if (element instanceof TmfFilterCompareNode) {
TmfFilterCompareNode node = (TmfFilterCompareNode) element;
label.append(node.isNot() ? NOT : EMPTY_STRING)
.append(node.getEventAspect() != null ? node.getAspectLabel(false) : Messages.FilterTreeLabelProvider_AspectHint)
.append(node.getResult() < 0 ? " <" : (node.getResult() > 0 ? " >" : " =")) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
.append(node.getType() == Type.ALPHA ? SPACE_QUOTE : node.getType() == Type.TIMESTAMP ? " [" : ' ') //$NON-NLS-1$
.append(node.hasValidValue() ? node.getValue() : Messages.FilterTreeLabelProvider_ValueHint)
.append(node.getType() == Type.ALPHA ? '\"' : node.getType() == Type.TIMESTAMP ? ']' : EMPTY_STRING);
}
return label.toString();
}
}