Jan 21, 2009, 5:20 PM
Generic Plugin Examples
Does anyone have any examples of getting a generic plugin working?
<ext:Panel ID="Panel1" runat="server" Title="Main Menu" Height="100" BodyStyle="padding:6px;border-width: 1px;"
Collapsed="True">
<Body>
<ext:Label ID="lblTest" runat="server">
</ext:Label>
</Body>
<Plugins>
<ext:GenericPlugin ID="GenericPlugin1" runat="server" InstanceOf="Ext.ux.CollapsedPanelTitlePlugin">
<CustomConfig>
<ext:ConfigItem Name="expandOnClick" Value="true" />
</CustomConfig>
</ext:GenericPlugin>
</Plugins>
</ext:Panel>
here is the plugin code:
Ext.namespace("Ext.ux");
Ext.ux.CollapsedPanelTitlePlugin = function(expandOnClick) {
this.expandOnClick = (!expandOnClick ? expandOnClick : true);
};
Ext.ux.CollapsedPanelTitlePlugin.prototype = {/** @scope Ext.ux.CollapsedPanelTitlePlugin.prototype */
init: function(p) {
if (p.collapsible) {
var r = p.region;
p.on("render", function() {
var ct = p.ownerCt;
ct.on("afterlayout", function() {
if (ct.layout[r].collapsedEl) {
if (this.expandOnClick) {
ct.layout[r].collapsedEl.on("click", p.expand, p);
ct.layout[r].collapsedEl.setStyle("cursor", "pointer");
}
this.createChild(p);
}
}, this, { single: true });
p.on("collapse", function() {
if (ct.layout[r].collapsedEl && !p.collapsedTitleEl) {
this.createChild(p);
}
}, this, { single: true });
}, this);
}
},
createChild: function(p) {
var r = p.region;
var ct = p.ownerCt;
var title = (p.collapsedTitle ? p.collapsedTitle : p.title);
var html = "";
if (r == "east" || r == "west") {
html += "<ul class=\"vertical\"><li>";
var titleSplit = title.split("");
for (var i = 0; i < titleSplit.length; i++) {
if (titleSplit[i] == " ")
titleSplit[i] = " ";
html += "<em>" + titleSplit[i] + "</em>";
}
html += "</li></ul>";
} else {
html = title;
}
/* var leftPadding = (p.collapsedIcon ? 24 : 4);
var background = (p.collapsedIcon ? "url('" + p.collapsedIcon + "') no-repeat left center;" : "transparent;");
var style = "padding-left:" + leftPadding + "px; margin-left:4px; margin-top:2px; background:" + background;
*/
p.collapsedTitleEl = ct.layout[r].collapsedEl.createChild({
tag: "div",
//style :style,
//cls :"x-panel-collapsed-text",
html: html
});
}
};
<CustomConfig>
<ext:ConfigItem Name="collapsedTitle" Value="false" />
</CustomConfig>
plugins: new Ext.ux.CollapsedPanelTitlePlugin({expandOnClick:true})
<ext:Panel
ID="Panel1"
runat="server"
Title="Main Menu"
Height="100"
BodyStyle="padding:6px;border-width: 1px;"
Collapsed="True">
<Body>
<ext:Label ID="lblTest" runat="server" />
</Body>
<Plugins>
<ext:GenericPlugin ID="GenericPlugin1" runat="server" InstanceOf="Ext.ux.CollapsedPanelTitlePlugin">
<CustomConfig>
<ext:ConfigItem Name="expandOnClick" Value="true" />
</CustomConfig>
</ext:GenericPlugin>
</Plugins>
</ext:Panel>
// Old
Ext.ux.CollapsedPanelTitlePlugin = function(expandOnClick) {
this.expandOnClick = (!expandOnClick ? expandOnClick: true);
};
// New
Ext.ux.CollapsedPanelTitlePlugin = function(config) {
Ext.apply(this, config);
};
Hope this helps.