The final restructured version for automatic build using maven tycho
[Mograsim.git] / plugins / 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<M extends Machine> extends ModelComponent
13 {
14         private Renderer symbolRenderer;
15         private Renderer outlineRenderer;
16         private M machine;
17
18         protected ModelMemory(LogicModelModifiable model, int width, int height, String name, String centerText, boolean callInit)
19         {
20                 super(model, name, false);
21
22                 SimpleRectangularLikeParams rendererParams = new SimpleRectangularLikeParams();
23                 rendererParams.centerText = centerText;
24                 rendererParams.centerTextHeight = 5;
25                 rendererParams.horizontalComponentCenter = width / 2;
26                 rendererParams.pinLabelHeight = 2.5;
27                 rendererParams.pinLabelMargin = 0.5;
28                 this.symbolRenderer = new SimpleRectangularLikeSymbolRenderer(this, rendererParams);
29                 this.outlineRenderer = new DefaultOutlineRenderer(this);
30
31                 setSize(width, height);
32
33                 if (callInit)
34                         init();
35         }
36
37         @Override
38         public void render(GeneralGC gc, Rectangle visibleRegion)
39         {
40                 symbolRenderer.render(gc, visibleRegion);
41                 outlineRenderer.render(gc, visibleRegion);
42         }
43
44         public void setMachine(M machine)
45         {
46                 this.machine = machine;
47         }
48
49         public M getMachine()
50         {
51                 return machine;
52         }
53 }