
org.bidib.wizard.mvc.stepcontrol.view.AspectTableAdapter Maven / Gradle / Ivy
package org.bidib.wizard.mvc.stepcontrol.view;
import javax.swing.ListModel;
import org.bidib.wizard.mvc.stepcontrol.model.StepControlAspect;
import org.bidib.wizard.mvc.stepcontrol.model.StepControlAspect.Polarity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.jgoodies.binding.adapter.AbstractTableAdapter;
public class AspectTableAdapter extends AbstractTableAdapter {
private static final long serialVersionUID = 1L;
private static final Logger LOGGER = LoggerFactory.getLogger(AspectTableAdapter.class);
public static final int COLUMN_POSITION = 0;
public static final int COLUMN_POLARITY = 1;
public static final int COLUMN_PERFORM_ASPECT = 2;
public AspectTableAdapter(ListModel listModel, String[] columnNames) {
super(listModel, columnNames);
}
public Object getValueAt(int rowIndex, int columnIndex) {
StepControlAspect stepControlAspect = (StepControlAspect) getRow(rowIndex);
switch (columnIndex) {
case COLUMN_POSITION:
return ((long) stepControlAspect.getPosition()) & 0xffffffffL;
case COLUMN_POLARITY:
return (stepControlAspect.getPolarity() == Polarity.normal ? true : false);
case COLUMN_PERFORM_ASPECT:
return "GO";
default:
break;
}
return stepControlAspect;
}
@Override
public Class> getColumnClass(int columnIndex) {
switch (columnIndex) {
case COLUMN_POSITION:
return Long.class;
default:
break;
}
return super.getColumnClass(columnIndex);
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}
@Override
public void setValueAt(Object value, int rowIndex, int columnIndex) {
LOGGER.info("Set the value: {}, rowIndex: {}", value, rowIndex);
StepControlAspect stepControlAspect = (StepControlAspect) getRow(rowIndex);
boolean notifyChange = false;
switch (columnIndex) {
case COLUMN_POSITION:
if (value instanceof Integer) {
Integer val = (Integer) value;
stepControlAspect.setPosition(val.intValue());
notifyChange = true;
}
break;
case COLUMN_POLARITY:
if (value instanceof Boolean) {
Boolean val = (Boolean) value;
stepControlAspect.setPolarity(val.booleanValue() ? Polarity.normal : Polarity.inverted);
notifyChange = true;
}
break;
default:
break;
}
super.setValueAt(value, rowIndex, columnIndex);
if (notifyChange) {
fireTableDataChanged();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy