/**
*
*/
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.List;
import javax.swing.JButton;
import javax.swing.table.AbstractTableModel;
import net.combase.desktopcrm.domain.AbstractCrmObject;
/**
* @author "Till Freier"
*
*/
public class ActionRequiredTableModel extends AbstractTableModel
{
/**
*
*/
private static final long serialVersionUID = -3890791456083674319L;
private static final String[] COLUMN_NAMES = new String[] { "Title", "Owner", "" };
private static final Class<?>[] COLUMN_TYPES = new Class<?>[] { String.class, String.class, JButton.class };
private final List<AbstractCrmObject> data;
public ActionRequiredTableModel(List<AbstractCrmObject> data)
{
super();
this.data = data;
}
public void update(List<AbstractCrmObject> 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 */
AbstractCrmObject task = data.get(rowIndex);
switch (columnIndex)
{
case 0:
return task.getTitle();
case 1:
return task.getAssignedUser();
case 2:
return createViewButton(task);
default:
return "Error";
}
}
private JButton createViewButton(final AbstractCrmObject 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));
switch (task.getCrmEntityType())
{
case "Cases":
button.setIcon(CrmIcons.WARN);
break;
case "Leads":
case "Contacts":
case "Accounts":
case "Prospects":
button.setIcon(CrmIcons.USER);
break;
case "Opportunities":
button.setIcon(CrmIcons.DOLLAR);
break;
default:
button.setIcon(CrmIcons.VIEW);
break;
}
button.setToolTipText("View...");
return button;
}
@Override
public int getRowCount()
{
return data.size();
}
@Override
public int getColumnCount()
{
return COLUMN_NAMES.length;
}
public List<AbstractCrmObject> getData()
{
return new ArrayList<AbstractCrmObject>(data);
}
}