То, что вам нужно сделать для номера 1, - это то, что вы прикрепляете Clicklistener к вашей таблице1, а в Clickevent берете выбранный объект ni table1 и добавляете его в table2. Также добавьте if, чтобы не добавлять строки, которые уже существуют в таблице 2.
Вот как вы копируете данные
public void copydata(){
Object o = table1.getValue();
if(!table2.getItemIds().contains(o))
table2.addItem(o);
table2.setContainerDataSource(table2.getContainerDataSource());
}
Когда дело доходит до вашего второго вопроса, я понятия не имею, о чем вы говорите, но, похоже, вы хотите расширить класс Table в vaadin, чтобы получить свои собственные функции.