package thaw.plugins.signatures;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Observable;
import java.util.Vector;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.TableModelEvent;
import thaw.core.Config;
import thaw.core.I18n;
import thaw.gui.Table;
public class IdentityTable extends Observable implements MouseListener, KeyListener {
private static final long serialVersionUID = -6972180330110075151L;
private thaw.gui.Table table;
private IdentityModel model;
private IdentityRenderer renderer;
public IdentityTable(Config config, String prefix, boolean showDup) {
model = new IdentityModel(showDup);
table = new Table(config, prefix, model);
table.setDefaultRenderer(table.getColumnClass(0), renderer = new IdentityRenderer(model));
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.addMouseListener(this);
table.addKeyListener(this);
}
public void setModel(IdentityModel model) {
this.model = model;
table.setModel(model);
renderer.setModel(model);
}
public static class IdentityModel extends javax.swing.table.AbstractTableModel {
private static final long serialVersionUID = -7614528570324908651L;
public static String[] columnNames = {
I18n.getMessage("thaw.plugin.signature.nickname"),
I18n.getMessage("thaw.plugin.signature.trustLevel"),
I18n.getMessage("thaw.plugin.signature.isDup")
};
private Vector identities;
private boolean showDup;
public IdentityModel(boolean showDup) {
this.showDup = showDup;
}
public void setIdentities(Vector i) {
identities = i;
final TableModelEvent event = new TableModelEvent(this);
fireTableChanged(event);
}
public Vector getIdentities() {
return identities;
}
public int getRowCount() {
if (identities == null)
return 0;
return identities.size();
}
public int getColumnCount() {
if (showDup)
return columnNames.length;
return columnNames.length-1;
}
public String getColumnName(final int column) {
return columnNames[column];
}
public Object getValueAt(int row, int column) {
if (identities == null)
return null;
if (column == 0)
return ((Identity)identities.get(row)).toString();
if (column == 1)
return ((Identity)identities.get(row)).getTrustLevelStr();
return null;
}
public Identity getIdentity(int line) {
return (Identity)identities.get(line);
}
}
public static class IdentityRenderer extends thaw.gui.Table.DefaultRenderer {
private static final long serialVersionUID = 5405210731032136559L;
private IdentityModel model;
public IdentityRenderer(IdentityModel model) {
super();
setModel(model);
}
public void setModel(IdentityModel model) {
this.model = model;
}
public java.awt.Component getTableCellRendererComponent(final JTable table, Object value,
final boolean isSelected, final boolean hasFocus,
final int row, final int column) {
if (value instanceof String
&& "X".equals(value)) {
value = thaw.gui.IconBox.minClose;
}
java.awt.Component c = super.getTableCellRendererComponent(table, value,
isSelected, hasFocus,
row, column);
Identity i = model.getIdentity(row);
c.setForeground(i.getTrustLevelColor());
return c;
}
}
public void setIdentities(Vector ids) {
model.setIdentities(ids);
}
public thaw.gui.Table getTable() {
return table;
}
public Identity getIdentity(int row) {
return model.getIdentity(row);
}
public Vector getIdentities() {
return model.getIdentities();
}
public void mouseClicked(MouseEvent arg0) {
setChanged();
notifyObservers(model.getIdentity(table.getSelectedRow()));
}
public void mouseEntered(MouseEvent arg0) {
}
public void mouseExited(MouseEvent arg0) {
}
public void mousePressed(MouseEvent arg0) {
}
public void mouseReleased(MouseEvent arg0) {
}
public void keyPressed(KeyEvent arg0) {
// TODO Raccord de méthode auto-généré
}
public void keyReleased(KeyEvent arg0) {
setChanged();
notifyObservers(model.getIdentity(table.getSelectedRow()));
}
public void keyTyped(KeyEvent arg0) {
}
}