/*
 * Created on 11/08/2003
 *
 */
package com.quantum.actions;

import java.util.Iterator;

import com.quantum.QuantumPlugin;
import com.quantum.model.Column;
import com.quantum.model.EntityHolder;
import com.quantum.util.NthLevelConverter;
import com.quantum.util.QuantumUtil;
import com.quantum.util.StringUtil;
import com.quantum.view.bookmark.ColumnNode;

import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.actions.SelectionListenerAction;


public class CustomCopyAction extends SelectionListenerAction {
	private final IViewPart view;
	private final int ind;
	/**
	 * @param BookmarkView
	 */
	public CustomCopyAction(IViewPart view, int ind) {
        super(null);
		this.view = view;
		this.ind = ind;
	}
	public void run() {
		String copyText = "";
		Iterator iter = getSelectedNonResources().iterator();
		NthLevelConverter converter = new NthLevelConverter();
		// Fill up the converter. We iterate the selection items
		while (iter.hasNext()) {
			Object current = iter.next();
			if (current instanceof ColumnNode) {
				ColumnNode column = (ColumnNode) current;
				if (column != null) {
					converter.add(column.getColumn().getName(), 
                        column.getColumn().getParentEntity().getCondQualifiedName(), 0);
				}
			} else if (current instanceof EntityHolder) {
                EntityHolder currentSelec = (EntityHolder) current;
				converter.add(currentSelec.getEntity().getCondQualifiedName(), null, 1);
				Column[] columns = currentSelec.getEntity().getColumns();
				for (int i = 0, length = (columns == null) ? 0 : columns.length;
                    i < length;
                    i++) {
					converter.add(columns[i].getName(), 
                        currentSelec.getEntity().getCondQualifiedName(), 0);
				}					
			}
		}
		IPreferenceStore store = QuantumPlugin.getDefault().getPreferenceStore();
	
		
		converter.convert(Integer.toString(ind));
		
		String template = QuantumUtil.trasposeEscape(store.getString("customCopyTemplate" + Integer.toString(ind)));
		copyText = StringUtil.substituteString(template, "${table_list}", converter.getTableList());
		
		
		QuantumPlugin.getDefault().getSysClip().setContents(
			new Object[] { copyText },
			new Transfer[] { TextTransfer.getInstance()});
	}
}