use of org.eclipse.tracecompass.internal.tmf.remote.ui.wizards.fetch.model.RemoteImportConnectionNodeElement in project tracecompass by tracecompass.
the class ImportHandler method execute.
// ------------------------------------------------------------------------
// Operations
// ------------------------------------------------------------------------
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
if (window == null) {
return false;
}
CommandParameter param;
fLock.lock();
try {
param = fParam;
if (param == null) {
return null;
}
param = param.clone();
} finally {
fLock.unlock();
}
// create default project
IProject project = TmfProjectRegistry.createProject(RemoteFetchLogWizardRemotePage.DEFAULT_REMOTE_PROJECT_NAME, null, null);
if (param.getSession().isLiveTrace()) {
importLiveTrace(new LttngRelaydConnectionInfo(param.getSession().getLiveUrl(), param.getSession().getLivePort(), param.getSession().getName()), project);
return null;
} else if (param.getSession().isStreamedTrace()) {
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
String notify = store.getString(NOTIFY_IMPORT_STREAMED_PREF_KEY);
if (!MessageDialogWithToggle.ALWAYS.equals(notify)) {
MessageDialogWithToggle.openInformation(window.getShell(), null, Messages.TraceControl_ImportDialogStreamedTraceNotification, Messages.TraceControl_ImportDialogStreamedTraceNotificationToggle, false, store, NOTIFY_IMPORT_STREAMED_PREF_KEY);
}
// Streamed trace
TmfProjectElement projectElement = TmfProjectRegistry.getProject(project, true);
TmfTraceFolder traceFolder = projectElement.getTracesFolder();
ImportTraceWizard wizard = new ImportTraceWizard();
wizard.init(PlatformUI.getWorkbench(), new StructuredSelection(traceFolder));
WizardDialog dialog = new WizardDialog(window.getShell(), wizard);
dialog.open();
return null;
}
// Generate the profile
TraceSessionComponent session = param.getSession();
// $NON-NLS-1$
RemoteImportProfileElement profile = new RemoteImportProfileElement(null, "LTTng Remote Traces");
RemoteSystemProxy proxy = session.getTargetNode().getRemoteSystemProxy();
IRemoteConnection rc = proxy.getRemoteConnection();
String name = rc.getName();
if (!rc.hasService(IRemoteConnectionHostService.class)) {
return null;
}
String scheme = rc.getConnectionType().getScheme();
IRemoteConnectionHostService hostService = checkNotNull(rc.getService(IRemoteConnectionHostService.class));
String address = hostService.getHostname();
String user = hostService.getUsername();
int port = hostService.getPort();
URI remoteUri;
try {
remoteUri = new URI(scheme, user, address, port, null, null, null);
} catch (URISyntaxException e) {
return false;
}
RemoteImportConnectionNodeElement connection = new RemoteImportConnectionNodeElement(profile, name, remoteUri.toString());
String pathString = session.isSnapshotSession() ? session.getSnapshotInfo().getSnapshotPath() : session.getSessionPath();
IPath path = new Path(pathString);
RemoteImportTraceGroupElement group = new RemoteImportTraceGroupElement(connection, path.toString());
group.setRecursive(true);
// $NON-NLS-1$//$NON-NLS-2$
TracePackageElement element = new TracePackageTraceElement(group, "", "");
// $NON-NLS-1$
new TracePackageFilesElement(element, ".*");
String experimentName = path.lastSegment();
if (!experimentName.startsWith(session.getName())) {
experimentName = session.getName();
}
RemoteFetchLogWizard wizard = new RemoteFetchLogWizard(profile, experimentName);
wizard.init(PlatformUI.getWorkbench(), StructuredSelection.EMPTY);
WizardDialog dialog = new WizardDialog(window.getShell(), wizard);
dialog.open();
return null;
}
use of org.eclipse.tracecompass.internal.tmf.remote.ui.wizards.fetch.model.RemoteImportConnectionNodeElement in project tracecompass by tracecompass.
the class RemoteFetchLogWizardRemotePage method createElementViewerInput.
@Override
protected Object createElementViewerInput() {
if (fProfile == null) {
return null;
}
final List<RemoteImportConnectionNodeElement> remoteHosts = fProfile.getConnectionNodeElements();
if (remoteHosts.isEmpty()) {
return new Status(IStatus.ERROR, Activator.PLUGIN_ID, RemoteMessages.RemoteFetchLogWizardRemotePage_MissingConnectionInformation);
}
final IStatus[] status = new IStatus[1];
try {
getContainer().run(true, true, new IRunnableWithProgress() {
@Override
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
SubMonitor subMonitor = SubMonitor.convert(monitor, remoteHosts.size());
for (final RemoteImportConnectionNodeElement remoteHost : remoteHosts) {
SubMonitor child = subMonitor.newChild(1);
child.setTaskName(MessageFormat.format(RemoteMessages.RemoteFetchLogWizardRemotePage_OpeningConnectionTo, remoteHost.getURI()));
status[0] = remoteHost.connect(checkNotNull(subMonitor.newChild(1)));
if (!status[0].isOK()) {
monitor.done();
return;
}
// cache remote host
fRemoteHosts.add(remoteHost);
}
monitor.done();
}
});
} catch (InvocationTargetException e) {
handleError(MessageFormat.format(RemoteMessages.RemoteFetchLogWizardRemotePage_ConnectionError, fProfile.getText()), e);
return null;
} catch (InterruptedException e) {
// Cancelled
status[0] = Status.CANCEL_STATUS;
}
if (!status[0].isOK()) {
handleErrorStatus(status[0]);
return null;
}
try {
final AbstractTracePackageOperation generateManifestOperation = new RemoteGenerateManifestOperation(fProfile);
getContainer().run(true, true, new IRunnableWithProgress() {
@Override
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
monitor.beginTask(Messages.ImportTracePackageWizardPage_ReadingPackage, 10);
generateManifestOperation.run(monitor);
monitor.done();
}
});
status[0] = generateManifestOperation.getStatus();
if (status[0].getSeverity() == IStatus.ERROR) {
handleErrorStatus(status[0]);
return null;
}
return generateManifestOperation.getResultElements();
} catch (InvocationTargetException e1) {
handleError(Messages.TracePackageExtractManifestOperation_ErrorReadingManifest, e1);
} catch (InterruptedException e1) {
// Canceled
}
return null;
}
use of org.eclipse.tracecompass.internal.tmf.remote.ui.wizards.fetch.model.RemoteImportConnectionNodeElement in project tracecompass by tracecompass.
the class RemoteProfilesPreferencePage method newProfile.
private RemoteImportProfileElement newProfile(TracePackageElement previous) {
RemoteImportProfileElement profile = new RemoteImportProfileElement(null, RemoteMessages.RemoteProfilesPreferencePage_DefaultProfileName);
RemoteImportConnectionNodeElement node = new RemoteImportConnectionNodeElement(profile, RemoteMessages.RemoteProfilesPreferencePage_DefaultConnectionNodeName, RemoteMessages.RemoteProfilesPreferencePage_DefaultConnectionNodeURI);
RemoteImportTraceGroupElement traceGroup = new RemoteImportTraceGroupElement(node, DEFAULT_ROOT_IMPORT_PATH);
TracePackageTraceElement trace = new TracePackageTraceElement(traceGroup, DEFAULT_IMPORT_NAME, null);
new TracePackageFilesElement(trace, DEFAULT_FILE_PATTERN);
int index = previous == null ? fProfiles.size() : fProfiles.indexOf(previous) + 1;
fProfiles.add(index, profile);
newElementAdded(profile);
return profile;
}
use of org.eclipse.tracecompass.internal.tmf.remote.ui.wizards.fetch.model.RemoteImportConnectionNodeElement in project tracecompass by tracecompass.
the class RemoteProfilesPreferencePage method createVerticalButtonBar.
private Composite createVerticalButtonBar(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout());
fAddButton = createVerticalButton(composite, RemoteMessages.RemoteProfilesPreferencePage_AddButton);
fAddButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
IStructuredSelection selection = (IStructuredSelection) fTreeViewer.getSelection();
if (selection.isEmpty()) {
newProfile(null);
} else if (selection.getFirstElement() instanceof TracePackageElement) {
TracePackageElement previous = (TracePackageElement) selection.getFirstElement();
if (previous instanceof RemoteImportProfileElement) {
newProfile(previous);
} else if (previous instanceof RemoteImportConnectionNodeElement) {
newConnectionNode(previous.getParent(), previous);
} else if (previous instanceof RemoteImportTraceGroupElement) {
newTraceGroup(previous.getParent(), previous);
} else if (previous instanceof TracePackageTraceElement) {
newTrace(previous.getParent(), previous);
}
}
}
});
fRemoveButton = createVerticalButton(composite, RemoteMessages.RemoteProfilesPreferencePage_RemoveButton);
fRemoveButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
IStructuredSelection selection = (IStructuredSelection) fTreeViewer.getSelection();
for (Object item : selection.toList()) {
if (item instanceof RemoteImportProfileElement) {
fProfiles.remove(item);
} else if (item instanceof TracePackageElement) {
TracePackageElement element = (TracePackageElement) item;
element.getParent().removeChild(element);
}
}
fTreeViewer.refresh();
validate();
}
});
new Label(composite, SWT.NONE);
fImportButton = createVerticalButton(composite, RemoteMessages.RemoteProfilesPreferencePage_ImportButton);
fImportButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
FileDialog dialog = TmfFileDialogFactory.create(Display.getCurrent().getActiveShell(), SWT.OPEN);
dialog.setText(RemoteMessages.RemoteProfilesPreferencePage_ImportFileDialogTitle);
// $NON-NLS-1$ //$NON-NLS-2$
dialog.setFilterExtensions(new String[] { "*.xml", "*" });
String path = dialog.open();
if (path != null) {
List<RemoteImportProfileElement> profiles = readProfiles(path, new NullProgressMonitor());
fProfiles.addAll(profiles);
fTreeViewer.refresh();
for (RemoteImportProfileElement profile : profiles) {
fTreeViewer.expandToLevel(profile, AbstractTreeViewer.ALL_LEVELS);
}
fTreeViewer.setSelection(new StructuredSelection(profiles));
validate();
}
}
});
fExportButton = createVerticalButton(composite, RemoteMessages.RemoteProfilesPreferencePage_ExportButton);
fExportButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
FileDialog dialog = TmfFileDialogFactory.create(Display.getCurrent().getActiveShell(), SWT.SAVE);
dialog.setText(RemoteMessages.RemoteProfilesPreferencePage_ExportFileDialogTitle);
// $NON-NLS-1$ //$NON-NLS-2$
dialog.setFilterExtensions(new String[] { "*.xml", "*" });
String path = dialog.open();
if (path != null) {
IStructuredSelection selection = (IStructuredSelection) fTreeViewer.getSelection();
List<RemoteImportProfileElement> profiles = new ArrayList<>();
for (Object element : selection.toList()) {
if (element instanceof RemoteImportProfileElement) {
profiles.add((RemoteImportProfileElement) element);
}
}
writeProfiles(profiles, path);
}
}
});
new Label(composite, SWT.NONE);
fMoveUpButton = createVerticalButton(composite, RemoteMessages.RemoteProfilesPreferencePage_MoveUpButton);
fMoveUpButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
IStructuredSelection selection = (IStructuredSelection) fTreeViewer.getSelection();
Object element = selection.getFirstElement();
if (element instanceof RemoteImportProfileElement) {
int index = fProfiles.indexOf(element);
if (index > 0) {
RemoteImportProfileElement profile = fProfiles.remove(index);
fProfiles.add(index - 1, profile);
Object[] expanded = fTreeViewer.getExpandedElements();
fTreeViewer.refresh();
fTreeViewer.setExpandedElements(expanded);
enableButtons(selection);
}
} else if (element instanceof TracePackageElement) {
TracePackageElement child = (TracePackageElement) element;
TracePackageElement parentElement = child.getParent();
int index = parentElement.indexOf(child);
if (index > 0) {
parentElement.removeChild(child);
parentElement.addChild(index - 1, child);
Object[] expanded = fTreeViewer.getExpandedElements();
fTreeViewer.refresh(parentElement);
fTreeViewer.setExpandedElements(expanded);
enableButtons(selection);
}
}
}
});
fMoveDownButton = createVerticalButton(composite, RemoteMessages.RemoteProfilesPreferencePage_MoveDownButton);
fMoveDownButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
IStructuredSelection selection = (IStructuredSelection) fTreeViewer.getSelection();
Object element = selection.getFirstElement();
if (element instanceof RemoteImportProfileElement) {
int index = fProfiles.indexOf(selection.getFirstElement());
if (index >= 0 && index < fProfiles.size() - 1) {
RemoteImportProfileElement profile = fProfiles.remove(index);
fProfiles.add(index + 1, profile);
Object[] expanded = fTreeViewer.getExpandedElements();
fTreeViewer.refresh();
fTreeViewer.setExpandedElements(expanded);
enableButtons(selection);
}
} else if (element instanceof TracePackageElement) {
TracePackageElement child = (TracePackageElement) element;
TracePackageElement parentElement = child.getParent();
int index = parentElement.indexOf(child);
if (index >= 0 && index < parentElement.getChildren().length - 1) {
parentElement.removeChild(child);
parentElement.addChild(index + 1, child);
Object[] expanded = fTreeViewer.getExpandedElements();
fTreeViewer.refresh(parentElement);
fTreeViewer.setExpandedElements(expanded);
enableButtons(selection);
}
}
}
});
return composite;
}
use of org.eclipse.tracecompass.internal.tmf.remote.ui.wizards.fetch.model.RemoteImportConnectionNodeElement in project tracecompass by tracecompass.
the class RemoteProfilesPreferencePage method fillContextMenu.
private void fillContextMenu(IMenuManager manager) {
final IStructuredSelection selection = (IStructuredSelection) fTreeViewer.getSelection();
final List<Object> items = selection.toList();
if (items.size() == 1) {
Object item = items.get(0);
if (item instanceof RemoteImportProfileElement) {
final RemoteImportProfileElement profile = (RemoteImportProfileElement) item;
manager.add(new Action(RemoteMessages.RemoteProfilesPreferencePage_NewConnectionNode) {
@Override
public void run() {
newConnectionNode(profile, null);
}
});
} else if (item instanceof RemoteImportConnectionNodeElement) {
final RemoteImportConnectionNodeElement node = (RemoteImportConnectionNodeElement) item;
manager.add(new Action(RemoteMessages.RemoteProfilesPreferencePage_NewTraceGroupAction) {
@Override
public void run() {
newTraceGroup(node, null);
}
});
} else if (item instanceof RemoteImportTraceGroupElement) {
final RemoteImportTraceGroupElement traceGroup = (RemoteImportTraceGroupElement) item;
manager.add(new Action(RemoteMessages.RemoteProfilesPreferencePage_NewTraceAction) {
@Override
public void run() {
newTrace(traceGroup, null);
}
});
}
}
manager.add(new Separator());
manager.add(fDeleteAction);
fDeleteAction.setEnabled(!items.isEmpty());
manager.add(new Separator());
manager.add(fCutAction);
fCutAction.setEnabled(items.size() == 1);
manager.add(fCopyAction);
fCopyAction.setEnabled(items.size() == 1);
manager.add(fPasteAction);
fPasteAction.setEnabled(items.size() <= 1 && validatePaste(selection.getFirstElement()));
}
Aggregations