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 / dialogs / LoadDialog.java
index ddb14a90f7ed25ac70ec03f4f845ec89c481c70a..0671aade9d2c0d7c8388e71948e203f6920d4ec3 100644 (file)
@@ -22,33 +22,29 @@ import org.eclipse.core.filesystem.EFS;
 import org.eclipse.core.filesystem.IFileStore;
 import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.jface.dialogs.TitleAreaDialog;
+import org.eclipse.jface.preference.PreferenceDialog;
 import org.eclipse.jface.viewers.CheckStateChangedEvent;
 import org.eclipse.jface.viewers.CheckboxTreeViewer;
 import org.eclipse.jface.viewers.ICheckStateListener;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.remote.core.IRemoteConnection;
 import org.eclipse.remote.ui.widgets.RemoteResourceBrowserWidget;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.tracecompass.internal.lttng2.control.core.LttngProfileManager;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.Activator;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.messages.Messages;
+import org.eclipse.tracecompass.internal.lttng2.control.ui.views.preferences.ControlRemoteProfilesPreferencePage;
+import org.eclipse.tracecompass.internal.lttng2.control.ui.views.preferences.LTTngProfileViewer;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.service.LTTngControlServiceConstants;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.PreferencesUtil;
 
 /**
  * Dialog box for collecting parameter for loading a session.
@@ -202,19 +198,8 @@ public class LoadDialog extends TitleAreaDialog implements ILoadDialog {
             fLocalComposite.setLayout(new GridLayout(2, false));
             fLocalComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
 
-            Composite viewerComposite = new Composite(fLocalComposite, SWT.NONE);
-            viewerComposite.setLayout(new GridLayout(1, false));
-            viewerComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
-
-            fFolderViewer = new CheckboxTreeViewer(viewerComposite);
-            fFolderViewer.setContentProvider(new ProfileContentProvider());
-            fFolderViewer.setLabelProvider(new ProfileLabelProvider());
-            fFolderViewer.setInput(LttngProfileManager.getProfiles());
-
-            GridData data = new GridData(GridData.FILL_BOTH);
-            Tree tree = fFolderViewer.getTree();
-            tree.setLayoutData(data);
-
+            fFolderViewer = LTTngProfileViewer.createLTTngProfileViewer(fLocalComposite, SWT.NONE);
+            fFolderViewer.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
             fFolderViewer.addCheckStateListener(new ICheckStateListener() {
                 @Override
                 public void checkStateChanged(CheckStateChangedEvent event) {
@@ -289,8 +274,24 @@ public class LoadDialog extends TitleAreaDialog implements ILoadDialog {
     }
 
     @Override
-    protected void createButtonsForButtonBar(Composite parent) {
+    protected void createButtonsForButtonBar(final Composite parent) {
         createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
+        Button manageButton = createButton(parent, IDialogConstants.CLIENT_ID + 1, Messages.TraceControl_ManageButtonText, false);
+        manageButton.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                PreferenceDialog dialog =
+                        PreferencesUtil.createPreferenceDialogOn(parent.getShell(),
+                                ControlRemoteProfilesPreferencePage.ID,
+                                new String[] { ControlRemoteProfilesPreferencePage.ID },
+                                null);
+                dialog.open();
+                if (fLocalComposite != null) {
+                    fFolderViewer.setInput(LTTngProfileViewer.getViewerInput());
+                    enableLocalButtons();
+                }
+            }
+        });
         Button button = createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, false);
         button.setEnabled(false);
     }
@@ -319,61 +320,4 @@ public class LoadDialog extends TitleAreaDialog implements ILoadDialog {
         }
     }
 
-    /**
-     * Helper class for the contents of a folder in a tracing project
-     *
-     * @author Bernd Hufmann
-     */
-    public static class ProfileContentProvider implements ITreeContentProvider {
-        @Override
-        public Object[] getChildren(Object o) {
-
-            if (o instanceof File[]) {
-                return (File[]) o;
-            }
-            File store = (File) o;
-            if (store.isDirectory()) {
-                return store.listFiles();
-            }
-            return new Object[0];
-        }
-
-        @Override
-        public Object getParent(Object element) {
-            return ((File) element).getParent();
-        }
-
-        @Override
-        public void dispose() {
-        }
-
-        @Override
-        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-        }
-
-        @Override
-        public Object[] getElements(Object inputElement) {
-            return getChildren(inputElement);
-        }
-
-        @Override
-        public boolean hasChildren(Object element) {
-            return ((File) element).isDirectory();
-        }
-    }
-
-    static class ProfileLabelProvider extends LabelProvider {
-        @Override
-        public String getText(Object element) {
-            return ((File) element).getName();
-        }
-
-        @Override
-        public Image getImage(Object element) {
-            if (((File) element).isDirectory()) {
-                return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
-            }
-            return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE);
-        }
-    }
 }
This page took 0.02557 seconds and 5 git commands to generate.