Added Am2900 MainMemory and MicroInstructionMemory Core/Model Components
[Mograsim.git] / net.mograsim.machine / src / net / mograsim / machine / ModelMemory.java
1 package net.mograsim.machine;
2
3 import net.haspamelodica.swt.helper.gcs.GeneralGC;
4 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
5 import net.mograsim.logic.model.model.LogicModelModifiable;
6 import net.mograsim.logic.model.model.components.ModelComponent;
7 import net.mograsim.logic.model.snippets.Renderer;
8 import net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer;
9 import net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer;
10 import net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer.SimpleRectangularLikeParams;
11
12 public abstract class ModelMemory extends ModelComponent
13 {
14         private Renderer symbolRenderer;
15         private Renderer outlineRenderer;
16         protected final int width, height;
17
18         protected ModelMemory(LogicModelModifiable model, int width, int height, String name, String centerText, boolean callInit)
19         {
20                 super(model, name, false);
21                 this.width = width;
22                 this.height = height;
23
24                 SimpleRectangularLikeParams rendererParams = new SimpleRectangularLikeParams();
25                 rendererParams.centerText = centerText;
26                 rendererParams.centerTextHeight = 24;
27                 rendererParams.horizontalComponentCenter = width / 100;
28                 rendererParams.pinLabelHeight = 17.5;
29                 rendererParams.pinLabelMargin = 2.5;
30                 this.symbolRenderer = new SimpleRectangularLikeSymbolRenderer(this, rendererParams);
31                 this.outlineRenderer = new DefaultOutlineRenderer(this);
32
33                 setSize(width, height);
34
35                 if (callInit)
36                         init();
37         }
38
39         @Override
40         public void render(GeneralGC gc, Rectangle visibleRegion)
41         {
42                 symbolRenderer.render(gc, visibleRegion);
43                 outlineRenderer.render(gc, visibleRegion);
44         }
45 }