959fb8960f39782e1f76e480549c601e6b67660d
[Mograsim.git] / net.mograsim.logic.model.editor / src / net / mograsim / logic / model / editor / handles / CornerHandle.java
1 package net.mograsim.logic.model.editor.handles;
2
3 import org.eclipse.swt.SWT;
4 import org.eclipse.swt.widgets.Display;
5
6 import net.haspamelodica.swt.helper.gcs.GeneralGC;
7 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
8 import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent;
9
10 public class CornerHandle extends Handle
11 {
12         private final static int LENGTH = 5;
13         private final DeserializedSubmodelComponent toBeEdited;
14         private boolean selected;
15
16         public CornerHandle(DeserializedSubmodelComponent toBeEdited)
17         {
18                 super(0);
19                 this.toBeEdited = toBeEdited;
20                 setSize(LENGTH, LENGTH);
21                 initPos();
22         }
23
24         @Override
25         protected void render(GeneralGC gc)
26         {
27                 gc.setBackground(Display.getCurrent().getSystemColor(selected ? SWT.COLOR_YELLOW : SWT.COLOR_DARK_GREEN));
28                 gc.fillRectangle(getPosX(), getPosY(), LENGTH, LENGTH);
29         }
30
31         private void initPos()
32         {
33                 Rectangle bounds = toBeEdited.getBounds();
34                 double subScale = toBeEdited.getSubmodelScale();
35                 moveTo(bounds.width / subScale, bounds.height / subScale);
36         }
37
38         @Override
39         public void reqMove(double x, double y)
40         {
41                 moveTo(x, y);
42         }
43
44         @Override
45         public void onSelect()
46         {
47                 selected = true;
48                 callRedrawListeners();
49         }
50
51         @Override
52         public void onDeselect()
53         {
54                 selected = false;
55                 callRedrawListeners();
56         }
57
58         @Override
59         protected void moveTo(double x, double y)
60         {
61                 super.moveTo(x, y);
62                 double subScale = toBeEdited.getSubmodelScale();
63                 toBeEdited.setSize(x * subScale, y * subScale);
64         }
65
66         @Override
67         public HandleType getType()
68         {
69                 return HandleType.CORNER;
70         }
71 }