/******************************************************************************* * Copyright (c) 2006 STMicroelectronics. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * STMicroelectronics - Process console enhancements *******************************************************************************/ package org.eclipse.cdt.debug.mi.ui.console.actions; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import org.eclipse.cdt.debug.mi.internal.ui.MIUIPlugin; import org.eclipse.debug.ui.console.IConsole; import org.eclipse.jface.action.Action; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.BusyIndicator; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.FileDialog; /** * Save console content * */ public class MiConsoleSaveAction extends Action{ private IConsole fConsole; private String fileName; public MiConsoleSaveAction(IConsole console) { super(); setToolTipText(MiConsoleMessages.saveActionTooltip); setImageDescriptor(MIUIPlugin.imageDescriptorFromPlugin(MIUIPlugin.PLUGIN_ID,IMiConsoleImagesConst.IMG_SAVE_CONSOLE)); fConsole = console; } public void run() { FileDialog fileDialog = new FileDialog(Display.getCurrent().getActiveShell(), SWT.SAVE); fileName = fileDialog.open(); if(fileName==null) { return; } Runnable saveJob = new Runnable() { public void run() { saveContent(); } }; BusyIndicator.showWhile(Display.getCurrent(), saveJob); } protected void saveContent() { boolean confirmed = true; try { File f = new File(fileName); if(f.exists()) { confirmed = MessageDialog.openQuestion(Display.getCurrent().getActiveShell(), "Confirm overwrite", MiConsoleMessages.confirmOverWrite); } if(confirmed) { BufferedWriter out = new BufferedWriter(new FileWriter(fileName)); out.write(fConsole.getDocument().get()); out.close(); } } catch (IOException e) { MessageDialog.openError(Display.getCurrent().getActiveShell(),"Error",MiConsoleMessages.infoIOError); } } }