twingle/twingle/content/workspace editorbindings.xml,1.3,1.4 genericviewer.xml,1.2,1.3 midasbindings.xml,1.4,1.5

[email protected] Mon, 10 Mar 2003 03:43:05 -0700 (MST)
Newsgroups gmane.comp.cms.oscom.twingle.cvs
Message-ID <[email protected]>
Update of /cvs/root/twingle/twingle/content/workspace
In directory alpha.oscom.org:/tmp/cvs-serv24024

Modified Files:
	editorbindings.xml genericviewer.xml midasbindings.xml 
Log Message:
new editable widgets interface


Index: editorbindings.xml
===================================================================
RCS file: /cvs/root/twingle/twingle/content/workspace/editorbindings.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** editorbindings.xml	10 Mar 2003 07:40:44 -0000	1.3
--- editorbindings.xml	10 Mar 2003 10:43:03 -0000	1.4
***************
*** 9,18 ****
          <content>
              <xul:tabbox flex="1">
!                 <xul:tabs>
!                     <xul:tab label="Contents" oncommand="document.getBindingParent(this).onCommandStart('articleeditor');"/>
!                     <xul:tab label="Source" oncommand="document.getBindingParent(this).onCommandStart('sourceeditor');" />
!                     <xul:tab label="Preview" oncommand="document.getBindingParent(this).loadPreview()"/>
!                     <xul:tab label="Properties"/>
!                     <xul:tab label="Web Manage"/>
                  </xul:tabs>
                  <xul:tabpanels>
--- 9,18 ----
          <content>
              <xul:tabbox flex="1">
!                 <xul:tabs oncommand='document.getBindingParent(this).onTabsClick(this,event);'>
!                     <xul:tab label="Contents" />
!                     <xul:tab label="Source" />
!                     <xul:tab label="Preview" />
!                     <xul:tab label="Properties" />
!                     <xul:tab label="Web Manage" />
                  </xul:tabs>
                  <xul:tabpanels>
***************
*** 23,29 ****
                          <xul:sourceeditor flex="1" />
                      </xul:tabpanel>
-                     
                      <xul:tabpanel>
!                         <xul:iframe id="iframe" flex="1" src=""/>
                      </xul:tabpanel>
                      <xul:tabpanel>
--- 23,28 ----
                          <xul:sourceeditor flex="1" />
                      </xul:tabpanel>
                      <xul:tabpanel>
!                         <xul:preview flex="1" />
                      </xul:tabpanel>
                      <xul:tabpanel>
***************
*** 36,79 ****
              </xul:tabbox>
          </content>
-         <implementation>
-             <constructor>
-                 <![CDATA[
- dump("\narticleviewer constructor start");
-                 this.articleeditor = document.getAnonymousNodes(this)[0].getElementsByTagNameNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul","midaseditor")[0];
-                 this.sourceeditor = document.getAnonymousNodes(this)[0].getElementsByTagNameNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul","sourceeditor")[0];
-                 this.oldTab = 'articleeditor';
- 
- dump("\narticleviewer constructor end");                
-                 ]]>
-             </constructor>
-             
-             
-             <method name="onCommandStart">
-                 <parameter name="prop"/>
-                 <body>
-                     eval("this."+ prop + ".data = this." + this.oldTab + ".data");
-                     this.oldTab = prop;
-                 </body>
-             </method>
-             
-             <method name="loadPreview">
-                 <body>
-                     <![CDATA[ 
-                         var ifr = document.getAnonymousNodes(this)[0].getElementsByTagNameNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul','iframe')[0];
-                         if (!ifr.getAttribute('src')) {
-                             ifr.setAttribute('src',this.previewurl);
-                         } else {
-                             ifr.webNavigation.reload(ifr.webNavigation.LOAD_FLAGS_NONE);
-                         }
-             ]]>
-                 </body>
-                 
-             </method>
-             
-             
-         </implementation>
      </binding>
      
! <!-- this binding is not used anywhere at the moment, <midaseditor> is used instead-->
      <binding id="articleeditorbinding">
          <content>
--- 35,41 ----
              </xul:tabbox>
          </content>
      </binding>
      
!     <!-- this binding is not used anywhere at the moment, <midaseditor> is used instead-->
      <binding id="articleeditorbinding">
          <content>
***************
*** 103,106 ****
          </implementation>
      </binding>
! 
  </bindings>
