made stackui a service

git-svn-id: https://mspsim.svn.sourceforge.net/svnroot/mspsim/mspsim@606 23d1a52b-0c3c-0410-b72d-8f29ab48fe35
This commit is contained in:
joxe 2009-09-10 16:15:07 +00:00
parent 01eb77a5fa
commit 0fac130c98
4 changed files with 67 additions and 37 deletions

View File

@ -11,4 +11,5 @@
#start the nodegui serice
service controlgui start
service nodegui start
service stackui start
start

View File

@ -59,6 +59,7 @@ import se.sics.mspsim.core.MSP430Constants;
import se.sics.mspsim.extutil.highlight.HighlightSourceViewer;
import se.sics.mspsim.ui.ControlUI;
import se.sics.mspsim.ui.JFrameWindowManager;
import se.sics.mspsim.ui.StackUI;
import se.sics.mspsim.util.ArgumentManager;
import se.sics.mspsim.util.ComponentRegistry;
import se.sics.mspsim.util.ConfigManager;
@ -146,6 +147,7 @@ public abstract class GenericNode extends Chip implements Runnable {
// Setup control and other UI components
ControlUI control = new ControlUI();
registry.registerComponent("controlgui", control);
registry.registerComponent("stackui", new StackUI(cpu));
HighlightSourceViewer sourceViewer = new HighlightSourceViewer();
if (firmwareFile != null) {
// Add the firmware location to the search path

View File

@ -49,35 +49,29 @@ import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
import se.sics.mspsim.core.MSP430;
import se.sics.mspsim.core.MSP430Constants;
import se.sics.mspsim.core.SimEvent;
import se.sics.mspsim.core.SimEventListener;
import se.sics.mspsim.extutil.jfreechart.DataChart;
import se.sics.mspsim.platform.GenericNode;
import se.sics.mspsim.util.ComponentRegistry;
import se.sics.mspsim.util.DebugInfo;
import se.sics.mspsim.util.ELF;
import se.sics.mspsim.util.ServiceComponent;
import se.sics.mspsim.util.ServiceComponent.Status;
public class ControlUI extends JPanel implements ActionListener, SimEventListener, ServiceComponent {
private static final long serialVersionUID = -2431892192775232653L;
private static final String TITLE = "MSPSim monitor";
private static final boolean USE_STACKUI = false;
private ManagedWindow window;
private JButton controlButton;
private MSP430 cpu;
private GenericNode node;
private DebugUI dui;
private JFrame stackWindow;
private StackUI stackUI;
private ELF elfData;
private SourceViewer sourceViewer;
@ -99,16 +93,6 @@ private String name;
this.node = (GenericNode) registry.getComponent("node");
elfData = (ELF) registry.getComponent("elf");
DataChart test = new DataChart("Stack Monitor", "Bytes");
test.setupStackFrame(cpu);
if (USE_STACKUI) {
this.stackUI = new StackUI(cpu);
stackWindow = new JFrame("Stack");
stackWindow.add(this.stackUI);
WindowUtils.restoreWindowBounds("StackUI", stackWindow);
WindowUtils.addSaveOnShutdown("StackUI", stackWindow);
stackWindow.setVisible(true);
}
WindowManager wm = (WindowManager) registry.getComponent("windowManager");
window = wm.createWindow("ControlUI");
JPanel jp = new JPanel();

View File

@ -49,9 +49,12 @@ import javax.swing.JPanel;
import se.sics.mspsim.core.CPUMonitor;
import se.sics.mspsim.core.MSP430;
import se.sics.mspsim.util.ComponentRegistry;
import se.sics.mspsim.util.MapTable;
import se.sics.mspsim.util.ServiceComponent;
import se.sics.mspsim.util.ServiceComponent.Status;
public class StackUI extends JPanel implements CPUMonitor {
public class StackUI extends JPanel implements CPUMonitor, ServiceComponent {
private static final long serialVersionUID = 8648239617509299768L;
@ -77,6 +80,14 @@ public class StackUI extends JPanel implements CPUMonitor {
private boolean update = false;
private Status status;
private ComponentRegistry registry;
private ManagedWindow window;
private String name;
public StackUI(MSP430 cpu) {
this(cpu, 2500);
}
@ -102,28 +113,36 @@ public class StackUI extends JPanel implements CPUMonitor {
// this.stackStartAddress - this.heapStartAddress);
// diagram.setShowGrid(true);
// add(diagram, BorderLayout.CENTER);
chartPanel = new ChartPanel();
ConstantLineChart maxChart = new ConstantLineChart("Max", this.stackStartAddress - this.heapStartAddress);
maxChart.setConfig("color", Color.red);
chartPanel.addChart(maxChart);
minStackChart = new LineChart("Min Stack");
minStackChart.setConfig("color", Color.green);
chartPanel.addChart(minStackChart);
maxStackChart = new LineChart("Max Stack");
maxStackChart.setConfig("color", Color.green);
chartPanel.addChart(maxStackChart);
chartPanel.setAxisChart(maxStackChart);
add(chartPanel, BorderLayout.CENTER);
setPreferredSize(new Dimension(320, 200));
}
// public void addNote(String note) {
// notes[pos] = note;
// }
private void setup() {
if (chartPanel != null) return;
chartPanel = new ChartPanel();
ConstantLineChart maxChart = new ConstantLineChart("Max", this.stackStartAddress - this.heapStartAddress);
maxChart.setConfig("color", Color.red);
chartPanel.addChart(maxChart);
minStackChart = new LineChart("Min Stack");
minStackChart.setConfig("color", Color.green);
chartPanel.addChart(minStackChart);
maxStackChart = new LineChart("Max Stack");
maxStackChart.setConfig("color", Color.green);
chartPanel.addChart(maxStackChart);
chartPanel.setAxisChart(maxStackChart);
add(chartPanel, BorderLayout.CENTER);
setPreferredSize(new Dimension(320, 200));
setSize(320, 200);
setMinimumSize(new Dimension(320, 200));
WindowManager wm = (WindowManager) registry.getComponent("windowManager");
if (wm != null) {
window = wm.createWindow("stackui");
window.add(this);
}
}
public void paint(Graphics g) {
if (update) {
@ -174,4 +193,28 @@ public class StackUI extends JPanel implements CPUMonitor {
}
}
public Status getStatus() {
return status;
}
public void init(String name, ComponentRegistry registry) {
this.registry = registry;
this.name = name;
}
public String getName() {
return name;
}
public void start() {
setup();
status = Status.STARTED;
window.setVisible(true);
}
public void stop() {
status = Status.STOPPED;
window.setVisible(false);
}
}