package floobits.dialogs;
import javax.swing.*;
import javax.swing.table.AbstractTableModel;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class FollowUserForm {
private JPanel contentPanel;
private JTable userTable;
private UserListModel tableModel;
public class UserListModel extends AbstractTableModel {
private HashMap<String, Boolean> data;
private List<String> order = new ArrayList<String>();
public void setData(HashMap<String, Boolean> data) {
this.data = data;
order.addAll(data.keySet());
}
@Override
public int getRowCount() {
return data.size();
}
public String getColumnName(int col) {
if (col == 1) {
return "Users with edit permissions";
}
return "Following changes";
}
@Override
public int getColumnCount() {
return 2;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
String username = order.get(rowIndex);
if (columnIndex == 0) {
return data.get(username);
}
return username;
}
public boolean isCellEditable(int row, int col) {
return true;
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
@Override
public void setValueAt(Object value, int row, int col) {
String username = order.get(row);
data.put(username, (Boolean) value);
fireTableCellUpdated(row, col);
}
public List<String> toList() {
List<String> userList = new ArrayList<String>();
for (Map.Entry<String, Boolean> entry : data.entrySet()) {
if (entry.getValue()) {
userList.add(entry.getKey());
}
}
return userList;
}
}
public void setUsers(HashMap<String, Boolean> usersToChoose) {
tableModel = new UserListModel();
tableModel.setData(usersToChoose);
userTable.setModel(tableModel);
}
public UserListModel getUserModel () {
return tableModel;
}
public JComponent getContentPanel() {
return contentPanel;
}
}