Bug 448058: Replace RSE by org.eclipse.remote
[deliverable/tracecompass.git] / org.eclipse.tracecompass.lttng2.control.ui / src / org / eclipse / tracecompass / internal / lttng2 / control / ui / views / ControlView.java
index 2cfd5b434bcc399761bed16d1ccb62738f503df9..1f18b79308f3246eabf185035d77f4c5ed3919ab 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2013 Ericsson
+ * Copyright (c) 2009, 2014 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -9,10 +9,14 @@
  * Contributors:
  *   Francois Chouinard - Initial API and implementation
  *   Bernd Hufmann - Filled with content
+ *   Markus Schorn - Bug 448058: Use org.eclipse.remote in favor of RSE
  *******************************************************************************/
 
 package org.eclipse.tracecompass.internal.lttng2.control.ui.views;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
@@ -21,15 +25,21 @@ import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.rse.core.RSECorePlugin;
+import org.eclipse.remote.core.IRemoteConnection;
+import org.eclipse.remote.core.IRemoteServices;
+import org.eclipse.remote.core.RemoteServices;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.ITraceControlComponent;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.ITraceControlComponentChangedListener;
+import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TargetNodeComponent;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceControlContentProvider;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceControlLabelProvider;
 import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceControlRoot;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.part.ViewPart;
 import org.eclipse.ui.progress.UIJob;
 
@@ -51,6 +61,9 @@ public class ControlView extends ViewPart implements ITraceControlComponentChang
      */
     public static final String ID = "org.eclipse.linuxtools.internal.lttng2.ui.views.control"; //$NON-NLS-1$
 
+    private static final String KEY_REMOTE_CONNECTION_NAME = "rc_name_"; //$NON-NLS-1$
+    private static final String KEY_REMOTE_PROVIDER = "rc_id_"; //$NON-NLS-1$
+
     // ------------------------------------------------------------------------
     // Attributes
     // ------------------------------------------------------------------------
@@ -65,6 +78,8 @@ public class ControlView extends ViewPart implements ITraceControlComponentChang
      */
     private ITraceControlComponent fRoot = null;
 
+    private List<IRemoteConnection> fInitialConnections;
+
     // ------------------------------------------------------------------------
     // Accessors
     // ------------------------------------------------------------------------
@@ -94,14 +109,60 @@ public class ControlView extends ViewPart implements ITraceControlComponentChang
         // Create model root
         fRoot = new TraceControlRoot();
         fRoot.addComponentListener(this);
+        if (fInitialConnections != null) {
+            for (IRemoteConnection rc : fInitialConnections) {
+                TargetNodeComponent node = new TargetNodeComponent(rc.getName(), fRoot, rc);
+                fRoot.addChild(node);
+            }
+            fInitialConnections = null;
+        }
         fTreeViewer.setInput(fRoot);
 
         // Create context menu for the tree viewer
         createContextMenu();
 
         getSite().setSelectionProvider(fTreeViewer);
+    }
 
-        RSECorePlugin.getTheSystemRegistry(); // to load RSE
+    @Override
+    public void saveState(IMemento memento) {
+        int i = 0;
+        for (ITraceControlComponent cmp : fRoot.getChildren()) {
+            if (cmp instanceof TargetNodeComponent) {
+                IRemoteConnection rc = ((TargetNodeComponent) cmp).getRemoteConnection();
+                memento.putString(KEY_REMOTE_PROVIDER + i, rc.getRemoteServices().getId());
+                memento.putString(KEY_REMOTE_CONNECTION_NAME + i, rc.getName());
+                i++;
+            }
+        }
+        super.saveState(memento);
+    }
+
+
+    @Override
+    public void init(IViewSite site, IMemento memento) throws PartInitException {
+        super.init(site, memento);
+        if (memento != null) {
+            fInitialConnections = new ArrayList<>();
+            for(int i = 0; ; i++) {
+                String id = memento.getString(KEY_REMOTE_PROVIDER + i);
+                String name = memento.getString(KEY_REMOTE_CONNECTION_NAME + i);
+                if (id == null || name == null) {
+                    break;
+                }
+                if (!Workaround_Bug449362.triggerRSEStartup(id)) {
+                    // Skip the connection in order to avoid an infinite loop
+                } else {
+                    IRemoteServices rs = RemoteServices.getRemoteServices(id);
+                    if (rs != null) {
+                        IRemoteConnection rc = rs.getConnectionManager().getConnection(name);
+                        if (rc != null) {
+                            fInitialConnections.add(rc);
+                        }
+                    }
+                }
+            }
+        }
     }
 
     @Override
This page took 0.037924 seconds and 5 git commands to generate.