/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package clips.directory.editors.servicePacketTemplate;
import clips.delegate.directory.complex.DirectoryPacketTemplate;
import clips.delegate.directory.complex.DirectoryPacketTemplateItem;
import cli_fmw.main.ClipsException;
import cli_fmw.utils.ErrorValue;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.Selector;
import clips.delegate.directory.simple.medexam.DirectoryMedexamTypeItem;
import clips.login.UserInfo;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.AbstractTableModel;
/**
*
* @author lacoste
*/
public class TableModelEditPacketTemplates extends AbstractTableModel {
public static final int COLCOUNT = 5;
public static final int COL_ID = 0;
public static final int COL_TITLE = 1;
public static final int COL_TYPE = 2;
public static final int COL_DIRTY = 3;
public static final int COL_ITEMS = 4;
private DirectoryPacketTemplate directory;
private ArrayList<DirectoryPacketTemplateItem> list = new ArrayList<DirectoryPacketTemplateItem>();
public TableModelEditPacketTemplates(DirectoryPacketTemplate directory) throws ClipsException {
this.directory = directory;
list.clear();
if (directory != null) {
for (DirectoryPacketTemplateItem item : directory.getFilteredItems(UserInfo.get().getCollaborator().getLpu())) {
if (item != null){
list.add(item);
}
}
}
}
@Override
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex == COL_DIRTY) {
return Boolean.class;
}
return super.getColumnClass(columnIndex);
}
@Override
public String getColumnName(int column) {
switch (column) {
case COL_ID: return "ID";
case COL_TITLE: return "Наименование";
case COL_TYPE: return "Тип";
case COL_ITEMS: return "Состав пакета";
case COL_DIRTY: return "Новая запись";
default: return "";
}
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
if (list.get(rowIndex).getID() == 0) {
return false;
}
if (columnIndex == COL_ID || columnIndex == COL_ITEMS) {
return false;
}
return true;
}
@Override
public void setValueAt(Object aValue, int row, int col) {
try {
switch (col) {
case COL_TITLE : {
list.get(row).setTitle(aValue.toString());
break;
}
case COL_TYPE : {
list.get(row).setmedexamType((DirectoryMedexamTypeItem) aValue);
break;
}
case COL_DIRTY : {
list.get(row).setDirty((Boolean) aValue);
break;
}
default: throw new IndexOutOfBoundsException("Некорректный номер столбца : " + col);
}
fireTableCellUpdated(row, col);
} catch(ClipsException e) {
MessageBox.showException(e);
}
}
@Override
public int getRowCount() {
return list.size();
}
@Override
public int getColumnCount() {
return COLCOUNT;
}
public DirectoryPacketTemplateItem getItem(int row){
return list.get(row);
}
@Override
public Object getValueAt(int row, int col) {
DirectoryPacketTemplateItem item = list.get(row);
switch (col) {
case COL_ID : return item.getID();
case COL_TITLE : return item;
case COL_TYPE :
try {
return item.getmedexamType();
} catch (ClipsException ex) {
return new ErrorValue(ex);
}
case COL_DIRTY : return item.getDirty();
case COL_ITEMS : {
try {
String s = "";
int count = item.getPacketItemCount();
for (int i = 0; i < count; i++) {
s += item.getPacketItem(i).toString() + (i == count - 1 ? "" : "; ");
}
return s;
} catch (ClipsException ex) {
return new ErrorValue(ex);
}
}
default: throw new IndexOutOfBoundsException("Некорректный номер столбца : " + col);
}
}
}