import net.mograsim.logic.core.types.BitVector;
import net.mograsim.logic.ui.model.ViewModel;
import net.mograsim.logic.ui.model.components.GUIComponent;
-import net.mograsim.logic.ui.model.components.SubmodelComponent;
-import net.mograsim.logic.ui.model.components.SubmodelInterface;
+import net.mograsim.logic.ui.model.components.submodels.SubmodelComponent;
+import net.mograsim.logic.ui.model.components.submodels.SubmodelInterface;
import net.mograsim.logic.ui.model.wires.WireCrossPoint;
import net.mograsim.preferences.Preferences;
radioBit.setText("Single bit");
Button radioBitVector = new Button(radioGroup, SWT.RADIO);
radioBitVector.setText("Bitvector");
- new Label(debugShell, SWT.NONE).setText("Value string representation: ");
+ new Label(debugShell, SWT.NONE).setText("Value string representation: \n(Bit vectors: MSBit...LSBit)");
Text valueText = new Text(debugShell, SWT.SINGLE | SWT.LEAD | SWT.BORDER);
valueText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
Button send = new Button(debugShell, SWT.PUSH);
- Text lastError = new Text(debugShell, SWT.READ_ONLY);
- lastError.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
send.setText("Send!");
+ Button get = new Button(debugShell, SWT.PUSH);
+ get.setText("Get!");
+ Text output = new Text(debugShell, SWT.READ_ONLY);
+ output.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
Listener sendAction = e ->
{
try
{
- if (componentSelector.getSelectionIndex() >= componentsByItemIndex.size())
- throw new RuntimeException("No valid component selected");
- GUIComponent target = componentsByItemIndex.get(componentSelector.getSelectionIndex());
+ int componentIndex = componentSelector.getSelectionIndex();
+ if (componentIndex < 0 || componentIndex >= componentsByItemIndex.size())
+ throw new RuntimeException("No component selected");
+ GUIComponent target = componentsByItemIndex.get(componentIndex);
String valueString = valueText.getText();
Object value;
if (radioBit.getSelection())
value = Bit.parse(valueString);
else if (radioBitVector.getSelection())
- value = BitVector.parse(valueString);
+ value = BitVector.parseMSBFirst(valueString);
else
throw new RuntimeException("No value type selected");
target.setHighLevelState(stateIDText.getText(), value);
- lastError.setText("Success!");
+ output.setText("Success!");
}
catch (Exception x)
{
- lastError.setText(x.getMessage());
+ output.setText(x.getClass().getSimpleName() + (x.getMessage() == null ? "" : ": " + x.getMessage()));
+ }
+ };
+ Listener getAction = e ->
+ {
+ try
+ {
+ if (componentSelector.getSelectionIndex() >= componentsByItemIndex.size())
+ throw new RuntimeException("No valid component selected");
+ output.setText("Success! Value: \r\n"
+ + componentsByItemIndex.get(componentSelector.getSelectionIndex()).getHighLevelState(stateIDText.getText()));
+ }
+ catch (Exception x)
+ {
+ output.setText(x.getClass().getSimpleName() + (x.getMessage() == null ? "" : ": " + x.getMessage()));
}
};
- stateIDText.addListener(SWT.DefaultSelection, sendAction);
- valueText.addListener(SWT.DefaultSelection, sendAction);
send.addListener(SWT.Selection, sendAction);
+ valueText.addListener(SWT.DefaultSelection, sendAction);
+ get.addListener(SWT.Selection, getAction);
+ stateIDText.addListener(SWT.DefaultSelection, getAction);
debugShell.open();
}
for (GUIComponent c : model.getComponents())
if (!(c instanceof WireCrossPoint || c instanceof SubmodelInterface))
{
- String item = base + c.getIdentifier();
+ String item = base + c.getClass().getSimpleName();
componentsByItemIndex.add(c);
componentSelector.add(item);
if (c instanceof SubmodelComponent)