Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions app/AppStart/UISample.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
*
* @author jskonst
*/
define('UISample', ['orm', 'forms', 'ui','FancyWidget', '../CustomWidgets/Button'], function (Orm, Forms, Ui,FancyWidget, Button, ModuleName) {
define('UISample', ['orm', 'forms', 'ui','FancyWidget', '../CustomWidgets/Button', '../CustomWidgets/Dropdown'], function (Orm, Forms, Ui,FancyWidget, Button, Dropdown, ModuleName) {
function module_constructor() {
var self = this
, model = Orm.loadModel(ModuleName)
Expand All @@ -18,11 +18,18 @@ define('UISample', ['orm', 'forms', 'ui','FancyWidget', '../CustomWidgets/Button

var btn = new Button(form.pnlPlaceholder3);
btn.height=30;
btn.width=60;
btn.width=160;
btn.text = "Another text";
btn.onActionPerformed = function(){
console.log("hello world");
}

//dropdown
var dropdown = new Dropdown(form.pnlPlaceholder4);
dropdown.height=30;
dropdown.width=350;
dropdown.text="Hello";
// btn.text = "Another text";



Expand Down
5 changes: 4 additions & 1 deletion app/AppStart/UISample.layout
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?><layout title="" view="view">
<AnchorsPane background="#ffffff" cursor="0" name="view" prefHeight="181px" prefWidth="297px"/>
<AnchorsPane background="#ffffff" cursor="0" name="view" prefHeight="360px" prefWidth="297px"/>
<BoxPane background="#e71414" cursor="0" name="pnlPlaceholder1" parent="view" prefHeight="50px" prefWidth="200px">
<AnchorsPaneConstraints height="50px" left="10px" top="10px" width="200px"/>
</BoxPane>
<BoxPane background="#fcf61c" cursor="0" name="pnlPlaceholder3" orientation="1" parent="view" prefHeight="30px" prefWidth="110px">
<AnchorsPaneConstraints height="30px" left="10px" top="70px" width="110px"/>
</BoxPane>
<BoxPane background="#ffff00" cursor="0" name="pnlPlaceholder4" orientation="1" parent="view" prefHeight="210px" prefWidth="260px">
<AnchorsPaneConstraints height="210px" left="10px" top="120px" width="260px"/>
</BoxPane>
</layout>
10 changes: 9 additions & 1 deletion app/CustomWidgets/Button.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ define(['forms/box-pane'],function (BoxPane) {
function GreatButton(placeholder) {
var self = this;

//Button or any other widget could be created by own hands here
//Button or any other widget could be created by own hands here
//div
var greatBtn = new BoxPane();

greatBtn.element.className+="btn btn-primary";
Expand All @@ -18,6 +19,9 @@ define(['forms/box-pane'],function (BoxPane) {
var pnlPlaceholder = placeholder;
pnlPlaceholder.add(greatBtn);

//Text
//greatBtn.element.innerHTML = 'Some text';

//Sizes
Object.defineProperty(this,'height', {
set:function(val){greatBtn.height=val;}
Expand All @@ -32,6 +36,10 @@ define(['forms/box-pane'],function (BoxPane) {
set:function(aAction){ greatBtn.element.addEventListener("click",aAction);}
});

Object.defineProperty(this,'text', {
set:function(val){greatBtn.element.innerHTML = val;}
});


}
return GreatButton;
Expand Down
82 changes: 82 additions & 0 deletions app/CustomWidgets/Dropdown.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/


define(['forms/box-pane'],function (BoxPane) {
function Dropdown(placeholder) {
var self = this;

//Button or any other widget could be created by own hands here
//div dropdown
var dropdown = new BoxPane();
dropdown.element.className+="dropdown";


//Button
var dBtn = new BoxPane();
dBtn.element.className+="btn btn-default dropdown-toggle";
dBtn.element.type+="button";
dBtn.element.id+="dropdownMenu1";
dBtn.element.setAttribute("data-toggle", "dropdown");
dBtn.element.setAttribute("aria-haspopup","true");
dBtn.element.setAttribute("aria-expanded", "true");
dropdown.add(dBtn);


// List
var list = new BoxPane();
list.element.innerHTML = '<div class="dropdown">\
<button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">\
Dropdown\
<span class="caret"></span>\
</button>\
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">\
<li><a href="#">Action</a></li>\
<li><a href="#">Another action</a></li>\
<li><a href="#">Something else here</a></li>\
<li role="separator" class="divider"></li>\
<li><a href="#">Separated link</a></li>\
</ul>\
</div>';
dropdown.add(list);
// var UlDropdown = document.createElement('ul');
// UlDropdown.element.className+="dropdown-menu";
// UlDropdown.element.setAttribute("aria-labelledby", "dropdownMenu1");
// dropdown.add(UlDropdown);
//
// var LiDropdown = document.createElement('li');
// UlDropdown.add(LiDropdown);
//
// var LinkDropdown = document.createElement('a');
// LiDropdown.add(LinkDropdown);

//and
var pnlPlaceholder = placeholder;
pnlPlaceholder.add(dropdown);

//Text
//greatBtn.element.innerHTML = 'Some text';

//Sizes

Object.defineProperty(this,'width', {
set:function(val){pnlPlaceholder.width=val;}
});

Object.defineProperty(this,'height', {
set:function(val){dropdown.height=val;}
});

Object.defineProperty(this,'text', {
set:function(val){dBtn.element.innerHTML = val + " "+ "<span class='caret'></span>";}
});




}
return Dropdown;
});
10 changes: 9 additions & 1 deletion application-start.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,16 @@
<link rel="stylesheet" type="text/css" href="web/pwc/theme.css" />
<link rel="stylesheet" type="text/css" href="web/pwc/flaticon.css" />
<link href="ball/css/bootstrap.css" rel="stylesheet" type="text/css" />
<link href="ball/css/bootstrap.css" rel="stylesheet" type="text/css" />


</head>
<body>
<script type="text/javascript" src="web/pwc/pwc.nocache.js" source-path="app" entry-point="start"></script>
<script type="text/javascript" src="web/pwc/pwc.nocache.js" source-path="app" entry-point="start"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="ball/assets/vendor/jquery.min.js"><\/script>');</script>
<script type="text/javascript" src="ball/js/bootstrap.min.js"></script>
<script type="text/javascript" src="ball/js/bootstrap.js"></script>

</body>
</html>
211 changes: 211 additions & 0 deletions ball/assest/vendor/Blob.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@
/* Blob.js
* A Blob implementation.
* 2014-07-24
*
* By Eli Grey, http://eligrey.com
* By Devin Samarin, https://github.com/dsamarin
* License: X11/MIT
* See https://github.com/eligrey/Blob.js/blob/master/LICENSE.md
*/

/*global self, unescape */
/*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true,
plusplus: true */

/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */

(function (view) {
"use strict";

view.URL = view.URL || view.webkitURL;

if (view.Blob && view.URL) {
try {
new Blob;
return;
} catch (e) {}
}

// Internally we use a BlobBuilder implementation to base Blob off of
// in order to support older browsers that only have BlobBuilder
var BlobBuilder = view.BlobBuilder || view.WebKitBlobBuilder || view.MozBlobBuilder || (function(view) {
var
get_class = function(object) {
return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1];
}
, FakeBlobBuilder = function BlobBuilder() {
this.data = [];
}
, FakeBlob = function Blob(data, type, encoding) {
this.data = data;
this.size = data.length;
this.type = type;
this.encoding = encoding;
}
, FBB_proto = FakeBlobBuilder.prototype
, FB_proto = FakeBlob.prototype
, FileReaderSync = view.FileReaderSync
, FileException = function(type) {
this.code = this[this.name = type];
}
, file_ex_codes = (
"NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR "
+ "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR"
).split(" ")
, file_ex_code = file_ex_codes.length
, real_URL = view.URL || view.webkitURL || view
, real_create_object_URL = real_URL.createObjectURL
, real_revoke_object_URL = real_URL.revokeObjectURL
, URL = real_URL
, btoa = view.btoa
, atob = view.atob

, ArrayBuffer = view.ArrayBuffer
, Uint8Array = view.Uint8Array

, origin = /^[\w-]+:\/*\[?[\w\.:-]+\]?(?::[0-9]+)?/
;
FakeBlob.fake = FB_proto.fake = true;
while (file_ex_code--) {
FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1;
}
// Polyfill URL
if (!real_URL.createObjectURL) {
URL = view.URL = function(uri) {
var
uri_info = document.createElementNS("http://www.w3.org/1999/xhtml", "a")
, uri_origin
;
uri_info.href = uri;
if (!("origin" in uri_info)) {
if (uri_info.protocol.toLowerCase() === "data:") {
uri_info.origin = null;
} else {
uri_origin = uri.match(origin);
uri_info.origin = uri_origin && uri_origin[1];
}
}
return uri_info;
};
}
URL.createObjectURL = function(blob) {
var
type = blob.type
, data_URI_header
;
if (type === null) {
type = "application/octet-stream";
}
if (blob instanceof FakeBlob) {
data_URI_header = "data:" + type;
if (blob.encoding === "base64") {
return data_URI_header + ";base64," + blob.data;
} else if (blob.encoding === "URI") {
return data_URI_header + "," + decodeURIComponent(blob.data);
} if (btoa) {
return data_URI_header + ";base64," + btoa(blob.data);
} else {
return data_URI_header + "," + encodeURIComponent(blob.data);
}
} else if (real_create_object_URL) {
return real_create_object_URL.call(real_URL, blob);
}
};
URL.revokeObjectURL = function(object_URL) {
if (object_URL.substring(0, 5) !== "data:" && real_revoke_object_URL) {
real_revoke_object_URL.call(real_URL, object_URL);
}
};
FBB_proto.append = function(data/*, endings*/) {
var bb = this.data;
// decode data to a binary string
if (Uint8Array && (data instanceof ArrayBuffer || data instanceof Uint8Array)) {
var
str = ""
, buf = new Uint8Array(data)
, i = 0
, buf_len = buf.length
;
for (; i < buf_len; i++) {
str += String.fromCharCode(buf[i]);
}
bb.push(str);
} else if (get_class(data) === "Blob" || get_class(data) === "File") {
if (FileReaderSync) {
var fr = new FileReaderSync;
bb.push(fr.readAsBinaryString(data));
} else {
// async FileReader won't work as BlobBuilder is sync
throw new FileException("NOT_READABLE_ERR");
}
} else if (data instanceof FakeBlob) {
if (data.encoding === "base64" && atob) {
bb.push(atob(data.data));
} else if (data.encoding === "URI") {
bb.push(decodeURIComponent(data.data));
} else if (data.encoding === "raw") {
bb.push(data.data);
}
} else {
if (typeof data !== "string") {
data += ""; // convert unsupported types to strings
}
// decode UTF-16 to binary string
bb.push(unescape(encodeURIComponent(data)));
}
};
FBB_proto.getBlob = function(type) {
if (!arguments.length) {
type = null;
}
return new FakeBlob(this.data.join(""), type, "raw");
};
FBB_proto.toString = function() {
return "[object BlobBuilder]";
};
FB_proto.slice = function(start, end, type) {
var args = arguments.length;
if (args < 3) {
type = null;
}
return new FakeBlob(
this.data.slice(start, args > 1 ? end : this.data.length)
, type
, this.encoding
);
};
FB_proto.toString = function() {
return "[object Blob]";
};
FB_proto.close = function() {
this.size = 0;
delete this.data;
};
return FakeBlobBuilder;
}(view));

view.Blob = function(blobParts, options) {
var type = options ? (options.type || "") : "";
var builder = new BlobBuilder();
if (blobParts) {
for (var i = 0, len = blobParts.length; i < len; i++) {
if (Uint8Array && blobParts[i] instanceof Uint8Array) {
builder.append(blobParts[i].buffer);
}
else {
builder.append(blobParts[i]);
}
}
}
var blob = builder.getBlob(type);
if (!blob.slice && blob.webkitSlice) {
blob.slice = blob.webkitSlice;
}
return blob;
};

var getPrototypeOf = Object.getPrototypeOf || function(object) {
return object.__proto__;
};
view.Blob.prototype = getPrototypeOf(new view.Blob());
}(typeof self !== "undefined" && self || typeof window !== "undefined" && window || this.content || this));
Loading