Commit | Line | Data |
---|---|---|
ed963ef6 | 1 | /******************************************************************************* |
ed902a2b | 2 | * Copyright (c) 2012, 2014 Ericsson |
2dd0c429 | 3 | * |
ed963ef6 FC |
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 | |
2dd0c429 | 8 | * |
ed963ef6 FC |
9 | * Contributors: |
10 | * Francois Chouinard - Initial API and implementation | |
11 | *******************************************************************************/ | |
12 | ||
2bdf0193 | 13 | package org.eclipse.tracecompass.internal.tmf.ui.project.handlers; |
1cceddbe | 14 | |
15 | import java.util.Iterator; | |
ed963ef6 FC |
16 | |
17 | import org.eclipse.core.expressions.PropertyTester; | |
1cceddbe | 18 | import org.eclipse.jface.viewers.IStructuredSelection; |
2bdf0193 AM |
19 | import org.eclipse.tracecompass.tmf.ui.project.model.TmfExperimentElement; |
20 | import org.eclipse.tracecompass.tmf.ui.project.model.TmfTraceElement; | |
21 | import org.eclipse.tracecompass.tmf.ui.project.model.TmfTraceFolder; | |
ed963ef6 FC |
22 | |
23 | /** | |
24 | * <b><u>TracePropertyTester</u></b> | |
25 | * <p> | |
26 | */ | |
27 | public class TracePropertyTester extends PropertyTester { | |
28 | ||
29 | // ------------------------------------------------------------------------ | |
30 | // Constants | |
31 | // ------------------------------------------------------------------------ | |
2dd0c429 | 32 | |
d5a75e94 MK |
33 | private static final String IS_IN_TRACE_FOLDER = "isInTraceFolder"; //$NON-NLS-1$ |
34 | private static final String IS_EXPERIMENT_TRACE = "isExperimentTrace"; //$NON-NLS-1$ | |
35 | private static final String HAS_SUPPLEMENTARY_FILES = "hasSupplementaryFiles"; //$NON-NLS-1$ | |
36 | private static final String TRACE_TYPE = "traceType"; //$NON-NLS-1$ | |
2dd0c429 | 37 | |
ed963ef6 FC |
38 | // ------------------------------------------------------------------------ |
39 | // Constructor | |
40 | // ------------------------------------------------------------------------ | |
41 | ||
42 | /** | |
43 | * Default constructor | |
44 | */ | |
45 | public TracePropertyTester() { | |
46 | } | |
47 | ||
48 | // ------------------------------------------------------------------------ | |
49 | // IPropertyTester | |
50 | // ------------------------------------------------------------------------ | |
51 | ||
ed963ef6 FC |
52 | @Override |
53 | public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { | |
1cceddbe | 54 | |
55 | // Check if the selected elements are in the trace folder | |
2dd0c429 | 56 | if (IS_IN_TRACE_FOLDER.equals(property)) { |
bba6b570 | 57 | if (receiver instanceof IStructuredSelection) { |
1cceddbe | 58 | Iterator<?> iter = ((IStructuredSelection) receiver).iterator(); |
59 | while (iter.hasNext()) { | |
60 | Object item = iter.next(); | |
61 | if (item instanceof TmfTraceElement) { | |
f4c52cea | 62 | TmfTraceElement trace = (TmfTraceElement) item; |
1cceddbe | 63 | if (!(trace.getParent() instanceof TmfTraceFolder)) { |
64 | return false; | |
65 | } | |
66 | } else { | |
67 | return false; | |
68 | } | |
69 | } | |
70 | return true; | |
71 | } | |
72 | } | |
73 | ||
ed963ef6 | 74 | // Check if the parent of a trace element is an experiment |
2dd0c429 | 75 | if (IS_EXPERIMENT_TRACE.equals(property)) { |
bba6b570 | 76 | if (receiver instanceof TmfTraceElement) { |
2dd0c429 | 77 | TmfTraceElement trace = (TmfTraceElement) receiver; |
ed963ef6 FC |
78 | return trace.getParent() instanceof TmfExperimentElement; |
79 | } | |
1cceddbe | 80 | return false; |
ed963ef6 | 81 | } |
2dd0c429 | 82 | |
e12ecd30 | 83 | // Check if traces has supplementary files |
2dd0c429 | 84 | if (HAS_SUPPLEMENTARY_FILES.equals(property)) { |
5e4bf87d BH |
85 | if (receiver instanceof TmfTraceElement) { |
86 | TmfTraceElement trace = (TmfTraceElement) receiver; | |
e12ecd30 | 87 | return trace.hasSupplementaryResources(); |
5e4bf87d BH |
88 | } else if (receiver instanceof TmfExperimentElement) { |
89 | TmfExperimentElement trace = (TmfExperimentElement) receiver; | |
e12ecd30 | 90 | boolean hasHistory = false; |
5e4bf87d | 91 | for (TmfTraceElement aTrace : trace.getTraces()) { |
e12ecd30 | 92 | hasHistory |= aTrace.hasSupplementaryResources(); |
5e4bf87d | 93 | } |
65591c33 | 94 | hasHistory |= trace.hasSupplementaryResources(); |
e12ecd30 | 95 | return hasHistory; |
5e4bf87d BH |
96 | } |
97 | return false; | |
98 | } | |
99 | ||
2dd0c429 PT |
100 | // Check if the trace element is of a specific trace type |
101 | if (TRACE_TYPE.equals(property)) { | |
bba6b570 | 102 | if (receiver instanceof TmfTraceElement) { |
2dd0c429 PT |
103 | TmfTraceElement trace = (TmfTraceElement) receiver; |
104 | if (expectedValue instanceof String && expectedValue.equals(trace.getTraceType())) { | |
105 | return true; | |
106 | } | |
107 | } | |
108 | return false; | |
109 | } | |
110 | ||
ed963ef6 FC |
111 | return false; |
112 | } | |
113 | ||
114 | } |