X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/d41dc04ad17d1d9125fb2cf72db2b4782dbe3a8c..7a654f8d43fdb43d78b63d90528bed6e86b608cc:/examples/portal/portal.js
diff --git a/examples/portal/portal.js b/examples/portal/portal.js
new file mode 100644
index 00000000..ac68c54b
--- /dev/null
+++ b/examples/portal/portal.js
@@ -0,0 +1,150 @@
+/**
+ * @class Ext.app.Portal
+ * @extends Object
+ * A sample portal layout application class.
+ */
+// TODO: Fill in the content panel -- no AccordionLayout at the moment
+// TODO: Fix container drag/scroll support (waiting on Ext.lib.Anim)
+// TODO: Fix Ext.Tool scope being set to the panel header
+// TODO: Drag/drop does not cause a refresh of scroll overflow when needed
+// TODO: Grid portlet throws errors on destroy (grid bug)
+// TODO: Z-index issues during drag
+
+Ext.define('Ext.app.Portal', {
+
+ extend: 'Ext.container.Viewport',
+
+ uses: ['Ext.app.PortalPanel', 'Ext.app.PortalColumn', 'Ext.app.GridPortlet', 'Ext.app.ChartPortlet'],
+
+ getTools: function(){
+ return [{
+ xtype: 'tool',
+ type: 'gear',
+ handler: function(e, target, panelHeader, tool){
+ var portlet = panelHeader.ownerCt;
+ portlet.setLoading('Working...');
+ Ext.defer(function() {
+ portlet.setLoading(false);
+ }, 2000);
+ }
+ }];
+ },
+
+ initComponent: function(){
+ var content = '
'+Ext.example.shortBogusMarkup+'
';
+
+ Ext.apply(this, {
+ id: 'app-viewport',
+ layout: {
+ type: 'border',
+ padding: '0 5 5 5' // pad the layout from the window edges
+ },
+ items: [{
+ id: 'app-header',
+ xtype: 'box',
+ region: 'north',
+ height: 40,
+ html: 'Ext Portal'
+ },{
+ xtype: 'container',
+ region: 'center',
+ layout: 'border',
+ items: [{
+ id: 'app-options',
+ title: 'Options',
+ region: 'west',
+ animCollapse: true,
+ width: 200,
+ minWidth: 150,
+ maxWidth: 400,
+ split: true,
+ collapsible: true,
+ layout: 'accordion',
+ layoutConfig:{
+ animate: true
+ },
+ items: [{
+ html: content,
+ title:'Navigation',
+ autoScroll: true,
+ border: false,
+ iconCls: 'nav'
+ },{
+ title:'Settings',
+ html: content,
+ border: false,
+ autoScroll: true,
+ iconCls: 'settings'
+ }]
+ },{
+ id: 'app-portal',
+ xtype: 'portalpanel',
+ region: 'center',
+ items: [{
+ id: 'col-1',
+ items: [{
+ id: 'portlet-1',
+ title: 'Grid Portlet',
+ tools: this.getTools(),
+ items: Ext.create('Ext.app.GridPortlet'),
+ listeners: {
+ 'close': Ext.bind(this.onPortletClose, this)
+ }
+ },{
+ id: 'portlet-2',
+ title: 'Portlet 2',
+ tools: this.getTools(),
+ html: content,
+ listeners: {
+ 'close': Ext.bind(this.onPortletClose, this)
+ }
+ }]
+ },{
+ id: 'col-2',
+ items: [{
+ id: 'portlet-3',
+ title: 'Portlet 3',
+ tools: this.getTools(),
+ html: ''+Ext.example.bogusMarkup+'
',
+ listeners: {
+ 'close': Ext.bind(this.onPortletClose, this)
+ }
+ }]
+ },{
+ id: 'col-3',
+ items: [{
+ id: 'portlet-4',
+ title: 'Stock Portlet',
+ tools: this.getTools(),
+ items: Ext.create('Ext.app.ChartPortlet'),
+ listeners: {
+ 'close': Ext.bind(this.onPortletClose, this)
+ }
+ }]
+ }]
+ }]
+ }]
+ });
+ this.callParent(arguments);
+ },
+
+ onPortletClose: function(portlet) {
+ this.showMsg('"' + portlet.title + '" was removed');
+ },
+
+ showMsg: function(msg) {
+ var el = Ext.get('app-msg'),
+ msgId = Ext.id();
+
+ this.msgId = msgId;
+ el.update(msg).show();
+
+ Ext.defer(this.clearMsg, 3000, this, [msgId]);
+ },
+
+ clearMsg: function(msgId) {
+ if (msgId === this.msgId) {
+ Ext.get('app-msg').hide();
+ }
+ }
+});