JETServer
/home/bradarant/barant/HTTPServer/__editview.h
1 #ifndef ____editview_h__
2 #define ____editview_h__
3 
4 #include "HTTPPage.h"
5 
6 namespace http {
7 
8  class __editview : public HTTPPage {
9 
10  int processCommand(std::string request, core::Session *session, HTTPSession *httpSession, HTTPRequest &httpRequest, std::stringstream &data) override {
11 
12  data << " <div style=\"position: relative;\">" << std::endl;
13  data << "" << std::endl;
14  data << " <div id=\"window1\" style=\"position: absolute; left: 0px; top: 0px; border: 1pt solid black; display: inline-block; padding: 2px; background: #808080; color: #ffffff;\">" << std::endl;
15  data << "" << std::endl;
16  data << " <span style=\"font: 20px bebasneue;\">View Editor</span>" << std::endl;
17  data << "" << std::endl;
18  data << " <div id=\"mainpage\" " << std::endl;
19  data << " style=\"width: 600px; height: 600px; border: 1px solid black; position: relative; background: #ffffff;\" " << std::endl;
20  data << " onmousemove=\"mousemove(event); return true;\" " << std::endl;
21  data << " onmouseup=\"mouseup(); return true;\">" << std::endl;
22  data << "" << std::endl;
23  data << " <canvas id=\"grid\" width=\"600px\" height=\"600px\" style=\"position: absolute; left: 0px; top: 0px; alpha: 0.5; cursor: normal;\"></canvas>" << std::endl;
24  data << "" << std::endl;
25 
26  data << "<div id=\"__workspace__\"></div>" << std::endl;
27 
28  data << "" << std::endl;
29  data << " <div id=\"window3\" style=\"position:absolute; top: 235px; left: 610px;" << std::endl;
30  data << " border: 1pt solid black; display: inline-block; padding: 2px; background: #808080; color: #ffffff;\">" << std::endl;
31  data << "" << std::endl;
32  data << " <span style=\"font: 20px bebasneue;\">OPTIONS</span>" << std::endl;
33  data << "" << std::endl;
34  data << " <div style=\"width: 150px; height: 300px; color: #000000; border: 1px solid black; position: relative; background: #ffffff;\" " << std::endl;
35  data << " onmousemove=\"mousemove(event); return true;\" " << std::endl;
36  data << " onmouseup=\"mouseup(); return true;\"> " << std::endl;
37  data << "" << std::endl;
38  data << " <div id=\"controls\">" << std::endl;
39  data << " <input type=\"checkbox\" name=\"grid\" onchange=\"showGrid = this.checked; drawGrid(); return true;\"><span style=\"font: 12px bebasneue; margin-bottom: 2px;\">Show Grid</span><br>" << std::endl;
40  data << " <input type=\"checkbox\" name=\"snaptogrid\" onchange=\"snapToGrid = this.checked; return true;\"><span style=\"font: 12px bebasneue; margin-bottom: 2px;\">Snap To Grid</span><br>" << std::endl;
41  data << " <span style=\"font: 12px bebasneue; margin-bottom: 2px;\">Grid Size: </span><input type=\"text\" name=\"gridsize\" id=\"gridsize\" style=\"width: 20px;\" size=\"3\" onchange=\"gridSize = parseInt(this.value); drawGrid(); return true;\"><br>" << std::endl;
42  data << " </div>" << std::endl;
43  data << "" << std::endl;
44  data << " <div id=\"itemparameters\" style=\"font: 12px bebasneue;\"></div>" << std::endl;
45  data << "" << std::endl;
46  data << " <div id=\"data\" style=\"font: 12px bebasneue;\">" << std::endl;
47  data << " <p>NO DATA</p>" << std::endl;
48  data << " </div>" << std::endl;
49  data << "" << std::endl;
50  data << " </div>" << std::endl;
51  data << " </div>" << std::endl;
52  data << "" << std::endl;
53  data << "" << std::endl;
54  data << " <div id=\"window2\" style=\"position:absolute; top: 0px; left: 610px; border: 1pt solid black; display: inline-block; padding: 2px; background: #808080; color: #ffffff;\">" << std::endl;
55  data << "" << std::endl;
56  data << " <span style=\"font: 20px bebasneue;\">Toolbar</span>" << std::endl;
57  data << "" << std::endl;
58  data << " <div id=\"toolbar\" " << std::endl;
59  data << " style=\"width: 80px; height: 200px; border: 1px solid black; position: relative; background: #ffffff;\" " << std::endl;
60  data << " onmousemove=\"mousemove(event); return true;\" " << std::endl;
61  data << " onmouseup=\"mouseup(); return true;\">" << std::endl;
62  data << " <button id=\"button1\" " << std::endl;
63  data << " style=\"width: 40px; height: 40px; border: 2px solid green; position: absolute;\"" << std::endl;
64  data << " onmousedown=\"mousedown(this, event); return true;\">Press</button>" << std::endl;
65  data << "" << std::endl;
66  data << " </div>" << std::endl;
67  data << " </div>" << std::endl;
68  data << " " << std::endl;
69  data << " </div> " << std::endl;
70  data << "" << std::endl;
71  data << " <script>" << std::endl;
72  data << " var mainpage;" << std::endl;
73  data << " var result;" << std::endl;
74  data << " var mousedownx;" << std::endl;
75  data << " var mousedowny;" << std::endl;
76  data << " var mouseDownWidth;" << std::endl;
77  data << " var mouseDownHeight;" << std::endl;
78  data << " var ismousedown = false;" << std::endl;
79  data << " var dragobject;" << std::endl;
80  data << " var dragHint = \"move\";" << std::endl;
81  data << " var data;" << std::endl;
82  data << " var showGrid = false;" << std::endl;
83  data << " var snapToGrid = false;" << std::endl;
84  data << " var gridSize = 10;" << std::endl;
85  data << " var selected;" << std::endl;
86  data << " var itemparameters;" << std::endl;
87  data << "" << std::endl;
88  data << " mainpage = document.getElementById(\"mainpage\");" << std::endl;
89  data << " data = document.getElementById(\"data\");" << std::endl;
90  data << " itemparameters = document.getElementById(\"itemparameters\");" << std::endl;
91  data << " var gridsize = document.getElementById(\"gridsize\");" << std::endl;
92  data << " gridsize.value = gridSize;" << std::endl;
93  data << " drawGrid();" << std::endl;
94  data << "" << std::endl;
95  data << " function drawGrid() {" << std::endl;
96  data << " var grid = document.getElementById(\"grid\");" << std::endl;
97  data << " var context = grid.getContext(\"2d\");" << std::endl;
98  data << " if(showGrid == true) {" << std::endl;
99  data << " context.clearRect(0,0,grid.width,grid.height);" << std::endl;
100  data << " context.globalAlpha = 0.2;" << std::endl;
101  data << " context.lineWidth = 0.5; " << std::endl;
102  data << " for(ix = 0; ix < grid.width; ix += gridSize) {" << std::endl;
103  data << " context.beginPath();" << std::endl;
104  data << " context.moveTo(ix, 0);" << std::endl;
105  data << " context.lineTo(ix, grid.height);" << std::endl;
106  data << " context.stroke();" << std::endl;
107  data << " context.beginPath();" << std::endl;
108  data << " context.moveTo(0, ix);" << std::endl;
109  data << " context.lineTo(grid.width, ix);" << std::endl;
110  data << " context.stroke(); " << std::endl;
111  data << " }" << std::endl;
112  data << " } else {" << std::endl;
113  data << " context.clearRect(0,0,grid.width,grid.height);" << std::endl;
114  data << " }" << std::endl;
115  data << " }" << std::endl;
116  data << "" << std::endl;
117  data << " function setDragHint(hint) {" << std::endl;
118  data << " dragHint = hint;" << std::endl;
119  data << " }" << std::endl;
120  data << " " << std::endl;
121  data << " function getMouseX(e) {" << std::endl;
122  data << " return e.clientX - mainpage.offsetLeft - parseFloat(mainpage.style.borderWidth);" << std::endl;
123  data << " }" << std::endl;
124  data << " " << std::endl;
125  data << " function getMouseY(e) {" << std::endl;
126  data << " return e.clientY - mainpage.offsetTop - parseFloat(mainpage.style.borderWidth);" << std::endl;
127  data << " }" << std::endl;
128  data << "" << std::endl;
129  data << " function mousedown(obj, e) {" << std::endl;
130  data << " var mouseX = getMouseX(e);" << std::endl;
131  data << " var mouseY = getMouseY(e);" << std::endl;
132  data << " mousedownx = mouseX - obj.offsetLeft;" << std::endl;
133  data << " mousedowny = mouseY - obj.offsetTop;" << std::endl;
134  data << " mouseDownLeft = parseFloat(obj.style.left);" << std::endl;
135  data << " mouseDownTop = parseFloat(obj.style.top);" << std::endl;
136  data << " mouseDownWidth = parseFloat(obj.style.width);" << std::endl;
137  data << " mouseDownHeight = parseFloat(obj.style.height);" << std::endl;
138  data << " dragobject = obj;" << std::endl;
139  data << " selected = obj;" << std::endl;
140  data << " ismousedown = true;" << std::endl;
141  data << " displayParameters();" << std::endl;
142  data << " }" << std::endl;
143  data << " " << std::endl;
144  data << " function mouseup() {" << std::endl;
145  data << " ismousedown = false;" << std::endl;
146  data << " dragobject = null;" << std::endl;
147  data << " console.log(mainpage.innerHTML);" << std::endl;
148  data << " }" << std::endl;
149  data << "" << std::endl;
150  data << " function mousemove(e) {" << std::endl;
151  data << " var mouseX = getMouseX(e);" << std::endl;
152  data << " var mouseY = getMouseY(e);" << std::endl;
153  data << " if(ismousedown) {" << std::endl;
154  data << " " << std::endl;
155  data << " if(dragHint == \"move\") {" << std::endl;
156  data << " if(snapToGrid == false) {" << std::endl;
157  data << " dragobject.style.left = (mouseX - mousedownx) + \"px\";" << std::endl;
158  data << " dragobject.style.top = (mouseY - mousedowny) + \"px\";" << std::endl;
159  data << " } else {" << std::endl;
160  data << " dragobject.style.left = (Math.round((mouseX - mousedownx) / gridSize) * gridSize) + \"px\";" << std::endl;
161  data << " dragobject.style.top = (Math.round((mouseY - mousedowny) / gridSize) * gridSize) + \"px\";" << std::endl;
162  data << " }" << std::endl;
163  data << " if((mouseX - mousedownx) < 0)" << std::endl;
164  data << " dragobject.style.left = \"0px\";" << std::endl;
165  data << " if((mouseY - mousedowny) < 0)" << std::endl;
166  data << " dragobject.style.top = \"0px\";" << std::endl;
167  data << " if((mouseX - mousedownx + parseFloat(dragobject.style.width)) > parseFloat(mainpage.style.width)) " << std::endl;
168  data << " dragobject.style.left = (mouseX - mousedownx) + \"px\"; " << std::endl;
169  data << " } else if(dragHint == \"rightbottomresize\") { " << std::endl;
170  data << " dragobject.style.width = (mouseX - mouseDownLeft) + \"px\";" << std::endl;
171  data << " dragobject.style.height = (mouseY - mouseDownTop) + \"px\";" << std::endl;
172  data << " } else if(dragHint == \"rightresize\") { " << std::endl;
173  data << " if(snapToGrid == false) {" << std::endl;
174  data << " dragobject.style.width = (mouseX - mouseDownLeft) + \"px\"; " << std::endl;
175  data << " } else {" << std::endl;
176  data << " dragobject.style.width = (Math.round((mouseX - mouseDownLeft) / gridSize) * gridSize) + \"px\"; " << std::endl;
177  data << " }" << std::endl;
178  data << " } else if(dragHint == \"bottomresize\") { " << std::endl;
179  data << " if(snapToGrid == false) {" << std::endl;
180  data << " dragobject.style.height = (mouseY - mouseDownTop) + \"px\";" << std::endl;
181  data << " } else {" << std::endl;
182  data << " dragobject.style.height = (Math.round((mouseY - mouseDownTop) / gridSize) * gridSize) + \"px\";" << std::endl;
183  data << " }" << std::endl;
184  data << " } else if(dragHint == \"leftresize\") { " << std::endl;
185  data << " dragobject.style.left = mouseX + \"px\";" << std::endl;
186  data << " dragobject.style.width = (mouseDownWidth + (mouseDownLeft - mouseX)) + \"px\";" << std::endl;
187  data << " } else if(dragHint == \"topresize\") { " << std::endl;
188  data << " dragobject.style.top = mouseY + \"px\";" << std::endl;
189  data << " dragobject.style.height = (mouseDownHeight + (mouseDownTop - mouseY)) + \"px\";" << std::endl;
190  data << " }" << std::endl;
191  data << " " << std::endl;
192  data << " data.innerHTML = \"<p>\" + dragobject.nodeName + \"<br>\" + " << std::endl;
193  data << " \"Action: \" + dragHint + \"<br>\" +" << std::endl;
194  data << " \"MouseLocation: \" + mouseX + \":\" + mouseY + \"<br>\" +" << std::endl;
195  data << " \"MouseOver Location: \" + (mouseX - dragobject.offsetLeft) + \":\" + (mouseY - dragobject.offsetTop) + \"<br>\" + " << std::endl;
196  data << " \"Location: \" + dragobject.style.left + \":\" + dragobject.style.top + \"<br>\" + " << std::endl;
197  data << " \"Size: \" + dragobject.style.width + \":\" + dragobject.style.height + \"<br>\" + " << std::endl;
198  data << " \"</p>\";" << std::endl;
199  data << " " << std::endl;
200  data << "" << std::endl;
201  data << " } else {" << std::endl;
202  data << " var mouseabove = document.elementFromPoint(mouseX + mainpage.offsetLeft, mouseY + mainpage.offsetTop);" << std::endl;
203  data << "" << std::endl;
204  data << " if((mouseabove.id != \"mainpage\") && (mouseabove.id != \"grid\")) {" << std::endl;
205  data << " " << std::endl;
206  data << " data.innerHTML = \"<p>\" + mouseabove.nodeName + \"<br>\" + " << std::endl;
207  data << " \"Action: \" + dragHint + \"<br>\" +" << std::endl;
208  data << " \"MouseLocation: \" + mouseX + \":\" + mouseY + \"<br>\" +" << std::endl;
209  data << " \"MouseOver Location: \" + (mouseX - mouseabove.offsetLeft) + \":\" + (mouseY - mouseabove.offsetTop) + \"<br>\" + " << std::endl;
210  data << " \"Location: \" + mouseabove.style.left + \":\" + mouseabove.style.top + \"<br>\" + " << std::endl;
211  data << " \"Size: \" + mouseabove.style.width + \":\" + mouseabove.style.height + \"<br>\" + " << std::endl;
212  data << " \"</p>\";" << std::endl;
213  data << " " << std::endl;
214  data << " if((mouseabove.nodeName == \"DIV\") || " << std::endl;
215  data << " (mouseabove.nodeName == \"IMG\") || " << std::endl;
216  data << " (mouseabove.nodeName == \"BUTTON\") ||" << std::endl;
217  data << " (mouseabove.nodeName == \"INPUT\") ||" << std::endl;
218  data << " (mouseabove.nodeName == \"SPAN\")) {" << std::endl;
219  data << " " << std::endl;
220  data << " if((parseFloat(mouseabove.style.width) <= (mouseX - mouseabove.offsetLeft)) && " << std::endl;
221  data << " (parseFloat(mouseabove.style.height) <= (mouseY - mouseabove.offsetTop))) {" << std::endl;
222  data << " mouseabove.style.cursor = \"nwse-resize\";" << std::endl;
223  data << " dragHint = \"rightbottomresize\"; " << std::endl;
224  data << " } else if((parseFloat(mouseabove.style.left) <= (mouseX - mouseabove.offsetLeft)) && " << std::endl;
225  data << " ((parseFloat(mouseabove.style.borderWidth) + 2) >= (mouseY - mouseabove.offsetTop))) {" << std::endl;
226  data << " mouseabove.style.cursor = \"nesw-resize\";" << std::endl;
227  data << " dragHint = \"righttopresize\"; " << std::endl;
228  data << " } else if(((parseFloat(mouseabove.style.borderWidth) + 2) >= (mouseX - mouseabove.offsetLeft)) && " << std::endl;
229  data << " (parseFloat(mouseabove.style.height) <= (mouseY - mouseabove.offsetTop))) {" << std::endl;
230  data << " mouseabove.style.cursor = \"nesw-resize\";" << std::endl;
231  data << " dragHint = \"leftbottomresize\"; " << std::endl;
232  data << " } else if(parseFloat(mouseabove.style.width) <= (mouseX - mouseabove.offsetLeft)) {" << std::endl;
233  data << " mouseabove.style.cursor = \"ew-resize\";" << std::endl;
234  data << " dragHint = \"rightresize\";" << std::endl;
235  data << " } else if(parseFloat(mouseabove.style.height) <= (mouseY - mouseabove.offsetTop)) {" << std::endl;
236  data << " mouseabove.style.cursor = \"ns-resize\";" << std::endl;
237  data << " dragHint = \"bottomresize\";" << std::endl;
238  data << " } else if((parseFloat(mouseabove.style.borderWidth) + 2) >= (mouseX - mouseabove.offsetLeft)) {" << std::endl;
239  data << " mouseabove.style.cursor = \"ew-resize\";" << std::endl;
240  data << " dragHint = \"leftresize\";" << std::endl;
241  data << " } else if((parseFloat(mouseabove.style.borderWidth) + 2) >= (mouseY - mouseabove.offsetTop)) {" << std::endl;
242  data << " mouseabove.style.cursor = \"ns-resize\";" << std::endl;
243  data << " dragHint = \"topresize\";" << std::endl;
244  data << " } else {" << std::endl;
245  data << " mouseabove.style.cursor = \"move\";" << std::endl;
246  data << " dragHint = \"move\";" << std::endl;
247  data << " }" << std::endl;
248  data << " } else {" << std::endl;
249  data << " mouseabove.style.cursor = \"default\";" << std::endl;
250  data << " }" << std::endl;
251  data << " } else {" << std::endl;
252  data << " mouseabove.style.cursor = \"default\";" << std::endl;
253  data << " dragHint = \"\";" << std::endl;
254  data << " data.innerHTML = \"<p></p>\";" << std::endl;
255  data << " }" << std::endl;
256  data << " }" << std::endl;
257  data << " displayParameters();" << std::endl;
258  data << " }" << std::endl;
259  data << " " << std::endl;
260  data << " function displayParameters() {" << std::endl;
261  data << "" << std::endl;
262  data << " itemparameters.innerHTML = \"<p>\" + selected.nodeName + \": \" + selected.id + \"<br>\" + " << std::endl;
263  data << " \"Location: \" + selected.style.left + \":\" + selected.style.top + \"<br>\" + " << std::endl;
264  data << " \"Size: \" + selected.style.width + \":\" + selected.style.height + \"<br>\" + " << std::endl;
265  data << " \"</p>\";" << std::endl;
266  data << "" << std::endl;
267  data << " }" << std::endl;
268  data << "</script>" << std::endl;
269 
270  httpRequest.response.addHeader("Content-Type", "script/javascript");
271 
272  return 0;
273  }
274 
275  };
276 
277 }
278 
279 #endif
Definition: HTTPSession.h:9
Definition: __configure.h:4
Definition: HTTPPage.h:11
Definition: __editview.h:8
Definition: HTTPRequest.h:11