/*
* Copyright 2004 - 2008 Christian Sprajc. All rights reserved.
*
* This file is part of PowerFolder.
*
* PowerFolder is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation.
*
* PowerFolder is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PowerFolder. If not, see <http://www.gnu.org/licenses/>.
*
* $Id$
*/
package de.dal33t.powerfolder.ui.dialog;
import de.dal33t.powerfolder.Member;
import de.dal33t.powerfolder.ui.util.Icons;
import de.dal33t.powerfolder.ui.friends.NodesSelectTableCellRenderer;
import javax.swing.*;
import javax.swing.table.TableModel;
import java.awt.*;
import java.util.ArrayList;
import java.util.Collection;
/**
* Table showing selected users in invitation wizard dialog
*/
public class NodesSelectTable extends JTable {
public NodesSelectTable(TableModel dm) {
super(dm);
setShowGrid(false);
setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
setRowHeight(Icons.getIconById(Icons.NODE_CONNECTED)
.getIconHeight() + 3);
setDefaultRenderer(Member.class, new NodesSelectTableCellRenderer());
}
/**
* Make the height same as viewport (JScrollPane) if bigger than this.
*
* @return
*/
public boolean getScrollableTracksViewportHeight() {
Container viewport = getParent();
return viewport instanceof JViewport &&
getPreferredSize().height < viewport.getHeight();
}
/**
* Returns all the members that the user has selected.
* @return
*/
public Collection<Member> getSelectedMembers() {
Collection<Member> selectedMembers = new ArrayList<Member>();
for (int i = 0; i < getRowCount(); i++) {
if (isRowSelected(i)) {
Object o = getValueAt(i, 0);
if (o instanceof Member) {
Member member = (Member) o;
selectedMembers.add(member);
}
}
}
return selectedMembers;
}
}