mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-17 17:04:42 -04:00
in stats dialog the transistor number is editable
This commit is contained in:
parent
e72f8168cb
commit
14f704db79
@ -26,8 +26,11 @@ import de.neemann.digital.core.switching.PFET;
|
|||||||
import de.neemann.digital.core.wiring.*;
|
import de.neemann.digital.core.wiring.*;
|
||||||
import de.neemann.digital.draw.library.ElementLibrary;
|
import de.neemann.digital.draw.library.ElementLibrary;
|
||||||
import de.neemann.digital.draw.library.ElementNotFoundException;
|
import de.neemann.digital.draw.library.ElementNotFoundException;
|
||||||
|
import de.neemann.digital.gui.components.data.DummyElement;
|
||||||
import de.neemann.digital.lang.Lang;
|
import de.neemann.digital.lang.Lang;
|
||||||
|
import de.neemann.digital.testing.TestCaseElement;
|
||||||
|
|
||||||
|
import javax.swing.event.TableModelEvent;
|
||||||
import javax.swing.event.TableModelListener;
|
import javax.swing.event.TableModelListener;
|
||||||
import javax.swing.table.TableModel;
|
import javax.swing.table.TableModel;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@ -117,6 +120,10 @@ public class Stats {
|
|||||||
for (VisualElement ve : circuit.getElements()) {
|
for (VisualElement ve : circuit.getElements()) {
|
||||||
if (ve.equalsDescription(In.DESCRIPTION)
|
if (ve.equalsDescription(In.DESCRIPTION)
|
||||||
|| ve.equalsDescription(Out.DESCRIPTION)
|
|| ve.equalsDescription(Out.DESCRIPTION)
|
||||||
|
|| ve.equalsDescription(DummyElement.TEXTDESCRIPTION)
|
||||||
|
|| ve.equalsDescription(DummyElement.DATADESCRIPTION)
|
||||||
|
|| ve.equalsDescription(DummyElement.RECTDESCRIPTION)
|
||||||
|
|| ve.equalsDescription(TestCaseElement.TESTCASEDESCRIPTION)
|
||||||
|| ve.equalsDescription(Const.DESCRIPTION)
|
|| ve.equalsDescription(Const.DESCRIPTION)
|
||||||
|| ve.equalsDescription(Tunnel.DESCRIPTION)
|
|| ve.equalsDescription(Tunnel.DESCRIPTION)
|
||||||
|| ve.equalsDescription(Splitter.DESCRIPTION)
|
|| ve.equalsDescription(Splitter.DESCRIPTION)
|
||||||
@ -148,7 +155,7 @@ public class Stats {
|
|||||||
EntryKey key = new EntryKey(description, attr, transistors);
|
EntryKey key = new EntryKey(description, attr, transistors);
|
||||||
Entry e = map.get(key);
|
Entry e = map.get(key);
|
||||||
if (e == null) {
|
if (e == null) {
|
||||||
e = new Entry(key);
|
e = new Entry(key, childCircuit == null);
|
||||||
map.put(key, e);
|
map.put(key, e);
|
||||||
}
|
}
|
||||||
e.addOne();
|
e.addOne();
|
||||||
@ -161,13 +168,7 @@ public class Stats {
|
|||||||
* @return a TableModel which shows the statistics
|
* @return a TableModel which shows the statistics
|
||||||
*/
|
*/
|
||||||
public TableModel getTableModel() {
|
public TableModel getTableModel() {
|
||||||
final ArrayList<Row> entries = new ArrayList<>(map.size());
|
final ArrayList<Row> entries = new ArrayList<>(map.values());
|
||||||
int tr = 0;
|
|
||||||
for (Entry e : map.values()) {
|
|
||||||
entries.add(e);
|
|
||||||
tr += e.getTransistors();
|
|
||||||
}
|
|
||||||
final int transistors = tr;
|
|
||||||
entries.add(new Row() {
|
entries.add(new Row() {
|
||||||
@Override
|
@Override
|
||||||
public int getCount() {
|
public int getCount() {
|
||||||
@ -184,12 +185,25 @@ public class Stats {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTransistorsEach(int transistors) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEditable() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getTransistors() {
|
public int getTransistors() {
|
||||||
return transistors;
|
int tr = 0;
|
||||||
|
for (Row r : entries) {
|
||||||
|
if (r != this)
|
||||||
|
tr += r.getTransistors();
|
||||||
|
}
|
||||||
|
return tr;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return new MyTableModel(entries);
|
return new MyTableModel(entries);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -298,12 +312,15 @@ public class Stats {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static final class Entry implements Row {
|
private static final class Entry implements Row {
|
||||||
|
|
||||||
private final EntryKey key;
|
private final EntryKey key;
|
||||||
|
private int transistors;
|
||||||
|
private final boolean editable;
|
||||||
private int count;
|
private int count;
|
||||||
|
|
||||||
private Entry(EntryKey key) {
|
private Entry(EntryKey key, boolean editable) {
|
||||||
this.key = key;
|
this.key = key;
|
||||||
|
transistors = key.transistors;
|
||||||
|
this.editable = editable;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addOne() {
|
private void addOne() {
|
||||||
@ -325,14 +342,24 @@ public class Stats {
|
|||||||
return key.getDescription();
|
return key.getDescription();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTransistorsEach(int t) {
|
||||||
|
transistors = t;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getTransistorsEach() {
|
public int getTransistorsEach() {
|
||||||
return key.transistors;
|
return transistors;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getTransistors() {
|
public int getTransistors() {
|
||||||
return count * key.transistors;
|
return count * transistors;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEditable() {
|
||||||
|
return editable;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -348,11 +375,16 @@ public class Stats {
|
|||||||
|
|
||||||
int getTransistorsEach();
|
int getTransistorsEach();
|
||||||
|
|
||||||
|
void setTransistorsEach(int transistors);
|
||||||
|
|
||||||
int getTransistors();
|
int getTransistors();
|
||||||
|
|
||||||
|
boolean isEditable();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class MyTableModel implements TableModel {
|
private static final class MyTableModel implements TableModel {
|
||||||
private final List<Row> entries;
|
private final List<Row> entries;
|
||||||
|
private ArrayList<TableModelListener> listeners = new ArrayList<>();
|
||||||
|
|
||||||
private MyTableModel(List<Row> entries) {
|
private MyTableModel(List<Row> entries) {
|
||||||
this.entries = entries;
|
this.entries = entries;
|
||||||
@ -390,8 +422,8 @@ public class Stats {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isCellEditable(int i, int i1) {
|
public boolean isCellEditable(int row, int col) {
|
||||||
return false;
|
return col == 2 && entries.get(row).isEditable();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -416,14 +448,22 @@ public class Stats {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setValueAt(Object o, int row, int col) {
|
public void setValueAt(Object o, int row, int col) {
|
||||||
|
if (col == 2 && entries.get(row).isEditable() && o instanceof Number) {
|
||||||
|
entries.get(row).setTransistorsEach(((Number) o).intValue());
|
||||||
|
TableModelEvent tme = new TableModelEvent(this);
|
||||||
|
for (TableModelListener l : listeners)
|
||||||
|
l.tableChanged(tme);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addTableModelListener(TableModelListener tableModelListener) {
|
public void addTableModelListener(TableModelListener tableModelListener) {
|
||||||
|
listeners.add(tableModelListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void removeTableModelListener(TableModelListener tableModelListener) {
|
public void removeTableModelListener(TableModelListener tableModelListener) {
|
||||||
|
listeners.remove(tableModelListener);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user