control: Add LTTng profile preference page
[deliverable/tracecompass.git] / lttng / org.eclipse.tracecompass.lttng2.control.ui / src / org / eclipse / tracecompass / internal / lttng2 / control / ui / views / preferences / LTTngProfileViewer.java
1 /**********************************************************************
2 * Copyright (c) 2015 Ericsson
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 * Contributors:
10 * Bernd Hufmann - Initial API and implementation
11 **********************************************************************/
12
13 package org.eclipse.tracecompass.internal.lttng2.control.ui.views.preferences;
14
15 import java.io.File;
16
17 import org.eclipse.jface.viewers.CheckboxTreeViewer;
18 import org.eclipse.jface.viewers.ITreeContentProvider;
19 import org.eclipse.jface.viewers.LabelProvider;
20 import org.eclipse.jface.viewers.Viewer;
21 import org.eclipse.swt.graphics.Image;
22 import org.eclipse.swt.widgets.Composite;
23 import org.eclipse.tracecompass.internal.lttng2.control.core.LttngProfileManager;
24 import org.eclipse.ui.ISharedImages;
25 import org.eclipse.ui.PlatformUI;
26
27 /**
28 * Class to create LTTng Profiles viewer (CheckboxTreeViewer).
29 */
30 public class LTTngProfileViewer {
31
32 /**
33 * Creates a CheckboxTreeViewer for selection available LTTng profiles.
34 * @param parent
35 * A parent composite
36 * @param style
37 * The style bits
38 * @return LTTng Profiles CheckboxTreeViewer
39 */
40 public static CheckboxTreeViewer createLTTngProfileViewer(Composite parent, int style) {
41 CheckboxTreeViewer fFolderViewer = new CheckboxTreeViewer(parent, style);
42 fFolderViewer.setContentProvider(new ProfileContentProvider());
43 fFolderViewer.setLabelProvider(new ProfileLabelProvider());
44 fFolderViewer.setInput(getViewerInput());
45 return fFolderViewer;
46 }
47
48 /**
49 * Gets the viewer input
50 *
51 * @return the viewer input
52 */
53 public static File[] getViewerInput() {
54 return LttngProfileManager.getProfiles();
55 }
56
57 /**
58 * Helper class for the contents of a folder in a tracing project
59 */
60 public static class ProfileContentProvider implements ITreeContentProvider {
61 @Override
62 public Object[] getChildren(Object o) {
63 File store = (File) o;
64 if (store.isDirectory()) {
65 return store.listFiles();
66 }
67 return new Object[0];
68 }
69
70 @Override
71 public Object getParent(Object element) {
72 if (element instanceof File) {
73 return ((File) element).getParent();
74 }
75 return null;
76 }
77
78 @Override
79 public void dispose() {
80 }
81
82 @Override
83 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
84 }
85
86 @Override
87 public Object[] getElements(Object inputElement) {
88 if (inputElement instanceof File[]) {
89 return (File[]) inputElement;
90 }
91 return getChildren(inputElement);
92 }
93
94 @Override
95 public boolean hasChildren(Object element) {
96 return ((File) element).isDirectory();
97 }
98 }
99
100 /**
101 * Helper label provider for LTTng profiles.
102 */
103 public static class ProfileLabelProvider extends LabelProvider {
104 @Override
105 public String getText(Object element) {
106 return ((File) element).getName();
107 }
108
109 @Override
110 public Image getImage(Object element) {
111 if (((File) element).isDirectory()) {
112 return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
113 }
114 return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE);
115 }
116 }
117
118 }
This page took 0.041465 seconds and 5 git commands to generate.