--- 65,68 ----
          </implementation>
      </binding>
!     
  </bindings>

Index: genericviewer.xml
===================================================================
RCS file: /cvs/root/twingle/twingle/content/workspace/genericviewer.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** genericviewer.xml	9 Mar 2003 22:50:53 -0000	1.2
--- genericviewer.xml	10 Mar 2003 10:43:03 -0000	1.3
***************
*** 9,16 ****
          <content>
              <xul:tabbox flex="1">
!                 <xul:tabs>
                      <xul:tab label="Contents"/>
                      <xul:tab label="Source"/>
-                     
                      <xul:tab label="Preview"/>
                      <xul:tab label="Properties"/>
--- 9,15 ----
          <content>
              <xul:tabbox flex="1">
!                 <xul:tabs oncommand='document.getBindingParent(this).onTabsClick(this);'>
                      <xul:tab label="Contents"/>
                      <xul:tab label="Source"/>
                      <xul:tab label="Preview"/>
                      <xul:tab label="Properties"/>
***************
*** 24,30 ****
                          <xul:sourceditor/>
                      </xul:tabpanel>
-                     
                      <xul:tabpanel>
!                         <xul:iframe flex="1" src=""/>
                      </xul:tabpanel>
                      <xul:tabpanel>
--- 23,28 ----
                          <xul:sourceditor/>
                      </xul:tabpanel>
                      <xul:tabpanel>
!                         <xul:preview/>
                      </xul:tabpanel>
                      <xul:tabpanel>
***************
*** 33,37 ****
                      <xul:tabpanel>
                          <xul:label/>
-                         
                      </xul:tabpanel>
                  </xul:tabpanels>
--- 31,34 ----
***************
*** 43,54 ****
              <field name="previewurl"/>
              <constructor>
!                 
!                 
                  var folderviewer = document.getAnonymousNodes(this)[0].parentNode;
-                 
                  var parent = folderviewer.parentNode.parentNode;
                  var tabs = parent.getElementsByTagName("tabs")[0];
                  var rt = this.resourcetitle;
-                 
                  var thistab = document.createElement("tab");
                  thistab.setAttribute("label",rt);
--- 40,49 ----
              <field name="previewurl"/>
              <constructor>
!                 <![CDATA[
!                 // code by paul            
                  var folderviewer = document.getAnonymousNodes(this)[0].parentNode;
                  var parent = folderviewer.parentNode.parentNode;
                  var tabs = parent.getElementsByTagName("tabs")[0];
                  var rt = this.resourcetitle;
                  var thistab = document.createElement("tab");
                  thistab.setAttribute("label",rt);
***************
*** 56,65 ****
                  tabs.appendChild(thistab);
                  tabs.selectedItem = thistab;
              </constructor>
          </implementation>
      </binding>
      
      
!     <binding id="genericsourceeditor">
          <content>
              <xul:vbox flex="1">
--- 51,85 ----
                  tabs.appendChild(thistab);
                  tabs.selectedItem = thistab;
+                 
+                 // code by chregu
+                 this.currentPanelEditWidget = document.getAnonymousNodes(this)[0].selectedPanel.childNodes[0];
+                 
+                 ]]>
              </constructor>
+             
+             <property name="content">
+                 <getter>
+                     return this.currentPanelEditWidget.content;
+                 </getter>
+             </property>        
+             
+             <method name="onTabsClick">
+                 <parameter name="tabs"/>
+                 <body>
+                     <![CDATA[
+                     tab = tabs.parentNode.selectedTab;
+                     panel = tabs.parentNode.selectedPanel;
+                     panelwidget = panel.childNodes[0];
+                     if (panelwidget.update()) {
+                         this.currentPanelEditWidget = panelwidget;
+                    }
+                 ]]>
+                 </body>
+             </method>
          </implementation>
      </binding>
      
      
!     <binding id="genericsourceeditor" extends="#genericwidget">
          <content>
              <xul:vbox flex="1">
***************
*** 73,77 ****
              </constructor> 
              
!             <property name="data">
                  <getter>
                      return(this.sourceFrame.value);
--- 93,97 ----
              </constructor> 
              
!             <property name="content">
                  <getter>
                      return(this.sourceFrame.value);
***************
*** 82,90 ****
              </property>
              
          </implementation>
-         
-         
      </binding>
      
  </bindings>
  
--- 102,145 ----
              </property>
              
