tmf: Make ITimeGraphContentProvider extend ITreeContentProvider
authorPatrick Tasse <patrick.tasse@gmail.com>
Sat, 14 Mar 2015 16:56:48 +0000 (12:56 -0400)
committerPatrick Tasse <patrick.tasse@gmail.com>
Wed, 25 Mar 2015 22:03:35 +0000 (18:03 -0400)
This will allow the same provider to be used for the time graph viewer
and tree viewer in a time graph combo.

A default implementation is provided that accepts an ITimeGraphEntry
array or list as input element.

Change-Id: Icd8ac8b89e4b46c91c0474616578c375475e7e9a
Signed-off-by: Patrick Tasse <patrick.tasse@gmail.com>
Reviewed-on: https://git.eclipse.org/r/43853
Reviewed-by: Hudson CI
org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/callstack/CallStackView.java
org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/timegraph/AbstractTimeGraphView.java
org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/widgets/timegraph/ITimeGraphContentProvider.java
org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/widgets/timegraph/TimeGraphContentProvider.java [new file with mode: 0644]
org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/widgets/timegraph/TimeGraphViewer.java

index afe673cb590af118a7e432cf3edb547115ca0760..a2f6d2effdc32a805a510d2cd54828e6e8747be0 100644 (file)
@@ -49,8 +49,6 @@ import org.eclipse.jface.viewers.ILabelProviderListener;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.ControlAdapter;
 import org.eclipse.swt.events.ControlEvent;
@@ -92,10 +90,10 @@ import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
 import org.eclipse.tracecompass.tmf.core.trace.TmfTraceUtils;
 import org.eclipse.tracecompass.tmf.ui.editors.ITmfTraceEditor;
 import org.eclipse.tracecompass.tmf.ui.views.TmfView;
-import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.ITimeGraphContentProvider;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.ITimeGraphRangeListener;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.ITimeGraphTimeListener;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.TimeGraphCombo;
+import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.TimeGraphContentProvider;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.TimeGraphRangeUpdateEvent;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.TimeGraphTimeEvent;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.TimeGraphViewer;
@@ -338,47 +336,6 @@ public class CallStackView extends TmfView {
         }
     }
 
