1 module PixelPerfectEngine.concrete.popup.base;
2 
3 public import PixelPerfectEngine.concrete.interfaces;
4 public import PixelPerfectEngine.concrete.types;
5 package import PixelPerfectEngine.graphics.draw;
6 
7 /**
8  * For creating pop-up elements like menus.
9  */
10 public abstract class PopUpElement : MouseEventReceptor {
11 	//public ActionListener[] al;
12 	protected BitmapDrawer output;
13 	public static InputHandler inputhandler;
14 	//public static StyleSheet styleSheet;
15 	protected Box position;
16 	public StyleSheet customStyle;
17 	protected PopUpHandler parent;
18 	protected string source;
19 	protected Text text;
20 	/*public void delegate(Event ev) onMouseLClickRel;
21 	public void delegate(Event ev) onMouseRClickRel;
22 	public void delegate(Event ev) onMouseMClickRel;
23 	public void delegate(Event ev) onMouseHover;
24 	public void delegate(Event ev) onMouseMove;
25 	public void delegate(Event ev) onMouseLClickPre;
26 	public void delegate(Event ev) onMouseRClickPre;
27 	public void delegate(Event ev) onMouseMClickPre;*/
28 
29 	public static void delegate() onDraw;			///Called when the element finished drawing
30 	public void delegate(Event ev) onMouseClick;	///Called on mouse click on element
31 
32 	public abstract void draw();					///Called to draw the element
33 	///Mouse click events passed here
34 	public void onClick(int offsetX, int offsetY, int type = 0){
35 
36 	}
37 	///Mouse scroll events passed here
38 	public void onScroll(int x, int y, int wX, int wY){
39 
40 	}
41 	///Mouse movement events passed here
42 	public void onMouseMovement(int x, int y){
43 
44 	}
45 	public void addParent(PopUpHandler p){
46 		parent = p;
47 	}
48 
49 	protected StyleSheet getStyleSheet(){
50 		if(customStyle !is null){
51 			return customStyle;
52 		}
53 		return parent.getStyleSheet();
54 	}
55 	public Box getPosition() @nogc @safe pure nothrow const {
56 		return position;
57 	}
58 	public Box setPosition(Box val) @trusted {
59 		position = val;
60 		draw();
61 		return position;
62 	}
63 	///Moves the PopUp to the given location
64 	public Box move(int x, int y) @nogc @safe pure nothrow {
65 		position.move(x, y);
66 		return position;
67 	}
68 	///Relatively moves the PopUp by the given amount
69 	public Box relMove(int x, int y) @nogc @safe pure nothrow {
70 		position.relMove(x, y);
71 		return position;
72 	}
73 	///Returns the output of the element.
74 	public ABitmap getOutput() @safe{
75 		return output.output;
76 	}
77 	
78 	public void passMCE(MouseEventCommons mec, MouseClickEvent mce) {
79 		
80 	}
81 	
82 	public void passMME(MouseEventCommons mec, MouseMotionEvent mme) {
83 		
84 	}
85 	
86 	public void passMWE(MouseEventCommons mec, MouseWheelEvent mwe) {
87 		
88 	}
89 	
90 }