use of org.eclipse.titan.executor.executors.ITreeLeaf in project titan.EclipsePlug-ins by eclipse.
the class NotificationView method saveLaunchElementAs.
/**
* Saves the contents of a tree starting at the provided launch config node.
*
* @param shell the shell to be used to display dialogs.
* @param actualInput the launch configuration to start from.
*/
public static void saveLaunchElementAs(final Shell shell, final ITreeLeaf actualInput) {
final FileDialog dialog = new FileDialog(shell, SWT.NONE);
dialog.setFilterExtensions(new String[] { "log" });
final String filePath = dialog.open();
if (null == filePath) {
return;
}
final File file = new File(filePath);
if (file.exists()) {
if (!file.canWrite()) {
ErrorDialog.openError(shell, "Read-only file", "The file is read-only, please choose another file", Status.OK_STATUS);
return;
}
} else {
try {
file.createNewFile();
} catch (IOException e) {
ErrorDialog.openError(shell, "Can not create file", "The file could not be created and will not be saved", Status.OK_STATUS);
return;
}
}
if (null == actualInput || !(actualInput instanceof LaunchElement)) {
// nothing or wrong kind of element selected
return;
}
PrintWriter out = null;
try {
out = new PrintWriter(new FileWriter(file));
final List<ITreeLeaf> children = ((LaunchElement) actualInput).children();
for (ITreeLeaf aChildren : children) {
final BaseExecutor executor = ((MainControllerElement) aChildren).executor();
if (null != executor) {
List<Notification> tempList = executor.notifications();
for (Notification aTempList : tempList) {
out.println(aTempList.toString());
}
}
}
} catch (IOException e) {
ErrorDialog.openError(shell, "Can not write the file", "An error occured while writing to the file\n" + filePath, Status.OK_STATUS);
return;
} finally {
IOUtils.closeQuietly(out);
}
final IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
final IFile[] outputFiles = root.findFilesForLocationURI(URIUtil.toURI(filePath));
ResourceUtils.refreshResources(Arrays.asList(outputFiles));
}
Aggregations