[WIP] CFV Refactor
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.core / src / org / eclipse / tracecompass / internal / provisional / tmf / core / views / timegraph2 / TimeGraphModelRenderProvider.java
diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/internal/provisional/tmf/core/views/timegraph2/TimeGraphModelRenderProvider.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/internal/provisional/tmf/core/views/timegraph2/TimeGraphModelRenderProvider.java
new file mode 100644 (file)
index 0000000..2181506
--- /dev/null
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * Copyright (c) 2016 EfficiOS Inc., Alexandre Montplaisir
+ *
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.internal.provisional.tmf.core.views.timegraph2;
+
+import static org.eclipse.tracecompass.common.core.NonNullUtils.nullToEmptyString;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.jdt.annotation.Nullable;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+
+public abstract class TimeGraphModelRenderProvider implements ITimeGraphModelRenderProvider {
+
+    protected static final SortingMode DEFAULT_SORTING_MODE = new SortingMode(nullToEmptyString(Messages.DefaultSortingModeName));
+
+    private final List<SortingMode> fSortingModes;
+    private final List<FilterMode> fFilterModes;
+
+    private SortingMode fCurrentSortingMode;
+    private Set<FilterMode> fActiveFilterModes = new HashSet<>();
+
+    private long fConfiguredTimeRangeStart = 0L;
+    private long fConfiguredTimeRangeEnd = Long.MAX_VALUE;
+
+    protected TimeGraphModelRenderProvider(@Nullable List<SortingMode> sortingModes,
+            @Nullable List<FilterMode> filterModes) {
+        if (sortingModes == null || sortingModes.isEmpty()) {
+            fSortingModes = ImmutableList.of(DEFAULT_SORTING_MODE);
+        } else {
+            fSortingModes = ImmutableList.copyOf(sortingModes);
+
+        }
+        fCurrentSortingMode = fSortingModes.get(0);
+
+        if (filterModes == null || filterModes.isEmpty()) {
+            fFilterModes = ImmutableList.of();
+        } else {
+            fFilterModes = ImmutableList.copyOf(filterModes);
+        }
+    }
+
+    // ------------------------------------------------------------------------
+    // Sorting modes
+    // ------------------------------------------------------------------------
+
+    @Override
+    public List<SortingMode> getSortingModes() {
+        return fSortingModes;
+    }
+
+    @Override
+    public SortingMode getCurrentSortingMode() {
+        return fCurrentSortingMode;
+    }
+
+    @Override
+    public void setCurrentSortingMode(int index) {
+        fCurrentSortingMode = fSortingModes.get(index);
+    }
+
+    // ------------------------------------------------------------------------
+    // Filter modes
+    // ------------------------------------------------------------------------
+
+    @Override
+    public List<FilterMode> getFilterModes() {
+        return fFilterModes;
+    }
+
+    @Override
+    public void enableFilterMode(int index) {
+        fActiveFilterModes.add(fFilterModes.get(index));
+    }
+
+    @Override
+    public void disableFilterMode(int index) {
+        fActiveFilterModes.remove(fFilterModes.get(index));
+    }
+
+    @Override
+    public Set<FilterMode> getActiveFilterModes() {
+        return ImmutableSet.copyOf(fActiveFilterModes);
+    }
+
+    // ------------------------------------------------------------------------
+    // Other configuration options
+    // ------------------------------------------------------------------------
+
+    public long getConfiguredTimeRangeStart() {
+        return fConfiguredTimeRangeStart;
+    }
+
+    public long getConfiguredTimeRangeEnd() {
+        return fConfiguredTimeRangeEnd;
+    }
+
+    @Override
+    public void setConfiguredTimeRange(long start, long end) {
+        if (start < 0 || start > end) {
+            throw new IllegalArgumentException();
+        }
+        fConfiguredTimeRangeStart = start;
+        fConfiguredTimeRangeEnd = end;
+    }
+}
This page took 0.024471 seconds and 5 git commands to generate.