1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
import java.awt.Component;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JTable;
import javax.swing.ListCellRenderer;
import javax.swing.table.TableCellRenderer;
public class ModelRenderer implements ListCellRenderer<IModel>, TableCellRenderer
{
protected DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();
protected AbstractModelTableGui source;
protected boolean required;
public ModelRendererGui(AbstractModelTableGui source, boolean required)
{
this.source = source;
this.required = required;
}
@Override
public Component getListCellRendererComponent(JList<? extends IModel> list,
IModel value, int index, boolean isSelected, boolean cellHasFocus)
{
JLabel renderer = (JLabel) defaultRenderer
.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value != null)
renderer.setText(value.getTitle());
else
renderer.setText("");
return renderer;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
{
JComboBox c = new JComboBox();
c.setRenderer(this);
int l = this.source.getLines().size();
IModel selected = null;
if (!this.required)
c.addItem(null);
for (int i = 0; i < l; ++i)
{
if (this.source.getNextRequiredColumn(i) == -1)
{
c.addItem((IModel)this.source.getModel(i));
if (value != null && ((IModel)value).getId() == ((IModel)this.source.getModel(i)).getId())
selected = (IModel)this.source.getModel(i);
}
}
// Select the current value
c.setSelectedItem(selected);
return c;
}
} |
Partager