/*
* Copyright 2012-2014 eBay Software Foundation and selendroid committers.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package io.selendroid.server.common.inspector;
import io.selendroid.server.common.http.HttpRequest;
import org.json.JSONException;
public abstract class BaseInspectorViewRenderer {
public String buildHtml(HttpRequest request) throws JSONException {
StringBuilder b = new StringBuilder();
appendLine(b, "<!DOCTYPE html>");
appendLine(b, "<html>");
appendLine(b, "<head>");
appendLine(b, "<title>Selendroid Inspector</title>");
appendLine(b, "<link rel=\"stylesheet\" href='" + getResource("inspector.css")
+ "' type='text/css'/>");
appendLine(b, "<link rel=\"stylesheet\" href='" + getResource("ide.css")
+ "' type='text/css'/>");
appendLine(b, "<link rel=\"stylesheet\" href='" + getResource("jquery.layout.css")
+ "' type='text/css'/>");
appendLine(b, "<link rel=\"stylesheet\" href='" + getResource("jquery-ui.css")
+ "' type='text/css'/>");
appendLine(b, "<link rel=\"stylesheet\" href='" + getResource("prettify.css")
+ "' type='text/css'/>");
appendLine(b, "<script type='text/javascript' src='" + getResource("jquery-1.9.1.js")
+ "'></script>");
appendLine(b, "<script type='text/javascript' src='" + getResource("jquery-ui-1.10.2.min.js")
+ "'></script>");
appendLine(b, "<script type='text/javascript' src='" + getResource("inspector1.js")
+ "'></script>");
appendLine(b, "<script type='text/javascript' src='" + getResource("jquery.jstree.js")
+ "'></script>");
appendLine(b, "<script type='text/javascript' src='" + getResource("jquery.xpath.js")
+ "'></script>");
appendLine(b, "<script type='text/javascript' src='" + getResource("prettify.js")
+ "'></script>");
appendLine(b, "<script type='text/javascript' src='" + getResource("Logger.js") + "'></script>");
appendLine(b, "<script type='text/javascript' src='" + getResource("Recorder.js")
+ "'></script>");
appendLine(b, "<script type='text/javascript' src='" + getResource("inspector.js")
+ "'></script>");
appendLine(b, "<script type='text/javascript' src='" + getResource("ide.js") + "'></script>");
appendLine(b, "<script type='text/javascript' src='" + getResource("uiactions.js")
+ "'></script>");
appendLine(b, "<script type='text/javascript' src='" + getResource("jquery.layout1.3.js")
+ "'></script>");
appendLine(b, "<script>");
appendLine(b, "jQuery(window).load(function () {");
appendLine(b, " console.log('before calling resize()');");
appendLine(b, " resize();");
appendLine(b, "});");
appendLine(b, "</script>");
appendLine(b, "</head>");
appendLine(b, "<body>");
appendLine(b, "<div id='header'>");
appendLine(
b,
"<div><a target=\"_blank\" href='http://selendroid.io'><img id='logo' src=\""
+ getResource("images/selendroid-logo.png")
+ "\"></a><div id='logo'> Inspector shortcuts: <em>CTRL</em> locks tree element selection, <em>ESC</em> opens XPath helper</div></div>");
appendLine(b, "<div style=\"display: none\"><input type='checkbox' id='record'/>");
appendLine(b, "<label for='record' id='record_text'>Record</label></div>");
appendLine(b, "</div>");
appendLine(b, "<div id='content' style='height: 750px'>");
appendLine(b, "<div class='ui-layout-center'>");
appendLine(b, "<div class='ui-layout-west' id='device'>");
appendLine(b, "<div id='simulator'>");
appendLine(b, "<div id='rotationCenter'>");
appendLine(b, "<div id='mouseOver'></div>");
appendLine(b, "<div id='frame'>");
// appendLine(b, "<img src='"getFrame()"'/>");
appendLine(b, "<div id='screen'>");
appendLine(b, "<img id='screenshot' src='" + getScreen(request) + "\' width='320px'/>");
appendLine(b, "</div>");
appendLine(b, "</div>");
appendLine(b, "</div>");
appendLine(b, "</div>");
appendLine(b, "</div>");
appendLine(b, "<div class='ui-layout-center'>");
appendLine(b, " <div id='tree'></div>");
appendLine(b, "</div>");
appendLine(b, "<div class='ui-layout-east'>");
appendLine(b, " <div id='details'></div>");
appendLine(b, "</div>");
appendLine(b, "</div>");
appendLine(b, "<div class='ui-layout-south'>");
appendLine(b, "<ul>");
appendLine(b, "<li><a href='#java'>Java</a></li>");
appendLine(b, "<li><a href='#htmlSource'>Html Source</a></li>");
appendLine(b, "</ul>");
appendLine(b, "<div class='ui-layout-content ui-widget-content'>");
appendLine(b, "<pre id='java' class='prettyprint' width='100%'></pre>");
appendLine(b, "<pre id='htmlSource' class='prettyprint' width='100%'></pre>");
appendLine(b, "</div>");
appendLine(b, "</div>");
appendLine(b, "</div>");
appendLine(b, "</div>");
appendLine(b, "<div id='xpathHelper' title='Xpather helper'>");
appendLine(b, "<input type='text' value='' id='xpathInput'/>");
appendLine(b, "<div id='xpathLog'> log</div>");
appendLine(b, "</div>");
appendLine(b, "<div id='footer'>");
appendLine(b,
"<div>© 2012 - 2014 <a href=\"http://ebayopensource.github.io/\" target=\"_blank\"><img src=\""
+ getResource("images/ebay-logo.png") + "\"> software foundation</a> | ");
appendLine(
b,
"Maintained by <a href=\"https://github.com/selendroid/selendroid/blob/master/AUTHORS\" target=\"_blank\">Selendroid Authors</a> | ");
appendLine(b, "<a href=\"http://groups.google.com/group/selendroid\" target=\"_blank\">Mailing List</a> | ");
appendLine(
b,
"<a href=\"https://github.com/selendroid/selendroid/issues?direction=desc&sort=updated&state=open\" target=\"_blank\">Issue Tracker</a></div>");
appendLine(b, "</div>");
appendLine(b, "<script >configure('iphone','Regular','PORTRAIT');</script>");
appendLine(b, "</body>");
appendLine(b, "</html>");
return b.toString();
}
private void appendLine(StringBuilder buffer, String line) {
buffer.append(line + System.getProperty("line.separator"));
}
public abstract String getResource(String name);
public abstract String getScreen(HttpRequest request);
private String getFrame() {
return getResource("frameNexus4.png");
}
}