/**
*
*/
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.Collection;
import java.util.List;
import javax.swing.JButton;
import javax.swing.table.AbstractTableModel;
import net.combase.desktopcrm.data.CrmManager;
import net.combase.desktopcrm.domain.Case;
import net.combase.desktopcrm.domain.Contact;
/**
* @author "Till Freier"
*
*/
public class CaseTableModel extends AbstractTableModel
{
/**
*
*/
private static final long serialVersionUID = -3890791456083674319L;
private static final String[] COLUMN_NAMES = new String[] { "Case", "", "" };
private static final Class<?>[] COLUMN_TYPES = new Class<?>[] { String.class, JButton.class,
JButton.class };
private final List<Case> data;
public CaseTableModel(List<Case> data)
{
super();
this.data = data;
}
public void update(List<Case> 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 */
Case task = data.get(rowIndex);
switch (columnIndex)
{
case 0 :
return task.getTitle();
case 1 :
return createViewButton(task);
case 2 :
return createEmailButton(task);
default :
return "Error";
}
}
private JButton createEmailButton(final Case task)
{
final JButton button = new JButton();
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent arg0)
{
final Collection<Contact> contacts = CrmManager.getContactListByCase(task.getId());
StringBuilder subjectSB = new StringBuilder();
subjectSB.append("[CASE:").append(task.getNumber()).append("] ");
subjectSB.append(task.getTitle());
SendEmailDialog.sendEmail(null, subjectSB.toString(), contacts);
}
});
button.setBackground(new Color(255, 255, 255, 100));
button.setIcon(CrmIcons.MAIL);
button.setToolTipText("Send email...");
return button;
}
private JButton createViewButton(final Case 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 case...");
return button;
}
@Override
public int getRowCount()
{
return data.size();
}
@Override
public int getColumnCount()
{
return COLUMN_NAMES.length;
}
public List<Case> getData()
{
return new ArrayList<>(data);
}
}