package net.sourceforge.sqlexplorer.history.actions; import net.sourceforge.sqlexplorer.IConstants; import net.sourceforge.sqlexplorer.Messages; import net.sourceforge.sqlexplorer.history.SQLHistoryElement; import net.sourceforge.sqlexplorer.plugin.SQLExplorerPlugin; import net.sourceforge.sqlexplorer.util.ImageUtil; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.dnd.Clipboard; import org.eclipse.swt.dnd.TextTransfer; import org.eclipse.swt.dnd.Transfer; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.TableItem; public class CopyStatementAction extends AbstractHistoryContextAction { private ImageDescriptor _imageCopy = ImageUtil.getDescriptor("Images.CopyIcon"); public ImageDescriptor getImageDescriptor() { return _imageCopy; } public String getText() { return Messages.getString("SQLHistoryView.CopyToClipboard"); } public boolean isEnabled() { TableItem[] ti = _table.getSelection(); if (ti == null || ti.length == 0) { return false; } return true; } public void run() { try { TableItem[] ti = _table.getSelection(); if (ti == null || ti.length == 0) { return; } String queryDelimiter = SQLExplorerPlugin.getDefault().getPluginPreferences().getString( IConstants.SQL_QRY_DELIMITER); StringBuffer copiedText = new StringBuffer(); for (int i = 0; i < ti.length; i++) { SQLHistoryElement el = (SQLHistoryElement) ti[i].getData(); copiedText.append(el.getRawSQLString()); if (ti.length > 0) { copiedText.append(queryDelimiter); copiedText.append("\n"); } } Clipboard cb = new Clipboard(Display.getCurrent()); TextTransfer textTransfer = TextTransfer.getInstance(); cb.setContents(new Object[] {copiedText.toString()}, new Transfer[] {textTransfer}); } catch (Throwable e) { SQLExplorerPlugin.error("Error copying to clipboard", e); } } }