Commit | Line | Data |
---|---|---|
739b9fec AM |
1 | /******************************************************************************* |
2 | * Copyright (c) 2016 EfficiOS Inc., Alexandre Montplaisir | |
3 | * | |
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 | |
8 | *******************************************************************************/ | |
9 | ||
10 | package org.eclipse.tracecompass.internal.provisional.tmf.core.views.timegraph2; | |
11 | ||
12 | import static org.eclipse.tracecompass.common.core.NonNullUtils.nullToEmptyString; | |
13 | ||
14 | import java.util.HashSet; | |
15 | import java.util.List; | |
16 | import java.util.Set; | |
17 | ||
18 | import org.eclipse.jdt.annotation.Nullable; | |
19 | ||
20 | import com.google.common.collect.ImmutableList; | |
21 | import com.google.common.collect.ImmutableSet; | |
22 | ||
23 | public abstract class TimeGraphModelRenderProvider implements ITimeGraphModelRenderProvider { | |
24 | ||
25 | protected static final SortingMode DEFAULT_SORTING_MODE = new SortingMode(nullToEmptyString(Messages.DefaultSortingModeName)); | |
26 | ||
27 | private final List<SortingMode> fSortingModes; | |
28 | private final List<FilterMode> fFilterModes; | |
29 | ||
30 | private SortingMode fCurrentSortingMode; | |
31 | private Set<FilterMode> fActiveFilterModes = new HashSet<>(); | |
32 | ||
33 | private long fConfiguredTimeRangeStart = 0L; | |
34 | private long fConfiguredTimeRangeEnd = Long.MAX_VALUE; | |
35 | ||
36 | protected TimeGraphModelRenderProvider(@Nullable List<SortingMode> sortingModes, | |
37 | @Nullable List<FilterMode> filterModes) { | |
38 | if (sortingModes == null || sortingModes.isEmpty()) { | |
39 | fSortingModes = ImmutableList.of(DEFAULT_SORTING_MODE); | |
40 | } else { | |
41 | fSortingModes = ImmutableList.copyOf(sortingModes); | |
42 | ||
43 | } | |
44 | fCurrentSortingMode = fSortingModes.get(0); | |
45 | ||
46 | if (filterModes == null || filterModes.isEmpty()) { | |
47 | fFilterModes = ImmutableList.of(); | |
48 | } else { | |
49 | fFilterModes = ImmutableList.copyOf(filterModes); | |
50 | } | |
51 | } | |
52 | ||
53 | // ------------------------------------------------------------------------ | |
54 | // Sorting modes | |
55 | // ------------------------------------------------------------------------ | |
56 | ||
57 | @Override | |
58 | public List<SortingMode> getSortingModes() { | |
59 | return fSortingModes; | |
60 | } | |
61 | ||
62 | @Override | |
63 | public SortingMode getCurrentSortingMode() { | |
64 | return fCurrentSortingMode; | |
65 | } | |
66 | ||
67 | @Override | |
68 | public void setCurrentSortingMode(int index) { | |
69 | fCurrentSortingMode = fSortingModes.get(index); | |
70 | } | |
71 | ||
72 | // ------------------------------------------------------------------------ | |
73 | // Filter modes | |
74 | // ------------------------------------------------------------------------ | |
75 | ||
76 | @Override | |
77 | public List<FilterMode> getFilterModes() { | |
78 | return fFilterModes; | |
79 | } | |
80 | ||
81 | @Override | |
82 | public void enableFilterMode(int index) { | |
83 | fActiveFilterModes.add(fFilterModes.get(index)); | |
84 | } | |
85 | ||
86 | @Override | |
87 | public void disableFilterMode(int index) { | |
88 | fActiveFilterModes.remove(fFilterModes.get(index)); | |
89 | } | |
90 | ||
91 | @Override | |
92 | public Set<FilterMode> getActiveFilterModes() { | |
93 | return ImmutableSet.copyOf(fActiveFilterModes); | |
94 | } | |
95 | ||
96 | // ------------------------------------------------------------------------ | |
97 | // Other configuration options | |
98 | // ------------------------------------------------------------------------ | |
99 | ||
100 | public long getConfiguredTimeRangeStart() { | |
101 | return fConfiguredTimeRangeStart; | |
102 | } | |
103 | ||
104 | public long getConfiguredTimeRangeEnd() { | |
105 | return fConfiguredTimeRangeEnd; | |
106 | } | |
107 | ||
108 | @Override | |
109 | public void setConfiguredTimeRange(long start, long end) { | |
110 | if (start < 0 || start > end) { | |
111 | throw new IllegalArgumentException(); | |
112 | } | |
113 | fConfiguredTimeRangeStart = start; | |
114 | fConfiguredTimeRangeEnd = end; | |
115 | } | |
116 | } |