mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-18 17:34:43 -04:00
table model is editable
This commit is contained in:
parent
bcbfd7a068
commit
d016ddea94
@ -1,7 +1,7 @@
|
||||
package de.neemann.digital.analyse;
|
||||
|
||||
import de.neemann.digital.analyse.expression.BitSetter;
|
||||
import de.neemann.digital.analyse.quinemc.BoolTableBoolArray;
|
||||
import de.neemann.digital.analyse.quinemc.BoolTableIntArray;
|
||||
import de.neemann.digital.core.Model;
|
||||
import de.neemann.digital.core.NodeException;
|
||||
import de.neemann.digital.lang.Lang;
|
||||
@ -64,9 +64,9 @@ public class ModelAnalyser {
|
||||
for (Model.Signal s : inputs)
|
||||
tt.addVariable(s.getName());
|
||||
|
||||
ArrayList<BoolTableBoolArray> data = new ArrayList<>();
|
||||
ArrayList<BoolTableIntArray> data = new ArrayList<>();
|
||||
for (Model.Signal s : outputs) {
|
||||
BoolTableBoolArray e = new BoolTableBoolArray(rows);
|
||||
BoolTableIntArray e = new BoolTableIntArray(rows);
|
||||
data.add(e);
|
||||
tt.addResult(s.getName(), e);
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package de.neemann.digital.analyse;
|
||||
import de.neemann.digital.analyse.expression.BitSetter;
|
||||
import de.neemann.digital.analyse.expression.Variable;
|
||||
import de.neemann.digital.analyse.quinemc.BoolTable;
|
||||
import de.neemann.digital.analyse.quinemc.BoolTableIntArray;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@ -141,12 +142,43 @@ public class TruthTable {
|
||||
* @return the table value (2 means "don't care")
|
||||
*/
|
||||
public int getValue(int rowIndex, int columnIndex) {
|
||||
if (columnIndex < variables.size())
|
||||
return getBitSetter().getBit(rowIndex, columnIndex) ? 1 : 0;
|
||||
else
|
||||
if (columnIndex < variables.size()) {
|
||||
if (getBitSetter().getBit(rowIndex, columnIndex)) return 1;
|
||||
else return 0;
|
||||
} else
|
||||
return results.get(columnIndex - variables.size()).getValues().get(rowIndex).asInt();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if given column is editable
|
||||
*
|
||||
* @param columnIndex the column
|
||||
* @return thrue if editable
|
||||
*/
|
||||
public boolean isEditable(int columnIndex) {
|
||||
if (columnIndex < variables.size())
|
||||
return false;
|
||||
else {
|
||||
BoolTable v = results.get(columnIndex - variables.size()).getValues();
|
||||
return v instanceof BoolTableIntArray;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets modifies the table
|
||||
*
|
||||
* @param rowIndex the row
|
||||
* @param columnIndex the column
|
||||
* @param aValue the new value
|
||||
*/
|
||||
public void setValue(int rowIndex, int columnIndex, int aValue) {
|
||||
if (columnIndex >= variables.size()) {
|
||||
BoolTable v = results.get(columnIndex - variables.size()).getValues();
|
||||
if (v instanceof BoolTableIntArray)
|
||||
((BoolTableIntArray) v).set(rowIndex, aValue);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A single result column
|
||||
*/
|
||||
|
@ -42,7 +42,7 @@ public class TruthTableTableModel implements TableModel {
|
||||
|
||||
@Override
|
||||
public boolean isCellEditable(int rowIndex, int columnIndex) {
|
||||
return false;
|
||||
return truthTable.isEditable(columnIndex);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -52,6 +52,8 @@ public class TruthTableTableModel implements TableModel {
|
||||
|
||||
@Override
|
||||
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
|
||||
if (aValue instanceof Integer)
|
||||
truthTable.setValue(rowIndex, columnIndex, (Integer) aValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -38,4 +38,24 @@ public class BoolTableIntArray implements BoolTable {
|
||||
public ThreeStateValue get(int i) {
|
||||
return ThreeStateValue.value(table[i]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a table value
|
||||
*
|
||||
* @param row the row
|
||||
* @param bool the value
|
||||
*/
|
||||
public void set(int row, boolean bool) {
|
||||
set(row, bool ? 1 : 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a table value
|
||||
*
|
||||
* @param row the row
|
||||
* @param value the value
|
||||
*/
|
||||
public void set(int row, int value) {
|
||||
table[row] = value;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user