lpmp 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +3 -0
- data/README +3 -0
- data/Rakefile +45 -0
- data/bin/lpmp +107 -0
- data/config/help.yaml +1 -0
- data/config/hosts.yaml +2 -0
- data/config/log.yaml +1 -0
- data/config/memcache.yaml +5 -0
- data/erb/index.erb +62 -0
- data/lib/bg_pull/caichen.rb +199 -0
- data/lib/bg_pull/lpmp.rb +45 -0
- data/lib/exception.rb +8 -0
- data/lib/lpmp.rb +53 -0
- data/lib/pull/lpmp.rb +355 -0
- data/lib/remote_lmp.rb +129 -0
- data/lib/utils.rb +14 -0
- data/lib/xq_push/caichen.rb +174 -0
- data/lib/xq_push/lpmp.rb +96 -0
- data/log/lpmp1st.log +1 -0
- data/public/css/ext-portal.css +40 -0
- data/public/css/lpmp.css +6 -0
- data/public/designer/caichen.epj +1 -0
- data/public/designer/hostmonitor.epj +1 -0
- data/public/ext-3.0.0/INCLUDE_ORDER.txt +35 -0
- data/public/ext-3.0.0/adapter/ext/ext-base-debug.js +3589 -0
- data/public/ext-3.0.0/adapter/ext/ext-base.js +7 -0
- data/public/ext-3.0.0/adapter/jquery/ext-jquery-adapter-debug.js +2292 -0
- data/public/ext-3.0.0/adapter/jquery/ext-jquery-adapter.js +7 -0
- data/public/ext-3.0.0/adapter/prototype/ext-prototype-adapter-debug.js +2346 -0
- data/public/ext-3.0.0/adapter/prototype/ext-prototype-adapter.js +7 -0
- data/public/ext-3.0.0/adapter/yui/ext-yui-adapter-debug.js +2136 -0
- data/public/ext-3.0.0/adapter/yui/ext-yui-adapter.js +7 -0
- data/public/ext-3.0.0/ext-all-debug.js +65610 -0
- data/public/ext-3.0.0/ext-all.js +11 -0
- data/public/ext-3.0.0/license.txt +42 -0
- data/public/ext-3.0.0/pkgs/cmp-foundation-debug.js +11287 -0
- data/public/ext-3.0.0/pkgs/cmp-foundation.js +7 -0
- data/public/ext-3.0.0/pkgs/data-foundation-debug.js +3853 -0
- data/public/ext-3.0.0/pkgs/data-foundation.js +7 -0
- data/public/ext-3.0.0/pkgs/data-grouping-debug.js +139 -0
- data/public/ext-3.0.0/pkgs/data-grouping.js +7 -0
- data/public/ext-3.0.0/pkgs/data-json-debug.js +582 -0
- data/public/ext-3.0.0/pkgs/data-json.js +7 -0
- data/public/ext-3.0.0/pkgs/data-list-views-debug.js +1278 -0
- data/public/ext-3.0.0/pkgs/data-list-views.js +7 -0
- data/public/ext-3.0.0/pkgs/data-xml-debug.js +234 -0
- data/public/ext-3.0.0/pkgs/data-xml.js +7 -0
- data/public/ext-3.0.0/pkgs/direct-debug.js +1121 -0
- data/public/ext-3.0.0/pkgs/direct.js +7 -0
- data/public/ext-3.0.0/pkgs/ext-dd-debug.js +4567 -0
- data/public/ext-3.0.0/pkgs/ext-dd.js +7 -0
- data/public/ext-3.0.0/pkgs/ext-foundation-debug.js +13417 -0
- data/public/ext-3.0.0/pkgs/ext-foundation.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-buttons-debug.js +1060 -0
- data/public/ext-3.0.0/pkgs/pkg-buttons.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-charts-debug.js +1621 -0
- data/public/ext-3.0.0/pkgs/pkg-charts.js +10 -0
- data/public/ext-3.0.0/pkgs/pkg-forms-debug.js +7661 -0
- data/public/ext-3.0.0/pkgs/pkg-forms.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-editor-debug.js +560 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-editor.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-foundation-debug.js +4765 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-foundation.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-grouping-debug.js +517 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-grouping.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-property-debug.js +370 -0
- data/public/ext-3.0.0/pkgs/pkg-grid-property.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-history-debug.js +203 -0
- data/public/ext-3.0.0/pkgs/pkg-history.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-menu-debug.js +1628 -0
- data/public/ext-3.0.0/pkgs/pkg-menu.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-tabs-debug.js +1100 -0
- data/public/ext-3.0.0/pkgs/pkg-tabs.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-tips-debug.js +994 -0
- data/public/ext-3.0.0/pkgs/pkg-tips.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-toolbars-debug.js +1374 -0
- data/public/ext-3.0.0/pkgs/pkg-toolbars.js +7 -0
- data/public/ext-3.0.0/pkgs/pkg-tree-debug.js +4522 -0
- data/public/ext-3.0.0/pkgs/pkg-tree.js +7 -0
- data/public/ext-3.0.0/pkgs/resizable-debug.js +760 -0
- data/public/ext-3.0.0/pkgs/resizable.js +7 -0
- data/public/ext-3.0.0/pkgs/state-debug.js +274 -0
- data/public/ext-3.0.0/pkgs/state.js +7 -0
- data/public/ext-3.0.0/pkgs/window-debug.js +1888 -0
- data/public/ext-3.0.0/pkgs/window.js +7 -0
- data/public/ext-3.0.0/resources/charts.swf +0 -0
- data/public/ext-3.0.0/resources/css/README.txt +3 -0
- data/public/ext-3.0.0/resources/css/ext-all-notheme.css +5345 -0
- data/public/ext-3.0.0/resources/css/ext-all.css +6990 -0
- data/public/ext-3.0.0/resources/css/reset-min.css +7 -0
- data/public/ext-3.0.0/resources/css/structure/borders.css +54 -0
- data/public/ext-3.0.0/resources/css/structure/box.css +80 -0
- data/public/ext-3.0.0/resources/css/structure/button.css +440 -0
- data/public/ext-3.0.0/resources/css/structure/combo.css +45 -0
- data/public/ext-3.0.0/resources/css/structure/core.css +326 -0
- data/public/ext-3.0.0/resources/css/structure/date-picker.css +265 -0
- data/public/ext-3.0.0/resources/css/structure/dd.css +61 -0
- data/public/ext-3.0.0/resources/css/structure/debug.css +26 -0
- data/public/ext-3.0.0/resources/css/structure/dialog.css +62 -0
- data/public/ext-3.0.0/resources/css/structure/editor.css +92 -0
- data/public/ext-3.0.0/resources/css/structure/form.css +562 -0
- data/public/ext-3.0.0/resources/css/structure/grid.css +552 -0
- data/public/ext-3.0.0/resources/css/structure/layout.css +296 -0
- data/public/ext-3.0.0/resources/css/structure/list-view.css +85 -0
- data/public/ext-3.0.0/resources/css/structure/menu.css +205 -0
- data/public/ext-3.0.0/resources/css/structure/panel-reset.css +130 -0
- data/public/ext-3.0.0/resources/css/structure/panel.css +468 -0
- data/public/ext-3.0.0/resources/css/structure/progress.css +42 -0
- data/public/ext-3.0.0/resources/css/structure/qtips.css +153 -0
- data/public/ext-3.0.0/resources/css/structure/reset.css +7 -0
- data/public/ext-3.0.0/resources/css/structure/resizable.css +149 -0
- data/public/ext-3.0.0/resources/css/structure/slider.css +103 -0
- data/public/ext-3.0.0/resources/css/structure/tabs.css +372 -0
- data/public/ext-3.0.0/resources/css/structure/toolbar.css +259 -0
- data/public/ext-3.0.0/resources/css/structure/tree.css +203 -0
- data/public/ext-3.0.0/resources/css/structure/window.css +222 -0
- data/public/ext-3.0.0/resources/css/visual/borders.css +25 -0
- data/public/ext-3.0.0/resources/css/visual/box.css +74 -0
- data/public/ext-3.0.0/resources/css/visual/button.css +94 -0
- data/public/ext-3.0.0/resources/css/visual/combo.css +43 -0
- data/public/ext-3.0.0/resources/css/visual/core.css +76 -0
- data/public/ext-3.0.0/resources/css/visual/date-picker.css +143 -0
- data/public/ext-3.0.0/resources/css/visual/dd.css +29 -0
- data/public/ext-3.0.0/resources/css/visual/debug.css +24 -0
- data/public/ext-3.0.0/resources/css/visual/dialog.css +34 -0
- data/public/ext-3.0.0/resources/css/visual/editor.css +13 -0
- data/public/ext-3.0.0/resources/css/visual/form.css +117 -0
- data/public/ext-3.0.0/resources/css/visual/grid.css +272 -0
- data/public/ext-3.0.0/resources/css/visual/layout.css +53 -0
- data/public/ext-3.0.0/resources/css/visual/list-view.css +37 -0
- data/public/ext-3.0.0/resources/css/visual/menu.css +82 -0
- data/public/ext-3.0.0/resources/css/visual/panel.css +87 -0
- data/public/ext-3.0.0/resources/css/visual/progress.css +32 -0
- data/public/ext-3.0.0/resources/css/visual/qtips.css +44 -0
- data/public/ext-3.0.0/resources/css/visual/resizable.css +43 -0
- data/public/ext-3.0.0/resources/css/visual/slider.css +21 -0
- data/public/ext-3.0.0/resources/css/visual/tabs.css +119 -0
- data/public/ext-3.0.0/resources/css/visual/toolbar.css +103 -0
- data/public/ext-3.0.0/resources/css/visual/tree.css +157 -0
- data/public/ext-3.0.0/resources/css/visual/window.css +86 -0
- data/public/ext-3.0.0/resources/css/xtheme-blue.css +1652 -0
- data/public/ext-3.0.0/resources/expressinstall.swf +0 -0
- data/public/ext-3.0.0/resources/images/default/box/corners-blue.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/corners.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/l-blue.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/l.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/r-blue.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/r.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/tb-blue.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/box/tb.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/arrow.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/btn.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/group-cs.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/group-lr.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/group-tb.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/s-arrow-b-noline.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/s-arrow-b.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/s-arrow-bo.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/s-arrow-noline.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/s-arrow-o.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/button/s-arrow.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/dd/drop-add.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/dd/drop-no.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/dd/drop-yes.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/editor/tb-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/checkbox.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/clear-trigger.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/clear-trigger.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/form/date-trigger.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/date-trigger.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/form/error-tip-corners.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/exclamation.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/radio.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/search-trigger.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/search-trigger.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/form/text-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/trigger-tpl.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/trigger.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/form/trigger.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/gradient-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/arrow-left-white.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/arrow-right-white.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/col-move-bottom.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/col-move-top.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/columns.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/dirty.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/done.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/drop-no.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/drop-yes.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/footer-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid-blue-hd.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid-blue-split.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid-hrow.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid-loading.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid-split.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid-vista-hd.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid3-hd-btn.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid3-hrow-over.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid3-hrow.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid3-special-col-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/grid3-special-col-sel-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/group-by.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/group-collapse.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/group-expand-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/group-expand.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hd-pop.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hmenu-asc.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hmenu-desc.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hmenu-lock.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hmenu-lock.png +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hmenu-unlock.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/hmenu-unlock.png +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/invalid_line.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/loading.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/mso-hd.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/nowait.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-first-disabled.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-first.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-last-disabled.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-last.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-next-disabled.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-next.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-prev-disabled.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/page-prev.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/pick-button.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/refresh.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/row-check-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/row-expand-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/row-over.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/row-sel.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/sort-hd.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/sort_asc.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/sort_desc.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/grid/wait.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/collapse.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/expand.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/gradient-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/mini-bottom.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/mini-left.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/mini-right.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/mini-top.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/ns-collapse.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/ns-expand.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/panel-close.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/panel-title-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/panel-title-light-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/stick.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/stuck.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/tab-close-on.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/layout/tab-close.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/menu/checked.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/menu/group-checked.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/menu/item-over.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/menu/menu-parent.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/menu/menu.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/menu/unchecked.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/corners-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/left-right.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/light-hd.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/tool-sprite-tpl.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/tool-sprites.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/tools-sprites-trans.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/top-bottom.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/top-bottom.png +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/white-corners-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/white-left-right.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/panel/white-top-bottom.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/progress/progress-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/qtip/bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/qtip/close.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/qtip/tip-anchor-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/qtip/tip-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/s.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shadow-c.png +0 -0
- data/public/ext-3.0.0/resources/images/default/shadow-lr.png +0 -0
- data/public/ext-3.0.0/resources/images/default/shadow.png +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/blue-loading.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/calendar.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/glass-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/hd-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/large-loading.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/left-btn.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/loading-balls.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/right-btn.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/shared/warning.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/e-handle-dark.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/e-handle.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/ne-handle-dark.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/ne-handle.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/nw-handle-dark.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/nw-handle.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/s-handle-dark.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/s-handle.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/se-handle-dark.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/se-handle.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/square.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/sw-handle-dark.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/sizer/sw-handle.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/slider/slider-bg.png +0 -0
- data/public/ext-3.0.0/resources/images/default/slider/slider-thumb.png +0 -0
- data/public/ext-3.0.0/resources/images/default/slider/slider-v-bg.png +0 -0
- data/public/ext-3.0.0/resources/images/default/slider/slider-v-thumb.png +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/scroll-left.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/scroll-right.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/scroller-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-inactive-left-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-inactive-right-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-left-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-right-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-close.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-strip-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-strip-bg.png +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tab-strip-btm-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tabs/tabs-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/btn-arrow-light.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/btn-arrow.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/btn-over-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/gray-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/more.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/tb-bg.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/tb-btn-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/tb-xl-btn-sprite.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/toolbar/tb-xl-sep.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/arrows.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/drop-add.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/drop-between.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/drop-no.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/drop-over.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/drop-under.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/drop-yes.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-end-minus-nl.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-end-minus.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-end-plus-nl.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-end-plus.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-end.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-line.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-minus-nl.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-minus.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-plus-nl.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow-plus.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/elbow.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/folder-open.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/folder.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/leaf.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/loading.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/tree/s.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/window/icon-error.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/window/icon-info.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/window/icon-question.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/window/icon-warning.gif +0 -0
- data/public/ext-3.0.0/resources/images/default/window/left-corners.png +0 -0
- data/public/ext-3.0.0/resources/images/default/window/left-corners.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/window/left-right.png +0 -0
- data/public/ext-3.0.0/resources/images/default/window/left-right.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/window/right-corners.png +0 -0
- data/public/ext-3.0.0/resources/images/default/window/right-corners.psd +0 -0
- data/public/ext-3.0.0/resources/images/default/window/top-bottom.png +0 -0
- data/public/ext-3.0.0/resources/images/default/window/top-bottom.psd +0 -0
- data/public/ext-3.0.0/resources/images/icon/chart.gif +0 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-ajax.js +371 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-anim-extra.js +301 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-anim.js +477 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-begin.js +18 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-dom.js +157 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-end.js +21 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-event.js +453 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-point.js +17 -0
- data/public/ext-3.0.0/src/adapter/core/ext-base-region.js +81 -0
- data/public/ext-3.0.0/src/adapter/ext-base-dom-more.js +9 -0
- data/public/ext-3.0.0/src/adapter/jquery-bridge.js +546 -0
- data/public/ext-3.0.0/src/adapter/prototype-bridge.js +600 -0
- data/public/ext-3.0.0/src/adapter/yui-bridge.js +390 -0
- data/public/ext-3.0.0/src/core/CompositeElement.js +136 -0
- data/public/ext-3.0.0/src/core/CompositeElementLite-more.js +102 -0
- data/public/ext-3.0.0/src/core/DomHelper-more.js +179 -0
- data/public/ext-3.0.0/src/core/Element-more.js +192 -0
- data/public/ext-3.0.0/src/core/Element.alignment.js +370 -0
- data/public/ext-3.0.0/src/core/Element.dd.js +46 -0
- data/public/ext-3.0.0/src/core/Element.fx-more.js +152 -0
- data/public/ext-3.0.0/src/core/Element.insertion-more.js +52 -0
- data/public/ext-3.0.0/src/core/Element.keys.js +48 -0
- data/public/ext-3.0.0/src/core/Element.legacy.js +42 -0
- data/public/ext-3.0.0/src/core/Element.position-more.js +165 -0
- data/public/ext-3.0.0/src/core/Element.scroll-more.js +110 -0
- data/public/ext-3.0.0/src/core/Element.style-more.js +318 -0
- data/public/ext-3.0.0/src/core/Error.js +81 -0
- data/public/ext-3.0.0/src/core/EventManager-more.js +334 -0
- data/public/ext-3.0.0/src/core/Ext-more.js +669 -0
- data/public/ext-3.0.0/src/core/Template-more.js +115 -0
- data/public/ext-3.0.0/src/core/core/CompositeElementLite.js +197 -0
- data/public/ext-3.0.0/src/core/core/DomHelper.js +378 -0
- data/public/ext-3.0.0/src/core/core/DomQuery.js +826 -0
- data/public/ext-3.0.0/src/core/core/Element.fx.js +324 -0
- data/public/ext-3.0.0/src/core/core/Element.insertion.js +147 -0
- data/public/ext-3.0.0/src/core/core/Element.js +945 -0
- data/public/ext-3.0.0/src/core/core/Element.position.js +303 -0
- data/public/ext-3.0.0/src/core/core/Element.scroll.js +58 -0
- data/public/ext-3.0.0/src/core/core/Element.style.js +439 -0
- data/public/ext-3.0.0/src/core/core/Element.traversal.js +176 -0
- data/public/ext-3.0.0/src/core/core/EventManager.js +623 -0
- data/public/ext-3.0.0/src/core/core/Ext.js +922 -0
- data/public/ext-3.0.0/src/core/core/Fx.js +1115 -0
- data/public/ext-3.0.0/src/core/core/Template.js +185 -0
- data/public/ext-3.0.0/src/data/Api.js +210 -0
- data/public/ext-3.0.0/src/data/ArrayReader.js +102 -0
- data/public/ext-3.0.0/src/data/ArrayStore.js +70 -0
- data/public/ext-3.0.0/src/data/DataField.js +249 -0
- data/public/ext-3.0.0/src/data/DataProxy.js +427 -0
- data/public/ext-3.0.0/src/data/DataReader.js +160 -0
- data/public/ext-3.0.0/src/data/DataWriter.js +201 -0
- data/public/ext-3.0.0/src/data/DirectProxy.js +141 -0
- data/public/ext-3.0.0/src/data/DirectStore.js +52 -0
- data/public/ext-3.0.0/src/data/GroupingStore.js +139 -0
- data/public/ext-3.0.0/src/data/HttpProxy.js +276 -0
- data/public/ext-3.0.0/src/data/JsonReader.js +311 -0
- data/public/ext-3.0.0/src/data/JsonStore.js +49 -0
- data/public/ext-3.0.0/src/data/JsonWriter.js +77 -0
- data/public/ext-3.0.0/src/data/MemoryProxy.js +69 -0
- data/public/ext-3.0.0/src/data/Record.js +400 -0
- data/public/ext-3.0.0/src/data/ScriptTagProxy.js +279 -0
- data/public/ext-3.0.0/src/data/SortTypes.js +91 -0
- data/public/ext-3.0.0/src/data/Store.js +1492 -0
- data/public/ext-3.0.0/src/data/StoreMgr.js +72 -0
- data/public/ext-3.0.0/src/data/Tree.js +785 -0
- data/public/ext-3.0.0/src/data/XmlReader.js +128 -0
- data/public/ext-3.0.0/src/data/XmlStore.js +75 -0
- data/public/ext-3.0.0/src/data/XmlWriter.js +45 -0
- data/public/ext-3.0.0/src/data/core/Connection.js +575 -0
- data/public/ext-3.0.0/src/dd/DDCore.js +2992 -0
- data/public/ext-3.0.0/src/dd/DragSource.js +365 -0
- data/public/ext-3.0.0/src/dd/DragTracker.js +217 -0
- data/public/ext-3.0.0/src/dd/DragZone.js +133 -0
- data/public/ext-3.0.0/src/dd/DropTarget.js +115 -0
- data/public/ext-3.0.0/src/dd/DropZone.js +262 -0
- data/public/ext-3.0.0/src/dd/Registry.js +127 -0
- data/public/ext-3.0.0/src/dd/ScrollManager.js +201 -0
- data/public/ext-3.0.0/src/dd/StatusProxy.js +171 -0
- data/public/ext-3.0.0/src/debug.js +906 -0
- data/public/ext-3.0.0/src/direct/Direct.js +235 -0
- data/public/ext-3.0.0/src/direct/Event.js +34 -0
- data/public/ext-3.0.0/src/direct/JsonProvider.js +45 -0
- data/public/ext-3.0.0/src/direct/PollingProvider.js +151 -0
- data/public/ext-3.0.0/src/direct/Provider.js +110 -0
- data/public/ext-3.0.0/src/direct/RemotingProvider.js +373 -0
- data/public/ext-3.0.0/src/direct/Transaction.js +32 -0
- data/public/ext-3.0.0/src/locale/ext-lang-af.js +184 -0
- data/public/ext-3.0.0/src/locale/ext-lang-bg.js +278 -0
- data/public/ext-3.0.0/src/locale/ext-lang-ca.js +315 -0
- data/public/ext-3.0.0/src/locale/ext-lang-cs.js +293 -0
- data/public/ext-3.0.0/src/locale/ext-lang-da.js +296 -0
- data/public/ext-3.0.0/src/locale/ext-lang-de.js +326 -0
- data/public/ext-3.0.0/src/locale/ext-lang-el_GR.js +309 -0
- data/public/ext-3.0.0/src/locale/ext-lang-en.js +335 -0
- data/public/ext-3.0.0/src/locale/ext-lang-en_GB.js +315 -0
- data/public/ext-3.0.0/src/locale/ext-lang-es.js +318 -0
- data/public/ext-3.0.0/src/locale/ext-lang-fa.js +272 -0
- data/public/ext-3.0.0/src/locale/ext-lang-fi.js +302 -0
- data/public/ext-3.0.0/src/locale/ext-lang-fr.js +335 -0
- data/public/ext-3.0.0/src/locale/ext-lang-fr_CA.js +218 -0
- data/public/ext-3.0.0/src/locale/ext-lang-gr.js +175 -0
- data/public/ext-3.0.0/src/locale/ext-lang-he.js +292 -0
- data/public/ext-3.0.0/src/locale/ext-lang-hr.js +295 -0
- data/public/ext-3.0.0/src/locale/ext-lang-hu.js +296 -0
- data/public/ext-3.0.0/src/locale/ext-lang-id.js +302 -0
- data/public/ext-3.0.0/src/locale/ext-lang-it.js +295 -0
- data/public/ext-3.0.0/src/locale/ext-lang-ja.js +318 -0
- data/public/ext-3.0.0/src/locale/ext-lang-ko.js +267 -0
- data/public/ext-3.0.0/src/locale/ext-lang-lt.js +333 -0
- data/public/ext-3.0.0/src/locale/ext-lang-lv.js +176 -0
- data/public/ext-3.0.0/src/locale/ext-lang-mk.js +176 -0
- data/public/ext-3.0.0/src/locale/ext-lang-nl.js +323 -0
- data/public/ext-3.0.0/src/locale/ext-lang-no_NB.js +294 -0
- data/public/ext-3.0.0/src/locale/ext-lang-no_NN.js +294 -0
- data/public/ext-3.0.0/src/locale/ext-lang-pl.js +304 -0
- data/public/ext-3.0.0/src/locale/ext-lang-pt.js +260 -0
- data/public/ext-3.0.0/src/locale/ext-lang-pt_BR.js +302 -0
- data/public/ext-3.0.0/src/locale/ext-lang-pt_PT.js +298 -0
- data/public/ext-3.0.0/src/locale/ext-lang-ro.js +295 -0
- data/public/ext-3.0.0/src/locale/ext-lang-ru.js +319 -0
- data/public/ext-3.0.0/src/locale/ext-lang-sk.js +182 -0
- data/public/ext-3.0.0/src/locale/ext-lang-sl.js +176 -0
- data/public/ext-3.0.0/src/locale/ext-lang-sr.js +179 -0
- data/public/ext-3.0.0/src/locale/ext-lang-sr_RS.js +178 -0
- data/public/ext-3.0.0/src/locale/ext-lang-sv_SE.js +178 -0
- data/public/ext-3.0.0/src/locale/ext-lang-th.js +294 -0
- data/public/ext-3.0.0/src/locale/ext-lang-tr.js +306 -0
- data/public/ext-3.0.0/src/locale/ext-lang-ukr.js +258 -0
- data/public/ext-3.0.0/src/locale/ext-lang-vn.js +181 -0
- data/public/ext-3.0.0/src/locale/ext-lang-zh_CN.js +174 -0
- data/public/ext-3.0.0/src/locale/ext-lang-zh_TW.js +178 -0
- data/public/ext-3.0.0/src/state/CookieProvider.js +91 -0
- data/public/ext-3.0.0/src/state/Provider.js +127 -0
- data/public/ext-3.0.0/src/state/StateManager.js +69 -0
- data/public/ext-3.0.0/src/util/CSS.js +161 -0
- data/public/ext-3.0.0/src/util/ClickRepeater.js +200 -0
- data/public/ext-3.0.0/src/util/Cookies.js +96 -0
- data/public/ext-3.0.0/src/util/Date.js +1317 -0
- data/public/ext-3.0.0/src/util/Format.js +356 -0
- data/public/ext-3.0.0/src/util/History.js +203 -0
- data/public/ext-3.0.0/src/util/KeyMap.js +242 -0
- data/public/ext-3.0.0/src/util/KeyNav.js +161 -0
- data/public/ext-3.0.0/src/util/MixedCollection.js +576 -0
- data/public/ext-3.0.0/src/util/Observable-more.js +178 -0
- data/public/ext-3.0.0/src/util/TextMetrics.js +131 -0
- data/public/ext-3.0.0/src/util/UpdateManager.js +536 -0
- data/public/ext-3.0.0/src/util/XTemplate.js +379 -0
- data/public/ext-3.0.0/src/util/core/DelayedTask.js +68 -0
- data/public/ext-3.0.0/src/util/core/JSON.js +174 -0
- data/public/ext-3.0.0/src/util/core/Observable.js +483 -0
- data/public/ext-3.0.0/src/util/core/TaskMgr.js +174 -0
- data/public/ext-3.0.0/src/widgets/Action.js +252 -0
- data/public/ext-3.0.0/src/widgets/BoxComponent.js +519 -0
- data/public/ext-3.0.0/src/widgets/Button.js +762 -0
- data/public/ext-3.0.0/src/widgets/ButtonGroup.js +103 -0
- data/public/ext-3.0.0/src/widgets/ColorPalette.js +148 -0
- data/public/ext-3.0.0/src/widgets/Component.js +1540 -0
- data/public/ext-3.0.0/src/widgets/ComponentMgr.js +159 -0
- data/public/ext-3.0.0/src/widgets/Container.js +894 -0
- data/public/ext-3.0.0/src/widgets/CycleButton.js +188 -0
- data/public/ext-3.0.0/src/widgets/DataView.js +749 -0
- data/public/ext-3.0.0/src/widgets/DatePicker.js +771 -0
- data/public/ext-3.0.0/src/widgets/Editor.js +385 -0
- data/public/ext-3.0.0/src/widgets/Layer.js +466 -0
- data/public/ext-3.0.0/src/widgets/LoadMask.js +123 -0
- data/public/ext-3.0.0/src/widgets/MessageBox.js +626 -0
- data/public/ext-3.0.0/src/widgets/PagingToolbar.js +502 -0
- data/public/ext-3.0.0/src/widgets/Panel.js +1772 -0
- data/public/ext-3.0.0/src/widgets/PanelDD.js +154 -0
- data/public/ext-3.0.0/src/widgets/ProgressBar.js +289 -0
- data/public/ext-3.0.0/src/widgets/Resizable.js +760 -0
- data/public/ext-3.0.0/src/widgets/Shadow.js +192 -0
- data/public/ext-3.0.0/src/widgets/Slider.js +426 -0
- data/public/ext-3.0.0/src/widgets/SplitBar.js +436 -0
- data/public/ext-3.0.0/src/widgets/SplitButton.js +124 -0
- data/public/ext-3.0.0/src/widgets/TabPanel.js +1100 -0
- data/public/ext-3.0.0/src/widgets/Toolbar.js +781 -0
- data/public/ext-3.0.0/src/widgets/Viewport.js +124 -0
- data/public/ext-3.0.0/src/widgets/Window.js +941 -0
- data/public/ext-3.0.0/src/widgets/WindowManager.js +187 -0
- data/public/ext-3.0.0/src/widgets/chart/Chart.js +721 -0
- data/public/ext-3.0.0/src/widgets/chart/EventProxy.js +20 -0
- data/public/ext-3.0.0/src/widgets/chart/FlashComponent.js +117 -0
- data/public/ext-3.0.0/src/widgets/chart/swfobject.js +783 -0
- data/public/ext-3.0.0/src/widgets/form/Action.js +626 -0
- data/public/ext-3.0.0/src/widgets/form/BasicForm.js +735 -0
- data/public/ext-3.0.0/src/widgets/form/Checkbox.js +177 -0
- data/public/ext-3.0.0/src/widgets/form/CheckboxGroup.js +419 -0
- data/public/ext-3.0.0/src/widgets/form/Combo.js +1232 -0
- data/public/ext-3.0.0/src/widgets/form/DateField.js +389 -0
- data/public/ext-3.0.0/src/widgets/form/DisplayField.js +98 -0
- data/public/ext-3.0.0/src/widgets/form/Field.js +640 -0
- data/public/ext-3.0.0/src/widgets/form/FieldSet.js +305 -0
- data/public/ext-3.0.0/src/widgets/form/Form.js +335 -0
- data/public/ext-3.0.0/src/widgets/form/Hidden.js +39 -0
- data/public/ext-3.0.0/src/widgets/form/HtmlEditor.js +1179 -0
- data/public/ext-3.0.0/src/widgets/form/Label.js +64 -0
- data/public/ext-3.0.0/src/widgets/form/NumberField.js +139 -0
- data/public/ext-3.0.0/src/widgets/form/Radio.js +81 -0
- data/public/ext-3.0.0/src/widgets/form/RadioGroup.js +116 -0
- data/public/ext-3.0.0/src/widgets/form/TextArea.js +117 -0
- data/public/ext-3.0.0/src/widgets/form/TextField.js +491 -0
- data/public/ext-3.0.0/src/widgets/form/TimeField.js +146 -0
- data/public/ext-3.0.0/src/widgets/form/TriggerField.js +328 -0
- data/public/ext-3.0.0/src/widgets/form/VTypes.js +135 -0
- data/public/ext-3.0.0/src/widgets/grid/AbstractSelectionModel.js +57 -0
- data/public/ext-3.0.0/src/widgets/grid/CellSelectionModel.js +262 -0
- data/public/ext-3.0.0/src/widgets/grid/CheckboxSelectionModel.js +103 -0
- data/public/ext-3.0.0/src/widgets/grid/Column.js +406 -0
- data/public/ext-3.0.0/src/widgets/grid/ColumnDD.js +199 -0
- data/public/ext-3.0.0/src/widgets/grid/ColumnModel.js +592 -0
- data/public/ext-3.0.0/src/widgets/grid/ColumnSplitDD.js +62 -0
- data/public/ext-3.0.0/src/widgets/grid/EditorGrid.js +291 -0
- data/public/ext-3.0.0/src/widgets/grid/GridDD.js +95 -0
- data/public/ext-3.0.0/src/widgets/grid/GridEditor.js +21 -0
- data/public/ext-3.0.0/src/widgets/grid/GridPanel.js +952 -0
- data/public/ext-3.0.0/src/widgets/grid/GridView.js +1776 -0
- data/public/ext-3.0.0/src/widgets/grid/GroupingView.js +517 -0
- data/public/ext-3.0.0/src/widgets/grid/PropertyGrid.js +370 -0
- data/public/ext-3.0.0/src/widgets/grid/RowNumberer.js +61 -0
- data/public/ext-3.0.0/src/widgets/grid/RowSelectionModel.js +530 -0
- data/public/ext-3.0.0/src/widgets/layout/AbsoluteLayout.js +82 -0
- data/public/ext-3.0.0/src/widgets/layout/AccordionLayout.js +177 -0
- data/public/ext-3.0.0/src/widgets/layout/AnchorLayout.js +200 -0
- data/public/ext-3.0.0/src/widgets/layout/BorderLayout.js +1108 -0
- data/public/ext-3.0.0/src/widgets/layout/BoxLayout.js +417 -0
- data/public/ext-3.0.0/src/widgets/layout/CardLayout.js +127 -0
- data/public/ext-3.0.0/src/widgets/layout/ColumnLayout.js +130 -0
- data/public/ext-3.0.0/src/widgets/layout/ContainerLayout.js +215 -0
- data/public/ext-3.0.0/src/widgets/layout/FitLayout.js +48 -0
- data/public/ext-3.0.0/src/widgets/layout/FormLayout.js +266 -0
- data/public/ext-3.0.0/src/widgets/layout/TableLayout.js +194 -0
- data/public/ext-3.0.0/src/widgets/list/ColumnResizer.js +123 -0
- data/public/ext-3.0.0/src/widgets/list/ListView.js +357 -0
- data/public/ext-3.0.0/src/widgets/list/Sorter.js +70 -0
- data/public/ext-3.0.0/src/widgets/menu/BaseItem.js +160 -0
- data/public/ext-3.0.0/src/widgets/menu/CheckItem.js +114 -0
- data/public/ext-3.0.0/src/widgets/menu/ColorMenu.js +72 -0
- data/public/ext-3.0.0/src/widgets/menu/DateMenu.js +90 -0
- data/public/ext-3.0.0/src/widgets/menu/Item.js +211 -0
- data/public/ext-3.0.0/src/widgets/menu/Menu.js +733 -0
- data/public/ext-3.0.0/src/widgets/menu/MenuMgr.js +211 -0
- data/public/ext-3.0.0/src/widgets/menu/Separator.js +46 -0
- data/public/ext-3.0.0/src/widgets/menu/TextItem.js +46 -0
- data/public/ext-3.0.0/src/widgets/tips/QuickTip.js +207 -0
- data/public/ext-3.0.0/src/widgets/tips/QuickTips.js +159 -0
- data/public/ext-3.0.0/src/widgets/tips/Tip.js +157 -0
- data/public/ext-3.0.0/src/widgets/tips/ToolTip.js +492 -0
- data/public/ext-3.0.0/src/widgets/tree/AsyncTreeNode.js +114 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeDragZone.js +82 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeDropZone.js +321 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeEditor.js +160 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeEventModel.js +169 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeFilter.js +114 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeLoader.js +342 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeNode.js +546 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeNodeUI.js +633 -0
- data/public/ext-3.0.0/src/widgets/tree/TreePanel.js +918 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeSelectionModel.js +315 -0
- data/public/ext-3.0.0/src/widgets/tree/TreeSorter.js +106 -0
- data/public/js/ext-portal.js +235 -0
- data/public/js/global.js +7 -0
- data/public/js/outerframe.js +47 -0
- data/public/js/portal.js +713 -0
- data/public/js/test_chart.js +152 -0
- data/test/config.rb +62 -0
- data/test/config/hosts.yaml +5 -0
- data/test/config/log.yaml +1 -0
- data/test/config/memcache.yaml +5 -0
- data/test/exception.rb +39 -0
- data/test/method_missing.rb +14 -0
- data/test/module.rb +39 -0
- data/test/remote_lmp.rb +126 -0
- data/test/sinatra.rb +29 -0
- data/test/sinatra_base.rb +16 -0
- metadata +690 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Ext JS Library 3.0.0
|
|
3
|
+
* Copyright(c) 2006-2009 Ext JS, LLC
|
|
4
|
+
* licensing@extjs.com
|
|
5
|
+
* http://www.extjs.com/license
|
|
6
|
+
*/
|
|
7
|
+
Ext.Tip=Ext.extend(Ext.Panel,{minWidth:40,maxWidth:300,shadow:"sides",defaultAlign:"tl-bl?",autoRender:true,quickShowInterval:250,frame:true,hidden:true,baseCls:"x-tip",floating:{shadow:true,shim:true,useDisplay:true,constrain:false},autoHeight:true,closeAction:"hide",initComponent:function(){Ext.Tip.superclass.initComponent.call(this);if(this.closable&&!this.title){this.elements+=",header"}},afterRender:function(){Ext.Tip.superclass.afterRender.call(this);if(this.closable){this.addTool({id:"close",handler:this[this.closeAction],scope:this})}},showAt:function(a){Ext.Tip.superclass.show.call(this);if(this.measureWidth!==false&&(!this.initialConfig||typeof this.initialConfig.width!="number")){this.doAutoWidth()}if(this.constrainPosition){a=this.el.adjustForConstraints(a)}this.setPagePosition(a[0],a[1])},doAutoWidth:function(){var a=this.body.getTextWidth();if(this.title){a=Math.max(a,this.header.child("span").getTextWidth(this.title))}a+=this.getFrameWidth()+(this.closable?20:0)+this.body.getPadding("lr");this.setWidth(a.constrain(this.minWidth,this.maxWidth));if(Ext.isIE7&&!this.repainted){this.el.repaint();this.repainted=true}},showBy:function(a,b){if(!this.rendered){this.render(Ext.getBody())}this.showAt(this.el.getAlignToXY(a,b||this.defaultAlign))},initDraggable:function(){this.dd=new Ext.Tip.DD(this,typeof this.draggable=="boolean"?null:this.draggable);this.header.addClass("x-tip-draggable")}});Ext.Tip.DD=function(b,a){Ext.apply(this,a);this.tip=b;Ext.Tip.DD.superclass.constructor.call(this,b.el.id,"WindowDD-"+b.id);this.setHandleElId(b.header.id);this.scroll=false};Ext.extend(Ext.Tip.DD,Ext.dd.DD,{moveOnly:true,scroll:false,headerOffsets:[100,25],startDrag:function(){this.tip.el.disableShadow()},endDrag:function(a){this.tip.el.enableShadow(true)}});Ext.ToolTip=Ext.extend(Ext.Tip,{showDelay:500,hideDelay:200,dismissDelay:5000,trackMouse:false,anchorToTarget:true,anchorOffset:0,targetCounter:0,constrainPosition:false,initComponent:function(){Ext.ToolTip.superclass.initComponent.call(this);this.lastActive=new Date();this.initTarget(this.target);this.origAnchor=this.anchor},onRender:function(b,a){Ext.ToolTip.superclass.onRender.call(this,b,a);this.anchorCls="x-tip-anchor-"+this.getAnchorPosition();this.anchorEl=this.el.createChild({cls:"x-tip-anchor "+this.anchorCls})},afterRender:function(){Ext.ToolTip.superclass.afterRender.call(this);this.anchorEl.setStyle("z-index",this.el.getZIndex()+1)},initTarget:function(b){var a;if((a=Ext.get(b))){if(this.target){this.target=Ext.get(this.target);this.target.un("mouseover",this.onTargetOver,this);this.target.un("mouseout",this.onTargetOut,this);this.target.un("mousemove",this.onMouseMove,this)}this.mon(a,{mouseover:this.onTargetOver,mouseout:this.onTargetOut,mousemove:this.onMouseMove,scope:this});this.target=a}if(this.anchor){this.anchorTarget=this.target}},onMouseMove:function(b){var a=this.delegate?b.getTarget(this.delegate):this.triggerElement=true;if(a){this.targetXY=b.getXY();if(a===this.triggerElement){if(!this.hidden&&this.trackMouse){this.setPagePosition(this.getTargetXY())}}else{this.hide();this.lastActive=new Date(0);this.onTargetOver(b)}}else{if(!this.closable&&this.isVisible()){this.hide()}}},getTargetXY:function(){if(this.anchor){this.targetCounter++;var c=this.getOffsets();var i=(this.anchorToTarget&&!this.trackMouse)?this.el.getAlignToXY(this.anchorTarget,this.getAnchorAlign()):this.targetXY;var a=Ext.lib.Dom.getViewWidth()-5;var f=Ext.lib.Dom.getViewHeight()-5;var h=(document.documentElement.scrollLeft||document.body.scrollLeft||0)+5;var g=(document.documentElement.scrollTop||document.body.scrollTop||0)+5;var b=[i[0]+c[0],i[1]+c[1]];var e=this.getSize();this.anchorEl.removeClass(this.anchorCls);if(this.targetCounter<2){if(b[0]<h){if(this.anchorToTarget){this.defaultAlign="l-r";if(this.mouseOffset){this.mouseOffset[0]*=-1}}this.anchor="left";return this.getTargetXY()}if(b[0]+e.width>a){if(this.anchorToTarget){this.defaultAlign="r-l";if(this.mouseOffset){this.mouseOffset[0]*=-1}}this.anchor="right";return this.getTargetXY()}if(b[1]<g){if(this.anchorToTarget){this.defaultAlign="t-b";if(this.mouseOffset){this.mouseOffset[1]*=-1}}this.anchor="top";return this.getTargetXY()}if(b[1]+e.height>f){if(this.anchorToTarget){this.defaultAlign="b-t";if(this.mouseOffset){this.mouseOffset[1]*=-1}}this.anchor="bottom";return this.getTargetXY()}}this.anchorCls="x-tip-anchor-"+this.getAnchorPosition();this.anchorEl.addClass(this.anchorCls);this.targetCounter=0;return b}else{var d=this.getMouseOffset();return[this.targetXY[0]+d[0],this.targetXY[1]+d[1]]}},getMouseOffset:function(){var a=this.anchor?[0,0]:[15,18];if(this.mouseOffset){a[0]+=this.mouseOffset[0];a[1]+=this.mouseOffset[1]}return a},getAnchorPosition:function(){if(this.anchor){this.tipAnchor=this.anchor.charAt(0)}else{var a=this.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/);if(!a){throw"AnchorTip.defaultAlign is invalid"}this.tipAnchor=a[1].charAt(0)}switch(this.tipAnchor){case"t":return"top";case"b":return"bottom";case"r":return"right"}return"left"},getAnchorAlign:function(){switch(this.anchor){case"top":return"tl-bl";case"left":return"tl-tr";case"right":return"tr-tl";default:return"bl-tl"}},getOffsets:function(){var b,a=this.getAnchorPosition().charAt(0);if(this.anchorToTarget&&!this.trackMouse){switch(a){case"t":b=[0,9];break;case"b":b=[0,-13];break;case"r":b=[-13,0];break;default:b=[9,0];break}}else{switch(a){case"t":b=[-15-this.anchorOffset,30];break;case"b":b=[-19-this.anchorOffset,-13-this.el.dom.offsetHeight];break;case"r":b=[-15-this.el.dom.offsetWidth,-13-this.anchorOffset];break;default:b=[25,-13-this.anchorOffset];break}}var c=this.getMouseOffset();b[0]+=c[0];b[1]+=c[1];return b},onTargetOver:function(b){if(this.disabled||b.within(this.target.dom,true)){return}var a=b.getTarget(this.delegate);if(a){this.triggerElement=a;this.clearTimer("hide");this.targetXY=b.getXY();this.delayShow()}},delayShow:function(){if(this.hidden&&!this.showTimer){if(this.lastActive.getElapsed()<this.quickShowInterval){this.show()}else{this.showTimer=this.show.defer(this.showDelay,this)}}else{if(!this.hidden&&this.autoHide!==false){this.show()}}},onTargetOut:function(a){if(this.disabled||a.within(this.target.dom,true)){return}this.clearTimer("show");if(this.autoHide!==false){this.delayHide()}},delayHide:function(){if(!this.hidden&&!this.hideTimer){this.hideTimer=this.hide.defer(this.hideDelay,this)}},hide:function(){this.clearTimer("dismiss");this.lastActive=new Date();if(this.anchorEl){this.anchorEl.hide()}Ext.ToolTip.superclass.hide.call(this);delete this.triggerElement},show:function(){if(this.anchor){this.showAt([-1000,-1000]);this.origConstrainPosition=this.constrainPosition;this.constrainPosition=false;this.anchor=this.origAnchor}this.showAt(this.getTargetXY());if(this.anchor){this.syncAnchor();this.anchorEl.show();this.constrainPosition=this.origConstrainPosition}else{this.anchorEl.hide()}},showAt:function(a){this.lastActive=new Date();this.clearTimers();Ext.ToolTip.superclass.showAt.call(this,a);if(this.dismissDelay&&this.autoHide!==false){this.dismissTimer=this.hide.defer(this.dismissDelay,this)}},syncAnchor:function(){var a,b,c;switch(this.tipAnchor.charAt(0)){case"t":a="b";b="tl";c=[20+this.anchorOffset,2];break;case"r":a="l";b="tr";c=[-2,11+this.anchorOffset];break;case"b":a="t";b="bl";c=[20+this.anchorOffset,-2];break;default:a="r";b="tl";c=[2,11+this.anchorOffset];break}this.anchorEl.alignTo(this.el,a+"-"+b,c)},setPagePosition:function(a,b){Ext.ToolTip.superclass.setPagePosition.call(this,a,b);if(this.anchor){this.syncAnchor()}},clearTimer:function(a){a=a+"Timer";clearTimeout(this[a]);delete this[a]},clearTimers:function(){this.clearTimer("show");this.clearTimer("dismiss");this.clearTimer("hide")},onShow:function(){Ext.ToolTip.superclass.onShow.call(this);Ext.getDoc().on("mousedown",this.onDocMouseDown,this)},onHide:function(){Ext.ToolTip.superclass.onHide.call(this);Ext.getDoc().un("mousedown",this.onDocMouseDown,this)},onDocMouseDown:function(a){if(this.autoHide!==true&&!this.closable&&!a.within(this.el.dom)){this.disable();this.enable.defer(100,this)}},onDisable:function(){this.clearTimers();this.hide()},adjustPosition:function(a,d){if(this.contstrainPosition){var c=this.targetXY[1],b=this.getSize().height;if(d<=c&&(d+b)>=c){d=c-b-5}}return{x:a,y:d}},onDestroy:function(){Ext.getDoc().un("mousedown",this.onDocMouseDown,this);Ext.ToolTip.superclass.onDestroy.call(this)}});Ext.QuickTip=Ext.extend(Ext.ToolTip,{interceptTitles:false,tagConfig:{namespace:"ext",attribute:"qtip",width:"qwidth",target:"target",title:"qtitle",hide:"hide",cls:"qclass",align:"qalign",anchor:"anchor"},initComponent:function(){this.target=this.target||Ext.getDoc();this.targets=this.targets||{};Ext.QuickTip.superclass.initComponent.call(this)},register:function(e){var g=Ext.isArray(e)?e:arguments;for(var f=0,a=g.length;f<a;f++){var k=g[f];var h=k.target;if(h){if(Ext.isArray(h)){for(var d=0,b=h.length;d<b;d++){this.targets[Ext.id(h[d])]=k}}else{this.targets[Ext.id(h)]=k}}}},unregister:function(a){delete this.targets[Ext.id(a)]},cancelShow:function(b){var a=this.activeTarget;b=Ext.get(b).dom;if(this.isVisible()){if(a&&a.el==b){this.hide()}}else{if(a&&a.el==b){this.clearTimer("show")}}},onTargetOver:function(h){if(this.disabled){return}this.targetXY=h.getXY();var c=h.getTarget();if(!c||c.nodeType!==1||c==document||c==document.body){return}if(this.activeTarget&&c==this.activeTarget.el){this.clearTimer("hide");this.show();return}if(c&&this.targets[c.id]){this.activeTarget=this.targets[c.id];this.activeTarget.el=c;this.anchor=this.activeTarget.anchor;if(this.anchor){this.anchorTarget=c}this.delayShow();return}var f,g=Ext.fly(c),b=this.tagConfig;var d=b.namespace;if(this.interceptTitles&&c.title){f=c.title;c.qtip=f;c.removeAttribute("title");h.preventDefault()}else{f=c.qtip||g.getAttribute(b.attribute,d)}if(f){var a=g.getAttribute(b.hide,d);this.activeTarget={el:c,text:f,width:g.getAttribute(b.width,d),autoHide:a!="user"&&a!=="false",title:g.getAttribute(b.title,d),cls:g.getAttribute(b.cls,d),align:g.getAttribute(b.align,d)};this.anchor=g.getAttribute(b.anchor,d);if(this.anchor){this.anchorTarget=c}this.delayShow()}},onTargetOut:function(a){this.clearTimer("show");if(this.autoHide!==false){this.delayHide()}},showAt:function(b){var a=this.activeTarget;if(a){if(!this.rendered){this.render(Ext.getBody());this.activeTarget=a}if(a.width){this.setWidth(a.width);this.body.setWidth(this.adjustBodyWidth(a.width-this.getFrameWidth()));this.measureWidth=false}else{this.measureWidth=true}this.setTitle(a.title||"");this.body.update(a.text);this.autoHide=a.autoHide;this.dismissDelay=a.dismissDelay||this.dismissDelay;if(this.lastCls){this.el.removeClass(this.lastCls);delete this.lastCls}if(a.cls){this.el.addClass(a.cls);this.lastCls=a.cls}if(this.anchor){this.constrainPosition=false}else{if(a.align){b=this.el.getAlignToXY(a.el,a.align);this.constrainPosition=false}else{this.constrainPosition=true}}}Ext.QuickTip.superclass.showAt.call(this,b)},hide:function(){delete this.activeTarget;Ext.QuickTip.superclass.hide.call(this)}});Ext.QuickTips=function(){var b,a=[];return{init:function(c){if(!b){if(!Ext.isReady){Ext.onReady(function(){Ext.QuickTips.init(c)});return}b=new Ext.QuickTip({elements:"header,body"});if(c!==false){b.render(Ext.getBody())}}},enable:function(){if(b){a.pop();if(a.length<1){b.enable()}}},disable:function(){if(b){b.disable()}a.push(1)},isEnabled:function(){return b!==undefined&&!b.disabled},getQuickTip:function(){return b},register:function(){b.register.apply(b,arguments)},unregister:function(){b.unregister.apply(b,arguments)},tips:function(){b.register.apply(b,arguments)}}}();
|
|
@@ -0,0 +1,1374 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Ext JS Library 3.0.0
|
|
3
|
+
* Copyright(c) 2006-2009 Ext JS, LLC
|
|
4
|
+
* licensing@extjs.com
|
|
5
|
+
* http://www.extjs.com/license
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* @class Ext.layout.ToolbarLayout
|
|
9
|
+
* @extends Ext.layout.ContainerLayout
|
|
10
|
+
* Layout manager implicitly used by Ext.Toolbar.
|
|
11
|
+
*/
|
|
12
|
+
Ext.layout.ToolbarLayout = Ext.extend(Ext.layout.ContainerLayout, {
|
|
13
|
+
monitorResize : true,
|
|
14
|
+
triggerWidth : 18,
|
|
15
|
+
lastOverflow : false,
|
|
16
|
+
|
|
17
|
+
noItemsMenuText : '<div class="x-toolbar-no-items">(None)</div>',
|
|
18
|
+
// private
|
|
19
|
+
onLayout : function(ct, target){
|
|
20
|
+
if(!this.leftTr){
|
|
21
|
+
target.addClass('x-toolbar-layout-ct');
|
|
22
|
+
target.insertHtml('beforeEnd',
|
|
23
|
+
'<table cellspacing="0" class="x-toolbar-ct"><tbody><tr><td class="x-toolbar-left" align="left"><table cellspacing="0"><tbody><tr class="x-toolbar-left-row"></tr></tbody></table></td><td class="x-toolbar-right" align="right"><table cellspacing="0" class="x-toolbar-right-ct"><tbody><tr><td><table cellspacing="0"><tbody><tr class="x-toolbar-right-row"></tr></tbody></table></td><td><table cellspacing="0"><tbody><tr class="x-toolbar-extras-row"></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table>');
|
|
24
|
+
this.leftTr = target.child('tr.x-toolbar-left-row', true);
|
|
25
|
+
this.rightTr = target.child('tr.x-toolbar-right-row', true);
|
|
26
|
+
this.extrasTr = target.child('tr.x-toolbar-extras-row', true);
|
|
27
|
+
}
|
|
28
|
+
var side = this.leftTr;
|
|
29
|
+
var pos = 0;
|
|
30
|
+
|
|
31
|
+
var items = ct.items.items;
|
|
32
|
+
for(var i = 0, len = items.length, c; i < len; i++, pos++) {
|
|
33
|
+
c = items[i];
|
|
34
|
+
if(c.isFill){
|
|
35
|
+
side = this.rightTr;
|
|
36
|
+
pos = -1;
|
|
37
|
+
}else if(!c.rendered){
|
|
38
|
+
c.render(this.insertCell(c, side, pos));
|
|
39
|
+
}else{
|
|
40
|
+
if(!c.xtbHidden && !this.isValidParent(c, side.childNodes[pos])){
|
|
41
|
+
var td = this.insertCell(c, side, pos);
|
|
42
|
+
td.appendChild(c.getDomPositionEl().dom);
|
|
43
|
+
c.container = Ext.get(td);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//strip extra empty cells
|
|
48
|
+
this.cleanup(this.leftTr);
|
|
49
|
+
this.cleanup(this.rightTr);
|
|
50
|
+
this.cleanup(this.extrasTr);
|
|
51
|
+
this.fitToSize(target);
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
cleanup : function(row){
|
|
55
|
+
var cn = row.childNodes;
|
|
56
|
+
for(var i = cn.length-1, c; i >= 0 && (c = cn[i]); i--){
|
|
57
|
+
if(!c.firstChild){
|
|
58
|
+
row.removeChild(c);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
|
|
63
|
+
insertCell : function(c, side, pos){
|
|
64
|
+
var td = document.createElement('td');
|
|
65
|
+
td.className='x-toolbar-cell';
|
|
66
|
+
side.insertBefore(td, side.childNodes[pos]||null);
|
|
67
|
+
return td;
|
|
68
|
+
},
|
|
69
|
+
|
|
70
|
+
hideItem : function(item){
|
|
71
|
+
var h = (this.hiddens = this.hiddens || []);
|
|
72
|
+
h.push(item);
|
|
73
|
+
item.xtbHidden = true;
|
|
74
|
+
item.xtbWidth = item.getDomPositionEl().dom.parentNode.offsetWidth;
|
|
75
|
+
item.hide();
|
|
76
|
+
},
|
|
77
|
+
|
|
78
|
+
unhideItem : function(item){
|
|
79
|
+
item.show();
|
|
80
|
+
item.xtbHidden = false;
|
|
81
|
+
this.hiddens.remove(item);
|
|
82
|
+
if(this.hiddens.length < 1){
|
|
83
|
+
delete this.hiddens;
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
|
|
87
|
+
getItemWidth : function(c){
|
|
88
|
+
return c.hidden ? (c.xtbWidth || 0) : c.getDomPositionEl().dom.parentNode.offsetWidth;
|
|
89
|
+
},
|
|
90
|
+
|
|
91
|
+
fitToSize : function(t){
|
|
92
|
+
if(this.container.enableOverflow === false){
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
var w = t.dom.clientWidth;
|
|
96
|
+
var lw = this.lastWidth || 0;
|
|
97
|
+
this.lastWidth = w;
|
|
98
|
+
var iw = t.dom.firstChild.offsetWidth;
|
|
99
|
+
|
|
100
|
+
var clipWidth = w - this.triggerWidth;
|
|
101
|
+
var hideIndex = -1;
|
|
102
|
+
|
|
103
|
+
if(iw > w || (this.hiddens && w >= lw)){
|
|
104
|
+
var i, items = this.container.items.items, len = items.length, c;
|
|
105
|
+
var loopWidth = 0;
|
|
106
|
+
for(i = 0; i < len; i++) {
|
|
107
|
+
c = items[i];
|
|
108
|
+
if(!c.isFill){
|
|
109
|
+
loopWidth += this.getItemWidth(c);
|
|
110
|
+
if(loopWidth > clipWidth){
|
|
111
|
+
if(!c.xtbHidden){
|
|
112
|
+
this.hideItem(c);
|
|
113
|
+
}
|
|
114
|
+
}else{
|
|
115
|
+
if(c.xtbHidden){
|
|
116
|
+
this.unhideItem(c);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if(this.hiddens){
|
|
123
|
+
this.initMore();
|
|
124
|
+
if(!this.lastOverflow){
|
|
125
|
+
this.container.fireEvent('overflowchange', this.container, true);
|
|
126
|
+
this.lastOverflow = true;
|
|
127
|
+
}
|
|
128
|
+
}else if(this.more){
|
|
129
|
+
this.clearMenu();
|
|
130
|
+
this.more.destroy();
|
|
131
|
+
delete this.more;
|
|
132
|
+
if(this.lastOverflow){
|
|
133
|
+
this.container.fireEvent('overflowchange', this.container, false);
|
|
134
|
+
this.lastOverflow = false;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
|
|
139
|
+
createMenuConfig : function(c, hideOnClick){
|
|
140
|
+
var cfg = Ext.apply({}, c.initialConfig),
|
|
141
|
+
group = c.toggleGroup;
|
|
142
|
+
|
|
143
|
+
Ext.apply(cfg, {
|
|
144
|
+
text: c.overflowText || c.text,
|
|
145
|
+
iconCls: c.iconCls,
|
|
146
|
+
icon: c.icon,
|
|
147
|
+
itemId: c.itemId,
|
|
148
|
+
disabled: c.disabled,
|
|
149
|
+
handler: c.handler,
|
|
150
|
+
scope: c.scope,
|
|
151
|
+
menu: c.menu,
|
|
152
|
+
hideOnClick: hideOnClick
|
|
153
|
+
});
|
|
154
|
+
if(group || c.enableToggle){
|
|
155
|
+
Ext.apply(cfg, {
|
|
156
|
+
group: group,
|
|
157
|
+
checked: c.pressed,
|
|
158
|
+
listeners: {
|
|
159
|
+
checkchange: function(item, checked){
|
|
160
|
+
c.toggle(checked);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
delete cfg.xtype;
|
|
166
|
+
delete cfg.id;
|
|
167
|
+
return cfg;
|
|
168
|
+
},
|
|
169
|
+
|
|
170
|
+
// private
|
|
171
|
+
addComponentToMenu : function(m, c){
|
|
172
|
+
if(c instanceof Ext.Toolbar.Separator){
|
|
173
|
+
m.add('-');
|
|
174
|
+
}else if(Ext.isFunction(c.isXType)){
|
|
175
|
+
if(c.isXType('splitbutton')){
|
|
176
|
+
m.add(this.createMenuConfig(c, true));
|
|
177
|
+
}else if(c.isXType('button')){
|
|
178
|
+
m.add(this.createMenuConfig(c, !c.menu));
|
|
179
|
+
}else if(c.isXType('buttongroup')){
|
|
180
|
+
c.items.each(function(item){
|
|
181
|
+
this.addComponentToMenu(m, item);
|
|
182
|
+
}, this);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
|
|
187
|
+
clearMenu : function(){
|
|
188
|
+
var m = this.moreMenu;
|
|
189
|
+
if(m && m.items){
|
|
190
|
+
this.moreMenu.items.each(function(item){
|
|
191
|
+
delete item.menu;
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
|
|
196
|
+
// private
|
|
197
|
+
beforeMoreShow : function(m){
|
|
198
|
+
var h = this.container.items.items,
|
|
199
|
+
len = h.length,
|
|
200
|
+
c,
|
|
201
|
+
prev,
|
|
202
|
+
needsSep = function(group, item){
|
|
203
|
+
return group.isXType('buttongroup') && !(item instanceof Ext.Toolbar.Separator);
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
this.clearMenu();
|
|
207
|
+
m.removeAll();
|
|
208
|
+
for(var i = 0; i < len; i++){
|
|
209
|
+
c = h[i];
|
|
210
|
+
if(c.xtbHidden){
|
|
211
|
+
if(prev && (needsSep(c, prev) || needsSep(prev, c))){
|
|
212
|
+
m.add('-');
|
|
213
|
+
}
|
|
214
|
+
this.addComponentToMenu(m, c);
|
|
215
|
+
prev = c;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
// put something so the menu isn't empty
|
|
219
|
+
// if no compatible items found
|
|
220
|
+
if(m.items.length < 1){
|
|
221
|
+
m.add(this.noItemsMenuText);
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
|
|
225
|
+
initMore : function(){
|
|
226
|
+
if(!this.more){
|
|
227
|
+
this.moreMenu = new Ext.menu.Menu({
|
|
228
|
+
listeners: {
|
|
229
|
+
beforeshow: this.beforeMoreShow,
|
|
230
|
+
scope: this
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
this.more = new Ext.Button({
|
|
234
|
+
iconCls: 'x-toolbar-more-icon',
|
|
235
|
+
cls: 'x-toolbar-more',
|
|
236
|
+
menu: this.moreMenu
|
|
237
|
+
});
|
|
238
|
+
var td = this.insertCell(this.more, this.extrasTr, 100);
|
|
239
|
+
this.more.render(td);
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
|
|
243
|
+
destroy : function(){
|
|
244
|
+
Ext.destroy(this.more, this.moreMenu);
|
|
245
|
+
Ext.layout.ToolbarLayout.superclass.destroy.call(this);
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* @property activeItem
|
|
249
|
+
* @hide
|
|
250
|
+
*/
|
|
251
|
+
});
|
|
252
|
+
|
|
253
|
+
Ext.Container.LAYOUTS.toolbar = Ext.layout.ToolbarLayout;
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* @class Ext.Toolbar
|
|
257
|
+
* @extends Ext.Container
|
|
258
|
+
* <p>Basic Toolbar class. Although the <tt>{@link Ext.Container#defaultType defaultType}</tt> for Toolbar
|
|
259
|
+
* is <tt>{@link Ext.Button button}</tt>, Toolbar elements (child items for the Toolbar container) may
|
|
260
|
+
* be virtually any type of Component. Toolbar elements can be created explicitly via their constructors,
|
|
261
|
+
* or implicitly via their xtypes, and can be <tt>{@link #add}</tt>ed dynamically.</p>
|
|
262
|
+
* <p>Some items have shortcut strings for creation:</p>
|
|
263
|
+
* <pre>
|
|
264
|
+
<u>Shortcut</u> <u>xtype</u> <u>Class</u> <u>Description</u>
|
|
265
|
+
'->' 'tbfill' {@link Ext.Toolbar.Fill} begin using the right-justified button container
|
|
266
|
+
'-' 'tbseparator' {@link Ext.Toolbar.Separator} add a vertical separator bar between toolbar items
|
|
267
|
+
' ' 'tbspacer' {@link Ext.Toolbar.Spacer} add horiztonal space between elements
|
|
268
|
+
* </pre>
|
|
269
|
+
*
|
|
270
|
+
* Example usage of various elements:
|
|
271
|
+
* <pre><code>
|
|
272
|
+
var tb = new Ext.Toolbar({
|
|
273
|
+
renderTo: document.body,
|
|
274
|
+
width: 600,
|
|
275
|
+
height: 100,
|
|
276
|
+
items: [
|
|
277
|
+
{
|
|
278
|
+
// xtype: 'button', // default for Toolbars, same as 'tbbutton'
|
|
279
|
+
text: 'Button'
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
xtype: 'splitbutton', // same as 'tbsplitbutton'
|
|
283
|
+
text: 'Split Button'
|
|
284
|
+
},
|
|
285
|
+
// begin using the right-justified button container
|
|
286
|
+
'->', // same as {xtype: 'tbfill'}, // Ext.Toolbar.Fill
|
|
287
|
+
{
|
|
288
|
+
xtype: 'textfield',
|
|
289
|
+
name: 'field1',
|
|
290
|
+
emptyText: 'enter search term'
|
|
291
|
+
},
|
|
292
|
+
// add a vertical separator bar between toolbar items
|
|
293
|
+
'-', // same as {xtype: 'tbseparator'} to create Ext.Toolbar.Separator
|
|
294
|
+
'text 1', // same as {xtype: 'tbtext', text: 'text1'} to create Ext.Toolbar.TextItem
|
|
295
|
+
{xtype: 'tbspacer'},// same as ' ' to create Ext.Toolbar.Spacer
|
|
296
|
+
'text 2',
|
|
297
|
+
{xtype: 'tbspacer', width: 50}, // add a 50px space
|
|
298
|
+
'text 3'
|
|
299
|
+
]
|
|
300
|
+
});
|
|
301
|
+
* </code></pre>
|
|
302
|
+
* Example adding a ComboBox within a menu of a button:
|
|
303
|
+
* <pre><code>
|
|
304
|
+
// ComboBox creation
|
|
305
|
+
var combo = new Ext.form.ComboBox({
|
|
306
|
+
store: new Ext.data.ArrayStore({
|
|
307
|
+
autoDestroy: true,
|
|
308
|
+
fields: ['initials', 'fullname'],
|
|
309
|
+
data : [
|
|
310
|
+
['FF', 'Fred Flintstone'],
|
|
311
|
+
['BR', 'Barney Rubble']
|
|
312
|
+
]
|
|
313
|
+
}),
|
|
314
|
+
displayField: 'fullname',
|
|
315
|
+
typeAhead: true,
|
|
316
|
+
mode: 'local',
|
|
317
|
+
forceSelection: true,
|
|
318
|
+
triggerAction: 'all',
|
|
319
|
+
emptyText: 'Select a name...',
|
|
320
|
+
selectOnFocus: true,
|
|
321
|
+
width: 135,
|
|
322
|
+
getListParent: function() {
|
|
323
|
+
return this.el.up('.x-menu');
|
|
324
|
+
},
|
|
325
|
+
iconCls: 'no-icon' //use iconCls if placing within menu to shift to right side of menu
|
|
326
|
+
});
|
|
327
|
+
|
|
328
|
+
// put ComboBox in a Menu
|
|
329
|
+
var menu = new Ext.menu.Menu({
|
|
330
|
+
id: 'mainMenu',
|
|
331
|
+
items: [
|
|
332
|
+
combo // A Field in a Menu
|
|
333
|
+
]
|
|
334
|
+
});
|
|
335
|
+
|
|
336
|
+
// add a Button with the menu
|
|
337
|
+
tb.add({
|
|
338
|
+
text:'Button w/ Menu',
|
|
339
|
+
menu: menu // assign menu by instance
|
|
340
|
+
});
|
|
341
|
+
tb.doLayout();
|
|
342
|
+
* </code></pre>
|
|
343
|
+
* @constructor
|
|
344
|
+
* Creates a new Toolbar
|
|
345
|
+
* @param {Object/Array} config A config object or an array of buttons to <tt>{@link #add}</tt>
|
|
346
|
+
* @xtype toolbar
|
|
347
|
+
*/
|
|
348
|
+
Ext.Toolbar = function(config){
|
|
349
|
+
if(Ext.isArray(config)){
|
|
350
|
+
config = {items: config, layout: 'toolbar'};
|
|
351
|
+
} else {
|
|
352
|
+
config = Ext.apply({
|
|
353
|
+
layout: 'toolbar'
|
|
354
|
+
}, config);
|
|
355
|
+
if(config.buttons) {
|
|
356
|
+
config.items = config.buttons;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
Ext.Toolbar.superclass.constructor.call(this, config);
|
|
360
|
+
};
|
|
361
|
+
|
|
362
|
+
(function(){
|
|
363
|
+
|
|
364
|
+
var T = Ext.Toolbar;
|
|
365
|
+
|
|
366
|
+
Ext.extend(T, Ext.Container, {
|
|
367
|
+
|
|
368
|
+
defaultType: 'button',
|
|
369
|
+
|
|
370
|
+
trackMenus : true,
|
|
371
|
+
internalDefaults: {removeMode: 'container', hideParent: true},
|
|
372
|
+
toolbarCls: 'x-toolbar',
|
|
373
|
+
|
|
374
|
+
initComponent : function(){
|
|
375
|
+
T.superclass.initComponent.call(this);
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* @event overflowchange
|
|
379
|
+
* Fires after the overflow state has changed.
|
|
380
|
+
* @param {Object} c The Container
|
|
381
|
+
* @param {Boolean} lastOverflow overflow state
|
|
382
|
+
*/
|
|
383
|
+
this.addEvents('overflowchange');
|
|
384
|
+
},
|
|
385
|
+
|
|
386
|
+
// private
|
|
387
|
+
onRender : function(ct, position){
|
|
388
|
+
if(!this.el){
|
|
389
|
+
if(!this.autoCreate){
|
|
390
|
+
this.autoCreate = {
|
|
391
|
+
cls: this.toolbarCls + ' x-small-editor'
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
this.el = ct.createChild(Ext.apply({ id: this.id },this.autoCreate), position);
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
|
|
398
|
+
/**
|
|
399
|
+
* Adds element(s) to the toolbar -- this function takes a variable number of
|
|
400
|
+
* arguments of mixed type and adds them to the toolbar.
|
|
401
|
+
* @param {Mixed} arg1 The following types of arguments are all valid:<br />
|
|
402
|
+
* <ul>
|
|
403
|
+
* <li>{@link Ext.Button} config: A valid button config object (equivalent to {@link #addButton})</li>
|
|
404
|
+
* <li>HtmlElement: Any standard HTML element (equivalent to {@link #addElement})</li>
|
|
405
|
+
* <li>Field: Any form field (equivalent to {@link #addField})</li>
|
|
406
|
+
* <li>Item: Any subclass of {@link Ext.Toolbar.Item} (equivalent to {@link #addItem})</li>
|
|
407
|
+
* <li>String: Any generic string (gets wrapped in a {@link Ext.Toolbar.TextItem}, equivalent to {@link #addText}).
|
|
408
|
+
* Note that there are a few special strings that are treated differently as explained next.</li>
|
|
409
|
+
* <li>'-': Creates a separator element (equivalent to {@link #addSeparator})</li>
|
|
410
|
+
* <li>' ': Creates a spacer element (equivalent to {@link #addSpacer})</li>
|
|
411
|
+
* <li>'->': Creates a fill element (equivalent to {@link #addFill})</li>
|
|
412
|
+
* </ul>
|
|
413
|
+
* @param {Mixed} arg2
|
|
414
|
+
* @param {Mixed} etc.
|
|
415
|
+
* @method add
|
|
416
|
+
*/
|
|
417
|
+
|
|
418
|
+
// private
|
|
419
|
+
lookupComponent : function(c){
|
|
420
|
+
if(Ext.isString(c)){
|
|
421
|
+
if(c == '-'){
|
|
422
|
+
c = new T.Separator();
|
|
423
|
+
}else if(c == ' '){
|
|
424
|
+
c = new T.Spacer();
|
|
425
|
+
}else if(c == '->'){
|
|
426
|
+
c = new T.Fill();
|
|
427
|
+
}else{
|
|
428
|
+
c = new T.TextItem(c);
|
|
429
|
+
}
|
|
430
|
+
this.applyDefaults(c);
|
|
431
|
+
}else{
|
|
432
|
+
if(c.isFormField || c.render){ // some kind of form field, some kind of Toolbar.Item
|
|
433
|
+
c = this.constructItem(c);
|
|
434
|
+
}else if(c.tag){ // DomHelper spec
|
|
435
|
+
c = new T.Item({autoEl: c});
|
|
436
|
+
}else if(c.tagName){ // element
|
|
437
|
+
c = new T.Item({el:c});
|
|
438
|
+
}else if(Ext.isObject(c)){ // must be button config?
|
|
439
|
+
c = c.xtype ? this.constructItem(c) : this.constructButton(c);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
return c;
|
|
443
|
+
},
|
|
444
|
+
|
|
445
|
+
// private
|
|
446
|
+
applyDefaults : function(c){
|
|
447
|
+
if(!Ext.isString(c)){
|
|
448
|
+
c = Ext.Toolbar.superclass.applyDefaults.call(this, c);
|
|
449
|
+
var d = this.internalDefaults;
|
|
450
|
+
if(c.events){
|
|
451
|
+
Ext.applyIf(c.initialConfig, d);
|
|
452
|
+
Ext.apply(c, d);
|
|
453
|
+
}else{
|
|
454
|
+
Ext.applyIf(c, d);
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
return c;
|
|
458
|
+
},
|
|
459
|
+
|
|
460
|
+
// private
|
|
461
|
+
constructItem : function(item, type){
|
|
462
|
+
return Ext.create(item, type || this.defaultType);
|
|
463
|
+
},
|
|
464
|
+
|
|
465
|
+
/**
|
|
466
|
+
* Adds a separator
|
|
467
|
+
* @return {Ext.Toolbar.Item} The separator {@link Ext.Toolbar.Item item}
|
|
468
|
+
*/
|
|
469
|
+
addSeparator : function(){
|
|
470
|
+
return this.add(new T.Separator());
|
|
471
|
+
},
|
|
472
|
+
|
|
473
|
+
/**
|
|
474
|
+
* Adds a spacer element
|
|
475
|
+
* @return {Ext.Toolbar.Spacer} The spacer item
|
|
476
|
+
*/
|
|
477
|
+
addSpacer : function(){
|
|
478
|
+
return this.add(new T.Spacer());
|
|
479
|
+
},
|
|
480
|
+
|
|
481
|
+
/**
|
|
482
|
+
* Forces subsequent additions into the float:right toolbar
|
|
483
|
+
*/
|
|
484
|
+
addFill : function(){
|
|
485
|
+
this.add(new T.Fill());
|
|
486
|
+
},
|
|
487
|
+
|
|
488
|
+
/**
|
|
489
|
+
* Adds any standard HTML element to the toolbar
|
|
490
|
+
* @param {Mixed} el The element or id of the element to add
|
|
491
|
+
* @return {Ext.Toolbar.Item} The element's item
|
|
492
|
+
*/
|
|
493
|
+
addElement : function(el){
|
|
494
|
+
return this.addItem(new T.Item({el:el}));
|
|
495
|
+
},
|
|
496
|
+
|
|
497
|
+
/**
|
|
498
|
+
* Adds any Toolbar.Item or subclass
|
|
499
|
+
* @param {Ext.Toolbar.Item} item
|
|
500
|
+
* @return {Ext.Toolbar.Item} The item
|
|
501
|
+
*/
|
|
502
|
+
addItem : function(item){
|
|
503
|
+
return Ext.Toolbar.superclass.add.apply(this, arguments);
|
|
504
|
+
},
|
|
505
|
+
|
|
506
|
+
/**
|
|
507
|
+
* Adds a button (or buttons). See {@link Ext.Button} for more info on the config.
|
|
508
|
+
* @param {Object/Array} config A button config or array of configs
|
|
509
|
+
* @return {Ext.Button/Array}
|
|
510
|
+
*/
|
|
511
|
+
addButton : function(config){
|
|
512
|
+
if(Ext.isArray(config)){
|
|
513
|
+
var buttons = [];
|
|
514
|
+
for(var i = 0, len = config.length; i < len; i++) {
|
|
515
|
+
buttons.push(this.addButton(config[i]));
|
|
516
|
+
}
|
|
517
|
+
return buttons;
|
|
518
|
+
}
|
|
519
|
+
return this.add(this.constructButton(config));
|
|
520
|
+
},
|
|
521
|
+
|
|
522
|
+
/**
|
|
523
|
+
* Adds text to the toolbar
|
|
524
|
+
* @param {String} text The text to add
|
|
525
|
+
* @return {Ext.Toolbar.Item} The element's item
|
|
526
|
+
*/
|
|
527
|
+
addText : function(text){
|
|
528
|
+
return this.addItem(new T.TextItem(text));
|
|
529
|
+
},
|
|
530
|
+
|
|
531
|
+
/**
|
|
532
|
+
* Adds a new element to the toolbar from the passed {@link Ext.DomHelper} config
|
|
533
|
+
* @param {Object} config
|
|
534
|
+
* @return {Ext.Toolbar.Item} The element's item
|
|
535
|
+
*/
|
|
536
|
+
addDom : function(config){
|
|
537
|
+
return this.add(new T.Item({autoEl: config}));
|
|
538
|
+
},
|
|
539
|
+
|
|
540
|
+
/**
|
|
541
|
+
* Adds a dynamically rendered Ext.form field (TextField, ComboBox, etc). Note: the field should not have
|
|
542
|
+
* been rendered yet. For a field that has already been rendered, use {@link #addElement}.
|
|
543
|
+
* @param {Ext.form.Field} field
|
|
544
|
+
* @return {Ext.Toolbar.Item}
|
|
545
|
+
*/
|
|
546
|
+
addField : function(field){
|
|
547
|
+
return this.add(field);
|
|
548
|
+
},
|
|
549
|
+
|
|
550
|
+
/**
|
|
551
|
+
* Inserts any {@link Ext.Toolbar.Item}/{@link Ext.Button} at the specified index.
|
|
552
|
+
* @param {Number} index The index where the item is to be inserted
|
|
553
|
+
* @param {Object/Ext.Toolbar.Item/Ext.Button/Array} item The button, or button config object to be
|
|
554
|
+
* inserted, or an array of buttons/configs.
|
|
555
|
+
* @return {Ext.Button/Item}
|
|
556
|
+
*/
|
|
557
|
+
insertButton : function(index, item){
|
|
558
|
+
if(Ext.isArray(item)){
|
|
559
|
+
var buttons = [];
|
|
560
|
+
for(var i = 0, len = item.length; i < len; i++) {
|
|
561
|
+
buttons.push(this.insertButton(index + i, item[i]));
|
|
562
|
+
}
|
|
563
|
+
return buttons;
|
|
564
|
+
}
|
|
565
|
+
return Ext.Toolbar.superclass.insert.call(this, index, item);
|
|
566
|
+
},
|
|
567
|
+
|
|
568
|
+
// private
|
|
569
|
+
initMenuTracking : function(item){
|
|
570
|
+
if(this.trackMenus && item.menu){
|
|
571
|
+
this.mon(item, {
|
|
572
|
+
'menutriggerover' : this.onButtonTriggerOver,
|
|
573
|
+
'menushow' : this.onButtonMenuShow,
|
|
574
|
+
'menuhide' : this.onButtonMenuHide,
|
|
575
|
+
scope: this
|
|
576
|
+
});
|
|
577
|
+
}
|
|
578
|
+
},
|
|
579
|
+
|
|
580
|
+
// private
|
|
581
|
+
constructButton : function(item){
|
|
582
|
+
var b = item.events ? item : this.constructItem(item, item.split ? 'splitbutton' : this.defaultType);
|
|
583
|
+
this.initMenuTracking(b);
|
|
584
|
+
return b;
|
|
585
|
+
},
|
|
586
|
+
|
|
587
|
+
// private
|
|
588
|
+
onDisable : function(){
|
|
589
|
+
this.items.each(function(item){
|
|
590
|
+
if(item.disable){
|
|
591
|
+
item.disable();
|
|
592
|
+
}
|
|
593
|
+
});
|
|
594
|
+
},
|
|
595
|
+
|
|
596
|
+
// private
|
|
597
|
+
onEnable : function(){
|
|
598
|
+
this.items.each(function(item){
|
|
599
|
+
if(item.enable){
|
|
600
|
+
item.enable();
|
|
601
|
+
}
|
|
602
|
+
});
|
|
603
|
+
},
|
|
604
|
+
|
|
605
|
+
// private
|
|
606
|
+
onButtonTriggerOver : function(btn){
|
|
607
|
+
if(this.activeMenuBtn && this.activeMenuBtn != btn){
|
|
608
|
+
this.activeMenuBtn.hideMenu();
|
|
609
|
+
btn.showMenu();
|
|
610
|
+
this.activeMenuBtn = btn;
|
|
611
|
+
}
|
|
612
|
+
},
|
|
613
|
+
|
|
614
|
+
// private
|
|
615
|
+
onButtonMenuShow : function(btn){
|
|
616
|
+
this.activeMenuBtn = btn;
|
|
617
|
+
},
|
|
618
|
+
|
|
619
|
+
// private
|
|
620
|
+
onButtonMenuHide : function(btn){
|
|
621
|
+
delete this.activeMenuBtn;
|
|
622
|
+
}
|
|
623
|
+
});
|
|
624
|
+
Ext.reg('toolbar', Ext.Toolbar);
|
|
625
|
+
|
|
626
|
+
/**
|
|
627
|
+
* @class Ext.Toolbar.Item
|
|
628
|
+
* @extends Ext.BoxComponent
|
|
629
|
+
* The base class that other non-interacting Toolbar Item classes should extend in order to
|
|
630
|
+
* get some basic common toolbar item functionality.
|
|
631
|
+
* @constructor
|
|
632
|
+
* Creates a new Item
|
|
633
|
+
* @param {HTMLElement} el
|
|
634
|
+
* @xtype tbitem
|
|
635
|
+
*/
|
|
636
|
+
T.Item = Ext.extend(Ext.BoxComponent, {
|
|
637
|
+
hideParent: true, // Hiding a Toolbar.Item hides its containing TD
|
|
638
|
+
enable:Ext.emptyFn,
|
|
639
|
+
disable:Ext.emptyFn,
|
|
640
|
+
focus:Ext.emptyFn
|
|
641
|
+
/**
|
|
642
|
+
* @cfg {String} overflowText Text to be used for the menu if the item is overflowed.
|
|
643
|
+
*/
|
|
644
|
+
});
|
|
645
|
+
Ext.reg('tbitem', T.Item);
|
|
646
|
+
|
|
647
|
+
/**
|
|
648
|
+
* @class Ext.Toolbar.Separator
|
|
649
|
+
* @extends Ext.Toolbar.Item
|
|
650
|
+
* A simple class that adds a vertical separator bar between toolbar items
|
|
651
|
+
* (css class:<tt>'xtb-sep'</tt>). Example usage:
|
|
652
|
+
* <pre><code>
|
|
653
|
+
new Ext.Panel({
|
|
654
|
+
tbar : [
|
|
655
|
+
'Item 1',
|
|
656
|
+
{xtype: 'tbseparator'}, // or '-'
|
|
657
|
+
'Item 2'
|
|
658
|
+
]
|
|
659
|
+
});
|
|
660
|
+
</code></pre>
|
|
661
|
+
* @constructor
|
|
662
|
+
* Creates a new Separator
|
|
663
|
+
* @xtype tbseparator
|
|
664
|
+
*/
|
|
665
|
+
T.Separator = Ext.extend(T.Item, {
|
|
666
|
+
onRender : function(ct, position){
|
|
667
|
+
this.el = ct.createChild({tag:'span', cls:'xtb-sep'}, position);
|
|
668
|
+
}
|
|
669
|
+
});
|
|
670
|
+
Ext.reg('tbseparator', T.Separator);
|
|
671
|
+
|
|
672
|
+
/**
|
|
673
|
+
* @class Ext.Toolbar.Spacer
|
|
674
|
+
* @extends Ext.Toolbar.Item
|
|
675
|
+
* A simple element that adds extra horizontal space between items in a toolbar.
|
|
676
|
+
* By default a 2px wide space is added via css specification:<pre><code>
|
|
677
|
+
.x-toolbar .xtb-spacer {
|
|
678
|
+
width:2px;
|
|
679
|
+
}
|
|
680
|
+
* </code></pre>
|
|
681
|
+
* <p>Example usage:</p>
|
|
682
|
+
* <pre><code>
|
|
683
|
+
new Ext.Panel({
|
|
684
|
+
tbar : [
|
|
685
|
+
'Item 1',
|
|
686
|
+
{xtype: 'tbspacer'}, // or ' '
|
|
687
|
+
'Item 2',
|
|
688
|
+
// space width is also configurable via javascript
|
|
689
|
+
{xtype: 'tbspacer', width: 50}, // add a 50px space
|
|
690
|
+
'Item 3'
|
|
691
|
+
]
|
|
692
|
+
});
|
|
693
|
+
</code></pre>
|
|
694
|
+
* @constructor
|
|
695
|
+
* Creates a new Spacer
|
|
696
|
+
* @xtype tbspacer
|
|
697
|
+
*/
|
|
698
|
+
T.Spacer = Ext.extend(T.Item, {
|
|
699
|
+
/**
|
|
700
|
+
* @cfg {Number} width
|
|
701
|
+
* The width of the spacer in pixels (defaults to 2px via css style <tt>.x-toolbar .xtb-spacer</tt>).
|
|
702
|
+
*/
|
|
703
|
+
|
|
704
|
+
onRender : function(ct, position){
|
|
705
|
+
this.el = ct.createChild({tag:'div', cls:'xtb-spacer', style: this.width?'width:'+this.width+'px':''}, position);
|
|
706
|
+
}
|
|
707
|
+
});
|
|
708
|
+
Ext.reg('tbspacer', T.Spacer);
|
|
709
|
+
|
|
710
|
+
/**
|
|
711
|
+
* @class Ext.Toolbar.Fill
|
|
712
|
+
* @extends Ext.Toolbar.Spacer
|
|
713
|
+
* A non-rendering placeholder item which instructs the Toolbar's Layout to begin using
|
|
714
|
+
* the right-justified button container.
|
|
715
|
+
* <pre><code>
|
|
716
|
+
new Ext.Panel({
|
|
717
|
+
tbar : [
|
|
718
|
+
'Item 1',
|
|
719
|
+
{xtype: 'tbfill'}, // or '->'
|
|
720
|
+
'Item 2'
|
|
721
|
+
]
|
|
722
|
+
});
|
|
723
|
+
</code></pre>
|
|
724
|
+
* @constructor
|
|
725
|
+
* Creates a new Fill
|
|
726
|
+
* @xtype tbfill
|
|
727
|
+
*/
|
|
728
|
+
T.Fill = Ext.extend(T.Item, {
|
|
729
|
+
// private
|
|
730
|
+
render : Ext.emptyFn,
|
|
731
|
+
isFill : true
|
|
732
|
+
});
|
|
733
|
+
Ext.reg('tbfill', T.Fill);
|
|
734
|
+
|
|
735
|
+
/**
|
|
736
|
+
* @class Ext.Toolbar.TextItem
|
|
737
|
+
* @extends Ext.Toolbar.Item
|
|
738
|
+
* A simple class that renders text directly into a toolbar
|
|
739
|
+
* (with css class:<tt>'xtb-text'</tt>). Example usage:
|
|
740
|
+
* <pre><code>
|
|
741
|
+
new Ext.Panel({
|
|
742
|
+
tbar : [
|
|
743
|
+
{xtype: 'tbtext', text: 'Item 1'} // or simply 'Item 1'
|
|
744
|
+
]
|
|
745
|
+
});
|
|
746
|
+
</code></pre>
|
|
747
|
+
* @constructor
|
|
748
|
+
* Creates a new TextItem
|
|
749
|
+
* @param {String/Object} text A text string, or a config object containing a <tt>text</tt> property
|
|
750
|
+
* @xtype tbtext
|
|
751
|
+
*/
|
|
752
|
+
T.TextItem = Ext.extend(T.Item, {
|
|
753
|
+
constructor: function(config){
|
|
754
|
+
if (Ext.isString(config)) {
|
|
755
|
+
config = { autoEl: {cls: 'xtb-text', html: config }};
|
|
756
|
+
} else {
|
|
757
|
+
config.autoEl = {cls: 'xtb-text', html: config.text || ''};
|
|
758
|
+
}
|
|
759
|
+
T.TextItem.superclass.constructor.call(this, config);
|
|
760
|
+
},
|
|
761
|
+
/**
|
|
762
|
+
* Updates this item's text, setting the text to be used as innerHTML.
|
|
763
|
+
* @param {String} t The text to display (html accepted).
|
|
764
|
+
*/
|
|
765
|
+
setText : function(t) {
|
|
766
|
+
if (this.rendered) {
|
|
767
|
+
this.el.dom.innerHTML = t;
|
|
768
|
+
} else {
|
|
769
|
+
this.autoEl.html = t;
|
|
770
|
+
}
|
|
771
|
+
}
|
|
772
|
+
});
|
|
773
|
+
Ext.reg('tbtext', T.TextItem);
|
|
774
|
+
|
|
775
|
+
// backwards compat
|
|
776
|
+
T.Button = Ext.extend(Ext.Button, {});
|
|
777
|
+
T.SplitButton = Ext.extend(Ext.SplitButton, {});
|
|
778
|
+
Ext.reg('tbbutton', T.Button);
|
|
779
|
+
Ext.reg('tbsplit', T.SplitButton);
|
|
780
|
+
|
|
781
|
+
})();
|
|
782
|
+
/**
|
|
783
|
+
* @class Ext.ButtonGroup
|
|
784
|
+
* @extends Ext.Panel
|
|
785
|
+
* Container for a group of buttons. Example usage:
|
|
786
|
+
* <pre><code>
|
|
787
|
+
var p = new Ext.Panel({
|
|
788
|
+
title: 'Panel with Button Group',
|
|
789
|
+
width: 300,
|
|
790
|
+
height:200,
|
|
791
|
+
renderTo: document.body,
|
|
792
|
+
html: 'whatever',
|
|
793
|
+
tbar: [{
|
|
794
|
+
xtype: 'buttongroup',
|
|
795
|
+
{@link #columns}: 3,
|
|
796
|
+
title: 'Clipboard',
|
|
797
|
+
items: [{
|
|
798
|
+
text: 'Paste',
|
|
799
|
+
scale: 'large',
|
|
800
|
+
rowspan: 3, iconCls: 'add',
|
|
801
|
+
iconAlign: 'top',
|
|
802
|
+
cls: 'x-btn-as-arrow'
|
|
803
|
+
},{
|
|
804
|
+
xtype:'splitbutton',
|
|
805
|
+
text: 'Menu Button',
|
|
806
|
+
scale: 'large',
|
|
807
|
+
rowspan: 3,
|
|
808
|
+
iconCls: 'add',
|
|
809
|
+
iconAlign: 'top',
|
|
810
|
+
arrowAlign:'bottom',
|
|
811
|
+
menu: [{text: 'Menu Item 1'}]
|
|
812
|
+
},{
|
|
813
|
+
xtype:'splitbutton', text: 'Cut', iconCls: 'add16', menu: [{text: 'Cut Menu Item'}]
|
|
814
|
+
},{
|
|
815
|
+
text: 'Copy', iconCls: 'add16'
|
|
816
|
+
},{
|
|
817
|
+
text: 'Format', iconCls: 'add16'
|
|
818
|
+
}]
|
|
819
|
+
}]
|
|
820
|
+
});
|
|
821
|
+
* </code></pre>
|
|
822
|
+
* @xtype buttongroup
|
|
823
|
+
*/
|
|
824
|
+
Ext.ButtonGroup = Ext.extend(Ext.Panel, {
|
|
825
|
+
/**
|
|
826
|
+
* @cfg {Number} columns The <tt>columns</tt> configuration property passed to the
|
|
827
|
+
* {@link #layout configured layout manager}. See {@link Ext.layout.TableLayout#columns}.
|
|
828
|
+
*/
|
|
829
|
+
/**
|
|
830
|
+
* @cfg {String} baseCls Defaults to <tt>'x-btn-group'</tt>. See {@link Ext.Panel#baseCls}.
|
|
831
|
+
*/
|
|
832
|
+
baseCls: 'x-btn-group',
|
|
833
|
+
/**
|
|
834
|
+
* @cfg {String} layout Defaults to <tt>'table'</tt>. See {@link Ext.Container#layout}.
|
|
835
|
+
*/
|
|
836
|
+
layout:'table',
|
|
837
|
+
defaultType: 'button',
|
|
838
|
+
/**
|
|
839
|
+
* @cfg {Boolean} frame Defaults to <tt>true</tt>. See {@link Ext.Panel#frame}.
|
|
840
|
+
*/
|
|
841
|
+
frame: true,
|
|
842
|
+
internalDefaults: {removeMode: 'container', hideParent: true},
|
|
843
|
+
|
|
844
|
+
initComponent : function(){
|
|
845
|
+
this.layoutConfig = this.layoutConfig || {};
|
|
846
|
+
Ext.applyIf(this.layoutConfig, {
|
|
847
|
+
columns : this.columns
|
|
848
|
+
});
|
|
849
|
+
if(!this.title){
|
|
850
|
+
this.addClass('x-btn-group-notitle');
|
|
851
|
+
}
|
|
852
|
+
this.on('afterlayout', this.onAfterLayout, this);
|
|
853
|
+
Ext.ButtonGroup.superclass.initComponent.call(this);
|
|
854
|
+
},
|
|
855
|
+
|
|
856
|
+
applyDefaults : function(c){
|
|
857
|
+
c = Ext.ButtonGroup.superclass.applyDefaults.call(this, c);
|
|
858
|
+
var d = this.internalDefaults;
|
|
859
|
+
if(c.events){
|
|
860
|
+
Ext.applyIf(c.initialConfig, d);
|
|
861
|
+
Ext.apply(c, d);
|
|
862
|
+
}else{
|
|
863
|
+
Ext.applyIf(c, d);
|
|
864
|
+
}
|
|
865
|
+
return c;
|
|
866
|
+
},
|
|
867
|
+
|
|
868
|
+
onAfterLayout : function(){
|
|
869
|
+
var bodyWidth = this.body.getFrameWidth('lr') + this.body.dom.firstChild.offsetWidth;
|
|
870
|
+
this.body.setWidth(bodyWidth);
|
|
871
|
+
this.el.setWidth(bodyWidth + this.getFrameWidth());
|
|
872
|
+
}
|
|
873
|
+
/**
|
|
874
|
+
* @cfg {Array} tools @hide
|
|
875
|
+
*/
|
|
876
|
+
});
|
|
877
|
+
|
|
878
|
+
Ext.reg('buttongroup', Ext.ButtonGroup);
|
|
879
|
+
/**
|
|
880
|
+
* @class Ext.PagingToolbar
|
|
881
|
+
* @extends Ext.Toolbar
|
|
882
|
+
* <p>As the amount of records increases, the time required for the browser to render
|
|
883
|
+
* them increases. Paging is used to reduce the amount of data exchanged with the client.
|
|
884
|
+
* Note: if there are more records/rows than can be viewed in the available screen area, vertical
|
|
885
|
+
* scrollbars will be added.</p>
|
|
886
|
+
* <p>Paging is typically handled on the server side (see exception below). The client sends
|
|
887
|
+
* parameters to the server side, which the server needs to interpret and then respond with the
|
|
888
|
+
* approprate data.</p>
|
|
889
|
+
* <p><b>Ext.PagingToolbar</b> is a specialized toolbar that is bound to a {@link Ext.data.Store}
|
|
890
|
+
* and provides automatic paging control. This Component {@link Ext.data.Store#load load}s blocks
|
|
891
|
+
* of data into the <tt>{@link #store}</tt> by passing {@link Ext.data.Store#paramNames paramNames} used for
|
|
892
|
+
* paging criteria.</p>
|
|
893
|
+
* <p>PagingToolbar is typically used as one of the Grid's toolbars:</p>
|
|
894
|
+
* <pre><code>
|
|
895
|
+
Ext.QuickTips.init(); // to display button quicktips
|
|
896
|
+
|
|
897
|
+
var myStore = new Ext.data.Store({
|
|
898
|
+
...
|
|
899
|
+
});
|
|
900
|
+
|
|
901
|
+
var myPageSize = 25; // server script should only send back 25 items
|
|
902
|
+
|
|
903
|
+
var grid = new Ext.grid.GridPanel({
|
|
904
|
+
...
|
|
905
|
+
store: myStore,
|
|
906
|
+
bbar: new Ext.PagingToolbar({
|
|
907
|
+
{@link #store}: myStore, // grid and PagingToolbar using same store
|
|
908
|
+
{@link #displayInfo}: true,
|
|
909
|
+
{@link #pageSize}: myPageSize,
|
|
910
|
+
{@link #prependButtons}: true,
|
|
911
|
+
items: [
|
|
912
|
+
'text 1'
|
|
913
|
+
]
|
|
914
|
+
})
|
|
915
|
+
});
|
|
916
|
+
* </code></pre>
|
|
917
|
+
*
|
|
918
|
+
* <p>To use paging, pass the paging requirements to the server when the store is first loaded.</p>
|
|
919
|
+
* <pre><code>
|
|
920
|
+
store.load({
|
|
921
|
+
params: {
|
|
922
|
+
start: 0, // specify params for the first page load if using paging
|
|
923
|
+
limit: myPageSize,
|
|
924
|
+
foo: 'bar'
|
|
925
|
+
}
|
|
926
|
+
});
|
|
927
|
+
* </code></pre>
|
|
928
|
+
* <p><u>Paging with Local Data</u></p>
|
|
929
|
+
* <p>Paging can also be accomplished with local data using extensions:</p>
|
|
930
|
+
* <div class="mdetail-params"><ul>
|
|
931
|
+
* <li><a href="http://extjs.com/forum/showthread.php?t=57386">Ext.ux.data.PagingStore</a></li>
|
|
932
|
+
* <li>Paging Memory Proxy (examples/ux/PagingMemoryProxy.js)</li>
|
|
933
|
+
* </ul></div>
|
|
934
|
+
* @constructor
|
|
935
|
+
* Create a new PagingToolbar
|
|
936
|
+
* @param {Object} config The config object
|
|
937
|
+
* @xtype paging
|
|
938
|
+
*/
|
|
939
|
+
(function() {
|
|
940
|
+
|
|
941
|
+
var T = Ext.Toolbar;
|
|
942
|
+
|
|
943
|
+
Ext.PagingToolbar = Ext.extend(Ext.Toolbar, {
|
|
944
|
+
/**
|
|
945
|
+
* @cfg {Ext.data.Store} store
|
|
946
|
+
* The {@link Ext.data.Store} the paging toolbar should use as its data source (required).
|
|
947
|
+
*/
|
|
948
|
+
/**
|
|
949
|
+
* @cfg {Boolean} displayInfo
|
|
950
|
+
* <tt>true</tt> to display the displayMsg (defaults to <tt>false</tt>)
|
|
951
|
+
*/
|
|
952
|
+
/**
|
|
953
|
+
* @cfg {Number} pageSize
|
|
954
|
+
* The number of records to display per page (defaults to <tt>20</tt>)
|
|
955
|
+
*/
|
|
956
|
+
pageSize : 20,
|
|
957
|
+
/**
|
|
958
|
+
* @cfg {Boolean} prependButtons
|
|
959
|
+
* <tt>true</tt> to insert any configured <tt>items</tt> <i>before</i> the paging buttons.
|
|
960
|
+
* Defaults to <tt>false</tt>.
|
|
961
|
+
*/
|
|
962
|
+
/**
|
|
963
|
+
* @cfg {String} displayMsg
|
|
964
|
+
* The paging status message to display (defaults to <tt>'Displaying {0} - {1} of {2}'</tt>).
|
|
965
|
+
* Note that this string is formatted using the braced numbers <tt>{0}-{2}</tt> as tokens
|
|
966
|
+
* that are replaced by the values for start, end and total respectively. These tokens should
|
|
967
|
+
* be preserved when overriding this string if showing those values is desired.
|
|
968
|
+
*/
|
|
969
|
+
displayMsg : 'Displaying {0} - {1} of {2}',
|
|
970
|
+
/**
|
|
971
|
+
* @cfg {String} emptyMsg
|
|
972
|
+
* The message to display when no records are found (defaults to 'No data to display')
|
|
973
|
+
*/
|
|
974
|
+
emptyMsg : 'No data to display',
|
|
975
|
+
/**
|
|
976
|
+
* @cfg {String} beforePageText
|
|
977
|
+
* The text displayed before the input item (defaults to <tt>'Page'</tt>).
|
|
978
|
+
*/
|
|
979
|
+
beforePageText : 'Page',
|
|
980
|
+
/**
|
|
981
|
+
* @cfg {String} afterPageText
|
|
982
|
+
* Customizable piece of the default paging text (defaults to <tt>'of {0}'</tt>). Note that
|
|
983
|
+
* this string is formatted using <tt>{0}</tt> as a token that is replaced by the number of
|
|
984
|
+
* total pages. This token should be preserved when overriding this string if showing the
|
|
985
|
+
* total page count is desired.
|
|
986
|
+
*/
|
|
987
|
+
afterPageText : 'of {0}',
|
|
988
|
+
/**
|
|
989
|
+
* @cfg {String} firstText
|
|
990
|
+
* The quicktip text displayed for the first page button (defaults to <tt>'First Page'</tt>).
|
|
991
|
+
* <b>Note</b>: quick tips must be initialized for the quicktip to show.
|
|
992
|
+
*/
|
|
993
|
+
firstText : 'First Page',
|
|
994
|
+
/**
|
|
995
|
+
* @cfg {String} prevText
|
|
996
|
+
* The quicktip text displayed for the previous page button (defaults to <tt>'Previous Page'</tt>).
|
|
997
|
+
* <b>Note</b>: quick tips must be initialized for the quicktip to show.
|
|
998
|
+
*/
|
|
999
|
+
prevText : 'Previous Page',
|
|
1000
|
+
/**
|
|
1001
|
+
* @cfg {String} nextText
|
|
1002
|
+
* The quicktip text displayed for the next page button (defaults to <tt>'Next Page'</tt>).
|
|
1003
|
+
* <b>Note</b>: quick tips must be initialized for the quicktip to show.
|
|
1004
|
+
*/
|
|
1005
|
+
nextText : 'Next Page',
|
|
1006
|
+
/**
|
|
1007
|
+
* @cfg {String} lastText
|
|
1008
|
+
* The quicktip text displayed for the last page button (defaults to <tt>'Last Page'</tt>).
|
|
1009
|
+
* <b>Note</b>: quick tips must be initialized for the quicktip to show.
|
|
1010
|
+
*/
|
|
1011
|
+
lastText : 'Last Page',
|
|
1012
|
+
/**
|
|
1013
|
+
* @cfg {String} refreshText
|
|
1014
|
+
* The quicktip text displayed for the Refresh button (defaults to <tt>'Refresh'</tt>).
|
|
1015
|
+
* <b>Note</b>: quick tips must be initialized for the quicktip to show.
|
|
1016
|
+
*/
|
|
1017
|
+
refreshText : 'Refresh',
|
|
1018
|
+
|
|
1019
|
+
/**
|
|
1020
|
+
* @deprecated
|
|
1021
|
+
* <b>The defaults for these should be set in the data store.</b>
|
|
1022
|
+
* Object mapping of parameter names used for load calls, initially set to:
|
|
1023
|
+
* <pre>{start: 'start', limit: 'limit'}</pre>
|
|
1024
|
+
*/
|
|
1025
|
+
|
|
1026
|
+
/**
|
|
1027
|
+
* The number of records to display per page. See also <tt>{@link #cursor}</tt>.
|
|
1028
|
+
* @type Number
|
|
1029
|
+
* @property pageSize
|
|
1030
|
+
*/
|
|
1031
|
+
|
|
1032
|
+
/**
|
|
1033
|
+
* Indicator for the record position. This property might be used to get the active page
|
|
1034
|
+
* number for example:<pre><code>
|
|
1035
|
+
* // t is reference to the paging toolbar instance
|
|
1036
|
+
* var activePage = Math.ceil((t.cursor + t.pageSize) / t.pageSize);
|
|
1037
|
+
* </code></pre>
|
|
1038
|
+
* @type Number
|
|
1039
|
+
* @property cursor
|
|
1040
|
+
*/
|
|
1041
|
+
|
|
1042
|
+
initComponent : function(){
|
|
1043
|
+
var pagingItems = [this.first = new T.Button({
|
|
1044
|
+
tooltip: this.firstText,
|
|
1045
|
+
overflowText: this.firstText,
|
|
1046
|
+
iconCls: 'x-tbar-page-first',
|
|
1047
|
+
disabled: true,
|
|
1048
|
+
handler: this.moveFirst,
|
|
1049
|
+
scope: this
|
|
1050
|
+
}), this.prev = new T.Button({
|
|
1051
|
+
tooltip: this.prevText,
|
|
1052
|
+
overflowText: this.prevText,
|
|
1053
|
+
iconCls: 'x-tbar-page-prev',
|
|
1054
|
+
disabled: true,
|
|
1055
|
+
handler: this.movePrevious,
|
|
1056
|
+
scope: this
|
|
1057
|
+
}), '-', this.beforePageText,
|
|
1058
|
+
this.inputItem = new Ext.form.NumberField({
|
|
1059
|
+
cls: 'x-tbar-page-number',
|
|
1060
|
+
allowDecimals: false,
|
|
1061
|
+
allowNegative: false,
|
|
1062
|
+
enableKeyEvents: true,
|
|
1063
|
+
selectOnFocus: true,
|
|
1064
|
+
listeners: {
|
|
1065
|
+
scope: this,
|
|
1066
|
+
keydown: this.onPagingKeyDown,
|
|
1067
|
+
blur: this.onPagingBlur
|
|
1068
|
+
}
|
|
1069
|
+
}), this.afterTextItem = new T.TextItem({
|
|
1070
|
+
text: String.format(this.afterPageText, 1)
|
|
1071
|
+
}), '-', this.next = new T.Button({
|
|
1072
|
+
tooltip: this.nextText,
|
|
1073
|
+
overflowText: this.nextText,
|
|
1074
|
+
iconCls: 'x-tbar-page-next',
|
|
1075
|
+
disabled: true,
|
|
1076
|
+
handler: this.moveNext,
|
|
1077
|
+
scope: this
|
|
1078
|
+
}), this.last = new T.Button({
|
|
1079
|
+
tooltip: this.lastText,
|
|
1080
|
+
overflowText: this.lastText,
|
|
1081
|
+
iconCls: 'x-tbar-page-last',
|
|
1082
|
+
disabled: true,
|
|
1083
|
+
handler: this.moveLast,
|
|
1084
|
+
scope: this
|
|
1085
|
+
}), '-', this.refresh = new T.Button({
|
|
1086
|
+
tooltip: this.refreshText,
|
|
1087
|
+
overflowText: this.refreshText,
|
|
1088
|
+
iconCls: 'x-tbar-loading',
|
|
1089
|
+
handler: this.refresh,
|
|
1090
|
+
scope: this
|
|
1091
|
+
})];
|
|
1092
|
+
|
|
1093
|
+
|
|
1094
|
+
var userItems = this.items || this.buttons || [];
|
|
1095
|
+
if (this.prependButtons) {
|
|
1096
|
+
this.items = userItems.concat(pagingItems);
|
|
1097
|
+
}else{
|
|
1098
|
+
this.items = pagingItems.concat(userItems);
|
|
1099
|
+
}
|
|
1100
|
+
delete this.buttons;
|
|
1101
|
+
if(this.displayInfo){
|
|
1102
|
+
this.items.push('->');
|
|
1103
|
+
this.items.push(this.displayItem = new T.TextItem({}));
|
|
1104
|
+
}
|
|
1105
|
+
Ext.PagingToolbar.superclass.initComponent.call(this);
|
|
1106
|
+
this.addEvents(
|
|
1107
|
+
/**
|
|
1108
|
+
* @event change
|
|
1109
|
+
* Fires after the active page has been changed.
|
|
1110
|
+
* @param {Ext.PagingToolbar} this
|
|
1111
|
+
* @param {Object} pageData An object that has these properties:<ul>
|
|
1112
|
+
* <li><code>total</code> : Number <div class="sub-desc">The total number of records in the dataset as
|
|
1113
|
+
* returned by the server</div></li>
|
|
1114
|
+
* <li><code>activePage</code> : Number <div class="sub-desc">The current page number</div></li>
|
|
1115
|
+
* <li><code>pages</code> : Number <div class="sub-desc">The total number of pages (calculated from
|
|
1116
|
+
* the total number of records in the dataset as returned by the server and the current {@link #pageSize})</div></li>
|
|
1117
|
+
* </ul>
|
|
1118
|
+
*/
|
|
1119
|
+
'change',
|
|
1120
|
+
/**
|
|
1121
|
+
* @event beforechange
|
|
1122
|
+
* Fires just before the active page is changed.
|
|
1123
|
+
* Return false to prevent the active page from being changed.
|
|
1124
|
+
* @param {Ext.PagingToolbar} this
|
|
1125
|
+
* @param {Object} params An object hash of the parameters which the PagingToolbar will send when
|
|
1126
|
+
* loading the required page. This will contain:<ul>
|
|
1127
|
+
* <li><code>start</code> : Number <div class="sub-desc">The starting row number for the next page of records to
|
|
1128
|
+
* be retrieved from the server</div></li>
|
|
1129
|
+
* <li><code>limit</code> : Number <div class="sub-desc">The number of records to be retrieved from the server</div></li>
|
|
1130
|
+
* </ul>
|
|
1131
|
+
* <p>(note: the names of the <b>start</b> and <b>limit</b> properties are determined
|
|
1132
|
+
* by the store's {@link Ext.data.Store#paramNames paramNames} property.)</p>
|
|
1133
|
+
* <p>Parameters may be added as required in the event handler.</p>
|
|
1134
|
+
*/
|
|
1135
|
+
'beforechange'
|
|
1136
|
+
);
|
|
1137
|
+
this.on('afterlayout', this.onFirstLayout, this, {single: true});
|
|
1138
|
+
this.cursor = 0;
|
|
1139
|
+
this.bindStore(this.store);
|
|
1140
|
+
},
|
|
1141
|
+
|
|
1142
|
+
// private
|
|
1143
|
+
onFirstLayout : function(){
|
|
1144
|
+
if(this.dsLoaded){
|
|
1145
|
+
this.onLoad.apply(this, this.dsLoaded);
|
|
1146
|
+
}
|
|
1147
|
+
},
|
|
1148
|
+
|
|
1149
|
+
// private
|
|
1150
|
+
updateInfo : function(){
|
|
1151
|
+
if(this.displayItem){
|
|
1152
|
+
var count = this.store.getCount();
|
|
1153
|
+
var msg = count == 0 ?
|
|
1154
|
+
this.emptyMsg :
|
|
1155
|
+
String.format(
|
|
1156
|
+
this.displayMsg,
|
|
1157
|
+
this.cursor+1, this.cursor+count, this.store.getTotalCount()
|
|
1158
|
+
);
|
|
1159
|
+
this.displayItem.setText(msg);
|
|
1160
|
+
}
|
|
1161
|
+
},
|
|
1162
|
+
|
|
1163
|
+
// private
|
|
1164
|
+
onLoad : function(store, r, o){
|
|
1165
|
+
if(!this.rendered){
|
|
1166
|
+
this.dsLoaded = [store, r, o];
|
|
1167
|
+
return;
|
|
1168
|
+
}
|
|
1169
|
+
var p = this.getParams();
|
|
1170
|
+
this.cursor = (o.params && o.params[p.start]) ? o.params[p.start] : 0;
|
|
1171
|
+
var d = this.getPageData(), ap = d.activePage, ps = d.pages;
|
|
1172
|
+
|
|
1173
|
+
this.afterTextItem.setText(String.format(this.afterPageText, d.pages));
|
|
1174
|
+
this.inputItem.setValue(ap);
|
|
1175
|
+
this.first.setDisabled(ap == 1);
|
|
1176
|
+
this.prev.setDisabled(ap == 1);
|
|
1177
|
+
this.next.setDisabled(ap == ps);
|
|
1178
|
+
this.last.setDisabled(ap == ps);
|
|
1179
|
+
this.refresh.enable();
|
|
1180
|
+
this.updateInfo();
|
|
1181
|
+
this.fireEvent('change', this, d);
|
|
1182
|
+
},
|
|
1183
|
+
|
|
1184
|
+
// private
|
|
1185
|
+
getPageData : function(){
|
|
1186
|
+
var total = this.store.getTotalCount();
|
|
1187
|
+
return {
|
|
1188
|
+
total : total,
|
|
1189
|
+
activePage : Math.ceil((this.cursor+this.pageSize)/this.pageSize),
|
|
1190
|
+
pages : total < this.pageSize ? 1 : Math.ceil(total/this.pageSize)
|
|
1191
|
+
};
|
|
1192
|
+
},
|
|
1193
|
+
|
|
1194
|
+
/**
|
|
1195
|
+
* Change the active page
|
|
1196
|
+
* @param {Integer} page The page to display
|
|
1197
|
+
*/
|
|
1198
|
+
changePage : function(page){
|
|
1199
|
+
this.doLoad(((page-1) * this.pageSize).constrain(0, this.store.getTotalCount()));
|
|
1200
|
+
},
|
|
1201
|
+
|
|
1202
|
+
// private
|
|
1203
|
+
onLoadError : function(){
|
|
1204
|
+
if(!this.rendered){
|
|
1205
|
+
return;
|
|
1206
|
+
}
|
|
1207
|
+
this.refresh.enable();
|
|
1208
|
+
},
|
|
1209
|
+
|
|
1210
|
+
// private
|
|
1211
|
+
readPage : function(d){
|
|
1212
|
+
var v = this.inputItem.getValue(), pageNum;
|
|
1213
|
+
if (!v || isNaN(pageNum = parseInt(v, 10))) {
|
|
1214
|
+
this.inputItem.setValue(d.activePage);
|
|
1215
|
+
return false;
|
|
1216
|
+
}
|
|
1217
|
+
return pageNum;
|
|
1218
|
+
},
|
|
1219
|
+
|
|
1220
|
+
onPagingFocus : function(){
|
|
1221
|
+
this.inputItem.select();
|
|
1222
|
+
},
|
|
1223
|
+
|
|
1224
|
+
//private
|
|
1225
|
+
onPagingBlur : function(e){
|
|
1226
|
+
this.inputItem.setValue(this.getPageData().activePage);
|
|
1227
|
+
},
|
|
1228
|
+
|
|
1229
|
+
// private
|
|
1230
|
+
onPagingKeyDown : function(field, e){
|
|
1231
|
+
var k = e.getKey(), d = this.getPageData(), pageNum;
|
|
1232
|
+
if (k == e.RETURN) {
|
|
1233
|
+
e.stopEvent();
|
|
1234
|
+
pageNum = this.readPage(d);
|
|
1235
|
+
if(pageNum !== false){
|
|
1236
|
+
pageNum = Math.min(Math.max(1, pageNum), d.pages) - 1;
|
|
1237
|
+
this.doLoad(pageNum * this.pageSize);
|
|
1238
|
+
}
|
|
1239
|
+
}else if (k == e.HOME || k == e.END){
|
|
1240
|
+
e.stopEvent();
|
|
1241
|
+
pageNum = k == e.HOME ? 1 : d.pages;
|
|
1242
|
+
field.setValue(pageNum);
|
|
1243
|
+
}else if (k == e.UP || k == e.PAGEUP || k == e.DOWN || k == e.PAGEDOWN){
|
|
1244
|
+
e.stopEvent();
|
|
1245
|
+
if((pageNum = this.readPage(d))){
|
|
1246
|
+
var increment = e.shiftKey ? 10 : 1;
|
|
1247
|
+
if(k == e.DOWN || k == e.PAGEDOWN){
|
|
1248
|
+
increment *= -1;
|
|
1249
|
+
}
|
|
1250
|
+
pageNum += increment;
|
|
1251
|
+
if(pageNum >= 1 & pageNum <= d.pages){
|
|
1252
|
+
field.setValue(pageNum);
|
|
1253
|
+
}
|
|
1254
|
+
}
|
|
1255
|
+
}
|
|
1256
|
+
},
|
|
1257
|
+
|
|
1258
|
+
// private
|
|
1259
|
+
getParams : function(){
|
|
1260
|
+
//retain backwards compat, allow params on the toolbar itself, if they exist.
|
|
1261
|
+
return this.paramNames || this.store.paramNames;
|
|
1262
|
+
},
|
|
1263
|
+
|
|
1264
|
+
// private
|
|
1265
|
+
beforeLoad : function(){
|
|
1266
|
+
if(this.rendered && this.refresh){
|
|
1267
|
+
this.refresh.disable();
|
|
1268
|
+
}
|
|
1269
|
+
},
|
|
1270
|
+
|
|
1271
|
+
// private
|
|
1272
|
+
doLoad : function(start){
|
|
1273
|
+
var o = {}, pn = this.getParams();
|
|
1274
|
+
o[pn.start] = start;
|
|
1275
|
+
o[pn.limit] = this.pageSize;
|
|
1276
|
+
if(this.fireEvent('beforechange', this, o) !== false){
|
|
1277
|
+
this.store.load({params:o});
|
|
1278
|
+
}
|
|
1279
|
+
},
|
|
1280
|
+
|
|
1281
|
+
/**
|
|
1282
|
+
* Move to the first page, has the same effect as clicking the 'first' button.
|
|
1283
|
+
*/
|
|
1284
|
+
moveFirst : function(){
|
|
1285
|
+
this.doLoad(0);
|
|
1286
|
+
},
|
|
1287
|
+
|
|
1288
|
+
/**
|
|
1289
|
+
* Move to the previous page, has the same effect as clicking the 'previous' button.
|
|
1290
|
+
*/
|
|
1291
|
+
movePrevious : function(){
|
|
1292
|
+
this.doLoad(Math.max(0, this.cursor-this.pageSize));
|
|
1293
|
+
},
|
|
1294
|
+
|
|
1295
|
+
/**
|
|
1296
|
+
* Move to the next page, has the same effect as clicking the 'next' button.
|
|
1297
|
+
*/
|
|
1298
|
+
moveNext : function(){
|
|
1299
|
+
this.doLoad(this.cursor+this.pageSize);
|
|
1300
|
+
},
|
|
1301
|
+
|
|
1302
|
+
/**
|
|
1303
|
+
* Move to the last page, has the same effect as clicking the 'last' button.
|
|
1304
|
+
*/
|
|
1305
|
+
moveLast : function(){
|
|
1306
|
+
var total = this.store.getTotalCount(),
|
|
1307
|
+
extra = total % this.pageSize;
|
|
1308
|
+
|
|
1309
|
+
this.doLoad(extra ? (total - extra) : total - this.pageSize);
|
|
1310
|
+
},
|
|
1311
|
+
|
|
1312
|
+
/**
|
|
1313
|
+
* Refresh the current page, has the same effect as clicking the 'refresh' button.
|
|
1314
|
+
*/
|
|
1315
|
+
refresh : function(){
|
|
1316
|
+
this.doLoad(this.cursor);
|
|
1317
|
+
},
|
|
1318
|
+
|
|
1319
|
+
/**
|
|
1320
|
+
* Binds the paging toolbar to the specified {@link Ext.data.Store}
|
|
1321
|
+
* @param {Store} store The store to bind to this toolbar
|
|
1322
|
+
* @param {Boolean} initial (Optional) true to not remove listeners
|
|
1323
|
+
*/
|
|
1324
|
+
bindStore : function(store, initial){
|
|
1325
|
+
var doLoad;
|
|
1326
|
+
if(!initial && this.store){
|
|
1327
|
+
this.store.un('beforeload', this.beforeLoad, this);
|
|
1328
|
+
this.store.un('load', this.onLoad, this);
|
|
1329
|
+
this.store.un('exception', this.onLoadError, this);
|
|
1330
|
+
if(store !== this.store && this.store.autoDestroy){
|
|
1331
|
+
this.store.destroy();
|
|
1332
|
+
}
|
|
1333
|
+
}
|
|
1334
|
+
if(store){
|
|
1335
|
+
store = Ext.StoreMgr.lookup(store);
|
|
1336
|
+
store.on({
|
|
1337
|
+
scope: this,
|
|
1338
|
+
beforeload: this.beforeLoad,
|
|
1339
|
+
load: this.onLoad,
|
|
1340
|
+
exception: this.onLoadError
|
|
1341
|
+
});
|
|
1342
|
+
doLoad = store.getCount() > 0;
|
|
1343
|
+
}
|
|
1344
|
+
this.store = store;
|
|
1345
|
+
if(doLoad){
|
|
1346
|
+
this.onLoad(store, null, {});
|
|
1347
|
+
}
|
|
1348
|
+
},
|
|
1349
|
+
|
|
1350
|
+
/**
|
|
1351
|
+
* Unbinds the paging toolbar from the specified {@link Ext.data.Store} <b>(deprecated)</b>
|
|
1352
|
+
* @param {Ext.data.Store} store The data store to unbind
|
|
1353
|
+
*/
|
|
1354
|
+
unbind : function(store){
|
|
1355
|
+
this.bindStore(null);
|
|
1356
|
+
},
|
|
1357
|
+
|
|
1358
|
+
/**
|
|
1359
|
+
* Binds the paging toolbar to the specified {@link Ext.data.Store} <b>(deprecated)</b>
|
|
1360
|
+
* @param {Ext.data.Store} store The data store to bind
|
|
1361
|
+
*/
|
|
1362
|
+
bind : function(store){
|
|
1363
|
+
this.bindStore(store);
|
|
1364
|
+
},
|
|
1365
|
+
|
|
1366
|
+
// private
|
|
1367
|
+
onDestroy : function(){
|
|
1368
|
+
this.bindStore(null);
|
|
1369
|
+
Ext.PagingToolbar.superclass.onDestroy.call(this);
|
|
1370
|
+
}
|
|
1371
|
+
});
|
|
1372
|
+
|
|
1373
|
+
})();
|
|
1374
|
+
Ext.reg('paging', Ext.PagingToolbar);
|