/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package clips.directory.editors.workTypes;
import clips.delegate.directory.complex.DirectoryWorkTypeItem;
import clips.delegate.directory.complex.DirectoryWorkType;
import cli_fmw.main.ClipsException;
import cli_fmw.utils.MessageBox;
import cli_fmw.utils.Selector;
import java.awt.Color;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
/**
*
* @author lacoste
*/
public class TableModelEditWorkTypes extends AbstractTableModel {
public static final int COLCOUNT = 7;
public static final int COL_ID = 0;
public static final int COL_TITLE = 1;
public static final int COL_AVAILIABLE = 2;
public static final int COL_CANBEOVERLAPPED = 3;
public static final int COL_HIGHLIGHT = 4;
public static final int COL_SHADOW = 5;
public static final int COL_TIME = 6;
private DirectoryWorkType workType;
private ArrayList<DirectoryWorkTypeItem> workTypes = new ArrayList<DirectoryWorkTypeItem>();
public TableModelEditWorkTypes(DirectoryWorkType workType) throws ClipsException {
this.workType = workType;
workTypes.clear();
if (workType != null) {
Selector iie = workType.getItems();
for (int i = 0; i < iie.size(); i++) {
DirectoryWorkTypeItem item = (DirectoryWorkTypeItem) iie.get(i);
workTypes.add(item);
}
}
}
@Override
public int getRowCount() {
return workTypes.size();
}
@Override
public int getColumnCount() {
return COLCOUNT;
}
@Override
public String getColumnName(int column) {
switch (column) {
case COL_ID : return "ID";
case COL_TITLE: return "Наименование";
case COL_AVAILIABLE: return "Доступен";
case COL_CANBEOVERLAPPED : return "Перекрываемый";
case COL_HIGHLIGHT: return "Цвет(верхний)";
case COL_SHADOW: return "Цвет(нижний)";
case COL_TIME: return "Интервал";
default: return "";
}
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
if (workTypes.get(rowIndex).getID() == 0) {
return false;
}
if (columnIndex == COL_ID || columnIndex == COL_TIME) {
return false;
}
return true;
}
@Override
public Class getColumnClass(int columnIndex) {
if(columnIndex == COL_AVAILIABLE || columnIndex == COL_CANBEOVERLAPPED) {
return Boolean.class;
}
return super.getColumnClass(columnIndex);
}
@Override
public void setValueAt(Object obj, int row, int col) {
try {
if (col == COL_TITLE) {
workTypes.get(row).setTitle(obj.toString());
}
if (col == COL_AVAILIABLE) {
workTypes.get(row).setAvailiable((Boolean)obj);
}
if (col == COL_CANBEOVERLAPPED) {
workTypes.get(row).setCanBeOverlapped((Boolean)obj);
}
if (col == COL_HIGHLIGHT) {
workTypes.get(row).setColorHightlight((Color)obj);
}
if (col == COL_SHADOW) {
workTypes.get(row).setColorShadow((Color)obj);
}
fireTableCellUpdated(row, col);
} catch(ClipsException e) {
MessageBox.showException(e);
}
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
DirectoryWorkTypeItem item = workTypes.get(rowIndex);
switch (columnIndex) {
case COL_ID : return item.getID();
case COL_TITLE: return item;
case COL_AVAILIABLE: return item.isAvailiable();
case COL_CANBEOVERLAPPED: return item.canBeOverlapped();
case COL_HIGHLIGHT: return item.getColorHightlight();
case COL_SHADOW: return item.getColorShadow();
case COL_TIME: return item.timeToString();
default: return null;
}
}
}