/**
*
*/
package net.combase.desktopcrm.swing;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Collection;
import java.util.List;
import javax.swing.JButton;
import javax.swing.table.AbstractTableModel;
import net.combase.desktopcrm.domain.EmailTemplate;
/**
* @author "Till Freier"
*
*/
public class EmailTemplateTableModel extends AbstractTableModel
{
/**
*
*/
private static final long serialVersionUID = -3890791456083674319L;
private static final String[] COLUMN_NAMES = new String[] { "Template", "", "" };
private static final Class<?>[] COLUMN_TYPES = new Class<?>[] { String.class, JButton.class,
JButton.class };
private final List<EmailTemplate> data;
public EmailTemplateTableModel(List<EmailTemplate> data)
{
super();
this.data = data;
}
public void update(Collection<EmailTemplate> 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 */
EmailTemplate 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 EmailTemplate task)
{
final JButton button = new JButton();
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent arg0)
{
DesktopUtil.openHtmlEmail("", task.getSubject(), task.getHtmlBody());
}
});
button.setBackground(new Color(255, 255, 255, 100));
button.setIcon(CrmIcons.MAIL);
button.setToolTipText("Send email...");
return button;
}
private JButton createViewButton(final EmailTemplate 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 template...");
return button;
}
@Override
public int getRowCount()
{
return data.size();
}
@Override
public int getColumnCount()
{
return COLUMN_NAMES.length;
}
}