+             <method name="update">
+                 <body>
+                     this.content = this.parentWidget.content;
+                     return true;
+                 </body>
+             </method>
+             
          </implementation>
      </binding>
      
+     <binding id="genericpreview">
+         <content>
+             <xul:vbox flex="1">
+                 <xul:iframe id="iframe" flex="1" src=""/>
+             </xul:vbox>
+         </content>
+         
+         <implementation>
+             <method name="update">
+                 <body>
+                     var ifr = document.getAnonymousNodes(this)[0].getElementsByTagNameNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul','iframe')[0];
+                     if (!ifr.getAttribute('src')) {
+                     ifr.setAttribute('src',document.getBindingParent(this).previewurl);
+                     } else {
+                     ifr.webNavigation.reload(ifr.webNavigation.LOAD_FLAGS_NONE);
+                     }
+                     return false;
+                 </body>
+             </method>
+         </implementation>
+     </binding>   
+     
+     <binding id="genericwidget">
+         
+         <implementation>
+             <constructor>
+                 this.parentWidget = document.getBindingParent(this);
+             </constructor>
+         </implementation>
+     </binding>    
  </bindings>
  

Index: midasbindings.xml
===================================================================
RCS file: /cvs/root/twingle/twingle/content/workspace/midasbindings.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** midasbindings.xml	9 Mar 2003 22:50:53 -0000	1.4
--- midasbindings.xml	10 Mar 2003 10:43:03 -0000	1.5
***************
*** 7,38 ****
      
      
!     <binding id="midaseditorbinding">
          <content>
              <xul:tabbox flex="1">
!                     <xul:vbox flex="1">
!                         <xul:hbox>
!                             <xul:button label="bold" oncommand='document.getBindingParent(this).midasCommand("Bold");'/>
!                             <xul:button label="italics" oncommand='document.getBindingParent(this).midasCommand("Italic");'/>                            
!                         </xul:hbox>
!                         <xul:iframe src="" height="300px" flex="1"/>
!                         </xul:vbox> 
              </xul:tabbox>
          </content>
          <implementation>
              <constructor>
!                 this.loadHTML();    
              </constructor>
              
              <fields name="editFrame"/>
! 
!             <property name="data">
                  <getter>
!                      var ser = new XMLSerializer();
!                      var children = this.editFrame.contentDocument.body.childNodes;
!                      var out = "";
!                      for (i = 0; i &lt; children.length; i++ ) {
                          out += ser.serializeToString(children[i]);
                      }
!                      return out;
                  </getter>
                  <setter>
--- 7,42 ----
      
      
!     <binding id="midaseditorbinding" extends="genericviewer.xml#genericwidget">
          <content>
              <xul:tabbox flex="1">
!                 <xul:vbox flex="1">
!                     <xul:hbox>
!                         <xul:button label="bold" oncommand='document.getBindingParent(this).midasCommand("Bold");'/>
!                         <xul:button label="italics" oncommand='document.getBindingParent(this).midasCommand("Italic");'/>                            
!                     </xul:hbox>
!                     <xul:iframe src="" height="300px" flex="1"/>
!                 </xul:vbox> 
              </xul:tabbox>
          </content>
          <implementation>
              <constructor>
!                 // this has to be changed. it only works, if this widget is on the first tab... waiting for proposal of paul about better solution
!                 this.startUp()
              </constructor>
              
              <fields name="editFrame"/>
!             
!             <property name="content">
                  <getter>
!                     <![CDATA[ 
! 
!                     var ser = new XMLSerializer();
!                     var children = this.editFrame.contentDocument.body.childNodes;
!                     var out = "";
!                     for (i = 0; i &lt; children.length; i++ ) {
                          out += ser.serializeToString(children[i]);
                      }
!                     return out;
!                     ]]>
                  </getter>
                  <setter>
***************
*** 41,44 ****
--- 45,61 ----
              </property>
  
+             <method name="update">
+                 <body>
+                     this.content = this.parentWidget.content;
+                     return true;
+                 </body>
+             </method>
+ 
+             <method name="startUp">
+                 <body>
+                     this.loadHTML();    
+                 </body>
+             </method>
+ 
              <method name="setEditFrame">
                  <body>
***************
*** 78,82 ****
                ]]></body>
              </method>
! 
              
          </implementation>
--- 95,99 ----
                ]]></body>
              </method>
!             
              
          </implementation>