[WIP] CFV Refactor
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.core / src / org / eclipse / tracecompass / internal / provisional / tmf / core / views / timegraph2 / TimeGraphModelRenderProvider.java
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 }
This page took 0.033477 seconds and 5 git commands to generate.