mscifo
10-31-2006, 03:56 PM
Jack
I've been playing around with your updated feed-viewer example released with the newest beta. I've been trying to add support for a default view mode and a wide view mode and have come up with a couple issues.
1) A GridPanel/ContentPanel cannot be added to more than one BorderLayout.
2) When I remove a NestedLayoutPanel from a BorderLayout and add a different NestedLayout Panel, the new NestedLayoutPanel doesn't show up properly. May be related to issue 1.
The relevant code is below. Perhaps I am doing something wrong.
<snip>
layout.add('east', new YAHOO.ext.ContentPanel('suggested', {title: 'Suggested Feeds', fitToFrame:true}));
// create the feed grid
this.createGrid();
// create the preview panel and toolbar
previewBody = new YAHOO.ext.Actor('preview-body');
var tb = new YAHOO.ext.Toolbar('preview-tb');
tb.addButton({text: 'View in New Tab', className: 'view-tab', click: this.showInTab.createDelegate(this)});
tb.addSeparator();
tb.addButton({text: 'View in New Window', className: 'view-window', click: this.showInWindow.createDelegate(this)});
preview = new YAHOO.ext.ContentPanel('preview', {title: "Preview", fitToFrame:true, toolbar: tb, resizeEl:'preview-body'});
gridPanel = new YAHOO.ext.GridPanel(grid, 'Feed Articles');
defaultLayout = new YAHOO.ext.BorderLayout('defaultcontent', {
south: {
split:true,
initialSize: 250,
minSize: 100,
maxSize: 400,
autoScroll:false,
collapsible:true,
titlebar: true,
animate: true,
cmargins: {top:2,bottom:0,right:0,left:0}
},
center: {
autoScroll:false,
titlebar:false
}
});
defaultLayout.beginUpdate();
defaultLayout.add('center', gridPanel);
defaultLayout.add('south', preview);
defaultLayout.restoreState();
defaultLayout.endUpdate(true);
defaultPanel = new YAHOO.ext.NestedLayoutPanel(defaultLayout, 'View Feed');
wideLayout = new YAHOO.ext.BorderLayout('widecontent', {
east: {
split:true,
initialSize: 250,
minSize: 100,
maxSize: 400,
autoScroll:false,
collapsible:true,
titlebar: true,
animate: true,
cmargins: {top:2,bottom:0,right:0,left:0}
},
center: {
autoScroll:false,
titlebar:false
}
});
wideLayout.beginUpdate();
wideLayout.add('center', gridPanel);
wideLayout.add('east', preview);
wideLayout.restoreState();
wideLayout.endUpdate(true);
widePanel = new YAHOO.ext.NestedLayoutPanel(wideLayout, 'View Feed');
// restore any state information
layout.restoreState();
layout.endUpdate();
// load the default feed
//this.loadFeed('http://www.jackslocum.com/yui/feed/');
//this.changeActiveFeed('jvs');
this.showLayout('default');
},
showLayout : function(type){
layout.beginUpdate();
if (this.currentPanel != 'undefined' && this.currentPanel != '' && this.currentPanel != null) {
try {
layout.getRegion('center').remove(feedPanel);
} catch(e) {alert(e);}
}
switch (type) {
case 'wide':
feedPanel = widePanel;
layout.add('center', feedPanel);
this.currentPanel = 'widecontent';
break;
case 'default':
default:
feedPanel = defaultPanel;
layout.add('center', feedPanel);
this.currentPanel = 'defaultcontent';
break;
}
layout.endUpdate(true);
},
The relevant divs are below...
<div id="defaultcontent" class="ylayout-inactive-content">
<div id="feed-grid" class="ylayout-inactive-content ylayout-component-panel ygrid-mso"></div>
<div id="preview" class="ylayout-inactive-content">
<div id="preview-tb"></div>
<div id="preview-body"></div>
</div>
</div>
<div id="widecontent" class="ylayout-inactive-content">
<div id="feed-grid" class="ylayout-inactive-content ylayout-component-panel ygrid-mso"></div>
<div id="preview" class="ylayout-inactive-content">
<div id="preview-tb"></div>
<div id="preview-body"></div>
</div>
</div>
The first call to showLayout() works fine, but subsequent calls leave me with just a white background in the center region, as if wide and default panels were deleted.
Any help would be appreciated.
Thanks
-Matt
I've been playing around with your updated feed-viewer example released with the newest beta. I've been trying to add support for a default view mode and a wide view mode and have come up with a couple issues.
1) A GridPanel/ContentPanel cannot be added to more than one BorderLayout.
2) When I remove a NestedLayoutPanel from a BorderLayout and add a different NestedLayout Panel, the new NestedLayoutPanel doesn't show up properly. May be related to issue 1.
The relevant code is below. Perhaps I am doing something wrong.
<snip>
layout.add('east', new YAHOO.ext.ContentPanel('suggested', {title: 'Suggested Feeds', fitToFrame:true}));
// create the feed grid
this.createGrid();
// create the preview panel and toolbar
previewBody = new YAHOO.ext.Actor('preview-body');
var tb = new YAHOO.ext.Toolbar('preview-tb');
tb.addButton({text: 'View in New Tab', className: 'view-tab', click: this.showInTab.createDelegate(this)});
tb.addSeparator();
tb.addButton({text: 'View in New Window', className: 'view-window', click: this.showInWindow.createDelegate(this)});
preview = new YAHOO.ext.ContentPanel('preview', {title: "Preview", fitToFrame:true, toolbar: tb, resizeEl:'preview-body'});
gridPanel = new YAHOO.ext.GridPanel(grid, 'Feed Articles');
defaultLayout = new YAHOO.ext.BorderLayout('defaultcontent', {
south: {
split:true,
initialSize: 250,
minSize: 100,
maxSize: 400,
autoScroll:false,
collapsible:true,
titlebar: true,
animate: true,
cmargins: {top:2,bottom:0,right:0,left:0}
},
center: {
autoScroll:false,
titlebar:false
}
});
defaultLayout.beginUpdate();
defaultLayout.add('center', gridPanel);
defaultLayout.add('south', preview);
defaultLayout.restoreState();
defaultLayout.endUpdate(true);
defaultPanel = new YAHOO.ext.NestedLayoutPanel(defaultLayout, 'View Feed');
wideLayout = new YAHOO.ext.BorderLayout('widecontent', {
east: {
split:true,
initialSize: 250,
minSize: 100,
maxSize: 400,
autoScroll:false,
collapsible:true,
titlebar: true,
animate: true,
cmargins: {top:2,bottom:0,right:0,left:0}
},
center: {
autoScroll:false,
titlebar:false
}
});
wideLayout.beginUpdate();
wideLayout.add('center', gridPanel);
wideLayout.add('east', preview);
wideLayout.restoreState();
wideLayout.endUpdate(true);
widePanel = new YAHOO.ext.NestedLayoutPanel(wideLayout, 'View Feed');
// restore any state information
layout.restoreState();
layout.endUpdate();
// load the default feed
//this.loadFeed('http://www.jackslocum.com/yui/feed/');
//this.changeActiveFeed('jvs');
this.showLayout('default');
},
showLayout : function(type){
layout.beginUpdate();
if (this.currentPanel != 'undefined' && this.currentPanel != '' && this.currentPanel != null) {
try {
layout.getRegion('center').remove(feedPanel);
} catch(e) {alert(e);}
}
switch (type) {
case 'wide':
feedPanel = widePanel;
layout.add('center', feedPanel);
this.currentPanel = 'widecontent';
break;
case 'default':
default:
feedPanel = defaultPanel;
layout.add('center', feedPanel);
this.currentPanel = 'defaultcontent';
break;
}
layout.endUpdate(true);
},
The relevant divs are below...
<div id="defaultcontent" class="ylayout-inactive-content">
<div id="feed-grid" class="ylayout-inactive-content ylayout-component-panel ygrid-mso"></div>
<div id="preview" class="ylayout-inactive-content">
<div id="preview-tb"></div>
<div id="preview-body"></div>
</div>
</div>
<div id="widecontent" class="ylayout-inactive-content">
<div id="feed-grid" class="ylayout-inactive-content ylayout-component-panel ygrid-mso"></div>
<div id="preview" class="ylayout-inactive-content">
<div id="preview-tb"></div>
<div id="preview-body"></div>
</div>
</div>
The first call to showLayout() works fine, but subsequent calls leave me with just a white background in the center region, as if wide and default panels were deleted.
Any help would be appreciated.
Thanks
-Matt