/*
 * Created on 28-jul-2003
 *
 */
package com.quantum.view.tableview;

import com.quantum.ImageStore;
import com.quantum.Messages;
import com.quantum.QuantumPlugin;

import org.eclipse.jface.action.Action;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;


public final class CopyAction extends Action {
	
	private static final String LINE_SEPARATOR = System.getProperty("line.separator");
	
	private final TableView view;
	
	public CopyAction(TableView view) {
		super();
		this.view = view;
		setText(Messages.getString(getClass(), "text"));
		setImageDescriptor(ImageStore.getImageDescriptor(ImageStore.COPY));
	}
	
	public void run() {
		Table table = getTable();
		if (table != null) {
			TableItem items[] = table.getSelection();
			StringBuffer text = new StringBuffer();
			for (int i = 0; i < items.length; i++) {
				int columns = table.getColumnCount();
				for (int col = 0; col < columns; col++) {
					text.append(items[i].getText(col));
					text.append('\t');
				}
				text.append(LINE_SEPARATOR);
			}
			QuantumPlugin.getDefault().getSysClip().setContents(
				new Object[] { text.toString()},
				new Transfer[] { TextTransfer.getInstance()});
		}
	}
	
	private Table getTable() {
		ResultSetViewer viewer = this.view.getSelectedResultSetViewer();
		return viewer == null ? null : viewer.getTable();
	}
}