-    private class TreeContentProvider implements ITreeContentProvider {
-
-        @Override
-        public void dispose() {
-        }
-
-        @Override
-        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-        }
-
-        @Override
-        public Object[] getElements(Object inputElement) {
-            if (inputElement != null) {
-                try {
-                    return ((List<?>) inputElement).toArray(new ITimeGraphEntry[0]);
-                } catch (ClassCastException e) {
-                }
-            }
-            return new ITimeGraphEntry[0];
-        }
-
-        @Override
-        public Object[] getChildren(Object parentElement) {
-            ITimeGraphEntry entry = (ITimeGraphEntry) parentElement;
-            return entry.getChildren().toArray();
-        }
-
-        @Override
-        public Object getParent(Object element) {
-            ITimeGraphEntry entry = (ITimeGraphEntry) element;
-            return entry.getParent();
-        }
-
-        @Override
-        public boolean hasChildren(Object element) {
-            ITimeGraphEntry entry = (ITimeGraphEntry) element;
-            return entry.hasChildren();
-        }
-
-    }
-
     private class TreeLabelProvider implements ITableLabelProvider {
 
         @Override
@@ -442,21 +399,6 @@ public class CallStackView extends TmfView {
 
     }
 
-    private class TimeGraphContentProvider implements ITimeGraphContentProvider {
-
-        @Override
-        public ITimeGraphEntry[] getElements(Object inputElement) {
-            if (inputElement != null) {
-                try {
-                    return ((List<?>) inputElement).toArray(new ITimeGraphEntry[0]);
-                } catch (ClassCastException e) {
-                }
-            }
-            return new ITimeGraphEntry[0];
-        }
-
-    }
-
     private class BuildThread extends Thread {
         private final @NonNull ITmfTrace fBuildTrace;
         private final ITmfTrace fParentTrace;
@@ -556,7 +498,7 @@ public class CallStackView extends TmfView {
     public void createPartControl(Composite parent) {
         fTimeGraphCombo = new TimeGraphCombo(parent, SWT.NONE);
 
-        fTimeGraphCombo.setTreeContentProvider(new TreeContentProvider());
+        fTimeGraphCombo.setTreeContentProvider(new TimeGraphContentProvider());
 
         fTimeGraphCombo.setTreeLabelProvider(new TreeLabelProvider());
 
index 0d31d3bd54a8d44507eeee706d4015df46b8ef35..5eb02b1e8c143600eac205a72f1c06a850a09c38 100644 (file)
@@ -38,9 +38,7 @@ import org.eclipse.jface.viewers.ILabelProvider;
 import org.eclipse.jface.viewers.ILabelProviderListener;
 import org.eclipse.jface.viewers.ISelectionProvider;
 import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.widgets.Composite;
@@ -67,6 +65,7 @@ import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.ITimeGraphRangeListener
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.ITimeGraphSelectionListener;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.ITimeGraphTimeListener;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.TimeGraphCombo;
+import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.TimeGraphContentProvider;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.TimeGraphPresentationProvider;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.TimeGraphRangeUpdateEvent;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.TimeGraphTimeEvent;
@@ -345,63 +344,6 @@ public abstract class AbstractTimeGraphView extends TmfView {
         }
     }
 
-    private class TreeContentProvider implements ITreeContentProvider {
-
-        @Override
-        public void dispose() {
-        }
-
-        @Override
-        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-        }
-
-        @Override
-        public ITimeGraphEntry[] getElements(Object inputElement) {
-            if (inputElement != null) {
-                try {
-                    return ((List<?>) inputElement).toArray(new ITimeGraphEntry[0]);
-                } catch (ClassCastException e) {
-                }
-            }
-            return new ITimeGraphEntry[0];
-        }
-
-        @Override
-        public Object[] getChildren(Object parentElement) {
-            ITimeGraphEntry entry = (ITimeGraphEntry) parentElement;
-            List<? extends ITimeGraphEntry> children = entry.getChildren();
-            return children.toArray(new ITimeGraphEntry[children.size()]);
-        }
-
-        @Override
-        public Object getParent(Object element) {
-            ITimeGraphEntry entry = (ITimeGraphEntry) element;
-            return entry.getParent();
-        }
-
-        @Override
-        public boolean hasChildren(Object element) {
-            ITimeGraphEntry entry = (ITimeGraphEntry) element;
-            return entry.hasChildren();
-        }
-
-    }
-
-    private class TimeGraphContentProvider implements ITimeGraphContentProvider {
-
-        @Override
-        public ITimeGraphEntry[] getElements(Object inputElement) {
-            if (inputElement != null) {
-                try {
-                    return ((List<?>) inputElement).toArray(new ITimeGraphEntry[0]);
-                } catch (ClassCastException e) {
-                }
-            }
-            return new ITimeGraphEntry[0];
-        }
-
-    }
-
     /**
      * Base class to provide the labels for the tree viewer. Views extending
      * this class typically need to override the getColumnText method if they
@@ -853,21 +795,22 @@ public abstract class AbstractTimeGraphView extends TmfView {
 
     @Override
     public void createPartControl(Composite parent) {
+        ITimeGraphContentProvider contentProvider = new TimeGraphContentProvider();
         if (fColumns == null || fLabelProvider == null) {
             fTimeGraphWrapper = new TimeGraphViewerWrapper(parent, SWT.NONE);
             TimeGraphViewer viewer = fTimeGraphWrapper.getTimeGraphViewer();
-            viewer.setTimeGraphContentProvider(new TimeGraphContentProvider());
+            viewer.setTimeGraphContentProvider(contentProvider);
         } else {
             TimeGraphComboWrapper wrapper = new TimeGraphComboWrapper(parent, SWT.NONE);
             fTimeGraphWrapper = wrapper;
             TimeGraphCombo combo = wrapper.getTimeGraphCombo();
-            combo.setTreeContentProvider(new TreeContentProvider());
+            combo.setTreeContentProvider(contentProvider);
             combo.setTreeLabelProvider(fLabelProvider);
             combo.setTreeColumns(fColumns);
-            combo.setFilterContentProvider(new TreeContentProvider());
+            combo.setFilterContentProvider(contentProvider);
             combo.setFilterLabelProvider(fFilterLabelProvider);
             combo.setFilterColumns(fFilterColumns);
-            combo.setTimeGraphContentProvider(new TimeGraphContentProvider());
+            combo.setTimeGraphContentProvider(contentProvider);
         }
 
         fTimeGraphWrapper.setTimeGraphProvider(fPresentation);
index 883ea7e978af29bcfcdaf0e29444b5e04e988a69..12d79f77af355143ab078314aa3702031b32be62 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2014 Ericsson
+ * Copyright (c) 2014, 2015 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -12,6 +12,7 @@
 
 package org.eclipse.tracecompass.tmf.ui.widgets.timegraph;
 
+import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeGraphEntry;
 
 
@@ -19,7 +20,7 @@ import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeGraphEntry;
  * A content provider mediates between the viewer's model
  * and the viewer itself.
  */
-public interface ITimeGraphContentProvider {
+public interface ITimeGraphContentProvider extends ITreeContentProvider {
     /**
      * Returns the time graph entries to display in the viewer when its input is
      * set to the given element.
@@ -28,5 +29,18 @@ public interface ITimeGraphContentProvider {
      *            the input element
      * @return the array of time graph entries to display in the viewer
      */
+    @Override
     public ITimeGraphEntry[] getElements(Object inputElement);
+
+    /**
+     * @since 1.0
+     */
+    @Override
+    public ITimeGraphEntry[] getChildren(Object parentElement);
+
+    /**
+     * @since 1.0
+     */
+    @Override
+    public ITimeGraphEntry getParent(Object element);
 }
diff --git a/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/widgets/timegraph/TimeGraphContentProvider.java b/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/widgets/timegraph/TimeGraphContentProvider.java
new file mode 100644 (file)
index 0000000..e874631
--- /dev/null
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Ericsson
+ *
+ * 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
+ *
+ * Contributors:
+ *   Patrick Tasse - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.tmf.ui.widgets.timegraph;
+
+import java.util.List;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeGraphEntry;
+
+/**
+ * Base provider class for the time graph content provider
+ * <p>
+ * The default implementation accepts an ITimeGraphEntry[] or a List of
+ * ITimeGraphEntry as input element.
+ *
+ * @author Patrick Tasse
+ * @since 1.0
+ */
+
+public class TimeGraphContentProvider implements ITimeGraphContentProvider {
+
+    @Override
+    public ITimeGraphEntry[] getElements(Object inputElement) {
+        if (inputElement instanceof ITimeGraphEntry[]) {
+            return (ITimeGraphEntry[]) inputElement;
+        } else if (inputElement instanceof List) {
+            try {
+                return ((List<?>) inputElement).toArray(new ITimeGraphEntry[0]);
+            } catch (ClassCastException e) {
+            }
+        }
+        return new ITimeGraphEntry[0];
+    }
+
+    @Override
+    public boolean hasChildren(Object element) {
+        ITimeGraphEntry entry = (ITimeGraphEntry) element;
+        return entry.hasChildren();
+    }
+
+    @Override
+    public ITimeGraphEntry[] getChildren(Object parentElement) {
+        ITimeGraphEntry entry = (ITimeGraphEntry) parentElement;
+        List<? extends ITimeGraphEntry> children = entry.getChildren();
+        return children.toArray(new ITimeGraphEntry[children.size()]);
+    }
+
+    @Override
+    public ITimeGraphEntry getParent(Object element) {
+        ITimeGraphEntry entry = (ITimeGraphEntry) element;
+        return entry.getParent();
+    }
+
+    @Override
+    public void dispose() {
+    }
+
+    @Override
+    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+    }
+
+}
index efe99f67fdf951c0fc72cf4d43f64151f02cdbd8..919627a7e25d54731ee8dbd59476d696f0622733 100644 (file)
@@ -206,15 +206,7 @@ public class TimeGraphViewer implements ITimeDataProvider, SelectionListener {
      */
     public TimeGraphViewer(Composite parent, int style) {
         createDataViewer(parent, style);
-        fTimeGraphContentProvider = new ITimeGraphContentProvider() {
-            @Override
-            public ITimeGraphEntry[] getElements(Object inputElement) {
-                if (inputElement instanceof ITimeGraphEntry[]) {
-                    return (ITimeGraphEntry[]) inputElement;
-                }
-                return new ITimeGraphEntry[0];
-            }
-        };
+        fTimeGraphContentProvider = new TimeGraphContentProvider();
     }
 
     /**
This page took 0.039784 seconds and 5 git commands to generate.