/**
*
*/
package net.combase.desktopcrm.swing;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.swing.JButton;
import javax.swing.table.AbstractTableModel;
import net.combase.desktopcrm.data.AsteriskManager;
import net.combase.desktopcrm.domain.Lead;
/**
* @author "Till Freier"
*
*/
public class LeadTableModel extends AbstractTableModel
{
/**
*
*/
private static final long serialVersionUID = -3890791456083674319L;
private static final String[] COLUMN_NAMES = new String[] { "Lead", "", "", "" };
private static final Class<?>[] COLUMN_TYPES = new Class<?>[] { String.class, JButton.class, JButton.class,
JButton.class };
private final List<Lead> data;
public LeadTableModel(List<Lead> data)
{
super();
this.data = data;
}
public void update(List<Lead> tasks)
{
data.clear();
data.addAll(tasks);
fireTableDataChanged();
}
@Override
public String getColumnName(int columnIndex)
{
return COLUMN_NAMES[columnIndex];
}
@Override
public Class<?> getColumnClass(int columnIndex)
{
return COLUMN_TYPES[columnIndex];
}
@Override
public Object getValueAt(final int rowIndex, final int columnIndex)
{
/* Adding components */
Lead task = data.get(rowIndex);
switch (columnIndex)
{
case 0 :
return task.getTitle();
case 1 :
return createViewButton(task);
case 2 :
return createEmailButton(task);
case 3:
return createCallButton(task);
default :
return "Error";
}
}
private JButton createEmailButton(final Lead task)
{
final JButton button = new JButton();
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent arg0)
{
SendEmailDialog.sendEmail(null, "", Arrays.asList(task));
}
});
button.setBackground(new Color(255, 255, 255, 100));
button.setIcon(CrmIcons.MAIL);
button.setToolTipText("Send email...");
return button;
}
private JButton createCallButton(final Lead task)
{
final JButton button = new JButton();
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0)
{
AsteriskManager.dial(task.getPhone());
}
});
button.setBackground(new Color(90, 90, 90, 100));
button.setIcon(CrmIcons.CALL);
button.setToolTipText("Call " + task.getPhone());
return button;
}
private JButton createViewButton(final Lead task)
{
final JButton button = new JButton();
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent arg0)
{
DesktopUtil.openBrowser(task.getViewUrl());
}
});
button.setBackground(new Color(90, 115, 255, 100));
button.setIcon(CrmIcons.VIEW);
button.setToolTipText("View lead...");
return button;
}
@Override
public int getRowCount()
{
return data.size();
}
@Override
public int getColumnCount()
{
return COLUMN_NAMES.length;
}
public List<Lead> getData()
{
return new ArrayList<Lead>(data);
}
}