242 lines
7.3 KiB
XML
242 lines
7.3 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<Module>
|
|
<ModulePrefs
|
|
title="IWC Test Stub"
|
|
description="A widget for tracing and sending ROLE IWC intents. Recommended for developers of IWC-enabled widgets."
|
|
author="Dominik Renzel, Chair of Computer Science 5, RWTH Aachen University, Germany"
|
|
author_email="renzel@dbis.rwth-aachen.de"
|
|
height="500">
|
|
<Require feature="dynamic-height"/>
|
|
</ModulePrefs>
|
|
<Content type="html">
|
|
<![CDATA[
|
|
<style type="text/css">
|
|
* {
|
|
font-family: Verdana;
|
|
font-size: 8pt;
|
|
}
|
|
|
|
#accordion {
|
|
overflow: auto;
|
|
height: 310px;
|
|
}
|
|
|
|
#pubform, .entry {
|
|
border: 1pt solid black
|
|
width: 100%;
|
|
}
|
|
|
|
tr td.ui-state-default{
|
|
width: 20%;
|
|
}
|
|
|
|
tr td.input, tr td.ui-widget-content {
|
|
width: 80%;
|
|
}
|
|
|
|
#pub_form tr td input {
|
|
width: 100%;
|
|
}
|
|
|
|
#pub_form tr td textarea {
|
|
width: 100%;
|
|
}
|
|
|
|
</style>
|
|
|
|
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css"/>
|
|
|
|
<script type="application/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
|
|
<script type="application/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"</script>
|
|
|
|
<script src="http://open-app.googlecode.com/files/openapp.js"></script>
|
|
<script src="http://dbis.rwth-aachen.de/gadgets/iwc/lib/iwc.js"></script>
|
|
<script src="http://dbis.rwth-aachen.de/gadgets/iwc/lib/date.js"></script>
|
|
|
|
<script type="text/javascript">
|
|
|
|
var counter = 0;
|
|
var iwcClient = null;
|
|
|
|
function renderIntent(intent){
|
|
var result = "<table class='entry'>";
|
|
|
|
|
|
var sender = intent.sender;
|
|
var publisher = "me";
|
|
var source = sender;
|
|
|
|
if (sender.indexOf("?sender=") > -1){
|
|
var ts = sender.split("?sender=");
|
|
publisher = ts[0].split("/")[0];
|
|
source = ts[1];
|
|
} else {
|
|
publisher = "<b><i>me</i></b>";
|
|
source = sender;
|
|
}
|
|
|
|
result += "<tr><td class='ui-state-default'>Publisher</td><td class='ui-widget-content'>" + publisher + "</td></tr>";
|
|
result += "<tr><td class='ui-state-default'>Source</td><td class='ui-widget-content'>" + source + "</td></tr>";
|
|
|
|
|
|
|
|
var comp = intent.component;
|
|
if(comp === ""){
|
|
comp = "*";
|
|
}
|
|
|
|
result += "<tr><td class='ui-state-default'>Component</td><td class='ui-widget-content,value'>" + comp + "</td></tr>";
|
|
result += "<tr><td class='ui-state-default'>Action</td><td class='ui-widget-content'>" + intent.action + "</td></tr>";
|
|
result += "<tr><td class='ui-state-default'>Data</td><td class='ui-widget-content'>" + intent.data + "</td></tr>";
|
|
result += "<tr><td class='ui-state-default'>Datatype</td><td class='ui-widget-content'>" + intent.dataType + "</td></tr>";
|
|
result += "<tr><td class='ui-state-default'>Categories</td><td class='ui-widget-content'>" + intent.categories + "</td></tr>";
|
|
result += "<tr><td class='ui-state-default'>Flags</td><td class='ui-widget-content'>" + intent.flags + "</td></tr>";
|
|
result += "<tr><td class='ui-state-default'>Extras</td><td class='ui-widget-content'> " + JSON.stringify(intent.extras) + "</td></tr>";
|
|
|
|
result += "</table>";
|
|
|
|
return result;
|
|
}
|
|
|
|
function collectIntent(){
|
|
var action = $("#pub_action").val();
|
|
console.log("Action: " + action);
|
|
|
|
var sender = $("#pub_source").val();
|
|
if(!($("#pub_publisher").val() == 'me')){
|
|
sender = $("#pub_publisher").val() + "?sender=" + sender;
|
|
}
|
|
|
|
var categories = $("#pub_categories").val().split(",");
|
|
var flags = $("#pub_flags").val().split(",");
|
|
|
|
try{
|
|
var extras = $.parseJSON($("#pub_extras").val());
|
|
} catch(error) {
|
|
alert("Corrupt JSON specified for extras");
|
|
return;
|
|
}
|
|
var intent = {
|
|
"component": $("#pub_component").val(),
|
|
"sender": sender,
|
|
"data": $("#pub_data").val(),
|
|
"dataType":$("#pub_datatype").val(),
|
|
"action":$("#pub_action").val(),
|
|
"categories":categories,
|
|
"flags": flags,
|
|
"extras": extras
|
|
};
|
|
return intent;
|
|
}
|
|
|
|
function init(){
|
|
|
|
iwcClient = new iwc.Client();
|
|
|
|
var iwcCallback = function(intent) {
|
|
var date = new Date();
|
|
var format = "yyyy-MM-dd kk:mm:ss";
|
|
var dates = formatDate(date,format)+"."+date.getMilliseconds();
|
|
$('#accordion').prepend("<h3><a href='#'>#" + counter + " - " + intent.action + " (" + dates + ")</a></h3><div>" + renderIntent(intent) + "</div>").accordion('destroy').accordion();
|
|
counter += 1;
|
|
}
|
|
|
|
iwcClient.connect(iwcCallback);
|
|
|
|
}
|
|
|
|
$(function() {
|
|
$( "#accordion" ).accordion({
|
|
collapsible: true
|
|
});
|
|
|
|
$( "#clearb" ).button().click(function() {
|
|
counter = 0;
|
|
$( "#accordion" ).accordion('destroy').empty().accordion();
|
|
});
|
|
|
|
$( "#sendb" ).button().click(function() {
|
|
$("#sendintent").dialog('open');
|
|
});
|
|
|
|
$("#exint").dialog({
|
|
autoOpen: false,
|
|
heigth: 340,
|
|
width: 350,
|
|
modal: true
|
|
});
|
|
|
|
$("#sendintent").dialog({
|
|
autoOpen: false,
|
|
height: 340,
|
|
width: 350,
|
|
modal: true,
|
|
buttons: {
|
|
"Send": function() {
|
|
var intent = collectIntent();
|
|
|
|
console.log(intent);
|
|
|
|
if(iwc.util.validateIntent(intent)) {
|
|
iwcClient.publish(intent);
|
|
}
|
|
else {
|
|
alert("Intent not valid! ");
|
|
}
|
|
|
|
},
|
|
Export: function() {
|
|
var intent = collectIntent();
|
|
var istr = JSON.stringify(intent);
|
|
console.log(istr);
|
|
$("#intsnip").html(istr);
|
|
$("#exint").dialog("open");
|
|
},
|
|
Cancel: function() {
|
|
$(this).dialog('close');
|
|
}
|
|
},
|
|
close: function(){
|
|
//$(this).dialog('close');
|
|
}
|
|
});
|
|
|
|
gadgets.window.adjustHeight();
|
|
});
|
|
|
|
$(document).ready(init());
|
|
|
|
|
|
</script>
|
|
<button id="sendb">Send Intent</button> <button id="clearb">Clear List</button>
|
|
<h1>Received Intents</h1>
|
|
<div id="accordion">
|
|
</div>
|
|
|
|
<div id='sendintent' title='Send Intent'>
|
|
<table id='pub_form'>
|
|
<tr><td class='ui-state-default'>Publisher</td><td class='input'><input id='pub_publisher' type='text' value='me'/></td></tr>
|
|
<tr><td class='ui-state-default'>Source</td><td class='input'><input id='pub_source' type='text' value='http://widget.org/sender.xml'/></td></tr>
|
|
<tr><td class='ui-state-default'>Component</td><td class='input'><input id='pub_component' type='text'/></td></tr>
|
|
<tr><td class='ui-state-default'>Action</td><td class='input'><input id='pub_action' type='text' value='ACTION_UPDATE'/></td></tr>
|
|
<tr><td class='ui-state-default'>Data</td><td class='input'><input id='pub_data' type='text' value='http://example.org/some/data'/></td></tr>
|
|
<tr><td class='ui-state-default'>Data Type</td><td class='input'><input id='pub_datatype' type='text' value='text/plain'/></td></tr>
|
|
<tr><td class='ui-state-default'>Flags</td><td class='input'><input id='pub_flags' type='text' value='PUBLISH_GLOBAL'/></td></tr>
|
|
<tr><td class='ui-state-default'>Categories</td><td class='input'><input id='pub_categories' type='text' value='cat1,cat2'/></td></tr>
|
|
<!-- <tr><td class='ui-state-default'>Extras</td><td class='input'><input id='pub_extras' type='text' value='{"key":"value"}'/></td></tr> -->
|
|
<tr><td class='ui-state-default'>Extras</td><td class='input'><textarea id='pub_extras' value='{"key":"value"}'/></td></tr>
|
|
|
|
</table>
|
|
</div>
|
|
|
|
<div id="exint" title="Exported Intent JSON">
|
|
Copy the snippet below to your code to specify a respective intent message.
|
|
<p id="intsnip"></p>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
]]>
|
|
</Content>
|
|
</Module>
|