You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by zo...@apache.org on 2010/07/03 10:37:33 UTC
svn commit: r960170 - in
/incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat:
./ elements/
Author: zoe
Date: Sat Jul 3 08:37:33 2010
New Revision: 960170
URL: http://svn.apache.org/viewvc?rev=960170&view=rev
Log:
ARIES-319 Merging elements/TwistieAggregation and TwistieSection into elements/TwistieSection- first pass.
Added:
incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/TwistieSection.js
Removed:
incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/TwistieSection.js
incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/TwistieAggregation.js
Modified:
incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/Component.js
incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/ElementLayoutManager.js
incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/ComponentColorElement.js
incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/ComponentContainer.js
incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/ElementBase.js
incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/ElementRegistry.js
incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/TextComponentProperty.js
Modified: incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/Component.js
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/Component.js?rev=960170&r1=960169&r2=960170&view=diff
==============================================================================
--- incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/Component.js (original)
+++ incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/Component.js Sat Jul 3 08:37:33 2010
@@ -168,7 +168,8 @@ removeSelf : function() {
this.surface.remove(this.group);
//Now we remove all other the elements
for (var type in this.elements) {
- this.elements[type].remove();
+ console.log("Removing element of type : " + type);
+ this.elements[type].removeSelf();
delete this.elements[type];
}
this.relationshipManager.removeSelf();
Modified: incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/ElementLayoutManager.js
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/ElementLayoutManager.js?rev=960170&r1=960169&r2=960170&view=diff
==============================================================================
--- incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/ElementLayoutManager.js (original)
+++ incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/ElementLayoutManager.js Sat Jul 3 08:37:33 2010
@@ -78,7 +78,7 @@ doLayout: function(){
element.x=0;
element.y=currentYPos;
- //console.log("Invoking element.render");
+ console.log("Invoking element.render" + this.owningComponent.id + " " + elementName);
element.render();
Modified: incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/ComponentColorElement.js
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/ComponentColorElement.js?rev=960170&r1=960169&r2=960170&view=diff
==============================================================================
--- incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/ComponentColorElement.js (original)
+++ incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/ComponentColorElement.js Sat Jul 3 08:37:33 2010
@@ -62,7 +62,7 @@ dojo
update : function(value) {
this.value = value;
},
- remove : function() {
+ removeSelf : function() {
// no op, we only exist due to the color of the owning
// component..
}
Modified: incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/ComponentContainer.js
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/ComponentContainer.js?rev=960170&r1=960169&r2=960170&view=diff
==============================================================================
--- incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/ComponentContainer.js (original)
+++ incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/ComponentContainer.js Sat Jul 3 08:37:33 2010
@@ -38,7 +38,7 @@ dojo.declare("goat.elements.ComponentCon
//TODO: better children merging.. handle add/remove/modify
this.children=children;
},
- remove: function(){
+ removeSelf: function(){
}
Modified: incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/ElementBase.js
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/ElementBase.js?rev=960170&r1=960169&r2=960170&view=diff
==============================================================================
--- incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/ElementBase.js (original)
+++ incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/ElementBase.js Sat Jul 3 08:37:33 2010
@@ -55,7 +55,7 @@ dojo.declare("goat.elements.ElementBase"
render: function() {
//called to add this element to the screen at this.x, this.y
},
- remove: function() {
+ removeSelf: function() {
//called to remove this element from the screen
}
Modified: incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/ElementRegistry.js
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/ElementRegistry.js?rev=960170&r1=960169&r2=960170&view=diff
==============================================================================
--- incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/ElementRegistry.js (original)
+++ incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/ElementRegistry.js Sat Jul 3 08:37:33 2010
@@ -24,7 +24,7 @@ dojo.provide("goat.elements.ElementRegis
dojo.require("goat.elements.TextComponentProperty");
dojo.require("goat.elements.ComponentContainer");
-dojo.require("goat.elements.TwistieAggregation");
+dojo.require("goat.elements.TwistieSection");
dojo.require("goat.elements.ComponentColorElement");
dojo.require("goat.configuration.ComponentAppearance");
@@ -57,7 +57,7 @@ constructor : function() {
}else if(type.match("^component.container")=="component.container"){
return new goat.elements.ComponentContainer(component, type, value);
}else if(type.match("^relationship.aggregation.")=="relationship.aggregation."){
- return new goat.elements.TwistieAggregation(component, type, value);
+ return new goat.elements.TwistieSection(component, type, value);
}
//else.. unknown property.. ignore it.
}
Modified: incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/TextComponentProperty.js
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/TextComponentProperty.js?rev=960170&r1=960169&r2=960170&view=diff
==============================================================================
--- incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/TextComponentProperty.js (original)
+++ incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/TextComponentProperty.js Sat Jul 3 08:37:33 2010
@@ -61,7 +61,7 @@ dojo.declare("goat.elements.TextComponen
update: function(value){
this.value=value;
},
- remove: function(){
+ removeSelf: function(){
if(this.text!=null){
this.component.group.remove(this.text);
}
Added: incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/TwistieSection.js
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/TwistieSection.js?rev=960170&view=auto
==============================================================================
--- incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/TwistieSection.js (added)
+++ incubator/aries/trunk/samples/goat/goat-web/src/main/resources/web/goat/elements/TwistieSection.js Sat Jul 3 08:37:33 2010
@@ -0,0 +1,205 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+// TwistieSection is responsible for creating and renedring the twistie element. It draws the trinagle at
+// x,y coordinate supplied by the owning component. It diplays lines of text derived from a
+// relationship aggregator if the twistie is open and removes them from display when the twistie
+// is closed.
+dojo.provide("goat.elements.TwistieSection");
+dojo.require("goat.elements.ElementBase");
+dojo.require("goat.RelationshipAggregator");
+dojo.require("dojox.gfx");
+dojo.require("dojox.gfx.Moveable");
+dojo.require("dojo.data.ItemFileWriteStore");
+
+
+dojo.declare("goat.elements.TwistieSection", goat.elements.ElementBase, {
+
+ /*goat.RelationshipAggregator*/ content: null,
+ group: null,
+ addsub: null,
+ removesub: null,
+
+ built: false,
+
+ constructor : function(component, /*String*/ type, /*goat.RelationshipAggregator*/ content) {
+
+ this.component=component;
+ this.type=type;
+ this.content=content;
+ this.x = 0;
+ this.y = 0;
+ this.hint="row";
+ this.width=150;
+ this.height=12;
+ this.isOpen=false;
+ //maintains a list of relations ships to displsy - with dups removed.
+ this.items = new Array();
+ this.itemTexts = new Array();
+
+
+ this.twistieGroup = this.component.group.createGroup();
+ this.component.group.remove(this.twistieGroup);
+ this.twistieHandleGroup = this.twistieGroup.createGroup();
+
+ this.twistieHandleGroup.connect("onclick",dojo.hitch(this,"twistieHandler"));
+
+ console.log("ZZX: New TA instance, type: " + type + " component: " + this.component.id);
+
+ this.addsub=dojo.subscribe("goat.relationshipaggregator.add."+this.component.id+"."+this.type, this, this.onAdd);
+ this.removesub=dojo.subscribe("goat.relationshipaggregator.remove."+this.component.id+"."+this.type, this, this.onRemove);
+ },
+ getContent : function(){
+ return this.content;
+ },
+ getWidth : function(){
+ return this.width;
+ },
+ getHeight: function(){
+ return this.height;
+ },
+ render: function(){
+ console.log("RENDERING...");
+ this.component.group.remove(this.twistieGroup);
+ if(this.built) {this.twistieHandleGroup.remove(this.twistieHandle);}
+
+ this.createTwistie();
+ this.component.group.add(this.twistieGroup);
+ console.log("Rendered, x = " + this.x + "y = " + this.y);
+ },
+ update: function(value){
+ },
+ remove: function(value){
+ this.component.group.remove(this.twistieGroup);
+ dojo.unsubscribe(this.addsub);
+ dojo.unsubscribe(this.removesub);
+
+ },
+ onAdd: function(/*RelationshipElement[]*/args){
+ if(!this.inArray(this.items, args.name)) {
+ this.items.push(args.name);
+ }
+ if (!this.built) {
+ this.component.refresh();
+ this.built = true;
+ }
+ if (this.isOpen) {
+ this.addItemsToDisplay();
+ this.component.refresh();
+ }
+
+ },
+ onRemove: function(/*RelationshipElement[]*/args){
+ for(var k in this.items) {
+ if(this.items[k] == args.nam) {
+ delete this.items[k];
+ }
+ }
+ if(this.isOpen) {
+ this.addItemsToDisplay;
+ this.component.refresh();
+ }
+ },
+ addItemsToDisplay: function(){
+ var maxLengthSeen = 0;
+ var extraHeight = 12;
+ if(this.items!=null){
+ extraHeight = extraHeight + (this.items.length * 10);
+ var pyt = this.y + 18;
+ var pxt = this.x + 17;
+ var idx=0;
+
+ this.removeItemsFromDisplay();
+ for(idx=0; idx<this.items.length; idx++){
+ if(this.isOpen){
+
+ this.itemTexts[idx] = this.twistieGroup.createText({x: pxt, y: pyt, text: this.items[idx], align: "start"})
+ .setFont({family: "times", size: "8pt"})
+ .setFill("#000000");
+
+ pyt = pyt + 10;
+ if(maxLengthSeen< this.items[idx].length){
+ maxLengthSeen = this.items[idx].length;
+ }
+ }
+ }
+ }
+
+ var extraWidth = this.component.minWidth;
+ if(maxLengthSeen>25){
+ var extraW = maxLengthSeen-25;
+ extraW = extraW * 6;
+ extraWidth = extraWidth + extraW;
+ }
+
+ if(extraWidth<this.width){
+ extraWidth = this.component.width;
+ }
+
+ this.height = extraHeight;
+ this.width = extraWidth;
+ },
+
+ removeItemsFromDisplay: function(){
+ if(this.itemTexts!=null){
+ for (var k in this.itemTexts) {
+ this.twistieGroup.remove(this.itemTexts[k]);
+ }
+ this.height = 12;
+ this.width = 150;
+ }
+ },
+ twistieHandler: function() {
+ this.isOpen=!this.isOpen;
+
+ this.twistieHandleGroup.remove(this.twistieHandle);
+ this.createTwistie();
+
+ if(this.isOpen){
+ this.addItemsToDisplay();
+ }else{
+ this.removeItemsFromDisplay();
+ }
+ console.log("twistie requesting refresh of component due to change in state/content");
+ this.component.refresh();
+ },
+ createTwistie: function(){
+ console.log("in create twistie, x = " + this.x + " y = " + this.y);
+ var pys = this.y;
+ var pym = pys+5;
+ var pye = pys+10;
+ var px = this.x + 5;
+ var pxm = this.x + 10;
+ var pxe = this.x + 15;
+ this.twistieHandle = this.twistieHandleGroup.createPolyline([{x:px,y:pys},{x:pxe,y:pym},{x:px,y:pye}]).setFill("#000000");
+
+ if(this.isOpen){
+ this.twistieHandle.setShape([{x:px,y:pys},{x:pxe,y:pys},{x:pxm,y:pye}]);
+ }
+ },
+ inArray: function(a, string) {
+ for (var k in a) {
+ if(a[k] == string) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+});