All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bidib.wizard.mvc.stepcontrol.view.AspectTableAdapter Maven / Gradle / Ivy

There is a newer version: 2.0.0-M1
Show newest version
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