package logbook.gui.listener;

import java.util.stream.Stream;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.widgets.Table;

/**
 * テーブルウィジェットのキー操作のアダプターです
 *
 */
public final class TableKeyShortcutAdapter extends KeyAdapter {

    /** テーブルヘッダー */
    private String[] header;

    /** テーブル */
    private final Table table;

    /**
     * コンストラクター
     */
    public TableKeyShortcutAdapter(String[] header, Table table) {
        this.header = header;
        this.table = table;
    }

    /**
     * コンストラクター
     */
    public TableKeyShortcutAdapter(Table table) {
        this.table = table;
    }

    @Override
    public void keyPressed(KeyEvent e) {
        String[] header = this.header;

        if (this.header == null) {
            header = Stream.of(this.table.getColumns()).map(c -> c.getText()).toArray(String[]::new);
        }

        if ((e.stateMask == SWT.CTRL) && (e.keyCode == 'c')) {
            TableToClipboardAdapter.copyTable(header, this.table);
        }
        if ((e.stateMask == SWT.CTRL) && (e.keyCode == 'a')) {
            this.table.selectAll();
        }
    }
}