Mostly working layout
This commit is contained in:
parent
de90b3db98
commit
559405e4bb
103
css/helios.css
103
css/helios.css
|
@ -1,7 +1,104 @@
|
|||
body {
|
||||
padding-top: 40px;
|
||||
.clearfix:after {
|
||||
content: ".";
|
||||
display: block;
|
||||
clear: both;
|
||||
visibility: hidden;
|
||||
line-height: 0;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
.clearfix {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
html[xmlns] .clearfix {
|
||||
display: block;
|
||||
}
|
||||
|
||||
* html .clearfix {
|
||||
height: 1%;
|
||||
}
|
||||
|
||||
a {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-fixed-top i {
|
||||
opacity: 0.2;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.navbar-fixed-top .active i {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.nav-pills.nav-stacked > li > a {
|
||||
border-radius: 0;
|
||||
-webkit-border-radius: 0;
|
||||
-moz-border-radius: 0;
|
||||
padding: 3px 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#container {
|
||||
position: fixed;
|
||||
top: 40px;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
#container .panes {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#container .panes .pane {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#container .panes .pane {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#container .panes.horizontal > .pane {
|
||||
height: 50%;
|
||||
min-height: 50px;
|
||||
}
|
||||
|
||||
#container .panes.vertical > .pane {
|
||||
width: 50%;
|
||||
display: inline;
|
||||
float: left;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#container .splitter {
|
||||
z-index: 10;
|
||||
background: #E6E6E6;
|
||||
outline: 1px solid #bbb;
|
||||
}
|
||||
|
||||
#container .splitter.vertical {
|
||||
width: 6px;
|
||||
height: 100%;
|
||||
float: left;
|
||||
cursor: e-resize;
|
||||
background-image: url('/images/vsplitter.png');
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
#container .splitter.horizontal {
|
||||
height: 5px;
|
||||
cursor: s-resize;
|
||||
background-image: url('/images/hsplitter.png');
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
.hl_widget.focused {
|
||||
background: #ffe;
|
||||
}
|
||||
|
||||
|
|
|
@ -8,12 +8,13 @@
|
|||
<link rel="stylesheet" type="text/css" href='js/lib/bootstrap/css/bootstrap.css' />
|
||||
<link type="image/x-icon" rel="shortcut icon" href="/favicon.ico"/>
|
||||
<script type='text/javascript' src='js/lib/jQuery/jquery-1.8.2.min.js'></script>
|
||||
<script type='text/javascript' src='js/lib/jQuery/jquery-ui-1.8.24.custom.min.js'></script>
|
||||
<script type='text/javascript' src='js/lib/bootstrap/js/bootstrap.js'></script>
|
||||
<script type='text/javascript' src='js/amber.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<script type='text/javascript'> loadAmber({packages: ['Spaces', 'Helios']}) </script>
|
||||
<script type='text/javascript'> loadAmber({packages: ['Spaces', 'Helios-Layout', 'Helios-Widgets', 'Helios-Announcements']}) </script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 144 B |
Binary file not shown.
After Width: | Height: | Size: 140 B |
|
@ -0,0 +1,4 @@
|
|||
smalltalk.addPackage('Helios-Announcements', {});
|
||||
smalltalk.addClass('HLAnnouncement', smalltalk.Object, [], 'Helios-Announcements');
|
||||
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
smalltalk.addPackage('Helios-Announcements', {});
|
||||
smalltalk.addClass('HLAnnouncement', smalltalk.Object, [], 'Helios-Announcements');
|
||||
|
||||
|
|
@ -0,0 +1,354 @@
|
|||
smalltalk.addPackage('Helios-Layout', {});
|
||||
smalltalk.addClass('HLContainer', smalltalk.Widget, ['splitter'], 'Helios-Layout');
|
||||
smalltalk.addMethod(
|
||||
"_renderOn_",
|
||||
smalltalk.method({
|
||||
selector: "renderOn:",
|
||||
fn: function (html){
|
||||
var self=this;
|
||||
var $1,$2;
|
||||
$1=smalltalk.send(html,"_div",[]);
|
||||
smalltalk.send($1,"_id_",["container"]);
|
||||
$2=smalltalk.send($1,"_with_",[smalltalk.send(self,"_splitter",[])]);
|
||||
smalltalk.send(smalltalk.send(window,"_jQuery_",[window]),"_bind_do_",["resize",(function(){
|
||||
return smalltalk.send(smalltalk.send(self,"_splitter",[]),"_resize",[]);
|
||||
})]);
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLContainer);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_splitter",
|
||||
smalltalk.method({
|
||||
selector: "splitter",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return self["@splitter"];
|
||||
}
|
||||
}),
|
||||
smalltalk.HLContainer);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_splitter_",
|
||||
smalltalk.method({
|
||||
selector: "splitter:",
|
||||
fn: function (aSplitter){
|
||||
var self=this;
|
||||
self["@splitter"]=aSplitter;
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLContainer);
|
||||
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_with_",
|
||||
smalltalk.method({
|
||||
selector: "with:",
|
||||
fn: function (aSplitter){
|
||||
var self=this;
|
||||
var $2,$3,$1;
|
||||
$2=smalltalk.send(self,"_new",[]);
|
||||
smalltalk.send($2,"_splitter_",[aSplitter]);
|
||||
$3=smalltalk.send($2,"_yourself",[]);
|
||||
$1=$3;
|
||||
return $1;
|
||||
}
|
||||
}),
|
||||
smalltalk.HLContainer.klass);
|
||||
|
||||
|
||||
smalltalk.addClass('HLPane', smalltalk.Widget, [], 'Helios-Layout');
|
||||
|
||||
|
||||
smalltalk.addClass('HLHorizontalPane', smalltalk.HLPane, [], 'Helios-Layout');
|
||||
|
||||
|
||||
smalltalk.addClass('HLVerticalPane', smalltalk.HLPane, [], 'Helios-Layout');
|
||||
|
||||
|
||||
smalltalk.addClass('HLSplitter', smalltalk.Widget, ['firstWidget', 'secondWidget', 'firstPane', 'secondPane', 'splitter'], 'Helios-Layout');
|
||||
smalltalk.addMethod(
|
||||
"_cssClass",
|
||||
smalltalk.method({
|
||||
selector: "cssClass",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return "splitter";
|
||||
}
|
||||
}),
|
||||
smalltalk.HLSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_firstWidget",
|
||||
smalltalk.method({
|
||||
selector: "firstWidget",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return self["@firstWidget"];
|
||||
}
|
||||
}),
|
||||
smalltalk.HLSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_firstWidget_",
|
||||
smalltalk.method({
|
||||
selector: "firstWidget:",
|
||||
fn: function (aWidget){
|
||||
var self=this;
|
||||
self["@firstWidget"]=aWidget;
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_isHeliosSplitter",
|
||||
smalltalk.method({
|
||||
selector: "isHeliosSplitter",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return true;
|
||||
}
|
||||
}),
|
||||
smalltalk.HLSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_panesCssClass",
|
||||
smalltalk.method({
|
||||
selector: "panesCssClass",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return "panes";
|
||||
}
|
||||
}),
|
||||
smalltalk.HLSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_renderOn_",
|
||||
smalltalk.method({
|
||||
selector: "renderOn:",
|
||||
fn: function (html){
|
||||
var self=this;
|
||||
var $1,$3,$4,$5,$6,$2,$7;
|
||||
$1=smalltalk.send(html,"_div",[]);
|
||||
smalltalk.send($1,"_class_",[smalltalk.send(self,"_panesCssClass",[])]);
|
||||
$2=smalltalk.send($1,"_with_",[(function(){
|
||||
$3=smalltalk.send(html,"_div",[]);
|
||||
smalltalk.send($3,"_class_",["pane"]);
|
||||
$4=smalltalk.send($3,"_with_",[smalltalk.send(self,"_firstWidget",[])]);
|
||||
self["@firstPane"]=$4;
|
||||
self["@firstPane"];
|
||||
self["@splitter"]=smalltalk.send(smalltalk.send(html,"_div",[]),"_class_",[smalltalk.send(self,"_cssClass",[])]);
|
||||
self["@splitter"];
|
||||
$5=smalltalk.send(html,"_div",[]);
|
||||
smalltalk.send($5,"_class_",["pane"]);
|
||||
$6=smalltalk.send($5,"_with_",[smalltalk.send(self,"_secondWidget",[])]);
|
||||
self["@secondPane"]=$6;
|
||||
return self["@secondPane"];
|
||||
})]);
|
||||
smalltalk.send(self,"_setupSplitter",[]);
|
||||
$7=smalltalk.send(self,"_resize",[]);
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_resize",
|
||||
smalltalk.method({
|
||||
selector: "resize",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var $1,$2;
|
||||
$1=smalltalk.send(smalltalk.send(self,"_firstWidget",[]),"_isHeliosSplitter",[]);
|
||||
if(smalltalk.assert($1)){
|
||||
smalltalk.send(smalltalk.send(self,"_firstWidget",[]),"_resize",[]);
|
||||
};
|
||||
$2=smalltalk.send(smalltalk.send(self,"_secondWidget",[]),"_isHeliosSplitter",[]);
|
||||
if(smalltalk.assert($2)){
|
||||
smalltalk.send(smalltalk.send(self,"_secondWidget",[]),"_resize",[]);
|
||||
};
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_secondWidget",
|
||||
smalltalk.method({
|
||||
selector: "secondWidget",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return self["@secondWidget"];
|
||||
}
|
||||
}),
|
||||
smalltalk.HLSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_secondWidget_",
|
||||
smalltalk.method({
|
||||
selector: "secondWidget:",
|
||||
fn: function (aWidget){
|
||||
var self=this;
|
||||
self["@secondWidget"]=aWidget;
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_setupSplitter",
|
||||
smalltalk.method({
|
||||
selector: "setupSplitter",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLSplitter);
|
||||
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_with_with_",
|
||||
smalltalk.method({
|
||||
selector: "with:with:",
|
||||
fn: function (aWidget,anotherWidget){
|
||||
var self=this;
|
||||
var $2,$3,$1;
|
||||
$2=smalltalk.send(self,"_new",[]);
|
||||
smalltalk.send($2,"_firstWidget_",[aWidget]);
|
||||
smalltalk.send($2,"_secondWidget_",[anotherWidget]);
|
||||
$3=smalltalk.send($2,"_yourself",[]);
|
||||
$1=$3;
|
||||
return $1;
|
||||
}
|
||||
}),
|
||||
smalltalk.HLSplitter.klass);
|
||||
|
||||
|
||||
smalltalk.addClass('HLHorizontalSplitter', smalltalk.HLSplitter, [], 'Helios-Layout');
|
||||
smalltalk.addMethod(
|
||||
"_cssClass",
|
||||
smalltalk.method({
|
||||
selector: "cssClass",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var $1;
|
||||
$1=smalltalk.send(smalltalk.send(self,"_cssClass",[],smalltalk.HLSplitter),"__comma",[" horizontal"]);
|
||||
return $1;
|
||||
}
|
||||
}),
|
||||
smalltalk.HLHorizontalSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_panesCssClass",
|
||||
smalltalk.method({
|
||||
selector: "panesCssClass",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var $1;
|
||||
$1=smalltalk.send(smalltalk.send(self,"_panesCssClass",[],smalltalk.HLSplitter),"__comma",[" horizontal"]);
|
||||
return $1;
|
||||
}
|
||||
}),
|
||||
smalltalk.HLHorizontalSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_resize",
|
||||
smalltalk.method({
|
||||
selector: "resize",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var container;
|
||||
var position;
|
||||
container=smalltalk.send(smalltalk.send(self["@firstPane"],"_asJQuery",[]),"_parent",[]);
|
||||
position=smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self["@splitter"],"_asJQuery",[]),"_offset",[]),"_top",[]),"__minus",[smalltalk.send(smalltalk.send(container,"_offset",[]),"_top",[])]);
|
||||
smalltalk.send(smalltalk.send(self["@firstPane"],"_asJQuery",[]),"_height_",[smalltalk.send(smalltalk.send(position,"_min_",[smalltalk.send(smalltalk.send(container,"_height",[]),"__minus",[(100)])]),"_max_",[(100)])]);
|
||||
smalltalk.send(smalltalk.send(self["@secondPane"],"_asJQuery",[]),"_height_",[smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(container,"_height",[]),"__minus",[position]),"_min_",[smalltalk.send(smalltalk.send(container,"_height",[]),"__minus",[(100)])]),"_max_",[(100)]),"__minus",[(6)])]);
|
||||
smalltalk.send(smalltalk.send(self["@splitter"],"_asJQuery",[]),"_css_value_",["top",(0)]);
|
||||
smalltalk.send(self,"_resize",[],smalltalk.HLSplitter);
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLHorizontalSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_setupSplitter",
|
||||
smalltalk.method({
|
||||
selector: "setupSplitter",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
smalltalk.send(smalltalk.send(self["@splitter"],"_asJQuery",[]),"_draggable_",[smalltalk.HashedCollection._fromPairs_([smalltalk.send("axis","__minus_gt",["y"]),smalltalk.send("stop","__minus_gt",[(function(){
|
||||
return smalltalk.send(self,"_resize",[]);
|
||||
})])])]);
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLHorizontalSplitter);
|
||||
|
||||
|
||||
|
||||
smalltalk.addClass('HLVerticalSplitter', smalltalk.HLSplitter, [], 'Helios-Layout');
|
||||
smalltalk.addMethod(
|
||||
"_cssClass",
|
||||
smalltalk.method({
|
||||
selector: "cssClass",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var $1;
|
||||
$1=smalltalk.send(smalltalk.send(self,"_cssClass",[],smalltalk.HLSplitter),"__comma",[" vertical"]);
|
||||
return $1;
|
||||
}
|
||||
}),
|
||||
smalltalk.HLVerticalSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_panesCssClass",
|
||||
smalltalk.method({
|
||||
selector: "panesCssClass",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var $1;
|
||||
$1=smalltalk.send(smalltalk.send(self,"_panesCssClass",[],smalltalk.HLSplitter),"__comma",[" vertical"]);
|
||||
return $1;
|
||||
}
|
||||
}),
|
||||
smalltalk.HLVerticalSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_resize",
|
||||
smalltalk.method({
|
||||
selector: "resize",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var container;
|
||||
var position;
|
||||
container=smalltalk.send(smalltalk.send(self["@firstPane"],"_asJQuery",[]),"_parent",[]);
|
||||
position=smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self["@splitter"],"_asJQuery",[]),"_offset",[]),"_left",[]),"__minus",[smalltalk.send(smalltalk.send(container,"_offset",[]),"_left",[])]);
|
||||
smalltalk.send(smalltalk.send(self["@firstPane"],"_asJQuery",[]),"_width_",[smalltalk.send(smalltalk.send(position,"_min_",[smalltalk.send(smalltalk.send(container,"_width",[]),"__minus",[(100)])]),"_max_",[(100)])]);
|
||||
smalltalk.send(smalltalk.send(self["@secondPane"],"_asJQuery",[]),"_width_",[smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(container,"_width",[]),"__minus",[position]),"_min_",[smalltalk.send(smalltalk.send(container,"_width",[]),"__minus",[(100)])]),"_max_",[(100)]),"__minus",[(6)])]);
|
||||
smalltalk.send(smalltalk.send(self["@splitter"],"_asJQuery",[]),"_css_value_",["left",(0)]);
|
||||
smalltalk.send(self,"_resize",[],smalltalk.HLSplitter);
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLVerticalSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_setupSplitter",
|
||||
smalltalk.method({
|
||||
selector: "setupSplitter",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
smalltalk.send(smalltalk.send(self["@splitter"],"_asJQuery",[]),"_draggable_",[smalltalk.HashedCollection._fromPairs_([smalltalk.send("axis","__minus_gt",["x"]),smalltalk.send("stop","__minus_gt",[(function(){
|
||||
return smalltalk.send(self,"_resize",[]);
|
||||
})])])]);
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLVerticalSplitter);
|
||||
|
||||
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_isHeliosSplitter",
|
||||
smalltalk.method({
|
||||
selector: "isHeliosSplitter",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return false;
|
||||
}
|
||||
}),
|
||||
smalltalk.Object);
|
||||
|
|
@ -0,0 +1,474 @@
|
|||
smalltalk.addPackage('Helios-Layout', {});
|
||||
smalltalk.addClass('HLContainer', smalltalk.Widget, ['splitter'], 'Helios-Layout');
|
||||
smalltalk.addMethod(
|
||||
"_renderOn_",
|
||||
smalltalk.method({
|
||||
selector: "renderOn:",
|
||||
category: 'rendering',
|
||||
fn: function (html){
|
||||
var self=this;
|
||||
var $1,$2;
|
||||
$1=smalltalk.send(html,"_div",[]);
|
||||
smalltalk.send($1,"_id_",["container"]);
|
||||
$2=smalltalk.send($1,"_with_",[smalltalk.send(self,"_splitter",[])]);
|
||||
smalltalk.send(smalltalk.send(window,"_jQuery_",[window]),"_bind_do_",["resize",(function(){
|
||||
return smalltalk.send(smalltalk.send(self,"_splitter",[]),"_resize",[]);
|
||||
})]);
|
||||
return self},
|
||||
args: ["html"],
|
||||
source: "renderOn: html\x0a\x09html div \x0a \x09id: 'container'; \x0a with: self splitter.\x0a \x0a (window jQuery: window) bind: 'resize' do: [ self splitter resize ]",
|
||||
messageSends: ["id:", "div", "with:", "splitter", "bind:do:", "resize", "jQuery:"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLContainer);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_splitter",
|
||||
smalltalk.method({
|
||||
selector: "splitter",
|
||||
category: 'accessing',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return self["@splitter"];
|
||||
},
|
||||
args: [],
|
||||
source: "splitter\x0a\x09^ splitter",
|
||||
messageSends: [],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLContainer);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_splitter_",
|
||||
smalltalk.method({
|
||||
selector: "splitter:",
|
||||
category: 'accessing',
|
||||
fn: function (aSplitter){
|
||||
var self=this;
|
||||
self["@splitter"]=aSplitter;
|
||||
return self},
|
||||
args: ["aSplitter"],
|
||||
source: "splitter: aSplitter\x0a\x09splitter := aSplitter",
|
||||
messageSends: [],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLContainer);
|
||||
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_with_",
|
||||
smalltalk.method({
|
||||
selector: "with:",
|
||||
category: 'instance creation',
|
||||
fn: function (aSplitter){
|
||||
var self=this;
|
||||
var $2,$3,$1;
|
||||
$2=smalltalk.send(self,"_new",[]);
|
||||
smalltalk.send($2,"_splitter_",[aSplitter]);
|
||||
$3=smalltalk.send($2,"_yourself",[]);
|
||||
$1=$3;
|
||||
return $1;
|
||||
},
|
||||
args: ["aSplitter"],
|
||||
source: "with: aSplitter\x0a\x09^ self new \x0a \x09splitter: aSplitter; \x0a yourself",
|
||||
messageSends: ["splitter:", "new", "yourself"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLContainer.klass);
|
||||
|
||||
|
||||
smalltalk.addClass('HLPane', smalltalk.Widget, [], 'Helios-Layout');
|
||||
|
||||
|
||||
smalltalk.addClass('HLHorizontalPane', smalltalk.HLPane, [], 'Helios-Layout');
|
||||
|
||||
|
||||
smalltalk.addClass('HLVerticalPane', smalltalk.HLPane, [], 'Helios-Layout');
|
||||
|
||||
|
||||
smalltalk.addClass('HLSplitter', smalltalk.Widget, ['firstWidget', 'secondWidget', 'firstPane', 'secondPane', 'splitter'], 'Helios-Layout');
|
||||
smalltalk.addMethod(
|
||||
"_cssClass",
|
||||
smalltalk.method({
|
||||
selector: "cssClass",
|
||||
category: 'accessing',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return "splitter";
|
||||
},
|
||||
args: [],
|
||||
source: "cssClass\x0a\x09^ 'splitter'",
|
||||
messageSends: [],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_firstWidget",
|
||||
smalltalk.method({
|
||||
selector: "firstWidget",
|
||||
category: 'accessing',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return self["@firstWidget"];
|
||||
},
|
||||
args: [],
|
||||
source: "firstWidget\x0a\x09^ firstWidget",
|
||||
messageSends: [],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_firstWidget_",
|
||||
smalltalk.method({
|
||||
selector: "firstWidget:",
|
||||
category: 'accessing',
|
||||
fn: function (aWidget){
|
||||
var self=this;
|
||||
self["@firstWidget"]=aWidget;
|
||||
return self},
|
||||
args: ["aWidget"],
|
||||
source: "firstWidget: aWidget\x0a\x09firstWidget := aWidget",
|
||||
messageSends: [],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_isHeliosSplitter",
|
||||
smalltalk.method({
|
||||
selector: "isHeliosSplitter",
|
||||
category: 'testing',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return true;
|
||||
},
|
||||
args: [],
|
||||
source: "isHeliosSplitter\x0a\x09^ true",
|
||||
messageSends: [],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_panesCssClass",
|
||||
smalltalk.method({
|
||||
selector: "panesCssClass",
|
||||
category: 'rendering',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return "panes";
|
||||
},
|
||||
args: [],
|
||||
source: "panesCssClass\x0a\x09^ 'panes'",
|
||||
messageSends: [],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_renderOn_",
|
||||
smalltalk.method({
|
||||
selector: "renderOn:",
|
||||
category: 'rendering',
|
||||
fn: function (html){
|
||||
var self=this;
|
||||
var $1,$3,$4,$5,$6,$2,$7;
|
||||
$1=smalltalk.send(html,"_div",[]);
|
||||
smalltalk.send($1,"_class_",[smalltalk.send(self,"_panesCssClass",[])]);
|
||||
$2=smalltalk.send($1,"_with_",[(function(){
|
||||
$3=smalltalk.send(html,"_div",[]);
|
||||
smalltalk.send($3,"_class_",["pane"]);
|
||||
$4=smalltalk.send($3,"_with_",[smalltalk.send(self,"_firstWidget",[])]);
|
||||
self["@firstPane"]=$4;
|
||||
self["@firstPane"];
|
||||
self["@splitter"]=smalltalk.send(smalltalk.send(html,"_div",[]),"_class_",[smalltalk.send(self,"_cssClass",[])]);
|
||||
self["@splitter"];
|
||||
$5=smalltalk.send(html,"_div",[]);
|
||||
smalltalk.send($5,"_class_",["pane"]);
|
||||
$6=smalltalk.send($5,"_with_",[smalltalk.send(self,"_secondWidget",[])]);
|
||||
self["@secondPane"]=$6;
|
||||
return self["@secondPane"];
|
||||
})]);
|
||||
smalltalk.send(self,"_setupSplitter",[]);
|
||||
$7=smalltalk.send(self,"_resize",[]);
|
||||
return self},
|
||||
args: ["html"],
|
||||
source: "renderOn: html\x0a\x09html div class: self panesCssClass; with: [\x0a\x09\x09firstPane := html div class: 'pane'; with: self firstWidget.\x0a \x09splitter := html div class: self cssClass.\x0a \x09secondPane := html div class: 'pane'; with: self secondWidget ].\x0a \x0a\x09self \x0a \x09setupSplitter;\x0a resize",
|
||||
messageSends: ["class:", "panesCssClass", "div", "with:", "firstWidget", "cssClass", "secondWidget", "setupSplitter", "resize"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_resize",
|
||||
smalltalk.method({
|
||||
selector: "resize",
|
||||
category: 'rendering',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var $1,$2;
|
||||
$1=smalltalk.send(smalltalk.send(self,"_firstWidget",[]),"_isHeliosSplitter",[]);
|
||||
if(smalltalk.assert($1)){
|
||||
smalltalk.send(smalltalk.send(self,"_firstWidget",[]),"_resize",[]);
|
||||
};
|
||||
$2=smalltalk.send(smalltalk.send(self,"_secondWidget",[]),"_isHeliosSplitter",[]);
|
||||
if(smalltalk.assert($2)){
|
||||
smalltalk.send(smalltalk.send(self,"_secondWidget",[]),"_resize",[]);
|
||||
};
|
||||
return self},
|
||||
args: [],
|
||||
source: "resize\x0a\x09self firstWidget isHeliosSplitter ifTrue: [ self firstWidget resize ].\x0a self secondWidget isHeliosSplitter ifTrue: [ self secondWidget resize ]\x0a \x0a ",
|
||||
messageSends: ["ifTrue:", "resize", "firstWidget", "isHeliosSplitter", "secondWidget"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_secondWidget",
|
||||
smalltalk.method({
|
||||
selector: "secondWidget",
|
||||
category: 'accessing',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return self["@secondWidget"];
|
||||
},
|
||||
args: [],
|
||||
source: "secondWidget\x0a\x09^ secondWidget",
|
||||
messageSends: [],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_secondWidget_",
|
||||
smalltalk.method({
|
||||
selector: "secondWidget:",
|
||||
category: 'accessing',
|
||||
fn: function (aWidget){
|
||||
var self=this;
|
||||
self["@secondWidget"]=aWidget;
|
||||
return self},
|
||||
args: ["aWidget"],
|
||||
source: "secondWidget: aWidget\x0a\x09secondWidget := aWidget",
|
||||
messageSends: [],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_setupSplitter",
|
||||
smalltalk.method({
|
||||
selector: "setupSplitter",
|
||||
category: 'rendering',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return self},
|
||||
args: [],
|
||||
source: "setupSplitter",
|
||||
messageSends: [],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLSplitter);
|
||||
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_with_with_",
|
||||
smalltalk.method({
|
||||
selector: "with:with:",
|
||||
category: 'instance creation',
|
||||
fn: function (aWidget,anotherWidget){
|
||||
var self=this;
|
||||
var $2,$3,$1;
|
||||
$2=smalltalk.send(self,"_new",[]);
|
||||
smalltalk.send($2,"_firstWidget_",[aWidget]);
|
||||
smalltalk.send($2,"_secondWidget_",[anotherWidget]);
|
||||
$3=smalltalk.send($2,"_yourself",[]);
|
||||
$1=$3;
|
||||
return $1;
|
||||
},
|
||||
args: ["aWidget", "anotherWidget"],
|
||||
source: "with: aWidget with: anotherWidget\x0a\x09^ self new\x0a \x09\x09firstWidget: aWidget;\x0a secondWidget: anotherWidget;\x0a yourself",
|
||||
messageSends: ["firstWidget:", "new", "secondWidget:", "yourself"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLSplitter.klass);
|
||||
|
||||
|
||||
smalltalk.addClass('HLHorizontalSplitter', smalltalk.HLSplitter, [], 'Helios-Layout');
|
||||
smalltalk.addMethod(
|
||||
"_cssClass",
|
||||
smalltalk.method({
|
||||
selector: "cssClass",
|
||||
category: 'accessing',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var $1;
|
||||
$1=smalltalk.send(smalltalk.send(self,"_cssClass",[],smalltalk.HLSplitter),"__comma",[" horizontal"]);
|
||||
return $1;
|
||||
},
|
||||
args: [],
|
||||
source: "cssClass\x0a\x09^ super cssClass, ' horizontal'",
|
||||
messageSends: [",", "cssClass"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLHorizontalSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_panesCssClass",
|
||||
smalltalk.method({
|
||||
selector: "panesCssClass",
|
||||
category: 'accessing',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var $1;
|
||||
$1=smalltalk.send(smalltalk.send(self,"_panesCssClass",[],smalltalk.HLSplitter),"__comma",[" horizontal"]);
|
||||
return $1;
|
||||
},
|
||||
args: [],
|
||||
source: "panesCssClass\x0a\x09^ super panesCssClass, ' horizontal'",
|
||||
messageSends: [",", "panesCssClass"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLHorizontalSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_resize",
|
||||
smalltalk.method({
|
||||
selector: "resize",
|
||||
category: 'actions',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var container;
|
||||
var position;
|
||||
container=smalltalk.send(smalltalk.send(self["@firstPane"],"_asJQuery",[]),"_parent",[]);
|
||||
position=smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self["@splitter"],"_asJQuery",[]),"_offset",[]),"_top",[]),"__minus",[smalltalk.send(smalltalk.send(container,"_offset",[]),"_top",[])]);
|
||||
smalltalk.send(smalltalk.send(self["@firstPane"],"_asJQuery",[]),"_height_",[smalltalk.send(smalltalk.send(position,"_min_",[smalltalk.send(smalltalk.send(container,"_height",[]),"__minus",[(100)])]),"_max_",[(100)])]);
|
||||
smalltalk.send(smalltalk.send(self["@secondPane"],"_asJQuery",[]),"_height_",[smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(container,"_height",[]),"__minus",[position]),"_min_",[smalltalk.send(smalltalk.send(container,"_height",[]),"__minus",[(100)])]),"_max_",[(100)]),"__minus",[(6)])]);
|
||||
smalltalk.send(smalltalk.send(self["@splitter"],"_asJQuery",[]),"_css_value_",["top",(0)]);
|
||||
smalltalk.send(self,"_resize",[],smalltalk.HLSplitter);
|
||||
return self},
|
||||
args: [],
|
||||
source: "resize\x0a\x09| container position |\x0a \x0a container := firstPane asJQuery parent.\x0a position := splitter asJQuery offset top - container offset top.\x0a \x0a\x09firstPane asJQuery height: ((position min: container height - 100) max: 100).\x0a secondPane asJQuery height: (((container height - position) min: container height - 100) max: 100) - 6.\x0a \x0a \x22Put the splitter div back to a relative position\x22 \x0a splitter asJQuery css: 'top' value: 0.\x0a \x0a super resize",
|
||||
messageSends: ["parent", "asJQuery", "-", "top", "offset", "height:", "max:", "min:", "height", "css:value:", "resize"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLHorizontalSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_setupSplitter",
|
||||
smalltalk.method({
|
||||
selector: "setupSplitter",
|
||||
category: 'rendering',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
smalltalk.send(smalltalk.send(self["@splitter"],"_asJQuery",[]),"_draggable_",[smalltalk.HashedCollection._fromPairs_([smalltalk.send("axis","__minus_gt",["y"]),smalltalk.send("stop","__minus_gt",[(function(){
|
||||
return smalltalk.send(self,"_resize",[]);
|
||||
})])])]);
|
||||
return self},
|
||||
args: [],
|
||||
source: "setupSplitter\x0a\x09splitter asJQuery draggable: #{ 'axis' -> 'y'. 'stop' -> [ self resize ] }",
|
||||
messageSends: ["draggable:", "->", "resize", "asJQuery"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLHorizontalSplitter);
|
||||
|
||||
|
||||
|
||||
smalltalk.addClass('HLVerticalSplitter', smalltalk.HLSplitter, [], 'Helios-Layout');
|
||||
smalltalk.addMethod(
|
||||
"_cssClass",
|
||||
smalltalk.method({
|
||||
selector: "cssClass",
|
||||
category: 'accessing',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var $1;
|
||||
$1=smalltalk.send(smalltalk.send(self,"_cssClass",[],smalltalk.HLSplitter),"__comma",[" vertical"]);
|
||||
return $1;
|
||||
},
|
||||
args: [],
|
||||
source: "cssClass\x0a\x09^ super cssClass, ' vertical'",
|
||||
messageSends: [",", "cssClass"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLVerticalSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_panesCssClass",
|
||||
smalltalk.method({
|
||||
selector: "panesCssClass",
|
||||
category: 'accessing',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var $1;
|
||||
$1=smalltalk.send(smalltalk.send(self,"_panesCssClass",[],smalltalk.HLSplitter),"__comma",[" vertical"]);
|
||||
return $1;
|
||||
},
|
||||
args: [],
|
||||
source: "panesCssClass\x0a\x09^ super panesCssClass, ' vertical'",
|
||||
messageSends: [",", "panesCssClass"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLVerticalSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_resize",
|
||||
smalltalk.method({
|
||||
selector: "resize",
|
||||
category: 'actions',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var container;
|
||||
var position;
|
||||
container=smalltalk.send(smalltalk.send(self["@firstPane"],"_asJQuery",[]),"_parent",[]);
|
||||
position=smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self["@splitter"],"_asJQuery",[]),"_offset",[]),"_left",[]),"__minus",[smalltalk.send(smalltalk.send(container,"_offset",[]),"_left",[])]);
|
||||
smalltalk.send(smalltalk.send(self["@firstPane"],"_asJQuery",[]),"_width_",[smalltalk.send(smalltalk.send(position,"_min_",[smalltalk.send(smalltalk.send(container,"_width",[]),"__minus",[(100)])]),"_max_",[(100)])]);
|
||||
smalltalk.send(smalltalk.send(self["@secondPane"],"_asJQuery",[]),"_width_",[smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(container,"_width",[]),"__minus",[position]),"_min_",[smalltalk.send(smalltalk.send(container,"_width",[]),"__minus",[(100)])]),"_max_",[(100)]),"__minus",[(6)])]);
|
||||
smalltalk.send(smalltalk.send(self["@splitter"],"_asJQuery",[]),"_css_value_",["left",(0)]);
|
||||
smalltalk.send(self,"_resize",[],smalltalk.HLSplitter);
|
||||
return self},
|
||||
args: [],
|
||||
source: "resize\x0a\x09| container position |\x0a \x0a container := firstPane asJQuery parent.\x0a position := splitter asJQuery offset left - container offset left.\x0a \x0a\x09firstPane asJQuery width: ((position min: container width - 100) max: 100).\x0a secondPane asJQuery width: (((container width - position) min: container width - 100) max: 100) - 6.\x0a \x0a \x22Put the splitter div back to a relative position\x22 \x0a splitter asJQuery css: 'left' value: 0.\x0a \x0a super resize",
|
||||
messageSends: ["parent", "asJQuery", "-", "left", "offset", "width:", "max:", "min:", "width", "css:value:", "resize"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLVerticalSplitter);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_setupSplitter",
|
||||
smalltalk.method({
|
||||
selector: "setupSplitter",
|
||||
category: 'rendering',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
smalltalk.send(smalltalk.send(self["@splitter"],"_asJQuery",[]),"_draggable_",[smalltalk.HashedCollection._fromPairs_([smalltalk.send("axis","__minus_gt",["x"]),smalltalk.send("stop","__minus_gt",[(function(){
|
||||
return smalltalk.send(self,"_resize",[]);
|
||||
})])])]);
|
||||
return self},
|
||||
args: [],
|
||||
source: "setupSplitter\x0a\x09splitter asJQuery draggable: #{ 'axis' -> 'x'. 'stop' -> [ self resize ] }",
|
||||
messageSends: ["draggable:", "->", "resize", "asJQuery"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLVerticalSplitter);
|
||||
|
||||
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_isHeliosSplitter",
|
||||
smalltalk.method({
|
||||
selector: "isHeliosSplitter",
|
||||
category: '*Helios-Layout',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return false;
|
||||
},
|
||||
args: [],
|
||||
source: "isHeliosSplitter\x0a\x09^ false",
|
||||
messageSends: [],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.Object);
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,334 +0,0 @@
|
|||
smalltalk.addPackage('Helios', {});
|
||||
smalltalk.addClass('HLBrowser', smalltalk.Widget, [], 'Helios');
|
||||
|
||||
|
||||
smalltalk.addClass('HLDebugger', smalltalk.Widget, [], 'Helios');
|
||||
|
||||
|
||||
smalltalk.addClass('HLInspector', smalltalk.Widget, [], 'Helios');
|
||||
|
||||
|
||||
smalltalk.addClass('HLSUnit', smalltalk.Widget, [], 'Helios');
|
||||
|
||||
|
||||
smalltalk.addClass('HLTab', smalltalk.Object, ['widget', 'label'], 'Helios');
|
||||
smalltalk.addMethod(
|
||||
"_activate",
|
||||
smalltalk.method({
|
||||
selector: "activate",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
smalltalk.send(smalltalk.send(self,"_manager",[]),"_activate_",[self]);
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLTab);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_add",
|
||||
smalltalk.method({
|
||||
selector: "add",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
smalltalk.send(smalltalk.send(self,"_manager",[]),"_addTab_",[self]);
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLTab);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_isActive",
|
||||
smalltalk.method({
|
||||
selector: "isActive",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var $1;
|
||||
$1=smalltalk.send(smalltalk.send(smalltalk.send(self,"_manager",[]),"_activeTab",[]),"__eq",[self]);
|
||||
return $1;
|
||||
}
|
||||
}),
|
||||
smalltalk.HLTab);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_label",
|
||||
smalltalk.method({
|
||||
selector: "label",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var $1;
|
||||
if(($receiver = self["@label"]) == nil || $receiver == undefined){
|
||||
$1="";
|
||||
} else {
|
||||
$1=self["@label"];
|
||||
};
|
||||
return $1;
|
||||
}
|
||||
}),
|
||||
smalltalk.HLTab);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_label_",
|
||||
smalltalk.method({
|
||||
selector: "label:",
|
||||
fn: function (aString){
|
||||
var self=this;
|
||||
self["@label"]=aString;
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLTab);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_manager",
|
||||
smalltalk.method({
|
||||
selector: "manager",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var $1;
|
||||
$1=smalltalk.send((smalltalk.HLTabManager || HLTabManager),"_current",[]);
|
||||
return $1;
|
||||
}
|
||||
}),
|
||||
smalltalk.HLTab);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_widget",
|
||||
smalltalk.method({
|
||||
selector: "widget",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return self["@widget"];
|
||||
}
|
||||
}),
|
||||
smalltalk.HLTab);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_widget_",
|
||||
smalltalk.method({
|
||||
selector: "widget:",
|
||||
fn: function (aWidget){
|
||||
var self=this;
|
||||
self["@widget"]=aWidget;
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLTab);
|
||||
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_on_labelled_",
|
||||
smalltalk.method({
|
||||
selector: "on:labelled:",
|
||||
fn: function (aWidget,aString){
|
||||
var self=this;
|
||||
var $2,$3,$1;
|
||||
$2=smalltalk.send(self,"_new",[]);
|
||||
smalltalk.send($2,"_widget_",[aWidget]);
|
||||
smalltalk.send($2,"_label_",[aString]);
|
||||
$3=smalltalk.send($2,"_yourself",[]);
|
||||
$1=$3;
|
||||
return $1;
|
||||
}
|
||||
}),
|
||||
smalltalk.HLTab.klass);
|
||||
|
||||
|
||||
smalltalk.addClass('HLTabManager', smalltalk.Widget, ['tabs', 'activeTab'], 'Helios');
|
||||
smalltalk.addMethod(
|
||||
"_activate_",
|
||||
smalltalk.method({
|
||||
selector: "activate:",
|
||||
fn: function (aTab){
|
||||
var self=this;
|
||||
var $1;
|
||||
self["@activeTab"]=aTab;
|
||||
smalltalk.send(self,"_refresh",[]);
|
||||
$1=smalltalk.send(self,"_show_",[aTab]);
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLTabManager);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_activeTab",
|
||||
smalltalk.method({
|
||||
selector: "activeTab",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return self["@activeTab"];
|
||||
}
|
||||
}),
|
||||
smalltalk.HLTabManager);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_addTab_",
|
||||
smalltalk.method({
|
||||
selector: "addTab:",
|
||||
fn: function (aTab){
|
||||
var self=this;
|
||||
smalltalk.send(smalltalk.send(self,"_tabs",[]),"_add_",[aTab]);
|
||||
smalltalk.send(self,"_refresh",[]);
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLTabManager);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_refresh",
|
||||
smalltalk.method({
|
||||
selector: "refresh",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
smalltalk.send(smalltalk.send(window,"_jQuery_",[".navbar"]),"_remove",[]);
|
||||
smalltalk.send(smalltalk.send(window,"_jQuery_",["#container"]),"_remove",[]);
|
||||
smalltalk.send(self,"_appendToJQuery_",[smalltalk.send("body","_asJQuery",[])]);
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLTabManager);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_removeTab_",
|
||||
smalltalk.method({
|
||||
selector: "removeTab:",
|
||||
fn: function (aTab){
|
||||
var self=this;
|
||||
var $1;
|
||||
$1=smalltalk.send(smalltalk.send(self,"_tabs",[]),"_includes_",[aTab]);
|
||||
if(! smalltalk.assert($1)){
|
||||
return self;
|
||||
};
|
||||
smalltalk.send(smalltalk.send(self,"_tabs",[]),"_remove_",[aTab]);
|
||||
smalltalk.send(self,"_refresh",[]);
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLTabManager);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_renderOn_",
|
||||
smalltalk.method({
|
||||
selector: "renderOn:",
|
||||
fn: function (html){
|
||||
var self=this;
|
||||
var $1,$3,$4,$2;
|
||||
$1=smalltalk.send(html,"_div",[]);
|
||||
smalltalk.send($1,"_class_",["navbar navbar-fixed-top"]);
|
||||
$2=smalltalk.send($1,"_with_",[(function(){
|
||||
$3=smalltalk.send(html,"_div",[]);
|
||||
smalltalk.send($3,"_class_",["navbar-inner"]);
|
||||
$4=smalltalk.send($3,"_with_",[(function(){
|
||||
return smalltalk.send(self,"_renderTabsOn_",[html]);
|
||||
})]);
|
||||
return $4;
|
||||
})]);
|
||||
smalltalk.send(smalltalk.send(html,"_div",[]),"_id_",["container"]);
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLTabManager);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_renderTabsOn_",
|
||||
smalltalk.method({
|
||||
selector: "renderTabsOn:",
|
||||
fn: function (html){
|
||||
var self=this;
|
||||
var $1,$3,$5,$4,$7,$8,$6,$2;
|
||||
$1=smalltalk.send(html,"_ul",[]);
|
||||
smalltalk.send($1,"_class_",["nav"]);
|
||||
$2=smalltalk.send($1,"_with_",[(function(){
|
||||
return smalltalk.send(smalltalk.send(self,"_tabs",[]),"_do_",[(function(each){
|
||||
$3=smalltalk.send(html,"_li",[]);
|
||||
$5=smalltalk.send(each,"_isActive",[]);
|
||||
if(smalltalk.assert($5)){
|
||||
$4="active";
|
||||
} else {
|
||||
$4="inactive";
|
||||
};
|
||||
smalltalk.send($3,"_class_",[$4]);
|
||||
$6=smalltalk.send($3,"_with_",[(function(){
|
||||
$7=smalltalk.send(html,"_a",[]);
|
||||
smalltalk.send($7,"_with_",[smalltalk.send(each,"_label",[])]);
|
||||
$8=smalltalk.send($7,"_onClick_",[(function(){
|
||||
return smalltalk.send(each,"_activate",[]);
|
||||
})]);
|
||||
return $8;
|
||||
})]);
|
||||
return $6;
|
||||
})]);
|
||||
})]);
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLTabManager);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_show_",
|
||||
smalltalk.method({
|
||||
selector: "show:",
|
||||
fn: function (aTab){
|
||||
var self=this;
|
||||
smalltalk.send(smalltalk.send(window,"_jQuery_",["#container"]),"_empty",[]);
|
||||
smalltalk.send(smalltalk.send(aTab,"_widget",[]),"_appendToJQuery_",[smalltalk.send("#container","_asJQuery",[])]);
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLTabManager);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_tabs",
|
||||
smalltalk.method({
|
||||
selector: "tabs",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var $1;
|
||||
if(($receiver = self["@tabs"]) == nil || $receiver == undefined){
|
||||
self["@tabs"]=smalltalk.send((smalltalk.OrderedCollection || OrderedCollection),"_new",[]);
|
||||
$1=self["@tabs"];
|
||||
} else {
|
||||
$1=self["@tabs"];
|
||||
};
|
||||
return $1;
|
||||
}
|
||||
}),
|
||||
smalltalk.HLTabManager);
|
||||
|
||||
|
||||
smalltalk.HLTabManager.klass.iVarNames = ['current'];
|
||||
smalltalk.addMethod(
|
||||
"_current",
|
||||
smalltalk.method({
|
||||
selector: "current",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var $1;
|
||||
if(($receiver = self["@current"]) == nil || $receiver == undefined){
|
||||
self["@current"]=smalltalk.send(smalltalk.send(self,"_basicNew",[]),"_initialize",[]);
|
||||
$1=self["@current"];
|
||||
} else {
|
||||
$1=self["@current"];
|
||||
};
|
||||
return $1;
|
||||
}
|
||||
}),
|
||||
smalltalk.HLTabManager.klass);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_initialize",
|
||||
smalltalk.method({
|
||||
selector: "initialize",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
smalltalk.send(smalltalk.send(self,"_current",[]),"_appendToJQuery_",[smalltalk.send("body","_asJQuery",[])]);
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLTabManager.klass);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_new",
|
||||
smalltalk.method({
|
||||
selector: "new",
|
||||
fn: function (){
|
||||
var self=this;
|
||||
smalltalk.send(self,"_shouldNotImplement",[]);
|
||||
return self}
|
||||
}),
|
||||
smalltalk.HLTabManager.klass);
|
||||
|
||||
|
||||
smalltalk.addClass('HLTranscript', smalltalk.Widget, [], 'Helios');
|
||||
|
||||
|
||||
smalltalk.addClass('HLWorkspace', smalltalk.Widget, [], 'Helios');
|
||||
|
||||
|
439
js/Helios.js
439
js/Helios.js
|
@ -1,439 +0,0 @@
|
|||
smalltalk.addPackage('Helios', {});
|
||||
smalltalk.addClass('HLBrowser', smalltalk.Widget, [], 'Helios');
|
||||
|
||||
|
||||
smalltalk.addClass('HLDebugger', smalltalk.Widget, [], 'Helios');
|
||||
|
||||
|
||||
smalltalk.addClass('HLInspector', smalltalk.Widget, [], 'Helios');
|
||||
|
||||
|
||||
smalltalk.addClass('HLSUnit', smalltalk.Widget, [], 'Helios');
|
||||
|
||||
|
||||
smalltalk.addClass('HLTab', smalltalk.Object, ['widget', 'label'], 'Helios');
|
||||
smalltalk.addMethod(
|
||||
"_activate",
|
||||
smalltalk.method({
|
||||
selector: "activate",
|
||||
category: 'accessing',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
smalltalk.send(smalltalk.send(self,"_manager",[]),"_activate_",[self]);
|
||||
return self},
|
||||
args: [],
|
||||
source: "activate\x0a\x09self manager activate: self",
|
||||
messageSends: ["activate:", "manager"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLTab);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_add",
|
||||
smalltalk.method({
|
||||
selector: "add",
|
||||
category: 'accessing',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
smalltalk.send(smalltalk.send(self,"_manager",[]),"_addTab_",[self]);
|
||||
return self},
|
||||
args: [],
|
||||
source: "add\x0a\x09self manager addTab: self",
|
||||
messageSends: ["addTab:", "manager"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLTab);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_isActive",
|
||||
smalltalk.method({
|
||||
selector: "isActive",
|
||||
category: 'testing',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var $1;
|
||||
$1=smalltalk.send(smalltalk.send(smalltalk.send(self,"_manager",[]),"_activeTab",[]),"__eq",[self]);
|
||||
return $1;
|
||||
},
|
||||
args: [],
|
||||
source: "isActive\x0a\x09^ self manager activeTab = self",
|
||||
messageSends: ["=", "activeTab", "manager"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLTab);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_label",
|
||||
smalltalk.method({
|
||||
selector: "label",
|
||||
category: 'accessing',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var $1;
|
||||
if(($receiver = self["@label"]) == nil || $receiver == undefined){
|
||||
$1="";
|
||||
} else {
|
||||
$1=self["@label"];
|
||||
};
|
||||
return $1;
|
||||
},
|
||||
args: [],
|
||||
source: "label\x0a\x09^ label ifNil: [ '' ]",
|
||||
messageSends: ["ifNil:"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLTab);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_label_",
|
||||
smalltalk.method({
|
||||
selector: "label:",
|
||||
category: 'accessing',
|
||||
fn: function (aString){
|
||||
var self=this;
|
||||
self["@label"]=aString;
|
||||
return self},
|
||||
args: ["aString"],
|
||||
source: "label: aString\x0a\x09label := aString",
|
||||
messageSends: [],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLTab);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_manager",
|
||||
smalltalk.method({
|
||||
selector: "manager",
|
||||
category: 'accessing',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var $1;
|
||||
$1=smalltalk.send((smalltalk.HLTabManager || HLTabManager),"_current",[]);
|
||||
return $1;
|
||||
},
|
||||
args: [],
|
||||
source: "manager\x0a\x09^ HLTabManager current",
|
||||
messageSends: ["current"],
|
||||
referencedClasses: ["HLTabManager"]
|
||||
}),
|
||||
smalltalk.HLTab);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_widget",
|
||||
smalltalk.method({
|
||||
selector: "widget",
|
||||
category: 'accessing',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return self["@widget"];
|
||||
},
|
||||
args: [],
|
||||
source: "widget\x0a\x09^ widget",
|
||||
messageSends: [],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLTab);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_widget_",
|
||||
smalltalk.method({
|
||||
selector: "widget:",
|
||||
category: 'accessing',
|
||||
fn: function (aWidget){
|
||||
var self=this;
|
||||
self["@widget"]=aWidget;
|
||||
return self},
|
||||
args: ["aWidget"],
|
||||
source: "widget: aWidget\x0a\x09widget := aWidget",
|
||||
messageSends: [],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLTab);
|
||||
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_on_labelled_",
|
||||
smalltalk.method({
|
||||
selector: "on:labelled:",
|
||||
category: 'instance creation',
|
||||
fn: function (aWidget,aString){
|
||||
var self=this;
|
||||
var $2,$3,$1;
|
||||
$2=smalltalk.send(self,"_new",[]);
|
||||
smalltalk.send($2,"_widget_",[aWidget]);
|
||||
smalltalk.send($2,"_label_",[aString]);
|
||||
$3=smalltalk.send($2,"_yourself",[]);
|
||||
$1=$3;
|
||||
return $1;
|
||||
},
|
||||
args: ["aWidget", "aString"],
|
||||
source: "on: aWidget labelled: aString\x0a\x09^ self new\x0a\x09\x09widget: aWidget;\x0a\x09\x09label: aString;\x0a\x09\x09yourself",
|
||||
messageSends: ["widget:", "new", "label:", "yourself"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLTab.klass);
|
||||
|
||||
|
||||
smalltalk.addClass('HLTabManager', smalltalk.Widget, ['tabs', 'activeTab'], 'Helios');
|
||||
smalltalk.addMethod(
|
||||
"_activate_",
|
||||
smalltalk.method({
|
||||
selector: "activate:",
|
||||
category: 'accessing',
|
||||
fn: function (aTab){
|
||||
var self=this;
|
||||
var $1;
|
||||
self["@activeTab"]=aTab;
|
||||
smalltalk.send(self,"_refresh",[]);
|
||||
$1=smalltalk.send(self,"_show_",[aTab]);
|
||||
return self},
|
||||
args: ["aTab"],
|
||||
source: "activate: aTab\x0a\x09activeTab := aTab.\x0a\x09self \x0a\x09\x09refresh;\x0a\x09\x09show: aTab",
|
||||
messageSends: ["refresh", "show:"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLTabManager);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_activeTab",
|
||||
smalltalk.method({
|
||||
selector: "activeTab",
|
||||
category: 'accessing',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return self["@activeTab"];
|
||||
},
|
||||
args: [],
|
||||
source: "activeTab\x0a\x09^ activeTab",
|
||||
messageSends: [],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLTabManager);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_addTab_",
|
||||
smalltalk.method({
|
||||
selector: "addTab:",
|
||||
category: 'accessing',
|
||||
fn: function (aTab){
|
||||
var self=this;
|
||||
smalltalk.send(smalltalk.send(self,"_tabs",[]),"_add_",[aTab]);
|
||||
smalltalk.send(self,"_refresh",[]);
|
||||
return self},
|
||||
args: ["aTab"],
|
||||
source: "addTab: aTab\x0a\x09self tabs add: aTab.\x0a\x09self refresh",
|
||||
messageSends: ["add:", "tabs", "refresh"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLTabManager);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_refresh",
|
||||
smalltalk.method({
|
||||
selector: "refresh",
|
||||
category: 'rendering',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
smalltalk.send(smalltalk.send(window,"_jQuery_",[".navbar"]),"_remove",[]);
|
||||
smalltalk.send(smalltalk.send(window,"_jQuery_",["#container"]),"_remove",[]);
|
||||
smalltalk.send(self,"_appendToJQuery_",[smalltalk.send("body","_asJQuery",[])]);
|
||||
return self},
|
||||
args: [],
|
||||
source: "refresh\x0a\x09(window jQuery: '.navbar') remove.\x0a\x09(window jQuery: '#container') remove.\x0a\x09self appendToJQuery: 'body' asJQuery",
|
||||
messageSends: ["remove", "jQuery:", "appendToJQuery:", "asJQuery"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLTabManager);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_removeTab_",
|
||||
smalltalk.method({
|
||||
selector: "removeTab:",
|
||||
category: 'accessing',
|
||||
fn: function (aTab){
|
||||
var self=this;
|
||||
var $1;
|
||||
$1=smalltalk.send(smalltalk.send(self,"_tabs",[]),"_includes_",[aTab]);
|
||||
if(! smalltalk.assert($1)){
|
||||
return self;
|
||||
};
|
||||
smalltalk.send(smalltalk.send(self,"_tabs",[]),"_remove_",[aTab]);
|
||||
smalltalk.send(self,"_refresh",[]);
|
||||
return self},
|
||||
args: ["aTab"],
|
||||
source: "removeTab: aTab\x0a\x09\x22Todo: activate the previously activated tab. Keep a history of tabs selection\x22\x0a\x0a\x09(self tabs includes: aTab) ifFalse: [ ^ self ].\x0a\x0a\x09self tabs remove: aTab.\x0a\x09self refresh",
|
||||
messageSends: ["ifFalse:", "includes:", "tabs", "remove:", "refresh"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLTabManager);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_renderOn_",
|
||||
smalltalk.method({
|
||||
selector: "renderOn:",
|
||||
category: 'rendering',
|
||||
fn: function (html){
|
||||
var self=this;
|
||||
var $1,$3,$4,$2;
|
||||
$1=smalltalk.send(html,"_div",[]);
|
||||
smalltalk.send($1,"_class_",["navbar navbar-fixed-top"]);
|
||||
$2=smalltalk.send($1,"_with_",[(function(){
|
||||
$3=smalltalk.send(html,"_div",[]);
|
||||
smalltalk.send($3,"_class_",["navbar-inner"]);
|
||||
$4=smalltalk.send($3,"_with_",[(function(){
|
||||
return smalltalk.send(self,"_renderTabsOn_",[html]);
|
||||
})]);
|
||||
return $4;
|
||||
})]);
|
||||
smalltalk.send(smalltalk.send(html,"_div",[]),"_id_",["container"]);
|
||||
return self},
|
||||
args: ["html"],
|
||||
source: "renderOn: html\x0a\x09html div \x0a\x09\x09class: 'navbar navbar-fixed-top';\x0a\x09\x09with: [ html div \x0a\x09\x09\x09class: 'navbar-inner';\x0a\x09\x09\x09with: [ self renderTabsOn: html ] ].\x0a\x09html div id: 'container'",
|
||||
messageSends: ["class:", "div", "with:", "renderTabsOn:", "id:"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLTabManager);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_renderTabsOn_",
|
||||
smalltalk.method({
|
||||
selector: "renderTabsOn:",
|
||||
category: 'rendering',
|
||||
fn: function (html){
|
||||
var self=this;
|
||||
var $1,$3,$5,$4,$7,$8,$6,$2;
|
||||
$1=smalltalk.send(html,"_ul",[]);
|
||||
smalltalk.send($1,"_class_",["nav"]);
|
||||
$2=smalltalk.send($1,"_with_",[(function(){
|
||||
return smalltalk.send(smalltalk.send(self,"_tabs",[]),"_do_",[(function(each){
|
||||
$3=smalltalk.send(html,"_li",[]);
|
||||
$5=smalltalk.send(each,"_isActive",[]);
|
||||
if(smalltalk.assert($5)){
|
||||
$4="active";
|
||||
} else {
|
||||
$4="inactive";
|
||||
};
|
||||
smalltalk.send($3,"_class_",[$4]);
|
||||
$6=smalltalk.send($3,"_with_",[(function(){
|
||||
$7=smalltalk.send(html,"_a",[]);
|
||||
smalltalk.send($7,"_with_",[smalltalk.send(each,"_label",[])]);
|
||||
$8=smalltalk.send($7,"_onClick_",[(function(){
|
||||
return smalltalk.send(each,"_activate",[]);
|
||||
})]);
|
||||
return $8;
|
||||
})]);
|
||||
return $6;
|
||||
})]);
|
||||
})]);
|
||||
return self},
|
||||
args: ["html"],
|
||||
source: "renderTabsOn: html\x0a\x09html ul \x0a\x09\x09class: 'nav';\x0a\x09\x09with: [ self tabs do: [ :each |\x0a\x09\x09\x09html li \x0a\x09\x09\x09\x09class: (each isActive ifTrue: [ 'active' ] ifFalse: [ 'inactive' ]);\x0a\x09\x09\x09\x09with: [\x0a\x09\x09\x09\x09\x09html a\x0a\x09\x09\x09\x09\x09\x09with: each label;\x0a\x09\x09\x09\x09\x09\x09onClick: [ each activate ] ] ] ]",
|
||||
messageSends: ["class:", "ul", "with:", "do:", "ifTrue:ifFalse:", "isActive", "li", "label", "a", "onClick:", "activate", "tabs"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLTabManager);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_show_",
|
||||
smalltalk.method({
|
||||
selector: "show:",
|
||||
category: 'rendering',
|
||||
fn: function (aTab){
|
||||
var self=this;
|
||||
smalltalk.send(smalltalk.send(window,"_jQuery_",["#container"]),"_empty",[]);
|
||||
smalltalk.send(smalltalk.send(aTab,"_widget",[]),"_appendToJQuery_",[smalltalk.send("#container","_asJQuery",[])]);
|
||||
return self},
|
||||
args: ["aTab"],
|
||||
source: "show: aTab\x0a\x09(window jQuery: '#container') empty.\x0a\x09aTab widget appendToJQuery: '#container' asJQuery",
|
||||
messageSends: ["empty", "jQuery:", "appendToJQuery:", "asJQuery", "widget"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLTabManager);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_tabs",
|
||||
smalltalk.method({
|
||||
selector: "tabs",
|
||||
category: 'accessing',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var $1;
|
||||
if(($receiver = self["@tabs"]) == nil || $receiver == undefined){
|
||||
self["@tabs"]=smalltalk.send((smalltalk.OrderedCollection || OrderedCollection),"_new",[]);
|
||||
$1=self["@tabs"];
|
||||
} else {
|
||||
$1=self["@tabs"];
|
||||
};
|
||||
return $1;
|
||||
},
|
||||
args: [],
|
||||
source: "tabs\x0a\x09^ tabs ifNil: [ tabs := OrderedCollection new ]",
|
||||
messageSends: ["ifNil:", "new"],
|
||||
referencedClasses: ["OrderedCollection"]
|
||||
}),
|
||||
smalltalk.HLTabManager);
|
||||
|
||||
|
||||
smalltalk.HLTabManager.klass.iVarNames = ['current'];
|
||||
smalltalk.addMethod(
|
||||
"_current",
|
||||
smalltalk.method({
|
||||
selector: "current",
|
||||
category: 'accessing',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
var $1;
|
||||
if(($receiver = self["@current"]) == nil || $receiver == undefined){
|
||||
self["@current"]=smalltalk.send(smalltalk.send(self,"_basicNew",[]),"_initialize",[]);
|
||||
$1=self["@current"];
|
||||
} else {
|
||||
$1=self["@current"];
|
||||
};
|
||||
return $1;
|
||||
},
|
||||
args: [],
|
||||
source: "current\x0a\x09^ current ifNil: [ current := self basicNew initialize ]",
|
||||
messageSends: ["ifNil:", "initialize", "basicNew"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLTabManager.klass);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_initialize",
|
||||
smalltalk.method({
|
||||
selector: "initialize",
|
||||
category: 'initialization',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
smalltalk.send(smalltalk.send(self,"_current",[]),"_appendToJQuery_",[smalltalk.send("body","_asJQuery",[])]);
|
||||
return self},
|
||||
args: [],
|
||||
source: "initialize\x0a\x09self current appendToJQuery: 'body' asJQuery",
|
||||
messageSends: ["appendToJQuery:", "asJQuery", "current"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLTabManager.klass);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_new",
|
||||
smalltalk.method({
|
||||
selector: "new",
|
||||
category: 'instance creation',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
smalltalk.send(self,"_shouldNotImplement",[]);
|
||||
return self},
|
||||
args: [],
|
||||
source: "new\x0a\x09\x22Use current instead\x22\x0a\x0a\x09self shouldNotImplement",
|
||||
messageSends: ["shouldNotImplement"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.HLTabManager.klass);
|
||||
|
||||
|
||||
smalltalk.addClass('HLTranscript', smalltalk.Widget, [], 'Helios');
|
||||
|
||||
|
||||
smalltalk.addClass('HLWorkspace', smalltalk.Widget, [], 'Helios');
|
||||
|
||||
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,5 @@
|
|||
Smalltalk current createPackage: 'Helios-Announcements' properties: #{}!
|
||||
Object subclass: #HLAnnouncement
|
||||
instanceVariableNames: ''
|
||||
package: 'Helios-Announcements'!
|
||||
|
|
@ -0,0 +1,191 @@
|
|||
Smalltalk current createPackage: 'Helios-Layout' properties: #{}!
|
||||
Widget subclass: #HLContainer
|
||||
instanceVariableNames: 'splitter'
|
||||
package: 'Helios-Layout'!
|
||||
|
||||
!HLContainer methodsFor: 'accessing'!
|
||||
|
||||
splitter
|
||||
^ splitter
|
||||
!
|
||||
|
||||
splitter: aSplitter
|
||||
splitter := aSplitter
|
||||
! !
|
||||
|
||||
!HLContainer methodsFor: 'rendering'!
|
||||
|
||||
renderOn: html
|
||||
html div
|
||||
id: 'container';
|
||||
with: self splitter.
|
||||
|
||||
(window jQuery: window) bind: 'resize' do: [ self splitter resize ]
|
||||
! !
|
||||
|
||||
!HLContainer class methodsFor: 'instance creation'!
|
||||
|
||||
with: aSplitter
|
||||
^ self new
|
||||
splitter: aSplitter;
|
||||
yourself
|
||||
! !
|
||||
|
||||
Widget subclass: #HLPane
|
||||
instanceVariableNames: ''
|
||||
package: 'Helios-Layout'!
|
||||
|
||||
HLPane subclass: #HLHorizontalPane
|
||||
instanceVariableNames: ''
|
||||
package: 'Helios-Layout'!
|
||||
|
||||
HLPane subclass: #HLVerticalPane
|
||||
instanceVariableNames: ''
|
||||
package: 'Helios-Layout'!
|
||||
|
||||
Widget subclass: #HLSplitter
|
||||
instanceVariableNames: 'firstWidget secondWidget firstPane secondPane splitter'
|
||||
package: 'Helios-Layout'!
|
||||
|
||||
!HLSplitter methodsFor: 'accessing'!
|
||||
|
||||
cssClass
|
||||
^ 'splitter'
|
||||
!
|
||||
|
||||
firstWidget
|
||||
^ firstWidget
|
||||
!
|
||||
|
||||
firstWidget: aWidget
|
||||
firstWidget := aWidget
|
||||
!
|
||||
|
||||
secondWidget
|
||||
^ secondWidget
|
||||
!
|
||||
|
||||
secondWidget: aWidget
|
||||
secondWidget := aWidget
|
||||
! !
|
||||
|
||||
!HLSplitter methodsFor: 'rendering'!
|
||||
|
||||
panesCssClass
|
||||
^ 'panes'
|
||||
!
|
||||
|
||||
renderOn: html
|
||||
html div class: self panesCssClass; with: [
|
||||
firstPane := html div class: 'pane'; with: self firstWidget.
|
||||
splitter := html div class: self cssClass.
|
||||
secondPane := html div class: 'pane'; with: self secondWidget ].
|
||||
|
||||
self
|
||||
setupSplitter;
|
||||
resize
|
||||
!
|
||||
|
||||
resize
|
||||
self firstWidget isHeliosSplitter ifTrue: [ self firstWidget resize ].
|
||||
self secondWidget isHeliosSplitter ifTrue: [ self secondWidget resize ]
|
||||
!
|
||||
|
||||
setupSplitter
|
||||
! !
|
||||
|
||||
!HLSplitter methodsFor: 'testing'!
|
||||
|
||||
isHeliosSplitter
|
||||
^ true
|
||||
! !
|
||||
|
||||
!HLSplitter class methodsFor: 'instance creation'!
|
||||
|
||||
with: aWidget with: anotherWidget
|
||||
^ self new
|
||||
firstWidget: aWidget;
|
||||
secondWidget: anotherWidget;
|
||||
yourself
|
||||
! !
|
||||
|
||||
HLSplitter subclass: #HLHorizontalSplitter
|
||||
instanceVariableNames: ''
|
||||
package: 'Helios-Layout'!
|
||||
|
||||
!HLHorizontalSplitter methodsFor: 'accessing'!
|
||||
|
||||
cssClass
|
||||
^ super cssClass, ' horizontal'
|
||||
!
|
||||
|
||||
panesCssClass
|
||||
^ super panesCssClass, ' horizontal'
|
||||
! !
|
||||
|
||||
!HLHorizontalSplitter methodsFor: 'actions'!
|
||||
|
||||
resize
|
||||
| container position |
|
||||
|
||||
container := firstPane asJQuery parent.
|
||||
position := splitter asJQuery offset top - container offset top.
|
||||
|
||||
firstPane asJQuery height: ((position min: container height - 100) max: 100).
|
||||
secondPane asJQuery height: (((container height - position) min: container height - 100) max: 100) - 6.
|
||||
|
||||
"Put the splitter div back to a relative position"
|
||||
splitter asJQuery css: 'top' value: 0.
|
||||
|
||||
super resize
|
||||
! !
|
||||
|
||||
!HLHorizontalSplitter methodsFor: 'rendering'!
|
||||
|
||||
setupSplitter
|
||||
splitter asJQuery draggable: #{ 'axis' -> 'y'. 'stop' -> [ self resize ] }
|
||||
! !
|
||||
|
||||
HLSplitter subclass: #HLVerticalSplitter
|
||||
instanceVariableNames: ''
|
||||
package: 'Helios-Layout'!
|
||||
|
||||
!HLVerticalSplitter methodsFor: 'accessing'!
|
||||
|
||||
cssClass
|
||||
^ super cssClass, ' vertical'
|
||||
!
|
||||
|
||||
panesCssClass
|
||||
^ super panesCssClass, ' vertical'
|
||||
! !
|
||||
|
||||
!HLVerticalSplitter methodsFor: 'actions'!
|
||||
|
||||
resize
|
||||
| container position |
|
||||
|
||||
container := firstPane asJQuery parent.
|
||||
position := splitter asJQuery offset left - container offset left.
|
||||
|
||||
firstPane asJQuery width: ((position min: container width - 100) max: 100).
|
||||
secondPane asJQuery width: (((container width - position) min: container width - 100) max: 100) - 6.
|
||||
|
||||
"Put the splitter div back to a relative position"
|
||||
splitter asJQuery css: 'left' value: 0.
|
||||
|
||||
super resize
|
||||
! !
|
||||
|
||||
!HLVerticalSplitter methodsFor: 'rendering'!
|
||||
|
||||
setupSplitter
|
||||
splitter asJQuery draggable: #{ 'axis' -> 'x'. 'stop' -> [ self resize ] }
|
||||
! !
|
||||
|
||||
!Object methodsFor: '*Helios-Layout'!
|
||||
|
||||
isHeliosSplitter
|
||||
^ false
|
||||
! !
|
||||
|
|
@ -0,0 +1,583 @@
|
|||
Smalltalk current createPackage: 'Helios-Widgets' properties: #{}!
|
||||
Object subclass: #HLTab
|
||||
instanceVariableNames: 'widget label'
|
||||
package: 'Helios-Widgets'!
|
||||
|
||||
!HLTab methodsFor: 'accessing'!
|
||||
|
||||
activate
|
||||
self manager activate: self
|
||||
!
|
||||
|
||||
add
|
||||
self manager addTab: self
|
||||
!
|
||||
|
||||
label
|
||||
^ label ifNil: [ '' ]
|
||||
!
|
||||
|
||||
label: aString
|
||||
label := aString
|
||||
!
|
||||
|
||||
manager
|
||||
^ HLTabManager current
|
||||
!
|
||||
|
||||
widget
|
||||
^ widget
|
||||
!
|
||||
|
||||
widget: aWidget
|
||||
widget := aWidget
|
||||
! !
|
||||
|
||||
!HLTab methodsFor: 'testing'!
|
||||
|
||||
isActive
|
||||
^ self manager activeTab = self
|
||||
! !
|
||||
|
||||
!HLTab class methodsFor: 'instance creation'!
|
||||
|
||||
on: aWidget labelled: aString
|
||||
^ self new
|
||||
widget: aWidget;
|
||||
label: aString;
|
||||
yourself
|
||||
! !
|
||||
|
||||
Widget subclass: #HLWidget
|
||||
instanceVariableNames: 'rootDiv'
|
||||
package: 'Helios-Widgets'!
|
||||
|
||||
!HLWidget methodsFor: 'accessing'!
|
||||
|
||||
announcer
|
||||
^ self manager announcer
|
||||
!
|
||||
|
||||
manager
|
||||
^ HLTabManager current
|
||||
! !
|
||||
|
||||
!HLWidget methodsFor: 'announces'!
|
||||
|
||||
announce: anObject
|
||||
self announcer announce: anObject
|
||||
!
|
||||
|
||||
on: anAnnouncement do: aBlock
|
||||
self announcer on: anAnnouncement do: aBlock
|
||||
! !
|
||||
|
||||
!HLWidget methodsFor: 'initialization'!
|
||||
|
||||
initialize
|
||||
super initialize.
|
||||
self subscribe
|
||||
!
|
||||
|
||||
subscribe
|
||||
! !
|
||||
|
||||
!HLWidget methodsFor: 'rendering'!
|
||||
|
||||
renderContentOn: html
|
||||
!
|
||||
|
||||
renderOn: html
|
||||
rootDiv := html div with: [
|
||||
self renderContentOn: html ]
|
||||
! !
|
||||
|
||||
!HLWidget methodsFor: 'updating'!
|
||||
|
||||
refresh
|
||||
rootDiv ifNil: [ ^ self ].
|
||||
|
||||
rootDiv asJQuery empty.
|
||||
[ :html | self renderContentOn: html ] appendToJQuery: rootDiv asJQuery
|
||||
! !
|
||||
|
||||
!HLWidget class methodsFor: 'accessing'!
|
||||
|
||||
openAsTab
|
||||
HLTabManager current addTab: (HLTab on: self new labelled: self tabLabel)
|
||||
!
|
||||
|
||||
tabLabel
|
||||
^ 'Tab'
|
||||
!
|
||||
|
||||
tabPriority
|
||||
^ 500
|
||||
! !
|
||||
|
||||
!HLWidget class methodsFor: 'testing'!
|
||||
|
||||
canBeOpenAsTab
|
||||
^ false
|
||||
! !
|
||||
|
||||
HLWidget subclass: #HLBrowser
|
||||
instanceVariableNames: 'environment selectedPackage selectedClass packagesListWidget classesListWidget'
|
||||
package: 'Helios-Widgets'!
|
||||
|
||||
!HLBrowser methodsFor: 'accessing'!
|
||||
|
||||
classesListWidget
|
||||
^ classesListWidget ifNil: [
|
||||
classesListWidget := HLClassesListWidget on: self ]
|
||||
!
|
||||
|
||||
environment
|
||||
^ environment ifNil: [ environment := Smalltalk current ]
|
||||
!
|
||||
|
||||
environment: anEnvironment
|
||||
environment := anEnvironment
|
||||
!
|
||||
|
||||
packagesListWidget
|
||||
^ packagesListWidget ifNil: [
|
||||
packagesListWidget := HLPackagesListWidget on: self ]
|
||||
!
|
||||
|
||||
selectPackage: aPackage
|
||||
selectedPackage := aPackage.
|
||||
selectedClass := nil.
|
||||
|
||||
self classesListWidget package: aPackage.
|
||||
!
|
||||
|
||||
selectedPackage
|
||||
^ selectedPackage
|
||||
! !
|
||||
|
||||
!HLBrowser methodsFor: 'rendering'!
|
||||
|
||||
renderContentOn: html
|
||||
html with: (HLContainer with: (HLHorizontalSplitter
|
||||
with: (HLVerticalSplitter
|
||||
with: (HLVerticalSplitter
|
||||
with: self packagesListWidget
|
||||
with: self classesListWidget)
|
||||
with: (HLVerticalSplitter
|
||||
with: 'Protocols'
|
||||
with: 'Methods'))
|
||||
with: 'Source Code'))
|
||||
!
|
||||
|
||||
renderTopPanesOn: html
|
||||
html div class: 'pane'; with: self packagesListWidget.
|
||||
html div class: 'pane'; with: self classesListWidget.
|
||||
html div class: 'pane'; with: 'hello'.
|
||||
html div class: 'pane'; with: 'world'
|
||||
! !
|
||||
|
||||
HLBrowser class instanceVariableNames: 'nextId'!
|
||||
|
||||
!HLBrowser class methodsFor: 'accessing'!
|
||||
|
||||
nextId
|
||||
nextId ifNil: [ nextId := 0 ].
|
||||
^ 'browser_', (nextId + 1) asString
|
||||
!
|
||||
|
||||
tabLabel
|
||||
^ 'Browser'
|
||||
!
|
||||
|
||||
tabPriority
|
||||
^ 0
|
||||
! !
|
||||
|
||||
!HLBrowser class methodsFor: 'testing'!
|
||||
|
||||
canBeOpenAsTab
|
||||
^ true
|
||||
! !
|
||||
|
||||
HLWidget subclass: #HLDebugger
|
||||
instanceVariableNames: ''
|
||||
package: 'Helios-Widgets'!
|
||||
|
||||
HLWidget subclass: #HLFocusableWidget
|
||||
instanceVariableNames: 'hiddenInput'
|
||||
package: 'Helios-Widgets'!
|
||||
|
||||
!HLFocusableWidget methodsFor: 'accessing'!
|
||||
|
||||
focusClass
|
||||
^ 'focused'
|
||||
! !
|
||||
|
||||
!HLFocusableWidget methodsFor: 'events'!
|
||||
|
||||
blur
|
||||
rootDiv asJQuery removeClass: self focusClass.
|
||||
!
|
||||
|
||||
focus
|
||||
rootDiv asJQuery addClass: self focusClass
|
||||
!
|
||||
|
||||
hasFocus
|
||||
^ rootDiv notNil and: [ rootDiv asJQuery hasClass: self focusClass ]
|
||||
! !
|
||||
|
||||
!HLFocusableWidget methodsFor: 'rendering'!
|
||||
|
||||
renderContentOn: html
|
||||
!
|
||||
|
||||
renderHiddenInputOn: html
|
||||
hiddenInput := html input
|
||||
style: 'position: absolute; left: -100000px;';
|
||||
onBlur: [ self blur ];
|
||||
onFocus: [ self focus ]
|
||||
!
|
||||
|
||||
renderOn: html
|
||||
self renderHiddenInputOn: html.
|
||||
|
||||
rootDiv := html div
|
||||
class: 'hl_widget';
|
||||
onClick: [ hiddenInput asJQuery focus ];
|
||||
with: [
|
||||
self renderContentOn: html ]
|
||||
! !
|
||||
|
||||
HLFocusableWidget subclass: #HLListWidget
|
||||
instanceVariableNames: 'items selectedItem'
|
||||
package: 'Helios-Widgets'!
|
||||
|
||||
!HLListWidget methodsFor: 'accessing'!
|
||||
|
||||
cssClassForItem: anObject
|
||||
^ self selectedItem = anObject
|
||||
ifTrue: [ 'active' ]
|
||||
ifFalse: [ 'inactive' ]
|
||||
!
|
||||
|
||||
items
|
||||
^ self subclassResponsibility
|
||||
!
|
||||
|
||||
selectedItem
|
||||
^ selectedItem ifNil: [
|
||||
self items ifNotEmpty: [ self items first ] ]
|
||||
!
|
||||
|
||||
selectedItem: anObject
|
||||
selectedItem := anObject
|
||||
! !
|
||||
|
||||
!HLListWidget methodsFor: 'actions'!
|
||||
|
||||
activateListItem: aListItem
|
||||
aListItem asJQuery parent children removeClass: 'active'.
|
||||
aListItem asJQuery addClass: 'active'
|
||||
!
|
||||
|
||||
selectItem: anObject
|
||||
self selectedItem: anObject
|
||||
! !
|
||||
|
||||
!HLListWidget methodsFor: 'rendering'!
|
||||
|
||||
renderContentOn: html
|
||||
html ul
|
||||
class: 'nav nav-pills nav-stacked';
|
||||
with: [
|
||||
self items do: [ :each |
|
||||
self renderItem: each on: html ] ]
|
||||
!
|
||||
|
||||
renderItem: anObject on: html
|
||||
| li |
|
||||
|
||||
li := html li.
|
||||
li
|
||||
class: (self cssClassForItem: anObject);
|
||||
with: [
|
||||
html a
|
||||
with: [
|
||||
(html tag: 'i') class: anObject heliosListIcon.
|
||||
self renderItemLabel: anObject on: html ];
|
||||
onClick: [
|
||||
self activateListItem: li.
|
||||
self selectItem: anObject ] ]
|
||||
!
|
||||
|
||||
renderItemLabel: anObject on: html
|
||||
html with: anObject asString
|
||||
! !
|
||||
|
||||
HLListWidget subclass: #HLBrowserListWidget
|
||||
instanceVariableNames: 'browser'
|
||||
package: 'Helios-Widgets'!
|
||||
|
||||
!HLBrowserListWidget methodsFor: 'accessing'!
|
||||
|
||||
browser
|
||||
^ browser
|
||||
!
|
||||
|
||||
browser: aBrowser
|
||||
browser := aBrowser
|
||||
! !
|
||||
|
||||
!HLBrowserListWidget class methodsFor: 'instance creation'!
|
||||
|
||||
on: aBrowser
|
||||
^ self new
|
||||
browser: aBrowser;
|
||||
yourself
|
||||
! !
|
||||
|
||||
HLBrowserListWidget subclass: #HLClassesListWidget
|
||||
instanceVariableNames: 'package'
|
||||
package: 'Helios-Widgets'!
|
||||
|
||||
!HLClassesListWidget methodsFor: 'accessing'!
|
||||
|
||||
items
|
||||
^ self package
|
||||
ifNil: [ #() ]
|
||||
ifNotNil: [ self package classes ]
|
||||
!
|
||||
|
||||
package
|
||||
^ package
|
||||
!
|
||||
|
||||
package: aPackage
|
||||
package := aPackage.
|
||||
self refresh
|
||||
! !
|
||||
|
||||
HLBrowserListWidget subclass: #HLPackagesListWidget
|
||||
instanceVariableNames: ''
|
||||
package: 'Helios-Widgets'!
|
||||
|
||||
!HLPackagesListWidget methodsFor: 'accessing'!
|
||||
|
||||
browser
|
||||
^ browser
|
||||
!
|
||||
|
||||
browser: aBrowser
|
||||
browser := aBrowser
|
||||
!
|
||||
|
||||
environment
|
||||
^ self browser environment
|
||||
!
|
||||
|
||||
items
|
||||
^ self environment packages
|
||||
! !
|
||||
|
||||
!HLPackagesListWidget methodsFor: 'actions'!
|
||||
|
||||
selectItem: aPackage
|
||||
super selectItem: aPackage.
|
||||
self browser selectPackage: aPackage
|
||||
! !
|
||||
|
||||
HLWidget subclass: #HLInspector
|
||||
instanceVariableNames: ''
|
||||
package: 'Helios-Widgets'!
|
||||
|
||||
HLWidget subclass: #HLSUnit
|
||||
instanceVariableNames: ''
|
||||
package: 'Helios-Widgets'!
|
||||
|
||||
!HLSUnit class methodsFor: 'accessing'!
|
||||
|
||||
tabLabel
|
||||
^ 'SUnit'
|
||||
!
|
||||
|
||||
tabPriority
|
||||
^ 1000
|
||||
! !
|
||||
|
||||
!HLSUnit class methodsFor: 'testing'!
|
||||
|
||||
canBeOpenAsTab
|
||||
^ true
|
||||
! !
|
||||
|
||||
HLWidget subclass: #HLTabManager
|
||||
instanceVariableNames: 'tabs activeTab announcer'
|
||||
package: 'Helios-Widgets'!
|
||||
|
||||
!HLTabManager methodsFor: 'accessing'!
|
||||
|
||||
activate: aTab
|
||||
activeTab := aTab.
|
||||
self
|
||||
refresh;
|
||||
show: aTab
|
||||
!
|
||||
|
||||
activeTab
|
||||
^ activeTab
|
||||
!
|
||||
|
||||
addTab: aTab
|
||||
self tabs add: aTab.
|
||||
self activate: aTab
|
||||
!
|
||||
|
||||
announcer
|
||||
^ announcer ifNil: [ announcer := Announcer new ]
|
||||
!
|
||||
|
||||
removeTab: aTab
|
||||
"Todo: activate the previously activated tab. Keep a history of tabs selection"
|
||||
|
||||
(self tabs includes: aTab) ifFalse: [ ^ self ].
|
||||
|
||||
self tabs remove: aTab.
|
||||
self refresh
|
||||
!
|
||||
|
||||
tabs
|
||||
^ tabs ifNil: [ tabs := OrderedCollection new ]
|
||||
! !
|
||||
|
||||
!HLTabManager methodsFor: 'rendering'!
|
||||
|
||||
refresh
|
||||
(window jQuery: '.navbar') remove.
|
||||
(window jQuery: '#container') remove.
|
||||
self appendToJQuery: 'body' asJQuery
|
||||
!
|
||||
|
||||
renderAddOn: html
|
||||
html li
|
||||
class: 'dropdown';
|
||||
with: [
|
||||
html a
|
||||
class: 'dropdown-toggle';
|
||||
at: 'data-toggle' put: 'dropdown';
|
||||
with: [
|
||||
html with: 'Open...'.
|
||||
(html tag: 'b') class: 'caret' ].
|
||||
html ul
|
||||
class: 'dropdown-menu';
|
||||
with: [
|
||||
((HLWidget withAllSubclasses
|
||||
select: [ :each | each canBeOpenAsTab ])
|
||||
sorted: [ :a :b | a tabPriority < b tabPriority ])
|
||||
do: [ :each |
|
||||
html li with: [
|
||||
html a
|
||||
with: each tabLabel;
|
||||
onClick: [ each openAsTab ] ] ] ] ]
|
||||
!
|
||||
|
||||
renderContentOn: html
|
||||
html div
|
||||
class: 'navbar navbar-fixed-top';
|
||||
with: [ html div
|
||||
class: 'navbar-inner';
|
||||
with: [ self renderTabsOn: html ] ].
|
||||
html div id: 'container'
|
||||
!
|
||||
|
||||
renderTabsOn: html
|
||||
html ul
|
||||
class: 'nav';
|
||||
with: [
|
||||
self tabs do: [ :each |
|
||||
html li
|
||||
class: (each isActive ifTrue: [ 'active' ] ifFalse: [ 'inactive' ]);
|
||||
with: [
|
||||
html a
|
||||
with: [
|
||||
((html tag: 'i') class: 'icon-remove-circle')
|
||||
onClick: [ self removeTab: each ].
|
||||
html with: each label ];
|
||||
onClick: [ each activate ] ] ].
|
||||
self renderAddOn: html ]
|
||||
!
|
||||
|
||||
show: aTab
|
||||
(window jQuery: '#container') empty.
|
||||
aTab widget appendToJQuery: '#container' asJQuery
|
||||
! !
|
||||
|
||||
HLTabManager class instanceVariableNames: 'current'!
|
||||
|
||||
!HLTabManager class methodsFor: 'accessing'!
|
||||
|
||||
current
|
||||
^ current ifNil: [ current := self basicNew initialize ]
|
||||
! !
|
||||
|
||||
!HLTabManager class methodsFor: 'initialization'!
|
||||
|
||||
initialize
|
||||
self current appendToJQuery: 'body' asJQuery
|
||||
! !
|
||||
|
||||
!HLTabManager class methodsFor: 'instance creation'!
|
||||
|
||||
new
|
||||
"Use current instead"
|
||||
|
||||
self shouldNotImplement
|
||||
! !
|
||||
|
||||
HLWidget subclass: #HLTranscript
|
||||
instanceVariableNames: ''
|
||||
package: 'Helios-Widgets'!
|
||||
|
||||
!HLTranscript class methodsFor: 'accessing'!
|
||||
|
||||
tabLabel
|
||||
^ 'Transcript'
|
||||
!
|
||||
|
||||
tabPriority
|
||||
^ 600
|
||||
! !
|
||||
|
||||
!HLTranscript class methodsFor: 'testing'!
|
||||
|
||||
canBeOpenAsTab
|
||||
^ true
|
||||
! !
|
||||
|
||||
HLWidget subclass: #HLWorkspace
|
||||
instanceVariableNames: ''
|
||||
package: 'Helios-Widgets'!
|
||||
|
||||
!HLWorkspace class methodsFor: 'accessing'!
|
||||
|
||||
tabLabel
|
||||
^ 'Workspace'
|
||||
!
|
||||
|
||||
tabPriority
|
||||
^ 10
|
||||
! !
|
||||
|
||||
!HLWorkspace class methodsFor: 'testing'!
|
||||
|
||||
canBeOpenAsTab
|
||||
^ true
|
||||
! !
|
||||
|
||||
!Object methodsFor: '*Helios-Widgets'!
|
||||
|
||||
heliosListIcon
|
||||
^ ''
|
||||
! !
|
||||
|
165
st/Helios.st
165
st/Helios.st
|
@ -1,165 +0,0 @@
|
|||
Smalltalk current createPackage: 'Helios' properties: #{}!
|
||||
Widget subclass: #HLBrowser
|
||||
instanceVariableNames: ''
|
||||
package: 'Helios'!
|
||||
|
||||
Widget subclass: #HLDebugger
|
||||
instanceVariableNames: ''
|
||||
package: 'Helios'!
|
||||
|
||||
Widget subclass: #HLInspector
|
||||
instanceVariableNames: ''
|
||||
package: 'Helios'!
|
||||
|
||||
Widget subclass: #HLSUnit
|
||||
instanceVariableNames: ''
|
||||
package: 'Helios'!
|
||||
|
||||
Object subclass: #HLTab
|
||||
instanceVariableNames: 'widget label'
|
||||
package: 'Helios'!
|
||||
|
||||
!HLTab methodsFor: 'accessing'!
|
||||
|
||||
activate
|
||||
self manager activate: self
|
||||
!
|
||||
|
||||
add
|
||||
self manager addTab: self
|
||||
!
|
||||
|
||||
label
|
||||
^ label ifNil: [ '' ]
|
||||
!
|
||||
|
||||
label: aString
|
||||
label := aString
|
||||
!
|
||||
|
||||
manager
|
||||
^ HLTabManager current
|
||||
!
|
||||
|
||||
widget
|
||||
^ widget
|
||||
!
|
||||
|
||||
widget: aWidget
|
||||
widget := aWidget
|
||||
! !
|
||||
|
||||
!HLTab methodsFor: 'testing'!
|
||||
|
||||
isActive
|
||||
^ self manager activeTab = self
|
||||
! !
|
||||
|
||||
!HLTab class methodsFor: 'instance creation'!
|
||||
|
||||
on: aWidget labelled: aString
|
||||
^ self new
|
||||
widget: aWidget;
|
||||
label: aString;
|
||||
yourself
|
||||
! !
|
||||
|
||||
Widget subclass: #HLTabManager
|
||||
instanceVariableNames: 'tabs activeTab'
|
||||
package: 'Helios'!
|
||||
|
||||
!HLTabManager methodsFor: 'accessing'!
|
||||
|
||||
activate: aTab
|
||||
activeTab := aTab.
|
||||
self
|
||||
refresh;
|
||||
show: aTab
|
||||
!
|
||||
|
||||
activeTab
|
||||
^ activeTab
|
||||
!
|
||||
|
||||
addTab: aTab
|
||||
self tabs add: aTab.
|
||||
self refresh
|
||||
!
|
||||
|
||||
removeTab: aTab
|
||||
"Todo: activate the previously activated tab. Keep a history of tabs selection"
|
||||
|
||||
(self tabs includes: aTab) ifFalse: [ ^ self ].
|
||||
|
||||
self tabs remove: aTab.
|
||||
self refresh
|
||||
!
|
||||
|
||||
tabs
|
||||
^ tabs ifNil: [ tabs := OrderedCollection new ]
|
||||
! !
|
||||
|
||||
!HLTabManager methodsFor: 'rendering'!
|
||||
|
||||
refresh
|
||||
(window jQuery: '.navbar') remove.
|
||||
(window jQuery: '#container') remove.
|
||||
self appendToJQuery: 'body' asJQuery
|
||||
!
|
||||
|
||||
renderOn: html
|
||||
html div
|
||||
class: 'navbar navbar-fixed-top';
|
||||
with: [ html div
|
||||
class: 'navbar-inner';
|
||||
with: [ self renderTabsOn: html ] ].
|
||||
html div id: 'container'
|
||||
!
|
||||
|
||||
renderTabsOn: html
|
||||
html ul
|
||||
class: 'nav';
|
||||
with: [ self tabs do: [ :each |
|
||||
html li
|
||||
class: (each isActive ifTrue: [ 'active' ] ifFalse: [ 'inactive' ]);
|
||||
with: [
|
||||
html a
|
||||
with: each label;
|
||||
onClick: [ each activate ] ] ] ]
|
||||
!
|
||||
|
||||
show: aTab
|
||||
(window jQuery: '#container') empty.
|
||||
aTab widget appendToJQuery: '#container' asJQuery
|
||||
! !
|
||||
|
||||
HLTabManager class instanceVariableNames: 'current'!
|
||||
|
||||
!HLTabManager class methodsFor: 'accessing'!
|
||||
|
||||
current
|
||||
^ current ifNil: [ current := self basicNew initialize ]
|
||||
! !
|
||||
|
||||
!HLTabManager class methodsFor: 'initialization'!
|
||||
|
||||
initialize
|
||||
self current appendToJQuery: 'body' asJQuery
|
||||
! !
|
||||
|
||||
!HLTabManager class methodsFor: 'instance creation'!
|
||||
|
||||
new
|
||||
"Use current instead"
|
||||
|
||||
self shouldNotImplement
|
||||
! !
|
||||
|
||||
Widget subclass: #HLTranscript
|
||||
instanceVariableNames: ''
|
||||
package: 'Helios'!
|
||||
|
||||
Widget subclass: #HLWorkspace
|
||||
instanceVariableNames: ''
|
||||
package: 'Helios'!
|
||||
|
Loading…
Reference in New Issue