Commit | Line | Data |
---|---|---|
ed963ef6 | 1 | /******************************************************************************* |
c8422608 | 2 | * Copyright (c) 2012, 2013 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 | ||
d34665f9 | 13 | package org.eclipse.linuxtools.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; |
ed963ef6 FC |
19 | import org.eclipse.linuxtools.tmf.ui.project.model.TmfExperimentElement; |
20 | import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceElement; | |
1cceddbe | 21 | import org.eclipse.linuxtools.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 PT |
32 | |
33 | private final static String IS_IN_TRACE_FOLDER = "isInTraceFolder"; //$NON-NLS-1$ | |
34 | private final static String IS_EXPERIMENT_TRACE = "isExperimentTrace"; //$NON-NLS-1$ | |
35 | private final static String HAS_SUPPLEMENTARY_FILES = "hasSupplementaryFiles"; //$NON-NLS-1$ | |
36 | private final static String TRACE_TYPE = "traceType"; //$NON-NLS-1$ | |
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)) { |
1cceddbe | 57 | if (receiver != null && receiver instanceof IStructuredSelection) { |
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)) { |
1cceddbe | 76 | if (receiver != null && 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 == null) { |
86 | return false; | |
87 | } | |
88 | ||
89 | if (receiver instanceof TmfTraceElement) { | |
90 | TmfTraceElement trace = (TmfTraceElement) receiver; | |
e12ecd30 | 91 | return trace.hasSupplementaryResources(); |
5e4bf87d BH |
92 | } else if (receiver instanceof TmfExperimentElement) { |
93 | TmfExperimentElement trace = (TmfExperimentElement) receiver; | |
e12ecd30 | 94 | boolean hasHistory = false; |
5e4bf87d | 95 | for (TmfTraceElement aTrace : trace.getTraces()) { |
e12ecd30 | 96 | hasHistory |= aTrace.hasSupplementaryResources(); |
5e4bf87d | 97 | } |
65591c33 | 98 | hasHistory |= trace.hasSupplementaryResources(); |
e12ecd30 | 99 | return hasHistory; |
5e4bf87d BH |
100 | } |
101 | return false; | |
102 | } | |
103 | ||
2dd0c429 PT |
104 | // Check if the trace element is of a specific trace type |
105 | if (TRACE_TYPE.equals(property)) { | |
106 | if (receiver != null && receiver instanceof TmfTraceElement) { | |
107 | TmfTraceElement trace = (TmfTraceElement) receiver; | |
108 | if (expectedValue instanceof String && expectedValue.equals(trace.getTraceType())) { | |
109 | return true; | |
110 | } | |
111 | } | |
112 | return false; | |
113 | } | |
114 | ||
ed963ef6 FC |
115 | return false; |
116 | } | |
117 | ||
118 | } |