From a700889be546025d036e7da0f7f240e2505e8a18 Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Fri, 24 Mar 2017 11:22:03 +0000 Subject: [PATCH] git-svn-id: https://svn.d4science-ii.research-infrastructures.eu/gcube/private/alessandro.pieve/resource-management@146318 82a268e6-3cf1-43bd-a215-b396298e98cf --- .classpath | 43 + .project | 60 + .settings/.jsdtscope | 15 + .../com.google.appengine.eclipse.core.prefs | 3 + .settings/com.google.gdt.eclipse.core.prefs | 5 + .settings/com.google.gwt.eclipse.core.prefs | 5 + .settings/org.eclipse.core.resources.prefs | 7 + .settings/org.eclipse.jdt.core.prefs | 8 + .settings/org.eclipse.jst.jsp.core.prefs | 3 + .settings/org.eclipse.m2e.core.prefs | 5 + .settings/org.eclipse.wst.common.component | 19 + ...se.wst.common.project.facet.core.prefs.xml | 7 + ....eclipse.wst.common.project.facet.core.xml | 9 + ...rg.eclipse.wst.jsdt.ui.superType.container | 1 + .settings/org.eclipse.wst.validation.prefs | 2 + .settings/org.maven.ide.eclipse.prefs | 9 + .tern-project | 1 + ResourceManagementPortletTest-dev.launch | 22 + ResourceManagementPortletTest-prod.launch | 22 + distro/LICENSE | 1 + distro/README | 67 + distro/changelog.xml | 138 + distro/descriptor.xml | 42 + distro/profile.xml | 25 + pom.xml | 319 + .../client/ResourceManagementPortlet.java | 700 ++ .../client/forms/DeployServicesForm.java | 346 + .../DeployVirtualCollection.java | 173 + .../genericresources/GenericResourceForm.java | 183 + .../client/remote/ProxyRegistry.java | 46 + .../client/remote/ServiceProxy.java | 181 + .../client/remote/ServiceProxyAsync.java | 122 + .../client/utils/Callbacks.java | 371 + .../client/utils/Commands.java | 590 ++ .../client/utils/FWSTranslate.java | 23 + .../client/utils/Messages.java | 27 + .../client/utils/OpCommands.java | 346 + .../views/profile/ResourceProfilePanel.java | 97 + .../resourcedetails/ContextMenuFactory.java | 696 ++ .../views/resourcedetails/CustomSorter.java | 65 + .../resourcedetails/ResourceDetailsPanel.java | 387 + .../resourcedetails/ResourceGridFactory.java | 141 + .../resourcetree/ResourcesTreePanel.java | 219 + .../resourcetree/WSResourcesTreePanel.java | 112 + .../widgets/console/ConsoleLogSeverity.java | 27 + .../widgets/console/ConsoleMessage.java | 45 + .../widgets/console/ConsoleMessageBroker.java | 80 + .../client/widgets/console/ConsolePanel.java | 214 + .../widgets/dialogs/ExtendedMessageBox.java | 139 + .../widgets/panels/DetachablePanel.java | 282 + .../widgets/panels/GenericTreePanel.java | 113 + .../client/widgets/panels/MainPanel.java | 119 + .../widgets/panels/ScrollablePanel.java | 70 + .../widgets/registry/UIIdentifiers.java | 52 + .../widgets/registry/WidgetsRegistry.java | 96 + .../client/widgets/taskbar/TaskbarButton.java | 202 + .../client/widgets/taskbar/TaskbarItem.java | 174 + .../widgets/taskbar/TaskbarRegister.java | 114 + .../client/widgets/taskbar/TaskbarWindow.java | 103 + .../widgets/viewport/MainContainer.java | 42 + .../server/ResourceCommands.java | 211 + .../server/ServiceProxyImpl.java | 534 ++ .../server/gcube/services/StatusHandler.java | 162 + .../configuration/ConfigurationLoader.java | 111 + .../configuration/DefaultConfiguration.java | 62 + .../portlet/ResourceManagementPortlet.java | 43 + .../exceptions/WidgetNotRegistered.java | 43 + .../shared/utils/BCrypt.java | 752 ++ .../shared/utils/XMLUtil.java | 185 + src/main/resources/clientlog4j.properties | 9 + .../ResourceManagementPortlet.gwt.xml | 26 + src/main/webapp/ResourceManagementPortlet.css | 335 + .../webapp/ResourceManagementPortlet.html | 42 + .../jsp/ResourceManagementPortlet_edit.jsp | 13 + .../jsp/ResourceManagementPortlet_help.jsp | 13 + .../jsp/ResourceManagementPortlet_view.jsp | 20 + src/main/webapp/WEB-INF/liferay-display.xml | 8 + .../WEB-INF/liferay-plugin-package.properties | 9 + src/main/webapp/WEB-INF/liferay-portlet.xml | 28 + src/main/webapp/WEB-INF/portlet.xml | 24 + src/main/webapp/WEB-INF/web.xml | 69 + src/main/webapp/WEB-INF/xml/scopedata.xml | 76 + .../webapp/WEB-INF/xml/scopedata_admin.xml | 76 + src/main/webapp/WEB-INF/xml/xmlverbatim.xsl | 322 + src/main/webapp/coherence.css | 93 + .../webapp/conf/resourcemanagement.properties | 33 + src/main/webapp/gxt/css/gxt-all.css | 7129 +++++++++++++++++ src/main/webapp/gxt/css/gxt-gray.css | 478 ++ src/main/webapp/gxt/desktop/css/desktop.css | 638 ++ .../webapp/gxt/desktop/images/desktop.gif | Bin 0 -> 63601 bytes .../webapp/gxt/desktop/images/desktop3.jpg | Bin 0 -> 158508 bytes src/main/webapp/gxt/desktop/images/gears.gif | Bin 0 -> 996 bytes src/main/webapp/gxt/desktop/images/gears.png | Bin 0 -> 967 bytes src/main/webapp/gxt/desktop/images/grid.png | Bin 0 -> 513 bytes src/main/webapp/gxt/desktop/images/hatch.gif | Bin 0 -> 842 bytes src/main/webapp/gxt/desktop/images/hd-bg.gif | Bin 0 -> 992 bytes .../webapp/gxt/desktop/images/hd-tb-bg.gif | Bin 0 -> 808 bytes .../gxt/desktop/images/icon_padlock.png | Bin 0 -> 400 bytes .../webapp/gxt/desktop/images/icons-bg.png | Bin 0 -> 191 bytes .../webapp/gxt/desktop/images/launcher-bg.gif | Bin 0 -> 944 bytes .../gxt/desktop/images/launcher-btn.gif | Bin 0 -> 1247 bytes src/main/webapp/gxt/desktop/images/logout.gif | Bin 0 -> 920 bytes src/main/webapp/gxt/desktop/images/logout.png | Bin 0 -> 505 bytes src/main/webapp/gxt/desktop/images/member.gif | Bin 0 -> 972 bytes src/main/webapp/gxt/desktop/images/member.png | Bin 0 -> 832 bytes .../webapp/gxt/desktop/images/powered.gif | Bin 0 -> 2291 bytes .../webapp/gxt/desktop/images/powered.png | Bin 0 -> 3606 bytes src/main/webapp/gxt/desktop/images/s.gif | Bin 0 -> 43 bytes .../images/taskbar/black/item-over.gif | Bin 0 -> 166 bytes .../images/taskbar/black/scroll-left.gif | Bin 0 -> 1405 bytes .../images/taskbar/black/scroll-right.gif | Bin 0 -> 1405 bytes .../taskbar/black/start-menu-left-corners.png | Bin 0 -> 206 bytes .../taskbar/black/start-menu-left-right.png | Bin 0 -> 143 bytes .../black/start-menu-right-corners.png | Bin 0 -> 224 bytes .../images/taskbar/black/start-menu-right.png | Bin 0 -> 141 bytes .../taskbar/black/start-menu-top-bottom.png | Bin 0 -> 158 bytes .../images/taskbar/black/startbutton-icon.gif | Bin 0 -> 748 bytes .../images/taskbar/black/startbutton.gif | Bin 0 -> 2419 bytes .../images/taskbar/black/taskbar-split-h.gif | Bin 0 -> 327 bytes .../taskbar/black/taskbar-start-panel-bg.gif | Bin 0 -> 890 bytes .../images/taskbar/black/taskbutton.gif | Bin 0 -> 1894 bytes .../taskbar/black/taskbuttons-panel-bg.gif | Bin 0 -> 195 bytes .../webapp/gxt/desktop/images/winbar-bg.gif | Bin 0 -> 888 bytes .../webapp/gxt/desktop/images/winbar-btn.gif | Bin 0 -> 1316 bytes .../webapp/gxt/desktop/images/windows-bg.gif | Bin 0 -> 830 bytes .../webapp/gxt/desktop/wallpapers/desktop.jpg | Bin 0 -> 84237 bytes src/main/webapp/gxt/icons/connect.png | Bin 0 -> 748 bytes .../gxt/images/default/box/corners-blue.gif | Bin 0 -> 1010 bytes .../webapp/gxt/images/default/box/corners.gif | Bin 0 -> 1005 bytes .../webapp/gxt/images/default/box/l-blue.gif | Bin 0 -> 810 bytes src/main/webapp/gxt/images/default/box/l.gif | Bin 0 -> 810 bytes .../webapp/gxt/images/default/box/r-blue.gif | Bin 0 -> 810 bytes src/main/webapp/gxt/images/default/box/r.gif | Bin 0 -> 810 bytes .../webapp/gxt/images/default/box/tb-blue.gif | Bin 0 -> 851 bytes src/main/webapp/gxt/images/default/box/tb.gif | Bin 0 -> 839 bytes .../gxt/images/default/button/arrow.gif | Bin 0 -> 828 bytes .../gxt/images/default/button/btn-arrow.gif | Bin 0 -> 870 bytes .../gxt/images/default/button/btn-sprite.gif | Bin 0 -> 1341 bytes .../webapp/gxt/images/default/button/btn.gif | Bin 0 -> 4298 bytes .../gxt/images/default/button/group-cs.gif | Bin 0 -> 2459 bytes .../gxt/images/default/button/group-lr.gif | Bin 0 -> 861 bytes .../gxt/images/default/button/group-tb.gif | Bin 0 -> 846 bytes .../default/button/s-arrow-b-noline.gif | Bin 0 -> 898 bytes .../gxt/images/default/button/s-arrow-b.gif | Bin 0 -> 937 bytes .../gxt/images/default/button/s-arrow-bo.gif | Bin 0 -> 955 bytes .../images/default/button/s-arrow-noline.gif | Bin 0 -> 863 bytes .../gxt/images/default/button/s-arrow-o.gif | Bin 0 -> 937 bytes .../gxt/images/default/button/s-arrow.gif | Bin 0 -> 937 bytes .../webapp/gxt/images/default/dd/drop-add.gif | Bin 0 -> 1001 bytes .../webapp/gxt/images/default/dd/drop-no.gif | Bin 0 -> 949 bytes .../webapp/gxt/images/default/dd/drop-yes.gif | Bin 0 -> 1016 bytes .../gxt/images/default/editor/tb-sprite.gif | Bin 0 -> 2072 bytes .../gxt/images/default/form/checkbox.gif | Bin 0 -> 2061 bytes .../gxt/images/default/form/clear-trigger.gif | Bin 0 -> 1988 bytes .../gxt/images/default/form/date-trigger.gif | Bin 0 -> 1603 bytes .../images/default/form/error-tip-corners.gif | Bin 0 -> 4183 bytes .../gxt/images/default/form/exclamation.gif | Bin 0 -> 996 bytes .../webapp/gxt/images/default/form/radio.gif | Bin 0 -> 1746 bytes .../images/default/form/search-trigger.gif | Bin 0 -> 2182 bytes .../gxt/images/default/form/text-bg.gif | Bin 0 -> 819 bytes .../gxt/images/default/form/trigger-tpl.gif | Bin 0 -> 1487 bytes .../gxt/images/default/form/trigger.gif | Bin 0 -> 1688 bytes .../webapp/gxt/images/default/gradient-bg.gif | Bin 0 -> 1472 bytes .../images/default/grid/arrow-left-white.gif | Bin 0 -> 825 bytes .../images/default/grid/arrow-right-white.gif | Bin 0 -> 825 bytes .../images/default/grid/col-move-bottom.gif | Bin 0 -> 868 bytes .../gxt/images/default/grid/col-move-top.gif | Bin 0 -> 869 bytes .../gxt/images/default/grid/columns.gif | Bin 0 -> 962 bytes .../webapp/gxt/images/default/grid/dirty.gif | Bin 0 -> 832 bytes .../webapp/gxt/images/default/grid/done.gif | Bin 0 -> 133 bytes .../gxt/images/default/grid/drop-no.gif | Bin 0 -> 947 bytes .../gxt/images/default/grid/drop-yes.gif | Bin 0 -> 860 bytes .../gxt/images/default/grid/footer-bg.gif | Bin 0 -> 834 bytes .../gxt/images/default/grid/grid-blue-hd.gif | Bin 0 -> 829 bytes .../images/default/grid/grid-blue-split.gif | Bin 0 -> 817 bytes .../gxt/images/default/grid/grid-hrow.gif | Bin 0 -> 855 bytes .../gxt/images/default/grid/grid-loading.gif | Bin 0 -> 701 bytes .../gxt/images/default/grid/grid-split.gif | Bin 0 -> 817 bytes .../gxt/images/default/grid/grid-vista-hd.gif | Bin 0 -> 829 bytes .../gxt/images/default/grid/grid3-hd-btn.gif | Bin 0 -> 1298 bytes .../images/default/grid/grid3-hrow-group.gif | Bin 0 -> 811 bytes .../images/default/grid/grid3-hrow-over.gif | Bin 0 -> 823 bytes .../gxt/images/default/grid/grid3-hrow.gif | Bin 0 -> 836 bytes .../default/grid/grid3-special-col-bg.gif | Bin 0 -> 837 bytes .../default/grid/grid3-special-col-sel-bg.gif | Bin 0 -> 843 bytes .../gxt/images/default/grid/group-by.gif | Bin 0 -> 917 bytes .../default/grid/group-expand-sprite.gif | Bin 0 -> 955 bytes .../webapp/gxt/images/default/grid/hd-pop.gif | Bin 0 -> 839 bytes .../gxt/images/default/grid/hmenu-asc.gif | Bin 0 -> 931 bytes .../gxt/images/default/grid/hmenu-desc.gif | Bin 0 -> 930 bytes .../gxt/images/default/grid/hmenu-lock.gif | Bin 0 -> 955 bytes .../gxt/images/default/grid/hmenu-lock.png | Bin 0 -> 648 bytes .../gxt/images/default/grid/hmenu-unlock.gif | Bin 0 -> 971 bytes .../gxt/images/default/grid/hmenu-unlock.png | Bin 0 -> 697 bytes .../gxt/images/default/grid/invalid_line.gif | Bin 0 -> 815 bytes .../gxt/images/default/grid/loading.gif | Bin 0 -> 771 bytes .../webapp/gxt/images/default/grid/mso-hd.gif | Bin 0 -> 875 bytes .../webapp/gxt/images/default/grid/nowait.gif | Bin 0 -> 884 bytes .../default/grid/page-first-disabled.gif | Bin 0 -> 925 bytes .../gxt/images/default/grid/page-first.gif | Bin 0 -> 925 bytes .../default/grid/page-last-disabled.gif | Bin 0 -> 923 bytes .../gxt/images/default/grid/page-last.gif | Bin 0 -> 923 bytes .../default/grid/page-next-disabled.gif | Bin 0 -> 875 bytes .../gxt/images/default/grid/page-next.gif | Bin 0 -> 875 bytes .../default/grid/page-prev-disabled.gif | Bin 0 -> 879 bytes .../gxt/images/default/grid/page-prev.gif | Bin 0 -> 879 bytes .../gxt/images/default/grid/pick-button.gif | Bin 0 -> 1036 bytes .../gxt/images/default/grid/refresh.gif | Bin 0 -> 977 bytes .../gxt/images/default/grid/refresh.png | Bin 0 -> 791 bytes .../images/default/grid/row-check-sprite.gif | Bin 0 -> 1083 bytes .../images/default/grid/row-expand-sprite.gif | Bin 0 -> 955 bytes .../gxt/images/default/grid/row-over.gif | Bin 0 -> 823 bytes .../gxt/images/default/grid/row-sel.gif | Bin 0 -> 823 bytes .../gxt/images/default/grid/sort-hd.gif | Bin 0 -> 1473 bytes .../gxt/images/default/grid/sort_asc.gif | Bin 0 -> 830 bytes .../gxt/images/default/grid/sort_desc.gif | Bin 0 -> 833 bytes .../webapp/gxt/images/default/grid/wait.gif | Bin 0 -> 1100 bytes .../gxt/images/default/layout/collapse.gif | Bin 0 -> 842 bytes .../gxt/images/default/layout/expand.gif | Bin 0 -> 842 bytes .../gxt/images/default/layout/gradient-bg.gif | Bin 0 -> 1472 bytes .../gxt/images/default/layout/mini-bottom.gif | Bin 0 -> 856 bytes .../gxt/images/default/layout/mini-left.gif | Bin 0 -> 871 bytes .../gxt/images/default/layout/mini-right.gif | Bin 0 -> 872 bytes .../gxt/images/default/layout/mini-top.gif | Bin 0 -> 856 bytes .../gxt/images/default/layout/ns-collapse.gif | Bin 0 -> 842 bytes .../gxt/images/default/layout/ns-expand.gif | Bin 0 -> 843 bytes .../gxt/images/default/layout/panel-close.gif | Bin 0 -> 829 bytes .../images/default/layout/panel-title-bg.gif | Bin 0 -> 838 bytes .../default/layout/panel-title-light-bg.gif | Bin 0 -> 835 bytes .../gxt/images/default/layout/stick.gif | Bin 0 -> 874 bytes .../gxt/images/default/layout/stuck.gif | Bin 0 -> 92 bytes .../images/default/layout/tab-close-on.gif | Bin 0 -> 880 bytes .../gxt/images/default/layout/tab-close.gif | Bin 0 -> 859 bytes .../gxt/images/default/menu/checked.gif | Bin 0 -> 959 bytes .../gxt/images/default/menu/group-checked.gif | Bin 0 -> 891 bytes .../gxt/images/default/menu/item-over.gif | Bin 0 -> 820 bytes .../gxt/images/default/menu/menu-parent.gif | Bin 0 -> 854 bytes .../webapp/gxt/images/default/menu/menu.gif | Bin 0 -> 834 bytes .../gxt/images/default/menu/unchecked.gif | Bin 0 -> 941 bytes .../images/default/panel/corners-sprite.gif | Bin 0 -> 1418 bytes .../gxt/images/default/panel/left-right.gif | Bin 0 -> 815 bytes .../gxt/images/default/panel/light-hd.gif | Bin 0 -> 827 bytes .../images/default/panel/tool-sprite-tpl.gif | Bin 0 -> 971 bytes .../gxt/images/default/panel/tool-sprites.gif | Bin 0 -> 4392 bytes .../default/panel/tools-sprites-trans.gif | Bin 0 -> 2843 bytes .../gxt/images/default/panel/top-bottom.gif | Bin 0 -> 875 bytes .../gxt/images/default/panel/top-bottom.png | Bin 0 -> 218 bytes .../default/panel/white-corners-sprite.gif | Bin 0 -> 1366 bytes .../images/default/panel/white-left-right.gif | Bin 0 -> 815 bytes .../images/default/panel/white-top-bottom.gif | Bin 0 -> 872 bytes .../images/default/progress/progress-bg.gif | Bin 0 -> 834 bytes .../webapp/gxt/images/default/qtip/bg.gif | Bin 0 -> 1091 bytes .../webapp/gxt/images/default/qtip/close.gif | Bin 0 -> 972 bytes .../images/default/qtip/tip-anchor-sprite.gif | Bin 0 -> 951 bytes .../gxt/images/default/qtip/tip-sprite.gif | Bin 0 -> 4271 bytes src/main/webapp/gxt/images/default/s.gif | Bin 0 -> 43 bytes .../webapp/gxt/images/default/shadow-c.png | Bin 0 -> 118 bytes .../webapp/gxt/images/default/shadow-lr.png | Bin 0 -> 135 bytes src/main/webapp/gxt/images/default/shadow.png | Bin 0 -> 311 bytes .../images/default/shared/blue-loading.gif | Bin 0 -> 3236 bytes .../gxt/images/default/shared/calendar.gif | Bin 0 -> 979 bytes .../gxt/images/default/shared/clear.gif | Bin 0 -> 43 bytes .../gxt/images/default/shared/glass-bg.gif | Bin 0 -> 873 bytes .../gxt/images/default/shared/hd-sprite.gif | Bin 0 -> 1099 bytes .../images/default/shared/large-loading.gif | Bin 0 -> 3236 bytes .../gxt/images/default/shared/left-btn.gif | Bin 0 -> 870 bytes .../images/default/shared/loading-balls.gif | Bin 0 -> 2118 bytes .../gxt/images/default/shared/right-btn.gif | Bin 0 -> 871 bytes .../gxt/images/default/shared/warning.gif | Bin 0 -> 960 bytes .../images/default/sizer/e-handle-dark.gif | Bin 0 -> 1062 bytes .../gxt/images/default/sizer/e-handle.gif | Bin 0 -> 1586 bytes .../images/default/sizer/ne-handle-dark.gif | Bin 0 -> 839 bytes .../gxt/images/default/sizer/ne-handle.gif | Bin 0 -> 854 bytes .../images/default/sizer/nw-handle-dark.gif | Bin 0 -> 839 bytes .../gxt/images/default/sizer/nw-handle.gif | Bin 0 -> 853 bytes .../images/default/sizer/s-handle-dark.gif | Bin 0 -> 1060 bytes .../gxt/images/default/sizer/s-handle.gif | Bin 0 -> 1318 bytes .../images/default/sizer/se-handle-dark.gif | Bin 0 -> 838 bytes .../gxt/images/default/sizer/se-handle.gif | Bin 0 -> 853 bytes .../gxt/images/default/sizer/square.gif | Bin 0 -> 864 bytes .../images/default/sizer/sw-handle-dark.gif | Bin 0 -> 839 bytes .../gxt/images/default/sizer/sw-handle.gif | Bin 0 -> 855 bytes .../gxt/images/default/slider/slider-bg.png | Bin 0 -> 300 bytes .../images/default/slider/slider-thumb.png | Bin 0 -> 933 bytes .../gxt/images/default/slider/slider-v-bg.png | Bin 0 -> 288 bytes .../images/default/slider/slider-v-thumb.png | Bin 0 -> 883 bytes .../gxt/images/default/tabs/scroll-left.gif | Bin 0 -> 1295 bytes .../gxt/images/default/tabs/scroll-right.gif | Bin 0 -> 1300 bytes .../gxt/images/default/tabs/scroller-bg.gif | Bin 0 -> 1100 bytes .../default/tabs/tab-btm-inactive-left-bg.gif | Bin 0 -> 886 bytes .../tabs/tab-btm-inactive-right-bg.gif | Bin 0 -> 1386 bytes .../images/default/tabs/tab-btm-left-bg.gif | Bin 0 -> 863 bytes .../images/default/tabs/tab-btm-right-bg.gif | Bin 0 -> 1402 bytes .../gxt/images/default/tabs/tab-close.gif | Bin 0 -> 896 bytes .../gxt/images/default/tabs/tab-strip-bg.gif | Bin 0 -> 835 bytes .../gxt/images/default/tabs/tab-strip-bg.png | Bin 0 -> 259 bytes .../images/default/tabs/tab-strip-btm-bg.gif | Bin 0 -> 826 bytes .../gxt/images/default/tabs/tabs-sprite.gif | Bin 0 -> 2120 bytes .../webapp/gxt/images/default/toolbar/bg.gif | Bin 0 -> 904 bytes .../default/toolbar/btn-arrow-light.gif | Bin 0 -> 916 bytes .../gxt/images/default/toolbar/btn-arrow.gif | Bin 0 -> 919 bytes .../images/default/toolbar/btn-over-bg.gif | Bin 0 -> 837 bytes .../gxt/images/default/toolbar/gray-bg.gif | Bin 0 -> 832 bytes .../gxt/images/default/toolbar/more.gif | Bin 0 -> 845 bytes .../gxt/images/default/toolbar/tb-bg.gif | Bin 0 -> 862 bytes .../images/default/toolbar/tb-btn-sprite.gif | Bin 0 -> 1127 bytes .../default/toolbar/tb-xl-btn-sprite.gif | Bin 0 -> 1663 bytes .../gxt/images/default/toolbar/tb-xl-sep.gif | Bin 0 -> 810 bytes .../webapp/gxt/images/default/tree/arrows.gif | Bin 0 -> 1024 bytes .../gxt/images/default/tree/drop-add.gif | Bin 0 -> 1001 bytes .../gxt/images/default/tree/drop-between.gif | Bin 0 -> 907 bytes .../gxt/images/default/tree/drop-no.gif | Bin 0 -> 949 bytes .../gxt/images/default/tree/drop-over.gif | Bin 0 -> 911 bytes .../gxt/images/default/tree/drop-under.gif | Bin 0 -> 911 bytes .../gxt/images/default/tree/drop-yes.gif | Bin 0 -> 1016 bytes .../default/tree/elbow-end-minus-nl.gif | Bin 0 -> 898 bytes .../images/default/tree/elbow-end-minus.gif | Bin 0 -> 905 bytes .../images/default/tree/elbow-end-plus-nl.gif | Bin 0 -> 900 bytes .../images/default/tree/elbow-end-plus.gif | Bin 0 -> 907 bytes .../gxt/images/default/tree/elbow-end.gif | Bin 0 -> 844 bytes .../gxt/images/default/tree/elbow-line.gif | Bin 0 -> 846 bytes .../images/default/tree/elbow-minus-nl.gif | Bin 0 -> 898 bytes .../gxt/images/default/tree/elbow-minus.gif | Bin 0 -> 908 bytes .../gxt/images/default/tree/elbow-plus-nl.gif | Bin 0 -> 900 bytes .../gxt/images/default/tree/elbow-plus.gif | Bin 0 -> 910 bytes .../webapp/gxt/images/default/tree/elbow.gif | Bin 0 -> 850 bytes .../gxt/images/default/tree/folder-open.gif | Bin 0 -> 956 bytes .../webapp/gxt/images/default/tree/folder.gif | Bin 0 -> 952 bytes .../webapp/gxt/images/default/tree/leaf.gif | Bin 0 -> 945 bytes .../gxt/images/default/tree/loading.gif | Bin 0 -> 771 bytes src/main/webapp/gxt/images/default/tree/s.gif | Bin 0 -> 43 bytes .../gxt/images/default/window/icon-error.gif | Bin 0 -> 1669 bytes .../gxt/images/default/window/icon-info.gif | Bin 0 -> 1586 bytes .../images/default/window/icon-question.gif | Bin 0 -> 1607 bytes .../images/default/window/icon-warning.gif | Bin 0 -> 1483 bytes .../images/default/window/left-corners.png | Bin 0 -> 200 bytes .../gxt/images/default/window/left-right.png | Bin 0 -> 152 bytes .../images/default/window/right-corners.png | Bin 0 -> 256 bytes .../gxt/images/default/window/top-bottom.png | Bin 0 -> 180 bytes .../gxt/images/gray/button/btn-arrow.gif | Bin 0 -> 870 bytes .../gxt/images/gray/button/btn-sprite.gif | Bin 0 -> 1222 bytes .../webapp/gxt/images/gray/button/btn.gif | Bin 0 -> 3319 bytes .../gxt/images/gray/button/group-cs.gif | Bin 0 -> 2459 bytes .../gxt/images/gray/button/group-lr.gif | Bin 0 -> 861 bytes .../gxt/images/gray/button/group-tb.gif | Bin 0 -> 846 bytes .../webapp/gxt/images/gray/gradient-bg.gif | Bin 0 -> 1472 bytes .../gxt/images/gray/panel/corners-sprite.gif | Bin 0 -> 765 bytes .../gxt/images/gray/panel/left-right.gif | Bin 0 -> 63 bytes .../webapp/gxt/images/gray/panel/light-hd.gif | Bin 0 -> 827 bytes .../gxt/images/gray/panel/tool-sprite-tpl.gif | Bin 0 -> 971 bytes .../gxt/images/gray/panel/tool-sprites.gif | Bin 0 -> 4464 bytes .../images/gray/panel/tools-sprites-trans.gif | Bin 0 -> 2640 bytes .../gxt/images/gray/panel/top-bottom.gif | Bin 0 -> 873 bytes .../gxt/images/gray/panel/top-bottom.png | Bin 0 -> 218 bytes .../gray/panel/white-corners-sprite.gif | Bin 0 -> 1365 bytes .../images/gray/panel/white-left-right.gif | Bin 0 -> 815 bytes .../images/gray/panel/white-top-bottom.gif | Bin 0 -> 868 bytes src/main/webapp/gxt/images/gray/qtip/bg.gif | Bin 0 -> 1024 bytes .../webapp/gxt/images/gray/qtip/close.gif | Bin 0 -> 972 bytes .../gxt/images/gray/qtip/tip-sprite.gif | Bin 0 -> 4033 bytes src/main/webapp/gxt/images/gray/s.gif | Bin 0 -> 43 bytes .../gxt/images/gray/tabs/scroll-left.gif | Bin 0 -> 1260 bytes .../gxt/images/gray/tabs/scroll-right.gif | Bin 0 -> 1269 bytes .../gxt/images/gray/tabs/scroller-bg.gif | Bin 0 -> 1090 bytes .../gray/tabs/tab-btm-inactive-left-bg.gif | Bin 0 -> 881 bytes .../gray/tabs/tab-btm-inactive-right-bg.gif | Bin 0 -> 1383 bytes .../gxt/images/gray/tabs/tab-btm-left-bg.gif | Bin 0 -> 863 bytes .../gxt/images/gray/tabs/tab-btm-right-bg.gif | Bin 0 -> 1402 bytes .../webapp/gxt/images/gray/tabs/tab-close.gif | Bin 0 -> 896 bytes .../gxt/images/gray/tabs/tab-strip-bg.gif | Bin 0 -> 835 bytes .../gxt/images/gray/tabs/tab-strip-bg.png | Bin 0 -> 259 bytes .../gxt/images/gray/tabs/tab-strip-btm-bg.gif | Bin 0 -> 826 bytes .../gxt/images/gray/tabs/tabs-sprite.gif | Bin 0 -> 2109 bytes .../webapp/gxt/images/gray/toolbar/bg.gif | Bin 0 -> 853 bytes .../images/gray/toolbar/btn-arrow-light.gif | Bin 0 -> 916 bytes .../gxt/images/gray/toolbar/btn-arrow.gif | Bin 0 -> 919 bytes .../gxt/images/gray/toolbar/btn-over-bg.gif | Bin 0 -> 837 bytes .../gxt/images/gray/toolbar/gray-bg.gif | Bin 0 -> 815 bytes .../webapp/gxt/images/gray/toolbar/tb-bg.gif | Bin 0 -> 862 bytes .../gxt/images/gray/toolbar/tb-btn-sprite.gif | Bin 0 -> 1021 bytes .../gxt/images/gray/window/icon-error.gif | Bin 0 -> 1669 bytes .../gxt/images/gray/window/icon-info.gif | Bin 0 -> 1586 bytes .../gxt/images/gray/window/icon-question.gif | Bin 0 -> 1607 bytes .../gxt/images/gray/window/icon-warning.gif | Bin 0 -> 1483 bytes .../gxt/images/gray/window/left-corners.png | Bin 0 -> 325 bytes .../images/gray/window/left-corners.pspimage | Bin 0 -> 4385 bytes .../gxt/images/gray/window/left-right.png | Bin 0 -> 2815 bytes .../gxt/images/gray/window/right-corners.png | Bin 0 -> 344 bytes .../gxt/images/gray/window/top-bottom.png | Bin 0 -> 2860 bytes .../webapp/gxt/images/gxt/dd/insert-bg.gif | Bin 0 -> 54 bytes .../gxt/images/gxt/grid/row-editor-bg.gif | Bin 0 -> 819 bytes .../gxt/images/gxt/grid/row-editor-btns.gif | Bin 0 -> 1087 bytes .../webapp/gxt/images/gxt/icons/bottom2.gif | Bin 0 -> 927 bytes .../webapp/gxt/images/gxt/icons/columns.gif | Bin 0 -> 962 bytes src/main/webapp/gxt/images/gxt/icons/done.gif | Bin 0 -> 133 bytes .../gxt/images/gxt/icons/doubleleft2.gif | Bin 0 -> 174 bytes .../gxt/images/gxt/icons/doubleright2.gif | Bin 0 -> 171 bytes .../webapp/gxt/images/gxt/icons/down2.gif | Bin 0 -> 920 bytes .../gxt/images/gxt/icons/folder-closed.gif | Bin 0 -> 999 bytes .../gxt/images/gxt/icons/folder-closed.png | Bin 0 -> 686 bytes .../webapp/gxt/images/gxt/icons/folder.gif | Bin 0 -> 996 bytes .../webapp/gxt/images/gxt/icons/folder.png | Bin 0 -> 711 bytes .../gxt/images/gxt/icons/grid-loading.gif | Bin 0 -> 701 bytes .../webapp/gxt/images/gxt/icons/hmenu-asc.gif | Bin 0 -> 931 bytes .../gxt/images/gxt/icons/hmenu-desc.gif | Bin 0 -> 930 bytes .../webapp/gxt/images/gxt/icons/left2.gif | Bin 0 -> 920 bytes .../webapp/gxt/images/gxt/icons/loading.gif | Bin 0 -> 771 bytes .../webapp/gxt/images/gxt/icons/nowait.gif | Bin 0 -> 884 bytes .../images/gxt/icons/page-first-disabled.gif | Bin 0 -> 925 bytes .../gxt/images/gxt/icons/page-first.gif | Bin 0 -> 925 bytes .../images/gxt/icons/page-last-disabled.gif | Bin 0 -> 923 bytes .../webapp/gxt/images/gxt/icons/page-last.gif | Bin 0 -> 923 bytes .../images/gxt/icons/page-next-disabled.gif | Bin 0 -> 875 bytes .../webapp/gxt/images/gxt/icons/page-next.gif | Bin 0 -> 875 bytes .../images/gxt/icons/page-prev-disabled.gif | Bin 0 -> 879 bytes .../webapp/gxt/images/gxt/icons/page-prev.gif | Bin 0 -> 879 bytes .../webapp/gxt/images/gxt/icons/paging.gif | Bin 0 -> 989 bytes .../webapp/gxt/images/gxt/icons/right2.gif | Bin 0 -> 925 bytes src/main/webapp/gxt/images/gxt/icons/tabs.gif | Bin 0 -> 917 bytes src/main/webapp/gxt/images/gxt/icons/top2.gif | Bin 0 -> 927 bytes src/main/webapp/gxt/images/gxt/icons/up2.gif | Bin 0 -> 920 bytes src/main/webapp/gxt/images/gxt/icons/wait.gif | Bin 0 -> 1100 bytes .../gxt/images/gxt/info/corners-sprite.gif | Bin 0 -> 1154 bytes .../webapp/gxt/images/gxt/info/top-bottom.gif | Bin 0 -> 1329 bytes .../gxt/images/gxt/menu/disabledcheck.gif | Bin 0 -> 907 bytes .../webapp/gxt/images/gxt/shared/clear.gif | Bin 0 -> 43 bytes .../gxt/images/gxt/shared/large-loading.gif | Bin 0 -> 3236 bytes .../gxt/images/gxt/shared/select-18-bg.gif | Bin 0 -> 508 bytes .../images/gxt/shared/select-19-bg-gray.gif | Bin 0 -> 1192 bytes .../gxt/images/gxt/shared/select-19-bg.gif | Bin 0 -> 2018 bytes .../gxt/images/gxt/shared/select-bg.gif | Bin 0 -> 1431 bytes .../gxt/images/gxt/shared/select-light.gif | Bin 0 -> 540 bytes .../webapp/gxt/images/gxt/table/row-over.gif | Bin 0 -> 823 bytes .../gxt/images/gxt/table/vs-column-bg.gif | Bin 0 -> 548 bytes .../webapp/gxt/images/gxt/table/vsort-asc.gif | Bin 0 -> 846 bytes .../gxt/images/gxt/table/vsort-desc.gif | Bin 0 -> 845 bytes .../webapp/gxt/images/gxt/tree/checked.gif | Bin 0 -> 533 bytes .../gxt/images/gxt/tree/joint-close.gif | Bin 0 -> 900 bytes .../webapp/gxt/images/gxt/tree/joint-open.gif | Bin 0 -> 898 bytes .../webapp/gxt/images/gxt/tree/notchecked.gif | Bin 0 -> 321 bytes .../gxt/tree/tree-table-special-col-sel.gif | Bin 0 -> 835 bytes .../gxt/tree/tree-table-special-col.gif | Bin 0 -> 96 bytes src/main/webapp/gxt/images/gxt/tree/vnode.gif | Bin 0 -> 846 bytes .../gxt/images/gxt/tree/vnode_transparent.gif | Bin 0 -> 972 bytes .../gxt/themes/slate/css/xtheme-slate.css | 1008 +++ .../slate/images/slate/button/arrow.gif | Bin 0 -> 59 bytes .../slate/images/slate/button/btn-arrow.gif | Bin 0 -> 871 bytes .../slate/images/slate/button/btn-sprite.gif | Bin 0 -> 1394 bytes .../themes/slate/images/slate/button/btn.gif | Bin 0 -> 4687 bytes .../slate/images/slate/button/group-cs.gif | Bin 0 -> 1598 bytes .../slate/images/slate/button/group-lr.gif | Bin 0 -> 94 bytes .../slate/images/slate/button/group-tb.gif | Bin 0 -> 88 bytes .../slate/images/slate/button/s-arrow-b.gif | Bin 0 -> 151 bytes .../slate/images/slate/button/s-arrow-bo.gif | Bin 0 -> 151 bytes .../images/slate/button/s-arrow-noline.gif | Bin 0 -> 82 bytes .../slate/images/slate/button/s-arrow-o.gif | Bin 0 -> 152 bytes .../slate/images/slate/button/s-arrow.gif | Bin 0 -> 152 bytes .../slate/images/slate/editor/tb-sprite.gif | Bin 0 -> 1994 bytes .../slate/images/slate/form/checkbox.gif | Bin 0 -> 1483 bytes .../slate/images/slate/form/clear-trigger.gif | Bin 0 -> 2091 bytes .../slate/images/slate/form/date-trigger.gif | Bin 0 -> 1612 bytes .../themes/slate/images/slate/form/radio.gif | Bin 0 -> 1846 bytes .../images/slate/form/search-trigger.gif | Bin 0 -> 2345 bytes .../slate/images/slate/form/trigger-tpl.gif | Bin 0 -> 1506 bytes .../slate/images/slate/form/trigger.gif | Bin 0 -> 1657 bytes .../themes/slate/images/slate/gradient-bg.gif | Bin 0 -> 1472 bytes .../images/slate/grid/arrow-left-white.gif | Bin 0 -> 825 bytes .../images/slate/grid/arrow-right-white.gif | Bin 0 -> 825 bytes .../images/slate/grid/col-move-bottom.gif | Bin 0 -> 868 bytes .../slate/images/slate/grid/col-move-top.gif | Bin 0 -> 869 bytes .../slate/images/slate/grid/footer-bg.gif | Bin 0 -> 834 bytes .../slate/images/slate/grid/grid-blue-hd.gif | Bin 0 -> 829 bytes .../images/slate/grid/grid-blue-split.gif | Bin 0 -> 817 bytes .../slate/images/slate/grid/grid-hrow.gif | Bin 0 -> 855 bytes .../slate/images/slate/grid/grid-split.gif | Bin 0 -> 817 bytes .../slate/images/slate/grid/grid-vista-hd.gif | Bin 0 -> 829 bytes .../slate/images/slate/grid/grid3-hd-btn.gif | Bin 0 -> 1212 bytes .../images/slate/grid/grid3-hrow-over.gif | Bin 0 -> 826 bytes .../slate/images/slate/grid/grid3-hrow.gif | Bin 0 -> 828 bytes .../slate/grid/grid3-special-col-bg.gif | Bin 0 -> 837 bytes .../slate/grid/grid3-special-col-sel-bg.gif | Bin 0 -> 847 bytes .../images/slate/grid/group-expand-sprite.gif | Bin 0 -> 955 bytes .../themes/slate/images/slate/grid/mso-hd.gif | Bin 0 -> 875 bytes .../images/slate/grid/page-first-disabled.gif | Bin 0 -> 925 bytes .../slate/images/slate/grid/page-first.gif | Bin 0 -> 925 bytes .../images/slate/grid/page-last-disabled.gif | Bin 0 -> 923 bytes .../slate/images/slate/grid/page-last.gif | Bin 0 -> 923 bytes .../images/slate/grid/page-next-disabled.gif | Bin 0 -> 875 bytes .../slate/images/slate/grid/page-next.gif | Bin 0 -> 875 bytes .../images/slate/grid/page-prev-disabled.gif | Bin 0 -> 879 bytes .../slate/images/slate/grid/page-prev.gif | Bin 0 -> 879 bytes .../slate/images/slate/grid/refresh.gif | Bin 0 -> 980 bytes .../slate/images/slate/grid/row-over.gif | Bin 0 -> 823 bytes .../slate/images/slate/grid/row-sel.gif | Bin 0 -> 823 bytes .../slate/images/slate/grid/sort_asc.gif | Bin 0 -> 830 bytes .../slate/images/slate/grid/sort_desc.gif | Bin 0 -> 833 bytes .../slate/images/slate/menu/checked.gif | Bin 0 -> 894 bytes .../slate/images/slate/menu/group-checked.gif | Bin 0 -> 887 bytes .../images/slate/menu/item-over - Copy.gif | Bin 0 -> 833 bytes .../slate/images/slate/menu/item-over.gif | Bin 0 -> 833 bytes .../slate/images/slate/menu/menu-parent.gif | Bin 0 -> 853 bytes .../themes/slate/images/slate/menu/menu.gif | Bin 0 -> 839 bytes .../slate/images/slate/menu/unchecked.gif | Bin 0 -> 877 bytes .../images/slate/panel/corners-sprite.gif | Bin 0 -> 1384 bytes .../slate/images/slate/panel/left-right.gif | Bin 0 -> 807 bytes .../slate/images/slate/panel/light-hd.gif | Bin 0 -> 844 bytes .../images/slate/panel/tool-sprite-tpl.gif | Bin 0 -> 1197 bytes .../slate/images/slate/panel/tool-sprites.gif | Bin 0 -> 5787 bytes .../slate/panel/tools-sprites-trans.gif | Bin 0 -> 2640 bytes .../slate/images/slate/panel/top-bottom.gif | Bin 0 -> 870 bytes .../slate/images/slate/panel/top-bottom.png | Bin 0 -> 215 bytes .../slate/panel/white-corners-sprite.gif | Bin 0 -> 1365 bytes .../images/slate/panel/white-left-right.gif | Bin 0 -> 805 bytes .../images/slate/panel/white-top-bottom.gif | Bin 0 -> 864 bytes .../images/slate/progress/progress-bg.gif | Bin 0 -> 837 bytes .../gxt/themes/slate/images/slate/qtip/bg.gif | Bin 0 -> 1091 bytes .../themes/slate/images/slate/qtip/close.gif | Bin 0 -> 972 bytes .../slate/images/slate/qtip/tip-sprite.gif | Bin 0 -> 4129 bytes .../gxt/themes/slate/images/slate/s.gif | Bin 0 -> 43 bytes .../slate/images/slate/shared/glass-bg.gif | Bin 0 -> 865 bytes .../slate/images/slate/shared/hd-sprite.gif | Bin 0 -> 1099 bytes .../slate/images/slate/shared/left-btn.gif | Bin 0 -> 878 bytes .../slate/images/slate/shared/right-btn.gif | Bin 0 -> 879 bytes .../images/slate/sizer/e-handle-dark.gif | Bin 0 -> 1069 bytes .../slate/images/slate/sizer/e-handle.gif | Bin 0 -> 1599 bytes .../images/slate/sizer/ne-handle-dark.gif | Bin 0 -> 843 bytes .../slate/images/slate/sizer/ne-handle.gif | Bin 0 -> 839 bytes .../images/slate/sizer/nw-handle-dark.gif | Bin 0 -> 841 bytes .../slate/images/slate/sizer/nw-handle.gif | Bin 0 -> 839 bytes .../images/slate/sizer/s-handle-dark.gif | Bin 0 -> 1051 bytes .../slate/images/slate/sizer/s-handle.gif | Bin 0 -> 1311 bytes .../images/slate/sizer/se-handle-dark.gif | Bin 0 -> 844 bytes .../slate/images/slate/sizer/se-handle.gif | Bin 0 -> 838 bytes .../slate/images/slate/sizer/square.gif | Bin 0 -> 841 bytes .../images/slate/sizer/sw-handle-dark.gif | Bin 0 -> 844 bytes .../slate/images/slate/sizer/sw-handle.gif | Bin 0 -> 839 bytes .../slate/images/slate/slider/slider-bg.png | Bin 0 -> 1033 bytes .../images/slate/slider/slider-thumb.png | Bin 0 -> 1569 bytes .../slate/images/slate/slider/slider-v-bg.png | Bin 0 -> 1016 bytes .../images/slate/slider/slider-v-thumb.png | Bin 0 -> 1476 bytes .../slate/images/slate/tabs/scroll-left.gif | Bin 0 -> 1260 bytes .../slate/images/slate/tabs/scroll-right.gif | Bin 0 -> 1269 bytes .../slate/images/slate/tabs/scroller-bg.gif | Bin 0 -> 1090 bytes .../slate/tabs/tab-btm-inactive-left-bg.gif | Bin 0 -> 883 bytes .../slate/tabs/tab-btm-inactive-right-bg.gif | Bin 0 -> 1553 bytes .../images/slate/tabs/tab-btm-left-bg.gif | Bin 0 -> 888 bytes .../images/slate/tabs/tab-btm-right-bg.gif | Bin 0 -> 1586 bytes .../slate/images/slate/tabs/tab-close.gif | Bin 0 -> 853 bytes .../slate/images/slate/tabs/tab-strip-bg.gif | Bin 0 -> 906 bytes .../slate/images/slate/tabs/tab-strip-bg.png | Bin 0 -> 259 bytes .../images/slate/tabs/tab-strip-btm-bg.gif | Bin 0 -> 826 bytes .../slate/images/slate/tabs/tabs-sprite.gif | Bin 0 -> 2625 bytes .../themes/slate/images/slate/toolbar/bg.gif | Bin 0 -> 540 bytes .../images/slate/toolbar/btn-arrow-light.gif | Bin 0 -> 916 bytes .../slate/images/slate/toolbar/btn-arrow.gif | Bin 0 -> 908 bytes .../images/slate/toolbar/btn-over-bg.gif | Bin 0 -> 829 bytes .../slate/images/slate/toolbar/gray-bg.gif | Bin 0 -> 832 bytes .../themes/slate/images/slate/toolbar/sep.gif | Bin 0 -> 66 bytes .../slate/images/slate/toolbar/tb-bg.gif | Bin 0 -> 862 bytes .../images/slate/toolbar/tb-btn-sprite.gif | Bin 0 -> 1070 bytes .../themes/slate/images/slate/tree/arrows.gif | Bin 0 -> 1024 bytes .../slate/images/slate/window/icon-error.gif | Bin 0 -> 1669 bytes .../slate/images/slate/window/icon-info.gif | Bin 0 -> 1586 bytes .../images/slate/window/icon-question.gif | Bin 0 -> 1607 bytes .../images/slate/window/icon-warning.gif | Bin 0 -> 1483 bytes .../images/slate/window/left-corners.png | Bin 0 -> 432 bytes .../slate/images/slate/window/left-right.png | Bin 0 -> 160 bytes .../images/slate/window/right-corners.png | Bin 0 -> 459 bytes .../slate/images/slate/window/top-bottom.png | Bin 0 -> 294 bytes src/main/webapp/images/D4infraFWS.png | Bin 0 -> 38740 bytes src/main/webapp/images/bg-pattern.png | Bin 0 -> 945 bytes src/main/webapp/images/d4infra.gif | Bin 0 -> 14059 bytes .../webapp/images/icons/GenericResource.png | Bin 0 -> 622 bytes src/main/webapp/images/icons/about.png | Bin 0 -> 1379 bytes src/main/webapp/images/icons/add.png | Bin 0 -> 733 bytes .../images/icons/application_cascade.png | Bin 0 -> 524 bytes src/main/webapp/images/icons/bgTree.gif | Bin 0 -> 6108 bytes src/main/webapp/images/icons/bigcube.gif | Bin 0 -> 43552 bytes src/main/webapp/images/icons/brick_add.png | Bin 0 -> 729 bytes src/main/webapp/images/icons/brick_delete.png | Bin 0 -> 745 bytes .../webapp/images/icons/clean-restart.png | Bin 0 -> 1332 bytes src/main/webapp/images/icons/close.png | Bin 0 -> 1572 bytes src/main/webapp/images/icons/closeall.png | Bin 0 -> 1605 bytes src/main/webapp/images/icons/cog.png | Bin 0 -> 512 bytes src/main/webapp/images/icons/cog_add.png | Bin 0 -> 814 bytes src/main/webapp/images/icons/cog_go.png | Bin 0 -> 859 bytes src/main/webapp/images/icons/collection2.png | Bin 0 -> 854 bytes src/main/webapp/images/icons/console.png | Bin 0 -> 1374 bytes src/main/webapp/images/icons/cube.gif | Bin 0 -> 17747 bytes src/main/webapp/images/icons/delete.png | Bin 0 -> 3233 bytes src/main/webapp/images/icons/deploy.png | Bin 0 -> 1678 bytes src/main/webapp/images/icons/detach.png | Bin 0 -> 391 bytes src/main/webapp/images/icons/error.png | Bin 0 -> 1635 bytes src/main/webapp/images/icons/eye.png | Bin 0 -> 1429 bytes src/main/webapp/images/icons/folder.png | Bin 0 -> 1604 bytes .../webapp/images/icons/folder_database.png | Bin 0 -> 687 bytes src/main/webapp/images/icons/forcedelete.png | Bin 0 -> 1318 bytes .../webapp/images/icons/gcoreEndpoint.png | Bin 0 -> 1762 bytes src/main/webapp/images/icons/grid.png | Bin 0 -> 398 bytes src/main/webapp/images/icons/hostingNode.png | Bin 0 -> 636 bytes src/main/webapp/images/icons/install.png | Bin 0 -> 1668 bytes src/main/webapp/images/icons/is.png | Bin 0 -> 417 bytes src/main/webapp/images/icons/link.png | Bin 0 -> 1547 bytes src/main/webapp/images/icons/log.png | Bin 0 -> 512 bytes src/main/webapp/images/icons/new.png | Bin 0 -> 1685 bytes src/main/webapp/images/icons/plugin.png | Bin 0 -> 591 bytes src/main/webapp/images/icons/pluginCM.png | Bin 0 -> 1635 bytes src/main/webapp/images/icons/profile-big.gif | Bin 0 -> 1091 bytes src/main/webapp/images/icons/profile.gif | Bin 0 -> 1900 bytes src/main/webapp/images/icons/refresh.png | Bin 0 -> 1783 bytes src/main/webapp/images/icons/report-big.png | Bin 0 -> 2022 bytes src/main/webapp/images/icons/report.png | Bin 0 -> 1616 bytes src/main/webapp/images/icons/restart.png | Bin 0 -> 1370 bytes .../webapp/images/icons/serviceEndpoint.png | Bin 0 -> 1785 bytes src/main/webapp/images/icons/shutdown.png | Bin 0 -> 515 bytes src/main/webapp/images/icons/software.png | Bin 0 -> 1876 bytes src/main/webapp/images/icons/sweeper.png | Bin 0 -> 1410 bytes src/main/webapp/images/icons/sweeper2.png | Bin 0 -> 773 bytes .../webapp/images/icons/table_multiple.png | Bin 0 -> 612 bytes src/main/webapp/images/icons/trash.png | Bin 0 -> 2193 bytes src/main/webapp/images/icons/upgrade.png | Bin 0 -> 1631 bytes src/main/webapp/images/icons/validate.gif | Bin 0 -> 1890 bytes src/main/webapp/images/icons/wand.png | Bin 0 -> 570 bytes src/main/webapp/images/icons/warning.png | Bin 0 -> 869 bytes src/main/webapp/images/icons/world.png | Bin 0 -> 923 bytes src/main/webapp/images/icons/ws-resource.png | Bin 0 -> 695 bytes src/main/webapp/images/loader.gif | Bin 0 -> 3924 bytes src/main/webapp/images/pattern.gif | Bin 0 -> 1243 bytes .../webapp/images/resource-icons/blue.png | Bin 0 -> 1169 bytes .../webapp/images/resource-icons/green.png | Bin 0 -> 1179 bytes .../webapp/images/resource-icons/orange.png | Bin 0 -> 1167 bytes .../webapp/images/resource-icons/ramarro.png | Bin 0 -> 1175 bytes src/main/webapp/images/resource-icons/red.png | Bin 0 -> 1169 bytes .../webapp/images/resource-icons/violet.png | Bin 0 -> 1179 bytes .../webapp/images/resource-icons/yellow.png | Bin 0 -> 1173 bytes src/main/webapp/images/sourceD4infra.psd | Bin 0 -> 131563 bytes src/main/webapp/images/tree_diag.png | Bin 0 -> 655 bytes src/main/webapp/mask_images/7_capacities.gif | Bin 0 -> 1250 bytes src/main/webapp/mask_images/D4S-II.jpg | Bin 0 -> 18628 bytes .../mask_images/D4ScienceInfrastructure.png | Bin 0 -> 13238 bytes src/main/webapp/mask_images/banner.jpg | Bin 0 -> 83007 bytes .../webapp/mask_images/e_infrastructure.gif | Bin 0 -> 1793 bytes src/main/webapp/mask_images/eu.jpg | Bin 0 -> 25861 bytes src/main/webapp/mask_images/favicon.gif | Bin 0 -> 1761 bytes src/main/webapp/mask_images/gCube.png | Bin 0 -> 13944 bytes src/main/webapp/mask_images/loader.gif | Bin 0 -> 8238 bytes src/main/webapp/mask_images/mask.gif | Bin 0 -> 56 bytes src/main/webapp/mask_images/mask1.gif | Bin 0 -> 56 bytes src/main/webapp/mask_images/mask2.gif | Bin 0 -> 75 bytes src/main/webapp/mask_images/mask3.gif | Bin 0 -> 83 bytes src/main/webapp/mask_images/mask4.gif | Bin 0 -> 77 bytes src/main/webapp/xmlverbatim.css | 13 + .../GwtTestResourceManagementPortlet.java | 44 + .../ResourceManagementPortletJUnit.gwt.xml | 9 + 654 files changed, 20153 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/.jsdtscope create mode 100644 .settings/com.google.appengine.eclipse.core.prefs create mode 100644 .settings/com.google.gdt.eclipse.core.prefs create mode 100644 .settings/com.google.gwt.eclipse.core.prefs create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.jst.jsp.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs create mode 100644 .settings/org.eclipse.wst.common.component create mode 100644 .settings/org.eclipse.wst.common.project.facet.core.prefs.xml create mode 100644 .settings/org.eclipse.wst.common.project.facet.core.xml create mode 100644 .settings/org.eclipse.wst.jsdt.ui.superType.container create mode 100644 .settings/org.eclipse.wst.validation.prefs create mode 100644 .settings/org.maven.ide.eclipse.prefs create mode 100644 .tern-project create mode 100644 ResourceManagementPortletTest-dev.launch create mode 100644 ResourceManagementPortletTest-prod.launch create mode 100644 distro/LICENSE create mode 100644 distro/README create mode 100644 distro/changelog.xml create mode 100644 distro/descriptor.xml create mode 100644 distro/profile.xml create mode 100644 pom.xml create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/ResourceManagementPortlet.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/forms/DeployServicesForm.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/forms/genericresources/DeployVirtualCollection.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/forms/genericresources/GenericResourceForm.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/remote/ProxyRegistry.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/remote/ServiceProxy.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/remote/ServiceProxyAsync.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/utils/Callbacks.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/utils/Commands.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/utils/FWSTranslate.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/utils/Messages.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/utils/OpCommands.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/profile/ResourceProfilePanel.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcedetails/ContextMenuFactory.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcedetails/CustomSorter.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcedetails/ResourceDetailsPanel.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcedetails/ResourceGridFactory.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcetree/ResourcesTreePanel.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcetree/WSResourcesTreePanel.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/console/ConsoleLogSeverity.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/console/ConsoleMessage.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/console/ConsoleMessageBroker.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/console/ConsolePanel.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/dialogs/ExtendedMessageBox.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/panels/DetachablePanel.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/panels/GenericTreePanel.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/panels/MainPanel.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/panels/ScrollablePanel.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/registry/UIIdentifiers.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/registry/WidgetsRegistry.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/taskbar/TaskbarButton.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/taskbar/TaskbarItem.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/taskbar/TaskbarRegister.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/taskbar/TaskbarWindow.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/viewport/MainContainer.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/server/ResourceCommands.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/server/ServiceProxyImpl.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/server/gcube/services/StatusHandler.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/server/gcube/services/configuration/ConfigurationLoader.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/server/gcube/services/configuration/DefaultConfiguration.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/server/portlet/ResourceManagementPortlet.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/shared/exceptions/WidgetNotRegistered.java create mode 100755 src/main/java/org/gcube/portlets/admin/resourcemanagement/shared/utils/BCrypt.java create mode 100644 src/main/java/org/gcube/portlets/admin/resourcemanagement/shared/utils/XMLUtil.java create mode 100644 src/main/resources/clientlog4j.properties create mode 100644 src/main/resources/org/gcube/portlets/admin/resourcemanagement/ResourceManagementPortlet.gwt.xml create mode 100644 src/main/webapp/ResourceManagementPortlet.css create mode 100644 src/main/webapp/ResourceManagementPortlet.html create mode 100644 src/main/webapp/WEB-INF/jsp/ResourceManagementPortlet_edit.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/ResourceManagementPortlet_help.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/ResourceManagementPortlet_view.jsp create mode 100644 src/main/webapp/WEB-INF/liferay-display.xml create mode 100644 src/main/webapp/WEB-INF/liferay-plugin-package.properties create mode 100644 src/main/webapp/WEB-INF/liferay-portlet.xml create mode 100644 src/main/webapp/WEB-INF/portlet.xml create mode 100644 src/main/webapp/WEB-INF/web.xml create mode 100644 src/main/webapp/WEB-INF/xml/scopedata.xml create mode 100644 src/main/webapp/WEB-INF/xml/scopedata_admin.xml create mode 100644 src/main/webapp/WEB-INF/xml/xmlverbatim.xsl create mode 100644 src/main/webapp/coherence.css create mode 100644 src/main/webapp/conf/resourcemanagement.properties create mode 100644 src/main/webapp/gxt/css/gxt-all.css create mode 100644 src/main/webapp/gxt/css/gxt-gray.css create mode 100644 src/main/webapp/gxt/desktop/css/desktop.css create mode 100644 src/main/webapp/gxt/desktop/images/desktop.gif create mode 100644 src/main/webapp/gxt/desktop/images/desktop3.jpg create mode 100644 src/main/webapp/gxt/desktop/images/gears.gif create mode 100644 src/main/webapp/gxt/desktop/images/gears.png create mode 100644 src/main/webapp/gxt/desktop/images/grid.png create mode 100644 src/main/webapp/gxt/desktop/images/hatch.gif create mode 100644 src/main/webapp/gxt/desktop/images/hd-bg.gif create mode 100644 src/main/webapp/gxt/desktop/images/hd-tb-bg.gif create mode 100644 src/main/webapp/gxt/desktop/images/icon_padlock.png create mode 100644 src/main/webapp/gxt/desktop/images/icons-bg.png create mode 100644 src/main/webapp/gxt/desktop/images/launcher-bg.gif create mode 100644 src/main/webapp/gxt/desktop/images/launcher-btn.gif create mode 100644 src/main/webapp/gxt/desktop/images/logout.gif create mode 100644 src/main/webapp/gxt/desktop/images/logout.png create mode 100644 src/main/webapp/gxt/desktop/images/member.gif create mode 100644 src/main/webapp/gxt/desktop/images/member.png create mode 100644 src/main/webapp/gxt/desktop/images/powered.gif create mode 100644 src/main/webapp/gxt/desktop/images/powered.png create mode 100644 src/main/webapp/gxt/desktop/images/s.gif create mode 100644 src/main/webapp/gxt/desktop/images/taskbar/black/item-over.gif create mode 100644 src/main/webapp/gxt/desktop/images/taskbar/black/scroll-left.gif create mode 100644 src/main/webapp/gxt/desktop/images/taskbar/black/scroll-right.gif create mode 100644 src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-left-corners.png create mode 100644 src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-left-right.png create mode 100644 src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-right-corners.png create mode 100644 src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-right.png create mode 100644 src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-top-bottom.png create mode 100644 src/main/webapp/gxt/desktop/images/taskbar/black/startbutton-icon.gif create mode 100644 src/main/webapp/gxt/desktop/images/taskbar/black/startbutton.gif create mode 100644 src/main/webapp/gxt/desktop/images/taskbar/black/taskbar-split-h.gif create mode 100644 src/main/webapp/gxt/desktop/images/taskbar/black/taskbar-start-panel-bg.gif create mode 100644 src/main/webapp/gxt/desktop/images/taskbar/black/taskbutton.gif create mode 100644 src/main/webapp/gxt/desktop/images/taskbar/black/taskbuttons-panel-bg.gif create mode 100644 src/main/webapp/gxt/desktop/images/winbar-bg.gif create mode 100644 src/main/webapp/gxt/desktop/images/winbar-btn.gif create mode 100644 src/main/webapp/gxt/desktop/images/windows-bg.gif create mode 100644 src/main/webapp/gxt/desktop/wallpapers/desktop.jpg create mode 100644 src/main/webapp/gxt/icons/connect.png create mode 100644 src/main/webapp/gxt/images/default/box/corners-blue.gif create mode 100644 src/main/webapp/gxt/images/default/box/corners.gif create mode 100644 src/main/webapp/gxt/images/default/box/l-blue.gif create mode 100644 src/main/webapp/gxt/images/default/box/l.gif create mode 100644 src/main/webapp/gxt/images/default/box/r-blue.gif create mode 100644 src/main/webapp/gxt/images/default/box/r.gif create mode 100644 src/main/webapp/gxt/images/default/box/tb-blue.gif create mode 100644 src/main/webapp/gxt/images/default/box/tb.gif create mode 100644 src/main/webapp/gxt/images/default/button/arrow.gif create mode 100644 src/main/webapp/gxt/images/default/button/btn-arrow.gif create mode 100644 src/main/webapp/gxt/images/default/button/btn-sprite.gif create mode 100644 src/main/webapp/gxt/images/default/button/btn.gif create mode 100644 src/main/webapp/gxt/images/default/button/group-cs.gif create mode 100644 src/main/webapp/gxt/images/default/button/group-lr.gif create mode 100644 src/main/webapp/gxt/images/default/button/group-tb.gif create mode 100644 src/main/webapp/gxt/images/default/button/s-arrow-b-noline.gif create mode 100644 src/main/webapp/gxt/images/default/button/s-arrow-b.gif create mode 100644 src/main/webapp/gxt/images/default/button/s-arrow-bo.gif create mode 100644 src/main/webapp/gxt/images/default/button/s-arrow-noline.gif create mode 100644 src/main/webapp/gxt/images/default/button/s-arrow-o.gif create mode 100644 src/main/webapp/gxt/images/default/button/s-arrow.gif create mode 100644 src/main/webapp/gxt/images/default/dd/drop-add.gif create mode 100644 src/main/webapp/gxt/images/default/dd/drop-no.gif create mode 100644 src/main/webapp/gxt/images/default/dd/drop-yes.gif create mode 100644 src/main/webapp/gxt/images/default/editor/tb-sprite.gif create mode 100644 src/main/webapp/gxt/images/default/form/checkbox.gif create mode 100644 src/main/webapp/gxt/images/default/form/clear-trigger.gif create mode 100644 src/main/webapp/gxt/images/default/form/date-trigger.gif create mode 100644 src/main/webapp/gxt/images/default/form/error-tip-corners.gif create mode 100644 src/main/webapp/gxt/images/default/form/exclamation.gif create mode 100644 src/main/webapp/gxt/images/default/form/radio.gif create mode 100644 src/main/webapp/gxt/images/default/form/search-trigger.gif create mode 100644 src/main/webapp/gxt/images/default/form/text-bg.gif create mode 100644 src/main/webapp/gxt/images/default/form/trigger-tpl.gif create mode 100644 src/main/webapp/gxt/images/default/form/trigger.gif create mode 100644 src/main/webapp/gxt/images/default/gradient-bg.gif create mode 100644 src/main/webapp/gxt/images/default/grid/arrow-left-white.gif create mode 100644 src/main/webapp/gxt/images/default/grid/arrow-right-white.gif create mode 100644 src/main/webapp/gxt/images/default/grid/col-move-bottom.gif create mode 100644 src/main/webapp/gxt/images/default/grid/col-move-top.gif create mode 100644 src/main/webapp/gxt/images/default/grid/columns.gif create mode 100644 src/main/webapp/gxt/images/default/grid/dirty.gif create mode 100644 src/main/webapp/gxt/images/default/grid/done.gif create mode 100644 src/main/webapp/gxt/images/default/grid/drop-no.gif create mode 100644 src/main/webapp/gxt/images/default/grid/drop-yes.gif create mode 100644 src/main/webapp/gxt/images/default/grid/footer-bg.gif create mode 100644 src/main/webapp/gxt/images/default/grid/grid-blue-hd.gif create mode 100644 src/main/webapp/gxt/images/default/grid/grid-blue-split.gif create mode 100644 src/main/webapp/gxt/images/default/grid/grid-hrow.gif create mode 100644 src/main/webapp/gxt/images/default/grid/grid-loading.gif create mode 100644 src/main/webapp/gxt/images/default/grid/grid-split.gif create mode 100644 src/main/webapp/gxt/images/default/grid/grid-vista-hd.gif create mode 100644 src/main/webapp/gxt/images/default/grid/grid3-hd-btn.gif create mode 100644 src/main/webapp/gxt/images/default/grid/grid3-hrow-group.gif create mode 100644 src/main/webapp/gxt/images/default/grid/grid3-hrow-over.gif create mode 100644 src/main/webapp/gxt/images/default/grid/grid3-hrow.gif create mode 100644 src/main/webapp/gxt/images/default/grid/grid3-special-col-bg.gif create mode 100644 src/main/webapp/gxt/images/default/grid/grid3-special-col-sel-bg.gif create mode 100644 src/main/webapp/gxt/images/default/grid/group-by.gif create mode 100644 src/main/webapp/gxt/images/default/grid/group-expand-sprite.gif create mode 100644 src/main/webapp/gxt/images/default/grid/hd-pop.gif create mode 100644 src/main/webapp/gxt/images/default/grid/hmenu-asc.gif create mode 100644 src/main/webapp/gxt/images/default/grid/hmenu-desc.gif create mode 100644 src/main/webapp/gxt/images/default/grid/hmenu-lock.gif create mode 100644 src/main/webapp/gxt/images/default/grid/hmenu-lock.png create mode 100644 src/main/webapp/gxt/images/default/grid/hmenu-unlock.gif create mode 100644 src/main/webapp/gxt/images/default/grid/hmenu-unlock.png create mode 100644 src/main/webapp/gxt/images/default/grid/invalid_line.gif create mode 100644 src/main/webapp/gxt/images/default/grid/loading.gif create mode 100644 src/main/webapp/gxt/images/default/grid/mso-hd.gif create mode 100644 src/main/webapp/gxt/images/default/grid/nowait.gif create mode 100644 src/main/webapp/gxt/images/default/grid/page-first-disabled.gif create mode 100644 src/main/webapp/gxt/images/default/grid/page-first.gif create mode 100644 src/main/webapp/gxt/images/default/grid/page-last-disabled.gif create mode 100644 src/main/webapp/gxt/images/default/grid/page-last.gif create mode 100644 src/main/webapp/gxt/images/default/grid/page-next-disabled.gif create mode 100644 src/main/webapp/gxt/images/default/grid/page-next.gif create mode 100644 src/main/webapp/gxt/images/default/grid/page-prev-disabled.gif create mode 100644 src/main/webapp/gxt/images/default/grid/page-prev.gif create mode 100644 src/main/webapp/gxt/images/default/grid/pick-button.gif create mode 100644 src/main/webapp/gxt/images/default/grid/refresh.gif create mode 100644 src/main/webapp/gxt/images/default/grid/refresh.png create mode 100644 src/main/webapp/gxt/images/default/grid/row-check-sprite.gif create mode 100644 src/main/webapp/gxt/images/default/grid/row-expand-sprite.gif create mode 100644 src/main/webapp/gxt/images/default/grid/row-over.gif create mode 100644 src/main/webapp/gxt/images/default/grid/row-sel.gif create mode 100644 src/main/webapp/gxt/images/default/grid/sort-hd.gif create mode 100644 src/main/webapp/gxt/images/default/grid/sort_asc.gif create mode 100644 src/main/webapp/gxt/images/default/grid/sort_desc.gif create mode 100644 src/main/webapp/gxt/images/default/grid/wait.gif create mode 100644 src/main/webapp/gxt/images/default/layout/collapse.gif create mode 100644 src/main/webapp/gxt/images/default/layout/expand.gif create mode 100644 src/main/webapp/gxt/images/default/layout/gradient-bg.gif create mode 100644 src/main/webapp/gxt/images/default/layout/mini-bottom.gif create mode 100644 src/main/webapp/gxt/images/default/layout/mini-left.gif create mode 100644 src/main/webapp/gxt/images/default/layout/mini-right.gif create mode 100644 src/main/webapp/gxt/images/default/layout/mini-top.gif create mode 100644 src/main/webapp/gxt/images/default/layout/ns-collapse.gif create mode 100644 src/main/webapp/gxt/images/default/layout/ns-expand.gif create mode 100644 src/main/webapp/gxt/images/default/layout/panel-close.gif create mode 100644 src/main/webapp/gxt/images/default/layout/panel-title-bg.gif create mode 100644 src/main/webapp/gxt/images/default/layout/panel-title-light-bg.gif create mode 100644 src/main/webapp/gxt/images/default/layout/stick.gif create mode 100644 src/main/webapp/gxt/images/default/layout/stuck.gif create mode 100644 src/main/webapp/gxt/images/default/layout/tab-close-on.gif create mode 100644 src/main/webapp/gxt/images/default/layout/tab-close.gif create mode 100644 src/main/webapp/gxt/images/default/menu/checked.gif create mode 100644 src/main/webapp/gxt/images/default/menu/group-checked.gif create mode 100644 src/main/webapp/gxt/images/default/menu/item-over.gif create mode 100644 src/main/webapp/gxt/images/default/menu/menu-parent.gif create mode 100644 src/main/webapp/gxt/images/default/menu/menu.gif create mode 100644 src/main/webapp/gxt/images/default/menu/unchecked.gif create mode 100644 src/main/webapp/gxt/images/default/panel/corners-sprite.gif create mode 100644 src/main/webapp/gxt/images/default/panel/left-right.gif create mode 100644 src/main/webapp/gxt/images/default/panel/light-hd.gif create mode 100644 src/main/webapp/gxt/images/default/panel/tool-sprite-tpl.gif create mode 100644 src/main/webapp/gxt/images/default/panel/tool-sprites.gif create mode 100644 src/main/webapp/gxt/images/default/panel/tools-sprites-trans.gif create mode 100644 src/main/webapp/gxt/images/default/panel/top-bottom.gif create mode 100644 src/main/webapp/gxt/images/default/panel/top-bottom.png create mode 100644 src/main/webapp/gxt/images/default/panel/white-corners-sprite.gif create mode 100644 src/main/webapp/gxt/images/default/panel/white-left-right.gif create mode 100644 src/main/webapp/gxt/images/default/panel/white-top-bottom.gif create mode 100644 src/main/webapp/gxt/images/default/progress/progress-bg.gif create mode 100644 src/main/webapp/gxt/images/default/qtip/bg.gif create mode 100644 src/main/webapp/gxt/images/default/qtip/close.gif create mode 100644 src/main/webapp/gxt/images/default/qtip/tip-anchor-sprite.gif create mode 100644 src/main/webapp/gxt/images/default/qtip/tip-sprite.gif create mode 100644 src/main/webapp/gxt/images/default/s.gif create mode 100644 src/main/webapp/gxt/images/default/shadow-c.png create mode 100644 src/main/webapp/gxt/images/default/shadow-lr.png create mode 100644 src/main/webapp/gxt/images/default/shadow.png create mode 100644 src/main/webapp/gxt/images/default/shared/blue-loading.gif create mode 100644 src/main/webapp/gxt/images/default/shared/calendar.gif create mode 100644 src/main/webapp/gxt/images/default/shared/clear.gif create mode 100644 src/main/webapp/gxt/images/default/shared/glass-bg.gif create mode 100644 src/main/webapp/gxt/images/default/shared/hd-sprite.gif create mode 100644 src/main/webapp/gxt/images/default/shared/large-loading.gif create mode 100644 src/main/webapp/gxt/images/default/shared/left-btn.gif create mode 100644 src/main/webapp/gxt/images/default/shared/loading-balls.gif create mode 100644 src/main/webapp/gxt/images/default/shared/right-btn.gif create mode 100644 src/main/webapp/gxt/images/default/shared/warning.gif create mode 100644 src/main/webapp/gxt/images/default/sizer/e-handle-dark.gif create mode 100644 src/main/webapp/gxt/images/default/sizer/e-handle.gif create mode 100644 src/main/webapp/gxt/images/default/sizer/ne-handle-dark.gif create mode 100644 src/main/webapp/gxt/images/default/sizer/ne-handle.gif create mode 100644 src/main/webapp/gxt/images/default/sizer/nw-handle-dark.gif create mode 100644 src/main/webapp/gxt/images/default/sizer/nw-handle.gif create mode 100644 src/main/webapp/gxt/images/default/sizer/s-handle-dark.gif create mode 100644 src/main/webapp/gxt/images/default/sizer/s-handle.gif create mode 100644 src/main/webapp/gxt/images/default/sizer/se-handle-dark.gif create mode 100644 src/main/webapp/gxt/images/default/sizer/se-handle.gif create mode 100644 src/main/webapp/gxt/images/default/sizer/square.gif create mode 100644 src/main/webapp/gxt/images/default/sizer/sw-handle-dark.gif create mode 100644 src/main/webapp/gxt/images/default/sizer/sw-handle.gif create mode 100644 src/main/webapp/gxt/images/default/slider/slider-bg.png create mode 100644 src/main/webapp/gxt/images/default/slider/slider-thumb.png create mode 100644 src/main/webapp/gxt/images/default/slider/slider-v-bg.png create mode 100644 src/main/webapp/gxt/images/default/slider/slider-v-thumb.png create mode 100644 src/main/webapp/gxt/images/default/tabs/scroll-left.gif create mode 100644 src/main/webapp/gxt/images/default/tabs/scroll-right.gif create mode 100644 src/main/webapp/gxt/images/default/tabs/scroller-bg.gif create mode 100644 src/main/webapp/gxt/images/default/tabs/tab-btm-inactive-left-bg.gif create mode 100644 src/main/webapp/gxt/images/default/tabs/tab-btm-inactive-right-bg.gif create mode 100644 src/main/webapp/gxt/images/default/tabs/tab-btm-left-bg.gif create mode 100644 src/main/webapp/gxt/images/default/tabs/tab-btm-right-bg.gif create mode 100644 src/main/webapp/gxt/images/default/tabs/tab-close.gif create mode 100644 src/main/webapp/gxt/images/default/tabs/tab-strip-bg.gif create mode 100644 src/main/webapp/gxt/images/default/tabs/tab-strip-bg.png create mode 100644 src/main/webapp/gxt/images/default/tabs/tab-strip-btm-bg.gif create mode 100644 src/main/webapp/gxt/images/default/tabs/tabs-sprite.gif create mode 100644 src/main/webapp/gxt/images/default/toolbar/bg.gif create mode 100644 src/main/webapp/gxt/images/default/toolbar/btn-arrow-light.gif create mode 100644 src/main/webapp/gxt/images/default/toolbar/btn-arrow.gif create mode 100644 src/main/webapp/gxt/images/default/toolbar/btn-over-bg.gif create mode 100644 src/main/webapp/gxt/images/default/toolbar/gray-bg.gif create mode 100644 src/main/webapp/gxt/images/default/toolbar/more.gif create mode 100644 src/main/webapp/gxt/images/default/toolbar/tb-bg.gif create mode 100644 src/main/webapp/gxt/images/default/toolbar/tb-btn-sprite.gif create mode 100644 src/main/webapp/gxt/images/default/toolbar/tb-xl-btn-sprite.gif create mode 100644 src/main/webapp/gxt/images/default/toolbar/tb-xl-sep.gif create mode 100644 src/main/webapp/gxt/images/default/tree/arrows.gif create mode 100644 src/main/webapp/gxt/images/default/tree/drop-add.gif create mode 100644 src/main/webapp/gxt/images/default/tree/drop-between.gif create mode 100644 src/main/webapp/gxt/images/default/tree/drop-no.gif create mode 100644 src/main/webapp/gxt/images/default/tree/drop-over.gif create mode 100644 src/main/webapp/gxt/images/default/tree/drop-under.gif create mode 100644 src/main/webapp/gxt/images/default/tree/drop-yes.gif create mode 100644 src/main/webapp/gxt/images/default/tree/elbow-end-minus-nl.gif create mode 100644 src/main/webapp/gxt/images/default/tree/elbow-end-minus.gif create mode 100644 src/main/webapp/gxt/images/default/tree/elbow-end-plus-nl.gif create mode 100644 src/main/webapp/gxt/images/default/tree/elbow-end-plus.gif create mode 100644 src/main/webapp/gxt/images/default/tree/elbow-end.gif create mode 100644 src/main/webapp/gxt/images/default/tree/elbow-line.gif create mode 100644 src/main/webapp/gxt/images/default/tree/elbow-minus-nl.gif create mode 100644 src/main/webapp/gxt/images/default/tree/elbow-minus.gif create mode 100644 src/main/webapp/gxt/images/default/tree/elbow-plus-nl.gif create mode 100644 src/main/webapp/gxt/images/default/tree/elbow-plus.gif create mode 100644 src/main/webapp/gxt/images/default/tree/elbow.gif create mode 100644 src/main/webapp/gxt/images/default/tree/folder-open.gif create mode 100644 src/main/webapp/gxt/images/default/tree/folder.gif create mode 100644 src/main/webapp/gxt/images/default/tree/leaf.gif create mode 100644 src/main/webapp/gxt/images/default/tree/loading.gif create mode 100644 src/main/webapp/gxt/images/default/tree/s.gif create mode 100644 src/main/webapp/gxt/images/default/window/icon-error.gif create mode 100644 src/main/webapp/gxt/images/default/window/icon-info.gif create mode 100644 src/main/webapp/gxt/images/default/window/icon-question.gif create mode 100644 src/main/webapp/gxt/images/default/window/icon-warning.gif create mode 100644 src/main/webapp/gxt/images/default/window/left-corners.png create mode 100644 src/main/webapp/gxt/images/default/window/left-right.png create mode 100644 src/main/webapp/gxt/images/default/window/right-corners.png create mode 100644 src/main/webapp/gxt/images/default/window/top-bottom.png create mode 100644 src/main/webapp/gxt/images/gray/button/btn-arrow.gif create mode 100644 src/main/webapp/gxt/images/gray/button/btn-sprite.gif create mode 100644 src/main/webapp/gxt/images/gray/button/btn.gif create mode 100644 src/main/webapp/gxt/images/gray/button/group-cs.gif create mode 100644 src/main/webapp/gxt/images/gray/button/group-lr.gif create mode 100644 src/main/webapp/gxt/images/gray/button/group-tb.gif create mode 100644 src/main/webapp/gxt/images/gray/gradient-bg.gif create mode 100644 src/main/webapp/gxt/images/gray/panel/corners-sprite.gif create mode 100644 src/main/webapp/gxt/images/gray/panel/left-right.gif create mode 100644 src/main/webapp/gxt/images/gray/panel/light-hd.gif create mode 100644 src/main/webapp/gxt/images/gray/panel/tool-sprite-tpl.gif create mode 100644 src/main/webapp/gxt/images/gray/panel/tool-sprites.gif create mode 100644 src/main/webapp/gxt/images/gray/panel/tools-sprites-trans.gif create mode 100644 src/main/webapp/gxt/images/gray/panel/top-bottom.gif create mode 100644 src/main/webapp/gxt/images/gray/panel/top-bottom.png create mode 100644 src/main/webapp/gxt/images/gray/panel/white-corners-sprite.gif create mode 100644 src/main/webapp/gxt/images/gray/panel/white-left-right.gif create mode 100644 src/main/webapp/gxt/images/gray/panel/white-top-bottom.gif create mode 100644 src/main/webapp/gxt/images/gray/qtip/bg.gif create mode 100644 src/main/webapp/gxt/images/gray/qtip/close.gif create mode 100644 src/main/webapp/gxt/images/gray/qtip/tip-sprite.gif create mode 100644 src/main/webapp/gxt/images/gray/s.gif create mode 100644 src/main/webapp/gxt/images/gray/tabs/scroll-left.gif create mode 100644 src/main/webapp/gxt/images/gray/tabs/scroll-right.gif create mode 100644 src/main/webapp/gxt/images/gray/tabs/scroller-bg.gif create mode 100644 src/main/webapp/gxt/images/gray/tabs/tab-btm-inactive-left-bg.gif create mode 100644 src/main/webapp/gxt/images/gray/tabs/tab-btm-inactive-right-bg.gif create mode 100644 src/main/webapp/gxt/images/gray/tabs/tab-btm-left-bg.gif create mode 100644 src/main/webapp/gxt/images/gray/tabs/tab-btm-right-bg.gif create mode 100644 src/main/webapp/gxt/images/gray/tabs/tab-close.gif create mode 100644 src/main/webapp/gxt/images/gray/tabs/tab-strip-bg.gif create mode 100644 src/main/webapp/gxt/images/gray/tabs/tab-strip-bg.png create mode 100644 src/main/webapp/gxt/images/gray/tabs/tab-strip-btm-bg.gif create mode 100644 src/main/webapp/gxt/images/gray/tabs/tabs-sprite.gif create mode 100644 src/main/webapp/gxt/images/gray/toolbar/bg.gif create mode 100644 src/main/webapp/gxt/images/gray/toolbar/btn-arrow-light.gif create mode 100644 src/main/webapp/gxt/images/gray/toolbar/btn-arrow.gif create mode 100644 src/main/webapp/gxt/images/gray/toolbar/btn-over-bg.gif create mode 100644 src/main/webapp/gxt/images/gray/toolbar/gray-bg.gif create mode 100644 src/main/webapp/gxt/images/gray/toolbar/tb-bg.gif create mode 100644 src/main/webapp/gxt/images/gray/toolbar/tb-btn-sprite.gif create mode 100644 src/main/webapp/gxt/images/gray/window/icon-error.gif create mode 100644 src/main/webapp/gxt/images/gray/window/icon-info.gif create mode 100644 src/main/webapp/gxt/images/gray/window/icon-question.gif create mode 100644 src/main/webapp/gxt/images/gray/window/icon-warning.gif create mode 100644 src/main/webapp/gxt/images/gray/window/left-corners.png create mode 100644 src/main/webapp/gxt/images/gray/window/left-corners.pspimage create mode 100644 src/main/webapp/gxt/images/gray/window/left-right.png create mode 100644 src/main/webapp/gxt/images/gray/window/right-corners.png create mode 100644 src/main/webapp/gxt/images/gray/window/top-bottom.png create mode 100644 src/main/webapp/gxt/images/gxt/dd/insert-bg.gif create mode 100644 src/main/webapp/gxt/images/gxt/grid/row-editor-bg.gif create mode 100644 src/main/webapp/gxt/images/gxt/grid/row-editor-btns.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/bottom2.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/columns.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/done.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/doubleleft2.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/doubleright2.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/down2.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/folder-closed.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/folder-closed.png create mode 100644 src/main/webapp/gxt/images/gxt/icons/folder.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/folder.png create mode 100644 src/main/webapp/gxt/images/gxt/icons/grid-loading.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/hmenu-asc.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/hmenu-desc.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/left2.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/loading.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/nowait.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/page-first-disabled.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/page-first.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/page-last-disabled.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/page-last.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/page-next-disabled.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/page-next.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/page-prev-disabled.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/page-prev.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/paging.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/right2.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/tabs.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/top2.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/up2.gif create mode 100644 src/main/webapp/gxt/images/gxt/icons/wait.gif create mode 100644 src/main/webapp/gxt/images/gxt/info/corners-sprite.gif create mode 100644 src/main/webapp/gxt/images/gxt/info/top-bottom.gif create mode 100644 src/main/webapp/gxt/images/gxt/menu/disabledcheck.gif create mode 100644 src/main/webapp/gxt/images/gxt/shared/clear.gif create mode 100644 src/main/webapp/gxt/images/gxt/shared/large-loading.gif create mode 100644 src/main/webapp/gxt/images/gxt/shared/select-18-bg.gif create mode 100644 src/main/webapp/gxt/images/gxt/shared/select-19-bg-gray.gif create mode 100644 src/main/webapp/gxt/images/gxt/shared/select-19-bg.gif create mode 100644 src/main/webapp/gxt/images/gxt/shared/select-bg.gif create mode 100644 src/main/webapp/gxt/images/gxt/shared/select-light.gif create mode 100644 src/main/webapp/gxt/images/gxt/table/row-over.gif create mode 100644 src/main/webapp/gxt/images/gxt/table/vs-column-bg.gif create mode 100644 src/main/webapp/gxt/images/gxt/table/vsort-asc.gif create mode 100644 src/main/webapp/gxt/images/gxt/table/vsort-desc.gif create mode 100644 src/main/webapp/gxt/images/gxt/tree/checked.gif create mode 100644 src/main/webapp/gxt/images/gxt/tree/joint-close.gif create mode 100644 src/main/webapp/gxt/images/gxt/tree/joint-open.gif create mode 100644 src/main/webapp/gxt/images/gxt/tree/notchecked.gif create mode 100644 src/main/webapp/gxt/images/gxt/tree/tree-table-special-col-sel.gif create mode 100644 src/main/webapp/gxt/images/gxt/tree/tree-table-special-col.gif create mode 100644 src/main/webapp/gxt/images/gxt/tree/vnode.gif create mode 100644 src/main/webapp/gxt/images/gxt/tree/vnode_transparent.gif create mode 100644 src/main/webapp/gxt/themes/slate/css/xtheme-slate.css create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/button/arrow.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/button/btn-arrow.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/button/btn-sprite.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/button/btn.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/button/group-cs.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/button/group-lr.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/button/group-tb.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/button/s-arrow-b.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/button/s-arrow-bo.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/button/s-arrow-noline.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/button/s-arrow-o.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/button/s-arrow.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/editor/tb-sprite.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/form/checkbox.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/form/clear-trigger.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/form/date-trigger.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/form/radio.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/form/search-trigger.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/form/trigger-tpl.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/form/trigger.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/gradient-bg.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/arrow-left-white.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/arrow-right-white.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/col-move-bottom.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/col-move-top.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/footer-bg.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/grid-blue-hd.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/grid-blue-split.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/grid-hrow.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/grid-split.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/grid-vista-hd.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/grid3-hd-btn.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/grid3-hrow-over.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/grid3-hrow.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/grid3-special-col-bg.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/grid3-special-col-sel-bg.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/group-expand-sprite.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/mso-hd.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/page-first-disabled.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/page-first.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/page-last-disabled.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/page-last.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/page-next-disabled.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/page-next.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/page-prev-disabled.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/page-prev.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/refresh.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/row-over.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/row-sel.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/sort_asc.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/grid/sort_desc.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/menu/checked.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/menu/group-checked.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/menu/item-over - Copy.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/menu/item-over.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/menu/menu-parent.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/menu/menu.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/menu/unchecked.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/panel/corners-sprite.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/panel/left-right.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/panel/light-hd.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/panel/tool-sprite-tpl.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/panel/tool-sprites.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/panel/tools-sprites-trans.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/panel/top-bottom.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/panel/top-bottom.png create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/panel/white-corners-sprite.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/panel/white-left-right.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/panel/white-top-bottom.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/progress/progress-bg.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/qtip/bg.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/qtip/close.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/qtip/tip-sprite.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/s.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/shared/glass-bg.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/shared/hd-sprite.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/shared/left-btn.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/shared/right-btn.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/sizer/e-handle-dark.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/sizer/e-handle.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/sizer/ne-handle-dark.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/sizer/ne-handle.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/sizer/nw-handle-dark.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/sizer/nw-handle.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/sizer/s-handle-dark.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/sizer/s-handle.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/sizer/se-handle-dark.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/sizer/se-handle.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/sizer/square.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/sizer/sw-handle-dark.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/sizer/sw-handle.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/slider/slider-bg.png create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/slider/slider-thumb.png create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/slider/slider-v-bg.png create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/slider/slider-v-thumb.png create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/tabs/scroll-left.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/tabs/scroll-right.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/tabs/scroller-bg.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/tabs/tab-btm-inactive-left-bg.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/tabs/tab-btm-inactive-right-bg.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/tabs/tab-btm-left-bg.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/tabs/tab-btm-right-bg.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/tabs/tab-close.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/tabs/tab-strip-bg.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/tabs/tab-strip-bg.png create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/tabs/tab-strip-btm-bg.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/tabs/tabs-sprite.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/toolbar/bg.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/toolbar/btn-arrow-light.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/toolbar/btn-arrow.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/toolbar/btn-over-bg.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/toolbar/gray-bg.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/toolbar/sep.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/toolbar/tb-bg.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/toolbar/tb-btn-sprite.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/tree/arrows.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/window/icon-error.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/window/icon-info.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/window/icon-question.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/window/icon-warning.gif create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/window/left-corners.png create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/window/left-right.png create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/window/right-corners.png create mode 100644 src/main/webapp/gxt/themes/slate/images/slate/window/top-bottom.png create mode 100644 src/main/webapp/images/D4infraFWS.png create mode 100644 src/main/webapp/images/bg-pattern.png create mode 100644 src/main/webapp/images/d4infra.gif create mode 100644 src/main/webapp/images/icons/GenericResource.png create mode 100644 src/main/webapp/images/icons/about.png create mode 100644 src/main/webapp/images/icons/add.png create mode 100755 src/main/webapp/images/icons/application_cascade.png create mode 100644 src/main/webapp/images/icons/bgTree.gif create mode 100644 src/main/webapp/images/icons/bigcube.gif create mode 100644 src/main/webapp/images/icons/brick_add.png create mode 100644 src/main/webapp/images/icons/brick_delete.png create mode 100644 src/main/webapp/images/icons/clean-restart.png create mode 100644 src/main/webapp/images/icons/close.png create mode 100644 src/main/webapp/images/icons/closeall.png create mode 100644 src/main/webapp/images/icons/cog.png create mode 100644 src/main/webapp/images/icons/cog_add.png create mode 100644 src/main/webapp/images/icons/cog_go.png create mode 100644 src/main/webapp/images/icons/collection2.png create mode 100644 src/main/webapp/images/icons/console.png create mode 100644 src/main/webapp/images/icons/cube.gif create mode 100644 src/main/webapp/images/icons/delete.png create mode 100644 src/main/webapp/images/icons/deploy.png create mode 100644 src/main/webapp/images/icons/detach.png create mode 100644 src/main/webapp/images/icons/error.png create mode 100644 src/main/webapp/images/icons/eye.png create mode 100644 src/main/webapp/images/icons/folder.png create mode 100644 src/main/webapp/images/icons/folder_database.png create mode 100644 src/main/webapp/images/icons/forcedelete.png create mode 100644 src/main/webapp/images/icons/gcoreEndpoint.png create mode 100644 src/main/webapp/images/icons/grid.png create mode 100644 src/main/webapp/images/icons/hostingNode.png create mode 100644 src/main/webapp/images/icons/install.png create mode 100644 src/main/webapp/images/icons/is.png create mode 100644 src/main/webapp/images/icons/link.png create mode 100644 src/main/webapp/images/icons/log.png create mode 100644 src/main/webapp/images/icons/new.png create mode 100644 src/main/webapp/images/icons/plugin.png create mode 100644 src/main/webapp/images/icons/pluginCM.png create mode 100644 src/main/webapp/images/icons/profile-big.gif create mode 100644 src/main/webapp/images/icons/profile.gif create mode 100644 src/main/webapp/images/icons/refresh.png create mode 100644 src/main/webapp/images/icons/report-big.png create mode 100644 src/main/webapp/images/icons/report.png create mode 100644 src/main/webapp/images/icons/restart.png create mode 100644 src/main/webapp/images/icons/serviceEndpoint.png create mode 100644 src/main/webapp/images/icons/shutdown.png create mode 100644 src/main/webapp/images/icons/software.png create mode 100644 src/main/webapp/images/icons/sweeper.png create mode 100644 src/main/webapp/images/icons/sweeper2.png create mode 100644 src/main/webapp/images/icons/table_multiple.png create mode 100644 src/main/webapp/images/icons/trash.png create mode 100644 src/main/webapp/images/icons/upgrade.png create mode 100644 src/main/webapp/images/icons/validate.gif create mode 100644 src/main/webapp/images/icons/wand.png create mode 100644 src/main/webapp/images/icons/warning.png create mode 100644 src/main/webapp/images/icons/world.png create mode 100644 src/main/webapp/images/icons/ws-resource.png create mode 100644 src/main/webapp/images/loader.gif create mode 100644 src/main/webapp/images/pattern.gif create mode 100644 src/main/webapp/images/resource-icons/blue.png create mode 100644 src/main/webapp/images/resource-icons/green.png create mode 100644 src/main/webapp/images/resource-icons/orange.png create mode 100644 src/main/webapp/images/resource-icons/ramarro.png create mode 100644 src/main/webapp/images/resource-icons/red.png create mode 100644 src/main/webapp/images/resource-icons/violet.png create mode 100644 src/main/webapp/images/resource-icons/yellow.png create mode 100644 src/main/webapp/images/sourceD4infra.psd create mode 100644 src/main/webapp/images/tree_diag.png create mode 100644 src/main/webapp/mask_images/7_capacities.gif create mode 100644 src/main/webapp/mask_images/D4S-II.jpg create mode 100644 src/main/webapp/mask_images/D4ScienceInfrastructure.png create mode 100644 src/main/webapp/mask_images/banner.jpg create mode 100644 src/main/webapp/mask_images/e_infrastructure.gif create mode 100644 src/main/webapp/mask_images/eu.jpg create mode 100644 src/main/webapp/mask_images/favicon.gif create mode 100644 src/main/webapp/mask_images/gCube.png create mode 100644 src/main/webapp/mask_images/loader.gif create mode 100644 src/main/webapp/mask_images/mask.gif create mode 100644 src/main/webapp/mask_images/mask1.gif create mode 100644 src/main/webapp/mask_images/mask2.gif create mode 100644 src/main/webapp/mask_images/mask3.gif create mode 100644 src/main/webapp/mask_images/mask4.gif create mode 100644 src/main/webapp/xmlverbatim.css create mode 100644 src/test/java/org/gcube/portlets/admin/resourcemanagement/client/GwtTestResourceManagementPortlet.java create mode 100644 src/test/resources/org/gcube/portlets/admin/resourcemanagement/ResourceManagementPortletJUnit.gwt.xml diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..f61fed3 --- /dev/null +++ b/.classpath @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..f074d24 --- /dev/null +++ b/.project @@ -0,0 +1,60 @@ + + + resource-management + resource-management project + + + + + org.eclipse.wst.jsdt.core.javascriptValidator + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + org.maven.ide.eclipse.maven2Builder + + + + + com.google.gdt.eclipse.core.webAppProjectValidator + + + + + com.google.gwt.eclipse.core.gwtProjectValidator + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.maven.ide.eclipse.maven2Nature + org.eclipse.jdt.core.javanature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.wst.jsdt.core.jsNature + com.google.gwt.eclipse.core.gwtNature + com.liferay.ide.core.liferayNature + + diff --git a/.settings/.jsdtscope b/.settings/.jsdtscope new file mode 100644 index 0000000..ba3c245 --- /dev/null +++ b/.settings/.jsdtscope @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/.settings/com.google.appengine.eclipse.core.prefs b/.settings/com.google.appengine.eclipse.core.prefs new file mode 100644 index 0000000..a60576c --- /dev/null +++ b/.settings/com.google.appengine.eclipse.core.prefs @@ -0,0 +1,3 @@ +#Thu Jun 16 10:18:26 CEST 2011 +eclipse.preferences.version=1 +filesCopiedToWebInfLib= diff --git a/.settings/com.google.gdt.eclipse.core.prefs b/.settings/com.google.gdt.eclipse.core.prefs new file mode 100644 index 0000000..ed7797d --- /dev/null +++ b/.settings/com.google.gdt.eclipse.core.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +jarsExcludedFromWebInfLib= +lastWarOutDir=/Users/massi/Documents/workspace/resource-management/target/resource-management-5.3.0-SNAPSHOT +warSrcDir=src/main/webapp +warSrcDirIsOutput=false diff --git a/.settings/com.google.gwt.eclipse.core.prefs b/.settings/com.google.gwt.eclipse.core.prefs new file mode 100644 index 0000000..c803c44 --- /dev/null +++ b/.settings/com.google.gwt.eclipse.core.prefs @@ -0,0 +1,5 @@ +#Thu Jun 16 11:14:17 CEST 2011 +eclipse.preferences.version=1 +entryPointModules= +filesCopiedToWebInfLib=gwt-servlet.jar +gwtCompileSettings=PGd3dC1jb21waWxlLXNldHRpbmdzPjxsb2ctbGV2ZWw+SU5GTzwvbG9nLWxldmVsPjxvdXRwdXQtc3R5bGU+T0JGVVNDQVRFRDwvb3V0cHV0LXN0eWxlPjxleHRyYS1hcmdzPjwhW0NEQVRBWy13YXIgc3JjL21haW4vd2ViYXBwXV0+PC9leHRyYS1hcmdzPjx2bS1hcmdzPjwhW0NEQVRBWy1YbXg1MTJtXV0+PC92bS1hcmdzPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLmNvbXBhbnkuU29tZU1vZHVsZTwvZW50cnktcG9pbnQtbW9kdWxlPjwvZ3d0LWNvbXBpbGUtc2V0dGluZ3M+ diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..dd9c6a1 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,7 @@ +#Wed Feb 27 16:43:28 CET 2013 +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 +encoding//src/test/java=UTF-8 +encoding//src/test/resources=UTF-8 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..443e085 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/.settings/org.eclipse.jst.jsp.core.prefs b/.settings/org.eclipse.jst.jsp.core.prefs new file mode 100644 index 0000000..3a5c98d --- /dev/null +++ b/.settings/org.eclipse.jst.jsp.core.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +validateFragments=false +validation.use-project-settings=true diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..4258307 --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,5 @@ +#Wed Feb 27 16:43:28 CET 2013 +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component new file mode 100644 index 0000000..a6d6af1 --- /dev/null +++ b/.settings/org.eclipse.wst.common.component @@ -0,0 +1,19 @@ + + + + + + + + uses + + + uses + + + uses + + + + + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml b/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml new file mode 100644 index 0000000..cc81385 --- /dev/null +++ b/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 0000000..9716eab --- /dev/null +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.container b/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 0000000..3bd5d0a --- /dev/null +++ b/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/.settings/org.eclipse.wst.validation.prefs b/.settings/org.eclipse.wst.validation.prefs new file mode 100644 index 0000000..04cad8c --- /dev/null +++ b/.settings/org.eclipse.wst.validation.prefs @@ -0,0 +1,2 @@ +disabled=06target +eclipse.preferences.version=1 diff --git a/.settings/org.maven.ide.eclipse.prefs b/.settings/org.maven.ide.eclipse.prefs new file mode 100644 index 0000000..c74c58e --- /dev/null +++ b/.settings/org.maven.ide.eclipse.prefs @@ -0,0 +1,9 @@ +#Thu Sep 02 10:42:12 CEST 2010 +activeProfiles= +eclipse.preferences.version=1 +fullBuildGoals=process-test-resources +includeModules=false +resolveWorkspaceProjects=true +resourceFilterGoals=process-resources resources\:testResources +skipCompilerPlugin=true +version=1 diff --git a/.tern-project b/.tern-project new file mode 100644 index 0000000..a185ba0 --- /dev/null +++ b/.tern-project @@ -0,0 +1 @@ +{"ide":{"scriptPaths":[]},"plugins":{"aui":{},"liferay":{},"yui":{}},"libs":["ecma5","browser"]} \ No newline at end of file diff --git a/ResourceManagementPortletTest-dev.launch b/ResourceManagementPortletTest-dev.launch new file mode 100644 index 0000000..aa419ab --- /dev/null +++ b/ResourceManagementPortletTest-dev.launch @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/ResourceManagementPortletTest-prod.launch b/ResourceManagementPortletTest-prod.launch new file mode 100644 index 0000000..d15cdab --- /dev/null +++ b/ResourceManagementPortletTest-prod.launch @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/distro/LICENSE b/distro/LICENSE new file mode 100644 index 0000000..2d9616a --- /dev/null +++ b/distro/LICENSE @@ -0,0 +1 @@ +${gcube.license} \ No newline at end of file diff --git a/distro/README b/distro/README new file mode 100644 index 0000000..35c99c0 --- /dev/null +++ b/distro/README @@ -0,0 +1,67 @@ +The gCube System - ${name} +-------------------------------------------------- + +${description} + + +${gcube.description} + +${gcube.funding} + + +Version +-------------------------------------------------- + +${version} (${buildDate}) + +Please see the file named "changelog.xml" in this directory for the release notes. + + +Authors +-------------------------------------------------- + +* Massimiliano Assante (massimiliano.assante-AT-isti.cnr.it), Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo" - CNR, Pisa (Italy). + + + +Maintainers +----------- + +* Massimiliano Assante (massimiliano.assante-AT-isti.cnr.it), Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo" - CNR, Pisa (Italy). + + +Download information +-------------------------------------------------- + +Source code is available from SVN: + ${scm.url} + +Binaries can be downloaded from the gCube website: + ${gcube.website} + + +Installation +-------------------------------------------------- + +Installation documentation is available on-line in the gCube Wiki: + ${gcube.wikiRoot}/ + + +Documentation +-------------------------------------------------- + +Documentation is available on-line in the gCube Wiki: + ${gcube.wikiRoot}/ + ${gcube.wikiRoot}/ + +Support +-------------------------------------------------- + +Bugs and support requests can be reported in the gCube issue tracking tool: + ${gcube.issueTracking} + + +Licensing +-------------------------------------------------- + +This software is licensed under the terms you may find in the file named "LICENSE" in this directory. diff --git a/distro/changelog.xml b/distro/changelog.xml new file mode 100644 index 0000000..848b83c --- /dev/null +++ b/distro/changelog.xml @@ -0,0 +1,138 @@ + + + Changed codes for AuthZ framework + + + Ported to Liferay 6.2 + Removed Software Upload Widget + + + Added support for new AuthZ framework, Feature #1496 + Removed Activation Record Widget, #1497 + + + Refactored code in dependencies to promote reuse of sweeper + features + Implemented Feature #187, remove scope operation with Report + + Implemented Feature #446 Show SmartGearsDistribution version + instead of SmartGearsDistributionBundle version for Distro Version + + + + Fix for Incident #187, remove scope operation not passing + through Resource Manager + + + + fixed Ticket #1119 Resource Management / Monitor wrong generic + resource query + + Ported to GWT 270 + Updated for showing SmartGears versions in gHN Grid View + + + + Added Host column in grid view for service endpoints + + + Ported to gCore Free Portal + + + New Look And Feel + Ported to GWT 2-5-1 + Ported to Feather Weight Stack + Removed GCF Dependency + Logging with sl4j Enabled + + + added activation record widget as external module + + + Mavenized + + + Reengineered completely to support modules + Added one click feature for retrieving resource profiles + + generic Resource grid view show description + + + Added plugin for TreeManager activation record creation + + + + New Software Upload Wizard integrated + Added support for resource manger service 2 + + + Completely restyled pinned resources panel (former opened + resources panel) using CSS3 and HTML5 + + Added support for runtime resources editing + Added support for remove from scope + Added automatic show of gHN List at startup with possibility + to set it on or off by editing a configuration file + + Added automatic highlighting of low memory or disk machines + and gHN States + + + + First release on gxt and gwt2.0 + for etics 2.0.1 release + + + for etics 2.1.0 release + + + for etics 2.2.0 release + + + for etics 2.2.1 release + + + for etics 2.2.2 release + Added sweeper for invalid resources (expired GHNs and orphan + RIs) + + + + Correctly lists GCUBECollection type from new Content Manager + + Correctly lists VIEW type from new Content Manager + Ported to GWT 2.2 GXT 2.2.3 + + + Added support for runtime resources + + + Added support for runtime resources removal + Added support for runtime resources scope change + + \ No newline at end of file diff --git a/distro/descriptor.xml b/distro/descriptor.xml new file mode 100644 index 0000000..c81acc0 --- /dev/null +++ b/distro/descriptor.xml @@ -0,0 +1,42 @@ + + servicearchive + + tar.gz + + / + + + ${distroDirectory} + / + true + + README + LICENSE + changelog.xml + profile.xml + + 755 + true + + + target/apidocs + /${artifactId}/doc/api + true + 755 + + + + + ${distroDirectory}/profile.xml + ./ + true + + + target/${build.finalName}.war + /${artifactId} + + + \ No newline at end of file diff --git a/distro/profile.xml b/distro/profile.xml new file mode 100644 index 0000000..05f3322 --- /dev/null +++ b/distro/profile.xml @@ -0,0 +1,25 @@ + + + + Service + + ${description} + PortletAdmin + ${artifactId} + ${version} + + + ${artifactId} + ${version} + + ${groupId} + ${artifactId} + ${version} + + + target/${build.finalName}.war + + + + + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..cbf516c --- /dev/null +++ b/pom.xml @@ -0,0 +1,319 @@ + + + + 4.0.0 + + maven-parent + org.gcube.tools + 1.0.0 + + + + org.gcube.portlets.admin + resource-management + 6.3.0-SNAPSHOT + war + gCube Resource Management Portlet + + gCube Resource Management Portlet + + + scm:svn:http://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/${project.artifactId} + scm:https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/${project.artifactId} + http://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/${project.artifactId} + + + + 2.7.0 + 6.2.5 + 3.0 + distro + 1.7 + 1.7 + ${project.build.directory}/${project.build.finalName} + + ${env.CATALINA_HOME} + UTF-8 + UTF-8 + + + + + org.gcube.distribution + maven-portal-bom + LATEST + pom + import + + + + + + com.google.gwt + gwt-user + ${gwtVersion} + provided + + + com.google.gwt + gwt-servlet + ${gwtVersion} + provided + + + org.gcube.portlets.user + gcube-widgets + provided + + + org.gcube.portal + custom-portal-handler + provided + + + com.sencha.gxt + gxt2.2.5-gwt2.X + 2.7.0 + compile + + + com.googlecode.gwtquery + gwtquery + 1.3.3 + + + org.gcube.applicationsupportlayer + aslcore + provided + + + org.gcube.dvos + usermanagement-core + provided + + + org.gcube.portlets.admin + rmp-common-library + [2.7.0-SNAPSHOT, 3.0.0-SNAPSHOT) + + + + org.gcube.resources.discovery + ic-client + provided + + + org.gcube.core + common-fw-clients + provided + + + org.gcube.core + common-clients + provided + + + org.gcube.core + common-scope-maps + compile + + + org.gcube.resourcemanagement + resourcemanager-client + [1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT) + + + org.gcube.resources + registry-publisher + provided + + + org.gcube.resourcemanagement + ghn-manager-client + [1.1.0-SNAPSHOT, 2.0.0-SNAPSHOT) + + + org.gcube.resourcemanagement + softwaregateway-client + [2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT) + + + + org.gcube.portlets.admin + ishealth-monitor-widget + [1.2.0-SNAPSHOT, 2.0.0-SNAPSHOT) + + + org.gcube.portlets.admin + resource-sweeper-widget + [2.2.0-SNAPSHOT, 3.0.0-SNAPSHOT) + + + + com.liferay.portal + portal-service + provided + + + com.liferay.portal + util-java + provided + + + javax.portlet + portlet-api + provided + + + + commons-lang + commons-lang + provided + + + org.apache.commons + commons-compress + compile + + + commons-fileupload + commons-fileupload + compile + + + commons-io + commons-io + compile + + + + log4j + log4j + runtime + + + org.slf4j + slf4j-log4j12 + runtime + + + org.slf4j + slf4j-api + runtime + + + com.allen-sauer.gwt.log + gwt-log + 3.1.7 + compile + + + + + + ${webappDirectory}/WEB-INF/classes + + + + + + org.codehaus.mojo + gwt-maven-plugin + ${gwtVersion} + + + + compile + + + + + + + -Xmx512M -DGLOBUS_LOCATION=${GLOBUS_LOCATION} -Dlog4j.configuration=clientlog4j.properties + ResourceManagementPortlet.html + ${webappDirectory} + + + + + + + org.apache.maven.plugins + maven-war-plugin + 2.1.1 + + + compile + + exploded + + + + + ${webappDirectory} + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + 1.7 + 1.7 + + + + + org.apache.maven.plugins + maven-assembly-plugin + 2.2 + + + ${distroDirectory}/descriptor.xml + + + + + servicearchive + install + + single + + + + + + org.apache.maven.plugins + maven-resources-plugin + 2.5 + + + copy-profile + install + + copy-resources + + + target + + + ${distroDirectory} + true + + profile.xml + + + + + + + + + + + diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/ResourceManagementPortlet.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/ResourceManagementPortlet.java new file mode 100644 index 0000000..b9adf0a --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/ResourceManagementPortlet.java @@ -0,0 +1,700 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: ResourceManagementPortlet.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client; + + +import org.gcube.portlets.admin.ishealthmonitor.client.dialog.ISMonitor; +import org.gcube.portlets.admin.resourcemanagement.client.forms.genericresources.DeployVirtualCollection; +import org.gcube.portlets.admin.resourcemanagement.client.remote.ProxyRegistry; +import org.gcube.portlets.admin.resourcemanagement.client.utils.Commands; +import org.gcube.portlets.admin.resourcemanagement.client.utils.Messages; +import org.gcube.portlets.admin.resourcemanagement.client.utils.OpCommands; +import org.gcube.portlets.admin.resourcemanagement.client.views.resourcedetails.ResourceDetailsPanel; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.console.ConsoleMessageBroker; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.console.ConsolePanel; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.dialogs.ExtendedMessageBox; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.panels.DetachablePanel; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.panels.MainPanel; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.registry.UIIdentifiers; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.registry.WidgetsRegistry; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.viewport.MainContainer; +import org.gcube.portlets.admin.resourcesweeper.client.dialog.SweeperDialog; +import org.gcube.resourcemanagement.support.client.Resource_support; +import org.gcube.resourcemanagement.support.client.events.SetScopeEvent; +import org.gcube.resourcemanagement.support.client.events.SetScopeEventHandler; +import org.gcube.resourcemanagement.support.client.utils.CurrentStatus; +import org.gcube.resourcemanagement.support.client.utils.LocalStatus; +import org.gcube.resourcemanagement.support.client.utils.StatusHandler; +import org.gcube.resourcemanagement.support.shared.exceptions.InvalidParameterException; +import org.gcube.resourcemanagement.support.shared.operations.SupportedOperations; +import org.gcube.resourcemanagement.support.shared.types.RunningMode; +import org.gcube.resourcemanagement.support.shared.types.UserGroup; +import org.gcube.resourcemanagement.support.shared.util.Configuration; + +import com.extjs.gxt.ui.client.Style.LayoutRegion; +import com.extjs.gxt.ui.client.Style.Scroll; +import com.extjs.gxt.ui.client.event.ComponentEvent; +import com.extjs.gxt.ui.client.event.Listener; +import com.extjs.gxt.ui.client.event.MessageBoxEvent; +import com.extjs.gxt.ui.client.util.Margins; +import com.extjs.gxt.ui.client.widget.ContentPanel; +import com.extjs.gxt.ui.client.widget.Dialog; +import com.extjs.gxt.ui.client.widget.Label; +import com.extjs.gxt.ui.client.widget.MessageBox; +import com.extjs.gxt.ui.client.widget.ProgressBar; +import com.extjs.gxt.ui.client.widget.Status; +import com.extjs.gxt.ui.client.widget.Text; +import com.extjs.gxt.ui.client.widget.button.Button; +import com.extjs.gxt.ui.client.widget.layout.AccordionLayout; +import com.extjs.gxt.ui.client.widget.layout.BorderLayout; +import com.extjs.gxt.ui.client.widget.layout.FitLayout; +import com.extjs.gxt.ui.client.widget.menu.CheckMenuItem; +import com.extjs.gxt.ui.client.widget.menu.Menu; +import com.extjs.gxt.ui.client.widget.menu.MenuBar; +import com.extjs.gxt.ui.client.widget.menu.MenuBarItem; +import com.extjs.gxt.ui.client.widget.menu.MenuItem; +import com.extjs.gxt.ui.client.widget.menu.SeparatorMenuItem; +import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem; +import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem; +import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; +import com.google.gwt.core.client.EntryPoint; +import com.google.gwt.core.client.GWT; +import com.google.gwt.core.client.RunAsyncCallback; +import com.google.gwt.event.logical.shared.ResizeEvent; +import com.google.gwt.event.logical.shared.ResizeHandler; +import com.google.gwt.event.shared.HandlerManager; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.RootPanel; + +/** + * Entry point classes define onModuleLoad(). + */ +public class ResourceManagementPortlet implements EntryPoint { + + public static final String CONTAINER_DIV = "MyUniqueDIV"; + + private final HandlerManager eventBus = new HandlerManager(null); + + private void printStatus(final CurrentStatus status) { + ConsoleMessageBroker.trace(this, "User: " + status.getCurrentUser()); + ConsoleMessageBroker.trace(this, "Scope: " + status.getCurrentScope()); + ConsoleMessageBroker.trace(this, "Credentials: " + status.getCredentials()); + ConsoleMessageBroker.trace(this, "Running Mode: " + status.getRunningMode()); + } + /** + * events binder + */ + private void bind() { + //set the eventbus to the support common classes + new Resource_support(eventBus); + + eventBus.addHandler(SetScopeEvent.TYPE, new SetScopeEventHandler() { + @Override + public void onSetScope(SetScopeEvent event) { + Commands.setStatusScope(event.getScope()); + } + }); + } + /** + * This is the entry point method. + */ + public final void onModuleLoad() { + //for event handling + bind(); + + MainContainer vp = buildUI(); + RootPanel.get(CONTAINER_DIV).add(vp); + Commands.mask("Waiting servlet initialization", UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + + ProxyRegistry.getProxyInstance().initStatus(new AsyncCallback() { + // Received status + public void onSuccess(final CurrentStatus result) { + StatusHandler.setStatus(result); + printStatus(result); + + Commands.mask("Contacting the Infrastructure, please wait", UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + + // loads the scopes + ProxyRegistry.getProxyInstance().initScopes(true, new AsyncCallback() { + public void onSuccess(final Void result) { + // Now that both scopes and user credentials have been loaded + // the menu and statusbar can be built. + buildMenu(); + buildStatusBar(); + Commands.mask("Loading infrastructure scopes", UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + Commands.doGetAvailableScopes(this); + + if (StatusHandler.getStatus().getCurrentScope() != null) { + Commands.setStatusScope(StatusHandler.getStatus().getCurrentScope()); + Commands.doLoadResourceTree(this, StatusHandler.getStatus().getCurrentScope()); + } + } + public void onFailure(final Throwable caught) { + } + }); + + + } + public void onFailure(final Throwable caught) { + MessageBox.info("Failure", "cannot initialize servlet", null); + } + }); + } + + private MainContainer buildUI() { + MainContainer viewport = new MainContainer(); + BorderLayout bl = new BorderLayout(); + viewport.setLayout(bl); + WidgetsRegistry.registerWidget(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID, viewport); + + MainPanel northPanel = new MainPanel(56, "Main App", LayoutRegion.NORTH) { + @Override + public void init() { + ConsoleMessageBroker.log(this, "Initializing north panel"); + this.setCollapsible(false); + this.setMargins(new Margins(5, 5, 0, 5)); + + this.setSplit(false); + this.hideHeader(); + } + }; + + MainPanel eastPanel = new MainPanel(150, "Pinned Resources", LayoutRegion.EAST) { + @Override + public void init() { + ConsoleMessageBroker.log(this, "Initializing east panel"); + this.setCollapsible(true); + this.setMargins(new Margins(5, 5, 5, 0)); + this.getContainer().setScrollMode(Scroll.AUTOY); + this.getContainer().setHeight(100); + ((ContentPanel) this.getContainer()).getBody().setStyleName("taskbar-pattern"); + } + }; + + MainPanel westPanel = new MainPanel(200, "Resources", LayoutRegion.WEST) { + @Override + public void init() { + ConsoleMessageBroker.log(this, "Initializing west panel"); + this.setCollapsible(false); + this.setMargins(new Margins(5, 0, 5, 5)); + Text widget = new Text(); + widget.setId("res-details-widget-fake"); + widget.setStyleName("left-panel-tree-background"); + this.getContainer().setLayout(new AccordionLayout()); + ContentPanel cp = new ContentPanel(); + cp.setAnimCollapse(false); + cp.setHeading("Resources"); + cp.setLayout(new FitLayout()); + cp.add(widget); + this.getContainer().add(cp); + } + }; + + MainPanel southPanel = new MainPanel(180, "Console (debug mode)", LayoutRegion.SOUTH) { + @Override + public void init() { + ConsoleMessageBroker.log(this, "Initializing south panel"); + this.setCollapsible(false); + this.setSplit(true); + this.setMargins(new Margins(0, 0, 0, 0)); + + // Inserts the console + this.getContainer().setLayout(new FitLayout()); + //this.getContainer().setScrollMode(Scroll.AUTOY); + try { + // Creates a detachable panel in which a console will be inserted + DetachablePanel consolePanel = new DetachablePanel( + this.getContainer(), + "Console (debug mode)", + UIIdentifiers.CONSOLE_COMPONENT_ID , + false); + ConsolePanel console = new ConsolePanel(consolePanel); + WidgetsRegistry.registerElem(UIIdentifiers.CONSOLE_WIDGET_ID, console); + // initially the console will be hidden + Commands.showHideConsole(); + } catch (InvalidParameterException e) { + e.printStackTrace(); + } + } + }; + + + MainPanel centerPanel = new MainPanel(LayoutRegion.CENTER) { + @Override + public void init() { + this.getContainer().setLayout(new FitLayout()); + this.hideHeader(); + ConsoleMessageBroker.log(this, "Initialiting center panel"); + this.setMargins(new Margins(5)); + ResourceDetailsPanel resourceDetailGrid = new ResourceDetailsPanel(); + this.add(resourceDetailGrid.getWidget(), false); + WidgetsRegistry.registerElem(UIIdentifiers.RESOURCE_DETAIL_GRID_CONTAINER_ID, resourceDetailGrid); + } + }; + + viewport.addPanel(UIIdentifiers.GLOBAL_MENU_CONTAINER_PANEL, northPanel); + viewport.addPanel(UIIdentifiers.RESOURCE_NAVIGATION_PANEL, westPanel); + viewport.addPanel(UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL, centerPanel); + viewport.addPanel(UIIdentifiers.TASKBAR_PANEL, eastPanel); + viewport.addPanel(UIIdentifiers.CONSOLE_PANEL_ID, southPanel); + + Window.addResizeHandler(new ResizeHandler() { + public void onResize(final ResizeEvent event) { + updateSize(); + } + }); + + // updates for the first time + updateSize(); + + //viewport.setAutoHeight(false); + //viewport.setAutoWidth(false); + return viewport; + } + + private void updateSize() { + RootPanel workspace = RootPanel.get(CONTAINER_DIV); + + if (workspace == null) { + return; + } + + int topBorder = workspace.getAbsoluteTop(); + int leftBorder = workspace.getAbsoluteLeft(); + int rightScrollBar = 17; + int rootHeight = Window.getClientHeight() - topBorder - 4; + int rootWidth = (Window.getClientWidth() - 2 * leftBorder - rightScrollBar); + + ConsoleMessageBroker.debug(this, "New workspace dimension Height: " + rootHeight + " Width: " + rootWidth); + + MainContainer viewport = (MainContainer) WidgetsRegistry.getWidget(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + + viewport.setHeight(rootHeight); + viewport.setWidth(rootWidth); + } + + /** + * Internally used to build up the main panel menu. + * @return the menu + */ + private void buildMenu() { + + /*********************************************************** + * MENU - OPTIONS + **********************************************************/ + Menu optionsMenu = new Menu(); + + CheckMenuItem highlightInvalid = new CheckMenuItem("Highlight invalid fields") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + Commands.getResourceDetailPanel().toggleHighlightInvalidFields(); + } + }; + highlightInvalid.setChecked(false); + optionsMenu.add(highlightInvalid); + + CheckMenuItem showConsole = new CheckMenuItem("Show Console") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + Commands.showHideConsole(); + } + }; + showConsole.setChecked(false); + // Checks that this menu item is permitted to the current user + Commands.evaluateCredentials( + showConsole, + UserGroup.ADMIN, UserGroup.DEBUG); + optionsMenu.add(showConsole); + + CheckMenuItem superUser = new CheckMenuItem("Super User Mode") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + + if (this.isChecked()) { + ConsoleMessageBroker.info(this, "Going in super user mode"); + + + + ExtendedMessageBox.password("Super User Authentication", new Listener() { + public void handleEvent(final MessageBoxEvent be) { + String pwd = be.getValue(); + Commands.mask("Veryfing super user mode password, please wait ...", UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + ProxyRegistry.getProxyInstance().enableSuperUserMode(pwd, new AsyncCallback() { + @Override + public void onFailure(Throwable caught) { + MessageBox.alert("Server error", "Cannot reach server", null); + } + @Override + public void onSuccess(Boolean result) { + if (result) { + Commands.doSetSuperUser(true); + } else { + MessageBox.alert("Wrong code", "Invalid Password entered.", null); + setChecked(false); + Commands.unmask(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + } + + } + }); + + } + }); + + //reloadMenu(); + } else { + ConsoleMessageBroker.info(this, "Going in debug mode"); + Commands.doSetSuperUser(false); + //reloadMenu(); + + } + } + }; + // Checks that this menu item is permitted to the current user + Commands.evaluateCredentials( + superUser, + UserGroup.DEBUG); + superUser.setChecked(StatusHandler.getStatus().getCredentials() == UserGroup.ADMIN); + optionsMenu.add(superUser); + + + CheckMenuItem useCache = new CheckMenuItem("Use Remote Cache") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + StatusHandler.getStatus().setUseCache(this.isChecked()); + ProxyRegistry.getProxyInstance().setUseCache(this.isChecked(), + new AsyncCallback() { + public void onSuccess(final Void result) { + } + public void onFailure(final Throwable caught) { + } + }); + } + }; + useCache.setChecked(StatusHandler.getStatus().useCache()); + optionsMenu.add(useCache); + + CheckMenuItem openProfileOnLoad = new CheckMenuItem("Open Profile onLoad") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + Configuration.openProfileOnLoad = !Configuration.openProfileOnLoad; + } + }; + openProfileOnLoad.setChecked(false); + optionsMenu.add(openProfileOnLoad); + + + CheckMenuItem allowMultipleProfiles = new CheckMenuItem("Allow Multiple Profiles") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + Configuration.allowMultipleProfiles = !Configuration.allowMultipleProfiles; + } + }; + allowMultipleProfiles.setChecked(false); + optionsMenu.add(allowMultipleProfiles); + + + /*********************************************************** + * MENU - SEARCH + **********************************************************/ + Menu searchMenu = new Menu(); + MenuItem getResource = new MenuItem("Get Resource By ID") { + protected void onClick(final ComponentEvent be) { + OpCommands.doGetResourceByID(); + }; + }; + getResource.setIconStyle("resources-icon"); + Commands.evaluateCredentials( + getResource, + SupportedOperations.SERVICE_GET_RESOURCE_BY_ID.getPermissions()); + searchMenu.add(getResource); + + MenuItem getReport = new MenuItem("Get Report") { + protected void onClick(final ComponentEvent be) { + OpCommands.doGetDeployReport(); + }; + }; + getReport.setIconStyle("getreport-icon"); + Commands.evaluateCredentials( + getReport, + SupportedOperations.SERVICE_GET_REPORT.getPermissions()); + searchMenu.add(getReport); + + /*********************************************************** + * MENU - TOOLS + **********************************************************/ + Menu toolsMenu = new Menu(); + + MenuItem testIS = new MenuItem("Check IS Health") { + protected void onClick(final ComponentEvent be) { + super.onClick(be); + if (LocalStatus.getInstance().getAvailableScopes() == null || LocalStatus.getInstance().getAvailableScopes().isEmpty()) { + MessageBox.info("Sorry", "This functionality is not available in logged-in mode.", null); + } else { + GWT.runAsync(ISMonitor.class, new RunAsyncCallback() { + @Override + public void onSuccess() { + ISMonitor.pingIS(); + } + public void onFailure(Throwable reason) { + Window.alert("There are networks problem, please check your connection."); + } + }); + } + }; + }; + testIS.setIconStyle("is-icon"); + Commands.evaluateCredentials( + testIS, + SupportedOperations.SERVICE_GET_RESOURCE_BY_ID.getPermissions()); + toolsMenu.add(testIS); + + + MenuItem cleanGHN = new MenuItem("Resource Sweeper") { + protected void onClick(final ComponentEvent be) { + super.onClick(be); + if (SupportedOperations.SWEEP_GHN.isAllowed(StatusHandler.getStatus().getCredentials())) { + GWT.runAsync(SweeperDialog.class, new RunAsyncCallback() { + @Override + public void onSuccess() { + String currentScope = StatusHandler.getStatus().getCurrentScope(); + new SweeperDialog(currentScope); + } + + public void onFailure(Throwable reason) { + Window.alert("There are networks problem, please check your connection."); + } + }); + } + else + MessageBox.alert("Resource Sweeper", "You are not allowed to execute this operation", null); + + }; + }; + cleanGHN.setIconStyle("sweeper-icon"); + toolsMenu.add(cleanGHN); + + MenuItem createSub = new MenuItem("Create"); + createSub.setIconStyle("new-icon"); + Menu createMnu = new Menu(); + + // Create Generic Resource + MenuItem createGR = new MenuItem("Generic Resource") { + protected void onClick(final ComponentEvent be) { + super.onClick(be); + OpCommands.doOpenGenericResourceForm(); + }; + }; + + createGR.setIconStyle("genericresource-icon"); + createMnu.add(createGR); + + // Create Service Endpoint (former Runtime Resource) + MenuItem createSE = new MenuItem("Service Endpoint") { + protected void onClick(final ComponentEvent be) { + super.onClick(be); + OpCommands.doOpenServiceEndpointForm(); + }; + }; + createSE.setIconStyle("runtimeresource-icon"); + createMnu.add(createSE); + + // Create Generic Resource + MenuItem deployVirtualCollection = new MenuItem("Instantiate Virtual Collections") { + protected void onClick(final ComponentEvent be) { + super.onClick(be); + if (SupportedOperations.GENERIC_RESOURCE_CREATE.isAllowed(StatusHandler.getStatus().getCredentials())) { + new DeployVirtualCollection().show(); + } else { + MessageBox.alert("Instantiate Virtual Collections", "You are not allowed to execute this operation", null); + } + }; + }; + deployVirtualCollection.setIconStyle("install-icon"); + createMnu.add(deployVirtualCollection); + + createSub.setSubMenu(createMnu); + Commands.evaluateCredentials( + createSub, + SupportedOperations.CREATE_MENU_SHOW.getPermissions()); + toolsMenu.add(createSub); + + + toolsMenu.add(new SeparatorMenuItem()); + + /*********************************************************** + * SUBMENU - OPTIONS->REFRESH + **********************************************************/ + MenuItem sub = new MenuItem("Refresh"); + sub.setIconStyle("refresh-icon"); + Menu refresh = new Menu(); + refresh.add(new MenuItem("Resource Navigation") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + Commands.refreshResourceTree(); + } + }); + refresh.add(new MenuItem("Resource Details Grid") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + Commands.refreshResourceGrid(); + } + }); + refresh.add(new MenuItem("Console (UI)") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + Commands.refreshConsole(); + } + }); + refresh.add(new MenuItem("Resource Details (UI)") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + Commands.refreshResourceDetails(); + } + }); + refresh.add(new MenuItem("Desktop (UI)") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + Commands.refreshViewport(); + } + }); + sub.setSubMenu(refresh); + toolsMenu.add(sub); + + MenuItem emptyCache = new MenuItem("Empty Cache") { + protected void onClick(final ComponentEvent be) { + super.onClick(be); + ProxyRegistry.getProxyInstance().emptyCache(new AsyncCallback() { + public void onSuccess(final Void result) { + Commands.showPopup("Empty cache", "The remote cache has been cleaned"); + } + public void onFailure(final Throwable caught) { + Commands.showPopup("Empty cache error", "The remote cache has not been cleaned"); + } + }); + }; + }; + emptyCache.setIconStyle("clear-icon"); + toolsMenu.add(emptyCache); + + + /*********************************************************** + * MENU - ABOUT + **********************************************************/ + Menu helpMenu = new Menu(); + MenuItem aboutMnuItem = new MenuItem("About") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + Dialog dlg = new Dialog(); + dlg.setHeading("About - Resource Management"); + dlg.addText("
This software is part of the gCube Project.
" + + "Site: http://www.gcube-system.org/" + + "

The gCube/gCore software is licensed as Free Open Source software " + + "conveying to the EUPL (http://ec.europa.eu/idabc/eupl).


" + + "

The software and documentation is provided by its authors/distributors " + + "\"as is\" and no expressed or " + + "implied warranty is given for its use, quality or fitness for a " + + "particular case.

" + + "" + + "

Issues can be submitted here.

" + + "

Notice: specify this Component:
Repository Path: /org/gcube/portlets/admin/resource-management

" + + "
This software was built over the gCube Featherweight Stack (FWS) and Google Webtool Kit (GWT) technologies.
" + + "
"); + + dlg.setClosable(true); + dlg.setModal(true); + dlg.setHideOnButtonClick(true); + dlg.show(); + } + }; + aboutMnuItem.setIconStyle("about-icon"); + helpMenu.add(aboutMnuItem); + + MenuBar mb = new MenuBar(); + mb.add(new MenuBarItem("Tools", toolsMenu)); + mb.add(new MenuBarItem("Options", optionsMenu)); + mb.add(new MenuBarItem("Search", searchMenu)); + mb.add(new MenuBarItem("Help", helpMenu)); + + + MainPanel menuPanel = WidgetsRegistry.getPanel(UIIdentifiers.GLOBAL_MENU_CONTAINER_PANEL); + WidgetsRegistry.registerWidget(UIIdentifiers.GLOBAL_MENUBAR_ID, mb); + menuPanel.add(mb, true); + } + + private void buildStatusBar() { + MainPanel menuPanel = WidgetsRegistry.getPanel(UIIdentifiers.GLOBAL_MENU_CONTAINER_PANEL); + ToolBar statusbar = new ToolBar(); + statusbar.add(new SeparatorToolItem()); + + if (StatusHandler.getStatus().getRunningMode() != RunningMode.PORTAL) { + Button btnScope = new Button("Available Scopes"); + btnScope.setMenu(new Menu()); + WidgetsRegistry.registerWidget(UIIdentifiers.BUTTON_AVAILABLE_SCOPES_ID, btnScope); + // Checks that this menu item is permitted to the current user + statusbar.add(btnScope); + } else { + statusbar.add(new Label("Current role: " + StatusHandler.getStatus().getCredentials())); + } + + //statusbar.add(new FillToolItem()); + statusbar.add(new Label("                   ")); + ProgressBar progressStatus = new ProgressBar(); + progressStatus.setWidth(200); + progressStatus.updateText("Updating Infrastructure..."); + statusbar.add(progressStatus); + progressStatus.hide(); + WidgetsRegistry.registerWidget(UIIdentifiers.STATUS_PROGRESS_BAR_ID, progressStatus); + + statusbar.add(new FillToolItem()); + statusbar.add(new Label("Current Scope:  ")); + Status scopeInfo = new Status(); + scopeInfo.setWidth(350); + scopeInfo.setText(Messages.NO_SCOPE_SELECTED); + scopeInfo.setBox(true); + statusbar.add(scopeInfo); + WidgetsRegistry.registerWidget(UIIdentifiers.STATUS_SCOPE_INFO_ID, scopeInfo); + + statusbar.add(new Label("  Loaded Resources:  ")); + Status loadedResources = new Status(); + loadedResources.setWidth(35); + loadedResources.setText("0"); + loadedResources.setBox(true); + statusbar.add(loadedResources); + WidgetsRegistry.registerWidget(UIIdentifiers.STATUS_LOADED_RESOURCES_ID, loadedResources); + + menuPanel.add(statusbar, false); + + menuPanel.getContainer().setBorders(false); + menuPanel.getContainer().setShadow(true); + WidgetsRegistry.registerWidget(UIIdentifiers.GLOBAL_STATUS_BAR_ID, statusbar); + } + + +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/forms/DeployServicesForm.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/forms/DeployServicesForm.java new file mode 100644 index 0000000..b8a5227 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/forms/DeployServicesForm.java @@ -0,0 +1,346 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: DeployServicesForm.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.forms; + +import java.util.List; +import java.util.Vector; +import org.gcube.portlets.admin.resourcemanagement.client.remote.ProxyRegistry; +import org.gcube.portlets.admin.resourcemanagement.client.utils.Callbacks; +import org.gcube.portlets.admin.resourcemanagement.client.utils.Commands; +import org.gcube.portlets.admin.resourcemanagement.client.views.resourcedetails.ResourceGridFactory; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.console.ConsoleMessageBroker; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.registry.UIIdentifiers; +import org.gcube.resourcemanagement.support.client.utils.StatusHandler; +import org.gcube.resourcemanagement.support.client.views.ResourceTypeDecorator; +import org.gcube.resourcemanagement.support.shared.operations.SupportedOperations; +import org.gcube.resourcemanagement.support.shared.types.datamodel.ResourceDescriptor; +import org.gcube.resourcemanagement.support.shared.types.datamodel.ResourceDetailModel; + +import com.extjs.gxt.ui.client.Style.Orientation; +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.event.ComponentEvent; +import com.extjs.gxt.ui.client.event.Listener; +import com.extjs.gxt.ui.client.event.MessageBoxEvent; +import com.extjs.gxt.ui.client.store.ListStore; +import com.extjs.gxt.ui.client.store.StoreSorter; +import com.extjs.gxt.ui.client.util.Margins; +import com.extjs.gxt.ui.client.widget.Component; +import com.extjs.gxt.ui.client.widget.ContentPanel; +import com.extjs.gxt.ui.client.widget.MessageBox; +import com.extjs.gxt.ui.client.widget.Text; +import com.extjs.gxt.ui.client.widget.Window; +import com.extjs.gxt.ui.client.widget.button.Button; +import com.extjs.gxt.ui.client.widget.form.DualListField; +import com.extjs.gxt.ui.client.widget.form.FormPanel; +import com.extjs.gxt.ui.client.widget.form.ListField; +import com.extjs.gxt.ui.client.widget.grid.Grid; +import com.extjs.gxt.ui.client.widget.layout.FitLayout; +import com.extjs.gxt.ui.client.widget.layout.FormData; +import com.extjs.gxt.ui.client.widget.layout.RowData; +import com.extjs.gxt.ui.client.widget.layout.RowLayout; +import com.extjs.gxt.ui.client.widget.menu.Menu; +import com.extjs.gxt.ui.client.widget.menu.MenuItem; +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.rpc.AsyncCallback; + + +/** + * @author Daniele Strollo + * @author Massimiliano Assante (ISTI-CNR) + * @version 2.1 APR 2012 + */ +public class DeployServicesForm { + private ContentPanel rootPanel = null; + private ContentPanel ghnContainer = null; + private ContentPanel serviceContainer = null; + private final ListStore GHNstore = new ListStore(); + private final ListStore selectedGHNs = new ListStore(); + private final Window window = new Window(); + private int resourceLoaded = 0; + + + public DeployServicesForm() { + this.ghnContainer = new ContentPanel(new FitLayout()); + this.serviceContainer = new ContentPanel(new FitLayout()); + + this.ghnContainer.getHeader().setStyleName("x-hide-panel-header"); + this.ghnContainer.setHeaderVisible(false); + this.serviceContainer.getHeader().setStyleName("x-hide-panel-header"); + this.serviceContainer.setHeaderVisible(false); + + this.ghnContainer.add(new Text()); + this.serviceContainer.add(new Text()); + this.init(); + } + + private void markResourceLoaded() { + this.resourceLoaded++; + if (this.resourceLoaded >= 2) { + Commands.unmask(Commands.getViewport()); + Commands.unmask(this.rootPanel); + } + } + + private void loadGHNs(final String scope) { + ProxyRegistry.getProxyInstance().getResourcesModel(scope, + ResourceTypeDecorator.GHN.name(), + null, + null, + new AsyncCallback>() { + + public void onSuccess(final List result) { + ghnContainer.removeAll(); + ghnContainer.add(createGHNForm()); + GHNstore.add(result); + ghnContainer.layout(true); + Commands.showPopup("GHN load", "Loaded " + result.size() + " GHNs"); + markResourceLoaded(); + } + public void onFailure(final Throwable caught) { + markResourceLoaded(); + } + }); + } + + private void closeDialog() { + this.window.hide(); + } + + private Component createGHNForm() { + FormPanel panel = new FormPanel(); + panel.setFrame(true); + panel.getHeader().setStyleName("x-hide-panel-header"); + + DualListField lists = new DualListField(); + lists.setFieldLabel("GHNs"); + + ListField from = lists.getFromList(); + from.setDisplayField("name"); + GHNstore.setStoreSorter(new StoreSorter()); + GHNstore.setSortField("name"); + from.setStore(GHNstore); + ListField to = lists.getToList(); + to.setDisplayField("name"); + to.setStore(this.selectedGHNs); + + panel.addButton(new Button("Cancel") { + @Override + protected void onClick(final ComponentEvent ce) { + super.onClick(ce); + closeDialog(); + } + }); + panel.addButton(new Button("Apply Deploy") { + @Override + protected void onClick(final ComponentEvent ce) { + super.onClick(ce); + MessageBox.confirm("Software Deployment", + "Are you sure you want to apply the deployment plan?", + new Listener() { + public void handleEvent(final MessageBoxEvent be) { + if (be.getButtonClicked().getItemId().equalsIgnoreCase("yes")) { + // - THE OPERATION IS CONFIRMED + List ghns = getSelectedGHNs(); + List sw = getSelectedSoftwares(); + + if (ghns == null || ghns.size() == 0) { + MessageBox.alert("Service Deployment", "No GHNs have been selected", null); + return; + } + if (sw == null || sw.size() == 0) { + MessageBox.alert("Service Deployment", "No softwares have been selected", null); + return; + } + + List ghnNames = new Vector(); + for (ModelData m : ghns) { + String name = m.get("name").toString(); + ghnNames.add(name); + } + List swIDs = new Vector(); + for (ModelData m : sw) { + swIDs.add(((Object) m.get("ID")).toString()); + } + ConsoleMessageBroker.info(this, "Applying deployment of " + swIDs.size() + " softwares on " + ghnNames.size() + " gHNs"); + Commands.mask("Waiting the deployment report", UIIdentifiers.GLOBAL_STATUS_BAR_ID); + ProxyRegistry.getProxyInstance().deploy( + ghnNames, + swIDs, + new AsyncCallback() { + public void onSuccess(final String result) { + if (result != null) { + MessageBox.info("Service Deployment", + "The required deployment has been applied.
" + + "The generated report ID is:
" + + "" + result + "", + null); + ProxyRegistry.getProxyInstance().checkDeployStatus( + StatusHandler.getStatus().getCurrentScope(), + result.trim(), + Callbacks.handleGetDeploymentReport); + } else { + MessageBox.alert("Service Deployment", + "The required deployment has been applied.
" + + "But the resulting report ID is null or invalid.", + null); + Commands.unmask(UIIdentifiers.GLOBAL_STATUS_BAR_ID); + } + } + public void onFailure(final Throwable caught) { + Commands.unmask(UIIdentifiers.GLOBAL_STATUS_BAR_ID); + MessageBox.alert("Service Deployment error", + "The required deployment has not been applied. " + + "Received exception:
" + caught.getMessage(), + null); + } + }); + + closeDialog(); + } + } + }); + + } + }); + + panel.add(lists, new FormData("100%")); + return panel; + } + + private List getSelectedGHNs() { + return this.selectedGHNs.getModels(); + } + + private List getSelectedSoftwares() { + List retval = new Vector(); + if (serviceContainer.getWidget(0) == null || + !(serviceContainer.getWidget(0) instanceof Grid)) { + return null; + } + @SuppressWarnings("unchecked") + Grid grid = (Grid) serviceContainer.getWidget(0); + if (grid.getSelectionModel().getSelectedItems() == null) { + return null; + } + Object toDeploy = null; + for (ModelData m : grid.getStore().getModels()) { + toDeploy = m.get(ResourceDetailModel.SERVICE_INSTALL_KEY); + if (toDeploy != null && Boolean.parseBoolean(toDeploy.toString())) { + retval.add(m); + } + } + return retval; + } + + private void loadSoftwares(final String scope) { + + ProxyRegistry.getProxyInstance().getResourcesByType( + scope, + ResourceTypeDecorator.Service.name(), + new AsyncCallback>() { + + public void onSuccess(final List result) { + Grid grid = + ResourceGridFactory.createGrid(ResourceTypeDecorator.InstallableSoftware.name(), + result, + null, + false); + + /****************************************** + * ADD TO INSTALL FEATURE + *****************************************/ + // 0 - INSTALL button + MenuItem toInstall = new MenuItem("Mark for install") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + + if (serviceContainer.getWidget(0) == null || + !(serviceContainer.getWidget(0) instanceof Grid)) { + return; + } + @SuppressWarnings("unchecked") + Grid grid = (Grid) serviceContainer.getWidget(0); + if (grid.getSelectionModel().getSelectedItems() == null) { + return; + } + + for (ModelData e : grid.getSelectionModel().getSelectedItems()) { + ConsoleMessageBroker.info(this, "Required install for: " + e.get("ServiceName") + " " + e.get("ID")); + if (e.getProperties().containsKey(ResourceDetailModel.SERVICE_INSTALL_KEY) && + Boolean.parseBoolean(((Object) e.get(ResourceDetailModel.SERVICE_INSTALL_KEY)).toString())) + { + e.set(ResourceDetailModel.SERVICE_INSTALL_KEY, false); + } else { + e.set(ResourceDetailModel.SERVICE_INSTALL_KEY, true); + } + grid.getStore().update(e); + } + } + }; + Commands.evaluateCredentials( + toInstall, + SupportedOperations.SERVICE_DEPLOY.getPermissions()); + + Menu menu = new Menu(); + menu.add(toInstall); + grid.setContextMenu(menu); + /****************************************** + * ENDOF ADD TO INSTALL FEATURE + *****************************************/ + + serviceContainer.removeAll(); + serviceContainer.add(grid); + serviceContainer.layout(true); + Commands.showPopup("Service load", "Loaded " + result.size() + " services"); + markResourceLoaded(); + } + + public void onFailure(final Throwable caught) { + markResourceLoaded(); + } + }); + } + + private void init() { + this.rootPanel = new ContentPanel(); + this.rootPanel.getHeader().setStyleName("x-hide-panel-header"); + this.rootPanel.setHeaderVisible(false); + this.rootPanel.setLayout(new RowLayout(Orientation.VERTICAL)); + + this.rootPanel.add(this.ghnContainer, new RowData(1, .4, new Margins(4))); + this.rootPanel.add(this.serviceContainer, new RowData(1, .6, new Margins(0, 4, 0, 4))); + + String scope = StatusHandler.getStatus().getCurrentScope(); + + Commands.mask("Loading Deployment Resources in scope: " + scope, Commands.getViewport()); + Commands.mask("Loading Deployment Resources in scope: " + scope, this.rootPanel); + + this.loadGHNs(scope); + this.loadSoftwares(scope); + } + + public final void show() { + window.setPlain(true); + window.setSize(800, 600); + window.setHeading("Software Deployment"); + window.setLayout(new FitLayout()); + window.add(this.rootPanel); + window.show(); + window.layout(true); + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/forms/genericresources/DeployVirtualCollection.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/forms/genericresources/DeployVirtualCollection.java new file mode 100644 index 0000000..16ec8b1 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/forms/genericresources/DeployVirtualCollection.java @@ -0,0 +1,173 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: DeployVirtualCollection.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.forms.genericresources; + +import java.util.ArrayList; +import java.util.List; +import java.util.Vector; + +import org.gcube.portlets.admin.resourcemanagement.client.remote.ProxyRegistry; +import org.gcube.portlets.admin.resourcemanagement.client.utils.Commands; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.console.ConsoleMessageBroker; + +import org.gcube.resourcemanagement.support.client.utils.StatusHandler; +import org.gcube.resourcemanagement.support.client.views.ResourceTypeDecorator; +import org.gcube.resourcemanagement.support.shared.exceptions.InvalidParameterException; +import org.gcube.resourcemanagement.support.shared.types.Tuple; +import org.gcube.resourcemanagement.support.shared.types.datamodel.AtomicTreeNode; +import org.gcube.resourcemanagement.support.shared.types.datamodel.ResourceDescriptor; +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.event.ComponentEvent; +import com.extjs.gxt.ui.client.store.ListStore; +import com.extjs.gxt.ui.client.widget.Dialog; +import com.extjs.gxt.ui.client.widget.MessageBox; +import com.extjs.gxt.ui.client.widget.button.Button; +import com.extjs.gxt.ui.client.widget.form.FormPanel; +import com.extjs.gxt.ui.client.widget.grid.CheckBoxSelectionModel; +import com.extjs.gxt.ui.client.widget.grid.ColumnConfig; +import com.extjs.gxt.ui.client.widget.grid.ColumnModel; +import com.extjs.gxt.ui.client.widget.grid.Grid; +import com.extjs.gxt.ui.client.widget.layout.FitLayout; +import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem; +import com.google.gwt.user.client.Element; +import com.google.gwt.user.client.rpc.AsyncCallback; + +/** + * @author Daniele Strollo (ISTI-CNR) + * + */ +public class DeployVirtualCollection extends Dialog { + private Grid grid = null; + + public DeployVirtualCollection() { + this.setLayout(new FitLayout()); + this.setHeading("Deploy Virtual Collections"); + this.setModal(true); + this.setWidth(700); + this.setHeight(500); + this.setResizable(false); + //this.getButtonBar().removeAll(); + this.setHideOnButtonClick(true); + } + + protected final void onRender(final Element parent, final int index) { + super.onRender(parent, index); + initForm(); + } + + private void closeDialog() { + this.hide(); + } + + private void initForm() { + String scope = StatusHandler.getStatus().getCurrentScope(); + FormPanel form = new FormPanel(); + form.setFrame(true); + form.setAutoWidth(true); + + initModel(scope); + this.add(grid); + + this.getButtonBar().removeAll(); + this.getButtonBar().add(new FillToolItem()); + this.getButtonBar().add(new Button("Cancel") { + @Override + protected void onClick(final ComponentEvent ce) { + super.onClick(ce); + closeDialog(); + } + }); + this.getButtonBar().add(new Button("Submit") { + @Override + protected void onClick(final ComponentEvent ce) { + super.onClick(ce); + for (ResourceDescriptor elem : grid.getSelectionModel().getSelectedItems()) { + ConsoleMessageBroker.info(this, "Selected: " + elem.getID()); + + String body = ""; + if (elem.getProperty("body") != null) { + body = ((Object) elem.getProperty("body")).toString().trim(); + if (body.startsWith("")) { + body = body.replace("", "").trim(); + body = body.substring(0, body.lastIndexOf("")).trim(); + } + } + + ProxyRegistry.getProxyInstance().createGenericResource( + null, // id auto-provided + "CMSRecord", // name fixed + "Activation Record for collection " + elem.getName(), // description + body, // the body + "ActivationRecord", // the subtype + new AsyncCallback() { + public void onSuccess(final String result) { + Commands.showPopup("Deploy Virtual Collection", "Deployed virtual collection with id " + result); + } + public void onFailure(final Throwable caught) { + Commands.showPopup("Deploy Virtual Collection", "Creation failed " + caught.getMessage()); + } + }); + } + closeDialog(); + } + }); + + updateGrid(scope); + } + + private void initModel(final String scope) { + // loads the model of generic resources + final List modelColumns = new ArrayList(); + modelColumns.add(new ColumnConfig("name", "Name", 300)); + //modelColumns.add(new ColumnConfig("subtype", "Secondary Type", 170)); + modelColumns.add(new ColumnConfig("ID", "ID", 300)); + modelColumns.add(new ColumnConfig("description", "Description", 300)); + final ColumnModel cm = new ColumnModel(modelColumns); + + final CheckBoxSelectionModel sm = new CheckBoxSelectionModel(); + // adds the checkbox at the beginning + modelColumns.add(0, sm.getColumn()); + ListStore store = new ListStore(); + this.grid = new Grid(store, cm); + } + + private void updateGrid(final String scope) { + final List> additionalFields = new Vector>(); + additionalFields.add(new Tuple("description", "//Profile/Description/text()")); + additionalFields.add(new Tuple("body", "//Profile/Body")); + + ProxyRegistry.getProxyInstance().getResourcesModel(scope, + ResourceTypeDecorator.GenericResource.name(), + "VirtualCollection", + additionalFields, + new AsyncCallback>() { + public void onSuccess(final List result) { + if (result == null || result.size() == 0) { + MessageBox.alert("Deploy Virtual Collections", "No deployable resources found in the current scope", + null); + closeDialog(); + } else { + grid.getStore().removeAll(); + grid.getStore().add(result); + } + } + public void onFailure(final Throwable caught) { + ConsoleMessageBroker.error(this, caught.getMessage()); + } + }); + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/forms/genericresources/GenericResourceForm.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/forms/genericresources/GenericResourceForm.java new file mode 100644 index 0000000..6780998 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/forms/genericresources/GenericResourceForm.java @@ -0,0 +1,183 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: GenericResourceForm.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.forms.genericresources; + +import org.gcube.portlets.admin.resourcemanagement.client.utils.OpCommands; +import org.gcube.resourcemanagement.support.client.views.validators.XMLValidator; +import org.gcube.resourcemanagement.support.shared.types.Tuple; +import org.gcube.resourcemanagement.support.shared.types.datamodel.ResourceDescriptor; + +import com.extjs.gxt.ui.client.Style.HorizontalAlignment; +import com.extjs.gxt.ui.client.event.ComponentEvent; +import com.extjs.gxt.ui.client.widget.Dialog; +import com.extjs.gxt.ui.client.widget.button.Button; +import com.extjs.gxt.ui.client.widget.form.Field; +import com.extjs.gxt.ui.client.widget.form.FormButtonBinding; +import com.extjs.gxt.ui.client.widget.form.FormPanel; +import com.extjs.gxt.ui.client.widget.form.TextArea; +import com.extjs.gxt.ui.client.widget.form.TextField; +import com.extjs.gxt.ui.client.widget.layout.FitLayout; +import com.extjs.gxt.ui.client.widget.layout.FormData; +import com.google.gwt.user.client.Element; + +public class GenericResourceForm extends Dialog { + private FormData formData = null; + private FormPanel form = null; + private ResourceDescriptor toEdit = null; + + public GenericResourceForm() { + this.setLayout(new FitLayout()); + this.setHeading("Generic Resource Creation"); + this.setModal(true); + this.setWidth(700); + this.setHeight(500); + this.setResizable(false); + this.getButtonBar().removeAll(); + this.setHideOnButtonClick(true); + } + + // Added for editing mode + public GenericResourceForm(final ResourceDescriptor genericRes) { + this(); + this.setHeading("Generic Resource Edit"); + this.toEdit = genericRes; + } + + @Override + protected final void onRender(final Element parent, final int index) { + super.onRender(parent, index); + formData = new FormData("-20"); + createForm(); + } + + public final void closeDialog() { + this.hide(); + } + + private boolean isEditing() { + return this.toEdit != null; + } + + private void createForm() { + form = new FormPanel(); + form.setFrame(true); + form.setAutoWidth(true); + + form.setHeaderVisible(false); + form.getHeader().setStyleName("x-hide-panel-header"); + + TextField resID = new TextField(); + resID.setFieldLabel("Resource ID"); + // resID.setValidator(new StringValidator(120, false)); + resID.setAllowBlank(false); // is required + // If in editing mode + if (toEdit != null && toEdit.getID() != null) { + resID.setValue(toEdit.getID()); + } else { + resID.setEmptyText(""); + } + resID.setEnabled(false); + form.add(resID, formData); + + TextField resName = new TextField(); + resName.setFieldLabel("Resource Name"); + // resName.setValidator(new StringValidator(120, false)); + resName.setAllowBlank(false); // is required + // If in editing mode + if (toEdit != null && toEdit.getName() != null) { + resName.setValue(toEdit.getName()); + } + form.add(resName, formData); + + TextField resType = new TextField(); + resType.setFieldLabel("Secondary type"); + // resType.setValidator(new StringValidator(120, false)); + resType.setAllowBlank(false); // is required + // If in editing mode + if (toEdit != null && toEdit.get("SecondaryType") != null) { + resType.setValue(((Object) toEdit.get("SecondaryType")).toString()); + } + form.add(resType, formData); + + TextArea description = new TextArea(); + description.setFieldLabel("Description"); + // If in editing mode + if (toEdit != null && toEdit.get("Description") != null) { + description.setValue(((Object) toEdit.get("Description")).toString()); + } + form.add(description, formData); + + TextArea body = new TextArea(); + body.setFieldLabel("Body"); + body.setHeight(235); + body.setValidator(new XMLValidator("body")); + // If in editing mode + if (toEdit != null && toEdit.get("Body") != null) { + body.setValue(((Object) toEdit.get("Body")).toString()); + } + form.add(body, formData); + + Button submitBtn = new Button("Submit") { + @SuppressWarnings("deprecation") + @Override + protected void onClick(final ComponentEvent ce) { + super.onClick(ce); + if (!form.isValid()) { + return; + } + Tuple values = new Tuple(); + for (Field field : form.getFields()) { + values.append(field.getRawValue()); + } + // Creation mode + if (!isEditing()) { + String resName = values.get(1); + String resType = values.get(2); + String description = values.get(3); + String body = values.get(4); + + OpCommands.doCreateGenericResource(null, resName, description, body, resType); + } else { + // Editing mode + String resID = values.get(0); + String resName = values.get(1); + String resType = values.get(2); + String description = values.get(3); + String body = values.get(4); + OpCommands.doEditGenericResource(resID, resName, description, body, resType); + } + + closeDialog(); + } + }; + form.addButton(submitBtn); + form.addButton(new Button("Cancel") { + @Override + protected void onClick(final ComponentEvent ce) { + super.onClick(ce); + closeDialog(); + } + }); + + form.setButtonAlign(HorizontalAlignment.CENTER); + + FormButtonBinding binding = new FormButtonBinding(form); + binding.addButton(submitBtn); + + this.add(form); + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/remote/ProxyRegistry.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/remote/ProxyRegistry.java new file mode 100644 index 0000000..752ed1d --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/remote/ProxyRegistry.java @@ -0,0 +1,46 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: ProxyRegistry.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.remote; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.rpc.ServiceDefTarget; + +/** + * Utility to simply access in a singleton manner to the + * remote RPC proxy implemented by + * {@link org.gcube.portlets.admin.resourcemanagement.server.ServiceProxyImpl}. + * @author Daniele Strollo (ISTI-CNR) + */ +public class ProxyRegistry { + private static ServiceProxyAsync instance = null; + private static final String proxyURI = "ServiceProxy"; + + /** + * Access to the singleton instance of proxy to contact the + * servlet implementing the server side logics of the application. + * @return the proxy used to invoke the remote servlet. + */ + public static synchronized ServiceProxyAsync getProxyInstance() { + if (instance == null) { + String moduleURL = GWT.getModuleBaseURL() + proxyURI; + instance = (ServiceProxyAsync) GWT.create(ServiceProxy.class); + ServiceDefTarget endpoint = (ServiceDefTarget) instance; + endpoint.setServiceEntryPoint(moduleURL); + } + return instance; + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/remote/ServiceProxy.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/remote/ServiceProxy.java new file mode 100644 index 0000000..09f7482 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/remote/ServiceProxy.java @@ -0,0 +1,181 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: RemoteService.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.remote; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.gcube.resourcemanagement.support.client.utils.CurrentStatus; +import org.gcube.resourcemanagement.support.shared.operations.SupportedOperations; +import org.gcube.resourcemanagement.support.shared.plugins.GenericResourcePlugin; +import org.gcube.resourcemanagement.support.shared.types.Tuple; +import org.gcube.resourcemanagement.support.shared.types.datamodel.CompleteResourceProfile; +import org.gcube.resourcemanagement.support.shared.types.datamodel.ResourceDescriptor; + +import com.google.gwt.user.client.rpc.RemoteService; + +/** + * Interface of RPC servlet implementing the server side logics + * of the application. + * @author Daniele Strollo (ISTI-CNR) + */ +public interface ServiceProxy extends RemoteService { + + boolean enableSuperUserMode(String password); + + CurrentStatus initStatus(); + + void emptyCache(); + + void setUseCache(boolean flag); + + void initScopes(boolean doClean); + + void setSuperUser(boolean superUser); + + /** + * This way the servlet stores the scope in the session. + */ + void setCurrentScope(String scope); + + /** + * @return the list of all available scopes. + */ + List getAvailableScopes(); + List getAvailableAddScopes(); + + + /** + * + * @param resType + * @param resourceIDs + * @param scope + * @return the xml representation of the generated report (if not failed). + * it is a tuple consisting of: + *
0) the reportID + *
1) the resourceType + *
2) the xmlrepresentation + *
3) the html representation + * @throws Exception + */ + Tuple addResourcesToScope(final String resType, final List resourceIDs, final String scope) throws Exception; + + Tuple removeResourcesFromScope(String resType, List resourceIDs, String scope) throws Exception; + + + String deploy(final List ghnsID, final List servicesID) throws Exception; + Tuple checkDeployStatus(String scope, String deployID) throws Exception; + + List getResourcesModel(String scope, String type, String subType, final List> additionalMaps) throws Exception; + /** + * Given a scope, provides the set of (Type, SubType) couples + * defining resources in the system. + * The key of returned hashmap is the type and the associated + * value is a list of string representing its related sub-types. + * @see org.gcube.portlets.admin.resourcemanagement.server.gcube.services.ISClientRequester#getResourcesTypes(org.gcube.common.core.scope.GCUBEScope) + * @param scope the scope of resources + * @return the hash of (type, list(subtypes)) + */ + HashMap> getResourceTypeTree(String scope) throws Exception; + + /** + * Given a type retrieves its related resources. + * E.g. for GHN returns the RunningInstances on it. + * @param scope + * @param type + * @return + */ + List getRelatedResources(String type, String id, String scope); + + /** + * For a given type returns all the resources defined in the IS having + * the chosen type. + * @param scope the scope of resources + * @param type the type of searched resources (e.g. GHN, RunningInstance, ...) + * @return list of XML profiles of resources found + */ + List getResourcesByType(String scope, String type); + + /** + * Filters the resources in a given scope by their type and subtype. + * For example it allows to retrieve in a scope all the GHN (type) + * defined in a domain (its subtype). + * @param scope the scope of resources + * @param type the type of searched resources (e.g. GHN, RunningInstance, ...) + * @param subtype the subtype of search resources (e.g. for GHN is its domain). + * @return list of XML profiles of resources found + */ + List getResourcesBySubType(String scope, String type, String subtype); + + /** + * Used for generic resource editing form to retrieve the profile. + * @param scope + * @param resID + * @return + * @throws Exception + */ + ResourceDescriptor getGenericResourceDescriptor(String scope, String resID) throws Exception; + + /** + * Returns the list of WSResources + * @param scope the scope of resources + * @return list of XML profiles of resources found + */ + List getWSResources(String scope); + + /** + * Retrieves the XML profiles and its HTML representation of + * a resource given its unique identifier and its type. + * Notice that the ID is ensured to be unique for resources + * of the same type. + * @param scope the scope of the resource + * @param type the type of the searched resource (e.g. GHN, RunningInstance, ...) + * @param resID the unique identifier of the resource + * @return a couple of strings (XMLProfile, HTMLProfileRepresentation) + */ + CompleteResourceProfile getResourceByID(String scope, String type, String resID); + + + String createGenericResource( + final String id, + final String name, + final String description, + final String body, + final String subType) + throws Exception; + + void updateGenericResource( + final String id, + final String name, + final String description, + final String body, + final String subType) + throws Exception; + + Map getGenericResourcePlugins() throws Exception; + + /*********************************************************** + * RESOURCE OPERATIONS + **********************************************************/ + void doOperation(SupportedOperations opCode, String scope, List resources) + throws Exception; + + + +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/remote/ServiceProxyAsync.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/remote/ServiceProxyAsync.java new file mode 100644 index 0000000..e6e70ea --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/remote/ServiceProxyAsync.java @@ -0,0 +1,122 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: ServiceProxyAsync.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.remote; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.gcube.resourcemanagement.support.client.utils.CurrentStatus; +import org.gcube.resourcemanagement.support.shared.operations.SupportedOperations; +import org.gcube.resourcemanagement.support.shared.plugins.GenericResourcePlugin; +import org.gcube.resourcemanagement.support.shared.types.Tuple; +import org.gcube.resourcemanagement.support.shared.types.datamodel.CompleteResourceProfile; +import org.gcube.resourcemanagement.support.shared.types.datamodel.ResourceDescriptor; + +import com.google.gwt.user.client.rpc.AsyncCallback; + +/** + * The asynchronous representation of {@link ServiceProxy} interface. + * Needed to implement the server side async RPC. + * + * @author Daniele Strollo (ISTI-CNR) + */ +public interface ServiceProxyAsync { + + void emptyCache(AsyncCallback callback); + void setUseCache(boolean flag, AsyncCallback callback); + + void setSuperUser(boolean superUser, AsyncCallback callback); + + void setCurrentScope(String scope, AsyncCallback callback); + + void initStatus(AsyncCallback callback); + + void initScopes(boolean doClean, AsyncCallback callback); + + void addResourcesToScope(final String resType, final List resourceIDs, final String scope, AsyncCallback> callback); + + void removeResourcesFromScope(final String resType, final List resourceIDs, final String scope, AsyncCallback> callback); + + void deploy(final List ghnsID, final List servicesID, AsyncCallback callback); + void checkDeployStatus(String scope, String deployID, AsyncCallback> callback); + + void getResourcesModel(String scope, String type, String subType, final List> additionalMaps, AsyncCallback> callback); + + void getGenericResourceDescriptor(String scope, String resID, AsyncCallback callback); + + /** + * @see ServiceProxy#getAvailableScopes() + */ + void getAvailableScopes(AsyncCallback> callback); + + void getAvailableAddScopes(AsyncCallback> callback); + + void getResourceTypeTree(String scope, + AsyncCallback>> callback); + + void getRelatedResources(String type, String id, String scope, AsyncCallback> callback); + + /** + * @see ServiceProxy#getResourcesByType(String, String) + */ + void getResourcesByType(String scope, String type, AsyncCallback> callback); + + /** + * @see ServiceProxy#getResourcesBySubType(String, String, String) + */ + void getResourcesBySubType(String scope, String type, String subtype, AsyncCallback> callback); + + + /** + * @see ServiceProxy#getWSResources(String) + */ + void getWSResources(String scope, AsyncCallback> callback); + + /** + * @see ServiceProxy#getResourceByID(String, String, String) + */ + void getResourceByID(String scope, String type, String resID, AsyncCallback callback); + + void createGenericResource( + final String id, + final String name, + final String description, + final String body, + final String subType, + AsyncCallback callback); + + void updateGenericResource( + final String id, + final String name, + final String description, + final String body, + final String subType, + AsyncCallback callback); + + void getGenericResourcePlugins(AsyncCallback> callback); + + + + /*********************************************************** + * RESOURCE OPERATIONS + **********************************************************/ + void doOperation(SupportedOperations opCode, String scope, List resources, AsyncCallback callback) throws Exception; + void enableSuperUserMode(String password, AsyncCallback callback); + +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/utils/Callbacks.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/utils/Callbacks.java new file mode 100644 index 0000000..e1ca147 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/utils/Callbacks.java @@ -0,0 +1,371 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: Callbacks.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.utils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import org.gcube.portlets.admin.resourcemanagement.client.views.profile.ResourceProfilePanel; +import org.gcube.portlets.admin.resourcemanagement.client.views.resourcedetails.ResourceDetailsPanel; +import org.gcube.portlets.admin.resourcemanagement.client.views.resourcedetails.ResourceGridFactory; +import org.gcube.portlets.admin.resourcemanagement.client.views.resourcetree.ResourcesTreePanel; +import org.gcube.portlets.admin.resourcemanagement.client.views.resourcetree.WSResourcesTreePanel; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.console.ConsoleMessageBroker; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.panels.MainPanel; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.registry.UIIdentifiers; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.registry.WidgetsRegistry; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.taskbar.TaskbarItem; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.taskbar.TaskbarRegister; +import org.gcube.resourcemanagement.support.client.utils.LocalStatus; +import org.gcube.resourcemanagement.support.client.utils.StatusHandler; +import org.gcube.resourcemanagement.support.client.views.ResourceTypeDecorator; +import org.gcube.resourcemanagement.support.shared.types.Tuple; +import org.gcube.resourcemanagement.support.shared.types.datamodel.CompleteResourceProfile; + +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.event.ComponentEvent; +import com.extjs.gxt.ui.client.widget.ContentPanel; +import com.extjs.gxt.ui.client.widget.Dialog; +import com.extjs.gxt.ui.client.widget.MessageBox; +import com.extjs.gxt.ui.client.widget.button.Button; +import com.extjs.gxt.ui.client.widget.grid.Grid; +import com.extjs.gxt.ui.client.widget.layout.FitLayout; +import com.extjs.gxt.ui.client.widget.menu.Menu; +import com.extjs.gxt.ui.client.widget.menu.MenuItem; +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.rpc.AsyncCallback; + +/** + * In order to simplify the management of asynchronous commands + * executed by the application that involve access to the servlet + * the invocations have been represented in {@link Commands} and + * the related callbacks here. + * + * @author Daniele Strollo (ISTI-CNR) + */ +public class Callbacks { + + + public static final AsyncCallback> handleGetAvailableScopes = new AsyncCallback>() { + public void onSuccess(final List result) { + + if (!WidgetsRegistry.containsElem(UIIdentifiers.BUTTON_AVAILABLE_SCOPES_ID)) { + //MessageBox.info("Failure", "cannot retrieve the scopes button", null); + Commands.unmask(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + return; + } + Button btnScopes = (Button) WidgetsRegistry.getWidget(UIIdentifiers.BUTTON_AVAILABLE_SCOPES_ID); + + Menu scrollMenu = new Menu(); + scrollMenu.setMaxHeight(200); + + LocalStatus.getInstance().getAvailableScopes().clear(); + + for (String scope : result) { + final String currScope = scope; + LocalStatus.getInstance().getAvailableScopes().add(currScope); + scrollMenu.add(new MenuItem(currScope) { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + Commands.doLoadResourceTree(this, currScope); + } + }); + } + + btnScopes.setMenu(scrollMenu); + Commands.unmask(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + } + public void onFailure(final Throwable caught) { + Commands.unmask(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + MessageBox.info("Failure", "cannot retrieve the scopes", null); + GWT.log("cannot retrieve the scopes", caught); + } + }; + + + + public static final void builtResourceTree(final HashMap> result, final boolean clearGrid) { + MainPanel panel = WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_NAVIGATION_PANEL); + + List wsResourcesTypes = null; + if (result.containsKey(ResourceTypeDecorator.WSResource.name())) { + wsResourcesTypes = result.get(ResourceTypeDecorator.WSResource.name()); + result.remove(ResourceTypeDecorator.WSResource.name()); + } + + // Creates the tree of resources + ResourcesTreePanel resourceTree = new ResourcesTreePanel(result); + resourceTree.getWidget().setWidth("100%"); + resourceTree.getWidget().setHeight("100%"); + ContentPanel cp = new ContentPanel(); + cp.setAnimCollapse(false); + cp.setHeading("Resources"); + cp.setLayout(new FitLayout()); + cp.add(resourceTree.getWidget()); + panel.add(cp, true); + + if (wsResourcesTypes != null && wsResourcesTypes.size() > 0) { + // Creates the tree of WSResources + WSResourcesTreePanel wsresourceTree = new WSResourcesTreePanel(wsResourcesTypes); + wsresourceTree.getWidget().setWidth("100%"); + wsresourceTree.getWidget().setHeight("100%"); + cp = new ContentPanel(); + cp.setAnimCollapse(false); + cp.setHeading("WSResources"); + cp.setLayout(new FitLayout()); + cp.add(wsresourceTree.getWidget()); + panel.add(cp, false); + } + + if (clearGrid) { + Commands.clearResourceGridPanel(); + } + + Commands.unmask(WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_NAVIGATION_PANEL).getContainer()); + Commands.unmask( + UIIdentifiers.GLOBAL_STATUS_BAR_ID, + UIIdentifiers.GLOBAL_MENUBAR_ID); + } + + /** + * Once received the list of Types/Subtypes they are shown in a tree panel. + * Here implemented the logics for that. + */ + public static final AsyncCallback>> handleLoadResourceTree = + new AsyncCallback>>() { + public void onSuccess(final HashMap> result) { + builtResourceTree(result, true); + } + public void onFailure(final Throwable caught) { + MessageBox.info("Failure", caught.getMessage(), null); + + Commands.clearResourceTreePanel(); + ConsoleMessageBroker.error("loading resource", caught.getMessage()); + Commands.unmask(WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_NAVIGATION_PANEL).getContainer()); + Commands.unmask( + UIIdentifiers.GLOBAL_STATUS_BAR_ID, + UIIdentifiers.GLOBAL_MENUBAR_ID); + } + }; + + /** + * Once received the list of Types/Subtypes they are shown in a tree panel. + * Here implemented the logics for that. + */ + public static final AsyncCallback>> handleReloadResourceTree = + new AsyncCallback>>() { + public void onSuccess(final HashMap> result) { + builtResourceTree(result, false); + } + public void onFailure(final Throwable caught) { + MessageBox.info("Failure", caught.getMessage(), null); + + Commands.clearResourceTreePanel(); + ConsoleMessageBroker.error("loading resource", caught.getMessage()); + Commands.unmask(WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_NAVIGATION_PANEL).getContainer()); + Commands.unmask( + UIIdentifiers.GLOBAL_STATUS_BAR_ID, + UIIdentifiers.GLOBAL_MENUBAR_ID); + } + }; + + /** + * Once received the list of resource profiles for resources of a given type, + * they will be shown inside a grid that is created here. + */ + public static final AsyncCallback> handleLoadResourceDetailsGrid = + new AsyncCallback>() { + public void onSuccess(final List result) { + + Commands.mask( + "Rendering grid", + WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL).getContainer() + ); + try { + ResourceDetailsPanel resGrid = Commands.getResourceDetailPanel(); + Grid grid = ResourceGridFactory.createGrid(StatusHandler.getStatus().getCurrentResourceType(), + result, + "SubType"); + resGrid.setGrid(grid, true); + } catch (NullPointerException e1) { + MessageBox.info( + "Failure", + "the grid container cannot be retrieved", + null); + } + Commands.unmask(WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_NAVIGATION_PANEL).getContainer()); + Commands.unmask(WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL).getContainer()); + + Commands.setLoadedResources(result != null ? result.size() : 0); + Commands.showPopup("Grid Creation", "Retrieved " + (result != null ? result.size() : 0) + " elements."); + } + + public void onFailure(final Throwable caught) { + MessageBox.info("Failure", "the grid has not been built", null); + Commands.unmask(WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_NAVIGATION_PANEL).getContainer()); + Commands.unmask(WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL).getContainer()); + } + }; + + + + public static final AsyncCallback> handleFilterResourceDetailsGrid = + new AsyncCallback>() { + public void onSuccess(final List result) { + try { + ResourceDetailsPanel resGrid = Commands.getResourceDetailPanel(); + Grid grid = ResourceGridFactory.createGrid(StatusHandler.getStatus().getCurrentResourceType(), + result, + null); + resGrid.setGrid(grid, false); + } catch (NullPointerException e1) { + MessageBox.info( + "Failure", + "the grid container cannot be retrieved", + null); + } finally { + Commands.unmask(WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_NAVIGATION_PANEL).getContainer()); + Commands.unmask(WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL).getContainer()); + } + + Commands.setLoadedResources(result != null ? result.size() : 0); + Commands.showPopup("Grid Creation", "Retrieved " + (result != null ? result.size() : 0) + " elements."); + } + + public void onFailure(final Throwable caught) { + MessageBox.info("Failure", "the grid has not been built", null); + + Commands.unmask(WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_NAVIGATION_PANEL).getContainer()); + Commands.unmask(WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL).getContainer()); + } + }; + + + public static final AsyncCallback handleGetResourceProfile = + new AsyncCallback() { + + public void onSuccess(final CompleteResourceProfile result) { + Dialog dlg = new Dialog(); + dlg.setLayout(new FitLayout()); + dlg.setHeading("XML Resource Profile"); + dlg.setModal(true); + dlg.setWidth(800); + dlg.setHeight(400); + dlg.setHideOnButtonClick(true); + // HtmlContainer htmlContainer = new HtmlContainer(); + try { + // This resource has already been opened + if (TaskbarRegister.contains(result.getID())) { + TaskbarRegister.getTaskbarItem(result.getID()).destroy(); + Commands.showPopup("Retrieve Resource Profile", "Refreshing profile for id: " + + result.getID(), 3000); + } + MainPanel taskbarContainer = WidgetsRegistry.getPanel(UIIdentifiers.TASKBAR_PANEL); + TaskbarItem tkItem = new TaskbarItem( + StatusHandler.getStatus().getCurrentScope(), + result.getType(), + taskbarContainer, + result.getID(), + //result.getType() + ": " + result.getTitle(), + result.getTitle(), + "resource-profile-taskbar-item", + "profile-big-icon"); + tkItem.getRelatedWindow().setMainWidget( + new ResourceProfilePanel( + result.getType(), + result.getXmlRepresentation(), + result.getHtmlRepresentation()).getWidget()); + TaskbarRegister.registerTaskbarWidget(result.getID(), tkItem); + } catch (Exception e) { + GWT.log("During HTML conversion", e); + } finally { + Commands.unmask(WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL).getContainer()); + } + } + + public void onFailure(final Throwable caught) { + MessageBox.info("Failure", "the profile has not been retrieved", null); + GWT.log("on handleGetResourceProfile", caught); + Commands.unmask(WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL).getContainer()); + } + }; + + + public static final AsyncCallback> handleGetDeploymentReport = + new AsyncCallback>() { + + public void onSuccess(final Tuple result) { + + if (result.size() < 3) { + MessageBox.alert("Invalid Report Received", "Don't know why :(", null); + Commands.unmask(UIIdentifiers.GLOBAL_STATUS_BAR_ID); + Commands.unmask(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID, UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL); + return; + } + + Dialog dlg = new Dialog(); + dlg.setLayout(new FitLayout()); + dlg.setHeading("XML Resource Profile"); + dlg.setModal(true); + dlg.setWidth(800); + dlg.setHeight(400); + dlg.setHideOnButtonClick(true); + // HtmlContainer htmlContainer = new HtmlContainer(); + try { + + String reportID = result.get(0); + String resourceTitle = ResourceTypeDecorator.DeployReport.getLabel() + ": " + reportID; + + // This resource has already been opened + if (TaskbarRegister.contains(reportID)) { + TaskbarRegister.getTaskbarItem(reportID).destroy(); + Commands.showPopup("Retrieve Report", "Refreshing Report id: " + + reportID, 3000); + } + MainPanel taskbarContainer = WidgetsRegistry.getPanel(UIIdentifiers.TASKBAR_PANEL); + TaskbarItem tkItem = new TaskbarItem( + StatusHandler.getStatus().getCurrentScope(), + ResourceTypeDecorator.DeployReport, + taskbarContainer, + reportID, + resourceTitle, + "resource-profile-taskbar-item", + ResourceTypeDecorator.DeployReport.getIcon()); + tkItem.getRelatedWindow().setMainWidget( + new ResourceProfilePanel( + ResourceTypeDecorator.DeployReport, + result.get(1), + result.get(2)).getWidget()); + TaskbarRegister.registerTaskbarWidget(reportID, tkItem); + } catch (Exception e) { + GWT.log("During HTML conversion", e); + } finally { + Commands.unmask(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID, UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL); + Commands.unmask(UIIdentifiers.GLOBAL_STATUS_BAR_ID); + } + } + + public void onFailure(final Throwable caught) { + MessageBox.info("Failure", "the report has not been retrieved", null); + GWT.log("on handleGetDeploymentReport", caught); + Commands.unmask(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID, UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL); + Commands.unmask(UIIdentifiers.GLOBAL_STATUS_BAR_ID); + } + }; +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/utils/Commands.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/utils/Commands.java new file mode 100644 index 0000000..4851e21 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/utils/Commands.java @@ -0,0 +1,590 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: Commands.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.utils; + +import java.util.List; + +import org.gcube.portlets.admin.resourcemanagement.client.remote.ProxyRegistry; +import org.gcube.portlets.admin.resourcemanagement.client.views.profile.ResourceProfilePanel; +import org.gcube.portlets.admin.resourcemanagement.client.views.resourcedetails.ResourceDetailsPanel; +import org.gcube.portlets.admin.resourcemanagement.client.views.resourcedetails.ResourceGridFactory; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.console.ConsoleMessageBroker; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.console.ConsolePanel; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.panels.MainPanel; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.registry.UIIdentifiers; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.registry.WidgetsRegistry; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.taskbar.TaskbarItem; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.taskbar.TaskbarRegister; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.viewport.MainContainer; +import org.gcube.portlets.admin.resourcemanagement.shared.exceptions.WidgetNotRegistered; +import org.gcube.resourcemanagement.support.client.utils.StatusHandler; +import org.gcube.resourcemanagement.support.client.views.ResourceTypeDecorator; +import org.gcube.resourcemanagement.support.shared.types.Tuple; +import org.gcube.resourcemanagement.support.shared.types.UserGroup; +import org.gcube.resourcemanagement.support.shared.util.Configuration; +import org.gcube.resourcemanagement.support.shared.util.DelayedOperation; + +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.widget.Component; +import com.extjs.gxt.ui.client.widget.ContentPanel; +import com.extjs.gxt.ui.client.widget.Dialog; +import com.extjs.gxt.ui.client.widget.Info; +import com.extjs.gxt.ui.client.widget.InfoConfig; +import com.extjs.gxt.ui.client.widget.MessageBox; +import com.extjs.gxt.ui.client.widget.ProgressBar; +import com.extjs.gxt.ui.client.widget.Status; +import com.extjs.gxt.ui.client.widget.Text; +import com.extjs.gxt.ui.client.widget.grid.Grid; +import com.extjs.gxt.ui.client.widget.layout.FitLayout; +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; + +/** + * Here is a set of commands executed inside callbacks that involve + * interactions with client-side widgets. + * Additionally other commands are provided for general purpose functionalities + * (e.g. refresh components, main components lookup, ...).m + * @author Daniele Strollo (ISTI-CNR) + */ +public class Commands { + + /************************************************************************** + * COMMANDS FOR RPC REQUESTS TO THE SERVLET + *************************************************************************/ + + public static final void refreshProgressBar() { + final ProgressBar progress = (ProgressBar) WidgetsRegistry.getElem(UIIdentifiers.STATUS_PROGRESS_BAR_ID); + + new DelayedOperation() { + @Override + public void doJob() { + + } + }.start(1000); + } + + /** + * Creates a new Navigation Tree for the resources in a given scope. + * @param caller for logging reasons the caller must be passed as parameter + * @param scope the scope for resources to retrieve + */ + public static final void doLoadResourceTree(final Object caller, final String scope) { + StatusHandler.getStatus().setCurrentScope(scope); + Commands.mask( + "Loading Resource Tree", + WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_NAVIGATION_PANEL).getContainer() + ); + Commands.mask(null, + UIIdentifiers.GLOBAL_STATUS_BAR_ID, + UIIdentifiers.GLOBAL_MENUBAR_ID); + ConsoleMessageBroker.info(caller, "Loading scope " + scope); + ProxyRegistry.getProxyInstance().getResourceTypeTree( + scope, + Callbacks.handleLoadResourceTree); + } + + public static final void doLoadResourceDetailsGrid(final Object caller, final String scope, final String resourceType) { + StatusHandler.getStatus().setCurrentScope(scope); + StatusHandler.getStatus().setCurrentResourceType(resourceType); + StatusHandler.getStatus().setCurrentResourceSubType(null); + WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL).removeAll(); + Commands.mask( + "Waiting for Resource Details", + WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_NAVIGATION_PANEL).getContainer() + ); + Commands.mask( + "Loading Resource Details for type: " + resourceType + " in scope: " + scope, + WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL).getContainer() + ); + ProxyRegistry.getProxyInstance().getResourcesByType( + scope, + resourceType, + Callbacks.handleLoadResourceDetailsGrid); + } + + public static final void doGetRelatedResources(final String type, final String id, final String scope) { + ProxyRegistry.getProxyInstance().getRelatedResources(type, id, scope, new AsyncCallback>() { + + public void onSuccess(final List result) { + final Grid grid = ResourceGridFactory.createGrid(type + "Related", result, null); + if (grid == null) { + Commands.showPopup("Grid Creation", + "The grid for related resource of " + type + " cannot be built", + 6000); + } + final Dialog dlg = new Dialog() { + protected void onRender(final com.google.gwt.user.client.Element parent, final int pos) { + super.onRender(parent, pos); + this.setLayout(new FitLayout()); + this.add(grid); + }; + }; + dlg.setSize(720, 250); + dlg.setHideOnButtonClick(true); + dlg.setHeading("Resource related to " + type + " " + id); + dlg.show(); + } + + public void onFailure(final Throwable caught) { + } + }); + + } + + public static final void doLoadWSResourceDetailsGrid( + final Object caller, + final String scope) { + StatusHandler.getStatus().setCurrentScope(scope); + StatusHandler.getStatus().setCurrentResourceType(ResourceTypeDecorator.WSResource.name()); + StatusHandler.getStatus().setCurrentResourceSubType(null); + WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL).removeAll(); + Commands.mask( + "Waiting for Resource Details", + WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_NAVIGATION_PANEL).getContainer() + ); + Commands.mask( + "Loading Resource Details for type: " + ResourceTypeDecorator.WSResource.name() + " in scope: " + scope, + WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL).getContainer() + ); + ProxyRegistry.getProxyInstance().getWSResources( + scope, + Callbacks.handleLoadResourceDetailsGrid); + } + + /** + * Filters the result of resource detail grid by using its subtye. + * @param caller + * @param resourceSubType + */ + public static final void doFilterResourceDetailsGrid( + final Object caller, final String scope, final String resourceType, final String resourceSubType) { + StatusHandler.getStatus().setCurrentScope(scope); + StatusHandler.getStatus().setCurrentResourceType(resourceType); + StatusHandler.getStatus().setCurrentResourceSubType(resourceSubType); + WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL).removeAll(); + Commands.mask( + "Waiting for Resource Details", + WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_NAVIGATION_PANEL).getContainer() + ); + Commands.mask( + "Filtering Resource Details for " + resourceType + "::" + resourceSubType, + WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL).getContainer() + ); + + ProxyRegistry.getProxyInstance().getResourcesBySubType( + scope, + resourceType, + resourceSubType, + Callbacks.handleFilterResourceDetailsGrid); + } + + public static final void doGetResourceProfileByID(final Object caller, final String scope, final String resourceID) { + ProxyRegistry.getProxyInstance().getResourceByID( + scope, + null, // no type specified + resourceID, + Callbacks.handleGetResourceProfile); + } + + public static final void doGetResourceProfile(final Object caller, final String scope, String resourceType, final String resourceID) { + /** + * Patch (i know do not tell me about it) + */ + if (resourceType.compareTo("GenericResourceGenericResource") == 0) { + resourceType = "GenericResource"; + GWT.log("resType changed to =" + resourceType); + } + StatusHandler.getStatus().setCurrentScope(scope); + StatusHandler.getStatus().setCurrentResourceType(resourceType); + Commands.mask( + "Getting Profile details for " + FWSTranslate.getFWSNameFromLabel(resourceType) + ": " + resourceID, + WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL).getContainer() + ); + ProxyRegistry.getProxyInstance().getResourceByID( + scope, + resourceType, + resourceID, + Callbacks.handleGetResourceProfile); + } + + + public static final void doGetAvailableScopes(final Object caller) { + Commands.mask("Loading scopes", UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + ProxyRegistry.getProxyInstance().getAvailableScopes(Callbacks.handleGetAvailableScopes); + } + + public static final void buildAddToScopeReport(final Tuple result) { + if (result.size() < 4) { + MessageBox.alert("Invalid Report Received", "Don't know why :(", null); + Commands.unmask(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID, UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL); + return; + } + + Dialog dlg = new Dialog(); + dlg.setLayout(new FitLayout()); + dlg.setHeading("XML Resource Profile"); + dlg.setModal(true); + dlg.setWidth(800); + dlg.setHeight(400); + dlg.setHideOnButtonClick(true); + // HtmlContainer htmlContainer = new HtmlContainer(); + try { + + String reportID = result.get(0); + // String resType = result.get(1); + String xmlReport = result.get(2); + String htmlReport = result.get(3); + + //String resourceTitle = ResourceTypeDecorator.AddScopeReport.getLabel() + ": " + reportID; + int repSoFar = TaskbarRegister.getCurrAddScopeReportsNumber() + 1; + String resourceTitle = ResourceTypeDecorator.AddScopeReport.getLabel() + "("+repSoFar+")"; + + // This resource has already been opened + if (TaskbarRegister.contains(reportID)) { + TaskbarRegister.getTaskbarItem(reportID).destroy(); + Commands.showPopup("Retrieve Report", "Refreshing Report id: " + + reportID, 3000); + } + MainPanel taskbarContainer = WidgetsRegistry.getPanel(UIIdentifiers.TASKBAR_PANEL); + TaskbarItem tkItem = new TaskbarItem( + StatusHandler.getStatus().getCurrentScope(), + ResourceTypeDecorator.AddScopeReport, + taskbarContainer, + reportID, + resourceTitle, + "resource-profile-taskbar-item", + ResourceTypeDecorator.DeployReport.getIcon()); + tkItem.getRelatedWindow().setMainWidget( + new ResourceProfilePanel( + ResourceTypeDecorator.AddScopeReport, + xmlReport, htmlReport).getWidget()); + TaskbarRegister.registerTaskbarWidget(reportID, tkItem); + } catch (Exception e) { + GWT.log("During HTML conversion", e); + } finally { + Commands.unmask(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID, UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL); + } + } + + public static final void buildRemoveFromScopeReport(final Tuple result) { + if (result.size() < 4) { + MessageBox.alert("Invalid Report Received", "Don't know why :(", null); + Commands.unmask(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID, UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL); + return; + } + + Dialog dlg = new Dialog(); + dlg.setLayout(new FitLayout()); + dlg.setHeading("XML Resource Profile"); + dlg.setModal(true); + dlg.setWidth(800); + dlg.setHeight(400); + dlg.setHideOnButtonClick(true); + // HtmlContainer htmlContainer = new HtmlContainer(); + try { + + String reportID = result.get(0); + // String resType = result.get(1); + String xmlReport = result.get(2); + String htmlReport = result.get(3); + + //String resourceTitle = ResourceTypeDecorator.AddScopeReport.getLabel() + ": " + reportID; + int repSoFar = TaskbarRegister.getCurrAddScopeReportsNumber() + 1; + String resourceTitle = ResourceTypeDecorator.RemoveScopeReport.getLabel() + "("+repSoFar+")"; + + // This resource has already been opened + if (TaskbarRegister.contains(reportID)) { + TaskbarRegister.getTaskbarItem(reportID).destroy(); + Commands.showPopup("Retrieve Report", "Refreshing Report id: " + + reportID, 3000); + } + MainPanel taskbarContainer = WidgetsRegistry.getPanel(UIIdentifiers.TASKBAR_PANEL); + TaskbarItem tkItem = new TaskbarItem( + StatusHandler.getStatus().getCurrentScope(), + ResourceTypeDecorator.RemoveScopeReport, + taskbarContainer, + reportID, + resourceTitle, + "resource-profile-taskbar-item", + ResourceTypeDecorator.DeployReport.getIcon()); + tkItem.getRelatedWindow().setMainWidget( + new ResourceProfilePanel( + ResourceTypeDecorator.RemoveScopeReport, + xmlReport, htmlReport).getWidget()); + TaskbarRegister.registerTaskbarWidget(reportID, tkItem); + } catch (Exception e) { + GWT.log("During HTML conversion", e); + } finally { + Commands.unmask(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID, UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL); + } + } + + public static final void doSetSuperUser(final boolean state) { + if (state) { + StatusHandler.getStatus().setCredentials(UserGroup.ADMIN); + } else { + StatusHandler.getStatus().setCredentials(UserGroup.DEBUG); + } + ProxyRegistry.getProxyInstance().setSuperUser(state, new AsyncCallback() { + public void onSuccess(final Void result) { + ConsoleMessageBroker.info(this, "Currently super user"); + Commands.refreshResourceGrid(); + //Commands.refreshResourceTree(); + Commands.doGetAvailableScopes(Commands.class); + } + public void onFailure(final Throwable caught) { + ConsoleMessageBroker.error(this, "Super user mode failed"); + } + }); + } + + + /************************************************************************** + * GENERAL PURPOSE UTILITY COMMANDS + *************************************************************************/ + + public static final void refreshResourceTree() { + String scope = StatusHandler.getStatus().getCurrentScope(); + Commands.mask( + "Loading Resource Tree", + WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_NAVIGATION_PANEL).getContainer() + ); + Commands.mask(null, + UIIdentifiers.GLOBAL_STATUS_BAR_ID, + UIIdentifiers.GLOBAL_MENUBAR_ID); + ConsoleMessageBroker.info(Commands.class, "Loading scope " + scope); + ProxyRegistry.getProxyInstance().getResourceTypeTree( + scope, + Callbacks.handleReloadResourceTree); + } + + public static final void refreshResourceGrid() { + String scope = StatusHandler.getStatus().getCurrentScope(); + String resType = StatusHandler.getStatus().getCurrentResourceType(); + String resSubType = StatusHandler.getStatus().getCurrentResourceSubType(); + + if (scope != null && resType != null) { + if (resSubType == null) { + if (resType.equalsIgnoreCase(ResourceTypeDecorator.WSResource.name())) { + doLoadWSResourceDetailsGrid(Commands.class.getName(), + scope); + } else { + doLoadResourceDetailsGrid(Commands.class.getName(), + scope, + resType); + } + } else { + // Has a subtype + doFilterResourceDetailsGrid(Commands.class.getName(), + scope, + resType, + resSubType); + } + } + } + + public static void clearResourceTreePanel() { + MainPanel treePanel = WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_NAVIGATION_PANEL); + Text widget = new Text(); + widget.setId("res-details-widget-fake"); + widget.setStyleName("x-panel-tree-background"); + ContentPanel cp = new ContentPanel(); + cp.setAnimCollapse(false); + cp.setHeading("Resources"); + cp.setLayout(new FitLayout()); + cp.add(widget); + treePanel.add(cp, true); + } + + public static void clearResourceGridPanel() { + Component widget = new Text(); + widget.setId("res-details-widget-fake"); + widget.setStyleName("x-panel-cube-background"); + + WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL).add(widget, true); + } + + public static void showHideConsole() { + Object elem = WidgetsRegistry.getElem(UIIdentifiers.CONSOLE_COMPONENT_ID); + if (elem != null && elem instanceof Component) { + Component console = (Component) elem; + if (!console.isVisible()) { + console.show(); + } else { + console.hide(); + } + } + } + + public static MainContainer getViewport() { + return (MainContainer) WidgetsRegistry.getWidget(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + } + + public static void refreshViewport() { + MainContainer viewport = (MainContainer) WidgetsRegistry.getWidget(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + viewport.layout(true); + } + + public static void refreshConsole() { + ConsolePanel console = WidgetsRegistry.getConsole(); + if (console != null) { + console.refresh(); + } + } + + public static void refreshResourceDetails() { + WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL).getContainer().layout(true); + } + + @SuppressWarnings("unchecked") + public static Grid getResourceDetailGrid() { + Object retval = getResourceDetailPanel().getWidget(); + if (retval == null) { + return null; + } + if (retval != null && retval instanceof Grid) { + return (Grid) retval; + } + return null; + } + + public static ResourceDetailsPanel getResourceDetailPanel() { + try { + Object o = WidgetsRegistry.getElem(UIIdentifiers.RESOURCE_DETAIL_GRID_CONTAINER_ID, ResourceDetailsPanel.class); + if (o != null && o instanceof ResourceDetailsPanel) { + return (ResourceDetailsPanel) o; + } + return null; + } catch (WidgetNotRegistered e) { + return null; + } + } + + /** + * In the status bar sets the currently selected scope. + * @param scope + */ + public static void setStatusScope(final String scope) { + try { + Status scopeInfo = (Status) WidgetsRegistry.getWidget(UIIdentifiers.STATUS_SCOPE_INFO_ID); + scopeInfo.setText(scope); + + ProxyRegistry.getProxyInstance().setCurrentScope(scope, new AsyncCallback() { + public void onSuccess(final Void result) { + ConsoleMessageBroker.info(this, "The scope has been sent to server"); + } + public void onFailure(final Throwable caught) { + ConsoleMessageBroker.error(this, "The scope has not been sent to server"); + } + }); + + } catch (Exception e) { + ConsoleMessageBroker.error(Commands.class, e.getMessage()); + } + } + + + public static void setLoadedResources(final int number) { + try { + Status loadedResources = (Status) WidgetsRegistry.getWidget(UIIdentifiers.STATUS_LOADED_RESOURCES_ID); + loadedResources.setText(String.valueOf(number)); + } catch (Exception e) { + ConsoleMessageBroker.error(Commands.class, e.getMessage()); + } + } + + + /** + * When masking the component show the rotating gear. + * @param component the element to mask + * @param message the message to show during loading + */ + public static void mask(final String message, final Component component) { + if (component != null) { + if (message != null) { + component.mask(message, "loading-indicator"); + } else { + component.mask(); + } + } + } + + public static void unmask(final Component component) { + if (component != null) { + component.unmask(); + } + } + + public static void mask(final String message, final String... componentIDs) { + for (String componentID : componentIDs) { + if (WidgetsRegistry.containsElem(componentID)) { + try { + if (message == null) { + ((Component) WidgetsRegistry.getWidget(componentID)).mask(); + } else { + ((Component) WidgetsRegistry.getWidget(componentID)).mask(message, "loading-indicator"); + } + } catch (Exception e) {} + } + } + } + + public static void unmask(final String... componentIDs) { + for (String componentID : componentIDs) { + if (WidgetsRegistry.containsElem(componentID)) { + try { + ((Component) WidgetsRegistry.getWidget(componentID)).unmask(); + + } catch (Exception e) {} + } + } + } + + public static void showPopup(final String title, final String text) { + showPopup(title, text, Configuration.popupDelay); + } + + public static void showPopup(final String title, final String text, final int delayMills) { + InfoConfig cfg = new InfoConfig(title, text); + cfg.display = delayMills; + Info.display(cfg); + } + + /** + * Checks that a component is enabled for the current credentials. + * If not it will be disabled and hidden. + * @param w + * @param args a list of enabled groups. + */ + public static final void evaluateCredentials(final Component w, final UserGroup... args) { + if (StatusHandler.getStatus().getCredentials() == null) { + w.setEnabled(false); + w.hide(); + return; + } + for (UserGroup enabledGroup : args) { + if (StatusHandler.getStatus().getCredentials() == enabledGroup) { + w.setEnabled(true); + w.show(); + return; + } + } + w.setEnabled(false); + w.hide(); + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/utils/FWSTranslate.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/utils/FWSTranslate.java new file mode 100644 index 0000000..7ae6bb6 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/utils/FWSTranslate.java @@ -0,0 +1,23 @@ +package org.gcube.portlets.admin.resourcemanagement.client.utils; + +import org.gcube.resourcemanagement.support.client.views.ResourceTypeDecorator; +/** + * Simply return the correspondant Feather Weight Stack label to the gCore Label + * @author Massimiliano Assante (ISTI-CNR) + * + */ +public class FWSTranslate { + /** + * + * @param gCoreLabel + * @return the Feather Weight Stack label if present, the same label otherwise + */ + public static String getFWSNameFromLabel(String gCoreLabel) { + ResourceTypeDecorator[] toCheck = ResourceTypeDecorator.values(); + for (int i = 0; i < toCheck.length; i++) { + if (gCoreLabel.compareTo(toCheck[i].name()) == 0) + return toCheck[i].getFWSName(); + } + return gCoreLabel; + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/utils/Messages.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/utils/Messages.java new file mode 100644 index 0000000..220516b --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/utils/Messages.java @@ -0,0 +1,27 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: Messages.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.utils; + +/** + * @author Daniele Strollo (ISTI-CNR) + * + */ +public class Messages { + public static final String UPDATE_SW_REPOSITORY_FAILURE = "You are not allowed to require the Software Repository Upgrade."; + public static final String UPDATE_SW_REPOSITORY_INSERT_URL = "Insert the URL for upgrade description."; + public static final String NO_SCOPE_SELECTED = "No current scope selected."; +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/utils/OpCommands.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/utils/OpCommands.java new file mode 100644 index 0000000..55eb2b4 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/utils/OpCommands.java @@ -0,0 +1,346 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: CommonOperations.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.utils; + +import java.util.List; +import java.util.Vector; + +import org.gcube.portlets.admin.resourcemanagement.client.forms.genericresources.GenericResourceForm; +import org.gcube.portlets.admin.resourcemanagement.client.remote.ProxyRegistry; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.console.ConsoleMessageBroker; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.registry.UIIdentifiers; +import org.gcube.resourcemanagement.support.client.utils.StatusHandler; +import org.gcube.resourcemanagement.support.client.views.ResourceTypeDecorator; +import org.gcube.resourcemanagement.support.shared.exceptions.InvalidParameterException; +import org.gcube.resourcemanagement.support.shared.operations.SupportedOperations; +import org.gcube.resourcemanagement.support.shared.types.datamodel.ResourceDescriptor; +import org.gcube.resourcemanagement.support.shared.util.DelayedOperation; + +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.event.Listener; +import com.extjs.gxt.ui.client.event.MessageBoxEvent; +import com.extjs.gxt.ui.client.widget.MessageBox; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; + + +class OpCallBacks { + + public static final AsyncCallback handleGenericOperation(final SupportedOperations op) { + return new AsyncCallback() { + public void onSuccess(final Void result) { + MessageBox.info("Managing resources", "The operation " + op.name() + " has been successfully executed.", null); + if (op == SupportedOperations.GENERIC_RESOURCE_DELETE || + op == SupportedOperations.COLLECTION_DELETE) { + Commands.refreshResourceGrid(); + } + } + + public void onFailure(final Throwable caught) { + MessageBox.info("Managing resources", "The operation " + op.name() + " has failed." + + ((caught != null) ? "
" + caught.getMessage() : "") + + "
See server log for further details.", null); + } + }; + } +} + +/** + * Here the commands for operations on resources. + * @author Daniele Strollo (ISTI-CNR) + * + */ +public class OpCommands { + + /************************************************************* + * GHN + ************************************************************/ + + public static final void doShutdownGHNs(final List ghns) { + List toSend = new Vector(); + for (ModelData rawData : ghns) { + try { + toSend.add(new ResourceDescriptor( + ((Object) rawData.get("Type")).toString(), + null, // The subType is not required here + ((Object) rawData.get("ID")).toString(), + ((Object) rawData.get("Name")).toString())); + } catch (InvalidParameterException e) { + Commands.showPopup("Cannot shutdown GHN", e.getMessage()); + } + } + try { + ProxyRegistry.getProxyInstance().doOperation( + SupportedOperations.GHN_SHUTDOWN, + StatusHandler.getStatus().getCurrentScope(), + toSend, + OpCallBacks.handleGenericOperation(SupportedOperations.GHN_SHUTDOWN) + ); + } catch (Exception e) { + ConsoleMessageBroker.error(OpCommands.class, e.getMessage()); + MessageBox.info( + "Failure", + "the GHNs cannot be shut down", + null); + } + } + + public static final void doRestartGHNs(final List ghns, final boolean clean) { + List toSend = new Vector(); + for (ModelData rawData : ghns) { + try { + toSend.add(new ResourceDescriptor( + ((Object) rawData.get("Type")).toString(), + null, // The subType is not required here + ((Object) rawData.get("ID")).toString(), + ((Object) rawData.get("Name")).toString())); + } catch (InvalidParameterException e) { + Commands.showPopup("Cannot restart GHN", e.getMessage()); + } + } + try { + ProxyRegistry.getProxyInstance().doOperation( + ((clean) ? SupportedOperations.GHN_CLEAN_RESTART : SupportedOperations.GHN_RESTART), + StatusHandler.getStatus().getCurrentScope(), + toSend, + OpCallBacks.handleGenericOperation(SupportedOperations.GHN_RESTART) + ); + } catch (Exception e) { + ConsoleMessageBroker.error(OpCommands.class, e.getMessage()); + MessageBox.info( + "Failure", + "the GHNs cannot be restarted", + null); + } + } + + + /************************************************************* + * DELETE RESOURCE + ************************************************************/ + public static final void doDeleteItems( + final ResourceTypeDecorator type, + final List items, + final SupportedOperations requiredPermissions) { + List toSend = new Vector(); + for (ModelData rawData : items) { + try { + toSend.add(new ResourceDescriptor( + ((Object) rawData.get("Type")).toString(), + null, // The subType is not required here + ((Object) rawData.get("ID")).toString(), + ((Object) rawData.get("Name")).toString())); + } catch (InvalidParameterException e) { + Commands.showPopup("Cannot delete " + type.name(), e.getMessage()); + } + } + try { + ProxyRegistry.getProxyInstance().doOperation( + requiredPermissions, + StatusHandler.getStatus().getCurrentScope(), + toSend, + OpCallBacks.handleGenericOperation(requiredPermissions) + ); + } catch (Exception e) { + ConsoleMessageBroker.error(OpCommands.class, e.getMessage()); + MessageBox.info( + "Failure", + "the selected " + type.name() + "(s) cannot be deleted", + null); + } + } + + /************************************************************* + * SERVICE ENDPOINT + ************************************************************/ + public static final void doOpenServiceEndpointForm() { + if (SupportedOperations.GENERIC_RESOURCE_CREATE.isAllowed(StatusHandler.getStatus().getCredentials())) { + loadServiceEndopointEditor(null); + } else { + MessageBox.alert("Service Endpoint Creation", "You are not allowed to execute this operation", null); + } + } + + + /************************************************************* + * GENERIC RESOURCE + ************************************************************/ + public static final void doOpenGenericResourceForm() { + if (SupportedOperations.GENERIC_RESOURCE_CREATE.isAllowed(StatusHandler.getStatus().getCredentials())) { + new GenericResourceForm().show(); + } else { + MessageBox.alert("Generic Resource Creation", "You are not allowed to execute this operation", null); + } + } + + + + public static final void doCreateGenericResource( + final String id, + final String name, + final String description, + final String body, + final String subType) { + if (SupportedOperations.GENERIC_RESOURCE_CREATE.isAllowed(StatusHandler.getStatus().getCredentials())) { + ProxyRegistry.getProxyInstance().createGenericResource(id, name, description, body, subType, + new AsyncCallback() { + public void onSuccess(final String result) { + MessageBox.info("Generic Resouce Creation", + "The generic resource " + name + " has been created with ID:
" + result, + null); + new DelayedOperation() { + @Override + public void doJob() { + Commands.refreshResourceGrid(); + } + } + .start(3000); + + } + public void onFailure(final Throwable caught) { + MessageBox.alert("Generic Resouce Creation", + "Generic Resource Creation failure:
" + + ((caught != null && caught.getMessage() != null) ? + caught.getMessage() : + "See server log for further details."), + null); + } + }); + } else { + MessageBox.alert("Generic Resource Creation", "You are not allowed to execute this operation", null); + } + } + + public static final void doEditGenericResource( + final String id, + final String name, + final String description, + final String body, + final String subType) { + if (SupportedOperations.GENERIC_RESOURCE_EDIT.isAllowed(StatusHandler.getStatus().getCredentials())) { + ProxyRegistry.getProxyInstance().updateGenericResource(id, name, description, body, subType, + new AsyncCallback() { + public void onSuccess(final Void result) { + MessageBox.info("Generic Resouce Creation", + "The generic resource " + name + " has been updated", + null); + Commands.refreshResourceGrid(); + } + public void onFailure(final Throwable caught) { + MessageBox.alert("Generic Resouce Creation", + "Generic Resource Creation failure:
" + + ((caught != null && caught.getMessage() != null) ? + caught.getMessage() : + "See server log for further details."), + null); + } + }); + } else { + MessageBox.alert("Generic Resource Creation", "You are not allowed to execute this operation", null); + } + } + + + /************************************************************* + * SERVICE + ************************************************************/ + public static final void doOpenServiceForm() { + if (SupportedOperations.SERVICE_CREATE.isAllowed(StatusHandler.getStatus().getCredentials())) { + MessageBox.alert("Service Creation", "To implement", null); + } else { + MessageBox.alert("Service Creation", "You are not allowed to execute this operation", null); + } + } + + public static final void doGetDeployReport() { + if (SupportedOperations.SERVICE_GET_REPORT.isAllowed(StatusHandler.getStatus().getCredentials())) { + Commands.mask("Requesting deployment report", UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + MessageBox.prompt("Deployment Report Request", "Insert Report ID", false, new Listener() { + public void handleEvent(final MessageBoxEvent be) { + String reportID = be.getValue(); + if (reportID != null && reportID.trim().length() > 0) { + ProxyRegistry.getProxyInstance().checkDeployStatus( + reportID.trim(), + StatusHandler.getStatus().getCurrentScope(), + Callbacks.handleGetDeploymentReport); + } else { + Commands.unmask(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + Commands.showPopup("Wrong input", "Invalid input.", 4000); + } + } + }); + } + } + + public static final void doGetResourceByID() { + if (SupportedOperations.SERVICE_GET_REPORT.isAllowed(StatusHandler.getStatus().getCredentials())) { + MessageBox.prompt("Lookup Resource", "Insert Resource ID", false, new Listener() { + public void handleEvent(final MessageBoxEvent be) { + String reportID = be.getValue(); + if (reportID != null && reportID.trim().length() > 0) { + Commands.doGetResourceProfileByID(this, StatusHandler.getStatus().getCurrentScope(), reportID.trim()); + } else { + Commands.unmask(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + Commands.showPopup("Wrong input", "Invalid input.", 4000); + } + } + }); + } + } + + + /** + * Redirect to Service Endpoint Editor + * @param idToEdit + */ + public static void loadServiceEndopointEditor(String idToEdit) { + + String location = Window.Location.getHref(); + String res2EditParam = ""; + if (idToEdit != null) { + res2EditParam = "&rid=" + idToEdit; + } + + if (location.endsWith("/") || location.endsWith("#")) { //standalone + location = location.substring(0, location.length()-2); + } + + location += "/../runtime-resource?pid=126&lifecycle=0&state=maximized&modes=view&doAsId=10136&refererPlid=10139&authzToken=101334249" + + "&curscope="+StatusHandler.getStatus().getCurrentScope()+res2EditParam; + + //Window.open(location, "_blank", ""); + openNewWindow("Service Endpoint Editor", location); + } + + /** + * Opens a new windows with a specified URL.. + * + * @param name String with the name of the window. + * @param url String with your URL. + */ + public static void openNewWindow(String name, String url) { + com.google.gwt.user.client.Window.open(url, name.replace(" ", "_"), + "menubar=no," + + "location=false," + + "resizable=yes," + + "scrollbars=yes," + + "status=no," + + "dependent=true"); + } + + +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/profile/ResourceProfilePanel.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/profile/ResourceProfilePanel.java new file mode 100644 index 0000000..99ef214 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/profile/ResourceProfilePanel.java @@ -0,0 +1,97 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: ResourceProfilePanel.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.views.profile; + + +import org.gcube.portlets.admin.resourcemanagement.client.widgets.panels.GenericTreePanel; +import org.gcube.resourcemanagement.support.client.views.ResourceTypeDecorator; + +import com.extjs.gxt.ui.client.Style.Scroll; +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.widget.Component; +import com.extjs.gxt.ui.client.widget.Html; +import com.extjs.gxt.ui.client.widget.TabItem; +import com.extjs.gxt.ui.client.widget.TabPanel; +import com.extjs.gxt.ui.client.widget.treepanel.TreePanel; + +/** + * @author Daniele Strollo (ISTI-CNR) + * + */ +public class ResourceProfilePanel extends TabPanel { + private String htmlProfile = null; + private String xmlProfile = null; + private static int counter = 0; + private ResourceTypeDecorator type = null; + + public ResourceProfilePanel(final ResourceTypeDecorator type, final String xmlProfile, final String htmlProfile) { + super(); + this.xmlProfile = xmlProfile; + this.htmlProfile = htmlProfile; + this.type = type; + this.init(); + } + + private void init() { + this.setId("resource-profile-panel-" + counter++); + + this.setPlain(true); + this.setHeight("100%"); + + TabItem xmlProfilePanel = new TabItem("XML Profile"); + //xmlProfilePanel.setScrollMode(Scroll.AUTO); + + TreePanel treepanel = null; + // depending on the resource to show the root node will be declared + if (this.type == ResourceTypeDecorator.WSResource) { + treepanel = new GenericTreePanel(xmlProfile, "Document").getWidget(); + } + else if (this.type == ResourceTypeDecorator.DeployReport) { + treepanel = new GenericTreePanel(xmlProfile, "ResourceReport").getWidget(); + } + else if (this.type == ResourceTypeDecorator.AddScopeReport) { + treepanel = new GenericTreePanel(xmlProfile, "ResourceReport").getWidget(); + } + else { + treepanel = new GenericTreePanel(xmlProfile, "Resource").getWidget(); + } + xmlProfilePanel.add(treepanel); + xmlProfilePanel.layout(true); + + xmlProfilePanel.setScrollMode(Scroll.AUTO); + + this.add(xmlProfilePanel); + + TabItem htmlProfilePanel = new TabItem("Source"); + //xmlProfilePanel.setScrollMode(Scroll.AUTO); + + Html htmlContainer = new Html(); + htmlContainer.setId("xml-container-" + counter); + htmlContainer.setHtml(htmlProfile); + htmlContainer.setAutoHeight(true); + + htmlProfilePanel.add(htmlContainer); + htmlProfilePanel.layout(true); + htmlProfilePanel.setScrollMode(Scroll.AUTO); + + this.add(htmlProfilePanel); + } + + public final Component getWidget() { + return this; + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcedetails/ContextMenuFactory.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcedetails/ContextMenuFactory.java new file mode 100644 index 0000000..244c353 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcedetails/ContextMenuFactory.java @@ -0,0 +1,696 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: ContextMenuFactory.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.views.resourcedetails; + +import java.util.List; +import java.util.Vector; + +import org.gcube.portlets.admin.resourcemanagement.client.forms.genericresources.GenericResourceForm; +import org.gcube.portlets.admin.resourcemanagement.client.remote.ProxyRegistry; +import org.gcube.portlets.admin.resourcemanagement.client.utils.Commands; +import org.gcube.portlets.admin.resourcemanagement.client.utils.OpCommands; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.console.ConsoleMessageBroker; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.registry.UIIdentifiers; +import org.gcube.resourcemanagement.support.client.utils.StatusHandler; +import org.gcube.resourcemanagement.support.client.views.ResourceTypeDecorator; +import org.gcube.resourcemanagement.support.shared.operations.SupportedOperations; +import org.gcube.resourcemanagement.support.shared.types.Tuple; +import org.gcube.resourcemanagement.support.shared.types.datamodel.ResourceDescriptor; +import org.gcube.resourcemanagement.support.shared.types.datamodel.ResourceDetailModel; + +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.event.ComponentEvent; +import com.extjs.gxt.ui.client.event.Listener; +import com.extjs.gxt.ui.client.event.MessageBoxEvent; +import com.extjs.gxt.ui.client.widget.MessageBox; +import com.extjs.gxt.ui.client.widget.menu.Menu; +import com.extjs.gxt.ui.client.widget.menu.MenuItem; +import com.extjs.gxt.ui.client.widget.menu.SeparatorMenuItem; +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; + +/** + * @author Daniele Strollo + * @author Massimiliano Assante (ISTI-CNR) + * @version 2.0 Feb 2012 + */ +public class ContextMenuFactory { + private static final ContextMenuFactory INSTANCE = new ContextMenuFactory(); + + public static ContextMenuFactory getInstance() { + return INSTANCE; + } + + public final synchronized Menu buildContextMenu(final String resType, final ResourceDetailsPanel container) { + + Menu menu = new Menu(); + /************************************************************* + * FOR ALL RESOURCES + ************************************************************/ + + MenuItem getProfile = new MenuItem("Retrieve Profile") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + List selectedElems = container.getSelection(); + for (ModelData selectedElem : selectedElems) { + String type = ((Object) selectedElem.get("Type")).toString(); + String resID = ((Object) selectedElem.get("ID")).toString(); + String scope = StatusHandler.getStatus().getCurrentScope(); + Commands.doGetResourceProfile(this, scope, type, resID); + } + } + }; + getProfile.setIconStyle("profile-icon"); + menu.add(getProfile); + + MenuItem getErrors = new MenuItem("Validate") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + List selectedElems = container.getSelection(); + for (ModelData selectedElem : selectedElems) { + boolean isValid = true; + String[] reqs = ResourceDetailModel.getRequiredFields(((Object) selectedElem.get("Type")).toString()); + + for (String req : reqs) { + if (selectedElem.get(req) == null || ((Object) selectedElem.get(req)).toString().trim().length() == 0) { + isValid = false; + // Adds to the model with problems the error code + Commands.showPopup("Validation: Failure", "The value for field " + req + " is invalid"); + } + } + + if (isValid) { + Commands.showPopup("Validation: Success", "The current element is valid", 6000); + } + } + } + }; + getErrors.setIconStyle("validate-icon"); + menu.add(getErrors); + + + + MenuItem addToScope = new MenuItem("Add To Scope"); + final Menu addToScopeSub = new Menu(); + final Menu removeFromScopeSub = new Menu(); + + ProxyRegistry.getProxyInstance().getAvailableAddScopes(new AsyncCallback>() { + + public void onSuccess(final List result) { + for (final String scope : result) { + /* + * REMOVE FROM SCOPE RPC + */ + removeFromScopeSub.add(new MenuItem(scope) { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + Commands.mask("Applying remove scope", UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + List selectedElems = container.getSelection(); + String resType = null; + List resourceIDs = new Vector(); + + // Builds the list of IDs to add to scope + for (ModelData selectedElem : selectedElems) { + if (resType == null) { + resType = ((Object) selectedElem.get("Type")).toString(); + } + resourceIDs.add(((Object) selectedElem.get("ID")).toString()); + + ConsoleMessageBroker.info(this, + "Removing ID: " + ((Object) selectedElem.get("ID")).toString() + + " type: " + ((Object) selectedElem.get("Type")).toString() + + " to scope: " + scope + ); + } + + ProxyRegistry.getProxyInstance().removeResourcesFromScope(resType, resourceIDs, scope, + new AsyncCallback>() { + public void onSuccess(final Tuple result) { + Commands.unmask(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + if (result != null) { + MessageBox.info("Remove from Scope", + "The required remove from scope operation has been applied.
" + + "The generated report ID is:
" + + "" + result.get(0) + "", + null); + Commands.buildRemoveFromScopeReport(result); + } + else { + MessageBox.alert("Remove from Scope", + "The required remove from scope operation has NOT been applied.
" + + "", + null); + } + + } + public void onFailure(final Throwable caught) { + Commands.unmask(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + MessageBox.alert( + "Remove form Scope error", + "The required operation has not been applied due to server error:
" + caught.getMessage(), + null); + } + }); + } + }); + /* + * ADD TO SCOPE RPC + */ + + addToScopeSub.add(new MenuItem(scope) { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + Commands.mask("Applying add scope", UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + List selectedElems = container.getSelection(); + String resType = null; + List resourceIDs = new Vector(); + + // Builds the list of IDs to add to scope + for (ModelData selectedElem : selectedElems) { + if (resType == null) { + resType = ((Object) selectedElem.get("Type")).toString(); + } + resourceIDs.add(((Object) selectedElem.get("ID")).toString()); + + ConsoleMessageBroker.info(this, + "Adding ID: " + ((Object) selectedElem.get("ID")).toString() + + " type: " + ((Object) selectedElem.get("Type")).toString() + + " to scope: " + scope + ); + } + + ProxyRegistry.getProxyInstance().addResourcesToScope(resType, resourceIDs, scope, + new AsyncCallback>() { + public void onSuccess(final Tuple result) { + Commands.unmask(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + if (result != null) { + MessageBox.info("Add to Scope", + "The required add to scope operation has been applied.
" + + "The generated report ID is:
" + + "" + result.get(0) + "", + null); + Commands.buildAddToScopeReport(result); + } else { + MessageBox.alert("Add to Scope", + "The required add to scope operation has been applied.
" + + "But the resulting report ID is null or invalid.", + null); + } + } + public void onFailure(final Throwable caught) { + Commands.unmask(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID); + MessageBox.alert( + "Add to Scope error", + "The required operation has not been applied:
" + caught.getMessage(), + null); + } + }); + } + }); + } + } + + public void onFailure(final Throwable caught) { + Commands.unmask(UIIdentifiers.MAIN_CONTAINER_VIEWPORT_ID, UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL); + } + }); + addToScope.setSubMenu(addToScopeSub); + Commands.evaluateCredentials( + addToScope, + SupportedOperations.ADD_TO_SCOPE.getPermissions()); + addToScope.setIconStyle("addtoscope-icon"); + menu.add(addToScope); + + /************************************************************* + * REMOVE FROM SCOPE + ************************************************************/ + MenuItem removeFromScope = new MenuItem("Remove From Scope"); + removeFromScope.setSubMenu(removeFromScopeSub); + Commands.evaluateCredentials( + removeFromScope, + SupportedOperations.ADD_TO_SCOPE.getPermissions()); + removeFromScope.setIconStyle("removefromscope-icon"); + menu.add(removeFromScope); + + /************************************************************* + * GHN + ************************************************************/ + if (resType.equals(ResourceTypeDecorator.GHN.name())) { + + // 0 - GETRELATED button + MenuItem getRelated = new MenuItem("Get Related") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + Commands.doGetRelatedResources(ResourceTypeDecorator.GHN.name(), + ((Object) container.getSelection().get(0).get("ID")).toString(), + StatusHandler.getStatus().getCurrentScope()); + } + }; + getRelated.setIconStyle("link-icon"); + menu.add(getRelated); + + // 0 - DELETE button + menu.add(this.createSeparator(SupportedOperations.GHN_DELETE)); + menu.add(this.createDeleteButton( + container, + ResourceTypeDecorator.GHN, + SupportedOperations.GHN_DELETE)); + + // 1 - Force DELETE button + menu.add(this.createForceDeleteButton( + container, + ResourceTypeDecorator.GHN, + SupportedOperations.GHN_FORCE_DELETE)); + + // 1 - RESTART + menu.add(this.createSeparator(SupportedOperations.GHN_RESTART)); + + MenuItem restart = new MenuItem("Restart") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + MessageBox.confirm("GHN Restart", "Are you sure you want to restart the selected GHN(s)?", + new Listener() { + public void handleEvent(final MessageBoxEvent be) { + + if (be.getButtonClicked().getItemId().equalsIgnoreCase("yes")) { + // - THE OPERATION IF CONFIRMED + for (ModelData e : container.getSelection()) { + ConsoleMessageBroker.info(this, "Required restart for: " + e.get("Name") + " " + e.get("ID")); + } + OpCommands.doRestartGHNs(container.getSelection(), false); + } + } + }); + } + }; + Commands.evaluateCredentials( + restart, + SupportedOperations.GHN_RESTART.getPermissions()); + restart.setIconStyle("restart-icon"); + menu.add(restart); + + // 2 - CLEAN RESTART + MenuItem cleanRestart = new MenuItem("Clean & Restart") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + MessageBox.confirm("GHN Restart", "Are you sure you want to clean and restart the selected GHN(s)?", + new Listener() { + public void handleEvent(final MessageBoxEvent be) { + + if (be.getButtonClicked().getItemId().equalsIgnoreCase("yes")) { + // - THE OPERATION IF CONFIRMED + for (ModelData e : container.getSelection()) { + ConsoleMessageBroker.info(this, "Required restart for: " + e.get("Name") + " " + e.get("ID")); + } + OpCommands.doRestartGHNs(container.getSelection(), true); + } + } + }); + } + }; + Commands.evaluateCredentials( + cleanRestart, + SupportedOperations.GHN_CLEAN_RESTART.getPermissions()); + cleanRestart.setIconStyle("clean-restart-icon"); + menu.add(cleanRestart); + + // 3 - SHUTDOWN + MenuItem shutdown = new MenuItem("Shutdown") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + MessageBox.confirm("GHN Shutdown", "Are you sure you want to shut down the selected GHN(s)?", + new Listener() { + public void handleEvent(final MessageBoxEvent be) { + + if (be.getButtonClicked().getItemId().equalsIgnoreCase("yes")) { + // - THE OPERATION IF CONFIRMED + for (ModelData e : container.getSelection()) { + ConsoleMessageBroker.info(this, "Required shutdown for: " + e.get("Name") + " " + e.get("ID")); + } + OpCommands.doShutdownGHNs(container.getSelection()); + } + } + }); + } + }; + Commands.evaluateCredentials( + shutdown, + SupportedOperations.GHN_SHUTDOWN.getPermissions()); + shutdown.setIconStyle("shutdown-icon"); + menu.add(shutdown); + } // - ENDOF GHN + + + /************************************************************* + * RUNNING INSTANCE + ************************************************************/ + if (resType.equals(ResourceTypeDecorator.RunningInstance.name())) { + // 0 - GETRELATED button + MenuItem getRelated = new MenuItem("Get Related") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + Commands.doGetRelatedResources(ResourceTypeDecorator.RunningInstance.name(), + ((Object) container.getSelection().get(0).get("ID")).toString(), + StatusHandler.getStatus().getCurrentScope()); + } + }; + getRelated.setIconStyle("link-icon"); + menu.add(getRelated); + + // 1 - undeploy + MenuItem undeploy = new MenuItem("Undeploy") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + MessageBox.confirm("Running Instance Undeploy", "Are you sure you want to undeploy the selected RI(s)?", + new Listener() { + public void handleEvent(final MessageBoxEvent be) { + + if (be.getButtonClicked().getItemId().equalsIgnoreCase("yes")) { + Vector resources = new Vector(); + // - THE OPERATION IF CONFIRMED + for (ModelData e : container.getSelection()) { + ConsoleMessageBroker.info(this, "Required undeploy for: " + e.get("Name") + " " + e.get("ID")); + try { + resources.add(new ResourceDescriptor( + ResourceTypeDecorator.RunningInstance.name(), + null, + ((Object) e.get("ID")).toString(), + ((Object) e.get("Name")).toString())); + } catch (Exception ex) { + MessageBox.alert( + "Generic Resource Edit", + "Failure
" + ex.getMessage(), + null); + } + } + + try { + ProxyRegistry.getProxyInstance().doOperation( + SupportedOperations.RUNNING_INSTANCE_UNDEPLOY, + StatusHandler.getStatus().getCurrentScope(), + resources, //lista id risorse selzionati + new AsyncCallback() { + @Override + public void onSuccess(final Void result) { + Commands.showPopup("Undeployment", "success"); + } + @Override + public void onFailure( + final Throwable caught) { + Commands.showPopup("Undeployment", "failure"); + } + }); + } catch (Exception e) { + MessageBox.alert( + "Generic Resource Edit", + "Failure
" + e.getMessage(), + null); + } + } + } + }); + } + }; + Commands.evaluateCredentials( + undeploy, + SupportedOperations.RUNNING_INSTANCE_UNDEPLOY.getPermissions()); + undeploy.setIconStyle("delete-icon"); + menu.add(undeploy); + } + + /************************************************************* + * SERVICE + ************************************************************/ + if (resType.equals(ResourceTypeDecorator.Service.name())) { + // 0 - GETRELATED button + MenuItem getRelated = new MenuItem("Get Related") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + Commands.doGetRelatedResources(ResourceTypeDecorator.Service.name(), + ((Object) container.getSelection().get(0).get("ID")).toString(), + StatusHandler.getStatus().getCurrentScope()); + } + }; + getRelated.setIconStyle("link-icon"); + menu.add(getRelated); + } + + /************************************************************* + * GENERIC RESOURCE + ************************************************************/ + if (resType.equals(ResourceTypeDecorator.GenericResource.name())) { + + // 0 - EDIT + MenuItem edit = new MenuItem("Edit") { + @Override + protected void onClick(final ComponentEvent be) { + final List selection = container.getSelection(); + if (selection != null && selection.size() == 1) { + ProxyRegistry.getProxyInstance().getGenericResourceDescriptor( + StatusHandler.getStatus().getCurrentScope(), + ((Object) selection.get(0).get("ID")).toString(), + new AsyncCallback() { + public void onSuccess(final ResourceDescriptor result) { + new GenericResourceForm(result).show(); + } + public void onFailure(final Throwable caught) { + MessageBox.alert( + "Generic Resource Edit", + "Failure
" + caught.getMessage(), + null); + } + }); + } else { + MessageBox.info("Editing resource", "The editing is allowed on a single selected item", null); + } + } + }; + Commands.evaluateCredentials( + edit, + SupportedOperations.GHN_SHUTDOWN.getPermissions()); + edit.setIconStyle("edit-icon"); + menu.add(edit); + + + // 1 - DELETE button + menu.add(this.createSeparator(SupportedOperations.GENERIC_RESOURCE_DELETE)); + menu.add(this.createDeleteButton( + container, + ResourceTypeDecorator.GenericResource, + SupportedOperations.GENERIC_RESOURCE_DELETE)); + + // 2 - Force DELETE button + menu.add(this.createForceDeleteButton( + container, + ResourceTypeDecorator.GenericResource, + SupportedOperations.GENERIC_RESOURCE_FORCE_DELETE)); + } // - ENDOF generic resource + + + /************************************************************* + * RUNTIME RESOURCE + ************************************************************/ + + if (resType.equals(ResourceTypeDecorator.RuntimeResource.name())) { + // 0 - EDIT button + menu.add(this.createSeparator(SupportedOperations.RUNTIME_RESOURCE_DELETE)); + menu.add(this.createEditButton( + container, + ResourceTypeDecorator.RuntimeResource, + SupportedOperations.RUNTIME_RESOURCE_DELETE)); + + // 1 - DELETE button + menu.add(this.createSeparator(SupportedOperations.RUNTIME_RESOURCE_DELETE)); + menu.add(this.createDeleteButton( + container, + ResourceTypeDecorator.RuntimeResource, + SupportedOperations.RUNTIME_RESOURCE_DELETE)); + + // 2 - Force DELETE button + menu.add(this.createForceDeleteButton( + container, + ResourceTypeDecorator.RuntimeResource, + SupportedOperations.RUNTIME_RESOURCE_FORCE_DELETE)); + } + + /************************************************************* + * COLLECTION + ************************************************************/ + if (resType.equals(ResourceTypeDecorator.Collection.name())) { + // 0 - DELETE button + menu.add(this.createSeparator(SupportedOperations.COLLECTION_DELETE)); + menu.add(this.createDeleteButton( + container, + ResourceTypeDecorator.Collection, + SupportedOperations.COLLECTION_DELETE)); + + // 1 - Force DELETE button + menu.add(this.createForceDeleteButton( + container, + ResourceTypeDecorator.Collection, + SupportedOperations.COLLECTION_FORCE_DELETE)); + } // - ENDOF Collection + + /************************************************************* + * METADATA COLLECTION + ************************************************************/ + if (resType.equals(ResourceTypeDecorator.VIEW.name())) { + // 0 - DELETE button + menu.add(this.createSeparator(SupportedOperations.VIEW_DELETE)); + menu.add(this.createDeleteButton( + container, + ResourceTypeDecorator.VIEW, + SupportedOperations.VIEW_DELETE)); + + // 1 - Force DELETE button + menu.add(this.createForceDeleteButton( + container, + ResourceTypeDecorator.VIEW, + SupportedOperations.VIEW_FORCE_DELETE)); + } // - ENDOF Metadata Collection + + return menu; + } + + private SeparatorMenuItem createSeparator(final SupportedOperations operationID) { + // Builds the separator + SeparatorMenuItem separator = new SeparatorMenuItem(); + if (operationID != null) { + Commands.evaluateCredentials( + separator, + operationID.getPermissions()); + } + return separator; + } + + private MenuItem createDeleteButton( + final ResourceDetailsPanel container, + final ResourceTypeDecorator resType, + final SupportedOperations operationID) { + + // Builds the delete button + MenuItem delete = new MenuItem("Delete") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + MessageBox.confirm(resType.getLabel() + " Delete", + "Are you sure you want to delete the selected " + resType.getLabel() + "(s)?", + new Listener() { + public void handleEvent(final MessageBoxEvent be) { + if (be.getButtonClicked().getItemId().equalsIgnoreCase("yes")) { + // - THE OPERATION IF CONFIRMED + try { + for (ModelData e : container.getSelection()) { + ConsoleMessageBroker.info(this, "Required force delete for: " + e.get("Name") + " " + e.get("ID")); + } + } catch (Exception e) { + ConsoleMessageBroker.error(this, e.getMessage()); + } + OpCommands.doDeleteItems(resType, container.getSelection(), operationID); + } + } + }); + + + } + }; + // Checks the permissions on the operation + Commands.evaluateCredentials( + delete, + operationID.getPermissions()); + delete.setIconStyle("delete-icon"); + return delete; + } + + private MenuItem createEditButton( + final ResourceDetailsPanel container, + final ResourceTypeDecorator resType, + final SupportedOperations operationID) { + + // Builds the delete button + MenuItem edit = new MenuItem("Edit Runtime Resource") { + @Override + protected void onClick(final ComponentEvent be) { + String idToEdit = ""; + for (ModelData e : container.getSelection()) { + idToEdit = e.get("ID"); + } + OpCommands.loadServiceEndopointEditor(idToEdit); + } + }; + // Checks the permissions on the operation + Commands.evaluateCredentials( + edit, + operationID.getPermissions()); + edit.setIconStyle("edit-icon"); + return edit; + } + + private MenuItem createForceDeleteButton( + final ResourceDetailsPanel container, + final ResourceTypeDecorator resType, + final SupportedOperations operationID) { + + // Builds the delete button + MenuItem delete = new MenuItem("Force Delete") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + MessageBox.confirm(resType.getLabel() + " Force Delete", + "Are you sure you want to delete the selected " + resType.getLabel() + "(s)?", + new Listener() { + public void handleEvent(final MessageBoxEvent be) { + if (be.getButtonClicked().getItemId().equalsIgnoreCase("yes")) { + // - THE OPERATION IF CONFIRMED + try { + for (ModelData e : container.getSelection()) { + ConsoleMessageBroker.info(this, "Required force delete for: " + e.get("Name") + " " + e.get("ID")); + } + } catch (Exception e) { + ConsoleMessageBroker.error(this, e.getMessage()); + } + OpCommands.doDeleteItems(resType, container.getSelection(), operationID); + } + } + }); + + + } + }; + // Checks the permissions on the operation + Commands.evaluateCredentials( + delete, + operationID.getPermissions()); + delete.setIconStyle("force-delete-icon"); + return delete; + } + + + +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcedetails/CustomSorter.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcedetails/CustomSorter.java new file mode 100644 index 0000000..5d5855b --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcedetails/CustomSorter.java @@ -0,0 +1,65 @@ +package org.gcube.portlets.admin.resourcemanagement.client.views.resourcedetails; + +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.store.Store; +import com.extjs.gxt.ui.client.store.StoreSorter; +import com.google.gwt.core.client.GWT; + +public class CustomSorter extends StoreSorter { + /** + * need to recalculate the percentage as the returned value is not what the render returns + */ + @Override + public int compare(Store store, ModelData m1, ModelData m2, String property) { + if (property != null) { + if (property.equals("VirtualAvailable")) { + String s1 = m1.get(property); + String s2 = m2.get(property); + int val1 = Integer.parseInt(s1); + int val2 = Integer.parseInt(s2); + + int tot1 = Integer.parseInt((String) m1.get("VirtualSize")); + int tot2 = Integer.parseInt((String) m2.get("VirtualSize")); + + int percentage1 = (val1 * 100) / tot1; + int percentage2 = (val2 * 100) / tot2; + + //GWT.log(val1 +"-"+val2); + GWT.log(""+percentage1); + if (percentage1 == percentage2) return 0; + if (percentage1 > percentage2) + return 1; + else + return -1; + } + else if (property.equals("LocalAvailableSpace")) { + String s1 = m1.get(property); + String s2 = m2.get(property); + int val1 = Integer.parseInt(s1); + int val2 = Integer.parseInt(s2); + + if (val1 == val2) return 0; + if (val1 > val2) + return 1; + else + return -1; + } + else if (property.equals("NumberOfMembers") || property.equals("Cardinality")) { + String s1 = m1.get(property); + String s2 = m2.get(property); + int val1 = Integer.parseInt(s1); + int val2 = Integer.parseInt(s2); + + if (val1 == val2) return 0; + if (val1 > val2) + return 1; + else + return -1; + } + Object v1 = m1.get(property); + Object v2 = m2.get(property); + return comparator.compare(v1, v2); + } + return comparator.compare(m1, m2); + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcedetails/ResourceDetailsPanel.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcedetails/ResourceDetailsPanel.java new file mode 100644 index 0000000..46360ff --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcedetails/ResourceDetailsPanel.java @@ -0,0 +1,387 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: ResourceDetailsPanel.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.views.resourcedetails; + +import java.util.List; +import java.util.Vector; + +import org.gcube.portlets.admin.resourcemanagement.client.forms.DeployServicesForm; +import org.gcube.portlets.admin.resourcemanagement.client.utils.Commands; +import org.gcube.portlets.admin.resourcemanagement.client.utils.OpCommands; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.console.ConsoleMessageBroker; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.registry.UIIdentifiers; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.registry.WidgetsRegistry; +import org.gcube.resourcemanagement.support.client.utils.StatusHandler; +import org.gcube.resourcemanagement.support.client.views.ResourceTypeDecorator; +import org.gcube.resourcemanagement.support.shared.operations.SupportedOperations; +import org.gcube.resourcemanagement.support.shared.types.datamodel.ResourceDetailModel; + +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.event.BaseEvent; +import com.extjs.gxt.ui.client.event.ComponentEvent; +import com.extjs.gxt.ui.client.event.Events; +import com.extjs.gxt.ui.client.event.Listener; +import com.extjs.gxt.ui.client.store.GroupingStore; +import com.extjs.gxt.ui.client.store.ListStore; +import com.extjs.gxt.ui.client.widget.Component; +import com.extjs.gxt.ui.client.widget.ContentPanel; +import com.extjs.gxt.ui.client.widget.Text; +import com.extjs.gxt.ui.client.widget.button.Button; +import com.extjs.gxt.ui.client.widget.button.ToolButton; +import com.extjs.gxt.ui.client.widget.grid.Grid; +import com.extjs.gxt.ui.client.widget.grid.GridViewConfig; +import com.extjs.gxt.ui.client.widget.grid.GroupingView; +import com.extjs.gxt.ui.client.widget.layout.FitLayout; +import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem; +import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; +import com.google.gwt.core.client.GWT; +import com.google.gwt.core.client.RunAsyncCallback; +import com.google.gwt.user.client.Window; + +/** + * @author Massimiliano Assante (ISTI-CNR) + * @author Daniele Strollo + * @version 2.1 APR 2012 + */ +public class ResourceDetailsPanel { + private ContentPanel rootPanel = null; + private Component widget = null; + private boolean groupingEnabled = true; + private String collapsibleColumn = "SubType"; + private ToolBar toolBar = new ToolBar(); + private final static String btnGroupID = "btn-grid-group"; + private final static String btnRefreshID = "btn-grid-refresh"; + private boolean highlightInvalidFields = false; + + public ResourceDetailsPanel() { + this.widget = new Text(); + this.init(); + } + + private ListStore getStore() { + return this.getGrid().getStore(); + } + + public final List getElemsForInstall() { + List retval = new Vector(); + for (ModelData r : this.getStore().getModels()) { + if (r.getProperties().containsKey(ResourceDetailModel.SERVICE_INSTALL_KEY) && + Boolean.parseBoolean(((Object) r.get(ResourceDetailModel.SERVICE_INSTALL_KEY)).toString())) { + retval.add(r); + } + } + return retval; + } + + public final void refreshModel() { + for (ModelData s : this.getSelection()) { + this.getStore().update(s); + } + } + + public final List getSelection() { + if (this.getGrid() == null || this.getGrid().getSelectionModel().getSelection() == null) { + return null; + } + return this.getGrid().getSelectionModel().getSelection(); + } + + /** + * Method called at initialization phase (Constructor). + */ + public final void init() { + this.rootPanel = new ContentPanel(new FitLayout()); + // this.rootPanel.setHeading("Resource Details"); + this.rootPanel.setHeaderVisible(false); + this.widget.setId("res-details-widget-fake"); + this.widget.setStyleName("x-panel-cube-background"); + + // The first creation of button + Button groupButton = new Button() { + @Override + protected void onClick(final ComponentEvent ce) { + super.onClick(ce); + if (groupingEnabled) { + disableGrouping(); + } else { + enableGrouping(); + } + } + }; + groupButton.setId(btnGroupID); + groupButton.setIconStyle("grid-icon"); + groupButton.setToolTip("Categorize"); + this.toolBar.add(new SeparatorToolItem()); + this.toolBar.add(groupButton); + + // The first creation of button + Button refreshButton = new Button() { + @Override + protected void onClick(final ComponentEvent ce) { + Commands.refreshResourceGrid(); + } + }; + refreshButton.setId(btnRefreshID); + refreshButton.setIconStyle("refresh-icon"); + refreshButton.setToolTip("Refresh"); + this.toolBar.add(refreshButton); + + this.rootPanel.setTopComponent(this.toolBar); + } + + public final void toggleHighlightInvalidFields() { + this.highlightInvalidFields = !this.highlightInvalidFields; + if (this.getGridView() != null) { + this.getGridView().refresh(true); + } + } + + public final ToolBar getToolBar() { + return this.toolBar; + } + + public final Component getWidget() { + return this.widget; + } + + private void disableGrouping() { + GroupingStore groupingStore = null; + if (this.getStore() instanceof GroupingStore) { + groupingStore = (GroupingStore) this.getStore(); + if (groupingStore != null) { + groupingStore.clearGrouping(); + } + this.groupingEnabled = false; + } + } + + private void enableGrouping() { + GroupingStore groupingStore = null; + if (this.getStore() instanceof GroupingStore) { + groupingStore = (GroupingStore) this.getStore(); + if (groupingStore != null) { + groupingStore.groupBy(collapsibleColumn); + } + this.groupingEnabled = true; + } + } + + @SuppressWarnings("unchecked") + public final Grid getGrid() { + if (this.getWidget() != null && this.getWidget() instanceof Grid) { + return (Grid) this.getWidget(); + } + return null; + } + + private GroupingView getGridView() { + if (this.getGrid() != null && this.getGrid().getView() instanceof GroupingView) { + return (GroupingView) this.getGrid().getView(); + } + return null; + } + + public final void setWidget(final Component widget, final boolean enableGrouping) { + this.rootPanel.removeAll(); + this.widget = widget; + rootPanel.add(this.widget); + + Button groupButton = null; + try { + groupButton = (Button) this.toolBar.getItemByItemId(ResourceDetailsPanel.btnGroupID); + groupButton.setEnabled(enableGrouping); + } catch (Exception e) { + ConsoleMessageBroker.error(this, "During set widget. " + e.getMessage()); + } + + // FIXME check if needed --- Commands.refreshResourceDetails(); + } + + public final ContentPanel getContainer() { + return this.rootPanel; + } + + private void resetToolBar() { + List buttons = this.getToolBar().getItems(); + List toRemove = new Vector(); + if (buttons.size() > 3) { + for (int i = 3; i < buttons.size(); i++) { + toRemove.add(buttons.get(i)); + } + } + if (toRemove.size() > 0) { + for (Component c : toRemove) { + this.getToolBar().remove(c); + } + } + } + + public final void initToolbar() { + String resType = StatusHandler.getStatus().getCurrentResourceType(); + + // Removes from the toolbar specific buttons + resetToolBar(); + + /************************************************ + * GENERIC RESOURCE - customized toolbar + ***********************************************/ + + // Adds toolbar buttons for Generic Resources + if (resType.equals(ResourceTypeDecorator.GenericResource.name()) && + SupportedOperations.GENERIC_RESOURCE_CREATE.isAllowed(StatusHandler.getStatus().getCredentials())) { + this.getToolBar().add(new SeparatorToolItem()); + ToolButton createNew = new ToolButton("new-icon") { + @Override + protected void onClick(final ComponentEvent ce) { + super.onClick(ce); + OpCommands.doOpenGenericResourceForm(); + } + }; + createNew.setToolTip("Create new Generic Resource"); + this.getToolBar().add(createNew); + } + + /************************************************ + * SERVICES - customized toolbar + ***********************************************/ + + // Adds toolbar buttons for Services + //TODO: To be implemented in the future + // if (resType.equals(ResourceTypeDecorator.Service.name()) && + // SupportedOperations.SERVICE_CREATE.isAllowed(StatusHandler.getStatus().getCredentials())) { + // this.getToolBar().add(new SeparatorToolItem()); + // ToolButton createNew = new ToolButton("new-icon") { + // @Override + // protected void onClick(final ComponentEvent ce) { + // super.onClick(ce); + // CommonOperations.doOpenServiceForm(); + // } + // }; + // createNew.setToolTip("Create new Software"); + // this.getToolBar().add(createNew); + // } + + // Adds toolbar buttons for Services + if (resType.equals(ResourceTypeDecorator.Service.name()) && + SupportedOperations.SERVICE_DEPLOY.isAllowed(StatusHandler.getStatus().getCredentials())) { + this.getToolBar().add(new SeparatorToolItem()); + ToolButton doDeploy = new ToolButton("deploy-icon") { + protected void onClick(final ComponentEvent be) { + super.onClick(be); + GWT.runAsync(DeployServicesForm.class, new RunAsyncCallback() { + @Override + public void onFailure(Throwable reason) { + Window.alert("Could not load the deploy form."); + } + @Override + public void onSuccess() { + new DeployServicesForm().show(); + } + }); + + }; + }; + doDeploy.setToolTip("Prepare a deployment plan"); + this.getToolBar().add(doDeploy); + } + + + // Adds toolbar buttons for Services + if (resType.equals(ResourceTypeDecorator.Service.name()) && + SupportedOperations.SERVICE_GET_REPORT.isAllowed(StatusHandler.getStatus().getCredentials())) { + this.getToolBar().add(new SeparatorToolItem()); + ToolButton doDeploy = new ToolButton("getreport-icon") { + protected void onClick(final ComponentEvent be) { + super.onClick(be); + OpCommands.doGetDeployReport(); + }; + }; + doDeploy.setToolTip("Get report for submitted deployment"); + this.getToolBar().add(doDeploy); + } + } + + public final void setGrid(final Grid grid, final boolean groupingEnabled) { + // Sets the grid container title + //this.rootPanel.setHeading("Resource Details (" + StatusHandler.getStatus().getCurrentResourceType() + ")"); + + this.initToolbar(); + + // adds highlighting support + // Annotates invalid cells + grid.getView().setViewConfig(new GridViewConfig() { + @Override + public String getRowStyle( + final ModelData model, + final int rowIndex, + final ListStore ds) { + try { + if (!highlightInvalidFields) { + return super.getRowStyle(model, rowIndex, ds); + } + + // NOTE this strange cast to object is due to: + // compilation error in jdk bug: java.lang.Object cannot be dereferenced + + // if no requirements expressed for this type, return the default style + if (ResourceDetailModel.getRequiredFields(((Object) model.get("Type")).toString()) == null) { + return super.getRowStyle(model, rowIndex, ds); + } + String[] reqs = ResourceDetailModel.getRequiredFields(((Object) model.get("Type")).toString()); + + for (String req : reqs) { + if (model.get(req) == null || ((Object) model.get(req)).toString().trim().length() == 0) { + // Adds to the model with problems the error code + return "x-grid-invalid-row"; + } + } + return super.getRowStyle(model, rowIndex, ds); + } catch (Exception e) { + GWT.log("getting required fields", e); + return super.getRowStyle(model, rowIndex, ds); + } + } + }); + /* + * add the row click listener by default open the profile + */ + grid.addListener(Events.RowClick, new Listener(){ + public void handleEvent(BaseEvent be) { + //GridEvent ge = (GridEvent)be; + openProfileInPinnedResources(); + } + }); + + grid.setContextMenu(ContextMenuFactory.getInstance().buildContextMenu( + StatusHandler.getStatus().getCurrentResourceType(), this)); + + this.setWidget(grid, groupingEnabled); + + // Add the new created widget inside the container + WidgetsRegistry.getPanel(UIIdentifiers.RESOURCE_DETAIL_GRID_PANEL).add(this.getContainer(), true); + } + + private void openProfileInPinnedResources() { + List selectedElems = this.getSelection(); + for (ModelData selectedElem : selectedElems) { + String type = ((Object) selectedElem.get("Type")).toString(); + String resID = ((Object) selectedElem.get("ID")).toString(); + String scope = StatusHandler.getStatus().getCurrentScope(); + Commands.doGetResourceProfile(this, scope, type, resID); + } + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcedetails/ResourceGridFactory.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcedetails/ResourceGridFactory.java new file mode 100644 index 0000000..dd1fcbb --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcedetails/ResourceGridFactory.java @@ -0,0 +1,141 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: ResourceGridFactory.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.views.resourcedetails; + +import java.util.List; + +import org.gcube.portlets.admin.resourcemanagement.client.utils.Commands; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.console.ConsoleMessageBroker; +import org.gcube.resourcemanagement.support.shared.types.datamodel.ResourceDetailModel; + +import com.extjs.gxt.ui.client.Style.SortDir; +import com.extjs.gxt.ui.client.data.BaseListLoader; +import com.extjs.gxt.ui.client.data.ListLoadResult; +import com.extjs.gxt.ui.client.data.MemoryProxy; +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.data.ModelType; +import com.extjs.gxt.ui.client.data.XmlLoadResultReader; +import com.extjs.gxt.ui.client.store.GroupingStore; +import com.extjs.gxt.ui.client.store.ListStore; +import com.extjs.gxt.ui.client.widget.MessageBox; +import com.extjs.gxt.ui.client.widget.grid.ColumnModel; +import com.extjs.gxt.ui.client.widget.grid.Grid; +import com.extjs.gxt.ui.client.widget.grid.GridGroupRenderer; +import com.extjs.gxt.ui.client.widget.grid.GroupColumnData; +import com.extjs.gxt.ui.client.widget.grid.GroupingView; + +/** + * @author Daniele Strollo (ISTI-CNR) + * + */ +public class ResourceGridFactory { + public static final synchronized Grid createGrid( + final String resourceType, + final List result, + final String groupingColumn) { + return createGrid(resourceType, result, groupingColumn, true); + } + + public static final synchronized Grid createGrid( + final String resourceType, + final List result, + final String groupingColumn, + final boolean autoExpand) { + try { + + if (result == null || result.size() == 0) { + Commands.showPopup( + "Failure", + "the retrieved result set for required resource is null or empty", + 6000); + return null; + } + + // The the XML reader + ModelType type = ResourceDetailModel.getXMLMapping(resourceType); + // For the grid representation + final ColumnModel cm = ResourceDetailModel.getRecordDefinition(resourceType); + + if (type == null || cm == null) { + MessageBox.alert("Failure", "the model representation has not been found", null); + return null; + } + + // need a loader, proxy, and reader + XmlLoadResultReader> reader = + new XmlLoadResultReader>(type); + + StringBuilder toParse = new StringBuilder().append("\n"); + for (String elem : result) { + toParse.append(elem.toString()); + } + toParse.append("\n"); + + MemoryProxy proxy = new MemoryProxy(toParse.toString()); + + final BaseListLoader> loader = + new BaseListLoader>(proxy, reader); + + ListStore store = null; + + if (groupingColumn != null) { + store = new GroupingStore(loader); + } else { + store = new ListStore(loader); + } + //apply the custom sorter + store.setStoreSorter(new CustomSorter()); + + final Grid grid = new Grid(store, cm); + + if (groupingColumn != null) { + ((GroupingStore) store).groupBy(groupingColumn); + + // GROUPING + // Builds the grouping structure to collapse elements + // having the same type (log severity). + GroupingView groupingView = new GroupingView(); + groupingView.setGroupRenderer(new GridGroupRenderer() { + public String render(final GroupColumnData data) { + int s = data.models.size(); + String f = cm.getColumnById(data.field).getHeader(); + String l = s == 1 ? "Item" : "Items"; + return f + ": " + ((data.group != null && data.group.trim().length() > 0) ? data.group : "Undefined") + " (" + s + " " + l + ")"; + } + }); + + groupingView.setAutoFill(true); + groupingView.setForceFit(false); + grid.setView(groupingView); + } + + if (autoExpand) { + // The first visible column will be considered auto-expand + grid.setAutoExpandColumn(cm.getColumn(0).getId()); + } + + loader.setSortField("ID"); + loader.setSortDir(SortDir.ASC); + loader.load(); + + return grid; + } catch (RuntimeException e) { + ConsoleMessageBroker.error(ResourceGridFactory.class, "During resourceDetailGrid creation"); + return null; + } + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcetree/ResourcesTreePanel.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcetree/ResourcesTreePanel.java new file mode 100644 index 0000000..c7a4741 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcetree/ResourcesTreePanel.java @@ -0,0 +1,219 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: ResourcesTreePanel.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.views.resourcetree; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; + +import org.gcube.portlets.admin.resourcemanagement.client.utils.Commands; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.console.ConsoleMessageBroker; +import org.gcube.resourcemanagement.support.client.utils.StatusHandler; +import org.gcube.resourcemanagement.support.client.views.ResourceTypeDecorator; +import org.gcube.resourcemanagement.support.shared.types.datamodel.AtomicTreeNode; + +import com.extjs.gxt.ui.client.Style.SelectionMode; +import com.extjs.gxt.ui.client.Style.SortDir; +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.data.ModelIconProvider; +import com.extjs.gxt.ui.client.event.ComponentEvent; +import com.extjs.gxt.ui.client.event.Events; +import com.extjs.gxt.ui.client.event.Listener; +import com.extjs.gxt.ui.client.event.TreePanelEvent; +import com.extjs.gxt.ui.client.store.TreeStore; +import com.extjs.gxt.ui.client.util.IconHelper; +import com.extjs.gxt.ui.client.widget.menu.Menu; +import com.extjs.gxt.ui.client.widget.menu.MenuItem; +import com.extjs.gxt.ui.client.widget.treepanel.TreePanel; +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.Timer; +import com.google.gwt.user.client.ui.AbstractImagePrototype; + + +class TreeSelectionListener implements Listener> { + private boolean doExpand = false; + + public void handleEvent(final TreePanelEvent be) { + if (be.getType() == Events.Expand) { + be.cancelBubble(); + doExpand = true; + return; + } + + if (be.getType() == Events.Collapse) { + be.cancelBubble(); + doExpand = true; + return; + } + + if (be.getType() == Events.OnClick && + !be.isRightClick() && be.getItem() != null && + be.getItem() instanceof AtomicTreeNode) { + if (!doExpand) { + // do you stuff, right click detected for a click event + AtomicTreeNode selectedModel = (AtomicTreeNode) be.getItem(); + // -- SELECTED A LEAF + if (selectedModel != null && selectedModel.isLeaf()) { + ConsoleMessageBroker.trace(this, "Selected leaf: " + ((AtomicTreeNode) selectedModel.getParent()).getNode() + "::" + selectedModel.getName()); + Commands.doFilterResourceDetailsGrid(this, + StatusHandler.getStatus().getCurrentScope(), + ((AtomicTreeNode) selectedModel.getParent()).getNode(), + selectedModel.getSubType()); + } + // -- SELECTED A NOT LEAF NODE + if (selectedModel != null && !selectedModel.isLeaf()) { + ConsoleMessageBroker.trace(this, "Selected node: " + selectedModel.getNode()); + Commands.doLoadResourceDetailsGrid(this, StatusHandler.getStatus().getCurrentScope(), selectedModel.getNode()); + } + } + doExpand = false; + } + } +} + + + + +/** + * @author Daniele Strollo + * @author Massimiliano Assante (ISTI-CNR) + */ +public class ResourcesTreePanel { + private TreePanel tree = null; + + private boolean isOn = false; + private Timer t; + private int counter; + private ModelData gHN = null; + + public ResourcesTreePanel(final HashMap> rawmodel) { + AtomicTreeNode model = new AtomicTreeNode("Resource", null); + String icon = null; + String label = null; + counter = 0; + if (rawmodel == null) { + model.add(new AtomicTreeNode(ResourceTypeDecorator.Empty.getLabel(), null, ResourceTypeDecorator.Empty.getIcon())); + } else { + for (Entry> elems : rawmodel.entrySet()) { + String type = elems.getKey(); + List subtypes = elems.getValue(); + + try { + icon = ResourceTypeDecorator.valueOf(type).getIcon(); + label = ResourceTypeDecorator.valueOf(type).getFWSName(); + //label = ResourceTypeDecorator.valueOf(type).getLabel(); + } catch (java.lang.IllegalArgumentException e) { + label = type; + icon = null; + } + + AtomicTreeNode currType = new AtomicTreeNode(type, label, icon); + + for (String subtype : subtypes) { + currType.add(new AtomicTreeNode(subtype, null, icon)); + } + model.add(currType); + } + } + + final TreeStore store = new TreeStore(); + // The root node will not be shown + store.add(model.getChildren(), true); + // FIXME store.sort("sortIdx", SortDir.ASC); + store.sort("name", SortDir.ASC); + + this.tree = new TreePanel(store); + this.tree.setWidth(300); + this.tree.setDisplayProperty("name"); + + Menu contextMenu = new Menu(); + MenuItem refresh = new MenuItem("Refresh Tree") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + Commands.refreshResourceTree(); + } + }; + refresh.setIconStyle("refresh-icon"); + contextMenu.add(refresh); + this.tree.setContextMenu(contextMenu); + + + // The icon decorator + this.tree.setIconProvider( + new ModelIconProvider() { + public AbstractImagePrototype getIcon(final ModelData model) { + if (model.get("node") != null && model.get("icon") != null) { + return IconHelper.createStyle((String) model.get("icon")); + } + return IconHelper.createStyle("defaultleaf-icon"); + } + }); + + // Handles the selection + tree.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); + + TreeSelectionListener handler = new TreeSelectionListener(); + + tree.addListener(Events.Expand, handler); + tree.addListener(Events.Collapse, handler); + tree.addListener(Events.OnClick, handler); + + /** + * show gHN list if the configuration says so. + */ + if (StatusHandler.getStatus().isLoadGHNatStartup()) { + GWT.log(""+StatusHandler.getStatus().isLoadGHNatStartup()); + + Commands.doLoadResourceDetailsGrid(this, + StatusHandler.getStatus().getCurrentScope(), + "GHN"); + + //select the GHN + for (ModelData md: store.getAllItems()) { + if (md.get("node").toString().compareTo("GHN") == 0) + gHN = md; + } + + if (gHN != null) { + tree.getSelectionModel().select(false, gHN); + t = new Timer() { + + @Override + public void run() { + if (isOn) + tree.getSelectionModel().deselectAll(); + else + tree.getSelectionModel().select(false, gHN); + t.schedule(80); + isOn = !isOn; + counter++; + if (counter > 10) + t.cancel(); + } + }; + t.schedule(100); + } + } + + } + + public final TreePanel getWidget() { + return this.tree; + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcetree/WSResourcesTreePanel.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcetree/WSResourcesTreePanel.java new file mode 100644 index 0000000..f17074f --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/views/resourcetree/WSResourcesTreePanel.java @@ -0,0 +1,112 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: WSResourcesTreePanel.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.views.resourcetree; + +import java.util.List; +import org.gcube.portlets.admin.resourcemanagement.client.utils.Commands; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.console.ConsoleMessageBroker; +import org.gcube.resourcemanagement.support.client.utils.StatusHandler; +import org.gcube.resourcemanagement.support.client.views.ResourceTypeDecorator; +import org.gcube.resourcemanagement.support.shared.types.datamodel.AtomicTreeNode; + +import com.extjs.gxt.ui.client.Style.SelectionMode; +import com.extjs.gxt.ui.client.Style.SortDir; +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.data.ModelIconProvider; +import com.extjs.gxt.ui.client.event.Events; +import com.extjs.gxt.ui.client.event.Listener; +import com.extjs.gxt.ui.client.event.SelectionChangedEvent; +import com.extjs.gxt.ui.client.store.TreeStore; +import com.extjs.gxt.ui.client.util.IconHelper; +import com.extjs.gxt.ui.client.widget.treepanel.TreePanel; +import com.google.gwt.user.client.ui.AbstractImagePrototype; + +/** + * @author Daniele Strollo (ISTI-CNR) + * + */ +public class WSResourcesTreePanel { + private TreePanel tree = null; + + + public WSResourcesTreePanel(final List types) { + AtomicTreeNode model = new AtomicTreeNode(ResourceTypeDecorator.WSResource.name(), null); + + if (types != null && types.size() > 0) { + String elem = ResourceTypeDecorator.WSResource.name(); + String icon = ResourceTypeDecorator.valueOf(elem).getIcon(); + String label = ResourceTypeDecorator.valueOf(elem).getLabel(); + + AtomicTreeNode currType = new AtomicTreeNode(elem, label, icon); + + for (String subtype : types) { + currType.add(new AtomicTreeNode(subtype, null, icon)); + } + model.add(currType); + } + + TreeStore store = new TreeStore(); + // The root node will not be shown + store.add(model.getChildren(), true); + store.sort("name", SortDir.ASC); + + this.tree = new TreePanel(store); + this.tree.setWidth(300); + this.tree.setDisplayProperty("name"); + + // The icon decorator + this.tree.setIconProvider( + new ModelIconProvider() { + public AbstractImagePrototype getIcon(final ModelData model) { + if (model.get("node") != null && model.get("icon") != null) { + return IconHelper.createStyle((String) model.get("icon")); + } + return IconHelper.createStyle("defaultleaf-icon"); + } + }); + + // Handles the selection + tree.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); + tree.getSelectionModel().addListener(Events.SelectionChange, new Listener>() { + public void handleEvent(final SelectionChangedEvent be) { + AtomicTreeNode selectedModel = be.getSelectedItem(); + // -- SELECTED A LEAF + if (selectedModel != null && selectedModel.isLeaf()) { + ConsoleMessageBroker.trace(this, "Selected leaf of WS-Resource: " + ((AtomicTreeNode) selectedModel.getParent()).getNode() + "::" + selectedModel.getName()); + // FIXME the AtomicTreeNode does not contain a subtype information + Commands.doFilterResourceDetailsGrid(this, + StatusHandler.getStatus().getCurrentScope(), + ((AtomicTreeNode) selectedModel.getParent()).getNode(), + selectedModel.getSubType()); + } + // -- SELECTED A NOT LEAF NODE + if (selectedModel != null && !selectedModel.isLeaf()) { + ConsoleMessageBroker.trace(this, "Selected node: " + selectedModel.getNode()); + Commands.doLoadWSResourceDetailsGrid(this, StatusHandler.getStatus().getCurrentScope()); + } + + be.setCancelled(true); + // Removes the selection so that it can be easily refreshed. + tree.getSelectionModel().deselectAll(); + } + }); + } + + public final TreePanel getWidget() { + return this.tree; + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/console/ConsoleLogSeverity.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/console/ConsoleLogSeverity.java new file mode 100644 index 0000000..8f0265a --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/console/ConsoleLogSeverity.java @@ -0,0 +1,27 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: ConsoleLogSeverity.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.widgets.console; + +public enum ConsoleLogSeverity { + INFO, + LOG, + TRACE, + DEBUG, + WARNING, + ERROR, + FATAL; +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/console/ConsoleMessage.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/console/ConsoleMessage.java new file mode 100644 index 0000000..a225b05 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/console/ConsoleMessage.java @@ -0,0 +1,45 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: ConsoleMessage.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.widgets.console; + +import java.util.Date; +import com.extjs.gxt.ui.client.data.BaseModelData; +import com.google.gwt.i18n.client.DateTimeFormat; + +public class ConsoleMessage extends BaseModelData { + + private static final long serialVersionUID = 1422116123911146319L; + + public ConsoleMessage(final Object caller, final ConsoleLogSeverity type, final String message) { + this(caller.getClass(), type, message); + } + + public ConsoleMessage(final Class invoker, final ConsoleLogSeverity type, final String message) { + this(invoker.getName(), type, message); + } + + public ConsoleMessage(final String invoker, final ConsoleLogSeverity type, final String message) { + super(); + DateTimeFormat timeFormatter = DateTimeFormat.getFormat("dd-MM-yy hh:mm:ss"); + String timestamp = timeFormatter.format(new Date()); + set("timestamp", timestamp); + set("invoker", invoker); + set("type", type); + set("message", message); + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/console/ConsoleMessageBroker.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/console/ConsoleMessageBroker.java new file mode 100644 index 0000000..0438ada --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/console/ConsoleMessageBroker.java @@ -0,0 +1,80 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: ConsoleMessageBroker.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.widgets.console; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.registry.WidgetsRegistry; + +import com.google.gwt.core.client.GWT; + +public class ConsoleMessageBroker { + + private static void printMessage(final ConsoleLogSeverity severity, final Object caller, final String message) { + ConsolePanel console = WidgetsRegistry.getConsole(); + if (console != null) { + console.handle(new ConsoleMessage(caller, severity, message)); + } else { + GWT.log(message); + } + } + + private static void printMessage(final ConsoleLogSeverity severity, final Class caller, final String message) { + ConsolePanel console = WidgetsRegistry.getConsole(); + if (console != null) { + console.handle(new ConsoleMessage(caller.getName(), severity, message)); + } else { + GWT.log(message); + } + } + + public static void log(final Object caller, final String message) { + printMessage(ConsoleLogSeverity.LOG, caller, message); + } + public static void info(final Object caller, final String message) { + printMessage(ConsoleLogSeverity.INFO, caller, message); + } + public static void trace(final Object caller, final String message) { + printMessage(ConsoleLogSeverity.TRACE, caller, message); + } + public static void debug(final Object caller, final String message) { + printMessage(ConsoleLogSeverity.DEBUG, caller, message); + } + public static void warning(final Object caller, final String message) { + printMessage(ConsoleLogSeverity.WARNING, caller, message); + } + public static void error(final Object caller, final String message) { + printMessage(ConsoleLogSeverity.ERROR, caller, message); + } + + + public static void log(final Class caller, final String message) { + printMessage(ConsoleLogSeverity.LOG, caller, message); + } + public static void info(final Class caller, final String message) { + printMessage(ConsoleLogSeverity.INFO, caller, message); + } + public static void trace(final Class caller, final String message) { + printMessage(ConsoleLogSeverity.TRACE, caller, message); + } + public static void debug(final Class caller, final String message) { + printMessage(ConsoleLogSeverity.DEBUG, caller, message); + } + public static void warning(final Class caller, final String message) { + printMessage(ConsoleLogSeverity.WARNING, caller, message); + } + public static void error(final Class caller, final String message) { + printMessage(ConsoleLogSeverity.ERROR, caller, message); + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/console/ConsolePanel.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/console/ConsolePanel.java new file mode 100644 index 0000000..6c70097 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/console/ConsolePanel.java @@ -0,0 +1,214 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: ConsolePanel.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.widgets.console; + +import java.util.ArrayList; +import java.util.List; + +import org.gcube.portlets.admin.resourcemanagement.client.widgets.panels.DetachablePanel; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.panels.DetachablePanel.DetachablePanelHandler; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.panels.ScrollablePanel; + +import com.extjs.gxt.ui.client.Style.SortDir; +import com.extjs.gxt.ui.client.event.ComponentEvent; +import com.extjs.gxt.ui.client.store.GroupingStore; +import com.extjs.gxt.ui.client.store.ListStore; +import com.extjs.gxt.ui.client.widget.Component; +import com.extjs.gxt.ui.client.widget.button.Button; +import com.extjs.gxt.ui.client.widget.grid.ColumnConfig; +import com.extjs.gxt.ui.client.widget.grid.ColumnData; +import com.extjs.gxt.ui.client.widget.grid.ColumnModel; +import com.extjs.gxt.ui.client.widget.grid.Grid; +import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer; +import com.extjs.gxt.ui.client.widget.grid.GridGroupRenderer; +import com.extjs.gxt.ui.client.widget.grid.GroupColumnData; +import com.extjs.gxt.ui.client.widget.grid.GroupingView; +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.ui.Widget; + +/** + * Consists of a widgets containing a grid with + * all the {@link ConsoleMessage} raised in the system. + * @author Daniele Strollo (ISTI-CNR) + */ +public class ConsolePanel implements DetachablePanelHandler { + private GroupingStore store; + private DetachablePanel rootPanel = null; + private boolean enableGrouping = false; + private Grid grid = null; + // The column on which the grouping is applied + private final static String collapsibleColumn = "type"; + + public ConsolePanel(final DetachablePanel rootPanel) { + super(); + this.rootPanel = rootPanel; + this.rootPanel.addHandler(this); + + store = new GroupingStore(); + if (enableGrouping) { + store.groupBy(collapsibleColumn); + } + store.sort("timestamp", SortDir.DESC); + this.onLoad(); + } + + private void onLoad() { + this.grid = createGrid(); + ScrollablePanel gridContainer = new ScrollablePanel("console-grid-container", grid); + rootPanel.insertMainWidget(gridContainer); + //rootPanel.getToolBar(). + Button groupButton = new Button("Group/Ungroup") { + @Override + protected void onClick(final ComponentEvent ce) { + super.onClick(ce); + if (enableGrouping) { + store.clearGrouping(); + } else { + store.groupBy(collapsibleColumn); + } + enableGrouping = !enableGrouping; + } + }; + groupButton.setIconStyle("grid-icon"); + rootPanel.getToolBar().add(groupButton); + + Button clearButton = new Button("Clear") { + @Override + protected void onClick(final ComponentEvent ce) { + super.onClick(ce); + store.removeAll(); + } + }; + clearButton.setIconStyle("clear-icon"); + rootPanel.getToolBar().add(clearButton); + } + + private Grid createGrid() { + List configs = new ArrayList(); + + ColumnConfig column = new ColumnConfig(); + column.setId("timestamp"); + column.setHeader("Time"); + column.setWidth(105); + configs.add(column); + + column = new ColumnConfig(); + column.setId("invoker"); + column.setHeader("Invoker"); + column.setWidth(420); + configs.add(column); + + column = new ColumnConfig(); + column.setId("type"); + column.setHeader("Type"); + column.setWidth(75); + + column.setRenderer(new GridCellRenderer() { + public Object render( + final ConsoleMessage model, + final String property, + final ColumnData config, + final int rowIndex, + final int colIndex, + final ListStore store, + final Grid grid + ) { + if (model.get("type") == ConsoleLogSeverity.WARNING) { + return "" + model.get("type") + ""; + } + if (model.get("type") == ConsoleLogSeverity.ERROR) { + return "" + model.get("type") + ""; + } + return "" + model.get("type"); + } + }); + + configs.add(column); + + column = new ColumnConfig(); + column.setId("message"); + column.setHeader("Message"); + configs.add(column); + + final ColumnModel cm = new ColumnModel(configs); + + // Builds the grouping structure to collapse elements + // having the same type (log severity). + GroupingView view = new GroupingView(); + view.setGroupRenderer(new GridGroupRenderer() { + public String render(final GroupColumnData data) { + int s = data.models.size(); + String f = cm.getColumnById(data.field).getHeader(); + String l = s == 1 ? "Item" : "Items"; + return f + ": " + data.group + " (" + s + " " + l + ")"; + } + }); + view.setShowGroupedColumn(false); + + Grid grid = new Grid(store, cm); + grid.setView(view); + grid.setStyleAttribute("borderTop", "none"); + grid.setAutoExpandColumn("message"); + grid.setId("console-internal-grid"); + return grid; + } + + public final boolean handle(final ConsoleMessage event) { + try { + store.add(event); + store.commitChanges(); + //this.rootPanel.layout(true); + //this.refresh(); + return true; + } catch (Exception e) { + GWT.log("During console handle", e); + return false; + } + } + + /** + * Is invoked by the time renderer on client side. + * It forces the row to refresh after it has received from + * the server side the required data. + * @see ConsoleMessage + */ + public final void refresh() { + this.rootPanel.layout(true); + this.rootPanel.getRootPanel().sync(true); + this.grid.sync(true); + this.grid.getView().refresh(true); + this.store.commitChanges(); + // Reapplies the sorting + this.store.sort(this.store.getSortField(), this.store.getSortDir()); + } + + public final DetachablePanel getContainer() { + return this.rootPanel; + } + + public final Widget getWidget() { + return this.grid; + } + + public final void onDetachEvent(final DetachablePanel container, final Component content) { + this.grid.getView().refresh(true); + } + + public final void onEmbedEvent(final DetachablePanel container, final Component content) { + this.grid.getView().refresh(true); + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/dialogs/ExtendedMessageBox.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/dialogs/ExtendedMessageBox.java new file mode 100644 index 0000000..03fddf0 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/dialogs/ExtendedMessageBox.java @@ -0,0 +1,139 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: ExtendedMessageBox.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.widgets.dialogs; + +import com.extjs.gxt.ui.client.event.ComponentEvent; +import com.extjs.gxt.ui.client.event.EventType; +import com.extjs.gxt.ui.client.event.Events; +import com.extjs.gxt.ui.client.event.KeyListener; +import com.extjs.gxt.ui.client.event.KeyboardEvents; +import com.extjs.gxt.ui.client.event.Listener; +import com.extjs.gxt.ui.client.event.MessageBoxEvent; +import com.extjs.gxt.ui.client.event.WindowEvent; +import com.extjs.gxt.ui.client.widget.Dialog; +import com.extjs.gxt.ui.client.widget.Label; +import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.extjs.gxt.ui.client.widget.form.TextField; +import com.extjs.gxt.ui.client.widget.layout.FitLayout; +import com.extjs.gxt.ui.client.widget.layout.HBoxLayout; +import com.extjs.gxt.ui.client.widget.layout.HBoxLayout.HBoxLayoutAlign; +import com.google.gwt.event.dom.client.KeyDownEvent; +import com.google.gwt.event.dom.client.KeyDownHandler; +import com.google.gwt.user.client.Timer; +import com.google.gwt.user.client.ui.HasAlignment; +import com.google.gwt.user.client.ui.HasVerticalAlignment; +import com.google.gwt.user.client.ui.HorizontalPanel; +import com.google.gwt.user.client.ui.PasswordTextBox; +import com.google.gwt.user.client.ui.SimplePanel; +import com.google.gwt.user.client.ui.TextBox; + +/** + * @author Daniele Strollo (ISTI-CNR) + * + */ +public class ExtendedMessageBox { + private Dialog dialog = null; + + PasswordTextBox pwdField = new PasswordTextBox(); + + public static ExtendedMessageBox password( + final String title, + final Listener callback) { + ExtendedMessageBox box = new ExtendedMessageBox(); + + if (callback != null) { + box.addCallback(callback); + } + + box.setTitle(title); + box.show(); + return box; + } + + public ExtendedMessageBox() { + this.initDialog(); + } + + public final void setTitle(final String text) { + this.dialog.setHeading(text); + } + + + public final void addCallback(final Listener listener) { + dialog.addListener(Events.Hide, listener); + } + + private void initDialog() { + this.dialog = new Dialog() { + @Override + protected ComponentEvent previewEvent(final EventType type, final ComponentEvent ce) { + if (ce instanceof WindowEvent) { + WindowEvent we = (WindowEvent) ce; + MessageBoxEvent e = new MessageBoxEvent(null, this, we.getButtonClicked()); + if (type == Events.Hide || type == Events.BeforeHide) { + if (pwdField != null) { + e.setValue(pwdField.getValue()); + } + } + return e; + } + return super.previewEvent(type, ce); + } + }; + + dialog.setHideOnButtonClick(true); + + dialog.setLayout(new FitLayout()); + dialog.setWidth(280); + dialog.setHeight(120); + dialog.setResizable(false); + + pwdField.addKeyDownHandler(new KeyDownHandler() { + + @Override + public void onKeyDown(KeyDownEvent event) { + if (event.getNativeKeyCode() == KeyboardEvents.Enter.getEventCode()) + dialog.hide(); + + } + }); + pwdField.setStyleName("wizardTextBox"); + HorizontalPanel sp = new HorizontalPanel(); + sp.setHeight("120px"); + sp.setHorizontalAlignment(HasAlignment.ALIGN_CENTER); + sp.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE); + sp.setWidth("100%"); + + pwdField.setWidth("250px"); + sp.add(pwdField); + this.dialog.add(sp); + } + + public final void show() { + this.dialog.show(); + Timer t = new Timer() { + @Override + public void run() { + focusPassword(); + } + }; + t.schedule(500); + } + void focusPassword() { + this.pwdField.setFocus(true); + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/panels/DetachablePanel.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/panels/DetachablePanel.java new file mode 100644 index 0000000..0bf4c8b --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/panels/DetachablePanel.java @@ -0,0 +1,282 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: DetachablePanel.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.widgets.panels; + +import java.util.List; +import java.util.Vector; +import org.gcube.portlets.admin.resourcemanagement.client.utils.Commands; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.registry.WidgetsRegistry; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.viewport.MainContainer; +import org.gcube.resourcemanagement.support.shared.util.Assertion; +import org.gcube.resourcemanagement.support.shared.exceptions.InvalidParameterException; + +import com.extjs.gxt.ui.client.event.ComponentEvent; +import com.extjs.gxt.ui.client.widget.Component; +import com.extjs.gxt.ui.client.widget.ContentPanel; +import com.extjs.gxt.ui.client.widget.Dialog; +import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.extjs.gxt.ui.client.widget.button.Button; +import com.extjs.gxt.ui.client.widget.layout.FitLayout; +import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem; +import com.extjs.gxt.ui.client.widget.toolbar.ToolBar; +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.ui.Widget; + +/** + * Consists of a panel that can be inserted inside a container and + * provides a functionality to be detached (and attached to it again). + * + * The detach button is executed in toggle mode. + * + * Once detached a dialog window is created to contain it. + * + * @author Daniele Strollo (ISTI-CNR) + * + */ +public class DetachablePanel { + + public interface DetachablePanelHandler { + void onDetachEvent(DetachablePanel container, Component content); + void onEmbedEvent(DetachablePanel container, Component content); + } + + private ToolBar toolBar = new ToolBar(); + private LayoutContainer parent = null; + private boolean modal = true; + private boolean isDetached = false; + private ContentPanel rootPanel = null; + private Button detachButton = null; + private String title = ""; + private Component mainWidget = null; + private final List handlers = new Vector(); + + /** + * Depending on the status of detached panel, the + * actual container can be the container in which it is + * embedded or a dialog window. + */ + private LayoutContainer actualContainer = null; + + /** + * A detachable panel is created by specifying the widget + * suitable to contain it. + * Once detached the panel will be inserted in an ad-hoc dialog + * window. + * @param container the widget that will embed the panel + * @param modal if the detached window must be modal + */ + public DetachablePanel( + final LayoutContainer container, + final String title, + final String id, + final boolean modal) + throws InvalidParameterException { + super(); + Assertion checker = new Assertion(); + checker.validate(container != null, new InvalidParameterException("The container parameter is null")); + this.parent = container; + this.parent.setLayout(new FitLayout()); + this.modal = modal; + this.title = title; + this.onLoad(); + this.rootPanel.setId(id); + this.rootPanel.setHeaderVisible(false); + this.rootPanel.getHeader().setStyleName("x-hide-panel-header"); + WidgetsRegistry.registerWidget(id, this.rootPanel); + this.embedWindow(); + } + + /** + * Return the panel toolbar. + *

+ * Notice that the button for detaching the panel from its parent + * must not be removed to keep its functionality. + *

+ * @return + */ + public final ToolBar getToolBar() { + return this.toolBar; + } + + private void onLoad() { + this.rootPanel = new ContentPanel() { + @Override + public void hide() { + super.hide(); + if (actualContainer != null) { + actualContainer.hide(); + } + } + @Override + public void show() { + super.show(); + if (actualContainer != null) { + actualContainer.show(); + } + } + }; + this.initToolBar(); + this.rootPanel.setId("detachable-panel-root"); + this.rootPanel.setTopComponent(this.toolBar); + this.rootPanel.setLayout(new FitLayout()); + //this.rootPanel.setAutoHeight(true); + this.rootPanel.setHeight("100%"); + this.rootPanel.remove(this.rootPanel.getHeader()); + this.rootPanel.layout(); + } + + private void initToolBar() { + this.detachButton = new Button() { + @Override + protected void onClick(final ComponentEvent ce) { + toggleDetachWindow(); + } + }; + detachButton.setToolTip("Embeds/Detaches the dialog"); + detachButton.setIconStyle("detach-icon"); + detachButton.setEnabled(true); + toolBar.add(detachButton); + toolBar.add(new SeparatorToolItem()); + } + + /** + * Detaches the console from the main panel and inserts it + * inside a new dialog window. + * This happens in toggle mode. So further detach will + * attach again the console inside the main panel. + */ + private void toggleDetachWindow() { + // Console will be detached and inserted inside + // a newly created dialog. + if (!isDetached) { + this.detachWindow(); + this.onDetach(); + } else { + this.embedWindow(); + this.onEmbed(); + } + + isDetached = !isDetached; + } + + /** + * Here is implemented the detaching of the panel from its + * parent. + */ + private void detachWindow() { + GWT.log("Detaching panel " + this.title); + this.rootPanel.removeFromParent(); + + // The new window that will contain the detached panel + Dialog dlg = new Dialog(); + + // Closes the widgets that initially contained the panel + parent.disable(); + parent.removeFromParent(); + + dlg.setLayout(new FitLayout()); + // Setup the dialog window + dlg.setHeading(this.title); + dlg.setClosable(false); + dlg.setModal(this.modal); + dlg.setWidth(800); + dlg.setHeight(500); + dlg.setResizable(true); + dlg.getButtonBar().removeAll(); + dlg.add(this.rootPanel); + //dlg.setScrollMode(Scroll.AUTO); + + actualContainer = dlg; + + // Registers the dialog window + WidgetsRegistry.registerWidget(this.rootPanel.getId() + "-dlg-detached", dlg); + dlg.show(); + } + + /** + * Embeds the panel inside its parent and closes the detached window. + */ + private void embedWindow() { + GWT.log("Embedding panel " + this.title); + parent.add(this.rootPanel); + parent.enable(); + parent.layout(true); + + actualContainer = parent; + + Widget elem = WidgetsRegistry.getWidget(this.rootPanel.getId() + "-dlg-detached"); + if (elem != null) { + elem.removeFromParent(); + } + WidgetsRegistry.unregisterWidget(this.rootPanel.getId() + "-dlg-detached"); + } + + public final ContentPanel getRootPanel() { + return this.rootPanel; + } + + /** + * This method is called every time the panel is detached + * from its parent. + * + * The custom behavior when detached must be defined here. + */ + protected final void onDetach() { + // Forces the refresh of main container + Commands.refreshViewport(); + this.rootPanel.layout(true); + + for (DetachablePanelHandler handler : this.handlers) { + handler.onDetachEvent(this, this.mainWidget); + } + } + + /** + * This method is called once the detached panel is embedded + * inside its container. + */ + protected final void onEmbed() { + MainContainer viewport = Commands.getViewport(); + // Re-insert the component inside the viewport + viewport.add(this.parent); + + // Forces the refresh of main container + Commands.refreshViewport(); + this.rootPanel.layout(true); + + for (DetachablePanelHandler handler : this.handlers) { + handler.onEmbedEvent(this, this.mainWidget); + } + } + + public final void insertMainWidget(final Component widget) { + this.mainWidget = widget; + this.getRootPanel().add(widget); + } + + public final void layout(final boolean force) { + this.rootPanel.layout(force); + } + + public final void addHandler(final DetachablePanelHandler handler) { + this.handlers.add(handler); + } + + public final void removeHandler(final DetachablePanelHandler handler) { + this.handlers.remove(handler); + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/panels/GenericTreePanel.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/panels/GenericTreePanel.java new file mode 100644 index 0000000..1684768 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/panels/GenericTreePanel.java @@ -0,0 +1,113 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: GenericTreePanel.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.widgets.panels; + +import org.gcube.portlets.admin.resourcemanagement.shared.utils.XMLUtil; +import org.gcube.resourcemanagement.support.shared.types.datamodel.AtomicTreeNode; + +import com.extjs.gxt.ui.client.Style.SortDir; +import com.extjs.gxt.ui.client.data.ModelData; +import com.extjs.gxt.ui.client.data.ModelIconProvider; +import com.extjs.gxt.ui.client.event.ComponentEvent; +import com.extjs.gxt.ui.client.store.TreeStore; +import com.extjs.gxt.ui.client.util.IconHelper; +import com.extjs.gxt.ui.client.widget.menu.Menu; +import com.extjs.gxt.ui.client.widget.menu.MenuItem; +import com.extjs.gxt.ui.client.widget.treepanel.TreePanel; +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.ui.AbstractImagePrototype; + +/** + * @author Daniele Strollo (ISTI-CNR) + * + */ +public class GenericTreePanel { + private TreePanel tree = null; + + public GenericTreePanel(final String xml, final String rootNode) { + AtomicTreeNode model = new AtomicTreeNode(rootNode, null); + + try { + model.add(XMLUtil.XMLToTree(xml, rootNode)); + } catch (Exception e) { + GWT.log("During profile conversion", e); + } + + TreeStore store = new TreeStore(); + // The root node will not be shown + store.add(model.getChildren(), true); + + store.sort("name", SortDir.ASC); + + this.tree = new TreePanel(store) { + private boolean loaded = false; + @Override + protected void onLoad() { + super.onLoad(); + if (loaded) { + return; + } + // Expands the first level only + this.setExpanded(this.getStore().getRootItems().get(0), true, false); + this.loaded = true; + } + }; + this.tree.setWidth(300); + this.tree.setDisplayProperty("name"); + + this.tree.setHeight("100%"); + this.tree.setWidth("100%"); + + Menu subMenu = new Menu(); + subMenu.add(new MenuItem("Expand All") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + tree.expandAll(); + } + }); + subMenu.add(new MenuItem("Collapse All") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + tree.collapseAll(); + } + }); + this.tree.setContextMenu(subMenu); + + // The icon decorator + this.tree.setIconProvider( + new ModelIconProvider() { + public AbstractImagePrototype getIcon(final ModelData model) { + if (model instanceof AtomicTreeNode) { + AtomicTreeNode m = (AtomicTreeNode) model; + if (m.isLeaf()) { + return IconHelper.createStyle("console-log-icon"); + } else { + return IconHelper.createStyle("profile-folder-icon"); + } + } + return IconHelper.createStyle("defaultleaf-icon"); + } + }); + } + + public final TreePanel getWidget() { + return this.tree; + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/panels/MainPanel.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/panels/MainPanel.java new file mode 100644 index 0000000..b391099 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/panels/MainPanel.java @@ -0,0 +1,119 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: MainPanel.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.widgets.panels; + +import com.extjs.gxt.ui.client.Style.LayoutRegion; +import com.extjs.gxt.ui.client.util.Margins; +import com.extjs.gxt.ui.client.widget.Component; +import com.extjs.gxt.ui.client.widget.ContentPanel; +import com.extjs.gxt.ui.client.widget.LayoutContainer; +import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData; +import com.google.gwt.user.client.ui.Widget; + +public abstract class MainPanel { + private BorderLayoutData layout = null; + private ContentPanel container = null; + + public MainPanel(final LayoutRegion position) { + this.layout = new BorderLayoutData(position); + this.container = new ContentPanel() { + protected void onRender(final com.google.gwt.user.client.Element parent, final int pos) { + super.onRender(parent, pos); + init(); + }; + }; + this.setSplit(true); + container.setHeaderVisible(false); + } + + public MainPanel(final int size, final LayoutRegion position) { + this(position); + this.layout.setSize(size); + } + + public MainPanel(final int size, final String title, final LayoutRegion position) { + this(size, position); + if (title != null) { + this.container.setHeading(title); + } + } + + public final BorderLayoutData getLayout() { + return this.layout; + } + + public final void showHeader(final boolean showHeader) { + this.container.setHeaderVisible(showHeader); + } + + public final LayoutContainer getContainer() { + return this.container; + } + + public final void setMargins(final Margins margins) { + this.layout.setMargins(margins); + } + + public final void setCollapsible(final boolean collapsible) { + this.layout.setCollapsible(collapsible); + } + + public final void setFloatable(final boolean floatable) { + this.layout.setFloatable(floatable); + } + + public final void setSplit(final boolean split) { + this.layout.setSplit(split); + } + + + public final void add(final Widget w, final boolean removeOthers) { + if (removeOthers) { + this.container.removeAll(); + } + this.container.add(w); + this.container.layout(); + } + + public final void setTopComponent(final Component component) { + this.container.setTopComponent(component); + } + + public final void setBottomComponent(final Component component) { + this.container.setBottomComponent(component); + } + + + public final void removeAll() { + this.container.removeAll(); + } + + /** + * Requires the following lines in the .css + *
+	 * .x-hide-panel-header {
+	 * 		display:none !important;
+	 * }
+	 * 
+ */ + public final void hideHeader() { + this.container.setHeaderVisible(false); + this.container.getHeader().setStyleName("x-hide-panel-header"); + } + + public abstract void init(); +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/panels/ScrollablePanel.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/panels/ScrollablePanel.java new file mode 100644 index 0000000..3c99cb6 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/panels/ScrollablePanel.java @@ -0,0 +1,70 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: ScrollablePanel.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.widgets.panels; + +import com.extjs.gxt.ui.client.Style.Scroll; +import com.extjs.gxt.ui.client.widget.Component; +import com.extjs.gxt.ui.client.widget.ContentPanel; +import com.extjs.gxt.ui.client.widget.layout.FitLayout; +import com.google.gwt.user.client.Element; + +/** + * @author Daniele Strollo (ISTI-CNR) + * + */ +public class ScrollablePanel extends ContentPanel { + + public ScrollablePanel() { + super(); + this.setLayout(new FitLayout()); + this.setScrollMode(Scroll.AUTO); + this.setHeaderVisible(false); + this.setWidth("100%"); + this.setHeight("100%"); + this.setLayoutOnChange(true); + + this.getHeader().setStyleName("x-hide-panel-header"); + } + + public ScrollablePanel(final String id) { + this(); + this.setId(id); + } + + public ScrollablePanel(final Component widget) { + this(); + this.setScrollableWidget(widget); + } + + public ScrollablePanel(final String id, final Component widget) { + this(id); + this.setScrollableWidget(widget); + } + + public final void setScrollableWidget(final Component widget) { + this.removeAll(); + widget.setWidth("100%"); + widget.setHeight("100%"); + this.add(widget); + this.layout(true); + } + + @Override + protected final void onRender(final Element parent, final int pos) { + super.onRender(parent, pos); + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/registry/UIIdentifiers.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/registry/UIIdentifiers.java new file mode 100644 index 0000000..b7f0862 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/registry/UIIdentifiers.java @@ -0,0 +1,52 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: UIIdentifiers.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.widgets.registry; + +/** + * @author Daniele Strollo (ISTI-CNR) + * + */ +public class UIIdentifiers { + // The panel containing the console + public static final String CONSOLE_COMPONENT_ID = "console-panel"; + // The widget that will be used to send notification messages to the + // console. + public static final String CONSOLE_WIDGET_ID = "console-widget"; + // The main panel that will contain the console + public static final String CONSOLE_PANEL_ID = "panel-south"; + // The ID of west panel (resource navigation) + public static final String RESOURCE_NAVIGATION_PANEL = "panel-west"; + // The main panel containing the resource detail grid + public static final String RESOURCE_DETAIL_GRID_PANEL = "resource-detail-grid-panel"; + // The wrapper of resource detail grid (getWidget will return the contained grid). + public static final String RESOURCE_DETAIL_GRID_CONTAINER_ID = "resource-detail-grid"; + + // The tool bar in the main menu panel + public static final String GLOBAL_STATUS_BAR_ID = "global-status-bar"; + public static final String STATUS_SCOPE_INFO_ID = "scope-info-status-bar"; + public static final String STATUS_LOADED_RESOURCES_ID = "loaded-resources-status-bar"; + public static final String STATUS_PROGRESS_BAR_ID = "progress-status-bar"; + + public static final String GLOBAL_MENUBAR_ID = "global-menu-bar"; + + public static final String BUTTON_AVAILABLE_SCOPES_ID = "btn-available-scopes"; + + public static final String MAIN_CONTAINER_VIEWPORT_ID = "main-container-viewport"; + + public static final String GLOBAL_MENU_CONTAINER_PANEL = "panel-north"; + public static final String TASKBAR_PANEL = "panel-est"; +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/registry/WidgetsRegistry.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/registry/WidgetsRegistry.java new file mode 100644 index 0000000..3dcb3d7 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/registry/WidgetsRegistry.java @@ -0,0 +1,96 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: WidgetsRegistry.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.widgets.registry; + +import java.util.HashMap; + +import org.gcube.portlets.admin.resourcemanagement.client.widgets.console.ConsolePanel; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.panels.MainPanel; +import org.gcube.portlets.admin.resourcemanagement.shared.exceptions.WidgetNotRegistered; +import org.gcube.resourcemanagement.support.shared.util.Assertion; + +import com.google.gwt.user.client.ui.Widget; + +public class WidgetsRegistry { + private static final HashMap registeredWidgets = new HashMap(); + + public static synchronized void registerWidget(final String ID, final Widget widget) { + registeredWidgets.put(ID, widget); + } + + public static synchronized void registerPanel(final String ID, final MainPanel widget) { + registeredWidgets.put(ID, widget); + } + + public static synchronized MainPanel getPanel(final String ID) { + if (!registeredWidgets.containsKey(ID) || !(registeredWidgets.get(ID) instanceof MainPanel)) { + return null; + } + return (MainPanel) registeredWidgets.get(ID); + } + + public static synchronized Widget getWidget(final String ID) { + if (!registeredWidgets.containsKey(ID) || !(registeredWidgets.get(ID) instanceof Widget)) { + return null; + } + return (Widget) registeredWidgets.get(ID); + } + public static synchronized boolean containsElem(final String ID) { + return registeredWidgets.containsKey(ID); + } + + public static synchronized Object getElem(final String key){ + return registeredWidgets.get(key); + } + + public static synchronized void unregisterWidget(final String key) { + if (registeredWidgets.containsKey(key)) { + registeredWidgets.remove(key); + } + } + + public static synchronized void registerElem(final String ID, final Object widget) { + registeredWidgets.put(ID, widget); + } + + @SuppressWarnings("unchecked") + public static final synchronized Object getElem(final String key, final Class elemType) + throws WidgetNotRegistered { + Assertion checker = new Assertion(); + checker.validate(registeredWidgets.containsKey(key), new WidgetNotRegistered("The widget " + key + " has not be registered")); + Object retval = registeredWidgets.get(key); + + try { + return (T) retval; + } catch (ClassCastException e) { + throw new WidgetNotRegistered("The registered element is not of declared type"); + } + } + + /** + * Utility that returns the singleton instance of console panel. + * @return null if the console has not been registered + */ + public static ConsolePanel getConsole() { + try { + return (ConsolePanel) WidgetsRegistry.getElem(UIIdentifiers.CONSOLE_WIDGET_ID, ConsolePanel.class); + } catch (WidgetNotRegistered e) { + return null; + } + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/taskbar/TaskbarButton.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/taskbar/TaskbarButton.java new file mode 100644 index 0000000..21a042c --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/taskbar/TaskbarButton.java @@ -0,0 +1,202 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: TaskbarButton.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.widgets.taskbar; +import static com.google.gwt.query.client.GQuery.$; + +import java.util.ArrayList; + +import org.gcube.portlets.admin.resourcemanagement.client.utils.FWSTranslate; +import org.gcube.resourcemanagement.support.client.views.ResourceTypeDecorator; + +import com.extjs.gxt.ui.client.core.El; +import com.extjs.gxt.ui.client.event.ComponentEvent; +import com.extjs.gxt.ui.client.event.Events; +import com.extjs.gxt.ui.client.event.SelectionListener; +import com.extjs.gxt.ui.client.util.IconHelper; +import com.extjs.gxt.ui.client.widget.Component; +import com.extjs.gxt.ui.client.widget.IconSupport; +import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.Element; +import com.google.gwt.user.client.Event; +import com.google.gwt.user.client.Random; +import com.google.gwt.user.client.Timer; +import com.google.gwt.user.client.ui.AbstractImagePrototype; + +/** + * @author Massimiliano Assante (ISTI-CNR) + * + * A selectable icon (post-it styled) and text added to the pinned resources (TaskbarWindow). + */ +public class TaskbarButton extends Component implements IconSupport { + private ResourceTypeDecorator type; + private String text; + private AbstractImagePrototype icon; + private El iconEl; + + /** + * Creates a new shortcut. + */ + public TaskbarButton() { + + } + + /** + * Creates a new shortcut. + * + * @param id the shortcut id + * @param text the shortcut text + */ + public TaskbarButton(final String id, final ResourceTypeDecorator type, final String text) { + setId(id); + setText(text); + this.type = type; + + //for IE + final Timer t2 = new Timer() { + @Override + public void run() { + getElement().getFirstChildElement().getStyle().setOpacity(0.8); + + } + }; + //need to make sure the element is attached to the DOM + Timer t = new Timer() { + @Override + public void run() { + $(getElement().getFirstChildElement()).animate("opacity:'0.8'", 500); + t2.schedule(500); + } + }; + + t.schedule(100); + } + + /** + * Adds a selection listener. + * + * @param listener the listener to add + */ + public final void addSelectionListener(final SelectionListener listener) { + addListener(Events.Select, listener); + } + + public final AbstractImagePrototype getIcon() { + return icon; + } + + /** + * Returns the shortcuts text. + * + * @return the text + */ + public final String getText() { + return text; + } + + @Override + public final void onComponentEvent(final ComponentEvent ce) { + super.onComponentEvent(ce); + if (ce.getEventTypeInt() == Event.ONCLICK) { + onClick(ce); + } + } + + /** + * Removes a previously added listener. + * + * @param listener the listener to be removed + */ + public final void removeSelectionListener(final SelectionListener listener) { + removeListener(Events.Select, listener); + } + + public final void setIcon(final AbstractImagePrototype icon) { + if (rendered) { + iconEl.setInnerHtml(""); + iconEl.appendChild((Element) icon.createElement().cast()); + } + this.icon = icon; + + } + + public final void setIconStyle(final String icon) { + setIcon(IconHelper.create(icon, 48, 48)); + + } + + /** + * Sets the shortcuts text. + * + * @param text the text + */ + public final void setText(final String text) { + this.text = text; + } + + protected void onClick(final ComponentEvent ce) { + ce.stopEvent(); + fireEvent(Events.Select, ce); + } + + @Override + protected final void onRender(final Element target, final int index) { + super.onRender(target, index); + + + + String fontStyle = "font-size:12px; font-weight: 300; margin-top: 5px; padding: 5px; word-wrap: break-word;"; + setElement(DOM.createElement("dt"), target, index); + + + + + final El a = el().createChild("
"); + iconEl = a.createChild(FWSTranslate.getFWSNameFromLabel(type.toString())); + El txt = a.createChild("
"); + + if (txt != null) { + txt.setInnerHtml(text); + } + + el().updateZIndex(0); + sinkEvents(Event.ONCLICK); + if (icon != null) { + setIcon(icon); + } + } + + private String getExaBackgroundColor(ResourceTypeDecorator type) { + switch (type) { + case Collection: + return "#aa84c1"; //violet + case RunningInstance: + return "#8aacd2"; //blue + case GenericResource: + return "#79bd84"; //green + case GHN: + return "#a4d03b"; //ramarro + case RuntimeResource: + return "#e4df00"; //yellow + case Service: + return "#fea500"; //orange + case WSResource: + return "#f6634f"; //red + default: + return "#CAEBFA"; //azur + } + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/taskbar/TaskbarItem.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/taskbar/TaskbarItem.java new file mode 100644 index 0000000..76ea016 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/taskbar/TaskbarItem.java @@ -0,0 +1,174 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: IconizablePanel.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.widgets.taskbar; + +import org.gcube.portlets.admin.resourcemanagement.client.remote.ProxyRegistry; +import org.gcube.portlets.admin.resourcemanagement.client.utils.Callbacks; +import org.gcube.portlets.admin.resourcemanagement.client.utils.Commands; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.panels.MainPanel; +import org.gcube.resourcemanagement.support.client.views.ResourceTypeDecorator; +import org.gcube.resourcemanagement.support.shared.util.Configuration; + +import com.extjs.gxt.ui.client.event.ComponentEvent; +import com.extjs.gxt.ui.client.widget.menu.Menu; +import com.extjs.gxt.ui.client.widget.menu.MenuItem; + +/** + * @author Massimiliano Assante (ISTI-CNR) + * @author Daniele Strollo + * + */ +public class TaskbarItem { + private MainPanel parent = null; + private TaskbarButton detachButton = null; + private TaskbarWindow relatedWidget = null; + private String resourceID = null; + private ResourceTypeDecorator type = null; + + + private String scope = null; + + public TaskbarItem( + final String scope, + final ResourceTypeDecorator type, // optional + final MainPanel container, + final String resourceID, + final String title, + final String uiComponentID, + final String buttonIcon) { + this.parent = container; + this.type = type; + this.initUI(title, uiComponentID, buttonIcon); + this.resourceID = resourceID; + this.scope = scope; + } + + private String getScope() { + return this.scope; + } + + private void initUI(final String title, final String id,final String buttonIcon) { + + this.detachButton = new TaskbarButton("btn" + id, type, title) { + protected void onClick(final com.extjs.gxt.ui.client.event.ComponentEvent ce) { + relatedWidget.doMinimize(); + } + }; + this.detachButton.setStyleName("taskbar-button"); + + this.detachButton.setIconStyle(buttonIcon); + this.parent.add(this.detachButton, false); + + this.relatedWidget = new TaskbarWindow(this); + this.relatedWidget.setHeading(title); + + if (Configuration.openProfileOnLoad) { + this.activate(); + } else { + this.relatedWidget.setIsMinimized(true); + } + + Menu mnu = new Menu(); + MenuItem close = new MenuItem("Close") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + relatedWidget.doClose(); + } + }; + close.setIconStyle("close-icon"); + mnu.add(close); + + MenuItem closeAll = new MenuItem("CloseAll") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + TaskbarRegister.closeAll(); + } + }; + closeAll.setIconStyle("closeall-icon"); + mnu.add(closeAll); + + if (type != null && type == ResourceTypeDecorator.DeployReport) { + MenuItem refresh = new MenuItem("Refresh") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + ProxyRegistry.getProxyInstance().checkDeployStatus( + getScope(), + resourceID.trim(), + Callbacks.handleGetDeploymentReport); + } + }; + refresh.setIconStyle("refresh-icon"); + mnu.add(refresh); + } + + if (type != null && + (type == ResourceTypeDecorator.GHN || + type == ResourceTypeDecorator.VIEW || + type == ResourceTypeDecorator.Collection || + type == ResourceTypeDecorator.GenericResource || + type == ResourceTypeDecorator.RunningInstance || + type == ResourceTypeDecorator.Service) + ) { + MenuItem refresh = new MenuItem("Refresh") { + @Override + protected void onClick(final ComponentEvent be) { + super.onClick(be); + Commands.doGetResourceProfileByID( + this, + getScope(), + resourceID.trim()); + } + }; + refresh.setIconStyle("refresh-icon"); + mnu.add(refresh); + } + + this.detachButton.setContextMenu(mnu); + } + + public final String getResourceID() { + return this.resourceID; + } + + public final void destroy() { + try { + TaskbarRegister.unregisterTaskbarWidget(this.resourceID); + this.parent.getContainer().remove(this.detachButton); + this.relatedWidget.hide(); + } catch (Exception e) { + } + } + + protected final void disactivate() { + this.detachButton.setStyleName("taskbar-button"); + } + + protected final void activate() { + this.detachButton.setStyleName("taskbar-button-active"); + } + + public final TaskbarWindow getRelatedWindow() { + return this.relatedWidget; + } + + public ResourceTypeDecorator getType() { + return type; + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/taskbar/TaskbarRegister.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/taskbar/TaskbarRegister.java new file mode 100644 index 0000000..963252f --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/taskbar/TaskbarRegister.java @@ -0,0 +1,114 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: TaskbarRegister.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.widgets.taskbar; + +import java.util.HashMap; + +import org.gcube.portlets.admin.resourcemanagement.client.widgets.console.ConsoleMessageBroker; +import org.gcube.resourcemanagement.support.client.views.ResourceTypeDecorator; + +import com.google.gwt.core.client.GWT; + +/** + * Manages the widgets registered in the taskbar. + * Useful to implement the "close all" and to avoid + * duplicates. + * @author Daniele Strollo (ISTI-CNR) + * + */ +public class TaskbarRegister { + final static HashMap registeredItems = new HashMap(); + static TaskbarWindow lastOpenedWindow = null; + + public static int getCurrAddScopeReportsNumber() { + int count = 0; + for (String item : registeredItems.keySet()) { + GWT.log(item); + if (registeredItems.get(item).getType() == ResourceTypeDecorator.AddScopeReport ) + count++; + } + return count; + } + + public static synchronized void setLastOpenedWindow(TaskbarWindow lastOpenedWindow) { + TaskbarRegister.lastOpenedWindow = lastOpenedWindow; + } + + public static synchronized TaskbarWindow getLastOpenedWindow() { + return TaskbarRegister.lastOpenedWindow; + } + + public static synchronized void registerTaskbarWidget(final String id, final TaskbarItem item) { + ConsoleMessageBroker.info(TaskbarRegister.class, "Registering res: " + id); + registeredItems.put(id, item); + } + + public static synchronized void unregisterTaskbarWidget(final String id) { + ConsoleMessageBroker.info(TaskbarRegister.class, "Unregistering res: " + id); + registeredItems.remove(id); + } + + public static synchronized TaskbarItem getTaskbarItem(final String id) { + if (registeredItems.containsKey(id)) { + return registeredItems.get(id); + } + return null; + } + + public static synchronized boolean contains(final String key) { + return registeredItems.containsKey(key); + } + + public static synchronized void minimizeAll() { + Object[] items = registeredItems.values().toArray(); + ConsoleMessageBroker.trace(TaskbarRegister.class, "Elems to remove: " + items.length); + TaskbarItem curItem = null; + for (Object elem : items){ + try { + if (elem != null) { + curItem = ((TaskbarItem)elem); + if (!curItem.getRelatedWindow().isMinimized()) { + curItem.getRelatedWindow().doMinimize(); + } + } + + } catch (Exception e) { + GWT.log("During remove all profiles", e); + ConsoleMessageBroker.error(TaskbarRegister.class, e.getMessage()); + } + } + ConsoleMessageBroker.info(TaskbarRegister.class, "Unregistering all resources"); + } + + public static synchronized void closeAll() { + Object[] items = registeredItems.values().toArray(); + ConsoleMessageBroker.trace(TaskbarRegister.class, "Elems to remove: " + items.length); + for (Object elem : items){ + try { + if (elem != null) { + ((TaskbarItem)elem).getRelatedWindow().doClose(); + } + + } catch (Exception e) { + GWT.log("During remove all profiles", e); + ConsoleMessageBroker.error(TaskbarRegister.class, e.getMessage()); + } + } + ConsoleMessageBroker.info(TaskbarRegister.class, "Unregistering all resources"); + registeredItems.clear(); + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/taskbar/TaskbarWindow.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/taskbar/TaskbarWindow.java new file mode 100644 index 0000000..e1c4a48 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/taskbar/TaskbarWindow.java @@ -0,0 +1,103 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: TaskbarWindow.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.widgets.taskbar; + +import java.util.ArrayList; + +import org.gcube.portlets.admin.resourcemanagement.client.widgets.console.ConsoleMessageBroker; +import org.gcube.resourcemanagement.support.shared.util.Configuration; + +import com.extjs.gxt.ui.client.event.IconButtonEvent; +import com.extjs.gxt.ui.client.event.SelectionListener; +import com.extjs.gxt.ui.client.widget.Component; +import com.extjs.gxt.ui.client.widget.Window; +import com.extjs.gxt.ui.client.widget.button.ToolButton; +import com.extjs.gxt.ui.client.widget.layout.FitLayout; + +/** + * @author Daniele Strollo (ISTI-CNR) + * + */ +public class TaskbarWindow extends Window { + private TaskbarItem relatedItem = null; + private boolean isMinimized = false; + + public static ArrayList extractedColors = new ArrayList(); + + protected TaskbarWindow(final TaskbarItem relatedItem) { + super(); + this.setModal(false); + this.setClosable(false); + this.setLayout(new FitLayout()); + this.relatedItem = relatedItem; + + this.setWidth(800); + this.setHeight(500); + + this.getHeader().addTool(new ToolButton("x-tool-minimize", new SelectionListener() { + @Override + public void componentSelected(final IconButtonEvent ce) { + doMinimize(); + } + })); + /* removed the close functionality from the window. only the button can be closed + this.getHeader().addTool(new ToolButton("x-tool-close", new SelectionListener() { + @Override + public void componentSelected(final IconButtonEvent ce) { + doClose(); + } + })); + */ + if (Configuration.openProfileOnLoad) { + this.show(); + } + } + + protected final void doClose() { + ConsoleMessageBroker.trace(this, "Closing taskbar item: " + this.relatedItem.getResourceID()); + this.relatedItem.destroy(); + this.hide(); + } + + protected final void doMinimize() { + if (this.isMinimized) { + if (!Configuration.allowMultipleProfiles) { + TaskbarRegister.minimizeAll(); + } + this.show(); + this.relatedItem.activate(); + } else { + this.hide(); + this.relatedItem.disactivate(); + } + this.isMinimized = !isMinimized; + } + + public final void setIsMinimized(boolean minimized) { + this.isMinimized = minimized; + } + + public final boolean isMinimized() { + return this.isMinimized; + } + + public final void setMainWidget(final Component widget) { + this.removeAll(); + this.add(widget); + this.layout(true); + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/viewport/MainContainer.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/viewport/MainContainer.java new file mode 100644 index 0000000..3ea342c --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/client/widgets/viewport/MainContainer.java @@ -0,0 +1,42 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: MainContainer.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.client.widgets.viewport; + +import org.gcube.portlets.admin.resourcemanagement.client.widgets.panels.MainPanel; +import org.gcube.portlets.admin.resourcemanagement.client.widgets.registry.WidgetsRegistry; +import com.extjs.gxt.ui.client.widget.LayoutContainer; + +/** + * @author Daniele Strollo (ISTI-CNR) + */ +public class MainContainer extends LayoutContainer { + public MainContainer() { + super(); + //- this.setPagePosition(0, 150); + } + + public boolean add(String id, MainPanel item) { + WidgetsRegistry.registerWidget(id, item.getContainer()); + return super.add(item.getContainer(), item.getLayout()); + } + + public boolean addPanel(String id, MainPanel item) { + WidgetsRegistry.registerPanel(id, item); + return super.add(item.getContainer(), item.getLayout()); + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/server/ResourceCommands.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/server/ResourceCommands.java new file mode 100644 index 0000000..60bf766 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/server/ResourceCommands.java @@ -0,0 +1,211 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: ResourceCommands.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.server; + +import java.util.List; + +import org.gcube.common.scope.impl.ScopeBean; +import org.gcube.resourcemanagement.support.client.utils.CurrentStatus; +import org.gcube.resourcemanagement.support.shared.util.Assertion; +import org.gcube.resourcemanagement.support.server.managers.resources.CollectionManager; +import org.gcube.resourcemanagement.support.server.managers.resources.GHNManager; +import org.gcube.resourcemanagement.support.server.managers.resources.GenericResourceManager; +import org.gcube.resourcemanagement.support.server.managers.resources.RuntimeResourceManager; +import org.gcube.resourcemanagement.support.server.types.AllowedResourceTypes; +import org.gcube.resourcemanagement.support.server.utils.ServerConsole; +import org.gcube.resourcemanagement.support.shared.exceptions.InvalidParameterException; +import org.gcube.resourcemanagement.support.shared.operations.SupportedOperations; +import org.gcube.resourcemanagement.support.shared.types.datamodel.ResourceDescriptor; + +/** + * @author Daniele Strollo (ISTI-CNR) + * + */ +public class ResourceCommands { + private static final String LOG_PREFIX = "[RES-CMDS]"; + + @SuppressWarnings("deprecation") + public static void doOperation( + final CurrentStatus status, + final SupportedOperations opCode, + final String scope, + final List resources) + throws Exception { + ServerConsole.debug(LOG_PREFIX, "[RES-COMMANDS-DO] Required operation: " + opCode); + + Assertion checker = new Assertion(); + checker.validate(opCode != null, new InvalidParameterException("Invalid operation required")); + checker.validate(scope != null && scope.length() > 0, + new InvalidParameterException("Invalid scope.")); + checker.validate(resources != null && resources.size() > 0, + new InvalidParameterException("Invalid resource descriptor.")); + // Checks permissions + checker.validate(opCode.isAllowed(status.getCredentials()), + new InvalidParameterException("The current user is not allowed to execute the operation.")); + + ScopeBean gscope = new ScopeBean(scope); + + /********************************************************** + * GHN + *********************************************************/ + + // SHUTDOWN + if (opCode.equals(SupportedOperations.GHN_SHUTDOWN)) { + for (ResourceDescriptor resource : resources) { + checker.validate( + resource.getType().equals(AllowedResourceTypes.GHN.name()), + new InvalidParameterException("Invalid type. GHN required")); + new GHNManager(resource.getID(), resource.getName()).shutDown(gscope, false, false); + } + } + + // RESTART + if (opCode.equals(SupportedOperations.GHN_RESTART) || opCode.equals(SupportedOperations.GHN_CLEAN_RESTART)) { + for (ResourceDescriptor resource : resources) { + checker.validate( + resource.getType().equals(AllowedResourceTypes.GHN.name()), + new InvalidParameterException("Invalid type. GHN required")); + new GHNManager(resource.getID(), resource.getName()).shutDown(gscope, + // restart + true, + // to clean? + (opCode.equals(SupportedOperations.GHN_CLEAN_RESTART) ? true : false)); + } + } + + // DELETE + if (opCode.equals(SupportedOperations.GHN_DELETE)) { + for (ResourceDescriptor resource : resources) { + checker.validate( + resource.getType().equals(AllowedResourceTypes.GHN.name()), + new InvalidParameterException("Invalid type. GHN required")); + new GHNManager(resource.getID()).delete(gscope); + } + } + + // DELETE + if (opCode.equals(SupportedOperations.GHN_FORCE_DELETE)) { + for (ResourceDescriptor resource : resources) { + checker.validate( + resource.getType().equals(AllowedResourceTypes.GHN.name()), + new InvalidParameterException("Invalid type. GHN required")); + new GHNManager(resource.getID()).forceDelete(gscope); + } + } + + + /********************************************************** + * GENERIC RESOURCE + *********************************************************/ + // DELETE + if (opCode.equals(SupportedOperations.GENERIC_RESOURCE_DELETE)) { + for (ResourceDescriptor resource : resources) { + checker.validate( + resource.getType().equals(AllowedResourceTypes.GenericResource.name()), + new InvalidParameterException("Invalid type. " + AllowedResourceTypes.GenericResource.name() + " required")); + new GenericResourceManager(resource.getID()).delete(gscope); + } + } + // DELETE + if (opCode.equals(SupportedOperations.GENERIC_RESOURCE_FORCE_DELETE)) { + for (ResourceDescriptor resource : resources) { + checker.validate( + resource.getType().equals(AllowedResourceTypes.GenericResource.name()), + new InvalidParameterException("Invalid type. " + AllowedResourceTypes.GenericResource.name() + " required")); + new GenericResourceManager(resource.getID()).forceDelete(gscope); + } + } + + /********************************************************** + * RUNTIME RESOURCE + *********************************************************/ + // DELETE + if (opCode.equals(SupportedOperations.RUNTIME_RESOURCE_DELETE)) { + System.out.println("DELETING RUNTIME RESOURCE"); + for (ResourceDescriptor resource : resources) { + checker.validate( + resource.getType().equals(AllowedResourceTypes.RuntimeResource.name()), + new InvalidParameterException("Invalid type. " + AllowedResourceTypes.RuntimeResource.name() + " required")); + new RuntimeResourceManager(resource.getID()).delete(gscope); + } + } + // DELETE + if (opCode.equals(SupportedOperations.RUNTIME_RESOURCE_FORCE_DELETE)) { + for (ResourceDescriptor resource : resources) { + checker.validate( + resource.getType().equals(AllowedResourceTypes.RuntimeResource.name()), + new InvalidParameterException("Invalid type. " + AllowedResourceTypes.RuntimeResource.name() + " required")); + new RuntimeResourceManager(resource.getID()).forceDelete(gscope); + } + } + + /********************************************************** + * COLLECTION + *********************************************************/ + // DELETE + if (opCode.equals(SupportedOperations.COLLECTION_DELETE)) { + for (ResourceDescriptor resource : resources) { + checker.validate( + resource.getType().equals(AllowedResourceTypes.Collection.name()), + new InvalidParameterException("Invalid type. " + AllowedResourceTypes.Collection.name() + " required")); + new CollectionManager(resource.getID()).delete(gscope); + } + } + // DELETE + if (opCode.equals(SupportedOperations.COLLECTION_FORCE_DELETE)) { + for (ResourceDescriptor resource : resources) { + checker.validate( + resource.getType().equals(AllowedResourceTypes.Collection.name()), + new InvalidParameterException("Invalid type. " + AllowedResourceTypes.Collection.name() + " required")); + new CollectionManager(resource.getID()).forceDelete(gscope); + } + } + + /********************************************************** + * VIEW + *********************************************************/ +// // DELETE +// if (opCode.equals(SupportedOperations.VIEW_DELETE)) { +// for (ResourceDescriptor resource : resources) { +// checker.validate( +// resource.getType().equals(AllowedResourceTypes.VIEW.name()), +// new InvalidParameterException("Invalid type. " + AllowedResourceTypes.VIEW.name() + " required")); +// new ViewManager(resource.getID()).delete(gscope); +// } +// } +// // DELETE +// if (opCode.equals(SupportedOperations.VIEW_FORCE_DELETE)) { +// for (ResourceDescriptor resource : resources) { +// checker.validate( +// resource.getType().equals(AllowedResourceTypes.VIEW.name()), +// new InvalidParameterException("Invalid type. " + AllowedResourceTypes.VIEW.name() + " required")); +// new ViewManager(resource.getID()).forceDelete(gscope); +// } +// } + + /********************************************************** + * RUNNING INSTANCE + *********************************************************/ + if (opCode.equals(SupportedOperations.RUNNING_INSTANCE_UNDEPLOY)) { + for (ResourceDescriptor resource : resources) { + ServerConsole.debug(LOG_PREFIX, "Undeploying RI: " + resource.getID()); + // FIXME per massi: togli questi commenti per abilitare undeploy + // new RunningInstanceManager(resource.getID()).undeploy(gscope); + } + } + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/server/ServiceProxyImpl.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/server/ServiceProxyImpl.java new file mode 100644 index 0000000..84383c7 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/server/ServiceProxyImpl.java @@ -0,0 +1,534 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: ServiceProxyImpl.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.server; + +import static org.gcube.resources.discovery.icclient.ICFactory.client; + +import java.io.File; +import java.io.StringReader; +import java.security.InvalidParameterException; +import java.security.NoSuchAlgorithmException; +import java.security.spec.InvalidKeySpecException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Vector; + +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.PBEKeySpec; +import javax.servlet.http.HttpSession; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; + +import org.gcube.common.resources.gcore.utils.XPathHelper; +import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.common.scope.impl.ScopeBean; +import org.gcube.portlets.admin.resourcemanagement.client.remote.ServiceProxy; +import org.gcube.portlets.admin.resourcemanagement.server.gcube.services.StatusHandler; +import org.gcube.portlets.admin.resourcemanagement.server.gcube.services.configuration.ConfigurationLoader; +import org.gcube.resourcemanagement.support.client.utils.CurrentStatus; +import org.gcube.resourcemanagement.support.client.views.ResourceTypeDecorator; +import org.gcube.resourcemanagement.support.server.gcube.CacheManager; +import org.gcube.resourcemanagement.support.server.gcube.ISClientRequester; +import org.gcube.resourcemanagement.support.server.gcube.queries.QueryLoader; +import org.gcube.resourcemanagement.support.server.gcube.queries.QueryLocation; +import org.gcube.resourcemanagement.support.server.managers.resources.GenericResourceManager; +import org.gcube.resourcemanagement.support.server.managers.resources.ManagementUtils; +import org.gcube.resourcemanagement.support.server.managers.resources.ResourceFactory; +import org.gcube.resourcemanagement.support.server.managers.scope.ScopeManager; +import org.gcube.resourcemanagement.support.server.types.AllowedResourceTypes; +import org.gcube.resourcemanagement.support.server.utils.ServerConsole; +import org.gcube.resourcemanagement.support.shared.exceptions.InvalidPermissionsException; +import org.gcube.resourcemanagement.support.shared.operations.SupportedOperations; +import org.gcube.resourcemanagement.support.shared.plugins.GenericResourcePlugin; +import org.gcube.resourcemanagement.support.shared.types.Tuple; +import org.gcube.resourcemanagement.support.shared.types.UserGroup; +import org.gcube.resourcemanagement.support.shared.types.datamodel.CompleteResourceProfile; +import org.gcube.resourcemanagement.support.shared.types.datamodel.ResourceDescriptor; +import org.gcube.resourcemanagement.support.shared.util.Assertion; +import org.gcube.resourcemanagement.support.shared.util.Configuration; +import org.gcube.resources.discovery.client.api.DiscoveryClient; +import org.gcube.resources.discovery.client.queries.impl.QueryTemplate; +import org.gcube.vremanagement.resourcemanager.client.RMReportingLibrary; +import org.w3c.dom.Node; +import org.xml.sax.InputSource; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.server.rpc.RemoteServiceServlet; +import org.gcube.portlets.admin.resourcemanagement.shared.utils.BCrypt; + +/** + * @author Daniele Strollo + * @author Massimiliano Assante (ISTI-CNR) + * + * + */ +@SuppressWarnings("serial") +public class ServiceProxyImpl extends RemoteServiceServlet implements ServiceProxy { + private static final String LOG_PREFIX = "[SERVICE-IMPL]"; + + public final void emptyCache() { + ISClientRequester.emptyCache(); + } + + public final void setUseCache(final boolean flag) { + this.getCurrentStatus().setUseCache(flag); + } + + public final void setSuperUser(final boolean superUser) { + if (superUser && this.getCurrentStatus().getCredentials() == UserGroup.DEBUG) { + this.getCurrentStatus().setCredentials(UserGroup.ADMIN); + } else { + this.getCurrentStatus().setCredentials(UserGroup.DEBUG); + } + initScopes(true); + } + + /** + * Called by portlet at module instantiation + */ + public final CurrentStatus initStatus() { + ServerConsole.trace(LOG_PREFIX, "[INIT-STATUS] initializing config parameters"); + + ServerConsole.info(LOG_PREFIX, "Clearing status"); + StatusHandler.clearStatus(getHttpSession()); + + ConfigurationLoader.setConfigurationFile(getPropertiesFSPath() + File.separator + "resourcemanagement.properties"); + return this.getCurrentStatus(); + } + + private HttpSession getHttpSession() { + return this.getThreadLocalRequest().getSession(); + } + + public final void initScopes(final boolean doClean) { + ServerConsole.trace(LOG_PREFIX, "[INIT-SCOPES] initializing scopes from: " + this.getScopeDataPath()); + + // Updates the scopes + try { + ScopeManager.setScopeConfigFile(this.getScopeDataPath()); + if (doClean) { + ScopeManager.clear(); + } + ScopeManager.update(); + } catch (Exception e) { + ServerConsole.error(LOG_PREFIX, "During scope caching", e); + } + + } + + private String getServletFSPath() { + return this.getServletContext().getRealPath("") + File.separator + "WEB-INF"; + } + + private String getPropertiesFSPath() { + return this.getServletContext().getRealPath("") + File.separator + "conf"; + } + + private String getScopeDataPath() { + String startDirectory = getServletFSPath(); + return startDirectory + File.separator + "xml" + File.separator + + ((this.getCurrentStatus().getCredentials() == UserGroup.ADMIN) ? + "scopedata_admin.xml" : + "scopedata.xml"); + } + + private String getXML2HTMLMapping() { + String startDirectory = getServletFSPath(); + return startDirectory + File.separator + "xml" + File.separator + "xmlverbatim.xsl"; + } + + + public final Tuple addResourcesToScope( + final String resType, + final List resourceIDs, + final String scope) + throws Exception { + Assertion checker = new Assertion(); + + CurrentStatus status = this.getCurrentStatus(); + + checker.validate(SupportedOperations.ADD_TO_SCOPE.isAllowed(status.getCredentials()), + new Exception("User not allowed to request this operation")); + checker.validate(resType != null && resType.trim().length() > 0, new Exception("Invalid parameter type")); + checker.validate(resourceIDs != null && resourceIDs.size() > 0, new Exception("Invalid parameter type")); + checker.validate(scope != null && scope.trim().length() > 0, new Exception("Invalid parameter type")); + + AllowedResourceTypes type = AllowedResourceTypes.valueOf(resType); + ScopeBean targetScope = new ScopeBean(scope); + ScopeBean sourceScope = new ScopeBean(status.getCurrentScope()); + + String reportID = ManagementUtils.addToExistingScope(type, + resourceIDs.toArray(new String[]{}), + sourceScope, + targetScope); + + RMReportingLibrary manager = + ResourceFactory.createResourceManager(type).getReportResourceManager(targetScope.toString()); + + String xmlReport = manager.getReport(reportID); + String mappingPath = this.getXML2HTMLMapping(); + String htmlReport = ISClientRequester.XML2HTML(xmlReport, mappingPath); + return new Tuple( + reportID, + resType, + xmlReport, + htmlReport); + } + /** + * REMOVE FROM SCOPE + */ + public final Tuple removeResourcesFromScope( + final String resType, + final List resourceIDs, + final String scope) + throws Exception { + Assertion checker = new Assertion(); + + CurrentStatus status = this.getCurrentStatus(); + + checker.validate(SupportedOperations.ADD_TO_SCOPE.isAllowed(status.getCredentials()), + new Exception("User not allowed to request this operation")); + checker.validate(resType != null && resType.trim().length() > 0, new Exception("Invalid parameter type")); + checker.validate(resourceIDs != null && resourceIDs.size() > 0, new Exception("Invalid parameter type")); + checker.validate(scope != null && scope.trim().length() > 0, new Exception("Invalid parameter type")); + + AllowedResourceTypes type = AllowedResourceTypes.valueOf(resType); + ScopeBean targetScope = new ScopeBean(scope); + ScopeBean sourceScope = new ScopeBean(status.getCurrentScope()); + + String reportID = ManagementUtils.removeFromExistingScope(type, + resourceIDs.toArray(new String[]{}), + sourceScope, + targetScope); + + + RMReportingLibrary manager = + ResourceFactory.createResourceManager(type).getReportResourceManager(targetScope.toString()); + + String xmlReport = manager.getReport(reportID); + String mappingPath = this.getXML2HTMLMapping(); + String htmlReport = ISClientRequester.XML2HTML(xmlReport, mappingPath); + + return new Tuple( + reportID, + resType, + xmlReport, + htmlReport); + } + + public final String deploy(final List ghnsID, final List servicesID) throws Exception { + try { + ScopeBean sourceScope = new ScopeBean(this.getCurrentStatus().getCurrentScope()); + String[] param1 = ghnsID.toArray(new String[0]); + String[] param2 = servicesID.toArray(new String[0]); + return ManagementUtils.deploy(sourceScope, param1, param2); + } catch (Exception e) { + ServerConsole.error(LOG_PREFIX, "During service deployment", e); + throw new Exception(e.getMessage()); + } + } + + public final Tuple checkDeployStatus(final String scope, final String deployID) throws Exception { + if (SupportedOperations.SERVICE_GET_REPORT.isAllowed(this.getCurrentStatus().getCredentials())) { + ScopeBean sourceScope = ScopeManager.getScope(scope); + RMReportingLibrary manager = + ResourceFactory.createResourceManager(AllowedResourceTypes.Service).getReportResourceManager(sourceScope.toString()); + String xmlReport = manager.getReport(deployID); + String mappingPath = this.getXML2HTMLMapping(); + String htmlReport = ISClientRequester.XML2HTML(xmlReport, mappingPath); + return new Tuple(deployID, xmlReport, htmlReport); + } else { + throw new Exception("The current user is not allowed to request the operation"); + } + } + + public final List getAvailableScopes() { + ServerConsole.trace(LOG_PREFIX, "[GET-SCOPES] getting available scopes"); + Vector retval = new Vector(); + try { + Map scopes = ScopeManager.getAvailableScopes(); + for (ScopeBean scope : scopes.values()) + retval.add(scope.toString()); + + return retval; + } catch (Exception e) { + retval.add("/gcube"); + retval.add("/gcube/devsec"); + e.printStackTrace(); + } + + return retval; + } + + public final List getAvailableAddScopes() { + List retval = new Vector(); + try { + ScopeBean currScope = ScopeManager.getScope(this.getCurrentStatus().getCurrentScope()); + List scopes = this.getAvailableScopes(); + for (String scope : scopes) { + if (scope.contains(currScope.toString())) { + retval.add(scope); + } + } + return retval; + } catch (Exception e) { + ServerConsole.error(LOG_PREFIX, e); + } + return null; + } + + public final HashMap> getResourceTypeTree(final String scope) throws Exception { + try { + ScopeBean gscope = new ScopeBean(scope); + HashMap> results = ISClientRequester.getResourcesTree(getCacheManager(this.getCurrentStatus()), gscope); + return results; + } catch (Exception e) { + ServerConsole.error(LOG_PREFIX, "applying resource get", e); + throw e; + } + } + + public final List getRelatedResources(final String type, final String id, final String scope) + { + try { + return ISClientRequester.getRelatedResources( + getCacheManager(this.getCurrentStatus()), + type, + id, + new ScopeBean(scope) + ); + } catch (Exception e) { + ServerConsole.error(LOG_PREFIX, e); + return null; + } + } + + public final List getResourcesByType(final String scope, final String type) + { + try { + return ISClientRequester.getResourcesByType( + getCacheManager(this.getCurrentStatus()), + new ScopeBean(scope), type, null); + } catch (Exception e) { + ServerConsole.error(LOG_PREFIX, e); + return null; + } + } + + public final ResourceDescriptor getGenericResourceDescriptor(final String scope, final String resID) throws Exception { + return this.getDescriptor(ScopeManager.getScope(scope), resID); + } + + private ResourceDescriptor getDescriptor(final ScopeBean scope, final String resID) throws Exception { + + + //set the scope + String currScope = ScopeProvider.instance.get(); + ScopeProvider.instance.set(scope.toString()); + + QueryTemplate isQuery = null; + DiscoveryClient client = client(); + + isQuery = new QueryTemplate(QueryLoader.getQuery(QueryLocation.GET_RESOURCE_BYID)); + + isQuery.addParameter("RES_ID", resID); + isQuery.addParameter("RES_TYPE", ResourceTypeDecorator.GenericResource.name()); + + List results = client.submit(isQuery); + + if (results != null && results.size() > 0) { + ResourceDescriptor retval = new ResourceDescriptor(); + + List currValue = null; + DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); + Node node = docBuilder.parse(new InputSource(new StringReader(results.get(0)))).getDocumentElement(); + XPathHelper helper = new XPathHelper(node); + + currValue = helper.evaluate("/Resource/ID/text()"); + if (currValue != null && currValue.size() > 0) { + retval.setID(currValue.get(0)); + } + currValue = helper.evaluate("/Resource/Profile/Name/text()"); + if (currValue != null && currValue.size() > 0) { + retval.setName(currValue.get(0)); + } + + currValue = helper.evaluate("/Resource/Profile/Body/node()"); + if (currValue != null && currValue.size() > 0) { + StringBuilder bodytext = new StringBuilder(); + for (String line : currValue) { + bodytext.append(line); + } + retval.set("Body", bodytext.toString().trim()); + } else { + retval.set("Body", ""); + } + + + currValue = helper.evaluate("/Resource/Profile/Description/text()"); + if (currValue != null && currValue.size() > 0) { + retval.set("Description", currValue.get(0)); + } else { + retval.set("Description", ""); + } + + + currValue = helper.evaluate("/Resource/Profile/SecondaryType/text()"); + if (currValue != null && currValue.size() > 0) { + retval.set("SecondaryType", currValue.get(0)); + } else { + retval.set("SecondaryType", ""); + } + + return retval; + } + return null; + } + + public final List getResourcesModel(final String scope, final String type, final String subType, final List> additionalMaps) + throws Exception { + if (scope == null || type == null) { + return null; + } + return ISClientRequester.getResourceModels(new ScopeBean(scope), type, subType, additionalMaps); + } + + + public final List getWSResources(final String scope) { + try { + return ISClientRequester.getWSResources(new ScopeBean(scope)); + } catch (Exception e) { + ServerConsole.error(LOG_PREFIX, e); + return null; + } + } + + public final List getResourcesBySubType(final String scope, final String type, final String subtype) { + try { + return ISClientRequester.getResourcesByType( + getCacheManager(this.getCurrentStatus()), + new ScopeBean(scope), type, subtype); + } catch (Exception e) { + ServerConsole.error(LOG_PREFIX, e); + return null; + } + } + + public final CompleteResourceProfile getResourceByID(final String scope, final String type, final String resID) { + try { + CompleteResourceProfile profile = ISClientRequester.getResourceByID(this.getXML2HTMLMapping(), new ScopeBean(scope), type, resID); + System.out.println("****\n\n\n CompleteResourceProfile getResourceByID(final String scope, final String type, final String resID) *****"); + System.out.println("****CompleteResourceProfile getResourceByID("+scope+","+type+","+resID+") *****\n\n"); + return profile; + } catch (Exception e) { + ServerConsole.error(LOG_PREFIX, e); + return null; + } + + } + + public final String createGenericResource( + final String ID, + final String name, + final String description, + final String body, + final String subType) + throws Exception { + // Check permissions + Assertion checker = new Assertion(); + checker.validate( + SupportedOperations.GENERIC_RESOURCE_CREATE.isAllowed(this.getCurrentStatus().getCredentials()), + new InvalidPermissionsException("The user is not allowed to execute the following operation")); + + return GenericResourceManager.create( + ID, + new ScopeBean(this.getCurrentStatus().getCurrentScope()), + name, + description, + body, + subType); + } + + public final void updateGenericResource( + final String ID, + final String name, + final String description, + final String body, + final String subType) + throws Exception { + // Check permissions + Assertion checker = new Assertion(); + checker.validate( + SupportedOperations.GENERIC_RESOURCE_EDIT.isAllowed(this.getCurrentStatus().getCredentials()), + new InvalidPermissionsException("The user is not allowed to execute the following operation")); + + ScopeBean sourceScope = new ScopeBean(this.getCurrentStatus().getCurrentScope()); + GenericResourceManager resource = new GenericResourceManager(ID); + resource.update(name, description, body, subType, sourceScope); + } + + public final void setCurrentScope(final String scope) { + this.getCurrentStatus().setCurrentScope(scope); + } + + public final Map getGenericResourcePlugins() throws Exception { + return ISClientRequester.getGenericResourcePlugins(ScopeManager.getScope(this.getCurrentStatus().getCurrentScope())); + } + + private CurrentStatus getCurrentStatus() { + return StatusHandler.getStatus(this.getHttpSession()); + } + + private CacheManager getCacheManager(CurrentStatus status) { + CacheManager cm = new CacheManager(); + cm.setUseCache(status.useCache()); + return cm; + } + /*********************************************************** + * RESOURCE OPERATIONS + * @throws InvalidParameterException + **********************************************************/ + public final void doOperation( + final SupportedOperations opCode, + final String scope, + final List resources) + throws Exception { + try { + ResourceCommands.doOperation( + this.getCurrentStatus(), + opCode, scope, resources); + } catch (final Exception e) { + ServerConsole.error(LOG_PREFIX, e); + throw new Exception(e.getMessage()); + } + } + + @Override + public boolean enableSuperUserMode(String code) { + String ipAddressCaller = getThreadLocalRequest().getRemoteAddr(); + boolean matched = BCrypt.checkpw(code, Configuration.CODE); + if (matched) + ServerConsole.info(LOG_PREFIX, "AUTHORISED SUPER USER MODE, IP: " + ipAddressCaller); + else + ServerConsole.info(LOG_PREFIX, "FAILED ATTEMPT SUPER USER MODE FROM IP: " + ipAddressCaller); + return matched; + } + + +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/server/gcube/services/StatusHandler.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/server/gcube/services/StatusHandler.java new file mode 100644 index 0000000..54ab46c --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/server/gcube/services/StatusHandler.java @@ -0,0 +1,162 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: StatusHandler.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.server.gcube.services; + +import java.util.List; + +import javax.servlet.http.HttpSession; + +import org.gcube.application.framework.core.session.ASLSession; +import org.gcube.application.framework.core.session.SessionManager; +import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper; +import org.gcube.portlets.admin.resourcemanagement.server.gcube.services.configuration.ConfigurationLoader; +import org.gcube.resourcemanagement.support.client.utils.CurrentStatus; +import org.gcube.resourcemanagement.support.server.utils.ServerConsole; +import org.gcube.resourcemanagement.support.shared.types.RunningMode; +import org.gcube.resourcemanagement.support.shared.types.UserGroup; +import org.gcube.vomanagement.usermanagement.RoleManager; +import org.gcube.vomanagement.usermanagement.UserManager; +import org.gcube.vomanagement.usermanagement.impl.LiferayRoleManager; +import org.gcube.vomanagement.usermanagement.impl.LiferayUserManager; +import org.gcube.vomanagement.usermanagement.model.GCubeRole; +import org.gcube.vomanagement.usermanagement.model.GCubeUser; + +/** + * @author Daniele Strollo (ISTI-CNR) + * + */ +public class StatusHandler { + private static final String STATUS_KEY = "current_status"; + public static final String USER_EMAIL_KEY = "theusermail"; + private static final String LOG_PREFIX = "[StatusHandler]"; + private static final String ADMIN_ROLE = "VO-Admin"; + + public static final void setStatus(final HttpSession session, final CurrentStatus status) { + session.setAttribute(STATUS_KEY, status); + } + + public static final void clearStatus(final HttpSession session) { + if (session != null && session.getAttribute(STATUS_KEY) != null) { + session.removeAttribute(STATUS_KEY); + } + } + + /** + * Initializes the status if running in portal mode otherwise returns null. + * @param session + * @return + */ + private static CurrentStatus initStatus(final HttpSession session) { + if (session == null || session.getAttribute(ScopeHelper.USERNAME_ATTRIBUTE) == null) { + return null; + } + + String username = session.getAttribute(ScopeHelper.USERNAME_ATTRIBUTE).toString(); + + // inside portal + if (username != null) { + ServerConsole.info(LOG_PREFIX, "Running inside portal... [OK]"); + CurrentStatus status = new CurrentStatus(); + status.setCurrentUser(username); + status.setCredentials(UserGroup.USER); + status.setRunningMode(RunningMode.PORTAL); + ASLSession aslSession = SessionManager.getInstance().getASLSession(session.getId(), username); + ServerConsole.error(LOG_PREFIX, "The portal scope is [" + aslSession.getScopeName() + "]"); + + status.setCurrentScope(aslSession.getScopeName()); + + aslSession.getGroupId(); + RoleManager rman = new LiferayRoleManager(); + UserManager uman = new LiferayUserManager(); + + + try { + List roles = null; + + // Gets the user email. If not provided the default one will be used. + // The mail will be store inside the session. + GCubeUser umodel = uman.getUserByUsername(username); + session.setAttribute(USER_EMAIL_KEY, umodel.getEmail()); + long groupId = aslSession.getGroupId(); + roles = rman.listRolesByUserAndGroup(groupId, uman.getUserByUsername(username).getUserId()); + for (GCubeRole role : roles) { + if (role.getRoleName().equals(ADMIN_ROLE)) { + status.setCredentials(UserGroup.ADMIN); + } + } + } catch (Exception e) { + ServerConsole.error(LOG_PREFIX, e); + } + return status; + } + // not running in a portal + return null; + } + + public static final CurrentStatus getStatus(final HttpSession session) { + // CREATING THE STATUS + // Status initialization + if (session.getAttribute(STATUS_KEY) == null) { + CurrentStatus status = initStatus(session); + + // Not in portal mode + if (status == null) { + ServerConsole.info(LOG_PREFIX, "Running outside portal... [OK]"); + status = new CurrentStatus(); + + // LOADS THE DEFAULTS + try { + String runningMode = ConfigurationLoader.getProperty("RUNNING_MODE"); + status.setRunningMode(RunningMode.valueOf(runningMode)); + ServerConsole.debug(LOG_PREFIX, "Setting RUNNING_MODE to: " + status.getRunningMode()); + } catch (Exception e) { + ServerConsole.error(LOG_PREFIX, "Loading defaults", e); + } + try { + String credentials = ConfigurationLoader.getProperty("USER_CREDENTIALS"); + status.setCredentials(UserGroup.valueOf(credentials)); + ServerConsole.debug(LOG_PREFIX, "Setting USER_CREDENTIALS to: " + status.getCredentials()); + } catch (Exception e) { + ServerConsole.error(LOG_PREFIX, "Loading defaults", e); + } + try { + status.setCurrentUser(ConfigurationLoader.getProperty("DEFAULT_USER")); + ServerConsole.debug(LOG_PREFIX, "Setting DEFAULT_USER to: " + status.getCurrentUser()); + } catch (Exception e) { + ServerConsole.error(LOG_PREFIX, "Loading defaults", e); + } + try { + status.setCurrentScope(ConfigurationLoader.getProperty("DEFAULT_SCOPE")); + ServerConsole.debug(LOG_PREFIX, "Setting DEFAULT_SCOPE to: " + status.getCurrentScope()); + } catch (Exception e) { + ServerConsole.error(LOG_PREFIX, "Loading defaults", e); + } + try { + if (ConfigurationLoader.getProperty("LIST_GHN_STARTUP").equalsIgnoreCase("NO")) + status.setLoadGHNatStartup(false); + ServerConsole.debug(LOG_PREFIX, "*********************\n\n\nSetting LIST_GHN_STARTUP to: " + status.isLoadGHNatStartup()); + } catch (Exception e) { + ServerConsole.error(LOG_PREFIX, "Loading defaults", e); + } + } + session.setAttribute(STATUS_KEY, status); + return status; + } else { + return (CurrentStatus) session.getAttribute(STATUS_KEY); + } + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/server/gcube/services/configuration/ConfigurationLoader.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/server/gcube/services/configuration/ConfigurationLoader.java new file mode 100644 index 0000000..f899294 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/server/gcube/services/configuration/ConfigurationLoader.java @@ -0,0 +1,111 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: ConfigurationLoader.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.server.gcube.services.configuration; + +import java.io.FileInputStream; +import java.io.IOException; +import java.lang.reflect.Field; +import java.util.Properties; + +import org.gcube.resourcemanagement.support.server.utils.ServerConsole; + +/** + * @author Daniele Strollo (ISTI-CNR) + * + */ +public final class ConfigurationLoader { + private static final String DEFAULT_PATH = "war/conf/resourcemanagement.properties"; + private static final ConfigurationLoader singleton = new ConfigurationLoader(DEFAULT_PATH); + private static final String LOG_PREFIX = "[CONF_LOADER]"; + private Properties properties = null; + private ConfigurationLoader(final String confFile) { + if (this.properties == null) { + this.properties = this.load(confFile); + } + } + + public static void setConfigurationFile(final String filename) { + singleton.properties = singleton.load(filename); + } + + /** + * Load a properties file from the classpath + * + * @param propsName + * @return Properties + * @throws Exception + */ + private Properties load(final String propsName) { + ServerConsole.debug(LOG_PREFIX, "[CONF] loading configuration in file: " + propsName); + + FileInputStream fis = null; + Properties props = new Properties(); + try { + fis = new FileInputStream(propsName); + props.load(fis); + } catch (Exception e) { + ServerConsole.debug(LOG_PREFIX, "[CONF] cannot find configuration file: " + propsName + " Trying in standalone mode."); + try { + fis = new FileInputStream(DEFAULT_PATH); + } catch (Exception e1) { + ServerConsole.debug(LOG_PREFIX, "[CONF] cannot find local standalone configuration file"); + } + } finally { + try { + if (fis != null) { + fis.close(); + } + } catch (IOException e) { + } + } + return props; + } + + protected static ConfigurationLoader getInstance() { + return ConfigurationLoader.singleton; + } + + public static Properties getProperties() { + return getInstance().properties; + } + + public static String getProperty(final String key) throws Exception { + // Getting the default value + try { + Class c = Class.forName(DefaultConfiguration.class.getName()); + Field field = c.getField(key); + String defaultValue = field.get(null).toString(); + if (getInstance().properties == null) { + return defaultValue; + } + return getInstance().properties.getProperty( + key.trim(), + defaultValue); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + public static int getIntProperty(final String key) throws Exception { + return Integer.parseInt(getProperty(key)); + } + + public static boolean getBoolProperty(final String key) throws Exception { + return Boolean.parseBoolean(getProperty(key)); + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/server/gcube/services/configuration/DefaultConfiguration.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/server/gcube/services/configuration/DefaultConfiguration.java new file mode 100644 index 0000000..615ce52 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/server/gcube/services/configuration/DefaultConfiguration.java @@ -0,0 +1,62 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: DefaultConfiguration.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.server.gcube.services.configuration; + +/** + * @author Daniele Strollo (ISTI-CNR) + * + */ +public class DefaultConfiguration { + + /** + * The user and its credentials + * Possible values for credentials: + * [USER,ADMIN,DEBUG] + * USER_CREDENTIALS = DEBUG + * Defines the modality in which the portlet is running + * possible values [STANDALONE,PORTAL,NOTDEFINED] + */ + public static final String USER_CREDENTIALS = "USER"; + public static final String RUNNING_MODE = "STANDALONE"; + public static final String DEFAULT_USER = "daniele.strollo"; + + /** + * The scope that will be used as default + */ + public static final String DEFAULT_SCOPE = "/d4science.research-infrastructures.eu"; + + /* + * The target of update notification (if in singleton mode). + * Mails MUST be separated by ";" + */ + public static final String USERMAIL_TO = "daniele.strollo@gmail.com"; + // USERMAIL_CC = Not supported due to old implementation of mail in liferay + + + /***************************************** + * PROPERTIES FOR THE SWEEPER + *****************************************/ + /* + * The max number of minutes from last profile update to consider a GHN alive. + */ + public static final String LIVE_GHN_MAX_MINUTES = "40"; + + /* + * The max number of minutes from last profile update to consider a GHN alive. + */ + public static final String LIST_GHN_STARTUP = "YES"; +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/server/portlet/ResourceManagementPortlet.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/server/portlet/ResourceManagementPortlet.java new file mode 100644 index 0000000..94e5156 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/server/portlet/ResourceManagementPortlet.java @@ -0,0 +1,43 @@ + +package org.gcube.portlets.admin.resourcemanagement.server.portlet; + +import javax.portlet.GenericPortlet; +import javax.portlet.ActionRequest; +import javax.portlet.RenderRequest; +import javax.portlet.ActionResponse; +import javax.portlet.RenderResponse; +import javax.portlet.PortletException; +import java.io.IOException; +import javax.portlet.PortletRequestDispatcher; +import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper; + +/** + * ResourceManagementPortlet Portlet Class + * @author massi + */ +public class ResourceManagementPortlet extends GenericPortlet { + // private static final String LOG_PREFIX = "[ResourceManagementPortlet]"; + + public final void doView(final RenderRequest request, final RenderResponse response) + throws PortletException, IOException { + + response.setContentType("text/html"); + try { + ScopeHelper.setContext(request); // <-- Static method which sets the username in the session and the scope depending on the context automatically + } + catch (Exception e) { + System.out.println("Could not initialize portlet context"); + } + PortletRequestDispatcher dispatcher = + getPortletContext().getRequestDispatcher("/WEB-INF/jsp/ResourceManagementPortlet_view.jsp"); + dispatcher.include(request, response); + + } + + + public void processAction(final ActionRequest request, final ActionResponse response) + throws PortletException, IOException { + // nop - done by massi + } + +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/shared/exceptions/WidgetNotRegistered.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/shared/exceptions/WidgetNotRegistered.java new file mode 100644 index 0000000..e70f02e --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/shared/exceptions/WidgetNotRegistered.java @@ -0,0 +1,43 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: WidgetNotRegistered.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.shared.exceptions; + +import com.google.gwt.user.client.rpc.IsSerializable; + +/** + * @author Daniele Strollo (ISTI-CNR) + * + */ +public class WidgetNotRegistered extends Exception implements IsSerializable { + private static final long serialVersionUID = -4492836891522593176L; + + public WidgetNotRegistered() { + super(); + } + + public WidgetNotRegistered(String message, Throwable cause) { + super(message, cause); + } + + public WidgetNotRegistered(String message) { + super(message); + } + + public WidgetNotRegistered(Throwable cause) { + super(cause); + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/shared/utils/BCrypt.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/shared/utils/BCrypt.java new file mode 100755 index 0000000..45dc379 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/shared/utils/BCrypt.java @@ -0,0 +1,752 @@ +package org.gcube.portlets.admin.resourcemanagement.shared.utils; + +// Copyright (c) 2006 Damien Miller +// +// Permission to use, copy, modify, and distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +import java.io.UnsupportedEncodingException; + +import java.security.SecureRandom; + +/** + * BCrypt implements OpenBSD-style Blowfish password hashing using + * the scheme described in "A Future-Adaptable Password Scheme" by + * Niels Provos and David Mazieres. + *

+ * This password hashing system tries to thwart off-line password + * cracking using a computationally-intensive hashing algorithm, + * based on Bruce Schneier's Blowfish cipher. The work factor of + * the algorithm is parameterised, so it can be increased as + * computers get faster. + *

+ * Usage is really simple. To hash a password for the first time, + * call the hashpw method with a random salt, like this: + *

+ * + * String pw_hash = BCrypt.hashpw(plain_password, BCrypt.gensalt());
+ *
+ *

+ * To check whether a plaintext password matches one that has been + * hashed previously, use the checkpw method: + *

+ * + * if (BCrypt.checkpw(candidate_password, stored_hash))
+ *     System.out.println("It matches");
+ * else
+ *     System.out.println("It does not match");
+ *
+ *

+ * The gensalt() method takes an optional parameter (log_rounds) + * that determines the computational complexity of the hashing: + *

+ * + * String strong_salt = BCrypt.gensalt(10)
+ * String stronger_salt = BCrypt.gensalt(12)
+ *
+ *

+ * The amount of work increases exponentially (2**log_rounds), so + * each increment is twice as much work. The default log_rounds is + * 10, and the valid range is 4 to 31. + * + * @author Damien Miller + * @version 0.2 + */ +public class BCrypt { + // BCrypt parameters + private static final int GENSALT_DEFAULT_LOG2_ROUNDS = 10; + private static final int BCRYPT_SALT_LEN = 16; + + // Blowfish parameters + private static final int BLOWFISH_NUM_ROUNDS = 16; + + // Initial contents of key schedule + private static final int P_orig[] = { + 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, + 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, + 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, + 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, + 0x9216d5d9, 0x8979fb1b + }; + private static final int S_orig[] = { + 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, + 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, + 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, + 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, + 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, + 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, + 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, + 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e, + 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, + 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, + 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, + 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, + 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, + 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677, + 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, + 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, + 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88, + 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, + 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, + 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0, + 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, + 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, + 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88, + 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, + 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, + 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, + 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, + 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, + 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba, + 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, + 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, + 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09, + 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, + 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, + 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279, + 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, + 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, + 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82, + 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, + 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, + 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, + 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, + 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, + 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8, + 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, + 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, + 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, + 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, + 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, + 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1, + 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, + 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, + 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477, + 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, + 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, + 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, + 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, + 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, + 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41, + 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, + 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, + 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915, + 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, + 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a, + 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, + 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, + 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, + 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, + 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6, + 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, + 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, + 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, + 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, + 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, + 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff, + 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, + 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, + 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7, + 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, + 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, + 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, + 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, + 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, + 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87, + 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, + 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, + 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16, + 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, + 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, + 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509, + 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, + 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, + 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f, + 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, + 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, + 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, + 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, + 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, + 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802, + 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, + 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, + 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, + 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, + 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, + 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50, + 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, + 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, + 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281, + 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, + 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, + 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, + 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, + 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, + 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0, + 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, + 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, + 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, + 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, + 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, + 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061, + 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, + 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, + 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735, + 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, + 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, + 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, + 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, + 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7, + 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, + 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, + 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, + 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, + 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, + 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, + 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, + 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, + 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, + 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, + 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, + 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, + 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, + 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, + 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, + 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, + 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, + 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, + 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, + 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, + 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, + 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, + 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, + 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, + 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, + 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, + 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, + 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, + 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, + 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, + 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, + 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, + 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, + 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, + 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, + 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, + 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, + 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, + 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, + 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, + 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, + 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, + 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, + 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, + 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, + 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, + 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, + 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, + 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, + 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, + 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, + 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, + 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, + 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, + 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, + 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, + 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, + 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, + 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, + 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, + 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, + 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, + 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, + 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0, + 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, + 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe, + 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, + 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, + 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8, + 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, + 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, + 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22, + 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, + 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, + 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9, + 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, + 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, + 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, + 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, + 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, + 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b, + 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, + 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, + 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd, + 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, + 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, + 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb, + 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, + 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, + 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32, + 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, + 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, + 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, + 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, + 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, + 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47, + 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, + 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, + 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84, + 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, + 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, + 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd, + 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, + 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, + 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38, + 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, + 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, + 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, + 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, + 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, + 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964, + 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, + 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, + 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, + 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, + 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, + 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02, + 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, + 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, + 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a, + 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, + 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, + 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, + 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, + 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, + 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9, + 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, + 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6 + }; + + // bcrypt IV: "OrpheanBeholderScryDoubt" + static private final int bf_crypt_ciphertext[] = { + 0x4f727068, 0x65616e42, 0x65686f6c, + 0x64657253, 0x63727944, 0x6f756274 + }; + + // Table for Base64 encoding + static private final char base64_code[] = { + '.', '/', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', + 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', + 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', + 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', + 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', + '6', '7', '8', '9' + }; + + // Table for Base64 decoding + static private final byte index_64[] = { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 0, 1, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, + -1, -1, -1, -1, -1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + -1, -1, -1, -1, -1, -1, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, -1, -1, -1, -1, -1 + }; + + // Expanded Blowfish key + private int P[]; + private int S[]; + + /** + * Encode a byte array using bcrypt's slightly-modified base64 + * encoding scheme. Note that this is *not* compatible with + * the standard MIME-base64 encoding. + * + * @param d the byte array to encode + * @param len the number of bytes to encode + * @return base64-encoded string + * @exception IllegalArgumentException if the length is invalid + */ + private static String encode_base64(byte d[], int len) + throws IllegalArgumentException { + int off = 0; + StringBuffer rs = new StringBuffer(); + int c1, c2; + + if (len <= 0 || len > d.length) + throw new IllegalArgumentException ("Invalid len"); + + while (off < len) { + c1 = d[off++] & 0xff; + rs.append(base64_code[(c1 >> 2) & 0x3f]); + c1 = (c1 & 0x03) << 4; + if (off >= len) { + rs.append(base64_code[c1 & 0x3f]); + break; + } + c2 = d[off++] & 0xff; + c1 |= (c2 >> 4) & 0x0f; + rs.append(base64_code[c1 & 0x3f]); + c1 = (c2 & 0x0f) << 2; + if (off >= len) { + rs.append(base64_code[c1 & 0x3f]); + break; + } + c2 = d[off++] & 0xff; + c1 |= (c2 >> 6) & 0x03; + rs.append(base64_code[c1 & 0x3f]); + rs.append(base64_code[c2 & 0x3f]); + } + return rs.toString(); + } + + /** + * Look up the 3 bits base64-encoded by the specified character, + * range-checking againt conversion table + * @param x the base64-encoded value + * @return the decoded value of x + */ + private static byte char64(char x) { + if ((int)x < 0 || (int)x > index_64.length) + return -1; + return index_64[(int)x]; + } + + /** + * Decode a string encoded using bcrypt's base64 scheme to a + * byte array. Note that this is *not* compatible with + * the standard MIME-base64 encoding. + * @param s the string to decode + * @param maxolen the maximum number of bytes to decode + * @return an array containing the decoded bytes + * @throws IllegalArgumentException if maxolen is invalid + */ + private static byte[] decode_base64(String s, int maxolen) + throws IllegalArgumentException { + StringBuffer rs = new StringBuffer(); + int off = 0, slen = s.length(), olen = 0; + byte ret[]; + byte c1, c2, c3, c4, o; + + if (maxolen <= 0) + throw new IllegalArgumentException ("Invalid maxolen"); + + while (off < slen - 1 && olen < maxolen) { + c1 = char64(s.charAt(off++)); + c2 = char64(s.charAt(off++)); + if (c1 == -1 || c2 == -1) + break; + o = (byte)(c1 << 2); + o |= (c2 & 0x30) >> 4; + rs.append((char)o); + if (++olen >= maxolen || off >= slen) + break; + c3 = char64(s.charAt(off++)); + if (c3 == -1) + break; + o = (byte)((c2 & 0x0f) << 4); + o |= (c3 & 0x3c) >> 2; + rs.append((char)o); + if (++olen >= maxolen || off >= slen) + break; + c4 = char64(s.charAt(off++)); + o = (byte)((c3 & 0x03) << 6); + o |= c4; + rs.append((char)o); + ++olen; + } + + ret = new byte[olen]; + for (off = 0; off < olen; off++) + ret[off] = (byte)rs.charAt(off); + return ret; + } + + /** + * Blowfish encipher a single 64-bit block encoded as + * two 32-bit halves + * @param lr an array containing the two 32-bit half blocks + * @param off the position in the array of the blocks + */ + private final void encipher(int lr[], int off) { + int i, n, l = lr[off], r = lr[off + 1]; + + l ^= P[0]; + for (i = 0; i <= BLOWFISH_NUM_ROUNDS - 2;) { + // Feistel substitution on left word + n = S[(l >> 24) & 0xff]; + n += S[0x100 | ((l >> 16) & 0xff)]; + n ^= S[0x200 | ((l >> 8) & 0xff)]; + n += S[0x300 | (l & 0xff)]; + r ^= n ^ P[++i]; + + // Feistel substitution on right word + n = S[(r >> 24) & 0xff]; + n += S[0x100 | ((r >> 16) & 0xff)]; + n ^= S[0x200 | ((r >> 8) & 0xff)]; + n += S[0x300 | (r & 0xff)]; + l ^= n ^ P[++i]; + } + lr[off] = r ^ P[BLOWFISH_NUM_ROUNDS + 1]; + lr[off + 1] = l; + } + + /** + * Cycically extract a word of key material + * @param data the string to extract the data from + * @param offp a "pointer" (as a one-entry array) to the + * current offset into data + * @return the next word of material from data + */ + private static int streamtoword(byte data[], int offp[]) { + int i; + int word = 0; + int off = offp[0]; + + for (i = 0; i < 4; i++) { + word = (word << 8) | (data[off] & 0xff); + off = (off + 1) % data.length; + } + + offp[0] = off; + return word; + } + + /** + * Initialise the Blowfish key schedule + */ + private void init_key() { + P = (int[])P_orig.clone(); + S = (int[])S_orig.clone(); + } + + /** + * Key the Blowfish cipher + * @param key an array containing the key + */ + private void key(byte key[]) { + int i; + int koffp[] = { 0 }; + int lr[] = { 0, 0 }; + int plen = P.length, slen = S.length; + + for (i = 0; i < plen; i++) + P[i] = P[i] ^ streamtoword(key, koffp); + + for (i = 0; i < plen; i += 2) { + encipher(lr, 0); + P[i] = lr[0]; + P[i + 1] = lr[1]; + } + + for (i = 0; i < slen; i += 2) { + encipher(lr, 0); + S[i] = lr[0]; + S[i + 1] = lr[1]; + } + } + + /** + * Perform the "enhanced key schedule" step described by + * Provos and Mazieres in "A Future-Adaptable Password Scheme" + * http://www.openbsd.org/papers/bcrypt-paper.ps + * @param data salt information + * @param key password information + */ + private void ekskey(byte data[], byte key[]) { + int i; + int koffp[] = { 0 }, doffp[] = { 0 }; + int lr[] = { 0, 0 }; + int plen = P.length, slen = S.length; + + for (i = 0; i < plen; i++) + P[i] = P[i] ^ streamtoword(key, koffp); + + for (i = 0; i < plen; i += 2) { + lr[0] ^= streamtoword(data, doffp); + lr[1] ^= streamtoword(data, doffp); + encipher(lr, 0); + P[i] = lr[0]; + P[i + 1] = lr[1]; + } + + for (i = 0; i < slen; i += 2) { + lr[0] ^= streamtoword(data, doffp); + lr[1] ^= streamtoword(data, doffp); + encipher(lr, 0); + S[i] = lr[0]; + S[i + 1] = lr[1]; + } + } + + /** + * Perform the central password hashing step in the + * bcrypt scheme + * @param password the password to hash + * @param salt the binary salt to hash with the password + * @param log_rounds the binary logarithm of the number + * of rounds of hashing to apply + * @return an array containing the binary hashed password + */ + private byte[] crypt_raw(byte password[], byte salt[], int log_rounds) { + int rounds, i, j; + int cdata[] = (int[])bf_crypt_ciphertext.clone(); + int clen = cdata.length; + byte ret[]; + + if (log_rounds < 4 || log_rounds > 31) + throw new IllegalArgumentException ("Bad number of rounds"); + rounds = 1 << log_rounds; + if (salt.length != BCRYPT_SALT_LEN) + throw new IllegalArgumentException ("Bad salt length"); + + init_key(); + ekskey(salt, password); + for (i = 0; i < rounds; i++) { + key(password); + key(salt); + } + + for (i = 0; i < 64; i++) { + for (j = 0; j < (clen >> 1); j++) + encipher(cdata, j << 1); + } + + ret = new byte[clen * 4]; + for (i = 0, j = 0; i < clen; i++) { + ret[j++] = (byte)((cdata[i] >> 24) & 0xff); + ret[j++] = (byte)((cdata[i] >> 16) & 0xff); + ret[j++] = (byte)((cdata[i] >> 8) & 0xff); + ret[j++] = (byte)(cdata[i] & 0xff); + } + return ret; + } + + /** + * Hash a password using the OpenBSD bcrypt scheme + * @param password the password to hash + * @param salt the salt to hash with (perhaps generated + * using BCrypt.gensalt) + * @return the hashed password + */ + public static String hashpw(String password, String salt) { + BCrypt B; + String real_salt; + byte passwordb[], saltb[], hashed[]; + char minor = (char)0; + int rounds, off = 0; + StringBuffer rs = new StringBuffer(); + + if (salt.charAt(0) != '$' || salt.charAt(1) != '2') + throw new IllegalArgumentException ("Invalid salt version"); + if (salt.charAt(2) == '$') + off = 3; + else { + minor = salt.charAt(2); + if (minor != 'a' || salt.charAt(3) != '$') + throw new IllegalArgumentException ("Invalid salt revision"); + off = 4; + } + + // Extract number of rounds + if (salt.charAt(off + 2) > '$') + throw new IllegalArgumentException ("Missing salt rounds"); + rounds = Integer.parseInt(salt.substring(off, off + 2)); + + real_salt = salt.substring(off + 3, off + 25); + try { + passwordb = (password + (minor >= 'a' ? "\000" : "")).getBytes("UTF-8"); + } catch (UnsupportedEncodingException uee) { + throw new AssertionError("UTF-8 is not supported"); + } + + saltb = decode_base64(real_salt, BCRYPT_SALT_LEN); + + B = new BCrypt(); + hashed = B.crypt_raw(passwordb, saltb, rounds); + + rs.append("$2"); + if (minor >= 'a') + rs.append(minor); + rs.append("$"); + if (rounds < 10) + rs.append("0"); + rs.append(Integer.toString(rounds)); + rs.append("$"); + rs.append(encode_base64(saltb, saltb.length)); + rs.append(encode_base64(hashed, + bf_crypt_ciphertext.length * 4 - 1)); + return rs.toString(); + } + + /** + * Generate a salt for use with the BCrypt.hashpw() method + * @param log_rounds the log2 of the number of rounds of + * hashing to apply - the work factor therefore increases as + * 2**log_rounds. + * @param random an instance of SecureRandom to use + * @return an encoded salt value + */ + public static String gensalt(int log_rounds, SecureRandom random) { + StringBuffer rs = new StringBuffer(); + byte rnd[] = new byte[BCRYPT_SALT_LEN]; + + random.nextBytes(rnd); + + rs.append("$2a$"); + if (log_rounds < 10) + rs.append("0"); + rs.append(Integer.toString(log_rounds)); + rs.append("$"); + rs.append(encode_base64(rnd, rnd.length)); + return rs.toString(); + } + + /** + * Generate a salt for use with the BCrypt.hashpw() method + * @param log_rounds the log2 of the number of rounds of + * hashing to apply - the work factor therefore increases as + * 2**log_rounds. + * @return an encoded salt value + */ + public static String gensalt(int log_rounds) { + return gensalt(log_rounds, new SecureRandom()); + } + + /** + * Generate a salt for use with the BCrypt.hashpw() method, + * selecting a reasonable default for the number of hashing + * rounds to apply + * @return an encoded salt value + */ + public static String gensalt() { + return gensalt(GENSALT_DEFAULT_LOG2_ROUNDS); + } + + /** + * Check that a plaintext password matches a previously hashed + * one + * @param plaintext the plaintext password to verify + * @param hashed the previously-hashed password + * @return true if the passwords match, false otherwise + */ + public static boolean checkpw(String plaintext, String hashed) { + return (hashed.compareTo(hashpw(plaintext, hashed)) == 0); + } +} diff --git a/src/main/java/org/gcube/portlets/admin/resourcemanagement/shared/utils/XMLUtil.java b/src/main/java/org/gcube/portlets/admin/resourcemanagement/shared/utils/XMLUtil.java new file mode 100644 index 0000000..4b2f6a6 --- /dev/null +++ b/src/main/java/org/gcube/portlets/admin/resourcemanagement/shared/utils/XMLUtil.java @@ -0,0 +1,185 @@ +/**************************************************************************** + * This software is part of the gCube Project. + * Site: http://www.gcube-system.org/ + **************************************************************************** + * The gCube/gCore software is licensed as Free Open Source software + * conveying to the EUPL (http://ec.europa.eu/idabc/eupl). + * The software and documentation is provided by its authors/distributors + * "as is" and no expressed or + * implied warranty is given for its use, quality or fitness for a + * particular case. + **************************************************************************** + * Filename: XMLUtil.java + **************************************************************************** + * @author Daniele Strollo + ***************************************************************************/ + +package org.gcube.portlets.admin.resourcemanagement.shared.utils; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.gcube.resourcemanagement.support.shared.types.datamodel.AtomicTreeNode; + + + +import com.google.gwt.xml.client.Document; +import com.google.gwt.xml.client.Element; +import com.google.gwt.xml.client.NamedNodeMap; +import com.google.gwt.xml.client.Node; +import com.google.gwt.xml.client.NodeList; +import com.google.gwt.xml.client.XMLParser; + +/** + * @author Daniele Strollo (ISTI-CNR) + * + */ + +public class XMLUtil { + + public static AtomicTreeNode XMLToTree(final String xml, final String rootName) + throws Exception { + AtomicTreeNode root = null; + Document doc = XMLParser.parse(xml); + String rootTag = rootName; + root = elementToNode((com.google.gwt.xml.client.Element) doc.getElementsByTagName(rootTag).item(0)); + return root; + } + + private static AtomicTreeNode elementToNode(final com.google.gwt.xml.client.Element el) throws Exception { + if (el == null) { + throw new Exception("Invalid Profile"); + } + StringBuffer value = new StringBuffer(XMLUtil.getTextContent(el).trim()); + + if (el.hasAttributes()) { + NamedNodeMap attr = el.getAttributes(); + String attrName = null; + String attrVal = null; + for (int i = 0; i < attr.getLength(); i++) { + attrName = attr.item(i).getNodeName(); + attrVal = attr.getNamedItem(attrName).getNodeValue(); + value.append(attrName + " = " + attrVal + "; "); + } + } else { + if (value != null && value.length() != 0) { + value = new StringBuffer("value = " + value); + } + } + + String tagName = el.getTagName() + ((value.length() != 0) ? " [" + value + "]" : ""); + AtomicTreeNode node = new AtomicTreeNode(tagName); + Iterator childrenIterator = XMLUtil.getElementChildren(el).iterator(); + while (childrenIterator.hasNext()) { + node.add(elementToNode(childrenIterator.next())); + } + return node; + } + + + public static Element getFirstElementChild(final Element parent) { + if (parent == null) { + return null; + } + + Node current = parent.getFirstChild(); + while (current != null) { + if (current.getNodeType() == Node.ELEMENT_NODE) { + Element elem = (Element) current; + return elem; + } + current = current.getNextSibling(); + } + return null; + } + + + public static Element getFirstElementChild(final Element parent, final String tagName) { + if (parent == null || tagName == null) { + return null; + } + + Node current = parent.getFirstChild(); + while (current != null) { + if (current.getNodeType() == Node.ELEMENT_NODE) { + Element elem = (Element) current; + if (tagName.equals(elem.getTagName())) { + return elem; + } + } + current = current.getNextSibling(); + } + return null; + } + + public static List getElementChildren(final Element parent) { + ArrayList result = new ArrayList(); + if (parent == null) { + return result; + } + + Node current = parent.getFirstChild(); + while (current != null) { + if (current.getNodeType() == Node.ELEMENT_NODE) { + Element elem = (Element) current; + result.add(elem); + } + current = current.getNextSibling(); + } + return result; + } + + + public static List getElementChildren(final Element parent, final String tagName) { + ArrayList result = new ArrayList(); + if (parent == null || tagName == null) { + return result; + } + Node current = parent.getFirstChild(); + while (current != null) { + if (current.getNodeType() == Node.ELEMENT_NODE) { + Element elem = (Element) current; + if (tagName.equals(elem.getTagName())) { + result.add(elem); + } + } + current = current.getNextSibling(); + } + return result; + } + + + public static String getTextContent(final Element parent) { + StringBuffer result = new StringBuffer(); + if (parent == null) { + return result.toString(); + } + Node current = parent.getFirstChild(); + while (current != null) { + if (current.getNodeType() == Node.TEXT_NODE) { + result.append(current.getNodeValue()); + } + current = current.getNextSibling(); + + } + + return result.toString(); + } + + public static String getEntireContent(final Node parent) { + StringBuilder result = new StringBuilder(); + if (parent != null) { + NodeList children = parent.getChildNodes(); + for (int i = 0; i < children.getLength(); i++) { + Node node = children.item(i); + result.append(node.toString()); + //if(node.hasChildNodes()) result.append(getEntireContent(node)); + } + } + return result.toString(); + } + +} + + diff --git a/src/main/resources/clientlog4j.properties b/src/main/resources/clientlog4j.properties new file mode 100644 index 0000000..b98f952 --- /dev/null +++ b/src/main/resources/clientlog4j.properties @@ -0,0 +1,9 @@ +log4j.rootLogger=DEBUG, A1 +log4j.appender.A1=org.apache.log4j.ConsoleAppender +log4j.appender.A1.layout=org.apache.log4j.PatternLayout + +# Print the date in ISO 8601 format +log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n + +# Print only messages of level TRACE or above in the package org.gcube +log4j.logger.org.gcube=TRACE \ No newline at end of file diff --git a/src/main/resources/org/gcube/portlets/admin/resourcemanagement/ResourceManagementPortlet.gwt.xml b/src/main/resources/org/gcube/portlets/admin/resourcemanagement/ResourceManagementPortlet.gwt.xml new file mode 100644 index 0000000..47eb9e2 --- /dev/null +++ b/src/main/resources/org/gcube/portlets/admin/resourcemanagement/ResourceManagementPortlet.gwt.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/ResourceManagementPortlet.css b/src/main/webapp/ResourceManagementPortlet.css new file mode 100644 index 0000000..b94faf9 --- /dev/null +++ b/src/main/webapp/ResourceManagementPortlet.css @@ -0,0 +1,335 @@ +/* Comment import to style regular, uncomment if deploying on openbio or d4science.org */ +/*@import url(openbio.css);*/ +@import url(coherence.css); + +/* Fix the scrollbar background style*/ +.x-progress-text div { + background-color: transparent !important; + font-size: 11px; + font-weight: bold; +} + +.iosItem { + color: #444; + font-family: "HelveticaNeue-Light", "Helvetica Neue Light", + "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; + font-weight: 300; + font-size: 15px; + display: block; + margin-left: 10px; + margin-top: 10px; + padding: 5px; + width: 120px; + height: 100px; + border-radius: 10px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; +} + +.wizardTextBox { + background-color: white; + border-width: 1px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + letter-spacing: normal; + line-height: 20px !important;; + height: 35px !important; + width: 295px; + font-size: 18px !important; +} + +.portlet { + padding: 0; + margin: 0; +} + +.x-menubar { + padding: 5px; +} + +.portlet-wrapper { + padding: 0; + margin: 0; +} + +.lfr-grid .lfr-column { + padding: 0; + margin: 0; +} + +/** + * to fix bug in duallist + */ +.x-form-list input { + left: -5000px; +} + +/** Add css rules here for your application. */ +.taskbar-pattern { + background-image: url(images/pattern.gif); + background-repeat: repeat; + border: 2px solid #A9BFD3; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; +} + +.taskbar-button { + background: transparent; +} + +.taskbar-button:hover,.taskbar-button:focus { + border: 0px; + -moz-transition: -moz-transform .15s linear; + -o-transition: -o-transform .15s linear; + -webkit-transition: -webkit-transform .15s linear; + -webkit-transform: scale(1.10); + -moz-transform: scale(1.10); + -o-transform: scale(1.10); + position: relative; + z-index: 5; + cursor: pointer; + cursor: hand; +} + +.x-hide-panel-header { + display: none !important; +} + +.x-grid-invalid-row { + border: 1px solid; + background: repeat-x left top; + color: lime; +} + +/* + * Used as initial background for the central panel + */ +.x-panel-cube-background { + color: #000; + border: 0px; + /* background-image:url(images/icons/bigcube.gif); */ + background-repeat: no-repeat; + background-position: center center; +} + +.left-panel-tree-background { + color: #000; + border: 0px; + background-image: url(images/d4infra.gif); + background-repeat: no-repeat; + background-position: center center; +} + +/* HERE THE ICONS */ +.detach-icon { + background-image: url(images/icons/detach.png) !important; +} + +.profile-folder-icon { + background-image: url(images/icons/folder.png) !important; +} + +.profile-icon { + background-image: url(images/icons/profile.gif) !important; +} + +.shutdown-icon { + background-image: url(images/icons/shutdown.png) !important; +} + +.sweeper-icon { + background-image: url(images/icons/sweeper2.png) !important; +} + +.new-icon { + background-image: url(images/icons/new.png) !important; +} + +.install-icon { + background-image: url(images/icons/install.png) !important; +} + +.deploy-icon { + background-image: url(images/icons/deploy.png) !important; +} + +.add-software-icon { + background-image: url(images/icons/cog_add.png) !important; +} + +.is-icon { + background-image: url(images/icons/is.png) !important; +} + +.getreport-icon { + background-image: url(images/icons/report.png) !important; +} + +.link-icon { + background-image: url(images/icons/link.png) !important; +} + +.restart-icon { + background-image: url(images/icons/restart.png) !important; +} + +.clean-restart-icon { + background-image: url(images/icons/clean-restart.png) !important; +} +/* +.profile-big-icon { + background-image:url(images/icons/profile-big.gif) !important; +}*/ +.report-big-icon { + background-image: url(images/icons/report-big.png) !important; +} + +.refresh-icon { + background-image: url(images/icons/refresh.png) !important; +} + +.close-icon { + background-image: url(images/icons/close.png) !important; +} + +.closeall-icon { + background-image: url(images/icons/closeall.png) !important; +} + +.upgrade-icon { + background-image: url(images/icons/upgrade.png) !important; +} + +.delete-icon { + background-image: url(images/icons/delete.png) !important; +} + +.force-delete-icon { + background-image: url(images/icons/forcedelete.png) !important; +} + +.grid-icon { + background-image: url(images/icons/grid.png) !important; + top: -2px; +} + +.validate-icon { + background-image: url(images/icons/validate.gif) !important; + top: -2px; +} + +.console-error-icon { + background-image: url(images/icons/error.png) !important; +} + +.console-log-icon { + background-image: url(images/icons/log.png) !important; +} + +.clear-icon { + background-image: url(images/icons/trash.png) !important; +} + +.console-icon { + background-image: url(images/icons/console.png) !important; +} + +.about-icon { + background-image: url(images/icons/about.png) !important; +} + +.defaultleaf-icon { + background-image: url(images/icons/grid.png) !important; +} + +.resources-icon { + background-image: url(images/icons/world.png) !important; +} + + + /* RESOURCES */ + +.collection-icon { + background-image: url(images/resource-icons/violet.png) !important; +} + +.runninginstance-icon { + background-image: url(images/resource-icons/blue.png) !important; +} + +.genericresource-icon { + background-image: url(images/resource-icons/green.png) !important; +} + +.ghn-icon { + background-image: url(images/resource-icons/ramarro.png) !important; +} +.runtimeresource-icon { + background-image: url(images/resource-icons/yellow.png) !important; +} +.service-icon { + background-image: url(images/resource-icons/orange.png) !important; +} +.wsresources-icon { + background-image: url(images/resource-icons/red.png) !important; +} + /* END RESOURCES */ + +.pluginCM-icon { + background-image: url(images/icons/pluginCM.png) !important; +} + +.pluginTM-icon { + background-image: url(images/tree_diag.png) !important; +} + +.pluginVM-icon { + background-image: url(images/icons/eye.png) !important; +} + +.metadatacollection-icon { + background-image: url(images/icons/table_multiple.png) !important; +} + + + +.empty-icon { + background-image: url(images/icons/error.png) !important; +} + +.addtoscope-icon { + background-image: url(images/icons/brick_add.png) !important; +} + +.removefromscope-icon { + background-image: url(images/icons/brick_delete.png) !important; +} + +.edit-icon { + background-image: url(images/icons/wand.png) !important; +} + +.sendButton { + display: block; + font-size: 16pt; +} + +/** Most GWT widgets already have a style name defined */ +.gwt-DialogBox { + width: 400px; +} + +.dialogVPanel { + margin: 5px; +} + +.serverResponseLabelError { + color: red; +} + +/** Set ids using widget.getElement().setId("idOfElement") */ +#closeButton { + margin: 15px 6px 6px; +} \ No newline at end of file diff --git a/src/main/webapp/ResourceManagementPortlet.html b/src/main/webapp/ResourceManagementPortlet.html new file mode 100644 index 0000000..9c4db79 --- /dev/null +++ b/src/main/webapp/ResourceManagementPortlet.html @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + +D4Science Infrastructure Monitor + + + + + + + + + + + + + + + + + +

+ + + + + diff --git a/src/main/webapp/WEB-INF/jsp/ResourceManagementPortlet_edit.jsp b/src/main/webapp/WEB-INF/jsp/ResourceManagementPortlet_edit.jsp new file mode 100644 index 0000000..0a197a8 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/ResourceManagementPortlet_edit.jsp @@ -0,0 +1,13 @@ +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> + +<%-- Uncomment below lines to add portlet taglibs to jsp +<%@ page import="javax.portlet.*"%> +<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%> + + +--%> + + + EDIT MODE + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/ResourceManagementPortlet_help.jsp b/src/main/webapp/WEB-INF/jsp/ResourceManagementPortlet_help.jsp new file mode 100644 index 0000000..39ed5a1 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/ResourceManagementPortlet_help.jsp @@ -0,0 +1,13 @@ +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> + +<%-- Uncomment below lines to add portlet taglibs to jsp +<%@ page import="javax.portlet.*"%> +<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%> + + +--%> + + + HELP MODE + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/ResourceManagementPortlet_view.jsp b/src/main/webapp/WEB-INF/jsp/ResourceManagementPortlet_view.jsp new file mode 100644 index 0000000..b523cba --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/ResourceManagementPortlet_view.jsp @@ -0,0 +1,20 @@ +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> + +<%-- Uncomment below lines to add portlet taglibs to jsp +<%@ page import="javax.portlet.*"%> +<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%> + + +--%> + + + + + + + + + + +
diff --git a/src/main/webapp/WEB-INF/liferay-display.xml b/src/main/webapp/WEB-INF/liferay-display.xml new file mode 100644 index 0000000..a6a6b7e --- /dev/null +++ b/src/main/webapp/WEB-INF/liferay-display.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/main/webapp/WEB-INF/liferay-plugin-package.properties b/src/main/webapp/WEB-INF/liferay-plugin-package.properties new file mode 100644 index 0000000..b9ec862 --- /dev/null +++ b/src/main/webapp/WEB-INF/liferay-plugin-package.properties @@ -0,0 +1,9 @@ +name=Resources Management +module-group-id=liferay +module-incremental-version=1 +tags= +short-description= +change-log= +page-url=http://www.d4science.eu +author=D4Science EU +licenses= \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/liferay-portlet.xml b/src/main/webapp/WEB-INF/liferay-portlet.xml new file mode 100644 index 0000000..1a34ea2 --- /dev/null +++ b/src/main/webapp/WEB-INF/liferay-portlet.xml @@ -0,0 +1,28 @@ + + + + + + resources-management + false + false + false + /ResourceManagementPortlet.css + + + administrator + Administrator + + + guest + Guest + + + power-user + Power User + + + user + User + + diff --git a/src/main/webapp/WEB-INF/portlet.xml b/src/main/webapp/WEB-INF/portlet.xml new file mode 100644 index 0000000..0433b79 --- /dev/null +++ b/src/main/webapp/WEB-INF/portlet.xml @@ -0,0 +1,24 @@ + + + + resources-management + Resources Management + org.gcube.portlets.admin.resourcemanagement.server.portlet.ResourceManagementPortlet + + view-jsp + /WEB-INF/ResourceManagementPortlet_view.jsp + + 0 + + text/html + + + Resources Management + Resources Management + Resources Management + + + administrator + + + diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..5bdddd3 --- /dev/null +++ b/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,69 @@ + + + + + + + ServiceProxy + org.gcube.portlets.admin.resourcemanagement.server.ServiceProxyImpl + + + ServiceProxy + /resourcemanagementportlet/ServiceProxy + + + + + sweeperServlet + org.gcube.portlets.admin.resourcesweeper.server.SweeperServiceImpl + + + + sweeperServlet + /resourcemanagementportlet/sweeper + + + + + AuthFilter + org.gcube.resourcemanagement.support.shared.util.TokenFilter + + + AuthFilter + /* + + + + + + isHealthServlet + org.gcube.portlets.admin.ishealthmonitor.server.ISMonitorServiceImpl + + + + isHealthServlet + /resourcemanagementportlet/ishealth + + + + jUnitHostImpl + com.google.gwt.junit.server.JUnitHostImpl + + + jUnitHostImpl + /resourcemanagementportlet/junithost/* + + + jUnitHostImpl + /org.gcube.portlets.admin.resourcemanagement.ResourceManagementPortletJUnit/junithost/* + + + + + ResourceManagementPortlet.html + + + diff --git a/src/main/webapp/WEB-INF/xml/scopedata.xml b/src/main/webapp/WEB-INF/xml/scopedata.xml new file mode 100644 index 0000000..f10a5be --- /dev/null +++ b/src/main/webapp/WEB-INF/xml/scopedata.xml @@ -0,0 +1,76 @@ + + + + + d4science + + + d4science + ServiceMap_d4science.research-infrastructures.eu.xml + /d4science.research-infrastructures.eu + + + d4science/D4Research + ServiceMap_D4Research.xml + /d4science.research-infrastructures.eu/D4Research + + + d4science/Edison + ServiceMap_Edison.xml + /d4science.research-infrastructures.eu/Edison + + + d4science/FARM + ServiceMap_FARM.xml + /d4science.research-infrastructures.eu/FARM + + + d4science/gCubeApps + ServiceMap_gCubeApps.xml + /d4science.research-infrastructures.eu/gCubeApps + + + d4science/OpenAIRE + ServiceMap_OpenAIRE.xml + /d4science.research-infrastructures.eu/OpenAIRE + + + d4science/SmartArea + ServiceMap_SmartArea.xml + /d4science.research-infrastructures.eu/SmartArea + + + d4science/SoBigData + ServiceMap_SoBigData.xml + /d4science.research-infrastructures.eu/SoBigData + + + + + + gcube + + + gcube + ServiceMap_gcube.xml + /gcube + + + gcube/devsec + ServiceMap_devsec.xml + /gcube/devsec + + + gcube/devNext + ServiceMap_devNext.xml + /gcube/devNext + + + gcube/preprod + ServiceMap_preprod.xml + /gcube/preprod + + + + + diff --git a/src/main/webapp/WEB-INF/xml/scopedata_admin.xml b/src/main/webapp/WEB-INF/xml/scopedata_admin.xml new file mode 100644 index 0000000..f10a5be --- /dev/null +++ b/src/main/webapp/WEB-INF/xml/scopedata_admin.xml @@ -0,0 +1,76 @@ + + + + + d4science + + + d4science + ServiceMap_d4science.research-infrastructures.eu.xml + /d4science.research-infrastructures.eu + + + d4science/D4Research + ServiceMap_D4Research.xml + /d4science.research-infrastructures.eu/D4Research + + + d4science/Edison + ServiceMap_Edison.xml + /d4science.research-infrastructures.eu/Edison + + + d4science/FARM + ServiceMap_FARM.xml + /d4science.research-infrastructures.eu/FARM + + + d4science/gCubeApps + ServiceMap_gCubeApps.xml + /d4science.research-infrastructures.eu/gCubeApps + + + d4science/OpenAIRE + ServiceMap_OpenAIRE.xml + /d4science.research-infrastructures.eu/OpenAIRE + + + d4science/SmartArea + ServiceMap_SmartArea.xml + /d4science.research-infrastructures.eu/SmartArea + + + d4science/SoBigData + ServiceMap_SoBigData.xml + /d4science.research-infrastructures.eu/SoBigData + + + + + + gcube + + + gcube + ServiceMap_gcube.xml + /gcube + + + gcube/devsec + ServiceMap_devsec.xml + /gcube/devsec + + + gcube/devNext + ServiceMap_devNext.xml + /gcube/devNext + + + gcube/preprod + ServiceMap_preprod.xml + /gcube/preprod + + + + + diff --git a/src/main/webapp/WEB-INF/xml/xmlverbatim.xsl b/src/main/webapp/WEB-INF/xml/xmlverbatim.xsl new file mode 100644 index 0000000..f80d0d6 --- /dev/null +++ b/src/main/webapp/WEB-INF/xml/xmlverbatim.xsl @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + + + + + + converted by xmlverbatim.xsl 1.1, (c) O. Becker + + +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + + +
+ +
+ < + + + + + + : + + + + + + + + xmlns + + ="" + + + + + + + + + + + + > + + + + + + +
+ +
+ </ + + + + + : + + + + + > +
+ + /> + +
+
+
+ + + + + + + + =" + + + + + + + " + + + + + + + xmlns + + : + + + + =" + + + + " + + + + + + + + + + + + + + + + + + + <!-- + + + + + + --> +
+
+ + + + <? + + + + + + + + + + ?> +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + +
+
+ +
diff --git a/src/main/webapp/coherence.css b/src/main/webapp/coherence.css new file mode 100644 index 0000000..f72465d --- /dev/null +++ b/src/main/webapp/coherence.css @@ -0,0 +1,93 @@ +#bottombar { + width: 100% !important; +} + +.x-menubar { + background-image: none; + background-color: #FFF; +} + +.x-panel-body-noheader { + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; +} + +.x-border-layout-ct { + background-color: transparent; + border-color: transparent; +} + +.x-toolbar { + border-color: transparent; + background-image: none; + background-color: #FFF; +} + +.x-panel-header { + background-image: none; + background-color: #FFF; +} + +.x-toolbar .xtb-sep { + background-image: none !important; + background-color: transparent; +} + +.x-accordion-hd { + background-position: 0 0px; +} + +.x-status-text,.x-tree3-node-text,.x-status .x-status-text,.x-toolbar label,.x-component,.x-btn button + { + color: #4c68a6; + font-family: "HelveticaNeue-Light", "Helvetica Neue Light", + "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; + font-weight: 300; + font-size: 12px !important; +} + +.x-grid-group-hd .x-grid-group-div { + color: #4c68a6; + font-family: "HelveticaNeue-Light", "Helvetica Neue Light", + "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; + font-weight: normal; + font-size: 12px !important; +} + +.x-status-text-panel { + border-color: transparent; +} + +.x-panel-mc { + padding-top: 5px; + background: #FFF url(images/bg-pattern.png) repeat; + border-color: #226599; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.ext-el-mask-msg { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + border-width: 2px; + background-color: #FFF; + background-image: none; +} + +.ext-el-mask-msg div { + color: #4c68a6; + font-family: "HelveticaNeue-Light", "Helvetica Neue Light", + "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; + font-weight: 300; + font-size: 12px !important; + border-color: transparent; + background-color: transparent; +} + +.loading-indicator { + background-position: 5px 50%; + background-image: url("images/loader.gif"); +} \ No newline at end of file diff --git a/src/main/webapp/conf/resourcemanagement.properties b/src/main/webapp/conf/resourcemanagement.properties new file mode 100644 index 0000000..dd05aa9 --- /dev/null +++ b/src/main/webapp/conf/resourcemanagement.properties @@ -0,0 +1,33 @@ + +# The user and its credentials +# Possible values for credentials: +# [USER,ADMIN,DEBUG] +USER_CREDENTIALS = DEBUG + +# Defines the modality in which the portlet is running +# possible values [STANDALONE,PORTAL,NOTDEFINED] +RUNNING_MODE = STANDALONE + +DEFAULT_USER = massimiliano.assante + +# The scope that will be used as default +DEFAULT_SCOPE =/d4science.research-infrastructures.eu +# the target of update notification (if in singleton mode) +# mails MUST be separated by ; +USERMAIL_TO = m.assante@gmail.com + +############################################################################### +# PROPERTIES FOR AUTOMATIC LOADING of GHN LIST AT STARTUP +############################################################################### +# Possible values: +# [YES,NO] +LIST_GHN_STARTUP = YES + + +############################################################################### +# PROPERTIES FOR THE SWEEPER +############################################################################### +# The max number of minutes from last profile update to consider a GHN alive. +# NOT LINKED TO THE SWEEPER ANYMORE +LIVE_GHN_MAX_MINUTES = 40 + diff --git a/src/main/webapp/gxt/css/gxt-all.css b/src/main/webapp/gxt/css/gxt-all.css new file mode 100644 index 0000000..c3e9325 --- /dev/null +++ b/src/main/webapp/gxt/css/gxt-all.css @@ -0,0 +1,7129 @@ +/* + * Ext GWT Library 2.1.1 + * Copyright(c) 2006-2009, Ext JS, LLC. + * licensing@extjs.com + * + * http://extjs.com/license + */ +html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;}img,body,html{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul {list-style:none;}caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;}q:before,q:after{content:'';} +.ext-el-mask { + z-index: 100; + position: absolute; + top:0; + left:0; + -moz-opacity: 0.5; + opacity: .50; + filter: alpha(opacity=50); + width: 100%; + height: 100%; + zoom: 1; +} +.ext-el-mask-msg { + z-index: 101; + position: absolute; + top: 0; + left: 0; + border:1px solid; + background:repeat-x 0 -16px; + padding:2px; +} +.ext-el-mask-msg div { + padding:5px 10px 5px 10px; + border:1px solid; + cursor:wait; +} +.ext-webkit *:focus{ + outline: none !important; +} +.ext-webkit .x-form-check-wrap input:focus { + outline: auto !important; +} +.ext-shim { + position:absolute; + visibility:hidden; + left:0; + top:0; + overflow:hidden; +} +.ext-ie .ext-shim { + filter: alpha(opacity=0); +} +.ext-ie6 .ext-shim { + margin-left: 5px; + margin-top: 3px; +} +.x-mask-loading div { + padding:5px 10px 5px 25px; + background:no-repeat 5px 5px; + line-height:16px; +} +.x-hidden, .x-hide-offsets { + position:absolute !important; + left:-10000px !important; + top:-10000px !important; + visibility:hidden !important; +} +.x-hide-display { + display:none !important; +} +.x-hide-visibility { + visibility:hidden !important; +} +.x-masked { + overflow: hidden !important; +} +.x-masked-relative { + position: relative !important; +} +.x-masked select, .x-masked object, .x-masked embed { + visibility: hidden; +} +.x-layer { + visibility: hidden; +} +.x-unselectable, .x-unselectable * { + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: ignore; +} +.x-unselectable-single { + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: ignore; +} +.x-selectable, .x-selectable * { + -moz-user-select: text !important; + -webkit-user-select: auto; +} +.x-repaint { + zoom: 1; + background-color: transparent; + -moz-outline: none; +} +.x-item-disabled { + cursor: default; + opacity: .6; + -moz-opacity: .6; + filter: alpha(opacity=60); +} + +.ext-ie .x-item-disabled { + filter: none !important; +} + +.x-item-disabled * { + cursor: default !important; +} +.x-splitbar-proxy { + position: absolute; + visibility: hidden; + z-index: 20001; + zoom: 1; + line-height: 1px; + font-size: 1px; + overflow: hidden; +} +.x-splitbar-h, .x-splitbar-proxy-h { + cursor: e-resize; + cursor: col-resize; +} +.x-splitbar-v, .x-splitbar-proxy-v { + cursor: s-resize; + cursor: row-resize; +} +.x-color-palette { + width: 150px; + height: 92px; + cursor: pointer; +} +.x-color-palette a { + border: 1px solid; + float: left; + padding: 2px; + text-decoration: none; + -moz-outline: 0 none; + outline: 0 none; + cursor: pointer; +} +.x-color-palette a.x-color-palette-hover, .x-color-palette a.x-color-palette-sel { + border: 1px solid; +} +.x-color-palette em { + display: block; + border: 1px solid; +} +.x-color-palette em span { + cursor: pointer; + display: block; + height: 10px; + line-height: 10px; + width: 10px; +} +.x-ie-shadow { + display: none; + position: absolute; + overflow: hidden; + left:0; + top:0; + zoom:1; +} +.x-shadow { + display: none; + position: absolute; + overflow: hidden; + left:0; + top:0; +} +.x-shadow * { + overflow: hidden; +} +.x-shadow * { + padding: 0; + border: 0; + margin: 0; + clear: none; + zoom: 1; +} +.x-shadow .xstc, .x-shadow .xsbc { + height: 6px; + float: left; +} +.x-shadow .xstl, .x-shadow .xstr, .x-shadow .xsbl, .x-shadow .xsbr { + width: 6px; + height: 6px; + float: left; +} +.x-shadow .xsc { + width: 100%; +} +.x-shadow .xsml, .x-shadow .xsmr { + width: 6px; + float: left; + height: 100%; +} +.x-shadow .xsmc { + float: left; + height: 100%; + background: transparent; +} +.x-shadow .xst, .x-shadow .xsb { + height: 6px; + overflow: hidden; + width: 100%; +} +.x-shadow .xsml { + background: transparent repeat-y 0 0; +} +.x-shadow .xsmr { + background: transparent repeat-y -6px 0; +} +.x-shadow .xstl { + background: transparent no-repeat 0 0; +} +.x-shadow .xstc { + background: transparent repeat-x 0 -30px; +} +.x-shadow .xstr { + background: transparent repeat-x 0 -18px; +} +.x-shadow .xsbl { + background: transparent no-repeat 0 -12px; +} +.x-shadow .xsbc { + background: transparent repeat-x 0 -36px; +} +.x-shadow .xsbr { + background: transparent repeat-x 0 -6px; +} +.loading-indicator { + background: no-repeat left; + padding-left: 20px; + line-height: 16px; + margin: 3px; +} +.x-text-resize { + position: absolute; + left: -1000px; + top: -1000px; + visibility: hidden; + zoom: 1; +} +.x-drag-overlay { + width: 100%; + height: 100%; + display: none; + position: absolute; + left: 0; + top: 0; + background-image:url(../images/default/s.gif); + z-index: 20000; +} +.x-clear { + clear:both; + overflow:hidden; + line-height:0; + font-size:0; +} +.x-spotlight { + z-index: 8999; + position: absolute; + top:0; + left:0; + -moz-opacity: 0.5; + opacity: .50; + filter: alpha(opacity=50); + width:0; + height:0; + zoom: 1; +} +#x-history-frame { + position:absolute; + top:-1px; + left:0; + width:1px; + height:1px; + visibility:hidden; +} +#x-history-field { + position:absolute; + top:0; + left:-1px; + width:1px; + height:1px; + visibility:hidden; +} + +.x-portlet { + margin-bottom: 10px; +} + +.x-portlet .x-panel-body { + background-color: white !important; +} + +.ext-ie .x-btn-icon .x-btn-center .x-btn-text { + height: auto; +} + +.x-portal-insert div { + height: 4px; + font-size: 0px; + border: 2px dotted blue; +} + +.icon-wait { + background: url(../images/gxt/icons/wait.gif) no-repeat !important; +} + +.x-panel-icon { + padding-left: 20px !important; +} + +.x-icon-btn { + width: 16px; + height: 16px; + overflow: hidden; + background-repeat: no-repeat; + cursor: pointer; +} + +.x-panel-inline-icon { + margin-top: 0; +} + +.x-modal { + position: absolute; + z-index: 10; + background-color: black; + filter: alpha(opacity = 10); + opacity: .1; + left: 0px; + top: 0px; +} + +.x-progress { + font-family: tahoma, arial, helvetica, sans-serif; +} + +.x-float-right { + float: right; +} + +.x-toolbar .x-float-right { + margin-right: 4px; +} + +.x-border { + border: 1px solid #99BBE8; +} + +.x-border-top { + border-top: 1px solid #99BBE8; +} + +.x-layout-popup { + background-color: #DFE8F6; + border: 1px solid #7CA4D9; +} + +.x-panel-popup-body { + border-top: 1px solid #99BBE8; +} + +.x-layout-collapsed .x-panel-header { + border-left: none; + border-right: none; + border-top: none; +} + +.x-layout-collapsed .x-panel-header .x-tool { + margin: 0 0 0 -4px; + padding: 0px; +} + +.x-layout-collapsed { + position: absolute; + visibility: hidden; + background-color: #d2e0f2; + width: 20px; + height: 20px; + overflow: hidden; + border: 1px solid #98c0f4; + z-index: 20; +} + +.ext-border-box .x-layout-collapsed { + width: 22px; + height: 22px; +} + +.x-layout-collapsed-over { + cursor: pointer; + background-color: #d9e8fb; +} + +.x-layout-collapsed-west .x-layout-collapsed-tools,.x-layout-collapsed-east .x-layout-collapsed-tools { + position: absolute; + top: 0; + left: 0; + width: 20px; + height: 20px; +} + +.x-panel-toolbar { + float: right; +} + +.x-cursor-row-resize { + cursor: n-resize; + cursor: row-resize; +} + +.x-drag-proxy { + border: 1px dashed #3b5a82; + background-color: #EDEDED; + filter: alpha(opacity = 50); + opacity: .5; + background-color: #c3daf9; + z-index: 20000; + overflow: hidden; + position: absolute; + left: 0;; + top: 0; +} + +.x-date-picker,.x-date-picker a { + font-size: 11px; +} + +.x-date-days { + table-layout: fixed; + width: 100%; +} + +.x-date-days td { + width: 25px; + border: none; +} + +.x-date-days td span { + display: block; + padding: 2px 7px 2px 2px; +} + +.x-date-days td { + background: #DFECFB url(../images/default/shared/glass-bg.gif) repeat-x scroll left top; + border-bottom: 1px solid #A3BAD9; + border-collapse: separate; + color: #233D6D; + cursor: default; + font-family: arial, helvetica, tahoma, sans-serif; + font-size: 10px; + font-size-adjust: none; + font-stretch: normal; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: normal; + padding: 0pt; + text-align: right !important; +} + +.x-date-picker .x-date-header { + background: url(../images/default/shared/hd-sprite.gif) repeat-x 0 -83px; + height: 22px; + left: 10px; + top: 10px; + width: 157px; +} + +.x-date-header .x-btn .x-btn-text { + color: #fff; +} + +.x-date-picker-footer { + width: 100%; +} + +.x-date-picker-footer td { + text-align: center; +} + +.x-date-left { + background: transparent url(../images/default/shared/hd-sprite.gif) repeat-x scroll 0pt -83px; + color: #FFFFFF; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 11px; + font-size-adjust: none; + font-stretch: normal; + font-style: normal; + font-variant: normal; + font-weight: bold; + line-height: normal; + overflow: hidden; +} + +.x-modal { + position: absolute; + z-index: 10; + background-color: black; + filter: alpha(opacity = 10); + opacity: .1; + left: 0px; + top: 0px; +} + +.x-progress { + font-family: tahoma, arial, helvetica, sans-serif; +} + +.x-float-right { + float: right; +} + +.x-layout-popup { + background-color: #DFE8F6; + border: 1px solid #7CA4D9; +} + +.x-layout-collapsed .x-panel-header .x-tool { + margin: 0 0 0 -4px; + padding: 0px; +} + +.ext-border-box .x-layout-collapsed { + width: 22px; + height: 22px; +} + +.x-layout-collapsed-over { + cursor: pointer; + background-color: #d9e8fb; +} + +.x-layout-collapsed-west .x-layout-collapsed-tools,.x-layout-collapsed-east .x-layout-collapsed-tools { + position: absolute; + top: 0; + left: 0; + width: 20px; + height: 20px; +} + +.x-panel-toolbar { + float: right; +} + +.x-cursor-col-resize { + cursor: e-resize; + cursor: col-resize; +} + +.x-cursor-row-resize { + cursor: n-resize; + cursor: row-resize; +} +.x-drag-proxy { + border: 1px dashed #3b5a82; + background-color: #EDEDED; + filter: alpha(opacity=50); + opacity: .5; + background-color: #c3daf9; + z-index: 20000; + overflow: hidden; + position: absolute; + left: 0;; + top: 0; +}.x-tab-panel { + overflow: hidden; + -moz-outline: none; +} + +.x-tab-panel-header,.x-tab-panel-footer { + border: 1px solid; + overflow: hidden; + zoom: 1; +} + +.x-tab-panel-header { + border: 1px solid; + padding-bottom: 2px; +} + +.x-tab-panel-footer { + border: 1px solid; + padding-top: 2px; +} + +.x-tab-strip-wrap { + width: 100%; + overflow: hidden; + position: relative; + zoom: 1; +} + +ul.x-tab-strip { + display: block; + width: 7000px; + zoom: 1; +} + +ul.x-tab-strip-top { + padding-top: 1px; + background: repeat-x bottom; + border-bottom: 1px solid; +} + +ul.x-tab-strip-bottom { + padding-bottom: 1px; + background: repeat-x top; + border-top: 1px solid; + border-bottom: 0 none; +} + +.x-tab-panel-header-plain .x-tab-strip-top { + background: transparent !important; + padding-top: 0 !important; +} + +.x-tab-panel-header-plain { + background: transparent !important; + border-width: 0 !important; + padding-bottom: 0 !important; +} + +.x-tab-panel-header-plain .x-tab-strip-spacer,.x-tab-panel-footer-plain .x-tab-strip-spacer + { + border: 1px solid; + height: 2px; + font-size: 1px; + line-height: 1px; +} + +.x-tab-panel-header-plain .x-tab-strip-spacer { + border-top: 0 none; +} + +.x-tab-panel-footer-plain .x-tab-strip-spacer { + border-bottom: 0 none; +} + +.x-tab-panel-footer-plain .x-tab-strip-bottom { + background: transparent !important; + padding-bottom: 0 !important; +} + +.x-tab-panel-footer-plain { + background: transparent !important; + border-width: 0 !important; + padding-top: 0 !important; +} + +.ext-border-box .x-tab-panel-header-plain .x-tab-strip-spacer,.ext-border-box .x-tab-panel-footer-plain .x-tab-strip-spacer + { + height: 3px; +} + +ul.x-tab-strip li { + float: left; + position: relative; + margin-left: 2px; +} + +ul.x-tab-strip li.x-tab-edge { + float: left; + margin: 0 !important; + padding: 0 !important; + border: 0 none !important; + font-size: 1px !important; + line-height: 1px !important; + overflow: hidden; + zoom: 1; + background: transparent !important; + width: 1px; +} + +.x-tab-strip a,.x-tab-strip span,.x-tab-strip em { + display: block; +} + +.x-tab-strip a { + text-decoration: none !important; + -moz-outline: none; + outline: none; + cursor: pointer; +} + +.x-tab-strip-inner { + overflow: hidden; + text-overflow: ellipsis; +} + +.x-tab-strip span.x-tab-strip-text { + white-space: nowrap; + cursor: pointer; + padding: 4px 0; +} + +.x-tab-strip-top .x-tab-with-icon .x-tab-right { + padding-left: 6px; +} + +.x-tab-strip .x-tab-with-icon span.x-tab-strip-text { + padding-left: 20px; + background-position: 0 3px; + background-repeat: no-repeat; +} + +.x-tab-strip-active,.x-tab-strip-active a.x-tab-right { + cursor: default; +} + +.x-tab-strip-active span.x-tab-strip-text { + cursor: default; +} + +.x-tab-strip-disabled .x-tabs-text { + cursor: default; +} + +.x-tab-panel-body { + overflow: hidden; +} + +.x-tab-panel-bwrap { + overflow: hidden; +} + +.ext-ie .x-tab-strip .x-tab-right { + position: relative; +} + +.x-tab-strip-top .x-tab-strip-active .x-tab-right { + margin-bottom: -1px; +} + +.x-tab-strip-top .x-tab-strip-active .x-tab-right span.x-tab-strip-text + { + padding-bottom: 5px; +} + +.x-tab-strip-bottom .x-tab-strip-active .x-tab-right { + margin-top: -1px; +} + +.x-tab-strip-bottom .x-tab-strip-active .x-tab-right span.x-tab-strip-text + { + padding-top: 5px; +} + +.x-tab-strip-top .x-tab-right { + background: transparent no-repeat 0 -51px; + padding-left: 10px; +} + +.x-tab-strip-top .x-tab-left { + background: transparent no-repeat right -351px; + padding-right: 10px; +} + +.x-tab-strip-top .x-tab-strip-inner { + background: transparent repeat-x 0 -201px; +} + +.x-tab-strip-top .x-tab-strip-over .x-tab-right { + background-position: 0 -101px; +} + +.x-tab-strip-top .x-tab-strip-over .x-tab-left { + background-position: right -401px; +} + +.x-tab-strip-top .x-tab-strip-over .x-tab-strip-inner { + background-position: 0 -251px; +} + +.x-tab-strip-top .x-tab-strip-active .x-tab-right { + background-position: 0 0; +} + +.x-tab-strip-top .x-tab-strip-active .x-tab-left { + background-position: right -301px; +} + +.x-tab-strip-top .x-tab-strip-active .x-tab-strip-inner { + background-position: 0 -151px; +} + +.x-tab-strip-bottom .x-tab-right { + background: no-repeat bottom right; +} + +.x-tab-strip-bottom .x-tab-left { + background: no-repeat bottom left; +} + +.x-tab-strip-bottom .x-tab-strip-active .x-tab-right { + background: no-repeat bottom left; +} + +.x-tab-strip-bottom .x-tab-strip-active .x-tab-left { + background: no-repeat bottom right; +} + +.x-tab-strip-bottom .x-tab-left { + padding: 0 10px; +} + +.x-tab-strip-bottom .x-tab-right { + padding: 0; +} + +.x-tab-strip .x-tab-strip-close { + display: none; +} + +.x-tab-strip-closable { + position: relative; +} + +.x-tab-strip-closable .x-tab-left { + padding-right: 19px; +} + +.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close { + opacity: .6; + -moz-opacity: .6; + background-repeat: no-repeat; + display: block; + width: 11px; + height: 11px; + position: absolute; + top: 3px; + right: 3px; + cursor: pointer; + z-index: 2; +} + +.x-tab-strip .x-tab-strip-active a.x-tab-strip-close { + opacity: .8; + -moz-opacity: .8; +} + +.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover { + opacity: 1; + -moz-opacity: 1; +} + +.x-tab-panel-body { + border: 1px solid; +} + +.x-tab-panel-body-top { + border-top: 0 none; +} + +.x-tab-panel-body-bottom { + border-bottom: 0 none; +} + +.x-tab-scroller-left { + background: transparent no-repeat -18px 0; + border-bottom: 1px solid; + width: 18px; + position: absolute; + left: 0; + top: 0; + z-index: 10; + cursor: pointer; +} + +.x-tab-scroller-left-over { + background-position: 0 0; +} + +.x-tab-scroller-left-disabled { + background-position: -18px 0; + opacity: .5; + -moz-opacity: .5; + filter: alpha(opacity = 50); + cursor: default; +} + +.x-tab-scroller-right { + background: transparent no-repeat 0 0; + border-bottom: 1px solid; + width: 18px; + position: absolute; + right: 0; + top: 0; + z-index: 10; + cursor: pointer; +} + +.x-tab-scroller-right-over { + background-position: -18px 0; +} + +.x-tab-scroller-right-disabled { + background-position: 0 0; + opacity: .5; + -moz-opacity: .5; + filter: alpha(opacity = 50); + cursor: default; +} + +.x-tab-scrolling-bottom .x-tab-scroller-left,.x-tab-scrolling-bottom .x-tab-scroller-right + { + margin-top: 1px; +} + +.x-tab-scrolling .x-tab-strip-wrap { + margin-left: 18px; + margin-right: 18px; +} + +.x-tab-scrolling { + position: relative; +} + +.x-tab-panel-bbar .x-toolbar { + border: 1px solid; + border-top: 0 none; + overflow: hidden; + padding: 2px; +} + +.x-tab-panel-tbar .x-toolbar { + border: 1px solid; + border-top: 0 none; + overflow: hidden; + padding: 2px; +} + +.x-tab-strip li .x-tab-image { + position: absolute; + top: 3px; + left: 5px; +} + +.ext-ie8 .x-tab-strip li .x-tab-image,.ext-ie8-compatibility .x-tab-strip li .x-tab-image { + top: 4px; + left: 6px; +} + +.ext-ie8 .x-tab-strip-top .x-tab-right,.ext-ie8-compatibility .x-tab-strip-top .x-tab-right + { + top: 1px; +} + +.ext-strict .ext-ie8 .x-tab-strip-top .x-tab-right,.ext-ie8 .x-tab-panel-header-plain .x-tab-strip-top .x-tab-right,.ext-ie8-compatibility .x-tab-panel-header-plain .x-tab-strip-top .x-tab-right + { + top: 0; +} +.x-form-field { + margin: 0; +} + +.x-form-text,textarea.x-form-field { + padding: 1px 3px; + background: repeat-x 0 0; + border: 1px solid; +} + +.ext-gecko textarea.x-form-field { + padding: 0; +} + +.x-form-text,.ext-ie .x-form-file { + height: 22px; + line-height: 18px; + vertical-align: middle; +} + +.ext-ie6 .x-form-text,.ext-ie7 .x-form-text { + margin: -1px 0; + height: 22px; /* ie quirks */ + line-height: 18px; +} + +.ext-ie8-compatibility .x-form-text { + margin: 0; + } + +.ext-ie textarea.x-form-field { + margin: -1px 0; /* ie bogus margin bug */ +} + +.ext-strict .ext-ie8 textarea.x-form-field,.ext-strict .ext-ie8-compatibility textarea.x-form-field { + margin: 0; +} +.x-form-field-wrap .x-form-text { + position: relative; +} + +.ext-strict .x-form-text { + height: 18px; +} + +.ext-safari.ext-mac textarea.x-form-field { + margin-bottom: -2px; +} + +.ext-gecko .x-form-text,.ext-ie8 .x-form-text { + padding-top: 2px; + padding-bottom: 0; +} + +textarea { + resize: none; +} + +.x-form-select-one { + height: 20px; + line-height: 18px; + vertical-align: middle; + border: 1px solid; +} + +.x-form-check-wrap { + line-height: 18px; + height: 22px; + white-space: nowrap; +} + +.x-editor .x-form-check-wrap { + border: 1px solid; + padding: 2px; + height: 14px; +} + +.x-editor .x-form-checkbox { + height: 13px; +} + +.x-form-check-group-label { + border-bottom: 1px solid; + margin-bottom: 5px; + padding-left: 3px !important; + float: none !important; +} + +.x-form-field-wrap .x-form-trigger { + width: 17px; + height: 21px; + border: 0; + background: transparent no-repeat 0 0; + cursor: pointer; + border-bottom: 1px solid; + position: absolute; + top: 0; +} + +.ext-safari .x-form-field-wrap .x-form-trigger { + height: 21px; +} + +.x-form-field-wrap .x-form-date-trigger,.x-form-field-wrap .x-form-clear-trigger,.x-form-field-wrap .x-form-search-trigger + { + cursor: pointer; +} + +.ext-safari .x-form-field-wrap .x-form-trigger,.ext-gecko .x-form-field-wrap .x-form-trigger + { + right: 0; +} + +.x-form-field-wrap .x-form-twin-triggers .x-form-trigger { + position: static; + top: auto; + vertical-align: top; +} + +.x-form-field-wrap { + position: relative; + left: 0; + top: 0; + zoom: 1; + white-space: nowrap; + text-align: left; +} + +.x-form-field-wrap .x-form-trigger-over { + background-position: -17px 0; +} + +.x-form-field-wrap .x-form-trigger-click { + background-position: -34px 0; +} + +.x-trigger-wrap-focus .x-form-trigger { + background-position: -51px 0; +} + +.x-trigger-wrap-focus .x-form-trigger-over { + background-position: -68px 0; +} + +.x-trigger-wrap-focus .x-form-trigger-click { + background-position: -85px 0; +} + +.x-trigger-wrap-focus .x-form-trigger { + border-bottom: 1px solid; +} + +.x-item-disabled .x-form-trigger-over { + background-position: 0 0 !important; + border-bottom: 1px solid; +} + +.x-item-disabled .x-form-trigger-click { + background-position: 0 0 !important; + border-bottom: 1px solid; +} + +.x-form-focus,textarea.x-form-focus { + border: 1px solid; +} + +.x-form-invalid,textarea.x-form-invalid { + background: repeat-x bottom; + border: 1px solid; +} + +.ext-safari .x-form-invalid { + border: 1px solid; +} + +.x-form-inner-invalid,textarea.x-form-inner-invalid { + background: repeat-x bottom; +} + +.x-editor { + padding: 0; + margin: 0; +} + +.ext-ie .x-form-check-wrap input { + width: 15px; + height: 15px; +} + +.x-form-grow-sizer { + left: -10000px; + padding: 8px 3px; + position: absolute; + visibility: hidden; + top: -10000px; + white-space: pre-wrap; + white-space: -moz-pre-wrap; + white-space: -pre-wrap; + white-space: -o-pre-wrap; + word-wrap: break-word; + zoom: 1; +} + +.x-form-grow-sizer p { + margin: 0 !important; + border: 0 none !important; + padding: 0 !important; +} + +.x-form-item { + display: block; + margin-bottom: 4px; +} + +.x-form-item .x-form-item-label { + display: block; + float: left; + width: 100px; + padding: 3px; + padding-left: 0; + clear: left; + z-index: 2; + position: relative; +} + +.x-form-element { + padding-left: 105px; + position: relative; +} + +.x-form-invalid-msg { + padding: 2px; + padding-left: 18px; + background: transparent no-repeat 0 2px; + line-height: 16px; + width: 200px; +} + +.x-form-label-left .x-form-item-label { + text-align: left; +} + +.x-form-label-right .x-form-item-label { + text-align: right; +} + +.x-form-label-top .x-form-item .x-form-item-label { + width: auto; + float: none; + clear: none; + display: inline; + margin-bottom: 4px; + position: static; +} + +.x-form-label-top .x-form-element { + padding-left: 0; + padding-top: 4px; +} + +.x-form-label-top .x-form-item { + padding-bottom: 4px; +} + +.x-small-editor .x-form-text { + height: 20px; + line-height: 16px; + vertical-align: middle; +} + +.ext-ie6 .x-small-editor .x-form-text,.ext-ie7 .x-small-editor .x-form-text { + height: 20px !important; + line-height: 16px !important; +} + +.ext-strict .x-small-editor .x-form-text { + height: 16px !important; +} + +.ext-border-box .x-small-editor .x-form-text { + height: 20px; +} + +.x-small-editor .x-form-select-one { + height: 20px; + line-height: 16px; + vertical-align: middle; +} + +.x-small-editor .x-form-num-field { + text-align: right; +} + +.x-small-editor .x-form-field-wrap .x-form-trigger { + height: 19px; +} + +.x-form-clear { + clear: both; + overflow: hidden; + line-height: 0; + font-size: 0; + height: 0; +} + +.x-form-clear-left { + clear: left; + overflow: hidden; + line-height: 0; + font-size: 0; + height: 0; +} + +.x-form-cb-label { + width: auto !important; + float: none !important; + clear: none !important; + display: inline !important; + margin-left: 4px; +} + +.x-form-column { + float: left; + padding: 0; + margin: 0; + width: 48%; + overflow: hidden; + zoom: 1; +} + +.x-form .x-form-btns-ct .x-btn { + float: right; + clear: none; +} + +.x-form .x-form-btns-ct .x-form-btns td { + border: 0; + padding: 0; +} + +.x-form .x-form-btns-ct .x-form-btns-right table { + float: right; + clear: none; +} + +.x-form .x-form-btns-ct .x-form-btns-left table { + float: left; + clear: none; +} + +.x-form .x-form-btns-ct .x-form-btns-center { + text-align: center; +} + +.x-form .x-form-btns-ct .x-form-btns-center table { + margin: 0 auto; +} + +.x-form .x-form-btns-ct table td.x-form-btn-td { + padding: 3px; +} + +.x-form .x-form-btns-ct .x-btn-focus .x-btn-left { + background-position: 0 -147px; +} + +.x-form .x-form-btns-ct .x-btn-focus .x-btn-right { + background-position: 0 -168px; +} + +.x-form .x-form-btns-ct .x-btn-focus .x-btn-center { + background-position: 0 -189px; +} + +.x-form .x-form-btns-ct .x-btn-click .x-btn-center { + background-position: 0 -126px; +} + +.x-form .x-form-btns-ct .x-btn-click .x-btn-right { + background-position: 0 -84px; +} + +.x-form .x-form-btns-ct .x-btn-click .x-btn-left { + background-position: 0 -63px; +} + +.x-form-invalid-icon { + width: 16px; + height: 18px; + position: absolute; + left: 0; + top: 0; + display: block; + background: transparent no-repeat 0 2px; +} + +.x-fieldset { + border: 1px solid; + padding: 10px; + margin-bottom: 10px; + display: block; +} + +.ext-ie .x-fieldset legend { + margin-bottom: 10px; +} + +.ext-ie .x-fieldset { + padding-top: 0; + padding-bottom: 10px; +} + +.x-fieldset legend .x-tool-toggle { + margin-right: 3px; + margin-left: 0; + float: left !important; +} + +.x-fieldset legend input { + margin-right: 3px; + float: left !important; + height: 13px; + width: 13px; +} + +fieldset.x-panel-collapsed { + padding-bottom: 0 !important; + border-width: 1px 1px 0 1px !important; + border-left-color: transparent; + border-right-color: transparent; +} + +.ext-ie6 fieldset.x-panel-collapsed { + padding-bottom: 0 !important; + border-width: 1px 0 0 0 !important; + margin-left: 1px; + margin-right: 1px; +} + +fieldset.x-panel-collapsed .x-fieldset-bwrap { + visibility: hidden; + position: absolute; + left: -1000px; + top: -1000px; +} + +.ext-ie .x-fieldset-bwrap { + zoom: 1; +} + +.x-fieldset-noborder { + border: 0px none transparent; +} + +.x-fieldset-noborder legend { + margin-left: -3px; +} + +.ext-ie .x-fieldset-noborder legend { + position: relative; + margin-bottom: 23px; +} + +.ext-ie .x-fieldset-noborder legend span { + position: absolute; + left: 16px; +} + +.ext-gecko .x-form-item { + -moz-outline: none; +} + +.x-hide-label label.x-form-item-label { + display: none !important; +} + +.x-hide-label .x-form-element { + padding-left: 0 !important; +} + +.x-fieldset { + overflow: hidden; +} + +/* make top of checkbox/tools visible in webkit */ +.ext-webkit .x-fieldset-header { + padding-top: 1px; +} + +.x-fieldset-bwrap { + overflow: hidden; + zoom: 1; +} + +.x-fieldset-body { + overflow: hidden; +} + +.x-combo-list .x-combo-selected { + border-color: #a3bae9 !important; +} + +.x-combo-list { + background-color: white !important; +} + +.ext-gecko .x-form-file { + height: inherit !important; +} + +.x-form-check { + background: none !important +} + +.x-form-radio { + background: none !important +} + +.x-form-label { + padding: 2px 3px 3px 0px; + font-size: 12px; +} + +.x-form-label-top .x-form-item { + padding-bottom: 0px; + margin-bottom: 2px; +} + +.ext-safari .x-form-text { + height: 22px; /* safari always same size */ + padding: 0 3px; + /* remove extra top/bottom padding */ +} + +.ext-safari .x-small-editor .x-form-text { + height: 20px; +} + +.x-form-group-label,.x-form-cb-label { + font: normal 12px tahoma, arial, helvetica, sans-serif; + padding-right: 10px; +} + +.x-form-list { + background: #FFFFFF url(../images/default/form/text-bg.gif) repeat-x scroll 0 0; + border: 1px solid #B5B8C8; +} + +/* + * FileUploadField component styles + */ +.x-form-file-wrap { + height: 22px; +} + +.x-form-file-wrap .x-form-file { + position: absolute; + right: 0; + -moz-opacity: 0; + filter: alpha(opacity : 0); + opacity: 0; + z-index: 2; + height: 22px; + top: 0; +} + +.x-form-file-wrap .x-form-file-btn { + position: absolute; + right: 0; + z-index: 1; + top: 0; +} + +.x-form-file-wrap .x-form-file-text { + z-index: 3; + color: #777; +} + +.x-form-invalid-icon { + background-position: 0 0 !important; +} + +.x-triggerfield-noedit { + cursor: pointer; +} + +.ext-webkit .x-form-checkbox:focus { + outline: auto !important; +}.x-btn{ + cursor:pointer; + white-space: nowrap; +} +.x-btn button{ + border:0 none; + background:transparent; + padding-left:3px; + padding-right:3px; + cursor:pointer; + margin:0; + overflow:hidden; + width:auto; + -moz-outline:0 none; + outline:0 none; +} +* html .ext-ie .x-btn button { + width:1px; +} +.ext-ie .x-item-disabled .x-btn-mc img { + filter: alpha(opacity=60); +} +.ext-gecko .x-btn button,.ext-webkit .x-btn button { + padding-left:0; + padding-right:0; +} +.ext-gecko .x-btn button::-moz-focus-inner { + padding:0; +} +.ext-ie .x-btn button { + padding-top:2px; +} +.x-btn td { + padding:0 !important; +} +.x-btn-text { + cursor:pointer; + white-space: nowrap; + padding:0; +} +.x-btn-noicon .x-btn-small .x-btn-text{ + height: 16px; +} +.x-btn-noicon .x-btn-medium .x-btn-text{ + height: 24px; +} +.x-btn-noicon .x-btn-large .x-btn-text{ + height: 32px; +} +.x-btn-icon .x-btn-text{ + background-position: center; + background-repeat: no-repeat; +} +.x-btn-icon .x-btn-small .x-btn-text{ + height: 16px; + width: 16px; +} +.x-btn-icon .x-btn-medium .x-btn-text{ + height: 24px; + width: 24px; +} +.x-btn-icon .x-btn-large .x-btn-text{ + height: 32px; + width: 32px; +} +.x-btn-text-icon .x-btn-icon-small-left .x-btn-text{ + background-position: 0 center; + background-repeat: no-repeat; + padding-left:18px; + height:16px; +} +.x-btn-text-icon .x-btn-icon-medium-left .x-btn-text{ + background-position: 0 center; + background-repeat: no-repeat; + padding-left:26px; + height:24px; +} +.x-btn-text-icon .x-btn-icon-large-left .x-btn-text{ + background-position: 0 center; + background-repeat: no-repeat; + padding-left:34px; + height:32px; +} +.x-btn-text-icon .x-btn-icon-small-top .x-btn-text{ + background-position: center 0; + background-repeat: no-repeat; + padding-top:18px; +} +.x-btn-text-icon .x-btn-icon-medium-top .x-btn-text{ + background-position: center 0; + background-repeat: no-repeat; + padding-top:26px; +} +.x-btn-text-icon .x-btn-icon-large-top .x-btn-text{ + background-position: center 0; + background-repeat: no-repeat; + padding-top:34px; +} +.x-btn-text-icon .x-btn-icon-small-right .x-btn-text{ + background-position: right center; + background-repeat: no-repeat; + padding-right:18px; + height:16px; +} +.x-btn-text-icon .x-btn-icon-medium-right .x-btn-text{ + background-position: right center; + background-repeat: no-repeat; + padding-right:26px; + height:24px; +} +.x-btn-text-icon .x-btn-icon-large-right .x-btn-text{ + background-position: right center; + background-repeat: no-repeat; + padding-right:34px; + height:32px; +} +.x-btn-text-icon .x-btn-icon-small-bottom .x-btn-text{ + background-position: center bottom; + background-repeat: no-repeat; + padding-bottom:18px; +} +.x-btn-text-icon .x-btn-icon-medium-bottom .x-btn-text{ + background-position: center bottom; + background-repeat: no-repeat; + padding-bottom:26px; +} +.x-btn-text-icon .x-btn-icon-large-bottom .x-btn-text{ + background-position: center bottom; + background-repeat: no-repeat; + padding-bottom:34px; +} +.x-btn-tr i, .x-btn-tl i, .x-btn-mr i, .x-btn-ml i, .x-btn-br i, .x-btn-bl i{ + font-size:1px; + line-height:1px; + width:3px; + display:block; + overflow:hidden; +} +.x-btn-tr i, .x-btn-tl i, .x-btn-br i, .x-btn-bl i{ + height:3px; +} +.x-btn-tl{ + width:3px; + height:3px; + background:no-repeat 0 0; +} +.x-btn-tr{ + width:3px; + height:3px; + background:no-repeat -3px 0; +} +.x-btn-tc{ + height:3px; + background:repeat-x 0 -6px; +} +.x-btn-ml{ + width:3px; + background:no-repeat 0 -24px; +} +.x-btn-mr{ + width:3px; + background:no-repeat -3px -24px; +} +.x-btn-mc{ + background:repeat-x 0 -1096px; + vertical-align: middle; + text-align:center; + padding:0 5px; + cursor:pointer; + white-space:nowrap; +} +.x-btn-bl{ + width:3px; + height:3px; + background:no-repeat 0 -3px; +} +.x-btn-br{ + width:3px; + height:3px; + background:no-repeat -3px -3px; +} +.x-btn-bc{ + height:3px; + background:repeat-x 0 -15px; +} +.x-btn-over .x-btn-tl{ + background-position: -6px 0; +} +.x-btn-over .x-btn-tr{ + background-position: -9px 0; +} +.x-btn-over .x-btn-tc{ + background-position: 0 -9px; +} +.x-btn-over .x-btn-ml{ + background-position: -6px -24px; +} +.x-btn-over .x-btn-mr{ + background-position: -9px -24px; +} +.x-btn-over .x-btn-mc{ + background-position: 0 -2168px; +} +.x-btn-over .x-btn-bl{ + background-position: -6px -3px; +} +.x-btn-over .x-btn-br{ + background-position: -9px -3px; +} +.x-btn-over .x-btn-bc{ + background-position: 0 -18px; +} +.ext-webkit .x-btn-focus .x-btn-tl{ + background-position: -6px 0; +} +.ext-webkit .x-btn-focus .x-btn-tr{ + background-position: -9px 0; +} +.ext-webkit .x-btn-focus .x-btn-tc{ + background-position: 0 -9px; +} +.ext-webkit .x-btn-focus .x-btn-ml{ + background-position: -6px -24px; +} +.ext-webkit .x-btn-focus .x-btn-mr{ + background-position: -9px -24px; +} +.ext-webkit .x-btn-focus .x-btn-mc{ + background-position: 0 -2168px; +} +.ext-webkit .x-btn-focus .x-btn-bl{ + background-position: -6px -3px; +} +.ext-webkit .x-btn-focus .x-btn-br{ + background-position: -9px -3px; +} +.ext-webkit .x-btn-focus .x-btn-bc{ + background-position: 0 -18px; +} +.x-btn-click .x-btn-tl, .x-btn-menu-active .x-btn-tl, .x-btn-pressed .x-btn-tl{ + background-position: -12px 0 !important; +} +.x-btn-click .x-btn-tr, .x-btn-menu-active .x-btn-tr, .x-btn-pressed .x-btn-tr{ + background-position: -15px 0 !important; +} +.x-btn-click .x-btn-tc, .x-btn-menu-active .x-btn-tc, .x-btn-pressed .x-btn-tc{ + background-position: 0 -12px !important; +} +.x-btn-click .x-btn-ml, .x-btn-menu-active .x-btn-ml, .x-btn-pressed .x-btn-ml{ + background-position: -12px -24px !important; +} +.x-btn-click .x-btn-mr, .x-btn-menu-active .x-btn-mr, .x-btn-pressed .x-btn-mr{ + background-position: -15px -24px !important; +} +.x-btn-click .x-btn-mc, .x-btn-menu-active .x-btn-mc, .x-btn-pressed .x-btn-mc{ + background-position: 0 -3240px !important; +} +.x-btn-click .x-btn-bl, .x-btn-menu-active .x-btn-bl, .x-btn-pressed .x-btn-bl{ + background-position: -12px -3px !important; +} +.x-btn-click .x-btn-br, .x-btn-menu-active .x-btn-br, .x-btn-pressed .x-btn-br{ + background-position: -15px -3px !important; +} +.x-btn-click .x-btn-bc, .x-btn-menu-active .x-btn-bc, .x-btn-pressed .x-btn-bc{ + background-position: 0 -21px !important; +} +.x-btn-disabled *{ + cursor:default !important; +} +.x-btn-mc em.x-btn-arrow { + display:block; + background:transparent no-repeat right center; + padding-right:10px; +} +.x-btn-mc em.x-btn-split { + display:block; + background:transparent no-repeat right center; + padding-right:14px; +} +.x-btn-mc em.x-btn-arrow-bottom { + display:block; + background:transparent no-repeat center bottom; + padding-bottom:14px; +} +.x-btn-mc em.x-btn-split-bottom { + display:block; + background:transparent no-repeat center bottom; + padding-bottom:14px; +} +.x-btn-as-arrow .x-btn-mc em { + display:block; + background:transparent; + padding-bottom:14px; +} +.x-btn-group { + padding:1px; +} +.x-btn-group-header { + padding:2px; + text-align:center; +} +.x-btn-group-tc { + background: transparent repeat-x 0 0; + overflow:hidden; +} +.x-btn-group-tl { + background: transparent no-repeat 0 0; + padding-left:3px; + zoom:1; +} +.x-btn-group-tr { + background: transparent no-repeat right 0; + zoom:1; + padding-right:3px; +} +.x-btn-group-bc { + background: transparent repeat-x 0 bottom; + zoom:1; +} +.x-btn-group-bc .x-panel-footer { + zoom:1; +} +.x-btn-group-bl { + background: transparent no-repeat 0 bottom; + padding-left:3px; + zoom:1; +} +.x-btn-group-br { + background: transparent no-repeat right bottom; + padding-right:3px; + zoom:1; +} +.x-btn-group-mc { + border:0 none; + padding:1px 0 0 0; + margin:0; +} +.x-btn-group-mc .x-btn-group-body { + background:transparent; + border: 0 none; +} +.x-btn-group-ml { + background: transparent repeat-y 0 0; + padding-left:3px; + zoom:1; +} +.x-btn-group-mr { + background: transparent repeat-y right 0; + padding-right:3px; + zoom:1; +} +.x-btn-group-bc .x-btn-group-footer { + padding-bottom:6px; +} +.x-panel-nofooter .x-btn-group-bc { + height:3px; + font-size:0; + line-height:0; +} +.x-btn-group-bwrap { + overflow:hidden; + zoom:1; +} +.x-btn-group-body { + overflow:hidden; + zoom:1; +} +.x-btn-group-notitle .x-btn-group-tc { + background: transparent repeat-x 0 0; + overflow:hidden; + height:2px; +} +.x-toolbar{ + border-style:solid; + border-width:0 0 1px 0; + display: block; + padding:2px; + background:repeat-x top left; + position:relative; + left:0; + top:0; + zoom:1; + overflow:hidden; +} +.x-toolbar .x-item-disabled .x-btn-icon { + opacity: .35; + -moz-opacity: .35; + filter: alpha(opacity=35); +} +.x-toolbar td { + vertical-align:middle; +} +.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{ + white-space: nowrap; +} +.x-toolbar .x-item-disabled { + cursor:default; + opacity:.6; + -moz-opacity:.6; + filter:alpha(opacity=60); +} + +.x-toolbar .x-item-disabled *{ + cursor:default; +} + +.x-toolbar .x-toolbar-cell { + vertical-align:middle; +} +.x-toolbar .x-btn-tl, .x-toolbar .x-btn-tr, .x-toolbar .x-btn-tc, .x-toolbar .x-btn-ml, .x-toolbar .x-btn-mr, +.x-toolbar .x-btn-mc, .x-toolbar .x-btn-bl, .x-toolbar .x-btn-br, .x-toolbar .x-btn-bc +{ + background-position: 500px 500px; +} +.x-toolbar .x-btn-over .x-btn-tl{ + background-position: -6px 0; +} +.x-toolbar .x-btn-over .x-btn-tr{ + background-position: -9px 0; +} +.x-toolbar .x-btn-over .x-btn-tc{ + background-position: 0 -9px; +} +.x-toolbar .x-btn-over .x-btn-ml{ + background-position: -6px -24px; +} +.x-toolbar .x-btn-over .x-btn-mr{ + background-position: -9px -24px; +} +.x-toolbar .x-btn-over .x-btn-mc{ + background-position: 0 -2168px; +} +.x-toolbar .x-btn-over .x-btn-bl{ + background-position: -6px -3px; +} +.x-toolbar .x-btn-over .x-btn-br{ + background-position: -9px -3px; +} +.x-toolbar .x-btn-over .x-btn-bc{ + background-position: 0 -18px; +} +.x-toolbar .x-btn-click .x-btn-tl, .x-toolbar .x-btn-menu-active .x-btn-tl, .x-toolbar .x-btn-pressed .x-btn-tl{ + background-position: -12px 0; +} +.x-toolbar .x-btn-click .x-btn-tr, .x-toolbar .x-btn-menu-active .x-btn-tr, .x-toolbar .x-btn-pressed .x-btn-tr{ + background-position: -15px 0; +} +.x-toolbar .x-btn-click .x-btn-tc, .x-toolbar .x-btn-menu-active .x-btn-tc, .x-toolbar .x-btn-pressed .x-btn-tc{ + background-position: 0 -12px; +} +.x-toolbar .x-btn-click .x-btn-ml, .x-toolbar .x-btn-menu-active .x-btn-ml, .x-toolbar .x-btn-pressed .x-btn-ml{ + background-position: -12px -24px; +} +.x-toolbar .x-btn-click .x-btn-mr, .x-toolbar .x-btn-menu-active .x-btn-mr, .x-toolbar .x-btn-pressed .x-btn-mr{ + background-position: -15px -24px; +} +.x-toolbar .x-btn-click .x-btn-mc, .x-toolbar .x-btn-menu-active .x-btn-mc, .x-toolbar .x-btn-pressed .x-btn-mc{ + background-position: 0 -3240px; +} +.x-toolbar .x-btn-click .x-btn-bl, .x-toolbar .x-btn-menu-active .x-btn-bl, .x-toolbar .x-btn-pressed .x-btn-bl{ + background-position: -12px -3px; +} +.x-toolbar .x-btn-click .x-btn-br, .x-toolbar .x-btn-menu-active .x-btn-br, .x-toolbar .x-btn-pressed .x-btn-br{ + background-position: -15px -3px; +} +.x-toolbar .x-btn-click .x-btn-bc, .x-toolbar .x-btn-menu-active .x-btn-bc, .x-toolbar .x-btn-pressed .x-btn-bc{ + background-position: 0 -21px; +} +.x-toolbar div.xtb-text{ + padding:2px 2px 0; + line-height:16px; + display:block; +} +.x-toolbar .xtb-sep { + background-position: center; + background-repeat: no-repeat; + display: block; + font-size: 1px; + height: 16px; + width:4px; + overflow: hidden; + cursor:default; + margin: 0 2px 0; + border:0; +} +.x-toolbar .xtb-spacer { + width:2px; +} +.x-tbar-page-number{ + width:24px; + height:14px; +} +.x-paging-info { + position:absolute; + top:5px; + right: 8px; +} +.x-toolbar-ct { + width:100%; +} +.x-panel-tbar, .x-panel-bbar, .x-window-tbar, .x-window-bbar, .x-tab-panel-tbar, .x-tab-panel-bbar, .x-plain-tbar, .x-plain-bbar { + overflow:hidden; + zoom:1; +} +.x-toolbar-more .x-btn-small .x-btn-text{ + height: 16px; + width: 12px; +} +.x-toolbar-more em.x-btn-arrow { + display:inline; + background:transparent; + padding-right:0; +} +.x-toolbar-more .x-btn-mc em.x-btn-arrow { + background-image: none; +} +div.x-toolbar-no-items { + color:gray !important; + padding:5px 10px !important; +}.x-resizable-handle { + position:absolute; + z-index:100; + font-size:1px; + line-height:6px; + overflow:hidden; + filter:alpha(opacity=0); + opacity:0; + zoom:1; +} +.x-resizable-handle-east{ + width:6px; + cursor:e-resize; + right:0; + top:0; + height:100%; +} +.ext-ie .x-resizable-handle-east { + margin-right:-1px; +} +.x-resizable-handle-south{ + width:100%; + cursor:s-resize; + left:0; + bottom:0; + height:6px; +} +.ext-ie .x-resizable-handle-south { + margin-bottom:-1px; +} +.x-resizable-handle-west{ + width:6px; + cursor:w-resize; + left:0; + top:0; + height:100%; +} +.x-resizable-handle-north{ + width:100%; + cursor:n-resize; + left:0; + top:0; + height:6px; +} +.x-resizable-handle-southeast{ + width:6px; + cursor:se-resize; + right:0; + bottom:0; + height:6px; + z-index:101; +} +.x-resizable-handle-northwest{ + width:6px; + cursor:nw-resize; + left:0; + top:0; + height:6px; + z-index:101; +} +.x-resizable-handle-northeast{ + width:6px; + cursor:ne-resize; + right:0; + top:0; + height:6px; + z-index:101; +} +.x-resizable-handle-southwest{ + width:6px; + cursor:sw-resize; + left:0; + bottom:0; + height:6px; + z-index:101; +} +.x-resizable-over .x-resizable-handle, .x-resizable-pinned .x-resizable-handle{ + filter:alpha(opacity=100); + opacity:1; +} +.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-east, +.x-resizable-over .x-resizable-handle-west, .x-resizable-pinned .x-resizable-handle-west +{ + background-position: left; +} +.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south, +.x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north +{ + background-position: top; +} +.x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{ + background-position: top left; +} +.x-resizable-over .x-resizable-handle-northwest, .x-resizable-pinned .x-resizable-handle-northwest{ + background-position:bottom right; +} +.x-resizable-over .x-resizable-handle-northeast, .x-resizable-pinned .x-resizable-handle-northeast{ + background-position: bottom left; +} +.x-resizable-over .x-resizable-handle-southwest, .x-resizable-pinned .x-resizable-handle-southwest{ + background-position: top right; +} +.x-resizable-proxy{ + border: 1px dashed; + position:absolute; + overflow:hidden; + display:none; + left:0; + top:0; + z-index:50000; +} +.x-resizable-overlay{ + width:100%; + height:100%; + display:none; + position:absolute; + left:0; + top:0; + z-index:200000; + -moz-opacity: 0; + opacity:0; + filter: alpha(opacity=0); +} +.x-grid3 { + position: relative; + overflow: hidden; +} + +.x-grid-panel .x-panel-body { + overflow: hidden !important; +} + +.x-grid-panel .x-panel-mc .x-panel-body { + border: 1px solid; +} + +.x-grid3 .x-grid3-row-table { + table-layout: fixed; +} + +.x-grid3-viewport { + overflow: hidden; +} + +.x-grid3-hd-row .x-grid3-hd,.x-grid3-row .x-grid3-hd,.x-grid3-summary-row .x-grid3-hd { + -moz-outline: none; + -moz-user-focus: normal; +} + + .x-grid3-summary-row{ + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: ignore; +} + +.x-grid3-row td.x-grid3-cell,.x-grid3-summary-row td.x-grid3-cell { + line-height: 14px; + vertical-align: top; + padding-left: 1px; + padding-right: 1px; + -moz-outline: none; +} + +.x-grid3-hd-row .x-grid3-hd { + line-height: 15px; + vertical-align: middle; + border-left: 1px solid; + border-right: 1px solid; +} + +.x-grid3-hd-row .x-grid3-marker-hd { + padding: 3px; +} + +.x-grid3-row .x-grid3-marker { + padding: 3px; +} + +.x-grid3-cell-inner,.x-grid3-hd-inner { + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + padding: 3px 3px 3px 5px; + white-space: nowrap; +} + +.x-grid3-hd-inner { + position: relative; + cursor: inherit; + padding: 4px 3px 4px 5px; + vertical-align: middle; +} + +.x-grid3-row-body { + white-space: normal; + font-size: 11px; +} + +.x-grid3-body-cell { + -moz-outline: 0 none; + outline: 0 none; +} + +.ext-ie .x-grid3-cell-inner,.ext-ie .x-grid3-hd-inner { + width: 100%; +} + +.ext-strict .x-grid3-cell-inner,.ext-strict .x-grid3-hd-inner { + width: auto; +} + +.x-grid-row-loading { + background: no-repeat center center; +} + +.x-grid-page { + overflow: hidden; +} + +.x-grid3-row { + cursor: default; + border: 1px solid; + width: 100%; +} + +.x-grid3-row-over { + border: 1px solid; + background: repeat-x left top; +} + +.x-grid3-resize-proxy { + width: 1px; + left: 0; + cursor: e-resize; + cursor: col-resize; + position: absolute; + top: 0; + height: 100px; + overflow: hidden; + visibility: hidden; + border: 0 none; + z-index: 7; +} + +.x-grid3-resize-marker { + width: 1px; + left: 0; + position: absolute; + top: 0; + height: 100px; + overflow: hidden; + visibility: hidden; + border: 0 none; + z-index: 7; +} + +.x-grid3-focus { + position: absolute; + left: 0; + top: 0; + width: 1px; + height: 1px; + line-height: 1px; + font-size: 1px; + -moz-outline: 0 none; + outline: 0 none; + -moz-user-select: text; + -khtml-user-select: text; + -webkit-user-select: ignore; +} + +.x-grid3-header { + background: repeat-x 0 bottom; + cursor: default; + zoom: 1; + padding: 0px 0 0 0; +} + +.x-grid3-header-pop { + border-left: 1px solid; + float: right; + clear: none; +} + +.x-grid3-header-pop-inner { + border-left: 1px solid; + width: 14px; + height: 19px; + background: transparent no-repeat center center; +} + +.ext-ie .x-grid3-header-pop-inner { + width: 15px; +} + +.ext-strict .x-grid3-header-pop-inner { + width: 14px; +} + +.x-grid3-header-inner { + overflow: hidden; + zoom: 1; + float: left; +} + +.x-grid3-header-offset { + padding-left: 1px; +} + +td.x-grid3-hd-over,td.sort-desc,td.sort-asc,td.x-grid3-hd-menu-open { + border-left: 1px solid; + border-right: 1px solid; +} + +td.x-grid3-hd-over .x-grid3-hd-inner,td.sort-desc .x-grid3-hd-inner,td.sort-asc .x-grid3-hd-inner,td.x-grid3-hd-menu-open .x-grid3-hd-inner + { + background: repeat-x left bottom; +} + +.x-grid3-sort-icon { + background-repeat: no-repeat; + display: none; + height: 4px; + width: 13px; + margin-left: 3px; + vertical-align: middle; +} + +.sort-asc .x-grid3-sort-icon,.sort-desc .x-grid3-sort-icon { + display: inline; +} + +.ext-strict .ext-ie .x-grid3-header-inner,.ext-strict .ext-ie6 .x-grid3-hd { + position: relative; +} + +.ext-strict .ext-ie6 .x-grid3-hd-inner { + position: static; +} + +.x-grid3-body { + zoom: 1; +} + +.x-grid3-scroller { + overflow: auto; + zoom: 1; + position: relative; +} + +.x-grid3-cell-text,.x-grid3-hd-text { + display: block; + padding: 3px 5px 3px 5px; +} + +.x-grid3-split { + background-position: center; + background-repeat: no-repeat; + cursor: e-resize; + cursor: col-resize; + display: block; + font-size: 1px; + height: 16px; + overflow: hidden; + position: absolute; + top: 2px; + width: 6px; + z-index: 3; +} + +.x-dd-drag-proxy .x-grid3-hd-inner { + background: repeat-x left bottom; + width: 120px; + padding: 3px; + border: 1px solid; + overflow: hidden; +} + +.col-move-top,.col-move-bottom { + width: 9px; + height: 9px; + position: absolute; + top: 0; + line-height: 1px; + font-size: 1px; + overflow: hidden; + visibility: hidden; + z-index: 20000; + background: transparent no-repeat left top; +} + +.x-grid3-row-selected { + border: 1px dotted; +} + +.x-grid3-locked td.x-grid3-row-marker,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker + { + background: repeat-x 0 bottom !important; + vertical-align: middle !important; + padding: 0; + border-top: 1px solid; + border-bottom: none !important; + border-right: 1px solid !important; + text-align: center; +} + +.x-grid3-locked td.x-grid3-row-marker div,.x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div + { + padding: 0 4px; + text-align: center; +} + +.x-grid3-dirty-cell { + background: transparent no-repeat 0 0; +} + +.x-grid3-invalid-cell { + background: repeat-x bottom; +} + +.x-grid3-topbar,.x-grid3-bottombar { + overflow: hidden; + display: none; + zoom: 1; + position: relative; +} + +.x-grid3-topbar .x-toolbar { + border-right: 0 none; +} + +.x-grid3-bottombar .x-toolbar { + border-right: 0 none; + border-bottom: 0 none; + border-top: 1px solid; +} + +.x-props-grid .x-grid3-cell { + padding: 1px; +} + +.x-props-grid .x-grid3-td-name .x-grid3-cell-inner { + background: transparent repeat-y -16px !important; + padding-left: 12px; +} + +.x-props-grid .x-grid3-body .x-grid3-td-name { + padding: 1px; + padding-right: 0; + border: 0 none; + border-right: 1px solid; +} + +.x-grid3-col-dd { + border: 0 none; + padding: 0; + background: transparent; +} + +.x-dd-drag-ghost .x-grid3-dd-wrap { + padding: 1px 3px 3px 1px; +} + +.x-grid3-hd { + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: ignore; +} + +.x-grid3-hd-btn { + display: none; + position: absolute; + width: 14px; + background: no-repeat left center; + right: 0; + top: 0; + z-index: 2; + cursor: pointer; +} + +.x-grid3-hd-over .x-grid3-hd-btn,.x-grid3-hd-menu-open .x-grid3-hd-btn { + display: block; +} + +a.x-grid3-hd-btn:hover { + background-position: -14px center; +} + +.x-grid3-body .x-grid3-td-expander { + background: transparent repeat-y right; +} + +.x-grid3-body .x-grid3-td-expander .x-grid3-cell-inner { + padding: 0 !important; + height: 100%; +} + +.x-grid3-row-expander { + width: 100%; + height: 18px; + background-position: 4px 2px; + background-repeat: no-repeat; + background-color: transparent; +} + +.x-grid3-row-collapsed .x-grid3-row-expander { + background-position: 4px 2px; +} + +.x-grid3-row-expanded .x-grid3-row-expander { + background-position: -21px 2px; +} + +.x-grid3-row-collapsed .x-grid3-row-body { + display: none !important; +} + +.x-grid3-row-expanded .x-grid3-row-body { + display: block !important; +} + +.x-grid3-body .x-grid3-td-checker { + background: transparent repeat-y right; +} + +.x-grid3-body .x-grid3-td-checker .x-grid3-cell-inner,.x-grid3-header .x-grid3-td-checker .x-grid3-hd-inner { + padding: 0 !important; + height: 100%; +} + +.x-grid3-group-checker { + float: left; +} + +.x-grid3-row-checker,.x-grid3-hd-checker { + width: 100%; + height: 18px; + background-position: 2px 2px; + background-repeat: no-repeat; + background-color: transparent; +} +.x-grid3-hd-checker { + padding-bottom: 0px !important; +} +.x-grid3-row .x-grid3-row-checker { + background-position: 2px 2px; +} + +.x-grid3-row-selected .x-grid3-row-checker,.x-grid3-hd-checker-on .x-grid3-hd-checker,.x-grid3-row-checked .x-grid3-row-checker + { + background-position: -23px 2px; +} + +.x-grid3-hd-checker { + background-position: 2px 3px; +} + +.x-grid3-hd-checker-on .x-grid3-hd-checker { + background-position: -23px 3px; +} + +.x-grid3-body .x-grid3-td-numberer { + background: transparent repeat-y right; +} + +.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner { + padding: 3px 5px 0 0 !important; + text-align: right; +} + +.x-grid3-body .x-grid3-td-row-icon { + background: transparent repeat-y right; + vertical-align: top; + text-align: center; +} + +.x-grid3-body .x-grid3-td-row-icon .x-grid3-cell-inner { + padding: 0 !important; + background-position: center center; + background-repeat: no-repeat; + width: 16px; + height: 16px; + margin-left: 2px; + margin-top: 3px; +} + +.x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer,.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker,.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander + { + background: transparent repeat-y right; +} + +.x-grid3-body .x-grid3-check-col-td .x-grid3-cell-inner { + padding: 1px 0 0 0 !important; +} + +.x-grid3-check-col { + width: 100%; + height: 16px; + background-position: center center; + background-repeat: no-repeat; + background-color: transparent; +} + +.x-grid3-check-col-on { + width: 100%; + height: 16px; + background-position: center center; + background-repeat: no-repeat; + background-color: transparent; +} + +.x-grid-group,.x-grid-group-body,.x-grid-group-hd { + zoom: 1; +} + +.x-grid-group-hd { + border-bottom: 2px solid; + cursor: pointer; + padding-top: 6px; +} + +.x-grid-group-hd .x-grid-group-div { + background: transparent no-repeat 3px -47px; + padding: 4px 4px 4px 17px; +} + +.x-grid-group-collapsed .x-grid-group-hd .x-grid-group-div { + background-position: 3px 3px; +} + +.x-grid-group-collapsed .x-grid-group-body { + display: none; +} + +.x-grid-empty { + padding: 10px; +} + +.ext-ie7 .x-grid-panel .x-panel-bbar { + position: relative; +} + +.x-grid-with-col-lines .x-grid3-row td.x-grid3-cell { + padding-right: 0; + border-right: 1px solid; +} + +.ext-ie6 .x-grid3-header { + position: relative; +} + +.x-grid3-check-col-disabled { + width: 100%; + height: 16px; + background-position: center center; + background-repeat: no-repeat; +} + +.x-row-editor-header { + height: 2px; + overflow: hidden; +} +.x-row-editor-footer { + height: 2px; + overflow: hidden; +} + +.ext-ie .x-row-editor-footer { + margin-top: -1px; +} + +.x-row-editor-body { + overflow: hidden; + zoom: 1; + padding-top: 2px; +} + +.x-row-editor .x-btns { + position: absolute; + top: 28px; + left: 20px; + padding-left: 5px; +} + +.x-row-editor .x-btns .x-plain-bwrap { + padding-right: 5px; +} + +.x-row-editor .x-btns .x-plain-body { + height: 31px; +} + +.x-row-editor .x-btns .x-table-layout-cell { + padding: 3px; +} + +.x-grid3-footer { + background: #f7f7f7 none repeat scroll 0 0; + border-top: 1px solid #DDDDDD; + border-bottom: 1px solid #DDDDDD; + display: block; + overflow: hidden; + position: relative; +} + +.x-grid3-footer-row { + border-top: 1px solid #EEEEEE; + background-color: #f7f7f7; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: ignore; +} + +.x-grid3-footer-row td { + line-height: 13px; + vertical-align: top; + padding-left: 1px; + padding-right: 1px; + font: normal 11px arial, tahoma, helvetica, sans-serif; +} +.ext-ie6 .x-grid3 .x-editor .x-form-text,.ext-ie7 .x-grid3 .x-editor .x-form-text{ + top:-1px; +} + +.ext-ie8-compatibility .x-grid3 .x-editor .x-form-text{ + top:0; +} + +.x-grid-panel .x-livegrid-scroller { + z-index: 1; + position: absolute; + right: 0px; + width: 18px; + overflow-y: scroll; + overflow-x: hidden; +} + +.x-grid3-group-checker div { + width: 14px; + height: 18px; + background-position: -1 -2px; + background-repeat: no-repeat; + background-color: transparent; +} + +.x-grid-group-hd .x-grid3-group-check { + background-image:url(../images/default/menu/checked.gif); +} + +.x-grid-group-hd .x-grid3-group-uncheck { + background-image:url(../images/default/menu/unchecked.gif); +} +.x-dd-drag-proxy{ + position:absolute; + left:0; + top:0; + visibility:hidden; + z-index:15000; +} +.x-dd-drag-ghost{ + -moz-opacity: 0.85; + opacity:.85; + filter: alpha(opacity=85); + border: 1px solid; + padding:3px; + padding-left:20px; + white-space:nowrap; +} +.x-dd-drag-repair .x-dd-drag-ghost{ + -moz-opacity: 0.4; + opacity:.4; + filter: alpha(opacity=40); + border:0 none; + padding:0; + background-color:transparent; +} +.x-dd-drag-repair .x-dd-drop-icon{ + visibility:hidden; +} +.x-dd-drop-icon{ + position:absolute; + top:3px; + left:3px; + display:block; + width:16px; + height:16px; + background-color:transparent; + background-position: center; + background-repeat: no-repeat; + z-index:1; +} +.x-view-selector { + position:absolute; + left:0; + top:0; + width:0; + border:1px dotted; + opacity: .5; + -moz-opacity: .5; + filter:alpha(opacity=50); + zoom:1; +} + +.x-dd-cursor { + cursor: default !important; +} + +.x-insert-bar { + position: absolute; + + z-index: 99999; +} + +.x-insert-bar td { + line-height: 1px; + font-size: 1px; +} + +.x-insert-left { + background: url(../images/gxt/dd/insert-bg.gif) no-repeat; +} + +.x-insert-mid { + background: url(../images/gxt/dd/insert-bg.gif) repeat-x 0 -12px; +} + +.x-insert-right { + background: url(../images/gxt/dd/insert-bg.gif) no-repeat 0px -6px; +} +.tree-folder { + background: url(../images/gxt/icons/folder-closed.gif) no-repeat center + left !important; +} + +.tree-folder-open { + background: url(../images/gxt/icons/folder.gif) no-repeat center left + !important; +} + +.my-tree { + cursor: default; + font-size: 11px; + -moz-outline: none; + -moz-user-focus: none; +} + +.my-root-item { + padding: 4px; +} + +.my-tree-item,.my-tree-item table,.my-tree-item table td { + -moz-outline: none; + -moz-user-focus: normal; + font-size: 11px; +} + +.my-tree-item td { + height: 19px; +} + +.my-tree-indent { + line-height: 1px; + font-size: 1px; +} + +.my-tree-joint div { + width: 15px; + height: 19px; + line-height: 1px; + font-size: 1px; +} + +.my-tree-left,.my-tree-left div,.my-tree-right { + line-height: 1px; + font-size: 1px; + width: 3px; +} + +.my-tree-left div,.my-tree-right div { + width: 3px; +} + +.my-tree-item,.my-treeitem-wrap { + -moz-outline: none; + -moz-user-focus: normal; +} + +.my-tree-check div { + width: 17px; + height: 17px; + line-height: 1px; + font-size: 1px; +} + +.my-tree-icon div { + width: 16px; + height: 17px; + cursor: pointer; + background-repeat: no-repeat; + background-position: center; +} + +.my-tree-item-text span { + font-family: arial, tahoma, helvetica, sans-serif; + font-size: 12px; + white-space: nowrap; + padding-left: 3px; + padding-right: 3px; + display: block; + height: 15px; + cursor: pointer; +} + +.my-tree-over .my-tree-left { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat left + -57px; +} + +.my-tree-over .my-tree-right { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat right + -76px; +} + +.my-tree-over .my-tree-check,.my-tree-over .my-tree-icon,.my-tree-over .my-tree-item-text + { + background: url(../images/gxt/shared/select-19-bg.gif) left -95px; +} + +.my-tree-sel .my-tree-left { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat left + 0px; +} + +.my-tree-sel .my-tree-right { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat right + -19px; +} + +.my-tree-sel .my-tree-check,.my-tree-sel .my-tree-icon,.my-tree-sel .my-tree-item-text + { + background: url(../images/gxt/shared/select-19-bg.gif) left -38px; +} + +.my-tree-drop .my-tree-left { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat left + -115px; +} + +.my-tree-drop .my-tree-right { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat right + -133px; +} + +.my-tree-drop .my-tree-check,.my-tree-drop .my-tree-icon,.my-tree-drop .my-tree-item-text + { + background: url(../images/gxt/shared/select-19-bg.gif) left -152px; +} + +.my-tree-close { + background: url(../images/gxt/tree/vnode_transparent.gif) no-repeat 0px + 1px; +} + +.my-tree-open { + background: url(../images/gxt/tree/vnode_transparent.gif) no-repeat 0px + -32px; +} + +.my-tree-joint-over .my-tree-open { + background: url(../images/gxt/tree/vnode_transparent.gif) no-repeat 0px + -48px; +} + +.my-tree-joint-over .my-tree-close { + background: url(../images/gxt/tree/vnode_transparent.gif) no-repeat 0px + -15px; +} + +.my-tree-notchecked { + background: url(../images/gxt/tree/notchecked.gif) no-repeat 0px 50%; +} + +.my-tree-checked { + background: url(../images/gxt/tree/checked.gif) no-repeat 0px 50%; +} + +.my-tree-loading .tree-folder { + background: url(../images/gxt/icons/wait.gif) no-repeat 0px -1px + !important; +} + +.my-tree-loading .my-tree-item-text span { + font-style: italic; +} + +.x-ftree-selected .x-ftree-text { + background-color: #d9e8fb; +} + +.x-ftree-node-over .x-ftree-text { + background-color: #eee; +} + +.x-ftree-item { + line-height: 18px; +} + +.x-ftree-joint,.x-ftree-icon { + border: 0 none; + height: 18px; + margin: 0; + padding: 0; + vertical-align: top; + width: 16px; + background-position: center; + background-repeat: no-repeat; +} + +.x-ftree-text { + color: black; + font: normal 11px arial, tahoma, helvetica, sans-serif; + white-space: nowrap; + text-decoration: none; + color: black; + padding-left: 4px; + vertical-align: middle; + line-height: 18px; + padding: 2px 4px 4px 4px; +} + +/* some default icons for leaf/folder */ +.x-ftree-expanded .x-ftree-icon { + background-image: url(../images/default/tree/folder-open.gif); +} + +.x-ftree-leaf .x-ftree-icon { + background-image: url(../images/default/tree/leaf.gif); +} + +.x-ftree-collapsed .x-ftree-icon { + background-image: url(../images/gxt/icons/folder-closed.gif); +} + +/* Arrows */ +.x-ftree-arrows .x-ftree-joint { + background: transparent; +} + +.x-ftree-arrows .x-ftree-joint-plus { + background: transparent url(../images/default/tree/arrows.gif) no-repeat + 0 0; +} + +.x-ftree-arrows .x-ftree-joint-minus { + background: transparent url(../images/default/tree/arrows.gif) no-repeat + -16px 0; +} + +.x-ftree-arrows .x-ftree-ec-over .x-ftree-joint-plus { + background-position: -32px 0; +} + +.x-ftree-arrows .x-ftree-ec-over .x-ftree-joint-minus { + background-position: -48px 0; +} + +.x-ftree2-selected { + background-color: #d9e8fb !important; +} + +.x-ftree2-node-over { + background-color: #eee; +} + +.x-ftree2-node-drop { + background-color: #defadc; +} + +.x-ftree2-joint,.x-ftree2-icon { + border: 0 none; + height: 18px; + margin: 0; + padding: 0; + vertical-align: top; + width: 16px; + background-position: center; + background-repeat: no-repeat; +} + +.x-ftree2-joint div { + width: 16px; +} + +.x-ftree2-el-ct { + display: none; +} + +.x-ftree2-node { + padding-bottom: 1px; +} + +.x-ftree2-text { + vertical-align: middle !important; + white-space: nowrap !important; +} + +.x-ftree2-text span { + color: black; + font: normal 11px arial, tahoma, helvetica, sans-serif; + white-space: nowrap; + text-decoration: none; + color: black; + padding: 2px 4px 2px 1px; + display: block; +} + +.ext-ie .x-ftree2-text span { + padding-left: 3px; +} + +.x-ftree2-check { + width: 17px; +} + +.x-ftree2-check div { + width: 17px; + height: 17px; +} + +/* some default icons for leaf/folder */ +.x-ftree2-expanded .x-ftree2-icon { + background-image: url(../images/default/tree/folder-open.gif); +} + +.x-ftree2-leaf .x-ftree2-icon { + background-image: url(../images/default/tree/leaf.gif); +} + +.x-ftree2-collapsed .x-ftree2-icon { + background-image: url(../images/gxt/icons/folder-closed.gif); +} + +/* Arrows */ +.x-ftree2-arrows .x-ftree2-joint { + background: transparent; +} + +.x-ftree2-arrows .x-ftree2-joint-plus { + background: transparent url(../images/default/tree/arrows.gif) no-repeat + 0 0; +} + +.x-ftree2-arrows .x-ftree2-joint-minus { + background: transparent url(../images/default/tree/arrows.gif) no-repeat + -16px 0; +} + +.x-ftree2-arrows .x-ftree2-ec-over .x-ftree2-joint-plus { + background-position: -32px 0; +} + +.x-ftree2-arrows .x-ftree2-ec-over .x-ftree2-joint-minus { + background-position: -48px 0; +} + +.x-treegrid { + -moz-outline: none; + -moz-user-focus: none; +} + +.x-treegrid .x-treegrid-column .x-grid3-cell-inner { + padding: 0px !important; +} + +.x-tree3 { + cursor: default; + -moz-outline: none; + -moz-user-focus: none; +} + +.x-tree3-node { + cursor: default; +} + +.x-tree3-el { + white-space: nowrap; + height: 21px; + position: relative; +} + +.x-tree3-node-text { + white-space: nowrap; + line-height: 11px; + text-decoration: none; + padding: 0 0 0 3px; + position: relative; + top: -4px; +} + +.x-tree3-node-ct { + display: none; +} + +.x-tree3-node-text-widget { + position: static !important; + padding: 0px !important; +}.x-date-picker { + border: 1px solid; + border-top:0 none; + position:relative; +} +.x-date-picker a { + -moz-outline:0 none; + outline:0 none; +} +.x-date-inner, .x-date-inner td, .x-date-inner th{ + border-collapse:separate; +} +.x-date-middle,.x-date-left,.x-date-right { + background: repeat-x 0 -83px; + overflow:hidden; +} +.x-date-middle .x-btn-tc,.x-date-middle .x-btn-tl,.x-date-middle .x-btn-tr, +.x-date-middle .x-btn-mc,.x-date-middle .x-btn-ml,.x-date-middle .x-btn-mr, +.x-date-middle .x-btn-bc,.x-date-middle .x-btn-bl,.x-date-middle .x-btn-br{ + background:transparent !important; + vertical-align:middle; +} +.x-date-middle .x-btn-mc em.x-btn-arrow { + background:transparent no-repeat right 0; +} +.x-date-right, .x-date-left { + width:18px; +} +.x-date-right{ + text-align:right; +} +.x-date-middle { + padding-top:2px; + padding-bottom:2px; + width:130px; +} +.x-date-right a, .x-date-left a{ + display:block; + width:16px; + height:16px; + background-position: center; + background-repeat: no-repeat; + cursor:pointer; + -moz-opacity: 0.6; + opacity:.6; + filter: alpha(opacity=60); +} +.x-date-right a:hover, .x-date-left a:hover{ + -moz-opacity: 1; + opacity:1; + filter: alpha(opacity=100); +} +.x-date-right a { + margin-right:2px; + text-decoration:none !important; +} +.x-date-left a{ + margin-left:2px; + text-decoration:none !important; +} +table.x-date-inner { + width:100%; + table-layout:fixed; +} +.x-date-inner th { + width:25px; +} +.x-date-inner th { + background: repeat-x left top; + text-align:right !important; + border-bottom: 1px solid; + cursor:default; + padding:0; + border-collapse:separate; +} +.x-date-inner th span { + display:block; + padding:2px; + padding-right:7px; +} +.x-date-inner td { + border: 1px solid; + text-align:right; + padding:0; +} +.x-date-inner a { + padding:2px 5px; + display:block; + text-decoration:none; + text-align:right; + zoom:1; +} +.x-date-inner .x-date-active{ + cursor:pointer; + color:black; +} +.x-date-inner .x-date-selected a{ + background: repeat-x left top; + border:1px solid; + padding:1px 4px; +} +.x-date-inner .x-date-today a{ + border: 1px solid; + padding:1px 4px; +} +.x-date-inner .x-date-prevday a,.x-date-inner .x-date-nextday a { + text-decoration:none !important; +} +.x-date-bottom { + padding:4px; + border-top: 1px solid; + background: repeat-x left top; +} +.x-date-inner a:hover, .x-date-inner .x-date-disabled a:hover{ + text-decoration:none !important; +} +.x-date-inner .x-date-disabled a { + cursor:default; +} +.x-date-mmenu .x-menu-item { + padding:1px 24px 1px 4px; + white-space: nowrap; +} +.x-date-mmenu .x-menu-item .x-menu-item-icon { + width:10px; + height:10px; + margin-right:5px; + background-position:center -4px !important; +} +.x-date-mp { + position:absolute; + left:0; + top:0; + display:none; +} +.x-date-mp td { + padding:2px; + font:normal 11px arial, helvetica,tahoma,sans-serif; +} +td.x-date-mp-month,td.x-date-mp-year,td.x-date-mp-ybtn { + border: 0 none; + text-align:center; + vertical-align: middle; + width:25%; +} +.x-date-mp-ok { + margin-right:3px; +} +.x-date-mp-btns button { + text-decoration:none; + text-align:center; + text-decoration:none !important; + border:1px solid; + padding:1px 3px 1px; + cursor:pointer; +} +.x-date-mp-btns { + background: repeat-x left top; +} +.x-date-mp-btns td { + border-top: 1px solid; + text-align:center; +} +td.x-date-mp-month a,td.x-date-mp-year a { + display:block; + padding:2px 4px; + text-decoration:none; + text-align:center; +} +td.x-date-mp-month a:hover,td.x-date-mp-year a:hover { + text-decoration:none; + cursor:pointer; +} +td.x-date-mp-sel a { + padding:1px 3px; + background: repeat-x left top; + border:1px solid; +} +.x-date-mp-ybtn a { + overflow:hidden; + width:15px; + height:15px; + cursor:pointer; + background:transparent no-repeat; + display:block; + margin:0 auto; +} +.x-date-mp-ybtn a.x-date-mp-next { + background-position:0 -120px; +} +.x-date-mp-ybtn a.x-date-mp-next:hover { + background-position:-15px -120px; +} +.x-date-mp-ybtn a.x-date-mp-prev { + background-position:0 -105px; +} +.x-date-mp-ybtn a.x-date-mp-prev:hover { + background-position:-15px -105px; +} +.x-date-mp-ybtn { + text-align:center; +} +td.x-date-mp-sep { + border-right:1px solid; +} + +.x-date-picker, .x-date-picker a { + font-size: 11px; +} + +.x-date-right-icon { + background-image: url(../images/default/shared/right-btn.gif); + margin-right: 2px; + text-decoration: none !important; +} + +.x-date-left-icon { + background-image: url(../images/default/shared/left-btn.gif); + margin-left: 4px; + text-decoration: none !important; +} + +.x-date-days { + table-layout: fixed; + width: 100%; +} + +.x-date-days td { + width: 25px; + border: none; +} + +.x-date-days td span { + display: block; + padding: 2px 7px 2px 2px; +} + +.x-date-days td { + background: #DFECFB url(../images/default/shared/glass-bg.gif) repeat-x scroll left top; + border-bottom: 1px solid #A3BAD9; + border-collapse: separate; + color: #233D6D; + cursor: default; + font-family: arial, helvetica, tahoma, sans-serif; + font-size: 10px; + font-size-adjust: none; + font-stretch: normal; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: normal; + padding: 0pt; + text-align: right !important; +} + +.x-date-picker .x-date-header { + background: url(../images/default/shared/hd-sprite.gif) repeat-x 0 -83px; + height: 22px; + left: 10px; + top: 10px; + width: 157px; +} + +.x-date-header .x-btn .x-btn-text { + color: #fff; +} + +.x-date-picker-footer { + width: 100%; +} + +.x-date-picker-footer td { + text-align: center; +} + +.x-date-left { + background: transparent url(../images/default/shared/hd-sprite.gif) repeat-x scroll 0pt -83px; + color: #FFFFFF; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 11px; + font-size-adjust: none; + font-stretch: normal; + font-style: normal; + font-variant: normal; + font-weight: bold; + line-height: normal; + overflow: hidden; +} + +.x-date-inner .x-date-active-hover { + background: #ddecfe !important; +} +.x-tip{ + position: absolute; + top: 0; + left:0; + visibility: hidden; + z-index: 20000; + border:0 none; +} +.x-tip .x-tip-close{ + height: 15px; + float:right; + width: 15px; + margin:0 0 2px 2px; + cursor:pointer; + display:none; +} +.x-tip .x-tip-tc { + background: transparent no-repeat 0 -62px; + padding-top:3px; + overflow:hidden; + zoom:1; +} +.x-tip .x-tip-tl { + background: transparent no-repeat 0 0; + padding-left:6px; + overflow:hidden; + zoom:1; +} +.x-tip .x-tip-tr { + background: transparent no-repeat right 0; + padding-right:6px; + overflow:hidden; + zoom:1; +} +.x-tip .x-tip-bc { + background: transparent no-repeat 0 -121px; + height:3px; + overflow:hidden; +} +.x-tip .x-tip-bl { + background: transparent no-repeat 0 -59px; + padding-left:6px; + zoom:1; +} +.x-tip .x-tip-br { + background: transparent no-repeat right -59px; + padding-right:6px; + zoom:1; +} +.x-tip .x-tip-mc { + border:0 none; +} +.x-tip .x-tip-ml { + background: no-repeat 0 -124px; + padding-left:6px; + zoom:1; +} +.x-tip .x-tip-mr { + background: transparent no-repeat right -124px; + padding-right:6px; + zoom:1; +} +.ext-ie .x-tip .x-tip-header,.ext-ie .x-tip .x-tip-tc { + font-size:0; + line-height:0; +} +.x-tip .x-tip-header-text { + padding:0; + margin:0 0 2px 0; +} +.x-tip .x-tip-body { + margin:0 !important; + line-height:14px; + padding:0; +} +.x-tip .x-tip-body .loading-indicator { + margin:0; +} +.x-tip-draggable .x-tip-header,.x-tip-draggable .x-tip-header-text { + cursor:move; +} +.x-form-invalid-tip .x-tip-tc { + background: repeat-x 0 -12px; + padding-top:6px; +} +.x-form-invalid-tip .x-tip-bc { + background: repeat-x 0 -18px; + height:6px; +} +.x-form-invalid-tip .x-tip-bl { + background: no-repeat 0 -6px; +} +.x-form-invalid-tip .x-tip-br { + background: no-repeat right -6px; +} +.x-form-invalid-tip .x-tip-body { + padding:2px; +} +.x-form-invalid-tip .x-tip-body { + padding-left:24px; + background:transparent no-repeat 2px 2px; +} +.x-tip-anchor { + position: absolute; + width: 9px; + height: 10px; + overflow:hidden; + background: transparent no-repeat 0 0; + zoom:1; +} +.x-tip-anchor-bottom { + background-position: -9px 0; +} +.x-tip-anchor-right { + background-position: -18px 0; + width: 10px; +} +.x-tip-anchor-left { + background-position: -28px 0; + width: 10px; +} +.x-menu { + border: 1px solid; + z-index: 15000; + zoom: 1; + background: repeat-y; + -moz-outline: none; +} + +.x-menu a { + text-decoration: none !important; +} + +.ext-ie .x-menu { + zoom: 1; + overflow: hidden; +} + +.x-menu-list { + padding: 2px; + background: transparent; + border: 0 none; + overflow: hidden; + overflow-y: hidden; +} + +.ext-strict .ext-ie .x-menu-list { + position: relative; +}# + +.x-menu x-menu-sep-li { + font-size: 1px; + line-height: 1px; +} + +.x-menu-list-item { + white-space: nowrap; + display: block; + padding: 1px; +} + +.x-menu-item { + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: ignore +} + +.x-menu-item-arrow { + background: transparent no-repeat right; +} + +.x-menu-sep { + display: block; + font-size: 1px; + line-height: 1px; + margin: 2px 3px; + border-bottom: 1px solid; + overflow: hidden; +} + +.x-menu-focus { + position: absolute; + left: -1px; + top: -1px; + width: 1px; + height: 1px; + line-height: 1px; + font-size: 1px; + -moz-outline: 0 none; + outline: 0 none; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: ignore + overflow: hidden; + display: block; +} + +a.x-menu-item { + cursor: pointer; + display: block; + line-height: 16px; + outline-color: -moz-use-text-color; + outline-style: none; + outline-width: 0; + padding: 3px 21px 3px 27px; + position: relative; + text-decoration: none; + white-space: nowrap; +} + +.x-menu-item-active { + border-style: solid; + border-width: 1px; + padding: 0; +} + +.x-menu-item-icon { + border: 0 none; + height: 16px; + padding: 0; + vertical-align: top; + width: 16px; + position: absolute; + left: 3px; + top: 3px; + margin: 0; + background-position: center; +} + +.ext-ie .x-menu-item-icon { + left: -24px; +} + +.ext-strict .x-menu-item-icon { + left: 3px; +} + +.ext-ie6 .x-menu-item-icon { + left: -24px; +} + +.ext-ie .x-menu-item-icon { + vertical-align: middle; +} + +.x-date-menu .x-menu-list { + padding: 0; +} + +.x-menu-date-item { + padding: 0; +} + +.x-menu .x-color-palette,.x-menu .x-date-picker { + margin-left: 26px; + margin-right: 4px; +} + +.x-menu .x-date-picker { + border: 1px solid; + margin-top: 2px; + margin-bottom: 2px; +} + +.x-menu-plain .x-color-palette,.x-menu-plain .x-date-picker { + margin: 0; + border: 0 none; +} + +.x-date-menu { + padding: 0 !important; +} + +.x-cycle-menu .x-menu-item-checked { + border: 1px dotted !important; + padding: 0; +} + +.x-menu .x-menu-scroller { + width: 100%; + background-repeat: no-repeat; + background-position: center; + height: 8px; + line-height: 8px; + cursor: pointer; + margin: 0; + padding: 0; +} + +.x-menu .x-menu-scroller-active { + height: 6px; + line-height: 6px; +} + +.x-menu-list-item-indent { + padding-left: 27px; +} + +.x-menu-text { + + border-style: solid; + background: #D6E3F2; + border-color:#DAE6F4 #99bbe8 #99bbe8 #DAE6F4; + border-width: 1px; + margin:-2px -2px 0; + color:#15428b; + font:bold 10px tahoma,arial,verdana,sans-serif; + display:block; + padding:3px; +} + +.x-menubar { + padding: 3px; + border-style: solid; + border-width: 0 0 1px 0; + cursor: default; + border-color: #a9bfd3; + background-color: #d0def0; + padding: 3px; + background-image: url(../images/default/toolbar/bg.gif); +} + +.x-menubar-item { + padding: 1px 8px; + font: 12px arial, verdana, sans-serif; +} + +.x-menubar-item-over { + background-color: #98c5f5; +} + +.x-menubar-item-active { + background-color: #98c5f5; +}.x-box-tl { + background: transparent no-repeat 0 0; + zoom:1; +} +.x-box-tc { + height: 8px; + background: transparent repeat-x 0 0; + overflow: hidden; +} +.x-box-tr { + background: transparent no-repeat right -8px; +} +.x-box-ml { + background: transparent repeat-y 0; + padding-left: 4px; + overflow: hidden; + zoom:1; +} +.x-box-mc { + background: repeat-x 0 -16px; + padding: 4px 10px; +} +.x-box-mc h3 { + margin: 0 0 4px 0; + zoom:1; +} +.x-box-mr { + background: transparent repeat-y right; + padding-right: 4px; + overflow: hidden; +} +.x-box-bl { + background: transparent no-repeat 0 -16px; + zoom:1; +} +.x-box-bc { + background: transparent repeat-x 0 -8px; + height: 8px; + overflow: hidden; +} +.x-box-br { + background: transparent no-repeat right -24px; +} +.x-box-tl, .x-box-bl { + padding-left: 8px; + overflow: hidden; +} +.x-box-tr, .x-box-br { + padding-right: 8px; + overflow: hidden; +} +.x-combo-list { + border:1px solid; + zoom:1; + overflow:hidden; +} +.x-combo-list-inner { + overflow:auto; + position:relative; + zoom:1; + overflow-x:hidden; +} +.x-combo-list-hd { + border-bottom:1px solid; + padding:3px; +} +.x-resizable-pinned .x-combo-list-inner { + border-bottom:1px solid; +} +.x-combo-list-item { + padding:2px; + border:1px solid; + white-space: nowrap; + overflow:hidden; + text-overflow: ellipsis; +} +.x-combo-list .x-combo-selected{ + border:1px dotted !important; + cursor:pointer; +} +.x-combo-list .x-toolbar { + border-top:1px solid; + border-bottom:0 none; +} +.x-panel { + border-style: solid; + border-width:0; +} +.x-panel-header { + overflow:hidden; + zoom:1; + padding:5px 3px 4px 5px; + border:1px solid; + line-height: 15px; + background: transparent repeat-x 0 -1px; +} +.x-panel-body { + border:1px solid; + border-top:0 none; + overflow:hidden; + position: relative; +} +.x-panel-bbar .x-toolbar, .x-panel-tbar .x-toolbar { + border:1px solid; + border-top:0 none; + overflow:hidden; + padding:2px; +} +.x-panel-tbar-noheader .x-toolbar, .x-panel-mc .x-panel-tbar .x-toolbar { + border-top:1px solid; + border-bottom: 0 none; +} +.x-panel-body-noheader, .x-panel-mc .x-panel-body { + border-top:1px solid; +} +.x-panel-header { + overflow:hidden; + zoom:1; +} +.x-panel-tl .x-panel-header { + padding:5px 0 4px 0; + border:0 none; + background:transparent; + line-height: 15px; +} +.x-panel-tl .x-panel-icon, .x-window-tl .x-panel-icon { + padding-left:20px !important; + background-repeat:no-repeat; + background-position:0 4px; + zoom:1; +} +.x-panel-inline-icon { + width:16px; + height:16px; + background-repeat:no-repeat; + background-position:0 0; + vertical-align:middle; + margin-right:4px; + margin-top:-1px; + margin-bottom:-1px; +} +.x-panel-tc { + background: transparent repeat-x 0 0; + overflow:hidden; +} +.ext-strict .ext-ie7 .x-panel-tc { + overflow: visible; +} +.x-panel-tl { + background: transparent no-repeat 0 0; + padding-left:6px; + zoom:1; + border-bottom:1px solid; +} +.x-panel-tr { + background: transparent no-repeat right 0; + zoom:1; + padding-right:6px; +} +.x-panel-bc { + background: transparent repeat-x 0 bottom; + zoom:1; +} +.x-panel-bc .x-panel-footer { + zoom:1; +} +.x-panel-bl { + background: transparent no-repeat 0 bottom; + padding-left:6px; + zoom:1; +} +.x-panel-br { + background: transparent no-repeat right bottom; + padding-right:6px; + zoom:1; +} +.x-panel-mc { + border:0 none; + padding:0; + margin:0; + padding-top:6px; +} +.x-panel-mc .x-panel-body { + background:transparent; + border: 0 none; +} +.x-panel-ml { + background: repeat-y 0 0; + padding-left:6px; + zoom:1; +} +.x-panel-mr { + background: transparent repeat-y right 0; + padding-right:6px; + zoom:1; +} +.x-panel-bc .x-panel-footer { + padding-bottom:6px; +} +.x-panel-nofooter .x-panel-bc, .x-panel-nofooter .x-window-bc { + height:6px; + font-size:0; + line-height:0; +} +.x-panel-bwrap { + overflow:hidden; + zoom:1; + left:0; + top:0; +} +.x-panel-body { + overflow:hidden; + zoom:1; +} +.x-panel-collapsed .x-resizable-handle{ + display:none; +} +.ext-gecko .x-panel-animated * { + overflow:hidden !important; +} +.x-plain-body { + overflow:hidden; +} +.x-plain-bbar .x-toolbar { + overflow:hidden; + padding:2px; +} +.x-plain-tbar .x-toolbar { + overflow:hidden; + padding:2px; +} +.x-plain-bwrap { + overflow:hidden; + zoom:1; +} +.x-plain { + overflow:hidden; +} +.x-tool { + overflow:hidden; + width:15px; + height:15px; + float:right; + cursor:pointer; + background:transparent no-repeat; + margin-left:2px; +} +.x-tool-toggle { + background-position:0 -60px; +} +.x-tool-toggle-over { + background-position:-15px -60px; +} +.x-panel-collapsed .x-tool-toggle { + background-position:0 -75px; +} +.x-panel-collapsed .x-tool-toggle-over { + background-position:-15px -75px; +} +.x-tool-close { + background-position:0 -0; +} +.x-tool-close-over { + background-position:-15px 0; +} +.x-tool-minimize { + background-position:0 -15px; +} +.x-tool-minimize-over { + background-position:-15px -15px; +} +.x-tool-maximize { + background-position:0 -30px; +} +.x-tool-maximize-over { + background-position:-15px -30px; +} +.x-tool-restore { + background-position:0 -45px; +} +.x-tool-restore-over { + background-position:-15px -45px; +} +.x-tool-gear { + background-position:0 -90px; +} +.x-tool-gear-over { + background-position:-15px -90px; +} +.x-tool-pin { + background-position:0 -135px; +} +.x-tool-pin-over { + background-position:-15px -135px; +} +.x-tool-unpin { + background-position:0 -150px; +} +.x-tool-unpin-over { + background-position:-15px -150px; +} +.x-tool-right { + background-position:0 -165px; +} +.x-tool-right-over { + background-position:-15px -165px; +} +.x-tool-left { + background-position:0 -180px; +} +.x-tool-left-over { + background-position:-15px -180px; +} +.x-tool-up { + background-position:0 -210px; +} +.x-tool-up-over { + background-position:-15px -210px; +} +.x-tool-down { + background-position:0 -195px; +} +.x-tool-down-over { + background-position:-15px -195px; +} +.x-tool-refresh { + background-position:0 -225px; +} +.x-tool-refresh-over { + background-position:-15px -225px; +} +.x-tool-minus { + background-position:0 -255px; +} +.x-tool-minus-over { + background-position:-15px -255px; +} +.x-tool-plus { + background-position:0 -240px; +} +.x-tool-plus-over { + background-position:-15px -240px; +} +.x-tool-search { + background-position:0 -270px; +} +.x-tool-search-over { + background-position:-15px -270px; +} +.x-tool-save { + background-position:0 -285px; +} +.x-tool-save-over { + background-position:-15px -285px; +} +.x-tool-help { + background-position:0 -300px; +} +.x-tool-help-over { + background-position:-15px -300px; +} +.x-tool-print { + background-position:0 -315px; +} +.x-tool-print-over { + background-position:-15px -315px; +} +.x-panel-ghost { + z-index:12000; + overflow:hidden; + position:absolute; + left:0;top:0; + opacity:.65; + -moz-opacity:.65; + filter:alpha(opacity=65); +} +.x-panel-ghost ul { + margin:0; + padding:0; + overflow:hidden; + font-size:0; + line-height:0; + border:1px solid; + border-top:0 none; + display:block; +} +.x-panel-ghost * { + cursor:move !important; +} +.x-panel-dd-spacer { + border:2px dashed; +} +.x-panel-btns { + padding:5px; + overflow:hidden; +} +.x-panel-btns-left .x-buttonbar { + clear:none; +} +.x-panel-btns-center{ + text-align:center; +} +.x-panel-btns-center .x-toolbar-ct { + margin:0 auto; + text-align:left; + width:auto; +} +.x-panel-fbar td.x-toolbar-cell{ + padding:0px; +} +.x-panel-fbar { + display: block; + padding:2px; + position:relative; + left:0; + top:0; + zoom:1; + overflow:hidden; +} + +.x-panel-fbar .x-toolbar-cell { + vertical-align:middle; +} + +.x-panel-fbar td { + vertical-align:middle; +} +.x-panel-btns .x-btn-focus .x-btn-left{ + background-position:0 -147px; +} +.x-panel-btns .x-btn-focus .x-btn-right{ + background-position:0 -168px; +} +.x-panel-btns .x-btn-focus .x-btn-center{ + background-position:0 -189px; +} +.x-panel-btns .x-btn-over .x-btn-left{ + background-position:0 -63px; +} +.x-panel-btns .x-btn-over .x-btn-right{ + background-position:0 -84px; +} +.x-panel-btns .x-btn-over .x-btn-center{ + background-position:0 -105px; +} +.x-panel-btns .x-btn-click .x-btn-center{ + background-position:0 -126px; +} +.x-panel-btns .x-btn-click .x-btn-right{ + background-position:0 -84px; +} +.x-panel-btns .x-btn-click .x-btn-left{ + background-position:0 -63px; +} +.x-panel-fbar td,.x-panel-fbar span,.x-panel-fbar input,.x-panel-fbar div,.x-panel-fbar select,.x-panel-fbar label{ + white-space: nowrap; +} +.x-window { + zoom:1; +} +.x-window .x-resizable-handle { + opacity:0; + -moz-opacity:0; + filter:alpha(opacity=0); +} +.x-window-proxy { + border:1px solid; + z-index:12000; + overflow:hidden; + position:absolute; + left:0;top:0; + display:none; + opacity:.5; + -moz-opacity:.5; + filter:alpha(opacity=50); +} +.x-window-header { + overflow:hidden; + zoom:1; +} +.x-window-bwrap { + z-index:1; + position:relative; + zoom:1; + left:0;top:0; +} +.x-window-tl .x-window-header { + padding:5px 0 4px 0; +} +.x-window-header-text { + cursor:pointer; +} +.x-window-tc { + background: transparent repeat-x 0 0; + overflow:hidden; + zoom:1; +} +.x-window-tl { + background: transparent no-repeat 0 0; + padding-left:6px; + zoom:1; + z-index:1; + position:relative; +} +.x-window-tr { + background: transparent no-repeat right 0; + padding-right:6px; +} +.x-window-bc { + background: transparent repeat-x 0 bottom; + zoom:1; +} +.x-window-bc .x-window-footer { + padding-bottom:6px; + zoom:1; + font-size:0; + line-height:0; +} +.x-window-bl { + background: transparent no-repeat 0 bottom; + padding-left:6px; + zoom:1; +} +.x-window-br { + background: transparent no-repeat right bottom; + padding-right:6px; + zoom:1; +} +.x-window-mc { + border:1px solid; + padding:0; + margin:0; +} +.x-window-ml { + background: transparent repeat-y 0 0; + padding-left:6px; + zoom:1; +} +.x-window-mr { + background: transparent repeat-y right 0; + padding-right:6px; + zoom:1; +} +.x-window-body { + overflow:hidden; +} +.x-window-bwrap { + overflow:hidden; +} +.x-window-maximized .x-window-bl, .x-window-maximized .x-window-br, + .x-window-maximized .x-window-ml, .x-window-maximized .x-window-mr, + .x-window-maximized .x-window-tl, .x-window-maximized .x-window-tr { + padding:0; +} +.x-window-maximized .x-window-footer { + padding-bottom:0; +} +.x-window-maximized .x-window-tc { + padding-left:3px; + padding-right:3px; +} +.x-window-maximized .x-window-mc { + border-left:0 none; + border-right:0 none; +} +.x-window-tbar .x-toolbar, .x-window-bbar .x-toolbar { + border-left:0 none; + border-right: 0 none; +} +.x-window-bbar .x-toolbar { + border-top:1px solid; + border-bottom:0 none; +} +.x-window-draggable, .x-window-draggable .x-window-header-text { + cursor:move; +} +.x-window-maximized .x-window-draggable, .x-window-maximized .x-window-draggable .x-window-header-text { + cursor:default; +} +.x-window-body { + background:transparent; +} +.x-panel-ghost .x-window-tl { + border-bottom:1px solid; +} +.x-panel-collapsed .x-window-tl { + border-bottom:1px solid; +} +.x-window-maximized-ct { + overflow:hidden; +} +.x-window-sizing-ghost ul { + border:0 none !important; +} +.x-dlg-focus{ + -moz-outline:0 none; + outline:0 none; + width:0; + height:0; + overflow:hidden; + position:absolute; + top:0; + left:0; +} +.x-dlg-mask{ + z-index:10000; + display:none; + position:absolute; + top:0; + left:0; + -moz-opacity: 0.5; + opacity:.50; + filter: alpha(opacity=50); +} +body.ext-ie6.x-body-masked select { + visibility:hidden; +} +body.ext-ie6.x-body-masked .x-window select { + visibility:visible; +} +.x-window-plain .x-window-mc { + border: 1px solid; +} +.x-window-plain .x-window-body { + border: 1px solid; + background:transparent !important; +} +.x-html-editor-wrap { + border:1px solid; +} + +.x-html-editor-tb .x-btn-text { + background:transparent no-repeat; +} + +.x-html-editor-tip .x-tip-bd .x-tip-bd-inner { + padding:5px; + padding-bottom:1px; +} + +.x-html-editor-tb .x-toolbar { + position:static !important; +}.x-panel-noborder .x-panel-body-noborder { + border-width:0; +} +.x-panel-noborder .x-panel-header-noborder { + border-width:0 0 1px; + border-style:solid; +} +.x-panel-noborder .x-panel-tbar-noborder .x-toolbar { + border-width:0 0 1px; + border-style:solid; +} +.x-panel-noborder .x-panel-bbar-noborder .x-toolbar { + border-width:1px 0 0 0; + border-style:solid; +} +.x-window-noborder .x-window-mc { + border-width:0; +} +.x-window-plain .x-window-body-noborder { + border-width:0; +} +.x-tab-panel-noborder .x-tab-panel-body-noborder { + border-width:0; +} +.x-tab-panel-noborder .x-tab-panel-header-noborder { + border-width: 0 0 1px 0; +} +.x-tab-panel-noborder .x-tab-panel-footer-noborder { + border-width: 1px 0 0 0; +} +.x-tab-panel-bbar-noborder .x-toolbar { + border-width: 1px 0 0 0; + border-style:solid; +} +.x-tab-panel-tbar-noborder .x-toolbar { + border-width:0 0 1px; + border-style:solid; +} +.x-border-panel { + position:absolute !important; + left:0; + top:0; +} +.x-tool-collapse-south { + background-position:0 -195px; +} +.x-tool-collapse-south-over { + background-position:-15px -195px; +} +.x-tool-collapse-north { + background-position:0 -210px; +} +.x-tool-collapse-north-over { + background-position:-15px -210px; +} +.x-tool-collapse-west { + background-position:0 -180px; +} +.x-tool-collapse-west-over { + background-position:-15px -180px; +} +.x-tool-collapse-east { + background-position:0 -165px; +} +.x-tool-collapse-east-over { + background-position:-15px -165px; +} +.x-tool-expand-south { + background-position:0 -210px; +} +.x-tool-expand-south-over { + background-position:-15px -210px; +} +.x-tool-expand-north { + background-position:0 -195px; +} +.x-tool-expand-north-over { + background-position:-15px -195px; +} +.x-tool-expand-west { + background-position:0 -165px; +} +.x-tool-expand-west-over { + background-position:-15px -165px; +} +.x-tool-expand-east { + background-position:0 -180px; +} +.x-tool-expand-east-over { + background-position:-15px -180px; +} +.x-tool-expand-north, .x-tool-expand-south { + float:right; + margin:3px; +} +.x-tool-expand-east, .x-tool-expand-west { + float:none; + margin:3px auto; +} +.x-accordion-hd .x-tool-toggle { + background-position:0 -255px; +} +.x-accordion-hd .x-tool-toggle-over { + background-position:-15px -255px; +} +.x-panel-collapsed .x-accordion-hd .x-tool-toggle { + background-position:0 -240px; +} +.x-panel-collapsed .x-accordion-hd .x-tool-toggle-over { + background-position:-15px -240px; +} +.x-accordion-hd { + padding-top:4px; + padding-bottom:3px; + border-top:0 none; + background: transparent repeat-x 0 -9px; +} +.x-layout-collapsed{ + position:absolute; + left:-10000px; + top:-10000px; + visibility:hidden; + width:20px; + height:20px; + overflow:hidden; + border:1px solid; + z-index:20; +} +.ext-border-box .x-layout-collapsed{ + width:22px; + height:22px; +} +.x-layout-collapsed-over{ + cursor:pointer; +} +.x-layout-collapsed-west .x-layout-collapsed-tools, .x-layout-collapsed-east .x-layout-collapsed-tools{ + position:absolute; + top:0; + left:0; + width:20px; + height:20px; +} +.x-layout-split{ + position:absolute; + height:5px; + width:5px; + line-height:1px; + font-size:1px; + z-index:3; + background-color:transparent; +} +.ext-strict .ext-ie6 .x-layout-split{ + background-color: #fff !important; + filter: alpha(opacity=1); +} +.x-layout-split-h{ + background-image:url(../images/default/s.gif); + background-position: left; +} +.x-layout-split-v{ + background-image:url(../images/default/s.gif); + background-position: top; +} +.x-column-layout-ct { + overflow:hidden; + zoom:1; +} +.x-column { + float:left; + padding:0; + margin:0; + overflow:hidden; + zoom:1; +} +.x-column-inner { + overflow:hidden; + zoom:1; +} +.x-layout-mini { + position:absolute; + top:0; + left:0; + display:block; + width:5px; + height:35px; + cursor:pointer; + opacity:.5; + -moz-opacity:.5; + filter:alpha(opacity=50); +} +.x-layout-mini-over, .x-layout-collapsed-over .x-layout-mini{ + opacity:1; + -moz-opacity:1; + filter:none; +} +.x-layout-split-west .x-layout-mini { + top:48%; +} +.x-layout-split-east .x-layout-mini { + top:48%; +} +.x-layout-split-north .x-layout-mini { + left:48%; + height:5px; + width:35px; +} +.x-layout-split-south .x-layout-mini { + left:48%; + height:5px; + width:35px; +} +.x-layout-cmini-west .x-layout-mini { + top:48%; +} +.x-layout-cmini-east .x-layout-mini { + top:48%; +} +.x-layout-cmini-north .x-layout-mini { + left:48%; + height:5px; + width:35px; +} +.x-layout-cmini-south .x-layout-mini { + left:48%; + height:5px; + width:35px; +} +.x-layout-cmini-west, .x-layout-cmini-east { + border:0 none; + width:5px !important; + padding:0; + background:transparent; +} +.x-layout-cmini-north, .x-layout-cmini-south { + border:0 none; + height:5px !important; + padding:0; + background:transparent; +} +.x-viewport, .x-viewport body { + margin: 0; + padding: 0; + border: 0 none; + overflow: hidden; + height: 100%; +} +.x-abs-layout-item { + position:absolute !important; + left:0; + top:0; +} +.x-abs-layout-container { + position:relative; +} +.ext-ie input.x-abs-layout-item, .ext-ie textarea.x-abs-layout-item { + margin:0; +} +.x-box-layout-ct { + overflow:hidden; + zoom:1; +} +.x-box-inner { + overflow:hidden; + zoom:1; + position:relative; + left:0; + top:0; +} +.x-box-item { + position:absolute !important; + left:0; + top:0; +} +.x-border-layout-ct { + position: relative; +} +.x-progress-wrap { + border:1px solid; + overflow:hidden; +} +.x-progress-inner { + height:18px; + background:repeat-x; + position:relative; +} +.x-progress-bar { + height:18px; + float:left; + width:0; + background: repeat-x left center; + border-top:1px solid; + border-bottom:1px solid; + border-right:1px solid; +} +.x-progress-text { + padding:1px 5px; + overflow:hidden; + position:absolute; + left:0; + text-align:center; +} +.x-progress-text-back { + line-height:16px; +} +.ext-ie .x-progress-text-back { + line-height:15px; +} +.x-slider { + zoom:1; +} +.x-slider-thumb { + line-height: 0px; + font-size: 0px; + position: absolute; + background:transparent no-repeat 0 0; +} +.x-slider-inner { + position:relative; + left:0; + top:0; + overflow:visible; + zoom:1; +} +.x-slider-focus { + position:absolute; + left:0; + top:0; + width:1px; + height:1px; + line-height:1px; + font-size:1px; + -moz-outline:0 none; + outline:0 none; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: ignore + display:block; + overflow:hidden; +} +.x-slider-horz { + padding-left:7px; + background:transparent no-repeat 0 -22px; +} +.x-slider-horz .x-slider-end { + padding-right:7px; + zoom:1; + background:transparent no-repeat right -44px; +} +.x-slider-horz .x-slider-inner { + background:transparent repeat-x 0 0; + height:22px; +} +.x-slider-horz .x-slider-thumb { + width:14px; + height:15px; + left:0; + top:3px; +} +.x-slider-horz .x-slider-thumb-over { + background-position: -14px -15px; +} +.x-slider-horz .x-slider-thumb-drag { + background-position: -28px -30px; +} +.x-slider-vert { + padding-top:7px; + background:transparent no-repeat -44px 0; + width:22px; +} +.x-slider-vert .x-slider-end { + padding-bottom:7px; + zoom:1; + background:transparent no-repeat -22px bottom; +} +.x-slider-vert .x-slider-inner { + background:transparent repeat-y 0 0; +} +.x-slider-vert .x-slider-thumb { + width:15px; + height:14px; + left:3px; + bottom:0; +} +.x-slider-vert .x-slider-thumb-over { + background-position: -15px -14px; +} +.x-slider-vert .x-slider-thumb-drag { + background-position: -30px -28px; +} +.x-window-dlg .x-window-body { + border:0 none !important; + padding:5px 10px; + overflow:hidden !important; +} +.x-window-dlg .x-window-mc { + border:0 none !important; +} +.x-window-dlg .ext-mb-input { + margin-top:4px; + width:95%; +} +.x-window-dlg .ext-mb-textarea { + margin-top:4px; +} +.x-window-dlg .x-progress-wrap { + margin-top:4px; +} +.ext-ie .x-window-dlg .x-progress-wrap { + margin-top:6px; +} +.x-window-dlg .x-msg-box-wait { + background:transparent no-repeat left; + display:block; + width:300px; + padding-left:18px; + line-height:18px; +} +.x-window-dlg .ext-mb-icon { + float:left; + width:47px; + height:32px; +} +.ext-ie .x-window-dlg .ext-mb-icon { + width:44px; +} +.x-window-dlg .x-dlg-icon .ext-mb-content{ + zoom: 1; margin-left: 47px; +} +.x-window-dlg .ext-mb-info, .x-window-dlg .ext-mb-warning, .x-window-dlg .ext-mb-question, .x-window-dlg .ext-mb-error { + background:transparent no-repeat top left; +} +.ext-gecko2 .ext-mb-fix-cursor { + overflow:auto; +} +.arrow-top { + background: url(../images/gxt/icons/top2.gif) no-repeat center left !important; +} +.arrow-bottom { + background: url(../images/gxt/icons/bottom2.gif) no-repeat center left !important; +} +.arrow-up { + background: url(../images/gxt/icons/up2.gif) no-repeat center left !important; +} +.arrow-down { + background: url(../images/gxt/icons/down2.gif) no-repeat center left !important; +} +.arrow-left { + background: url(../images/gxt/icons/left2.gif) no-repeat center left !important; +} +.arrow-double-left { + background: url(../images/gxt/icons/doubleleft2.gif) no-repeat center left !important; +} +.arrow-right { + background: url(../images/gxt/icons/right2.gif) no-repeat center left !important; +} +.arrow-double-right { + background: url(../images/gxt/icons/doubleright2.gif) no-repeat center left !important; +} +.x-info { + border-style: solid; + border-color: #99bbe8; + border-width: 0; + z-index: 99999999; +} + +.x-info-header { + overflow: hidden; + zoom: 1; + color: black; + font: bold 13px tahoma, arial, verdana, sans-serif; + padding: 5px 3px 4px 5px; + line-height: 15px; + background: transparent url(../images/default/panel/white-top-bottom.gif) repeat-x 0 -1px; +} + +.x-info-body { + border-top: 0 none; + overflow: hidden; + background: white; + position: relative; /* added for item scroll positioning */ +} + +.x-info-header { + overflow: hidden; + zoom: 1; +} + +.x-info-tl .x-info-header { + color: #555555; + font-family: tahoma, arial, sans-serif; + font-size: 13px; + font-size-adjust: none; + font-stretch: normal; + font-style: normal; + font-variant: normal; + font-weight: bold; + line-height: normal; + padding: 5px 0 4px 0; + border: 0 none; + background: transparent; +} + +.x-info-tl .x-info-icon,.x-window-tl .x-info-icon { + padding-left: 20px !important; + background-repeat: no-repeat; + background-position: 0 4px; + zoom: 1; +} + +.x-info-inline-icon { + width: 16px; + height: 16px; + background-repeat: no-repeat; + background-position: 0 0; + vertical-align: middle; + margin-right: 4px; + margin-top: -1px; + margin-bottom: -1px; +} + +.x-info-tc { + background: transparent url(../images/gxt/info/top-bottom.gif) repeat-x 0 0; + overflow: hidden; +} + +/* fix ie7 strict mode bug */ +.ext-ie7 .x-info-tc { + overflow: visible; +} + +.x-info-tl { + background: transparent url(../images/gxt/info/corners-sprite.gif) no-repeat 0 0; + padding-left: 6px; + zoom: 1; +} + +.x-info-tr { + background: transparent url(../images/gxt/info/corners-sprite.gif) no-repeat right 0; + zoom: 1; + padding-right: 6px; +} + +.x-info-bc { + background: transparent url(../images/default/panel/top-bottom.gif) repeat-x 0 bottom; + zoom: 1; + font-size: 0px; +} + +.x-info-bc .x-info-footer { + zoom: 1; +} + +.x-info-bl { + background: transparent url(../images/default/panel/corners-sprite.gif) no-repeat 0 bottom; + padding-left: 6px; + zoom: 1; +} + +.x-info-br { + background: transparent url(../images/default/panel/corners-sprite.gif) no-repeat right bottom; + padding-right: 6px; + zoom: 1; +} + +.x-info-mc { + border: 0 none; + padding: 0; + margin: 0; + font: normal 11px tahoma, arial, helvetica, sans-serif; + background: #dfe8f6; +} + +.x-info-mc .x-info-body { + background: transparent; + border: 0 none; +} + +.x-info-ml { + background: #fff url(../images/default/panel/left-right.gif) repeat-y 0 0; + padding-left: 6px; + zoom: 1; +} + +.x-info-mr { + background: transparent url(../images/default/panel/left-right.gif) repeat-y right 0; + padding-right: 6px; + zoom: 1; +} + +.x-info-bc .x-info-footer { + padding-bottom: 6px; +} + +.x-info-nofooter .x-info-bc,.x-panel-nofooter .x-info-bc { + height: 6px; + font-size: 0; + line-height: 0; +} + +.x-info-bwrap { + overflow: hidden; + zoom: 1; +} + +.x-info-body { + overflow: hidden; + zoom: 1; + color: #555555; + font-family: tahoma, arial, sans-serif; + font-size: 12px; + font-size-adjust: none; + font-style: normal; + font-variant: normal; + font-weight: normal; +}.x-combo-over { + border: 1px dotted #B5B4B4 !important; + background: #F1F1F1; + cursor: pointer; +} + +.my-list { + border: 1px solid #99BBE8; + -moz-outline: none; + -moz-user-focus: normal; + background-color: white; + font-family: "Myriad Pro", "Myriad Web", "Tahoma", "Helvetica", "Arial", sans-serif; +} + +.my-list-notchecked { + background: url(../images/gxt/tree/notchecked.gif) no-repeat 0px 0px !important; + margin: 3px 0pt 0pt 0px; +} + +.my-list-checked { + background: url(../images/gxt/tree/checked.gif) no-repeat 0px 0px !important; + margin: 3px 0pt 0pt 0px; +} + +.ext-ie .my-list-notchecked { + margin: 2px 0pt 0pt 0px; +} + +.ext-ie .my-list-checked { + margin: 2px 0pt 0pt 0px; +} + +.my-list-flat { + border: 1px solid #6593cf; + -moz-outline: none; + -moz-user-focus: normal; + background-color: white; + cursor: default; +} + +.my-list-item { + cursor: pointer; + -moz-outline: none; + -moz-user-focus: normal; +} + +.my-list-flat .my-list-item { + height: 19px; + border: 1px solid white; +} + +.my-list-flat .my-list-item-over { + background-color: #F1F1F1; + border: 1px dotted #B5B4B4; +} + +.my-list-flat .my-list-item-sel { + background-color: #DFE8F6; + border: 1px dotted #9EB8ED; +} + +.my-list-flat .my-list-item-over .my-list-item-l { + background: none; +} + +.my-list-flat .my-list-item-over .my-list-item-icon,.my-list-flat .my-list-item-over .my-list-item-ml,.my-list-flat .my-list-item-over .my-list-item-c + { + background: none; +} + +.my-list-flat .my-list-item-over .my-list-item-r { + background: none; +} + +.my-list-flat .my-list-item-sel .my-list-item-l { + background: none; +} + +.my-list-flat .my-list-item-sel .my-list-item-icon,.my-list-flat .my-list-item-sel .my-list-item-ml,.my-list-flat .my-list-item-sel .my-list-item-c + { + background: none; +} + +.my-list-flat .my-list-item-sel .my-list-item-r { + background: none; +} + +.my-list-item-text { + font-size: 11px; + padding-top: 3px; + padding-left: 2px; + white-space: nowrap; + overflow: hidden; + line-height: 19px; +} + +.my-list-item-l div { + width: 5px; +} + +.my-list-item-ml { + width: 18px; +} + +.my-list-item-c { + width: 100%; +} + +.my-list-item-r div { + width: 3px; +} + +.my-list-item-over .my-list-item-l { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat left -57px; +} + +.my-list-item-over .my-list-item-icon,.my-list-item-over .my-list-item-check,.my-list-item-over .my-list-item-c + { + background: url(../images/gxt/shared/select-19-bg.gif) repeat-x left -95px; +} + +.my-list-item-over .my-list-item-r { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat right -76px; +} + +.my-list-item-sel .my-list-item-l { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat left 0px; +} + +.my-list-item-sel .my-list-item-icon,.my-list-item-sel .my-list-item-check,.my-list-item-sel .my-list-item-c + { + background: url(../images/gxt/shared/select-19-bg.gif) left -38px; +} + +.my-list-item-sel .my-list-item-r { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat right -19px; +}.x-view { + -moz-outline: none; + -moz-user-focus: normal; + padding: 1px; + background-color: white; + cursor: default; + border: 1px solid #98C0F4; + overflow: hidden; +} + +.x-view-item { + border: 1px solid #FFFFFF; + font-family: tahoma, arial, helvetica, sans-serif; + font-size: 12px; + font-size-adjust: none; + font-stretch: normal; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: normal; + overflow: hidden; + padding: 2px; + white-space: nowrap; +} + +.x-view-item-over { + background: #efefef url(../images/default/grid/row-over.gif) repeat-x left top; + border: 1px dotted #dddddd !important; + cursor: pointer; +} + +.x-view-item-sel { + background: #DFE8F6 none repeat scroll 0%; + border: 1px dotted #A3BAE9 !important; + cursor: pointer; +} +.x-view-item-check { + padding: 0px; +} +.x-view-item-check td { + font-family: tahoma, arial, helvetica, sans-serif; + font-size: 12px; + font-size-adjust: none; + font-stretch: normal; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: normal; + white-space: nowrap; + vertical-align: middle; + padding-left: 1px; +}.x-splitbar-shim { + filter: alpha(opacity = 1); + opacity: 0; + position: absolute; + width: 100%; + height: 100%; + z-index: 10; + background-color: white; + -moz-user-select: none; + -khtml-user-select: none; + user-select: none; + -moz-outline: none; + -moz-user-focus: normal; +} + +.x-vsplitbar { + background: url(../images/default/s.gif); + position: absolute; + z-index: 3; + cursor: e-resize; + cursor: col-resize; +} + +.x-hsplitbar { + background: url(../images/default/s.gif); + position: absolute; + font-size: 1px; + line-height: 1px; + z-index: 3; + cursor: s-resize; + cursor: row-resize; +} + +.x-splitbar-proxy { + position: absolute; + background-color: #929090; + font-size: 1px; + line-height: 1px; + z-index: 200; +} + +.my-splitbar-shim { + filter: alpha(opacity = 1); + opacity: 0; + position: absolute; + width: 100%; + height: 100%; + z-index: 10; + background-color: white; + -moz-user-select: none; + -khtml-user-select: none; + user-select: none; + -moz-outline: none; + -moz-user-focus: normal; +} + +.my-splitbar-transparent { + background: none; + font-size: 1px; + line-height: 1px; + z-index: 2000; +} + +.my-splitbar-proxy { + position: absolute; + background-color: #929090; + font-size: 1px; + line-height: 1px; + z-index: 200; +}.x-status { + padding: 0 4px; + height: 21px; + line-height: 21px !important; + cursor: default; +} +.x-status .x-status-text{ + padding: 2px; + line-height: 21px !important; +} +.x-status-icon { + padding-left: 25px !important; + background: transparent no-repeat left center; +} +.x-status-busy { + background-image: url(../images/default/grid/loading.gif); +} +.x-status-text-panel { + border: 1px solid; + border-color: #99bbe8 #fff #fff #99bbe8; +} +.my-tbl { + border: 1px solid #99BBE8; + cursor: default; + background-color: white; + overflow: hidden; + -moz-outline: none; + -moz-user-focus: normal; + font-family: arial, tahoma, helvetica, sans-serif; + font-size: 11px; + table-layout: fixed; +} + +.my-tbl-col-overflow { + overflow: hidden; +} + +.ext-ie .my-tbl-col-overflow { + +} + +.my-tbl-col-text { + color: black; + padding: 5px 4px 0 4px; + display: block; + white-space: nowrap; + font-family: arial, tahoma, helvetica, sans-serif; + font-size: 11px; +} + +.my-tbl-col { + border-right: 1px solid #D5D5D5; + background: url(../images/gxt/table/vs-column-bg.gif) repeat-x; +} + +.my-tbl-col-splitter { + position: absolute; + top: 0; + width: 6px; + z-index: 100; + height: 100%; + right: 0px; +} + +.my-tbl-col-over { + background: url(../images/gxt/table/vs-column-bg.gif) repeat-x 0px -24px; +} + +.my-tbl-col-sort { + background-position: 0px -48px; +} + +.my-icon-asc { + background-image: url(../images/gxt/icons/hmenu-asc.gif) !important; +} + +.my-icon-desc { + background-image: url(../images/gxt/icons/hmenu-desc.gif) !important; +} + +.my-tbl-col-asc { + background: url(../images/gxt/table/vsort-asc.gif) no-repeat 50% top; +} + +.my-tbl-col-desc { + background: url(../images/gxt/table/vsort-desc.gif) no-repeat 50% top; +} + +.my-tbl-col-splitter { + background: none; +} + +.my-tbl-data { + background-color: white; + overflow: hidden; + -moz-outline: none; + -moz-user-focus: normal; +} + +.my-tbl-item { + border-top: 1px solid white; + border-bottom: 1px solid white; + border-bottom: 1px solid #EDEDED; + cursor: default; + -moz-outline: none; + -moz-user-focus: normal; +} + +.my-tbl-item table { + -moz-outline: none; + -moz-user-focus: normal; + table-layout: fixed; +} + +.my-tbl-data .my-tbl-item-cell { + -moz-outline: none; + -moz-user-focus: normal; +} + +.my-tbl-item td { + -moz-user-select: none; + -moz-outline: none; + -moz-user-focus: normal; +} + +.my-tbl-vlines .my-tbl-data .my-tbl-item-cell-overflow { + border-right: 1px solid #EDEDED; +} + +.my-tbl-data .my-tbl-item-cell-overflow { + white-space: nowrap; + overflow: hidden; + -moz-outline: none; + -moz-user-focus: normal; +} + +.my-tbl-data .my-tbl-item-cell-text { + padding: 3px 4px; + font-family: arial, tahoma, helvetica, sans-serif; + font-size: 11px; + -moz-outline: none; + -moz-user-focus: normal; +} + +.my-tbl-data .my-tbl-item-cell-widget { + padding: 1px 4px; +} + +.my-tbl-data tr { + overflow: hidden; +} + +.my-tbl-item-over { + border-top: 1px solid #dddddd; + border-bottom: 1px solid #dddddd; + background: #efefef url(../images/default/grid/row-over.gif) repeat-x left top; +} + +.my-tbl-item-sel { + background-image: none !important; + background-color: #D9E1ED !important; + border-top: 1px dotted #9EB8ED !important; + border-bottom: 1px dotted #9EB8ED !important; +} + +.ext-ie .my-tbl TD .x-form-text { + POSITION: static; + TOP: 0px; +}.tree-folder { + background: url(../images/gxt/icons/folder-closed.gif) no-repeat -1px -1px; +} + +.tree-folder-open { + background: url(../images/gxt/icons/folder.gif) no-repeat -1px -1px; +} + +.my-treetbl-tree { + cursor: default; +} + +.my-treetblitem,.my-treetblitem table,.my-treetblitem table td { + -moz-outline: none; + -moz-user-focus: normal; +} + +.my-treetblitem td { + height: 19px; +} + +.my-treetbl-indent { + line-height: 1px; + font-size: 1px; +} + +.my-treetbl-joint div { + width: 15px; + height: 19px; + line-height: 1px; + font-size: 1px; +} + +.my-treetbl-left,.my-treetbl-left div,.my-treetbl-right { + line-height: 1px; + font-size: 1px; + width: 3px; +} + +.my-treetbl-left div,.my-treetbl-right div { + width: 3px; +} + +.my-treetbl-check div { + width: 17px; + height: 19px; + line-height: 1px; + font-size: 1px; + display: block; +} + +.my-treetbl-icon div { + width: 16px; + height: 16px; + margin-top: 1px; + cursor: pointer; + background-repeat: no-repeat; + background-position: center; +} + +.my-ie .my-treetbl-icon { + padding-top: 2px; +} + +.my-ie .my-treetbl-icon div { + position: static; +} + +.my-treetbl-item-text span { + font-family: arial, tahoma, helvetica, sans-serif; + font-size: 12px; + white-space: nowrap; + padding-left: 3px; + padding-right: 3px; + display: block; + height: 15px; + cursor: pointer; +} + +.my-treetbl-over .my-treetbl-left { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat left -57px; +} + +.my-treetbl-over .my-treetbl-right { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat right -76px; +} + +.my-treetbl-over .my-treetbl-check,.my-treetbl-over .my-treetbl-icon,.my-treetbl-over .my-treetbl-item-text + { + background: url(../images/gxt/shared/select-19-bg.gif) left -95px; +} + +.my-treetbl-sel .my-treetbl-left { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat left 0px; +} + +.my-treetbl-sel .my-treetbl-right { + background: url(../images/gxt/shared/select-19-bg.gif) no-repeat right -19px; +} + +.my-treetbl-sel .my-treetbl-check,.my-treetbl-sel .my-treetbl-icon,.my-treetbl-sel .my-treetbl-item-text + { + background: url(../images/gxt/shared/select-19-bg.gif) left -38px; +} + +.my-treetbl-close { + background: url(../images/gxt/tree/vnode_transparent.gif) no-repeat 0px 1px; +} + +.my-treetbl-open { + background: url(../images/gxt/tree/vnode_transparent.gif) no-repeat 0px -32px; +} + +.my-treetbl-joint-over .my-treetbl-open { + background: url(../images/gxt/tree/vnode_transparent.gif) no-repeat 0px -48px; +} + +.my-treetbl-joint-over .my-treetbl-close { + background: url(../images/gxt/tree/vnode_transparent.gif) no-repeat 0px -15px; +} + +.my-treetbl-notchecked { + background: url(../images/gxt/tree/notchecked.gif) no-repeat 0px 50%; +} + +.my-treetbl-checked { + background: url(../images/gxt/tree/checked.gif) no-repeat 0px 50%; +} + +.my-treetbl-loading .tree-folder { + background: url(../images/gxt/icons/wait.gif) no-repeat 0px -1px; +} + +.my-treetbl-loading .my-treetbl-item-text span { + font-style: italic; +} + +.my-treetbl { + border: 1px solid #99BBE8; + cursor: default; + background-color: white; + overflow: hidden; + -moz-outline: none; + -moz-user-focus: normal; +} + +.my-treetbl-col-overflow { + overflow: hidden; + -moz-outline: none; + -moz-user-focus: normal; +} + +.my-treetbl-col-text { + color: black; + padding: 5px 4px 0 4px; + display: block; + white-space: nowrap; + font-family: arial, tahoma, helvetica, sans-serif; + font-size: 12px; +} + +.my-treetbl-col { + border-right: 1px solid #D5D5D5; + background: url(../images/gxt/table/vs-column-bg.gif) repeat-x; +} + +.my-treetbl-col-splitter { + position: absolute; + top: 0; + width: 6px; + z-index: 100; + height: 100%; + right: 0px; +} + +.my-treetbl-col-over { + background: url(../images/gxt/table/vs-column-bg.gif) repeat-x 0px -24px; +} + +.my-treetbl-col-sort { + background-position: 0px -48px; +} + +.my-treetbl-col-asc { + background: url(../images/gxt/table/vsort-asc.gif) no-repeat 50% top; +} + +.my-treetbl-col-desc { + background: url(../images/gxt/table/vsort-desc.gif) no-repeat 50% top; +} + +.my-treetbl-col-splitter { + background: none; +} + +.my-treetbl-data { + background-color: white; + overflow: hidden; +} + +.my-treetbl-data .my-treetbl-cell { + height: 20px; + -moz-outline: none; + -moz-user-focus: normal; +} + +.my-treetbl-data .my-treetbl-cell-overflow { + white-space: nowrap; + overflow: hidden; +} + +.my-treetbl-data .my-treetbl-cell-text { + padding: 0px 0px; + font-family: arial, tahoma, helvetica, sans-serif; + font-size: 12px; +} + +.my-treetbl-data tr { + overflow: hidden; +} + +.my-treetbl-item { + border-top: 1px solid white; + border-bottom: 1px solid white; + border-bottom: 1px solid #EDEDED; + cursor: default; + -moz-outline: none; + -moz-user-focus: normal; +} + +.my-treetbl-item-over { + border-top: 1px solid #dddddd; + border-bottom: 1px solid #dddddd; + background: #efefef url(../images/default/grid/row-over.gif) repeat-x left top; +} + +.my-treetbl-item-sel { + background-image: none; + background-color: #D9E1ED; + border-top: 1px dotted #9EB8ED; + border-bottom: 1px dotted #9EB8ED; +} + +.my-treetbl .x-grid3-td-numberer { + background: transparent url(../images/gxt/tree/tree-table-special-col.gif) repeat-y + scroll left center; + height: 19px; + line-height: normal; + padding-left: 0px; + margin-left: 0px; +} + +.x-grid3-td-numberer div { + font-size: 11px; + font-family: "segoe ui", tahoma, arial, sans-serif; + color: #444444; + padding: 3px 0px 0 5px !important; +} + +.ext-ie .my-treetbl .x-grid3-td-numberer { + height: 20px; +} + +.my-treetbl-item-sel .x-grid3-td-numberer { + background: transparent url(../images/gxt/tree/tree-table-special-col-sel.gif) repeat-y + scroll left center; +}.ext-el-mask { + background-color: #ccc; +} +.ext-el-mask-msg { + border-color:#6593cf; + background-color:#c3daf9; + background-image:url(../images/default/box/tb-blue.gif); +} +.ext-el-mask-msg div { + background-color: white; + border-color:#a3bad9; + color:#222; + font:normal 11px tahoma, arial, helvetica, sans-serif; +} +.x-mask-loading div { + background-color:#fbfbfb; + background-image:url(../images/default/grid/loading.gif); +} +.x-item-disabled { + color: black; +} +.x-item-disabled * { + color: black !important; +} +.x-splitbar-proxy { + background-color: #aaa; +} +.x-color-palette a { + border-color:#fff; +} +.x-color-palette a.x-color-palette-hover, .x-color-palette a.x-color-palette-sel { + border-color:#8bb8f3; + background-color: #deecfd; +} +.x-color-palette em { + border-color:#aca899; +} +.x-ie-shadow { + background-color:#777; +} +.x-shadow .xsmc { + background-image: url(../images/default/shadow-c.png); +} +.x-shadow .xsml, .x-shadow .xsmr { + background-image: url(../images/default/shadow-lr.png); +} +.x-shadow .xstl, .x-shadow .xstc, .x-shadow .xstr, .x-shadow .xsbl, .x-shadow .xsbc, .x-shadow .xsbr{ + background-image: url(../images/default/shadow.png); +} +.loading-indicator { + font-size: 11px; + background-image: url(../images/default/grid/loading.gif); +} +.x-spotlight { + background-color: #ccc; +} +.x-aria-focusframe-side { + background-color: #15428B; + line-height: 2px; + font-size: 2px; +} +.x-tab-panel-header, .x-tab-panel-footer { + background-color: #deecfd; + border-color:#8db2e3; + overflow:hidden; + zoom:1; +} +.x-tab-panel-header, .x-tab-panel-footer { + border-color:#8db2e3; +} +ul.x-tab-strip-top{ + background-color:#cedff5; + background-image: url(../images/default/tabs/tab-strip-bg.gif); + border-bottom-color:#8db2e3; +} +ul.x-tab-strip-bottom{ + background-color:#cedff5; + background-image: url(../images/default/tabs/tab-strip-btm-bg.gif); + border-top-color:#8db2e3; +} +.x-tab-panel-header-plain .x-tab-strip-spacer, +.x-tab-panel-footer-plain .x-tab-strip-spacer { + border-color:#8db2e3; + background-color: #deecfd; +} +.x-tab-strip span.x-tab-strip-text { + font:normal 11px tahoma,arial,helvetica; + color:#416aa3; +} +.x-tab-strip-over span.x-tab-strip-text { + color:#15428b; +} +.x-tab-strip-active span.x-tab-strip-text { + color:#15428b; + font-weight:bold; +} +.x-tab-strip-disabled .x-tabs-text { + color:#aaaaaa; +} +.x-tab-strip-top .x-tab-right, .x-tab-strip-top .x-tab-left, .x-tab-strip-top .x-tab-strip-inner{ + background-image: url(../images/default/tabs/tabs-sprite.gif); +} +.x-tab-strip-bottom .x-tab-right { + background-image: url(../images/default/tabs/tab-btm-inactive-right-bg.gif); +} +.x-tab-strip-bottom .x-tab-left { + background-image: url(../images/default/tabs/tab-btm-inactive-left-bg.gif); +} +.x-tab-strip-bottom .x-tab-strip-active .x-tab-right { + background-image: url(../images/default/tabs/tab-btm-right-bg.gif); +} +.x-tab-strip-bottom .x-tab-strip-active .x-tab-left { + background-image: url(../images/default/tabs/tab-btm-left-bg.gif); +} +.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close { + background-image:url(../images/default/tabs/tab-close.gif); +} +.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{ + background-image:url(../images/default/tabs/tab-close.gif); +} +.x-tab-panel-body { + border-color:#8db2e3; + background-color:#fff; +} +.x-tab-panel-body-top { + border-top: 0 none; +} +.x-tab-panel-body-bottom { + border-bottom: 0 none; +} +.x-tab-scroller-left { + background-image:url(../images/default/tabs/scroll-left.gif); + border-bottom-color:#8db2e3; +} +.x-tab-scroller-left-over { + background-position: 0 0; +} +.x-tab-scroller-left-disabled { + background-position: -18px 0; + opacity:.5; + -moz-opacity:.5; + filter:alpha(opacity=50); + cursor:default; +} +.x-tab-scroller-right { + background-image:url(../images/default/tabs/scroll-right.gif); + border-bottom-color:#8db2e3; +} +.x-tab-panel-bbar .x-toolbar, .x-tab-panel-tbar .x-toolbar { + border-color:#99bbe8; +} +.x-form-field { + font: normal 12px tahoma, arial, helvetica, sans-serif; +} + +.x-form-text,textarea.x-form-field { + background-color: #fff; + background-image: url(../images/default/form/text-bg.gif); + border-color: #b5b8c8; +} + +.x-form-select-one { + background-color: #fff; + border-color: #b5b8c8; +} + +.x-form-check-group-label { + border-bottom: 1px solid #99bbe8; + color: #15428b; +} + +.x-editor .x-form-check-wrap { + background-color: #fff; +} + +.x-form-field-wrap .x-form-trigger { + background-image: url(../images/default/form/trigger.gif); + border-bottom-color: #b5b8c8; +} + +.x-form-field-wrap .x-form-date-trigger { + background-image: url(../images/default/form/date-trigger.gif); +} + +.x-form-field-wrap .x-form-clear-trigger { + background-image: url(../images/default/form/clear-trigger.gif); +} + +.x-form-field-wrap .x-form-search-trigger { + background-image: url(../images/default/form/search-trigger.gif); +} + +.x-trigger-wrap-focus .x-form-trigger { + border-bottom-color: #7eadd9; +} + +.x-item-disabled .x-form-trigger-over { + border-bottom-color: #b5b8c8; +} + +.x-item-disabled .x-form-trigger-click { + border-bottom-color: #b5b8c8; +} + +.x-form-focus,textarea.x-form-focus { + border-color: #7eadd9; +} + +.x-form-invalid,textarea.x-form-invalid { + background-color: #fff; + background-image: url(../images/default/grid/invalid_line.gif); + border-color: #c30; +} + +.ext-safari .x-form-invalid { + background-color: #fee; + border-color: #ff7870; +} + +.x-form-inner-invalid,textarea.x-form-inner-invalid { + background-color: #fff; + background-image: url(../images/default/grid/invalid_line.gif); +} + +.x-form-grow-sizer { + font: normal 12px tahoma, arial, helvetica, sans-serif; +} + +.x-form-item { + font: normal 12px tahoma, arial, helvetica, sans-serif; +} + +.x-form-invalid-msg { + color: #c0272b; + font: normal 11px tahoma, arial, helvetica, sans-serif; + background-image: url(../images/default/shared/warning.gif); +} + +.x-form-empty-field { + color: gray; +} + +.x-small-editor .x-form-field { + font: normal 11px arial, tahoma, helvetica, sans-serif; +} + +.ext-safari .x-small-editor .x-form-field { + font: normal 12px arial, tahoma, helvetica, sans-serif; +} + +.x-form-invalid-icon { + background-image: url(../images/default/form/exclamation.gif); +} + +.x-fieldset { + border-color: #b5b8c8; +} + +.x-fieldset legend { + font: bold 11px tahoma, arial, helvetica, sans-serif; + color: #15428b; +} + +.x-editor .x-form-check-wrap { + border-color: #7eadd9; +}.x-btn{ + font:normal 11px tahoma, verdana, helvetica; +} +.x-btn button{ + font:normal 11px arial,tahoma,verdana,helvetica; + color:#333; +} +.x-btn em { + font-style:normal; + font-weight:normal; +} +.x-btn-tl, .x-btn-tr, .x-btn-tc, .x-btn-ml, .x-btn-mr, .x-btn-mc, .x-btn-bl, .x-btn-br, .x-btn-bc{ + background-image:url(../images/default/button/btn.gif); +} +.x-btn-click .x-btn-text, .x-btn-menu-active .x-btn-text, .x-btn-pressed .x-btn-text{ + color:#000; +} +.x-btn-disabled *{ + color:gray !important; +} +.x-btn-mc em.x-btn-arrow { + background-image:url(../images/default/button/arrow.gif); +} +.x-btn-mc em.x-btn-split { + background-image:url(../images/default/button/s-arrow.gif); +} +.x-btn-over .x-btn-mc em.x-btn-split, .x-btn-click .x-btn-mc em.x-btn-split, .x-btn-menu-active .x-btn-mc em.x-btn-split, .x-btn-pressed .x-btn-mc em.x-btn-split { + background-image:url(../images/default/button/s-arrow-o.gif); +} +.x-btn-mc em.x-btn-arrow-bottom { + background-image:url(../images/default/button/s-arrow-b-noline.gif); +} +.x-btn-mc em.x-btn-split-bottom { + background-image:url(../images/default/button/s-arrow-b.gif); +} +.x-btn-over .x-btn-mc em.x-btn-split-bottom, .x-btn-click .x-btn-mc em.x-btn-split-bottom, .x-btn-menu-active .x-btn-mc em.x-btn-split-bottom, .x-btn-pressed .x-btn-mc em.x-btn-split-bottom { + background-image:url(../images/default/button/s-arrow-bo.gif); +} +.x-btn-group-header { + color: #3e6aaa; +} +.x-btn-group-tc { + background-image: url(../images/default/button/group-tb.gif); +} +.x-btn-group-tl { + background-image: url(../images/default/button/group-cs.gif); +} +.x-btn-group-tr { + background-image: url(../images/default/button/group-cs.gif); +} +.x-btn-group-bc { + background-image: url(../images/default/button/group-tb.gif); +} +.x-btn-group-bl { + background-image: url(../images/default/button/group-cs.gif); +} +.x-btn-group-br { + background-image: url(../images/default/button/group-cs.gif); +} +.x-btn-group-ml { + background-image: url(../images/default/button/group-lr.gif); +} +.x-btn-group-mr { + background-image: url(../images/default/button/group-lr.gif); +} +.x-btn-group-notitle .x-btn-group-tc { + background-image: url(../images/default/button/group-tb.gif); +} +.x-toolbar{ + border-color:#a9bfd3; + background-color:#d0def0; + background-image:url(../images/default/toolbar/bg.gif); +} +.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{ + font:normal 11px arial,tahoma, helvetica, sans-serif; +} +.x-toolbar .x-item-disabled { + color:gray; +} +.x-toolbar .x-item-disabled * { + color:gray; +} +.x-toolbar .x-btn-mc em.x-btn-split { + background-image:url(../images/default/button/s-arrow-noline.gif); +} +.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split, .x-toolbar .x-btn-click .x-btn-mc em.x-btn-split, +.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split, .x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split +{ + background-image:url(../images/default/button/s-arrow-o.gif); +} +.x-toolbar .x-btn-mc em.x-btn-split-bottom { + background-image:url(../images/default/button/s-arrow-b-noline.gif); +} +.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split-bottom, .x-toolbar .x-btn-click .x-btn-mc em.x-btn-split-bottom, +.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split-bottom, .x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split-bottom +{ + background-image:url(../images/default/button/s-arrow-bo.gif); +} +.x-toolbar .xtb-sep { + background-image: url(../images/default/grid/grid-blue-split.gif); +} +.x-tbar-page-first{ + background-image: url(../images/default/grid/page-first.gif) !important; +} +.x-tbar-refresh{ + background-image: url(../images/default/grid/refresh.gif) !important; +} +.x-tbar-page-last{ + background-image: url(../images/default/grid/page-last.gif) !important; +} +.x-tbar-page-next{ + background-image: url(../images/default/grid/page-next.gif) !important; +} +.x-tbar-page-prev{ + background-image: url(../images/default/grid/page-prev.gif) !important; +} +.x-tbar-loading{ + background-image: url(../images/default/grid/loading.gif) !important; +} +.x-item-disabled .x-tbar-page-first{ + background-image: url(../images/default/grid/page-first-disabled.gif) !important; +} +.x-item-disabled .x-tbar-page-last{ + background-image: url(../images/default/grid/page-last-disabled.gif) !important; +} +.x-item-disabled .x-tbar-page-next{ + background-image: url(../images/default/grid/page-next-disabled.gif) !important; +} +.x-item-disabled .x-tbar-page-prev{ + background-image: url(../images/default/grid/page-prev-disabled.gif) !important; +} +.x-paging-info { + color:#444; +} +.x-toolbar-more-icon { + background-image: url(../images/default/toolbar/more.gif) !important; +}.x-resizable-handle { + background-color:#fff; +} +.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-east, +.x-resizable-over .x-resizable-handle-west, .x-resizable-pinned .x-resizable-handle-west +{ + background-image:url(../images/default/sizer/e-handle.gif); +} +.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south, +.x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north +{ + background-image:url(../images/default/sizer/s-handle.gif); +} +.x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north{ + background-image:url(../images/default/sizer/s-handle.gif); +} +.x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{ + background-image:url(../images/default/sizer/se-handle.gif); +} +.x-resizable-over .x-resizable-handle-northwest, .x-resizable-pinned .x-resizable-handle-northwest{ + background-image:url(../images/default/sizer/nw-handle.gif); +} +.x-resizable-over .x-resizable-handle-northeast, .x-resizable-pinned .x-resizable-handle-northeast{ + background-image:url(../images/default/sizer/ne-handle.gif); +} +.x-resizable-over .x-resizable-handle-southwest, .x-resizable-pinned .x-resizable-handle-southwest{ + background-image:url(../images/default/sizer/sw-handle.gif); +} +.x-resizable-proxy{ + border-color:#3b5a82; +} +.x-resizable-overlay{ + background-color:#fff; +} +.x-grid3 { + background-color:#fff; +} +.x-grid-panel .x-panel-mc .x-panel-body { + border-color:#99bbe8; +} +.x-grid3-hd-row .x-grid3-hd, .x-grid3-row .x-grid3-cell, .x-grid3-summary-row .x-grid3-cell{ + font:normal 11px arial, tahoma, helvetica, sans-serif; +} +.x-grid3-hd-row .x-grid3-hd { + border-left-color:#eee; + border-right-color:#d0d0d0; +} +.x-grid-row-loading { + background-color: #fff; + background-image:url(../images/default/shared/loading-balls.gif); +} +.x-grid3-row { + border-color:#ededed; + border-top-color:#fff; +} +.x-grid3-row-alt{ + background-color:#fafafa; +} +.x-grid3-row-over { + border-color:#ddd; + background-color:#efefef; + background-image:url(../images/default/grid/row-over.gif); +} +.x-grid3-resize-proxy { + background-color:#777; +} +.x-grid3-resize-marker { + background-color:#777; +} +.x-grid3-header{ + background-color:#f9f9f9; + background-image:url(../images/default/grid/grid3-hrow.gif); +} +.x-grid3-header-pop { + border-left-color:#d0d0d0; +} +.x-grid3-header-pop-inner { + border-left-color:#eee; + background-image:url(../images/default/grid/hd-pop.gif); +} +td.x-grid3-hd-over, td.sort-desc, td.sort-asc, td.x-grid3-hd-menu-open { + border-left-color:#aaccf6; + border-right-color:#aaccf6; +} +td.x-grid3-hd-over .x-grid3-hd-inner, td.sort-desc .x-grid3-hd-inner, td.sort-asc .x-grid3-hd-inner, td.x-grid3-hd-menu-open .x-grid3-hd-inner { + background-color:#ebf3fd; + background-image:url(../images/default/grid/grid3-hrow-over.gif); +} +.sort-asc .x-grid3-sort-icon { + background-image: url(../images/default/grid/sort_asc.gif); +} +.sort-desc .x-grid3-sort-icon { + background-image: url(../images/default/grid/sort_desc.gif); +} +.x-grid3-cell-text, .x-grid3-hd-text { + color:#000; +} +.x-grid3-split { + background-image: url(../images/default/grid/grid-split.gif); +} +.x-grid3-hd-text { + color:#15428b; +} +.x-dd-drag-proxy .x-grid3-hd-inner{ + background-color:#ebf3fd; + background-image:url(../images/default/grid/grid3-hrow-over.gif); + border-color:#aaccf6; +} +.col-move-top{ + background-image:url(../images/default/grid/col-move-top.gif); +} +.col-move-bottom{ + background-image:url(../images/default/grid/col-move-bottom.gif); +} +.x-grid3-row-selected { + background-image: none !important; + background-color: #dfe8f6 !important; + border-color:#a3bae9; +} +.x-grid3-cell-selected{ + background-color: #b8cfee !important; + color:#000; +} +.x-grid3-cell-selected span{ + color:#000 !important; +} +.x-grid3-cell-selected .x-grid3-cell-text{ + color:#000; +} +.x-grid3-locked td.x-grid3-row-marker, .x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker{ + background-color:#ebeadb !important; + background-image:url(../images/default/grid/grid-hrow.gif) !important; + color:#000; + border-top-color:#fff; + border-right-color:#6fa0df !important; +} +.x-grid3-locked td.x-grid3-row-marker div, .x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div{ + color:#15428b !important; +} +.x-grid3-dirty-cell { + background-image:url(../images/default/grid/dirty.gif); +} +.x-grid3-invalid-cell { + background-image:url(../images/default/grid/invalid_line.gif); +} +.x-grid3-topbar, .x-grid3-bottombar{ + font:normal 11px arial, tahoma, helvetica, sans-serif; +} +.x-grid3-bottombar .x-toolbar{ + border-top-color:#a9bfd3; +} +.x-props-grid .x-grid3-td-name .x-grid3-cell-inner{ + background-image:url(../images/default/grid/grid3-special-col-bg.gif) !important; + color:#000 !important; +} +.x-props-grid .x-grid3-body .x-grid3-td-name{ + background-color:#fff !important; + border-right-color:#eee; +} +.xg-hmenu-sort-asc .x-menu-item-icon{ + background-image: url(../images/default/grid/hmenu-asc.gif); +} +.xg-hmenu-sort-desc .x-menu-item-icon{ + background-image: url(../images/default/grid/hmenu-desc.gif); +} +.xg-hmenu-lock .x-menu-item-icon{ + background-image: url(../images/default/grid/hmenu-lock.gif); +} +.xg-hmenu-unlock .x-menu-item-icon{ + background-image: url(../images/default/grid/hmenu-unlock.gif); +} +.x-grid3-hd-btn { + background-color:#c3daf9; + background-image:url(../images/default/grid/grid3-hd-btn.gif); +} +.x-grid3-body .x-grid3-td-expander { + background-image:url(../images/default/grid/grid3-special-col-bg.gif); +} +.x-grid3-row-expander { + background-image:url(../images/default/grid/row-expand-sprite.gif); +} +.x-grid3-body .x-grid3-td-checker { + background-image: url(../images/default/grid/grid3-special-col-bg.gif); +} +.x-grid3-row-checker, .x-grid3-hd-checker { + background-image:url(../images/default/grid/row-check-sprite.gif); +} +.x-grid3-body .x-grid3-td-numberer { + background-image:url(../images/default/grid/grid3-special-col-bg.gif); +} +.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner { + color:#444; +} +.x-grid3-body .x-grid3-td-row-icon { + background-image:url(../images/default/grid/grid3-special-col-bg.gif); +} +.x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer, +.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker, +.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander { + background-image:url(../images/default/grid/grid3-special-col-sel-bg.gif); +} +.x-grid3-check-col { + background-image:url(../images/default/menu/unchecked.gif); +} +.x-grid3-check-col-on { + background-image:url(../images/default/menu/checked.gif); +} +.x-grid-group, .x-grid-group-body, .x-grid-group-hd { + zoom:1; +} +.x-grid-group-hd { + border-bottom-color:#99bbe8; +} +.x-grid-group-hd .x-grid-group-div { + background-image:url(../images/default/grid/group-expand-sprite.gif); + color:#3764a0; + font:bold 11px tahoma, arial, helvetica, sans-serif; +} +.x-group-by-icon { + background-image:url(../images/default/grid/group-by.gif); +} +.x-cols-icon { + background-image:url(../images/default/grid/columns.gif); +} +.x-show-groups-icon { + background-image:url(../images/default/grid/group-by.gif); +} +.x-grid-empty { + color:gray; + font:normal 11px tahoma, arial, helvetica, sans-serif; +} +.x-grid-with-col-lines .x-grid3-row td.x-grid3-cell { + border-right-color:#ededed; +} +.x-grid-with-col-lines .x-grid3-row{ + border-top-color:#ededed; +} +.x-grid-with-col-lines .x-grid3-row-selected { + border-top-color:#a3bae9; +} + +.x-grid3-check-col-disabled { + background-color:transparent; + background-image:url(../images/gxt/menu/disabledcheck.gif); +} + +.x-row-editor-header { + background: transparent url(../images/gxt/grid/row-editor-bg.gif) repeat-x 0 0; +} +.x-row-editor-footer { + background: transparent url(../images/gxt/grid/row-editor-bg.gif) repeat-x 0 -2px; +} +.x-row-editor-body { + background: #ebf2fb; +} +.x-row-editor .x-btns { + background: transparent url(../images/gxt/grid/row-editor-btns.gif) no-repeat 0 0; +} +.x-row-editor .x-btns .x-plain-bwrap { + background: transparent url(../images/gxt/grid/row-editor-btns.gif) no-repeat right -31px; +} +.x-row-editor .x-btns .x-plain-body { + background: transparent url(../images/gxt/grid/row-editor-btns.gif) repeat-x 0 -62px; +} +.x-dd-drag-ghost{ + color:#000; + font: normal 11px arial, helvetica, sans-serif; + border-color: #ddd #bbb #bbb #ddd; + background-color:#fff; +} +.x-dd-drop-nodrop .x-dd-drop-icon{ + background-image: url(../images/default/dd/drop-no.gif); +} +.x-dd-drop-ok .x-dd-drop-icon{ + background-image: url(../images/default/dd/drop-yes.gif); +} +.x-dd-drop-ok-add .x-dd-drop-icon{ + background-image: url(../images/default/dd/drop-add.gif); +} +.x-view-selector { + background-color:#c3daf9; + border-color:#3399bb; +} +.x-tree-drop-ok-append .x-dd-drop-icon { + background-image: url(../images/default/tree/drop-add.gif); +} + +.x-tree-drop-ok-above .x-dd-drop-icon { + background-image: url(../images/default/tree/drop-over.gif); +} + +.x-tree-drop-ok-below .x-dd-drop-icon { + background-image: url(../images/default/tree/drop-under.gif); +} + +.x-tree-drop-ok-between .x-dd-drop-icon { + background-image: url(../images/default/tree/drop-between.gif); +} + +.x-tree3-loading { + background-image: url(../images/default/tree/loading.gif); +} + +.x-tree3-node-text { + font: normal 11px arial, tahoma, helvetica, sans-serif; + color: black; +}.x-date-picker { + border-color: #1b376c; + background-color:#fff; +} +.x-date-middle,.x-date-left,.x-date-right { + background-image: url(../images/default/shared/hd-sprite.gif); + color:#fff; + font:bold 11px "sans serif", tahoma, verdana, helvetica; +} +.x-date-middle .x-btn .x-btn-text { + color:#fff; +} +.x-date-middle .x-btn-mc em.x-btn-arrow { + background-image:url(../images/default/toolbar/btn-arrow-light.gif); +} +.x-date-right a { + background-image: url(../images/default/shared/right-btn.gif); +} +.x-date-left a{ + background-image: url(../images/default/shared/left-btn.gif); +} +.x-date-inner th { + background-color:#dfecfb; + background-image:url(../images/default/shared/glass-bg.gif); + border-bottom-color:#a3bad9; + font:normal 10px arial, helvetica,tahoma,sans-serif; + color:#233d6d; +} +.x-date-inner td { + border-color:#fff; +} +.x-date-inner a { + font:normal 11px arial, helvetica,tahoma,sans-serif; + color:#000; +} +.x-date-inner .x-date-active{ + color:#000; +} +.x-date-inner .x-date-selected a{ + background-color:#dfecfb; + background-image:url(../images/default/shared/glass-bg.gif); + border-color:#8db2e3; +} +.x-date-inner .x-date-today a{ + border-color:darkred; +} +.x-date-inner .x-date-selected span{ + font-weight:bold; +} +.x-date-inner .x-date-prevday a,.x-date-inner .x-date-nextday a { + color:#aaa; +} +.x-date-bottom { + border-top-color:#a3bad9; + background-color:#dfecfb; + background-image:url(../images/default/shared/glass-bg.gif); +} +.x-date-inner .x-date-disabled a { + background-color:#eee; + color:#bbb; +} +.x-date-mmenu{ + background-color:#eee !important; +} +.x-date-mmenu .x-menu-item { + font-size:10px; + color:#000; +} +.x-date-mp { + background-color:#fff; +} +.x-date-mp td { + font:normal 11px arial, helvetica,tahoma,sans-serif; +} +.x-date-mp-btns button { + background-color:#083772; + color:#fff; + border-color: #3366cc #000055 #000055 #3366cc; + font:normal 11px arial, helvetica,tahoma,sans-serif; +} +.x-date-mp-btns { + background-color: #dfecfb; + background-image: url(../images/default/shared/glass-bg.gif); +} +.x-date-mp-btns td { + border-top-color: #c5d2df; +} +td.x-date-mp-month a,td.x-date-mp-year a { + color:#15428b; +} +td.x-date-mp-sel a { + background-color: #dfecfb; + background-image: url(../images/default/shared/glass-bg.gif); + border-color:#8db2e3; +} +.x-date-mp-ybtn a { + background-image:url(../images/default/panel/tool-sprites.gif); +} +td.x-date-mp-sep { + border-right-color:#c5d2df; +} +.x-tip .x-tip-close{ + background-image: url(../images/default/qtip/close.gif); +} +.x-tip .x-tip-tc, .x-tip .x-tip-tl, .x-tip .x-tip-tr, .x-tip .x-tip-bc, .x-tip .x-tip-bl, .x-tip .x-tip-br, .x-tip .x-tip-ml, .x-tip .x-tip-mr { + background-image: url(../images/default/qtip/tip-sprite.gif); +} +.x-tip .x-tip-mc { + font: normal 11px tahoma,arial,helvetica,sans-serif; +} +.x-tip .x-tip-ml { + background-color: #fff; +} +.x-tip .x-tip-header-text { + font: bold 11px tahoma,arial,helvetica,sans-serif; + color:#444; +} +.x-tip .x-tip-body { + font: normal 11px tahoma,arial,helvetica,sans-serif; + color:#444; +} +.x-form-invalid-tip .x-tip-tc, .x-form-invalid-tip .x-tip-tl, .x-form-invalid-tip .x-tip-tr, .x-form-invalid-tip .x-tip-bc, +.x-form-invalid-tip .x-tip-bl, .x-form-invalid-tip .x-tip-br, .x-form-invalid-tip .x-tip-ml, .x-form-invalid-tip .x-tip-mr +{ + background-image: url(../images/default/form/error-tip-corners.gif); +} +.x-form-invalid-tip .x-tip-body { + background-image:url(../images/default/form/exclamation.gif); +} +.x-tip-anchor { + background-image:url(../images/default/qtip/tip-anchor-sprite.gif); +} +.x-menu { + border-color:#718bb7; + background-color:#f0f0f0; + background-image:url(../images/default/menu/menu.gif); +} +.x-menu-nosep { + background-image:none; +} +.x-menu-list-item{ + font:normal 11px tahoma,arial, sans-serif; +} +.x-menu-item-arrow{ + background-image:url(../images/default/menu/menu-parent.gif); +} +.x-menu-sep { + background-color:#e0e0e0; + border-bottom-color:#fff; +} +a.x-menu-item { + color:#222; +} +.x-menu-item-active { + background:#ebf3fd url(../images/default/menu/item-over.gif) repeat-x left bottom; + border:1px solid #aaccf6; + padding:0; +} +.x-menu-item-active a.x-menu-item { + color:#233d6d; +} + +.x-menu-plain { + background-color:#fff !important; +} +.x-menu .x-date-picker{ + border-color:#a3bad9; +} +.x-cycle-menu .x-menu-item-checked { + border-color:#a3bae9 !important; + background-color:#def8f6; +} +.x-menu-scroller-top { + background-image:url(../images/default/layout/mini-top.gif); +} +.x-menu-scroller-bottom { + background-image:url(../images/default/layout/mini-bottom.gif); +} + +.x-menu-scroller{ + border-width: 1px 0; +} +.x-box-tl { + background-image: url(../images/default/box/corners.gif); +} +.x-box-tc { + background-image: url(../images/default/box/tb.gif); +} +.x-box-tr { + background-image: url(../images/default/box/corners.gif); +} +.x-box-ml { + background-image: url(../images/default/box/l.gif); +} +.x-box-mc { + background-color: #eee; + background-image: url(../images/default/box/tb.gif); + font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif; + color: #393939; + font-size: 12px; +} +.x-box-mc h3 { + font-size: 14px; + font-weight: bold; +} +.x-box-mr { + background-image: url(../images/default/box/r.gif); +} +.x-box-bl { + background-image: url(../images/default/box/corners.gif); +} +.x-box-bc { + background-image: url(../images/default/box/tb.gif); +} +.x-box-br { + background-image: url(../images/default/box/corners.gif); +} +.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr { + background-image: url(../images/default/box/corners-blue.gif); +} +.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc { + background-image: url(../images/default/box/tb-blue.gif); +} +.x-box-blue .x-box-mc { + background-color: #c3daf9; +} +.x-box-blue .x-box-mc h3 { + color: #17385b; +} +.x-box-blue .x-box-ml { + background-image: url(../images/default/box/l-blue.gif); +} +.x-box-blue .x-box-mr { + background-image: url(../images/default/box/r-blue.gif); +} +.x-combo-list { + border-color:#98c0f4; + background-color:#ddecfe; + font:normal 12px tahoma, arial, helvetica, sans-serif; +} +.x-combo-list-inner { + background-color:#fff; +} +.x-combo-list-hd { + font:bold 11px tahoma, arial, helvetica, sans-serif; + color:#15428b; + background-image: url(../images/default/layout/panel-title-light-bg.gif); + border-bottom-color:#98c0f4; +} +.x-resizable-pinned .x-combo-list-inner { + border-bottom-color:#98c0f4; +} +.x-combo-list-item { + border-color:#fff; +} +.x-combo-list .x-combo-selected{ + border-color:#a3bae9 !important; + background-color:#dfe8f6; +} +.x-combo-list .x-toolbar { + border-top-color:#98c0f4; +} +.x-combo-list-small { + font:normal 11px tahoma, arial, helvetica, sans-serif; +} +.x-panel { + border-color: #99bbe8; +} +.x-panel-header { + color:#15428b; + font-weight:bold; + font-size: 11px; + font-family: tahoma,arial,verdana,sans-serif; + border-color:#99bbe8; + background-image: url(../images/default/panel/white-top-bottom.gif); +} +.x-panel-body { + border-color:#99bbe8; + background-color:#fff; +} +.x-panel-bbar .x-toolbar, .x-panel-tbar .x-toolbar { + border-color:#99bbe8; +} +.x-panel-tbar-noheader .x-toolbar, .x-panel-mc .x-panel-tbar .x-toolbar { + border-top-color:#99bbe8; +} +.x-panel-body-noheader, .x-panel-mc .x-panel-body { + border-top-color:#99bbe8; +} +.x-panel-tl .x-panel-header { + color:#15428b; + font-weight:bold; + font-size: 11px; + font-family: tahoma,arial,verdana,sans-serif; +} +.x-panel-tc { + background-image: url(../images/default/panel/top-bottom.gif); +} +.x-panel-tl, .x-panel-tr, .x-panel-bl, .x-panel-br{ + background-image: url(../images/default/panel/corners-sprite.gif); + border-bottom-color:#99bbe8; +} +.x-panel-bc { + background-image: url(../images/default/panel/top-bottom.gif); +} +.x-panel-mc { + font: normal 11px tahoma,arial,helvetica,sans-serif; + background-color:#dfe8f6; +} +.x-panel-ml { + background-color: #fff; + background-image:url(../images/default/panel/left-right.gif); +} +.x-panel-mr { + background-image: url(../images/default/panel/left-right.gif); +} +.x-tool { + background-image:url(../images/default/panel/tool-sprites.gif); +} +.x-panel-ghost { + background-color:#cbddf3; +} +.x-panel-ghost ul { + border-color:#99bbe8; +} +.x-panel-dd-spacer { + border-color:#99bbe8; +} +.x-panel-fbar td,.x-panel-fbar span,.x-panel-fbar input,.x-panel-fbar div,.x-panel-fbar select,.x-panel-fbar label{ + font:normal 11px arial,tahoma, helvetica, sans-serif; +} +.x-window-proxy { + background-color:#c7dffc; + border-color:#99bbe8; +} +.x-window-tl .x-window-header { + color:#15428b; + font:bold 11px tahoma,arial,verdana,sans-serif; +} +.x-window-tc { + background-image: url(../images/default/window/top-bottom.png); +} +.x-window-tl { + background-image: url(../images/default/window/left-corners.png); +} +.x-window-tr { + background-image: url(../images/default/window/right-corners.png); +} +.x-window-bc { + background-image: url(../images/default/window/top-bottom.png); +} +.x-window-bl { + background-image: url(../images/default/window/left-corners.png); +} +.x-window-br { + background-image: url(../images/default/window/right-corners.png); +} +.x-window-mc { + border-color:#99bbe8; + font: normal 11px tahoma,arial,helvetica,sans-serif; + background-color:#dfe8f6; +} +.x-window-ml { + background-image: url(../images/default/window/left-right.png); +} +.x-window-mr { + background-image: url(../images/default/window/left-right.png); +} +.x-window-maximized .x-window-tc { + background-color:#fff; +} +.x-window-bbar .x-toolbar { + border-top-color:#99bbe8; +} +.x-panel-ghost .x-window-tl { + border-bottom-color:#99bbe8; +} +.x-panel-collapsed .x-window-tl { + border-bottom-color:#84a0c4; +} +.x-dlg-mask{ + background-color:#ccc; +} +.x-window-plain .x-window-mc { + background-color: #ccd9e8; + border-color: #a3bae9 #dfe8f6 #dfe8f6 #a3bae9; +} +.x-window-plain .x-window-body { + border-color: #dfe8f6 #a3bae9 #a3bae9 #dfe8f6; +} +body.x-body-masked .x-window-plain .x-window-mc { + background-color: #ccd9e8; +} +.x-html-editor-wrap { + border-color:#a9bfd3; + background-color:#fff; +} + +.x-html-editor-tb .x-edit-bold, .x-menu-item .x-edit-bold { + background-position:0 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-italic, .x-menu-item .x-edit-italic { + background-position:-16px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-underline, .x-menu-item .x-edit-underline { + background-position:-32px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-forecolor, .x-menu-item .x-edit-forecolor { + background-position:-160px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-backcolor, .x-menu-item .x-edit-backcolor { + background-position:-176px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-justifyleft, .x-menu-item .x-edit-justifyleft { + background-position:-112px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-justifycenter, .x-menu-item .x-edit-justifycenter { + background-position:-128px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-justifyright, .x-menu-item .x-edit-justifyright { + background-position:-144px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-insertorderedlist, .x-menu-item .x-edit-insertorderedlist { + background-position:-80px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-insertunorderedlist, .x-menu-item .x-edit-insertunorderedlist { + background-position:-96px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-increasefontsize, .x-menu-item .x-edit-increasefontsize { + background-position:-48px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-decreasefontsize, .x-menu-item .x-edit-decreasefontsize { + background-position:-64px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-sourceedit, .x-menu-item .x-edit-sourceedit { + background-position:-192px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +} + +.x-html-editor-tb .x-edit-createlink, .x-menu-item .x-edit-createlink { + background-position:-208px 0; + background-image:url(../images/default/editor/tb-sprite.gif); +}.x-panel-noborder .x-panel-header-noborder { + border-bottom-color:#99bbe8; +} +.x-panel-noborder .x-panel-tbar-noborder .x-toolbar { + border-bottom-color:#99bbe8; +} +.x-panel-noborder .x-panel-bbar-noborder .x-toolbar { + border-top-color:#99bbe8; +} +.x-tab-panel-bbar-noborder .x-toolbar { + border-top-color:#99bbe8; +} +.x-tab-panel-tbar-noborder .x-toolbar { + border-bottom-color:#99bbe8; +} +.x-border-layout-ct { + background-color:#dfe8f6; +} +.x-accordion-hd { + color:#222; + font-weight:normal; + background-image: url(../images/default/panel/light-hd.gif); +} +.x-layout-collapsed{ + background-color:#d2e0f2; + border-color:#98c0f4; +} +.x-layout-collapsed-over{ + background-color:#d9e8fb; +} +.x-layout-split-west .x-layout-mini { + background-image:url(../images/default/layout/mini-left.gif); +} +.x-layout-split-east .x-layout-mini { + background-image:url(../images/default/layout/mini-right.gif); +} +.x-layout-split-north .x-layout-mini { + background-image:url(../images/default/layout/mini-top.gif); +} +.x-layout-split-south .x-layout-mini { + background-image:url(../images/default/layout/mini-bottom.gif); +} +.x-layout-cmini-west .x-layout-mini { + background-image:url(../images/default/layout/mini-right.gif); +} +.x-layout-cmini-east .x-layout-mini { + background-image:url(../images/default/layout/mini-left.gif); +} +.x-layout-cmini-north .x-layout-mini { + background-image:url(../images/default/layout/mini-bottom.gif); +} +.x-layout-cmini-south .x-layout-mini { + background-image:url(../images/default/layout/mini-top.gif); +} +.x-progress-wrap { + border-color:#6593cf; +} +.x-progress-inner { + background-color:#e0e8f3; + background-image:url(../images/default/qtip/bg.gif); +} +.x-progress-bar { + background-color:#9cbfee; + background-image:url(../images/default/progress/progress-bg.gif); + border-top-color:#d1e4fd; + border-bottom-color:#7fa9e4; + border-right-color:#7fa9e4; +} +.x-progress-text { + font-size:11px; + font-weight:bold; + color:#fff; +} +.x-progress-text-back { + color:#396095; +} +.x-slider-horz, .x-slider-horz .x-slider-end, .x-slider-horz .x-slider-inner { + background-image:url(../images/default/slider/slider-bg.png); +} +.x-slider-horz .x-slider-thumb { + background-image:url(../images/default/slider/slider-thumb.png); +} +.x-slider-vert, .x-slider-vert .x-slider-end, .x-slider-vert .x-slider-inner { + background-image:url(../images/default/slider/slider-v-bg.png); +} +.x-slider-vert .x-slider-thumb { + background-image:url(../images/default/slider/slider-v-thumb.png); +} +.x-window-dlg .ext-mb-text, +.x-window-dlg .x-window-header-text { + font-size:12px; +} +.x-window-dlg .ext-mb-textarea { + font:normal 12px tahoma,arial,helvetica,sans-serif; +} +.x-window-dlg .x-msg-box-wait { + background-image:url(../images/default/grid/loading.gif); +} +.x-window-dlg .ext-mb-info { + background-image:url(../images/default/window/icon-info.gif); +} +.x-window-dlg .ext-mb-warning { + background-image:url(../images/default/window/icon-warning.gif); +} +.x-window-dlg .ext-mb-question { + background-image:url(../images/default/window/icon-question.gif); +} +.x-window-dlg .ext-mb-error { + background-image:url(../images/default/window/icon-error.gif); +} diff --git a/src/main/webapp/gxt/css/gxt-gray.css b/src/main/webapp/gxt/css/gxt-gray.css new file mode 100644 index 0000000..505a591 --- /dev/null +++ b/src/main/webapp/gxt/css/gxt-gray.css @@ -0,0 +1,478 @@ +/* + * Ext GWT Library 2.1.1 + * Copyright(c) 2006-2009, Ext JS, LLC. + * licensing@extjs.com + * + * http://extjs.com/license + */ +.x-panel { + border-style: solid; + border-color: #d0d0d0; +} +.x-panel-header { + color:#333; + border:1px solid #d0d0d0; + background-image:url(../images/gray/panel/white-top-bottom.gif); +} + +.x-panel-body { + border-color:#d0d0d0; +} + +.x-panel-bbar .x-toolbar { + border-color:#d0d0d0; +} + +.x-panel-tbar .x-toolbar { + border-color:#d0d0d0; +} + +.x-panel-tbar-noheader .x-toolbar, .x-panel-mc .x-panel-tbar .x-toolbar { + border-color:#d0d0d0; +} +.x-panel-body-noheader, .x-panel-mc .x-panel-body { + border-color:#d0d0d0; +} +.x-panel-tl .x-panel-header { + color:#333; +} +.x-panel-tc { + background-image:url(../images/gray/panel/top-bottom.gif); +} +.x-panel-tl { + background-image:url(../images/gray/panel/corners-sprite.gif); + border-color:#d0d0d0; +} +.x-panel-tr { + background-image:url(../images/gray/panel/corners-sprite.gif); +} +.x-panel-bc { + background-image:url(../images/gray/panel/top-bottom.gif); +} +.x-panel-bl { + background-image:url(../images/gray/panel/corners-sprite.gif); +} +.x-panel-br { + background-image:url(../images/gray/panel/corners-sprite.gif); +} +.x-panel-mc { + background:#f1f1f1; +} +.x-panel-mc .x-panel-body { + background:transparent; + border: 0 none; +} +.x-panel-ml { + background-image:url(../images/gray/panel/left-right.gif); +} +.x-panel-mr { + background-image:url(../images/gray/panel/left-right.gif); +} + +/* Tools */ +.x-tool { + background-image:url(../images/gray/panel/tool-sprites.gif); +} + +/* Ghosting */ +.x-panel-ghost { + background:#e0e0e0; +} + +.x-panel-ghost ul { + border-color:#b0b0b0; +} + +.x-grid-panel .x-panel-mc .x-panel-body { + border:1px solid #d0d0d0; +} + +/* Buttons */ + +.x-btn-left{ + background-image:url(../images/gray/button/btn-sprite.gif); +} +.x-btn-right{ + background-image:url(../images/gray/button/btn-sprite.gif); +} +.x-btn-center{ + background-image:url(../images/gray/button/btn-sprite.gif); +} + +.x-btn-group-header { + color: #333333; +} +.x-btn-group-tc { + background-image: url(../images/gray/button/group-tb.gif); +} +.x-btn-group-tl { + background-image: url(../images/gray/button/group-cs.gif); +} +.x-btn-group-tr { + background-image: url(../images/gray/button/group-cs.gif); +} +.x-btn-group-bc { + background-image: url(../images/gray/button/group-tb.gif); +} +.x-btn-group-bl { + background-image: url(../images/gray/button/group-cs.gif); +} +.x-btn-group-br { + background-image: url(../images/gray/button/group-cs.gif); +} +.x-btn-group-ml { + background-image: url(../images/gray/button/group-lr.gif); +} +.x-btn-group-mr { + background-image: url(../images/gray/button/group-lr.gif); +} +.x-btn-group-notitle .x-btn-group-tc { + background-image: url(../images/gray/button/group-tb.gif); +} + +/* Layout classes */ + +.x-border-layout-ct { + background:#f0f0f0; +} + +.x-accordion-hd { + background-image:url(../images/gray/panel/light-hd.gif); +} + +.x-layout-collapsed{ + background-color:#eee; + border-color:#e0e0e0; +} +.x-layout-collapsed-over{ + background-color:#fbfbfb; +} + + +/* qtips */ +.x-tip .x-tip-top { + background-image:url(../images/gray/qtip/tip-sprite.gif); +} +.x-tip .x-tip-top-left { + background-image:url(../images/gray/qtip/tip-sprite.gif); +} +.x-tip .x-tip-top-right { + background-image:url(../images/gray/qtip/tip-sprite.gif); +} +.x-tip .x-tip-ft { + background-image:url(../images/gray/qtip/tip-sprite.gif); +} +.x-tip .x-tip-ft-left { + background-image:url(../images/gray/qtip/tip-sprite.gif); +} +.x-tip .x-tip-ft-right { + background-image:url(../images/gray/qtip/tip-sprite.gif); +} +.x-tip .x-tip-bd-left { + background-image:url(../images/gray/qtip/tip-sprite.gif); +} +.x-tip .x-tip-bd-right { + background-image:url(../images/gray/qtip/tip-sprite.gif); +} + +/* Toolbars */ + +.x-toolbar{ + border-color:#d0d0d0; + background:#f0f4f5 url(../images/gray/toolbar/bg.gif) repeat-x top left; +} +.x-toolbar button { + color:#444; +} +.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button { + background-image:url(../images/gray/toolbar/btn-arrow.gif); +} +.x-toolbar .x-btn-text-icon .x-btn-menu-arrow-wrap .x-btn-center button { + background-image:url(../images/gray/toolbar/btn-arrow.gif); +} +.x-toolbar .x-btn-over .x-btn-left{ + background-image:url(../images/gray/toolbar/tb-btn-sprite.gif); +} +.x-toolbar .x-btn-over .x-btn-right{ + background-image:url(../images/gray/toolbar/tb-btn-sprite.gif); +} +.x-toolbar .x-btn-over .x-btn-center{ + background-image:url(../images/gray/toolbar/tb-btn-sprite.gif); +} +.x-toolbar .x-btn-over button { + color:#111; +} +.x-toolbar .x-btn-click .x-btn-left, .x-toolbar .x-btn-pressed .x-btn-left, .x-toolbar .x-btn-menu-active .x-btn-left{ + background-image:url(../images/gray/toolbar/tb-btn-sprite.gif); +} +.x-toolbar .x-btn-click .x-btn-right, .x-toolbar .x-btn-pressed .x-btn-right, .x-toolbar .x-btn-menu-active .x-btn-right{ + background-image:url(../images/gray/toolbar/tb-btn-sprite.gif); +} + +.x-toolbar .x-btn-click .x-btn-center, .x-toolbar .x-btn-pressed .x-btn-center, .x-toolbar .x-btn-menu-active .x-btn-center{ + background-image:url(../images/gray/toolbar/tb-btn-sprite.gif); +} +.x-toolbar .ytb-sep { + background-image: url(../images/default/grid/grid-split.gif); +} + +/* Tabs */ + +.x-tab-panel-header, .x-tab-panel-footer { + background: #EAEAEA; + border-color:#d0d0d0; +} + + +.x-tab-panel-header { + border-color:#d0d0d0; +} + +.x-tab-panel-footer { + border-color:#d0d0d0; +} + +ul.x-tab-strip-top{ + background:#dbdbdb url(../images/gray/tabs/tab-strip-bg.gif) repeat-x left top; + border-color:#d0d0d0; + padding-top: 2px; +} + +ul.x-tab-strip-bottom{ + background-image:url(../images/gray/tabs/tab-strip-btm-bg.gif); + border-color:#d0d0d0; +} + +.x-tab-strip span.x-tab-strip-text { + color:#333; +} +.x-tab-strip-over span.x-tab-strip-text { + color:#111; +} + +.x-tab-strip-active span.x-tab-strip-text { + color:#333; +} + +.x-tab-strip-disabled .x-tabs-text { + color:#aaaaaa; +} + +.x-tab-strip-top .x-tab-right { + background-image:url(../images/gray/tabs/tabs-sprite.gif); +} + +.x-tab-strip-top .x-tab-left { + background-image:url(../images/gray/tabs/tabs-sprite.gif); +} +.x-tab-strip-top .x-tab-strip-inner { + background-image:url(../images/gray/tabs/tabs-sprite.gif); +} + +.x-tab-strip-bottom .x-tab-right { + background-image:url(../images/gray/tabs/tab-btm-inactive-right-bg.gif); +} + +.x-tab-strip-bottom .x-tab-left { + background-image:url(../images/gray/tabs/tab-btm-inactive-left-bg.gif); +} + +.x-tab-strip-bottom .x-tab-strip-active .x-tab-right { + background-image:url(../images/gray/tabs/tab-btm-right-bg.gif); +} + +.x-tab-strip-bottom .x-tab-strip-active .x-tab-left { + background-image:url(../images/gray/tabs/tab-btm-left-bg.gif); +} + +.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close { + background-image:url(../images/gray/tabs/tab-close.gif); +} +.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{ + background-image:url(../images/gray/tabs/tab-close.gif); +} + +.x-tab-panel-body { + border-color:#d0d0d0; + background:#fff; +} +.x-tab-panel-bbar .x-toolbar { + border-color: #d0d0d0; +} + +.x-tab-panel-tbar .x-toolbar { + border-color: #d0d0d0; +} + +.x-tab-panel-header-plain .x-tab-strip-spacer { + border-color:#d0d0d0; + background: #eaeaea; +} + +.x-tab-scroller-left { + background-image: url(../images/gray/tabs/scroll-left.gif); + border-color:#aeaeae; +} +.x-tab-scroller-right { + background-image: url(../images/gray/tabs/scroll-right.gif); + border-color:#aeaeae; +} + +/* Window */ + +.x-window-proxy { + background:#e0e0e0; + border-color:#b0b0b0; +} + +.x-window-tl .x-window-header { + color:#555; +} +.x-window-tc { + background-image:url(../images/gray/window/top-bottom.png); +} +.x-window-tl { + background-image:url(../images/gray/window/left-corners.png); +} +.x-window-tr { + background-image:url(../images/gray/window/right-corners.png); +} +.x-window-bc { + background-image:url(../images/gray/window/top-bottom.png); +} +.x-window-bl { + background-image:url(../images/gray/window/left-corners.png); +} +.x-window-br { + background-image:url(../images/gray/window/right-corners.png); +} +.x-window-mc { + border:1px solid #d0d0d0; + background:#e8e8e8; +} + +.x-window-ml { + background-image:url(../images/gray/window/left-right.png); +} +.x-window-mr { + background-image:url(../images/gray/window/left-right.png); +} +.x-panel-ghost .x-window-tl { + border-color:#d0d0d0; +} +.x-panel-collapsed .x-window-tl { + border-color:#d0d0d0; +} + +.x-window-plain .x-window-mc { + background: #e8e8e8; + border-right:1px solid #eee; + border-bottom:1px solid #eee; + border-top:1px solid #d0d0d0; + border-left:1px solid #d0d0d0; +} + +.x-window-plain .x-window-body { + border-left:1px solid #eee; + border-top:1px solid #eee; + border-bottom:1px solid #d0d0d0; + border-right:1px solid #d0d0d0; + background:transparent !important; +} + +body.x-body-masked .x-window-mc, body.x-body-masked .x-window-plain .x-window-mc { + background-color: #e4e4e4; +} + + +/* misc */ +.x-html-editor-wrap { + border-color:#d0d0d0; +} + +/* Borders go last for specificity */ +.x-panel-noborder .x-panel-body-noborder { + border-width:0; +} + +.x-panel-noborder .x-panel-header-noborder { + border-width:0; + border-bottom:1px solid #d0d0d0; +} + +.x-panel-noborder .x-panel-tbar-noborder .x-toolbar { + border-width:0; + border-bottom:1px solid #d0d0d0; +} + +.x-panel-noborder .x-panel-bbar-noborder .x-toolbar { + border-width:0; + border-top:1px solid #d0d0d0; +} + +.x-window-noborder .x-window-mc { + border-width:0; +} +.x-window-plain .x-window-body-noborder { + border-width:0; +} + +.x-tab-panel-noborder .x-tab-panel-body-noborder { + border-width:0; +} + +.x-tab-panel-noborder .x-tab-panel-header-noborder { + border-top-width:0; + border-left-width:0; + border-right-width:0; +} + +.x-tab-panel-noborder .x-tab-panel-footer-noborder { + border-bottom-width:0; + border-left-width:0; + border-right-width:0; +} + + +.x-tab-panel-bbar-noborder .x-toolbar { + border-width:0; + border-top:1px solid #d0d0d0; +} + +.x-tab-panel-tbar-noborder .x-toolbar { + border-width:0; + border-bottom:1px solid #d0d0d0; +}.x-accordion-hd { + background-color: #e5e5e5; +}.x-border { + border: 1px solid #D0D0D0; +} + +.x-layout-popup { + background-color: #F0F0F0; + border: 1px solid #D0D0D0; +} + +.my-list { + border: 1px solid #D0D0D0; +} + +.x-view { + border:1px solid #D0D0D0; +}.my-info { + background: url(../images/gray/info/info-bg.gif) no-repeat; +}.x-date-right-icon { + background-image: url(../images/default/shared/right-btn.gif); + margin-right: 2px; + text-decoration: none !important; +} + +.x-date-left-icon { + background-image: url(../images/default/shared/left-btn.gif); + margin-right: 2px; + text-decoration: none !important; +}.my-tbl { + border: 1px solid #C6C5C5; +}.my-treetbl { + border: 1px solid #C6C5C5; +} \ No newline at end of file diff --git a/src/main/webapp/gxt/desktop/css/desktop.css b/src/main/webapp/gxt/desktop/css/desktop.css new file mode 100644 index 0000000..0013ed9 --- /dev/null +++ b/src/main/webapp/gxt/desktop/css/desktop.css @@ -0,0 +1,638 @@ +/* + * Ext JS Library 2.1 + * Copyright(c) 2006-2008, Ext JS, LLC. + * licensing@extjs.com + * + * http://extjs.com/license + */ +html,body { + background: #3d71b8 url(../wallpapers/desktop.jpg) no-repeat left top; + font: normal 12px tahoma, arial, verdana, sans-serif; + margin: 0; + padding: 0; + border: 0 none; + overflow: hidden; + height: 100%; +} + +.start { + background-image: url( ../images/taskbar/black/startbutton-icon.gif ) !important; +} + +.bogus { + background-image: url( ../images/bogus.png ) !important; +} + +.logout { + background-image: url( ../images/logout.gif ) !important; +} + +.settings { + background-image: url( ../images/gears.gif ) !important; +} + +#dpanels { + width: 250px; + float: right; +} + +#dpanels .x-panel { + margin: 15px; +} + +#dpanels .x-date-picker { + border: 0 none; + border-top: 0 none; + background: transparent; +} + +#dpanels .x-date-picker td.x-date-active { + background: #ffffff; +} + +#dpanels .x-date-picker { + width: 100% !important; +} + +#x-desktop { + width: 100%; + height: 100%; + border: 0 none; + position: relative; + overflow: hidden; + zoom: 1; +} + +#ux-taskbar .x-btn { + float: left; + margin: 1px 0 0 1px; + position: relative; +} + +#ux-taskbar-start .x-btn { + float: left; + margin: 0; + position: relative; +} + +#ux-taskbar button { /* width: 150px; + overflow: hidden; */ + text-align: left; + color: #ffffff; +} + +#title-bar-wrapper { + height: 35px; +} + +#title-bar { + color: #225599; + padding: 9px 7px; + font: bold 16px tahoma, arial, verdana, sans-serif; + float: left; +} + +#x-logout { + float: right; + padding: 6px 7px; +} + +.x-btn-text-icon .x-btn-center .logout { + background-position: 0pt 3px; + background-repeat: no-repeat; + padding: 3px 0pt 3px 18px; +} + +#ux-taskbar { + background: transparent none; + height: 30px; + margin: 0; + padding: 0; + position: relative; + z-index: 12001; +} + +.x-btn-icon .ux-taskbutton-center .x-btn-text { + background-position: center; + background-repeat: no-repeat; + height: 16px; + width: 16px; + cursor: pointer; + white-space: nowrap; + padding: 0; +} + +.x-btn-icon .ux-taskbutton-center { + padding: 1px; +} + +.ux-startbutton-center .x-btn-text { + color: #000000 !important; + font-weight: bold; +} + +.ux-taskbutton-left,.ux-taskbutton-right { + font-size: 1px; + line-height: 1px; +} + +.ux-taskbutton-left { + width: 4px; + height: 28px; + background: url( ../images/taskbar/black/taskbutton.gif ) no-repeat 0 0; +} + +.ux-taskbutton-right { + width: 4px; + height: 28px; + background: url( ../images/taskbar/black/taskbutton.gif ) no-repeat 0 -28px; +} + +.ux-taskbutton-left i,.ux-taskbutton-right i { + display: block; + width: 4px; + overflow: hidden; + font-size: 1px; + line-height: 1px; +} + +.ux-taskbutton-center { + background: url( ../images/taskbar/black/taskbutton.gif ) repeat-x 0 -56px; + vertical-align: middle; + text-align: center; + padding: 0 5px; + cursor: pointer; + white-space: nowrap; +} + +#ux-taskbar .ux-taskbutton-left { + background-position: 0 0; +} + +#ux-taskbar .ux-taskbutton-right { + background-position: 0 -28px; +} + +#ux-taskbar .ux-taskbutton-center { + background-position: 0 -56px; +} + +#ux-taskbar .x-btn-over .ux-taskbutton-left { + background-position: 0 -252px; +} + +#ux-taskbar .x-btn-over .ux-taskbutton-right { + background-position: 0 -280px; +} + +#ux-taskbar .x-btn-over .ux-taskbutton-center { + background-position: 0 -308px; +} + +#ux-taskbar .x-btn-click .ux-taskbutton-left { + background-position: 0 -168px; +} + +#ux-taskbar .x-btn-click .ux-taskbutton-right { + background-position: 0 -196px; +} + +#ux-taskbar .x-btn-click .ux-taskbutton-center { + background-position: 0 -224px; +} + +#ux-taskbar .active-win .ux-taskbutton-left { + background-position: 0 -84px; +} + +#ux-taskbar .active-win .ux-taskbutton-right { + background: url( ../images/taskbar/black/taskbutton.gif ) no-repeat 0 -112px; +} + +#ux-taskbar .active-win .ux-taskbutton-center { + background: url( ../images/taskbar/black/taskbutton.gif ) repeat-x 0 -140px; +} + +#ux-taskbar .active-win .ux-taskbutton-center button { + color: #fff; +} + +#spacer { + height: 25px; + float: left; + width: 0; + overflow: hidden; + margin-top: 2px; +} + +.x-window-body p,.x-panel-body p { + padding: 10px; + margin: 0; +} + +.x-window-maximized .x-window-bc { + height: 0; +} + +.add { + background-image: url(../../shared/icons/fam/add.gif) !important; +} + +.option { + background-image: url(../../shared/icons/fam/plugin.gif) !important; +} + +.remove { + background-image: url(../../shared/icons/fam/delete.gif) !important; +} + +.tabs { + background-image: url(../images/tabs.gif) !important; +} + +.ux-start-menu { + background: transparent none; + border: 0px none; + padding: 0; +} + +.ux-start-menu-tl .x-window-header { + color: #f1f1f1; + font: bold 11px tahoma, arial, verdana, sans-serif; + padding: 5px 0 4px 0; +} + +.x-panel-tl .x-panel-icon,.ux-start-menu-tl .x-panel-icon { + background-position: 0pt 4px; + background-repeat: no-repeat; + padding-left: 20px !important; +} + +.ux-start-menu-tl { + background: transparent url( ../images/taskbar/black/start-menu-left-corners.png ) no-repeat 0 0; + padding-left: 6px; + zoom: 1; + z-index: 1; + position: relative; +} + +.ux-start-menu-tr { + background: transparent url( ../images/taskbar/black/start-menu-right-corners.png ) no-repeat right + 0; + padding-right: 6px; +} + +.ux-start-menu-tc { + background: transparent url( ../images/taskbar/black/start-menu-top-bottom.png ) repeat-x 0 0; + overflow: hidden; + zoom: 1; +} + +.ux-start-menu-ml { + background: transparent url( ../images/taskbar/black/start-menu-left-right.png ) repeat-y 0 0; + padding-left: 6px; + zoom: 1; +} + +.ux-start-menu-bc { + background: transparent url( ../images/taskbar/black/start-menu-top-bottom.png ) repeat-x 0 bottom; + zoom: 1; +} + +.ux-start-menu-bc .x-window-footer { + padding-bottom: 6px; + zoom: 1; + font-size: 0; + line-height: 0; +} + +.ux-start-menu-bl { + background: transparent url( ../images/taskbar/black/start-menu-left-corners.png ) no-repeat 0 + bottom; + padding-left: 6px; + zoom: 1; +} + +.ux-start-menu-br { + background: transparent url( ../images/taskbar/black/start-menu-right-corners.png ) no-repeat right + bottom; + padding-right: 6px; + zoom: 1; +} + +.x-panel-nofooter .ux-start-menu-bc { + height: 6px; +} + +.ux-start-menu-splitbar-h { + background-color: #d0d0d0; +} + +.ux-start-menu-bwrap { + background: transparent none; + border: 0px none; +} + +.ux-start-menu-body { + background: transparent none; + border: 0px none; +} + +.ux-start-menu-apps-panel { + background: #ffffff none; + border: 1px solid #1e2124; +} + +.ux-start-menu-tools-panel { + border: 0px none; + background: transparent url( ../images/taskbar/black/start-menu-right.png ) repeat-y scroll right + 0pt; +} + +#ux-taskbar-start { + background: #000000 url( ../images/taskbar/black/taskbar-start-panel-bg.gif ) repeat-x left top; + left: 0px; + padding: 0; + position: absolute; +} + +#ux-taskbar-start .x-toolbar { + background: none; + padding: 0px; + border: 0px none; +} + +#ux-taskbuttons-panel { + background: #000000 url( ../images/taskbar/black/taskbuttons-panel-bg.gif ) repeat-x left top; + padding-top: 0; + position: relative; +} + +.ux-taskbuttons-strip-wrap { /* overflow:hidden; + position:relative; + width:100%; */ + width: 100%; + overflow: hidden; + position: relative; + zoom: 1; +} + +ul.ux-taskbuttons-strip { + display: block; + width: 5000px; + zoom: 1; +} + +ul.ux-taskbuttons-strip li { + float: left; + margin-left: 2px; +} + +ul.ux-taskbuttons-strip li.ux-taskbuttons-edge { + float: left; + margin: 0 !important; + padding: 0 !important; + border: 0 none !important; + font-size: 1px !important; + line-height: 1px !important; + overflow: hidden; + zoom: 1; + background: transparent !important; + width: 1px; +} + +.x-clear { + clear: both; + height: 0; + overflow: hidden; + line-height: 0; + font-size: 0; +} + +.x-taskbuttons-scrolling { + position: relative; +} + +.x-taskbuttons-scrolling .ux-taskbuttons-strip-wrap { + margin-left: 18px; + margin-right: 18px; +} + +td.ux-taskButtons-edge { /*float:left;*/ + margin: 0 !important; + padding: 0 !important; + border: 0 none !important; + font-size: 1px !important; + line-height: 1px !important; + overflow: hidden; + zoom: 1; + background: transparent !important; + width: 1px; +} + +.ux-taskbuttons-scroller-left { + background: transparent url( ../images/taskbar/black/scroll-left.gif ) no-repeat -18px 0; + width: 18px; + position: absolute; + left: 1px; + top: 0px; + z-index: 10; + cursor: pointer; +} + +.ux-taskbuttons-scroller-left-over { + background-position: 0 0; +} + +.ux-taskbuttons-scroller-left-disabled { + background-position: -18px 0; + opacity: .5; + -moz-opacity: .5; + filter: alpha(opacity = 50); + cursor: default; +} + +.ux-taskbuttons-scroller-right { + background: transparent url( ../images/taskbar/black/scroll-right.gif ) no-repeat 0 0; + width: 18px; + position: absolute; + right: 0; + top: 0px; + z-index: 10; + cursor: pointer; +} + +.ux-taskbuttons-scroller-right-over { + background-position: -18px 0; +} + +.ux-taskbuttons-scroller-right-disabled { + background-position: 0 0; + opacity: .5; + -moz-opacity: .5; + filter: alpha(opacity = 50); + cursor: default; +} + +.ux-toolmenu-sep { + background-color: #18191a; + border-bottom: 1px solid #858789; + display: block; + font-size: 1px; + line-height: 1px; + margin: 2px 3px; +} + +.ux-start-menu-tools-panel ul.x-menu-list li.x-menu-list-item a.x-menu-item { + color: #ffffff; +} + +.ux-start-menu-tools-panel ul.x-menu-list li.x-menu-list-item .x-menu-item-active a.x-menu-item { + color: #000000; +} + +.ux-start-menu-tools-panel .x-menu-item-active { + background: #525456 url( ../images/taskbar/black/item-over.gif ) repeat-x left bottom; + border: 1px solid #000000; + padding: 0; +} + +#ux-taskbar .x-splitbar-h { + background: #000000 url( ../images/taskbar/black/taskbar-split-h.gif ) no-repeat 0 0; + width: 8px; +} + +.x-window-header-text { + cursor: default; +} + +/* + * Begin Start button + */ +.ux-startbutton-left,.ux-startbutton-right { + font-size: 1px; + line-height: 1px; +} + +.ux-startbutton-left { + width: 10px; + height: 28px; + background: url( ../images/taskbar/black/startbutton.gif ) no-repeat 0 0; +} + +.ux-startbutton-right { + width: 10px; + height: 30px; + background: url( ../images/taskbar/black/startbutton.gif ) no-repeat 0 -28px; +} + +.ux-startbutton-left i,.ux-startbutton-right i { + display: block; + width: 10px; + overflow: hidden; + font-size: 1px; + line-height: 1px; +} + +.ux-startbutton-center { + background: url( ../images/taskbar/black/startbutton.gif ) repeat-x 0 -56px; + vertical-align: middle; + text-align: center; + padding: 0; + cursor: pointer; + white-space: nowrap; +} + +#ux-taskbar .ux-startbutton-left { + background-position: 0 0; +} + +#ux-taskbar .ux-startbutton-right { + background-position: 0 -30px; +} + +#ux-taskbar .ux-startbutton-center { + background-position: 0 -60px; +} + +#ux-taskbar .x-btn-over .ux-startbutton-left { + background-position: 0 -270px; +} + +#ux-taskbar .x-btn-over .ux-startbutton-right { + background-position: 0 -300px; +} + +#ux-taskbar .x-btn-over .ux-startbutton-center { + background-position: 0 -330px; +} + +#ux-taskbar .x-btn-click .ux-startbutton-left { + background-position: 0 -180px; +} + +#ux-taskbar .x-btn-click .ux-startbutton-right { + background-position: 0 -210px; +} + +#ux-taskbar .x-btn-click .ux-startbutton-center { + background-position: 0 -240px; +} + +#ux-taskbar .active-win .ux-startbutton-left { + background-position: 0 -90px; +} + +#ux-taskbar .active-win .ux-startbutton-right { + background: url( ../images/taskbar/black/startbutton.gif ) no-repeat 0 -120px; +} + +#ux-taskbar .active-win .ux-startbutton-center { + background: url( ../images/taskbar/black/startbutton.gif ) repeat-x 0 -150px; +} + +#ux-taskbar .active-win .ux-startbutton-center button { + color: #fff; +} + +/* + * End Start button + */ +.x-resizable-proxy { + background: #C7DFFC; + opacity: .5; + -moz-opacity: .5; + filter: alpha(opacity = 50); + border: 1px solid #3b5a82; +} + +/* Desktop Shortcuts */ +#x-shortcuts dt { + float: left; + margin: 15px 0 0 15px; + clear: left; + width: 64px; + font: normal 10px tahoma, arial, verdana, sans-serif; + text-align: center; + zoom: 1; + display: block; +} + +#x-shortcuts dt a { + width: 64px; + display: block; + color: white; + text-decoration: none; +} + +#x-shortcuts dt div { + width: 100%; + color: white; + overflow: hidden; + text-overflow: ellipsis; + cursor: pointer; +} + +#x-shortcuts dt a:hover { + text-decoration: underline; +} diff --git a/src/main/webapp/gxt/desktop/images/desktop.gif b/src/main/webapp/gxt/desktop/images/desktop.gif new file mode 100644 index 0000000000000000000000000000000000000000..f305cb643378b5cfc5f447f3003d0b904d23fc30 GIT binary patch literal 63601 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 EI~KPF_W%F@ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/desktop/images/desktop3.jpg b/src/main/webapp/gxt/desktop/images/desktop3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..daca8bc5eeda549ea4240df77ac164986bbfcad9 GIT binary patch literal 158508 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 z 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/desktop/images/gears.gif b/src/main/webapp/gxt/desktop/images/gears.gif new file mode 100644 index 0000000000000000000000000000000000000000..2bf6bd70d1b128eace0a50b610df5b7a30c5778e GIT binary patch literal 996 zcmZ?wbhEHb6krfwXlGzBvobcau(hOmwsW+xbF_5Vv~;qtcCfQ?v6hW0Rq~J1 z@QyKb^t5zvw|8>2cXqdM@wD)Zu=0A|YbawM{cK3Glba3(Tb@lLZ@$z#D2=z;H z5Y6b4O=*)$Zxha3DOR>Xv~rb1$v%_1`HE#*e2QD0>$U}SX~eXe6|U2&+^gd;J-B>p zLd8*Yjh3}4v-avt*<;nX(R#u<`Q8H(6AnwyIwLptq{zZMQj4$3F1;?X?wZ`*XDW>c zwE7MyPCRKj<&5>D3u>z_>aD(`wBf$xniJ+rt}E<&st44}U6L{cLpXgZ;6u zN)LXjy!`LdzR0O#se8}f+_`&8*KYP&blQ2v&A=50A~xUj-}WJ3&9l(8PjY4)DqnQM z>FodL!|$UW{ZG97zv$45+5=B2ul#MfsMLQ|t>=zj?=7qOk8GCTmt6TlzxlXl%aNeo z8y-`R`cJvyI{Rqt#=DujzLg*T?=W%ml^KWH*4_EF?eeQFw?9ArKk@bdc?_d~1|gvM zlZBaqL7PDbWHu;IFmN1X2Y%2Ns^3i7Z{S%~LX#7#@D^w@`qoP-J3Z zMxc_b<&>C<7Y|=(7ZrK6VCTU$k5;qbtRD;?4mdQ5YUoLMXxvEf=u!5aV{mX$qauq~`lAB@2JOtwjbb@25rz#1 M(i_$N*jX5?0UH(+od5s; literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/desktop/images/gears.png b/src/main/webapp/gxt/desktop/images/gears.png new file mode 100644 index 0000000000000000000000000000000000000000..6acdc989ca7e6bab78a2eb41bf136cedee9191ec GIT binary patch literal 967 zcmV;&133JNP)D6Yd#Te{PSeVs1O=rjQOA1i2-zNe{bTy^`t-Bh}~qil11 zZJ9Stq#-oSqvhnygN9a-g=Yh{SFgp`j#m?r(W&D?RA6>3 zbF5s)6Ug_*ap6`zbg~;++DrTkb(brq=X7i=-wIht*@ykn4i1z;)#w-H;YX{&!3cM} zz8v0?LZpcWFG>PVpZyj7R6eG-IKmzFbosL!<@r8-UcK*H_%06b9C5F5@^2@mlCawr z;Yw;T+S;$pJm~!;yuR_sbMlfraDx+Y6n(DtetK(f=OnKFSi>F|>85Q91T1=k($L&A znX~3rJ4)RQ>nXrc>*=PLb8@GBN%hfecY#%m$B;?9LTqrnB_%u<&MW46rpL9%hIoU( z;i9%vA9gPqiye}RT(;RF8#1zsOEOlzyvORzTcKM`5FXE<^!3era&R6j)*jC z2g$VmEeo7!nlS%`8wbB+0gm@OikVOmaP?UVd7@@Li4{B^Unv?Vm)-@#BR47 p>bp)D2CT{4WK6&Fw7@+PU;r&Dbx5XGi$?$e002ovPDHLkV1jdt(?tLP literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/desktop/images/grid.png b/src/main/webapp/gxt/desktop/images/grid.png new file mode 100644 index 0000000000000000000000000000000000000000..c4da495db39a9a876e89e67371fab75f3f7ae504 GIT binary patch literal 513 zcmV+c0{;DpP)t9vP*jK+QU@{Ievw`G5`|G9UAhK!5(Ei42tkL`K(N5b zXoH1F$XnnsJb3k#yXx-DH1q8y2wn8j2gApkW#4<>n;C%ruCdrrZhtW-U$hM7V~p=m z3XCs83GWOj$KMp3m|jgL>kwr!Y^=ip7(`Z&0}0#D_8U_1xHb5Ilo zGeQEusAs#dG0*z5IRc0K_5>vJE6S0hj=77&XSkH>)$ z$2lakpKO$hpO(G%DvdG%CXb2`Xbcx7DP2o^je4ts5nTf#~05I1Ur~m)} literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/desktop/images/hd-bg.gif b/src/main/webapp/gxt/desktop/images/hd-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..f35a53f82493ea6239432ab719ff25150b5a8444 GIT binary patch literal 992 zcmZ?wbhEHbWMOb)XlG!Uw)WiSV-GeTf3W4)gDuA&Y(4RC+lhzUPd?m!>fw%44|kq^ zxa;(z-KQV#I`eop5S@Lz``qI_XCCi4_joT5oqxRV+~fV{pX|Nxc;AI5`z}7&4?<7( zJ^Xaw{F4KhpB}jU?9hd$hc7-obmjSx%g>Hpes=iEizC-w9=-nR*v;3+Z@fEp`^||v zZ%^KNd+P4{)A!z=x&QwB{SS}d|792jqai?-5K#Qd0<`BpgAT|xP@Z7m*vsI_p<=k` zL5Bc`b3+8jqUOVVVoFgf95xnV521bV;9GJ=6aGoKk!%uK=NlycVH2^_X&&~h< literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/desktop/images/hd-tb-bg.gif b/src/main/webapp/gxt/desktop/images/hd-tb-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..f800edb1060ccf85319d181f7af402d5520b3fd9 GIT binary patch literal 808 zcmZ?wbhEHbWMp7sXlGzpyZiX18}}GS!DtAK$PiHc$pZBEe+C_p??HKjfrFKSk%fbU G!5RRz*$@j#Hy$CV15?!~RM130>0j)7aSVyb z4~n92q-)u+@8@%`6~WBtBhdtK9H)_L+qP&0WXbv#c>QGLJ$NsNC}W9M^OaV zb!!eR%YyIwCCIRPC{M25l)*C>RSnQng@f0}6J5(aq?BeoeK_UeAT@JIdwRSplBUiv zpWAa$>OlrLyPARI5}-uK7EEii$9l~w2Fnm4dBe-oEiP{sqSgc2%^*LYLFwZA=GF2i zLdfL9%#SXvu?c0r9;7Sv2SD3y6L06b9Bu~WHFwefJ)>L`=zRici#c^ai_rlv8Uu&p u7QjZC=SdRC#}q}WS5eO=kFvx)Gja?~dsYXAyy z7I;J!Gcd><1YyR*nIXYIL6&q!Uq=Rpjs4tz5?O(KKTj9OkcwN$8Ic7~*bYB`zdzrg z_Rpu;jh&1fGwS}QHf&P3^WWf_y})bz2`vTxn`0p@x|LuAEZ_ht)d%=O*iw@pia_G*|!*`Y+zO(YkomEHg ztT}dP-LX6CkKfsN;_jxCcek9pyY1B7?WgbVJac#VnY(+=-raZZ-tMa}c3*vY;QYOV z=kFc9aPP>)dq*$bKXBvy@f&Z?-FklF=G&7u-<`Vk?)2?2ee~(t<4@P0e7f=E^UbH9Z$0~b``MQ}&%Zo-`|UXp zy#u1}FW!B7@g9i2zkL7w)raq|f#~D+Hy?kz{q%!j6pV%dDIuWvlZ6?iUI#>g@&p4% zF9YKe2L`4_eio+=1qP-A3C^;-g)VbC9FmT28IHG26ld@iBi6&N>&Ch4Vdj#J1eB|B8xx2 wglWQ-hCn7ab_w1Gjtu@hyn+&69wx82y}jV^skz?U*TwEM|HO4eT7bbC0EYhGKmY&$ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/desktop/images/launcher-btn.gif b/src/main/webapp/gxt/desktop/images/launcher-btn.gif new file mode 100644 index 0000000000000000000000000000000000000000..a9a72d7c979c0a2ae137f4c4485ad011b1e3917a GIT binary patch literal 1247 zcmZ?wbhEHbWM;M z|KQ8T2Olp!{CxT0$IFjCU48uV+QSdmAAh*@i69L6V3p(dm zJ0=VKP1wXNswJ_;?d+E$!NM#_=l86uwQk5`+{?~jZXnb6k>#YgL4Lv^-I$%l#xKOr zCVt|0qqRm&fotvDf|;BfJsobdY!6%z&AK;|;STHJ(u6teCu!zEs&i77%}S{t7T`50YHne2Gs=+(>q{4Ay+f$pkXLxTNXO+!P& zQ@4hO$G4h>MW!#^dW|=Cujus{!IZM=+?6{wh;uV=MLcMfSh6ynO=`=|gR}oMDx`Ci Q{0f)kWKVmR=)hnN09lAN8~^|S literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/desktop/images/logout.gif b/src/main/webapp/gxt/desktop/images/logout.gif new file mode 100644 index 0000000000000000000000000000000000000000..a4f3738f95d10d7f5b03e994bc7c843ad73b0543 GIT binary patch literal 920 zcmZ?wbhEHb6krfwXlGz>_3-(-nc?p~hUeSOZ!B|vzRT&^{)oR96n|c``+Lp$?@N{E zhXbA;E&Ka6?)T%uzaMunjDpb+7)BwW_>+YZ5$9Hk7594ZbQ5*!;j7zGkO zEO^Mw&LJbAFd-n3nU$MMDq})Jk`oh?RK*sJgeM1Bc-4eV7A#11W#Uw@n$fAyc)Fic z=~79;0B91o=dBt38P&tK$vz8#h^R}lwOL1{c90>2K^x(; z1AV1|(S095-^+-YL3R$V2Q8e+i&_2Goxj`I(LMnK41@!3iG!$S5VDpC$N-1jL5@2psHe+TUJwx}1ot{m vUtn<=8KeVcXBh&fe5FKmMlwoD_z_?L$jQ0&rodZ500000NkvXXu0mjfF-6sh literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/desktop/images/member.gif b/src/main/webapp/gxt/desktop/images/member.gif new file mode 100644 index 0000000000000000000000000000000000000000..216c8397f09fa0b92bfe801f38a6e13ac50664f5 GIT binary patch literal 972 zcmZ?wbhEHb6krfwXlG!kNH(v|vZyGtbocUh_3&}^^l|m_ck}Xb_x5%3_V@Jj^YQU? z^A2$H33Lzi@(c9z3J3}da}Nyl4GZ;(j_`_!@CbfTssc6Yt~y)`yZ=Zij{ zFZy8~>x%_~ub0cbUoHP>p~R<^l3&-!|J)$^bEE95rK&F%YrR;d^l-D)yGW6jO-?!@h+^YI>tNPEanqRk?eBEXIZMVs{J*NM+8~omB_G_or?_HLEcUqlY z6L@c<+ubehx3~D;*%kA0tJ~Xs&Tsd*zT4;WZJXPly-t7jx&7Q7@b!qt*P|Z)54iq0 z;QRl8@4rJn{}1{6Js9x+NYLNI(SMIb{W}u#?`YirWATrVWW6|*{ql6ytFzg!&g6W( z)&BWrFT*Gp&=64k$->CMz`~#das?<)FmSA7;N+0mp}^9`!7Qw1a^TQ;d3_-fEf&R= zvr=lRDrzc@PdX+l8JO_hnc&(t+g#g)YmdU?o>?k#A!RodpKH6>x!~eH-?r*U zgQT)UQm>rlsR@S3X(xG9_=UncoFBJM)ehgF(P^me;KXGX#j;Sz^^}OZUID`di$z{i zdQlg0DiwoVrdXA{xbbq4(~}nY+;eR@6%GGKq>MOD3ziF1yMdxWPyoBg&5<)opEW5x^U%2V`8E)(YO)OjmE?U zxX_IWCMJk68jZgoC_z4{givTpDJ}iC@6B^sftKn?Zr;3^d(S=h%zH%BG$e8GdLP!H zLd2Qa<)X?edQr|b8$HC=D^=G|Vl{UShuWX<%vC6wfb^Q?)YjF!tZ(aVW10+?{r$;l zLRu-I4rF1S;9TkR^-ZSHTQ=RVHY^fQ-qe)vlofuPf2ep|M?pxsdT$1S%|Eoh&y{uv z1u{g>7=KAJQWUaqhntFo*K7Y(FcND9Ql|te!)UY7*~ARhoJ@tB^d&MkjO8C1*Mv-p zb%Iz!7s$#YYIIJ_`b|ak;ST{qE3|MkbVkW<|-`voS1=R^Ar~RU7-7FOfBWF8{ zKM&H{BXA}Fhu?#^wG%d)cb{qMHNxj3>~CyPka8cwu@>XlgQb89Q)K~{Z{)#6^M-L> z6xI6Ns|!Iyxs5mfQJ@kDUBZi=xNDlb5P`5V0WmNEImn-W9$El_h40v};D$<2tdT4N zo4bFHwX(_*Nl1_)9_SS>a#TO`st(m*WUl@pfb;KmVjl3sN?Cfvb* zPuNm!DiRan)KF`E3Wyq0KL*C-;6-*a9tsn|>Tn#g7lsW^3(>_!wjmX)YO$3$G&-H5T- zY5dIe;L*-k7!K9pOStJy%ry?GEP`W50cV-^@U7Zl0Onj*N)k4SRmsUESeRkE2mX4o^4mzj!Iz1DUcop=u0E+m81= zovQuRt-ft6lr<^0qT-!3;usGM^hox`UGZ={7TaOnnsib7BftPct~8qV;yMxl0000< KMNUMnLSTZX33?g; literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/desktop/images/powered.gif b/src/main/webapp/gxt/desktop/images/powered.gif new file mode 100644 index 0000000000000000000000000000000000000000..8ce74b8685a44f9249ef375299eee77377bdf7c4 GIT binary patch literal 2291 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 c>AxcV8}W=ub3z|un;N;@AVBumPzkrCSnD~UG z@W|--3l`-U7R4tf<>cijBqnEO=X7@WL`BECxOq4_yV^N8l~-1!XJ&bL`9#OWMMlTk z+B-6Uf#OdVFs%b3L3T2*Dl1${n33!dG>y^mi_YO~g(7$F-Ytzhk{Bx5s}`8RVbOI` Ig@wTy0E*)@@c;k- literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/desktop/images/taskbar/black/scroll-left.gif b/src/main/webapp/gxt/desktop/images/taskbar/black/scroll-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..94fea4821e92d335128bc3400cda17e9b78ba098 GIT binary patch literal 1405 zcmZ?wbhEHbRAJC&_&$|^iH(zmoy))>dBy5A1;u6SHf-#lICzi6_9h@|^^%RxWvhxZjO_}E8 z;^yq;WnpdG($=Y}uGKeTl7W$luD(%vR<5bJWm#p7qqFOqx9_Yxyx1i)Tf6%BWR00c zRNR97Q}fG`b4$3S446gKdZtWj@0qaY;M$bD{DH>RIO`M=< zZj)D0wQBw1rp|6YIqj7E;?lZ?C9CGQ_I8M?nb)-y=U3E3B*#i=8e4gIa7gM_Hnp-# zsMoYMNoktZwl)`5)rzSZb@Wb*&noDfGC3kS+buXwP{A~(EHk61q^v$KIyE;qF1@V2 zpuC~Et+%(TsWmb+YvuX{Vrm9*y4Lj_&D_$Ovlh0AsTr#pTd_-M#b)GY6<6@d=`L9{ zcgpNZeo@I;C8e<$aZ;M5zLCkQCJuJqK6w>&b*&xqmdtha@Nstc?&#`ubar9po9ln71c zB_0ySSywnTn~(M?7?+)CC~P=6S;IH!OUK8i)6)%N*Qw0h^z5XE4)=>YCnu}>iRmhE z$a+o5;1+X`)QCMb^b4XI>6exS%uQ-8e}8Fz{r~&>l-TB&c`RAIT;v)5A_?tN z{WI*7_I~;KA$x^F$ccSlY)V%wbmILrF=0XdPDzUg$_y_)9uegDcc7J@!RF8d6$!s4 zg*H(mj$^X1I~4EAMM`{fmJbfdP-Kuy(unPrS!Z#CFZG3hdtQ#lr6Y=sZwy@8bq>vt z?wQOW>BLd@Vc}sh%NGjACI&EhK2fn0;9SBUQPt?GjuFE5|ZuP@7BWNH!1TCq?pB7<>3&###;l*N1$ zUM`su^y|fAq-5?-&} z@yJSh^~P_%UaeEGPdBy5A1;u6SHf-#lICzi6_9h@|^^%RxWvhxZjO_}E8 z;^yq;WnpdG($=Y}uGKeTl7W$luD(%vR<5bJWm#p7qqFOqx9_Yxyx1i)Tf6%BWR00c zRNR97Q}fG`b4$3S446gKdZtWj@0qaY;M$bD{DH>RIO`M=< zZj)D0wQBw1rp|6YIqj7E;?lZ?C9CGQ_I8M?nb)-y=U3E3B*#i=8e4gIa7gM_Hnp-# zsMoYMNoktZwl)`5)rzSZb@Wb*&noDfGC3kS+buXwP{A~(EHk61q^v$KIyE;qF1@V2 zpuC~Et+%(TsWmb+YvuX{Vrm9*y4Lj_&D_$Ovlh0AsTr#pTd_-M#b)GY6<6@d=`L9{ zcgpNZeo@I;C8e<$aZ;M5zLCkQCJuJqK6w>&b*&xqmdtha@Nstc?&#`ubar9po9ln71c zB_0ySSywnTn~(M?7?+)C_}FxEvW9QcmyW`Q)6)%N*QrDM33(o zg#$Z_`_3&$pK(EFQOQevmm(7-rS!nei{=>#Gkj+YsovU>d8b2`g+sw8bW+4d+0;%k z1;-L$kBtj=7T=yS$K3y*rRyx?fOR~Zl38{wFbugD@IPKK`3T307n(E8<&#+}UFr`l zY42OYJLj8e$OHvL`CoNHT305_mnwa7aei*AfY1YF1|Or7jeJ%d2b6h!9XQI*F88rT zPS{8yvE@Rog=ag%4+B?udx=R$fZ z&)KBu!k_&`!DY7W1dWq(E1u0%@8tUO^7;JwvW&)gEsru8Tg4O>yjav@RP{o+SH>|y>`bV zEA7>MUtYalzyBSV)4C(~cCA)sR9XFI(`hRw?M-LgX0O>i)gtNb)*ETBI~;D6Rp&ZA pXw!bT3VtQ&&YGO)d;mK4RprQm%7srr_TW@Y2p|26lkz4o^RQY`6?zK#qG>ra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%DSEm%hE&{2ni3rHGbBFz^oEL) oMr<_-W@=pvH?Ew?sBnPc@?rMyE%zCg02MQMy85}Sb4q9e09f)XiU0rr literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-right-corners.png b/src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-right-corners.png new file mode 100644 index 0000000000000000000000000000000000000000..b6833018582b1a2a9633494b97791823b89af727 GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz#HIvhZf;X%)#H9(3b-O<;Pfnog#bJnhxK)z&& zYeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK4RprRsA7srr_TW@YUaybNuI9&Xm zlEdj0*jCJ&EB_}F>7W1OgknX22Kx&%a7WPgg^>CUHx3vIVCg! E0J-l+KL7v# literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-right.png b/src/main/webapp/gxt/desktop/images/taskbar/black/start-menu-right.png new file mode 100644 index 0000000000000000000000000000000000000000..e5fa2b8c24f31dde305ae002465dc6657c11ee6f GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^CxDodgAGW|-v96skYY)9^mSxlSbxHtwd*C2FInOm zQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGSvpCNZ!-MF{I*FQb|GC|04!mZU;3S l7&jUQ^7Q(iC#}q*&4&eH|GX)}JtE?Rp91OP07s zlmzFem6RtIr7}3ChDJ|&5vDKKe@gsNL-V3LQ>M#DfJo&`y=3I`YpZFtPMbQbIc>SgeB^>bP0l+XkK D2|F)$ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/desktop/images/taskbar/black/startbutton-icon.gif b/src/main/webapp/gxt/desktop/images/taskbar/black/startbutton-icon.gif new file mode 100644 index 0000000000000000000000000000000000000000..8dcd2d18113e09c9f86e9a4509456cadbe1ac172 GIT binary patch literal 748 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 N*C=k-xWSRZ8USbmP;3AI literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/desktop/images/taskbar/black/taskbar-start-panel-bg.gif b/src/main/webapp/gxt/desktop/images/taskbar/black/taskbar-start-panel-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..9794880da17d4597bed347cb956cb11d3b52346d GIT binary patch literal 890 zcmZ?wbhEHbWMzEZ3~;S=EK;^E=#JAcs5@RI_mMvvBdVaPl#Xg3%BdQX!!D zlLhQv9S{l16AT>T4B{Ly2@Z{ptn6|cAsGu3o!JBw-DX%6Ho10-8l_D+Fj2XsU!Jjp zN1%bBk%gI!L!e=SLnE6(V$cjr;pVfmEsCG*Ik0*8`T6$79I{?pR$N@{B&!iBCBR?} E0Q!(RH~;_u literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/desktop/images/taskbar/black/taskbutton.gif b/src/main/webapp/gxt/desktop/images/taskbar/black/taskbutton.gif new file mode 100644 index 0000000000000000000000000000000000000000..df13974b11ed2cf774b9097659374b741de42c47 GIT binary patch literal 1894 zcmV-s2buUsNk%w1VFUnB0r&p^H8wacJ5-yVp>T6{2pTh4Wo-r)Dn39$fP;pDh>df0 zc}`JPM_YZBmzf|VC9STnFflWAczbw&g@=iXgocT0ZgC$nRh^)se}aWePErI02|z(Y zGC*C7j*&-HUlAih2?`5{ij5T+9zjDzDl9K3J!32_E+Z!^DK$!Ye1EI2v8k)9Ph4hQ zU}Kh=otc`Oc7KK?Cn*F95JE&oKtxC_J4hNWPCGn40|W*P9ywZDT_GVNFfufppP`nU zo&p95EICFtI64LxEh;xoY<7M=LPjPkF9Q@MLqhb9v>wpCzqL=jgOL+PNae7TzV^3RTeuj)GH%N_; zk~KtNB`PjhV{4n7o>5g;QdCuwm6%CffUmK#cY1v$C@Uo}M4O$TQd3nRB`G5=Ly?k{ zdVPS7kdvaPsiUZ>FhFBuZg>X?3@b1+EiyJII$&&ed~J7pe}RN!ZFFOAb|NGvLq|&k z1qT2C00000A^8LW00930EC2ui00aO~0RRa90RR1arR85A9mqmdDh5f~2uQ=+%oxWe z(uhQx_#AL0iGq|K(JHwcLJ)}fK6D|*i0fKm>D1*z-oE9kn4cNjcMuiME%TS@GVHXuF z8Z=Rv7n;g34g9EBLQTaAYbUIYpoT&Tb*x*cvC1nVVhIx`lbF!>r^JasEy%UlS#GC} z^Ez>&$ALo~j+*Og+GuaHru!N+;L!~K7(bwl`7$lix7fmdONRFuWXPXSzrGAA`19-E zPX&tq{{Z@T!hk1eU?6JzBq)$61+lTn9UZg+%M^Nu5k(k!fN)0`efaam7p(Zh1s5Io zBZe4!_yYg{qWI&57Z~^h0R*b}(?u5%_+x?z3ityC7-RU;Pd`BpStOA{A~_@(Niw-) zlTBuULqDV}kw!m(oZwFy|13a@1_H@4iWY1L#Kjy9{If$EgiN5w4q|+g2PzcZYU-$`W>HE%X~=^}8vdOBP>4K+obeASnH-m#KfLO=qX`=XyFnPlhVkKtBaV3D zi7T%7;)^rRc;k(~n(*U~LuRY(w%m5>?YG+Y>dzVE+WOBSFZ|;mgc4F{A%+@q=pl$A zl4v4|DzfMzj55+_BaXiI_~VfTCt2{52>0Wp!ck6H<&{}(+2xmEj#=hEXQsJkn{UQB zXPtNExo4k$20Cb=hbFqHKaD;b>7yuqWjMTsce7%IL>&p$_Boy z;07M2Tp-B|D)=DC0q@ZNvBnM1yn#Rv&p5)47tP#5P7(<)GXM!N6i`7qdt3v|KGk?& z#u7DLv3cj4PviL#(-^QhH9~Bj3jv!4ki+J+5VQFg; z<5)K^NM;QYmU$4*O-BIn13&ri-#`D^*q;Fc$PXc)V1EP{!v1m)fc<@-7W=aS2T%hK zb?gQOvG~m-9DoF`SVC9G!Gj3#@PG%r;uRN2;RSjifEN0|1u&$8443hS8ot31IF!I1 zcDRQ@_)s4O2x0+4SU^M;c;JX0xPlU^pu{Uwp$Y~t02GBl#VQJc09YhI4z`$s4|wqd gPYB}^EI>vJ)T0DwWPmuEZ3~;S=EK;^E=#JAcs5@RI_mMvvBdVaPl!=0L7myU@;vK z39^%c)!~7XUR#pZ@x`mcZW|fMoc)|~J9M764gX*J1_J>F0iotbhXxH1sQ`^stD_O? aZ{&PC^tNjM{hkURz1ioJ+M{Hd7_0#pA~@#& literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/desktop/images/winbar-bg.gif b/src/main/webapp/gxt/desktop/images/winbar-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..45295a6a674c22f557c96ac3de4c357f030ffd5d GIT binary patch literal 888 zcmZ?wbhEHbWMNQcXlG!Uw)WiSV-GeTf3W4)gDuA&Y(4RC+lhzUPd?m!>fw%44|kq^ zxcl_uJ!c;8J@FJ(jXZlv0>0f!aYsH10RhK8MIyY(c`N?Z8Ojvhi z;<{^7*It~q{^GPPw`Od(G;`zSncHs9+x4*bz}Lx#zs@}Nb^gh(OV4~=eeT z&))xX{=t`v4?bRe`1$gqPgfs*eE8<)^AFz{M!{$ZkQD-oKUo+-8g)PfC{HkO{AXZX z!eM0KFoD6I@0Z1m#}E3Nt@xfW)KQW>U1m+;1-7G2Ow9r;2?j^` zo9%eM8SFT`fUnt-=TSyxK+qhNKHthKL_ynT{_YNC}&5h@{9LyzR4{l+Tkqc_^V036H-IfyjX6?gr_XqE- zc%J|F=t=&_aa=`d`huKCpE%EISnX%vO)lZNY;vOghW-V2E_p774u%F!h8+wIJPbb= z8Uz?57#oBbEEpR^7%CVWBp7BeHpnpCU~G_Q;5byz_2s#|_di8}1SUp30R?78I{^h2 zMmK>4ER22v3apHA0t#%5X#xuDjAa53*cqDy5*q#ori;dKxXe5-g*)WrfvNl{oCl`~ zmS`TFF5KdIaEADl&Vw^0mz+E}OLoi8gR>QmtUNF$?CW>=P(}v9$@41Ty-c6q@JaK< z{AM<<7jxBu+(Wq>0ZUu5U^?% zvTYN#?+|tB7I)}W4x90B6AT>E42%vH4GazpjLaM& W1_cU@O{_dp7Bf6HK04CCU=0Ai6B!8r literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/desktop/wallpapers/desktop.jpg b/src/main/webapp/gxt/desktop/wallpapers/desktop.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8e1fcb0d1a8b8dd170b02502ed19a148d0160da3 GIT binary patch literal 84237 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

SqIyFY+Z2YM&w{N35MlCz>Y?q;k=6tda0vwLC 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/icons/connect.png b/src/main/webapp/gxt/icons/connect.png new file mode 100644 index 0000000000000000000000000000000000000000..024138eb33b9124af6db8149747adbb41c1b8cfc GIT binary patch literal 748 zcmVzR>QH2KN`fNj zBHaWZEgiB#>49kYe(borqx+hj`JS_1d)R}7LjHa+tu+qg(TC+eO4&q(D;ZL8C8o8; zLEfZxiIlQ~iE1b1qBZ2=VhsA0V`*@y@M|Sc2@Wtadv3g0hOc*O(ADVFjPTWAYz(JXS z8MBaa%aCO{h8lvp*ONKIh5Bg|-DNo^;jg=q=uDZ@vodOJXfu;GK`ze`H-VrWK!nUg zje)ufRUJ&ouB2nYB2_pI=gji&GcuBL=+DM-wBZ)fbc7&a9AP1Ztk5)S4Ah03bqXOt zxx}VdK|CIVljyc=oqO1G{;Qew7T~%?tSw{^mi$E(2^Td6>M8+m4H!qrBtj~%w(Y~Q zVrXkVOEN#2&@(U(cX3H&S97B(;-}{)?<>?0)RjVZqrJ&ONChgCgE9%PC}CSBp!+d1 z`bkAqacXYz!94aLsJZ!K=3b*?T#ge1nL>bsZNf4&8mt(EkXYZ?MK0YwH2ZOI9{(VN z&%WPH*v6AY+yG?)mZ`CxE@5ZK2lW}4Pr-ctMRE2V`yf8$PurT4&^p3q*2kt>M8OM& zl@MbQ=U&8BS_$dSjo(q&2Pyd!8`}{~Xr#A_DDL|G({Ha$;Xe@?&|@q4QbvV}D#ixB ey}zEqA^Zgf(1+rQ>#k7%0000XlGzpbnMH9^WV;$J9qKo#mkp3U%h(u+O=ypZrr$e^X8p9ckbT3 zd+*-8gExOZc<|ui!-tO^J$n53@slS{o<4p0?Af#D&!4}1`SR7PSFc~ce)Hzd+qZAu zy?gim{reZ6{(SiG;p4}TpFVy1{Q2{jFJHcX{rc_Ox9{J-|M>Ca=g*(NfB*jT=g;52 zfB*ga_y7NYhEYJJ5ODbKKqZq#iZO~mS(q6ZW-;i1JPgVc3>@bfOgUvd3KTeaMcKM` zTmT9+Dym5^6eP5&35jyCL~LwoUdG4CQ1IlzMJEOhS7<|o6TkONJB|cJt&_qGY8j_CFdSfKOOVXz5IAt4 zV}p{G0>c6amIz;I6#<3?kJdQw@UbxnC^#-)=MmtuQ0WM8YMvo$(vtdt@jw$#qNfCh wKq7O5AQyweiU(yaTnsEKITutM85$V*3^XlGzJaNxkCA+uU@@+{rdHrH*em)ef#d+yZ7(kfB5j>g)|NZ;-|Nno6kqR9CJB(DX)7#&QKUtU= zfEhstWHBgDFmRk=;OCU_C{XAUlw(`PkjU7?)Tn7;VYmK z&r@KbvglBQu=1upg@udrDMSY z2FDg@ogF$0Oia(gUJntM;F*w7{y{XRIF%d;*fMw Ru}w*2KC@pnhK+^68UTSX)nNbt literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/box/l-blue.gif b/src/main/webapp/gxt/images/default/box/l-blue.gif new file mode 100644 index 0000000000000000000000000000000000000000..5ed7f0043b6b0f956076e02583ca7d18a150e8f6 GIT binary patch literal 810 zcmZ?wbhEHbWMN=rXlGzpbnMHWJ9pl^dGqhzKZa2-8UiCM1QdU=0Db(QK?me-P@Z7m PU}s=uVK7ioV6X-NGaC=| literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/box/l.gif b/src/main/webapp/gxt/images/default/box/l.gif new file mode 100644 index 0000000000000000000000000000000000000000..0160f97fe75409f17ab6c3c91f7cbdc58afa8f8f GIT binary patch literal 810 zcmZ?wbhEHbWMN=rXlGzJc<|tzJ9pl^dGqhzKZa2-8UiCM1QdU=0Db(QK?me-P@Z7m PU}s=uVK7ioV6X-N<)RPU literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/box/r-blue.gif b/src/main/webapp/gxt/images/default/box/r-blue.gif new file mode 100644 index 0000000000000000000000000000000000000000..3ea5cae3b7b571ec41ac2b5d38c8a675a1f66efc GIT binary patch literal 810 zcmZ?wbhEHbWMN=rXlGzpbnMHWJ9pl^dGr7Oe}+*o8UiCM1QdU=0Db(QK?me-P@Z7m PU}s=w;80LdV6X-NJSY$C literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/box/r.gif b/src/main/webapp/gxt/images/default/box/r.gif new file mode 100644 index 0000000000000000000000000000000000000000..34237f6292a7da6ac5d1b95d13ce76a7194dd596 GIT binary patch literal 810 zcmZ?wbhEHbWMN=rXlGzJc<|tzJ9pl^dGr7Oe}+*o8UiCM1QdU=0Db(QK?me-P@Z7m PU}s=w;80LdV6X-N?ynEj literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/box/tb-blue.gif b/src/main/webapp/gxt/images/default/box/tb-blue.gif new file mode 100644 index 0000000000000000000000000000000000000000..562fecca87176274af7bf13c419daaf93f169249 GIT binary patch literal 851 zcmZ?wbhEHbWMt4{XlGzpbnMHL<6oAa{JQeg*VSjft~>i}!})KUE_~a1@%#46-*;X4 zvFF;4eb;~7zJ2@P&7Vha|2%Q`=a~n;&OiEf>B+Ba&wkx{`TPEx-%p-AdGqGY@@87@w|Nk?Lg3%Bd$|0cmlLhGf{|q`H xPk{0S1BVKOBoBu|W0NBntB_a%g98I2m#~UU!-oTo%xv5uDh>q)92y%KtN|VsNKya* literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/button/arrow.gif b/src/main/webapp/gxt/images/default/button/arrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..3ab4f71ac115188898fa2701b6b11561d0461e4d GIT binary patch literal 828 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/button/group-cs.gif b/src/main/webapp/gxt/images/default/button/group-cs.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d1dca8f05ca550917346830a5a0ae4e16665181 GIT binary patch literal 2459 zcmeH`i9ZvH1HdQ!yk5P2p?H)dxpp{mJU@!;=?=U!!Pkq*zsjUC!6Bk-dSFVOt_!mB{_I3VoryMO9y{@Ma z=-n9DL$B{GJqcGoa`AW@KtUEXYxS9y%>dB{M#Mz_E@4eP*_kWX z^$4C>m(33o-~&JGx7SyMz30WrFL$>$RxxA>k0+M{zIVY>_Ns?Yre=MWTI_qhMP6lu~OPcC3oegZjRc3=(^V7L)w0*({)+2G{4{T;} z!o0jGzAzuE1S`!ys~+~X;Ic~gSFD>2s0i!s44Nr2{v9?`?2ia5C=Ng`%#;QugJvIl zX2534LY2Z0<&i8qVL7rJG?#U&KWwg2Z6tfHDp4JGvpPj7exmxGdU$C3eVxYnn$L!U z`PxTjbD?!bexlEHC5Xm_h{s6L!t<)w{UTi5CucPzxwui(_yinUcAMBO2QMa*XVGKC z=GlNC5?&-)q})%Ygw02%fDp? zVNB8KSM#G-X(81lbZQu7nT3hsnXV^A4@CVZF?NFV-}t){`7%2$Np8AIR-7-nvHOnQ^Yr z29ODG<^*{=utg%~TyB+{CHl7?LfQY-rAyiI?J<{dz1}#QCwUHfpd2o~hf|W=KB6QJ zu45SUAF!!>)JvC{YD)6?1&ZX1^D@s|{)cn`#dBJlpkU5!N_ZIg4~{NC(Uzy6x{{=1 zKe?rfYg@ITrV0~|@8ub{|BR&EQ|Ia^S=qK8j9Iy>vok3>3+xaUQ15r1*4vMH-k~NY zr<-xLf4OeU(HvTdwc$>QVsM?qQfg-Hww|)w(fE}flAPtt)lx0AZ85ZzM!P3YPuBpu zIz4GQX`B=4@`f%`F)25gdrYI#mTiHRMj`BlpN4SV3>xj>^#pw_p3!SNBqur_%-}Fb({3Vq!raSJOb>jsf$Mg_Ll=3M}zGh0*jv{cQuF zqmjT9Ni1sMYJk1%XufpWRdV7?$2CxI+916|kz;5kukQ^K6G~rle?6IYiE>rdD!AJo z!NKDDVl5bDbMZ#j3K=C~N*BvVzNyC%m1wm(h9_K{;$IbDeX@-l!VY^kdI9N8_1=jfHxh8T3_)wKnK|Kp zd#kHb=JVjpZkT2o*vDFxiHooYdyV1V)pyhI?)CaUwehdL_6Z^()SB zh=d#_`1@P3XpBUY8&RN-J+pLr$&4YwYPAf?9 zNv=0?zgF??W86>)p4GbSeVcF@FJrNNcTI26z+a}2%;xSja7^K`kr~TUVtBW8#)oO;GY8+ecXL81wkhso@Q7N{RGV36L4-Fn0@B=bZS$i$`@>*e=Y6L&Ng dUQu}td}@Irs8Us{==-D1xS|KJM_Czg`hV^ynJEAO literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/button/group-lr.gif b/src/main/webapp/gxt/images/default/button/group-lr.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c549f96d6064d4b0cc022671fd823c13df36d8c GIT binary patch literal 861 zcmZ?wbhEHbe8J4f(9Xcn@V{aEiR+JFe`Od2qaiTzLO}5+3p2>qIv@g+Cm1-a7??R2 z95yUC*vuiU6?0<4!o%$X%3gCkHZD5aEn%E>=fuXv$NLqWyJS2!Ejc+^BY0KJ$xTbW LTbP(wSQxAUYf&Xs literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/button/group-tb.gif b/src/main/webapp/gxt/images/default/button/group-tb.gif new file mode 100644 index 0000000000000000000000000000000000000000..adeb0a4cf54bdfb626ab6f3c070f6e2919f374c0 GIT binary patch literal 846 zcmZ?wbhEHbWMt4`Y-eC-_}{So#PvfrK0JQ?m0=W&hQJ650mYvz%pfo8fCx~YVBpYZ yVCE5U*s$PWGl#HNOoc$h;dTLKuQ?tY7ai@EFwVMjV&mfD{R+-`G6D(;4Aua=h#nIF literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/button/s-arrow-b-noline.gif b/src/main/webapp/gxt/images/default/button/s-arrow-b-noline.gif new file mode 100644 index 0000000000000000000000000000000000000000..a4220ee9066357ea2270a842ed244bbaadb23de4 GIT binary patch literal 898 zcmZ?wbhEHbJi)-n(9Qq?M~)mhbnDyy|Np_fQDQU%Mo=fuXv$NLqWyJS2!Ejc+^BY0KJ z$xTa7Pd7+DHOF)FGT%0aqGx+fZdP}nYuC)RmLp-s#l;?zwPH_gS$TPRz~V9<4hCxg D_B%R6 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/button/s-arrow-b.gif b/src/main/webapp/gxt/images/default/button/s-arrow-b.gif new file mode 100644 index 0000000000000000000000000000000000000000..84b64703006ca6d86d335b89f8d40b9fa3883c48 GIT binary patch literal 937 zcmZ?wbhEHbJi)-n(9Qq?M~)mhbnDyy|Np_fQDQU%Mo)`~r~W##4N0gJundTm{G tbu}Af#?`K^tFNzT+TJAVU8dErDdY00*wfqA-ripD_|#nQ={XJz)&S^DQ3wD4 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/button/s-arrow-bo.gif b/src/main/webapp/gxt/images/default/button/s-arrow-bo.gif new file mode 100644 index 0000000000000000000000000000000000000000..74101701ad263bd214ab28011bad537f8d0cf5e9 GIT binary patch literal 955 zcmZ?wbhEHbJi)-n(9Qq?t4@48bnDyuAOFF;QDQU%Mo->z*lJU)+gtJ>i_@% literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/button/s-arrow-noline.gif b/src/main/webapp/gxt/images/default/button/s-arrow-noline.gif new file mode 100644 index 0000000000000000000000000000000000000000..0953eab5c875fcb0f3b40babd89052b064bf9fec GIT binary patch literal 863 zcmZ?wbhEHb*_y R+_d!cbc5tmb0h^AtO41(Cb0kj literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/button/s-arrow-o.gif b/src/main/webapp/gxt/images/default/button/s-arrow-o.gif new file mode 100644 index 0000000000000000000000000000000000000000..89c70f36fa653684087485ab673043ecbf615cdd GIT binary patch literal 937 zcmZ?wbhEHbO`C@~rWBPawEf3h$$FfcLbfcy-~6AT<} z46G~?3JVq-Y-VLwiqV*$aJZREUaCi9W8%>kKJB0>J3c15x5sMVlHA(yGnuN7&N42);+}s>}e3|KPvE1;j`8SW1{tiuYV6X-NOpiu@ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/button/s-arrow.gif b/src/main/webapp/gxt/images/default/button/s-arrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..8940774785c25d4467b239aa608a9eee40e273d1 GIT binary patch literal 937 zcmZ?wbhEHbkKJB0>J3c15x5sMVlHA(yGnuN7&N42);+}s>}e3|KPvE1;j`8SW1{tiuYV6X-Nh3iI; literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/dd/drop-add.gif b/src/main/webapp/gxt/images/default/dd/drop-add.gif new file mode 100644 index 0000000000000000000000000000000000000000..b22cd1448efa13c47ad6d3b75bdea8b4031c31e9 GIT binary patch literal 1001 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/form/clear-trigger.gif b/src/main/webapp/gxt/images/default/form/clear-trigger.gif new file mode 100644 index 0000000000000000000000000000000000000000..da78d45b3214480842c62514af524f4aebb66124 GIT binary patch literal 1988 zcmdth=~t5n8U^q-VGC;mBm0hsV8ubLEt_Ll8<8_(J7+8+GN29vjM%!ALxG`*vV;KaE8sA!@Y z4L3~1jhLAW4>!Ua947Tqg?%((Kh;b$Ko$&=1w*rGb*ec?N^AxVXqe@UN>0 z891^{u56v7+E|jCmSrZke1FwUW#X##SBxOn2(GSyLZMKlQmNHyjYgx@YWd;~fq0Ft z+7v0*1j;R;!o*jZMDlHsa!;f+iM1w)YEP=(muf+oW=p08<(hqkW|zMX3O7KpZcnTO zrMf+lxo?0HvrSO0Hz^EedrHHu(zqvI1C{Hb+PJIP0JWQ-Y#UT;feI6-)9Lhjy}@8G z8jZTOUH$s*&hGy1-ahdEdx6`Q=5Zi!^uxptKLNl%;1tXUNoYe@!v1h1gG9hjRlyIY zT+i)opRVyJ$m^OWcFfcd!goE+KKq624@2~*{(Gx41$X#rT_Vu?_+4{kc3!~LZ@o|e@KE%NaSqqM2CdnRrfg1wYE_n>MZsu=aYxhs@ zZYg1(SHAI5{)vrY3S>+Sr2G5!}cb)=Lak{l#IcWFsP=h z54sOE<$IwK0i|U>!mQGuh`69u9r$a%T`NxXx|!$| z=ac7y%X=&#XG<+_jk=4wnhTGFb+y-lKaBeiK%tbtM}APdfB|~CqPsh#af)y^(trRQ zEp@1acO7D$So@a(lTLRcQP%+{D$xQ)D?;t7^o`EZs~jG0R~!KcEY9V= zMfruL`9PuG*Qsdx+dj=Ii`&E0II=PwOPulj+Tj@q29JB~T2{m(hfi&|!E zBM$OTv98=N_;e}11gu55UTB%9W)-L))9jWO$gpd{tFfCL@43sLIsT;NS-D3u+AQ2N zWr!%TS6ADl-D$@0q>qlSMI`y2eiHE9u3$58=)j+XZx;IBIT;=;f85a*t?a9*L%6-} zN85P+E0<{PUGyX_R!^ME+)_z>Mape4XM92w`b7;YV!insg9^+qDfzUevNmaJNM0}502MlVmsU>iV}`Lr`6`Bb{t@C#l~>;SXe`ck9;fs%svkL zUAe$-+haTd`enn-;A=LHa#CU?4rl5R1@d8MkEOU&)s-HE(zl)`8NRsxz3AFuDKdp$ U;ezY9-WkTkP-6N%4gg~Q2Qp;nKmY&$ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/form/date-trigger.gif b/src/main/webapp/gxt/images/default/form/date-trigger.gif new file mode 100644 index 0000000000000000000000000000000000000000..25ef7b3ae73c0918e97b5fd9c3e0cc5c69bcc14b GIT binary patch literal 1603 zcmeH`>o?nX0EfSlh?LXSh6Gchb&K0_)}2tjEVIrf*mT-cZDZJ(tUK`vtS)2>N?|+Q73~jaWl`R5gD__+)uHa6pc+;!AnYA{)io;j^$zK-;1hccV zLZMJ363x%gFT6y&EEbCw7Z)WGiBu|`_EpHn+pf<~!qL)+^@kuX9ddA!|~^bJ3jxY7!i&- zO}gJ$d>WVTX%pGG&aZ`i7E(VkK4Ja9tTI%PI|;LlFAd7J6{u?I^lr=khW z9L7j`^i6YIRU?auTO!iU9LH=Gd5-vUS@FpVMr|<;$*%?ORm3```@bRaKQttiW@oLK zmS&$sxRipjURP}nFmq^A<(b)H=?}HU|zxLk6-(l-GH&)mfGWY^u;&^?qN?-hXLw=_HM)?_LTNA4G zsBw*La}A2CNin%bUxA;Rs<;hKb&}+dDT+tWQ+v$u1E@hHKBpB6^8%*UNu>T}-V;&` zC)e$p#G(TZQwN5F$c;GFx)QO>SxZu0WlrpuDN!QAjdPFE9)D zX+dDf+Hw?@?*Qw!SL6F*9ldlz)&-T?0ZI@{H{w9Ms2xORiTlP}%9An%vH3|!!`=mn z+mo)9C;F$}SxC~4;*|UK@Qb@@{fx)jZ~6(JsBZmC$gX$Cbhxna%csHaMO1!ZFu79z z3#m5DMw~mOPFziF?gW8O;fA?Uh7T7`rp4$Nu#bHRbCESg+@)Jxo5rcMcd>>5 g-MOq(pFXLdRU~2PX6q%R;{Do7>GCKGOG|L!Kl0xUxBvhE literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/form/error-tip-corners.gif b/src/main/webapp/gxt/images/default/form/error-tip-corners.gif new file mode 100644 index 0000000000000000000000000000000000000000..6ea4c3838768c0ec3b5dab8e789333593295c15c GIT binary patch literal 4183 zcmeH}_dgVl1I8&X?ax;wEh=1RMP;viDraOgjRrE#*;$v2>~rQ>H*ka74rd%^oRx7Y ziHJ0e$T?(`a8~#IeEyE__xa)Z{dvD$&+~fBEx~&FPkxK*?M@aGGZmQ@Uy}b|4;~4E zjHV@xj*c!aE{a4VvH$D;1pWsIoZFDt{clXQf9>B+h)IdW#HA!mP21WMq>iXO>aHyA zNd8N~3TIJ8>PnNn;`6n;iu?+B_B!mSscCVnnD`Cmqu15c9*m~@8=NJZb}bKZm~i@O z8?BFMny~MTRSn~P+#Y~L_g>c-@!jTRE4)=LbEs7QpyFdIO)#u~qj& z??2FN8{B35{tfm8Gcvf*+Tc#4NfUwgTAOXF<``{iw$ z>VHmk=c>BAYid}T=_lVL+BP??&NuIYj=yW>t}jh=q>1G1TADUi1cRk6eJ#yf>&sI; zM7!3Oovp721>=3Kt^bSz05lORAp@O=lL9g(;t%KuCKCPvgT5smwTFI7+CEnF4SpIX z_?CPY4w^(LqM?&1AR1#bRgEKBp;H;B-567uMr(p8q$xo8d)5t^*>Q0T zV9EC!Yn|EexwpW|(|Pyoy{A!*kdkTiBiQUT#ucv2$9kZ>`T0;<3BSOPGs`c0%2U3O z2OjpG!H4rpW(ZMhpX4)R0V;x`L>V7JF#^aGkmNRJ1>`KS$}A<%4KYr|LYT8O9Bgiu zUIbTRJ{v*#%#|=`%sFNmXKt>v@{dSI%rRuxXTH3i&zxs9%`wq;oZo+*uk4iZ{ZZ8o ze8{f=_3pz|_k&dzYChPP0@*K3d>1%hVe<=huifU=>c69X7aIg{Wme@ZXMT~p9M5HO zeh&LCH47&V0$aA%=9gOMPKy1g7d!5^{8CC@N0Yl(_s4R_%;Nr^oktzi$~$Ge%6{_d z+}{3tbvC)FtgZL5+OO9jx;6EcO5Km(9<^4rmA9u}S+Df!>H3AdGg^PU^v-0DdMMZQ zu>bG(qcR!42dq^~LkDk}H_s2=aq!p1-E%2l9fm-9S3kOj%!ZA4VAQ8aAoOyb9B9P? zY{b7+y>2+D&;Qwnu<>%;f#*x2g=hWIB6YoYafbthJxTH`y*DWui^5kKS1&enW!nX8 zbf8>V8!z(%7aLmfF&8(Ri;)4FTq=vnvxxhUfMf)7y{vu#zs;oIcWm-tn_CIezQhU!omg=efCZ1i0pubS|h)>GFGj+bGg!63C2wyDHU#dtT-x ztxG+)Jk6PM>UX=Wsb)@<55!1ejK|<@QmZnoBNa|>@Ob(xyG+>WlX5Fk^#;F!q9V5y z`gSQ>v~N^peNj+6??vl2JHMEfiE~y^D5rc*qhB>y*~j`UKD$A2QZBC9U^;o+1q%kz{lkuNJ(6!y3O9>R@Pn8Q!6f4MtJ+ z$EhFHyh0Nv3Y^`08A=V>lHH*BdML>ax2;stRl$gPJcaGr}0 zfdDsLq@LHA;SKmR+7p6%z1Q)z=SeZ(Cq*~)p#PECOi1RtlCIQ4_v=K&BjK);Q+nQ# z_M5R7pewCM_S2h->_Gwy=y@G)e=E13fM&9)ZC>tkzq)ZKJX*VKyiwMUB6c zuj8I6f4V#P>-S7X+2Ddv_@WLxrM{Foz#Ti=tlMIqIv+i6J^p7=wr#hwYRF39 zgajt{WozBC=$z5FzK6P<+>Pawx{_}xW%XSj6NAKkqNcp(gsV54+mH!HOli^8h9+xP z@a61BIckCW>uwiAG@DPyX;o}EhOk1|w5FL)eEt4UD!+?cYXxA8>OijZN8**oqdPA) z%O76|3myIX+`(mHp!8i!c?jOpX`J%0l|`vEeEP$~>(uALfVIh5<9Oc-TVE_stXK5m zoFnjvC79{cR2<~ z2m+;qI)}UO?5mHxWgd1EYbbmcXE7AJB@^d66{n#ccM__07OSHKx_e$PzP%$(2#YuC zieKf&Yop>-u#uXez{^s)y21c`#9b}NgfUE<>4>&rcYv`_+Z=RHMlW#%m}t$oZ-x!9 ztk=FPxO-EWs3S;pgofO<2)G}v?E=+)f&f1r@prel?TPUBss}%)Pcr-n4-kZ0l}!$+ zhTn2ewn<11%7YKll5b8Whe{-eT7<^yACPdu&m11%|)!02Xp(dpPo~qxG3O|}k8VReEO>?EEa`>sb329p7 zv~-U&HZRR~I;|3rj?_x4afG#x_;d;`_gLKLg{S+hr}vMfXDDU7vdC~ir8D6fSdWaF z?u zcpKy-=5%S#3Ey4%Sy#-FNNiT+y)2|;b`3u(-6EUqk)49bKGcydqGiJc*$s->=}I|L z?m4NoSqEMxoz+KxyfrnPG%xLSQnyULvZ0|X(sxp6$O){^HBwG?5axnra<5q;ZaC#7 zhv!+8AgmhlGGy~?Ki#)Efg)SvU_DUlGsiqEYA$v?TLMpgndiJzU#vFPh$rp z^FJu%51ZwWc;Ec~rh zxMo%;^eo&=D%_?P{^=?d;}`A%;3R-J02n6)!R>?N4$yFic(}j#IB5X>C=f3L#>+zR zC*k4{nfiHNz2 zNGmO$2*2C{KUAY%#=gXCtDyV`357mkn0@|uW<1d#jLT-Y++p?{VSb?<6&DvX{4ddD BA5{PV literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/form/exclamation.gif b/src/main/webapp/gxt/images/default/form/exclamation.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea31a3060a36a625cb5cfdf4fdc5cb4fa5c3b239 GIT binary patch literal 996 zcmZ?wbhEHb6krfwXlGz>`0sGY+vu>b$x(l^!y&e3LT!$PJ06d9I~VJ7A=2?olFzvm zzpDxE7n6N1CI(zd3A#}bd9NVyZb9tbn*6)9`43}*9>oVgP7HaP6#6VR?0I_l!meOY(6|dTBUw78N>aBj$UH@iM{ilZ1FAYgw8_pbc0Z{x51oBkf&`s?Q9|Ns9pjDkTQ0*XIbm_d%z0TG})!N75lfssSTW5a@j z7VZsy6h0k$;Gk@@Yl-LKR#u*NrzJaX3aNBVGqZFP(Gfc8+b>uAY)8hyXKfvg1xYiW zY*bF=5>dbAA)s8qF(=rm< znzH#Wl@*DQugyk|h0s(J9u~z4MZR499ryhC^~?K*w-=e{wl~-nv>Egj1cL7gguBx% zT)Zq@NE=-Nt6g4JyGT~9fVo?Mjr%bh_W%^(#8yHO+#|w*$V3wYFrM_Cf1JV+84je7 z9ROpGU-)jyX(BU$6nbeLjSW4@*$~LtaEfn9=b%FPo5J`zLU_AExy0xc;4Ihg&$RuV zvJGs78Rz*%p2AAl3(x<8lzp}-|FX4l%|7EfIvgRBjB8tSQLP1VZWEF#ywdLj z>2hyD&Cz7(vFsX(us-NkLs+sfDkV2EMfeY2cqXqlT3nl0R8N;Z551!ZFX)PvHbvg; zPAF=Ql@G){8oW?FobYU%-aQi8(syOzQ{37bFFif|+O^~xchYiY*TsbylHyFUEVrOS zC@mHh+?B~>#g(;XRrU9uJgcg0tgWkKmA77d(0=`qGNYy=^WpQ%CrV+BN>bPLw6R6f z(sR2_!|q(n>iQ^DjS2e4MK5Qv`<8AFEsF-0Btwh&iZ>0-?TxLUQpLzh z&8rU$BjfVd`o|+*kbdR$!ncucOIodVe0*G|(@jlJ&&BTL3F4!sWQKrZSsrbm`jlswPRiNw~ox#)EssIi3K_U?mR$7V-IC9eE}g* z5#SHoR>a6~NhI<=Q;WTt%?}Qu9NUN;+@wtJJS0y=!z59V(h!KT_cmHu5NujLLCxE9 z_QU0%P-;FGb5tI6*gk|&C@tm`|9+v*B6nv=lO}$S+iOD$Mn~aW%lOvrmnW;VvcjwTy1x_M|Vx7g?UOR%A{vxR1=O9xx`_0#)mAz z#O%%n@__a?l=898*N7xDAiI1b<_~Z{nslUk?g_Dey!Eax#h5@k{{; z%`faJ5{8R)QaC;cQD8x5`VzNXi1Wqp3x`c^8P{6P{gaVWuFtYe7c(1?zIg}q~%W>VJ1sc%Av?5s&yuiMsG8Vvph~HOnJjUP7z}R9x z!{}s!KCBJ0F`$WM&Ver~;K&ocSHW(s6Mh)nO&1ErxjYUP9z|fJI2_q7U~QAux`?+R z3gs}A84lrf=7C(=X6VrsYzT(A2H$czA`b%`i`+&{!uU_X)(G<^EyNUO6=M{u;y53QM-q4Y5!fjNf2B$c3=RvJnhbNor$)h(^K&^hwf=q`1g%>cIxsnNp85qN`tNhU3jbmaN?09D@dd_WcK8kleih literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/form/search-trigger.gif b/src/main/webapp/gxt/images/default/form/search-trigger.gif new file mode 100644 index 0000000000000000000000000000000000000000..db8802beb370d7554d5319c0e0d5c4ecb8da2c5b GIT binary patch literal 2182 zcmV;12zmEMNk%w1VP*gr0EYkoEJ<@NQiwHQoj7N%J7}#uYOy_Uvp;aNK5(==bhkcs zxIKKjMQ4^tXq8B5nnG@~LT|K7aj8Ubv`KTcN_DkNb+$}*xK4PsPkFgecC=A=wo!Sw zK>t8HguXn4zdVe>M}xgcgTG6KzFdO4U4p!9gP(DOo^FGnaD}3FjIVQxuy&Nac$K|H zio!~Uz)6h4NR7lrk;O-p$4HaKN|eS*mB>+x!BLFCT9?RLn8{$2#$%nzWSz=kG$KLt-_nF#FMer zk-6KOx!0e#*PFiDow?ejw7{XW%Bi%$uDZyexY(h;-KD+Sq`uy$z1g+6$eF;~n8Dwc z!{C|J=bqK)oYv~9!QHgM*R{jhxXa(D$KkBQ;;+l&q1fx9-R`8?>ZjiBuF&JJ(B!Gx z>$J(?w#($V%;dSs;JC}=xy|Ca&gQ+&;k?h~u+ZeS)8@6*<-XD3z0l^n(CN9{>b}|N zzTfM;-|xiD-N?_^$crFNz}e}--0H;L>&VsT&DZA2+vdyM=E~UX$=U47-08^Q?9AHh&fe(F-0sEQ z`O4k(%-{6L-}}(k;L+IQ(AnnK+~d&Q>d@Wo)!*&e-sIfg;nCml!s749*5vZh=Kj>=_}A(G*yZxs=Jwp>@Yv?~+UWM)>G0j?^xy6F*y#J&>i*m8 z|J>^P-0S|`?f>2L|KIfg;o;%q2J$<>%_==G9y|_2TUI zIf000R80KEttNU)$64nh(tT*y!e!iEqNK8)CK zBE^LkFG}>sv7^U-9vOM@NU~%eA)QjHT*>le$(I~m!ZeAJrA?J5^Xc4~PoGbo9K9$T zI+PhSYwFZlgErLPznUyPN%h212+^WPlP+!g^qyC*`0nA`hp(*He@|~trMglG&z|~f zxsh{A-%fo(i5_iNhzuKA>zFD_yV4V>V8nz4BgM9pRlU{t`UNbw>({dUaJ6~!i(lA# zgjE_wteCM%w|9>XnepKRjW2fd_49(PHnVlgg2ZSogNZt5$U=8ITuqReF@%Vjc3d0T z?cBRR^!^=O$XBt~h{$MNBh0?DP=^QqD}Frrav|u_=cD(d1CKRnaJ-nJ58Z5J$&gWF z=cB_8_&Brxg*wZGMhY>&01;gbODLC;5cuiGpML-fNZ?cQWO$D~KX~w78acoKMpy=;Ra00y@+aODyx;Ac8Tnd67#l$xxFAj55+_LkP$~LzpMQ9Mj)_@wK3Y zgF@`sK1s@o>TQug8Lb?0$T&|Zphu3V zpppwURJo_qEQr<`;ON~jREQqN8LJkrJK$7Drr=T(o6|TZ6E3I@)Q)m>O0-C@a#5jgZ zuDkXc>#PO@`_wno%EN`TzajvLJi``SDY7e`(;_DYRFIB2<_IH!2IkyqimsQGdv3ZC zSip=kg-T(76uv@>hA@ueddf8Mnv1Tw_TnpqHw?@3iM$6(fWbA~mPw4h{60(Tzm7WM z2sr1k^1uKO9MQuA6P$65BY4d*#~!b2GIGf$OR&W#cf=zE9B}ZV$sQ2XOF<}u@F9fD zFw0D`$q(3!v(BcNqRTd)K(KVpYG9*_&OG}Jw826XZFD1!h_i|Y1dKqy+8LN3jw6lW zRRAy_+bkrGc#?oD1N{p1RZqSjrZCF?A`a@LZre=Hlu7X z010asa6#6*qyo6$gkRnC7Kkfewki<_zydnO7?Q|1Z#NRR7nQs+N$V@H1B)Gc!178Z zdE~*hAEHQdcise0fO;Q13z7To0`&fS@WU6cb1&R{(mD(CK=a5Y)^O9yF1v8uNAk-< z?z||_tFA}`0i-~VIN;qK|*{VjxBMjA&p%9cNUdCPhd{Ln6`-i)5r6g&!4}4|NZ;_|3AYh7!85p p9s-I#S%6;r&!7YHC@4=ba0oCkvIrP7I50A^3uwfgFi>Ey1^^@>A+7)b literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/form/trigger-tpl.gif b/src/main/webapp/gxt/images/default/form/trigger-tpl.gif new file mode 100644 index 0000000000000000000000000000000000000000..e3701a383107e090fe25d3fb8d63aaa9290435e9 GIT binary patch literal 1487 zcmeH`{ZrC+0DwPCBIojs3o|_0?P^-#Ox&%!R?e}@xx}{YYR;I~>N*jn-Qn&=-p-KA zeA(%=S((N$6_|l9fQC+Hxi9#N2luQwPBW3%=l!}^GELum-8=KbTwwF%Rj%DgphgD1_aTFbxxSbc_7 z*tiC}T&|Us6}Q{%@p#OB*cyNreCzg?@X|W$2*O^k*XQ%C`Tc=FAQ%j8?6A4LxwQ?$ zFnGh80{=sSgX_p0D-7aZyI(&6LSe8g^uSq3699<4vDu>uKv9OqBv(z-4-J(@5=c^c zCvT(%gPg*qb@7!*M7$td*%d>&myq6H6@|%BvEwc%rj<`}&sV>d68bLbzTg)ez92R{ zL%OWyA+pbMNDmz0eA2_8Du?G1p`W#a zi*2IW=5FT;Nm@-f=nK&Ju|GKH$G>G{YFkTqB2{y*&pLXG@cG}HCp8gjUV5YGKrX;c zKcN|~+$?$NF%5hJAHnq}74oAsZQo5Wi&P-SqG~)}Tn55ltvZdK`IT)rc<_XRg^Z+L zEoNSBGTq*jc(eqdQjVJMM2OG;fu#t{Wg$qSxg0~TkXJ<4QMskK7QwahebOaMWkPZx zRCQcO<&}om1lH;#2Gv?~f?O}Zn-ZB9UH!@7hU*~W__FO@Msfvo|59dNOf4yZWj)Bw z%xm6#wG3~s&!Wh#gS~vA{n3r&QHV_+#^*Lr;_-`|0`e>QZ$*LSBb*;mXnE6}$b132 z(DJsR0TJCw1C%R+wAP Mbv*YluxN1lKj3usvH$=8 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/form/trigger.gif b/src/main/webapp/gxt/images/default/form/trigger.gif new file mode 100644 index 0000000000000000000000000000000000000000..fa563147f29f6023c9abd12bb393ab91b0566123 GIT binary patch literal 1688 zcmeH``&W_&9L8TwmX|I}E3>QRu^J{}W@);j)ylA?W;dHB)00tDYTG>J*(x(<%@jT5 zvdlVKnuKzvLk97`=iH63-b85uHnsxwvyb0XSlS zyW^@*wj$lZ*_9B}5n6dUUrNe&cPS-_U=VQ2 zb8-7yvsQ;KyKubdPzfU?E1%iVIVY|i=;K!9<3gsigPl8A1Akul#Q0uVXE^=$O+QKX zgh@x|=Xr(gM|ZFl<)Pje>4&0q@$WoXUvJf5h?Tg8s@KAvBCx5U2DwbnU(@u!*K`YTG|;~K1Vr3y&1 ztK}>Jl0CC@xByz|vH~K|%IVl1M|SI2fA1oz3}k2-OjqC{(|Oyk%-3BsWU`{$`Ih!g zvre}6L~LfUu5sOx7G0zGyRfwSCI;hF)J|sE*jsI5XA(~#3MMubFZF3{aoosE<~59w zNDWnSRfcva{}4u-rSC^}flIc+$oIU{#jaR#_EJ)NIsrc=^vsyMMk5XvB*zSS8o&24u9dwj!}I< z`5`e{=5)Ti8tkJTR)GD<{J&D#X{^h2eV6&w)BOoaDX6zg+I*r_k*cqr9;m7evW}#? zCk75&cSjRk@=qi}D*A5S_K||hR7m}h%1TuhU)Qv1D#}@n7OwO#-K literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/gradient-bg.gif b/src/main/webapp/gxt/images/default/gradient-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..8134e4994f2a36da074990b94a5f17aefd378600 GIT binary patch literal 1472 zcmeIx`%jZs7{KwDTLnZd*hMh7R3%&{VK|xh5d@TrMjeTpnq?_&b8`}Bh(kowLJ^R= zwLrP_Mz6F*N-1{`N?)K@6i}uD1>V*|OIv8)A|*;9JN<2c#7;i>=A7rpCpmEmrw$)U zc7mcXc@UIVGnG~gOy34*)9Li-becMyuD$~>)ERVj219+9F_Xbm-(}8ZvefrjGxzFd z?gQ+Z2W-&U2kcoQXO_sF&Em{uap$rD-W-Vsija6n4j*~Q*W?J0hYp%tpk9;bpv@I( z@`Tz)B2B(fn=b+vZGl)@(4Z|8YYQ8+MGfzZp1v;z8bNg>jk*$vu2iBclgyVj>B^es z9|O{PvUGvmyzs<9PmwK9WcqTTMPJ^kuV~R%wCXE?Ha*qBP}OFjwi~K|4nuYOVl`;T zVhzx_SPOK48f&|ZG@#o^cQDa=jErs*qsPQ}W@7f3n4r(hETGq1*K1~j_Lq?Dr%LqcFxvPW zut}by5*6B{LZvEO(+Ju$Vv_!sOuZvAc4ePkK}Mg^X|R8{wv3g3jV&Qm0~*o(w;!4zGtP^}q4TE3f=4jcq2s zNTj41IT7{z(FAgK^iIzZ@_2j+Ir8!+!Q#r@%9(ju7k_5|Ghf7eqx2?7%YoH4jP!wx7HA*Q43) zwFOW=pP6ly3pn=?dHpWVl+z~h4aA7q3Dbmfk>A9h*D=1j0=ZkaJtNDl4|Dy58=OQ4 zb=w|rEX#G|6q4dPk_gFV6VcYbmUmazi7x6i6Xb&As-j$U2PJ(S9-JDYvw05^=DZ2M z-q(%65iC7!Sf=Hfs~2MFb#cc_ASYbPO$Z9ewDx-)GFuhcxKI?v{g{Fd`2H?N2mNoG a(II?Zs7)DAnPM9b=8J95L)rdV=-9sjoxm#q literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/arrow-left-white.gif b/src/main/webapp/gxt/images/default/grid/arrow-left-white.gif new file mode 100644 index 0000000000000000000000000000000000000000..63088f56e1c33fd23437ab00ef3e10570c4a57fa GIT binary patch literal 825 zcmZ?wbhEHbWMSZBXlGz>`0uc0#Y_e;`2YVugfU8vhQJ630mYvz%pkAofCx~YVBipA cVC0bDXlQU?ViVMIiI|XhxRH&WjfKG)0LI-8@c;k- literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/arrow-right-white.gif b/src/main/webapp/gxt/images/default/grid/arrow-right-white.gif new file mode 100644 index 0000000000000000000000000000000000000000..e9e06789044eacb8a695cd1df46449bcb2b9aa07 GIT binary patch literal 825 zcmZ?wbhEHbWMSZBXlGz>`0uc0#Y_e;`2YVugfU8vhQJ630mYvz%pkAofCx~YVBipA cVB}zNNKj~OV&PY_IbpESp@o^1jfKG)0Ls}94FCWD literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/col-move-bottom.gif b/src/main/webapp/gxt/images/default/grid/col-move-bottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc1e473ecc1a48f6d33d935f226588c495da4e05 GIT binary patch literal 868 zcmZ?wbhEHb( zLO{cVgpLOZ6Fwx&_)sw8LBWC#1q=Q+toSft!~X>b{xgh%(GVD#A)xq^g_(hYn?VQU zd{CZX;BaIR=ZFzVT;Rwl#vu{Yu%W4$ky$xng~3BdrVc>?i4_ctPK=BUEM^-R4mL70 a^J-WG2rw*VW@C5a%Q0YR@NEQ2S_1&+BRBT| literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/col-move-top.gif b/src/main/webapp/gxt/images/default/grid/col-move-top.gif new file mode 100644 index 0000000000000000000000000000000000000000..58ff32cc8fa2aa1be310b03bb2af77c1b77abe93 GIT binary patch literal 869 zcmZ?wbhEHbG68wVGIhem=U(^LUb4h;c?We$u2%uEc{03e(}^8f$< literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/columns.gif b/src/main/webapp/gxt/images/default/grid/columns.gif new file mode 100644 index 0000000000000000000000000000000000000000..2d3a82393e31768c22869778698613b2f5f2174a GIT binary patch literal 962 zcmZ?wbhEHb6krfwXlGyuEL<5_v@*CDh*pJ^t_~?(6IQl1ymDPc)rN@bjZrn5V(PZU z)NOSrd+hMvA+B+IeDltP)?JCMyOZ1ZrgZEJYkQj3eITRnaL%L?Ia5yNO*xf6?R5V1 zGX)b57R)?XH0ylvoQuVCFO|-_Qnuh~<)Ryvi*HsfxmC5~cGa>w)ywZpoH%jn)T#64 z&D*eH!>(Ps_U+r(Fz^e+YaA8aNxk9Lx+wXJ9gs4iBqReojG&n z?%lgL9)0`&|3AYh7!3i+LO}5+3nK#qAA=6a7*L*I;F!-K%OT^jVZp&>mh3YgjfYq| z1(lp?K5S5QW|J^Yxp3pe#^mFCnoeCZo|g`B%4>LkiP*V`#cPUi%)1K8vI{DjqJ>lyj2t2o f3la`CGVn;rtSCr4)W)vpHOFJ)qNAORj11NQ63h`c literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/done.gif b/src/main/webapp/gxt/images/default/grid/done.gif new file mode 100644 index 0000000000000000000000000000000000000000..a937cb22c84a2ac6ecfc12ae9681ab72ed83ca78 GIT binary patch literal 133 zcmZ?wbhEHb6krfwXl7towPL}p0*huu%~roJzC1V7qiQ)z(xVq;t8Q*e g@TwP&*%vbDj%DY0^FxMh_Sd^OqF)Bg*^}7&&A#5)LvkG7IyS zOnBJr%r7CL!Q$}XP&==XoWqO@51m;T- zPZpr7|1;=-+z!eU3>@+d`VlJv8V|8>3M$wXTxdAR#L6ikV-V2L(7?dJ#=^p24FK}3 BP__U7 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/grid-blue-hd.gif b/src/main/webapp/gxt/images/default/grid/grid-blue-hd.gif new file mode 100644 index 0000000000000000000000000000000000000000..862094e6803f522712e4d193c7becd8e9b857dd3 GIT binary patch literal 829 zcmZ?wbhEHbWMmL!XlGzJa`*r7`~Ocp_<#1%{|it4Uw-=k+VlT6U;e-I>i_*W{~x~l z|K$Du=O6#S`uzXxm;WEW{r~*q|F@t2fByde=kI?YU>F6XAuyCfK=CIF(E0xvbU>Z} m<=_zzU~q6?um%8<;zWG_ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/grid-blue-split.gif b/src/main/webapp/gxt/images/default/grid/grid-blue-split.gif new file mode 100644 index 0000000000000000000000000000000000000000..5286f58f6f798184c3eeacba1352cfd39b9ae03e GIT binary patch literal 817 zcmZ?wbhEHbWMbfDXlG!Ub?iS7FpPrH5Ezjmp!kyo=M_wPS^_`om@~ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/grid-loading.gif b/src/main/webapp/gxt/images/default/grid/grid-loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..d112c54013e1e4c2f606e848352f08958134c46f GIT binary patch literal 701 zcmZ?wbhEHb6krfw_{6~Q|NsBg$>(oA`P8%SHjuGk&%@0ppYOTwO7TCppKD04vtxj( zk)8oFBLf42;y+oZ(#)I^h4Rdj3>8V47nBGRLn+Q9-(eXZMC@T`q-A zfguTok_rhvuF+B}YGk&S-hZ1Y!QP;7UE)!jv*adK6)hob2AOf}GE&w)<#=MknJHoV zY^}*Md|xE}K6*MO&RAU_^MUKk=Djk=g^pDJi6uprK3M%`#IdVL zUEAw4e{ zmg0{~p6|Ie&p`6H%mYO|r)_gjg|As;$iv1hQk=MZgX#CFjEx2xI6HUG&(-w8Y7Wpj zcm93g6udbnGzoX) literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/grid-vista-hd.gif b/src/main/webapp/gxt/images/default/grid/grid-vista-hd.gif new file mode 100644 index 0000000000000000000000000000000000000000..d0972638e8305d32d4a2419b3dd317f3c8fd3fe2 GIT binary patch literal 829 zcmZ?wbhEHbWMmL!XlGzJe){5xGZ#;uy>#l_<(QpFT5;g3%Bd$|0cmlLhGf{|q`H nPk{0S1BVoYrq2Wc#zV~Pyb=r?3JDC2Ol*7#9t#p29T=}%m3Hj{lD?*|E)Lw@4fwhq|G)nB|MlFmjEb3B8eyUkO!zh%NHvNT|}g`u48%qq^$ z0?Z;|8H%k;q6;3j$z*9vU{Yw)Q0ib3OnB6(F-t>$NoU&&rEVr(g~vT6r!*!oT0C2! z+-G?0#p7OUwwsIlO_(H?^f?PekAY3!X^`FjxZsPLnll literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/grid3-hrow-group.gif b/src/main/webapp/gxt/images/default/grid/grid3-hrow-group.gif new file mode 100644 index 0000000000000000000000000000000000000000..27a395ac6d1558ccbd3a807ec82dfb340d7869a7 GIT binary patch literal 811 zcmZ?wbhEHbWMYtD_|Cv^;lhR2Z{EFm`~K~_5AWW8eE;FohmW5>e){tB=TC-FFd72G iJp^<>9t7nD1`YuRK@J&@4GRu7a|kOjFeoT6SOWlK!XMrM literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/grid3-hrow-over.gif b/src/main/webapp/gxt/images/default/grid/grid3-hrow-over.gif new file mode 100644 index 0000000000000000000000000000000000000000..f9c07af1347fc44dcabb1a9d22458deb195fd92b GIT binary patch literal 823 zcmZ?wbhEHbWMU9wXlGzpb>`d67r$SB{>v~5Mnhoag@EEu7NDp9Gw6W44$2b@93l*? Z95Nmo7Bnz$2y4ZhC{SczU}R*l1^^j55kLR{ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/grid3-hrow.gif b/src/main/webapp/gxt/images/default/grid/grid3-hrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d459a304e0b224f8c28d6b7b585da7019d28cce GIT binary patch literal 836 zcmZ?wbhEHbWMYtDXlG!!aN)x1H}BrOegF2|hj;HkzW?y)!^h7bKYjW6^C!b77!85p z9s-I#S%6;r&!7YHC@4=ba40eea>#gWNI1yM!7mYUVnf4WCKe8!85Rx=4Ga>@3=9GS G4Auam1ttan literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/grid3-special-col-bg.gif b/src/main/webapp/gxt/images/default/grid/grid3-special-col-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..0b4d6ca3bf28ba44b4ee215fddf936aab7cdd5a0 GIT binary patch literal 837 zcmZ?wbhEHblwe?DXlG!!aN)x1H}BrOegF2|hj;HkzW?y)!^h7bKYjW6^C!b77!85p z9s-I#S%6;r&!7YHC@4=ba40bda>#gmIKarv!7ZX-kkHV;z{nslr{jQv6El~jRSSoL H0)sUGu7M?* literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/grid3-special-col-sel-bg.gif b/src/main/webapp/gxt/images/default/grid/grid3-special-col-sel-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..1dfe9a69eae133929f3835ffcfd108959539b9e5 GIT binary patch literal 843 zcmZ?wbhEHblwe?DXlGzpb>`cJ$GN zbN|hshj0HpdiUqa`#(?L|9SS|&x?`0o(b_B3_s=d77u3+H|!r zfbs+bM-c-fhm6OD1qYj1`88rr6eKbU2cZFVdORzJ@!m~?8+%1KMTTg@3K$aq~=^PX>8{)(q7 acp2+dVHKAK1EYrP>l5}X$w&(@SOWm68Djnb literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/group-expand-sprite.gif b/src/main/webapp/gxt/images/default/grid/group-expand-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..9c1653b48dbd2d4bb00886c379ba3a66813737c4 GIT binary patch literal 955 zcmZ?wbhEHbuiX3i z{QdXWpZ@~^!zdUHf#DSbia%Kx85kHDbU@w$?_tHlbAgvKT&29}T*1_wr_8B7v4Oad0D zH!!O=%UO7AS#fc($7HS8Q(IPEULLU6Yp&PURaaMg26lV0F?{M|skyG2(-{0TB%q{1$Bh!Jw8USBOURwYF literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/hd-pop.gif b/src/main/webapp/gxt/images/default/grid/hd-pop.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb8ba79679eabb7811c3d9d1c86c43bcf67552cc GIT binary patch literal 839 zcmZ?wbhEHb_??HKjfkTCXkweD9 mfT4kbgI~?WW5NQ*7JhN9o*xBDE*)ahRw)@D7aeL~um%9t9ucMh literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/hmenu-asc.gif b/src/main/webapp/gxt/images/default/grid/hmenu-asc.gif new file mode 100644 index 0000000000000000000000000000000000000000..8917e0eee0cdf7758e83c4cffa7a7239f72b8427 GIT binary patch literal 931 zcmeH`u}i~197Zo~Emb-ML>(No#i13!1{`|2)F4_jl^X=3LnUJzge<}>RZc~zP~kV; zB68w#pu>SnK&adpIt5*dn`7OIQ?33Dj(x+oeanNlwY^!!2PQI6AN?^vMGITlu?Sc$ zU>9uS*}igoaC}8PN`jCCnovooc75v7&|^Bl#h|GI2x(JLP!wWjlNOK|~-m_dM?T+-E!pI0dd^5l}(d@Glq_swQ5Q<6ypk{;!;VaqFyLusAH|W zI_^hNH}3WaBSr@P!$9skWgujrrQZ^Mn?RWcN@fn{AM5KVovc^P{B4D$=SroI5_&zI zNSF`DRwb35%9fAbth<-%@nxq_$~TO}IN9OvPh(dz1*g;6JvytHv(;6&xjkRcOr!mB r{VRFNa;Pe5osHT>5@ibIb~{3g+0C%lYO~3O6<&R=-|w9m23q?84YkzM literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/hmenu-desc.gif b/src/main/webapp/gxt/images/default/grid/hmenu-desc.gif new file mode 100644 index 0000000000000000000000000000000000000000..f26b7c2fc5836850958f7f2b1fafd3988a988d7a GIT binary patch literal 930 zcmeH`u}cC`9LIl>nH9kiSwcv;h)RPe4nCSX#PT4JtLbR)IJcwe#y6z#3aSf)9!+l$ z;%yxW@kSwnZWM)ZydeVHiWX}!?QdxG!)N_2ANcN;ig{#6Ai)s+7(q%#GE!y5mQ{jO zj5MrhrlNCIcT|&WCe|#b*{*J3-4-SmmeaOT%60^HIHrQgae`8gf*j^igs3uBp{hnT zopO)5V>`?=nQ1YLFxzIBGSTNY=9rB4oG{nnt~U^b3F->w3Rehk(B^L2>$m$u&+|JS zzvF-O{o!cJw7~xri2now00G#VJYn()2%o@AE8lw!UPJ@SiC{BRyCfUg+)-YByjskr zv+Ug{Ji~hAw(%`jAsUlHdvfpXd_GaEWO`qB`!@?~^gbD{hpr>BT&DZEGYhLy?xoZ; n!ca~nNw;=d4=v4s)H*Z{&Ndrqrwj#{39jU-m51Y}8o>51Tocwt literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/hmenu-lock.gif b/src/main/webapp/gxt/images/default/grid/hmenu-lock.gif new file mode 100644 index 0000000000000000000000000000000000000000..1596126108fd99fc56226b412c6749c55ad5402b GIT binary patch literal 955 zcmZ?wbhEHb6krfwXlG#X4~ou+bjZoeOV2FG$|=q-C@C(jDlf0eD{N@b6W`Inv#*zP ze=o<1{(yu1+=nJ`ADhB`dOG8|nG9#s|^2dGCVn`{Pc*@>k~$=Pg%ddVgCO)!~fR||KBnE z|HJVAKg0iLR{x*dJ-;0I|GC%y_pblnMF0Qq{Qtk(|NlOXjV)~*Jzd>>6DCZaK7IO( z88c?ioVjUP%kt&RSFKvLYv;-0XzkU1m_xG3of4~3u@#FvBAOHXT`19w_f1o=? z!B7qX#h)z93=CNeIv`Jg@&p6N42G*5G9DWiIGRQ-bEs^3`rv@RCy$K9p(kC=rd|^` zST-*?>B_{iQlwx7E2E<(Ghbe(62oy`Y27&t0f`^nn;9J1SUxr?H8M5pwCs2h(8SWt zC8Qv+=HXHgep#c0o(mriDDdjJR6ObU=;Xr2&gPqN_0-kZOwH=MQtsX=WoB-cUnB8y dW3n5EfMAf!nn#R>TRBB^*6i?z@O5CY1_0nG4B-F( literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/hmenu-lock.png b/src/main/webapp/gxt/images/default/grid/hmenu-lock.png new file mode 100644 index 0000000000000000000000000000000000000000..8b81e7ff284100752e155dff383c18bd00107eee GIT binary patch literal 648 zcmV;30(bq1P)WdKHUATcr^L}hv)GB7YRATlyKF)%tYH6SZ6F)%P+<{wS~000McNliru z(*hb477vONgHQkf010qNS#tmY3h)2`3h)6!tTdPa000DMK}|sb0I`n?{9y$E00H1h zL_t(|+NDy@YZE~f{$`WrhuKPySQAA=4|-5UL@Ysj^nd8hiS;2Kdj#HUllo z8f~>&*KFH9Nwz?Ckui3oR;%3`NI(gPUDtho|G}f2_3e8bT8ASerBbE5)1bTYdcFQ| zZM?C8k+I47`6u~>51*b--wCz*ER>uRr zeV-UkHLH%}72i$a+1i|RAKlWyIlu9^60fuoN4rrzunmYfG3Rj9y^HEzZv5(CEO81y zUYkzkSk-KQ`3%0SF=Q~vI7Aru=z0O7P{Z@#ja`PhX$8v2D-^Gzc;YIGcnR19E(0MI z;kZD@0aiO(XrN-PsAlqHZzKK#l1tJ_)zheV5(%VKYS5UK?$7C;0+>qp-G76P-YrWc z5ZrIlD9FnLDKc3)8S0<dA!cTgY+CR4-a*;u;!NrNF3LWTlP5a1_; iES|Z7@j-3=)A|j?vD&^)Yn&Va00007>1uYXA>3Qh}beSb(Ur!W`$ZoRvwlh8h#GSA{v3P9MZmob1&N}#H|)3 ziyhJ(U{)KHf*@)Iy5?}L)|RKuO{O%cx#h;IvM2X1`q0Jo18y$3o31q0)ZQR~04YGX zfXCOw7l;j1uOz`;`%xPF|1H(H=TQ-Al80O7c-*kEIp@ZM``Ch}Whn7a@ zEo{qiRYg+i%R z4h#&aR4TPvt$O^~PNy46p*I)|Mx)VWGFdDZtJOL&G4XSL3{j3aZnxWK zXJ;3eLR8p^IE^@iXhU=a0)b#Kw7t0&jYea!SUet2Boc@bilUOqB;u|J|M|xX6jAAP z03n=6?Mi(Dm?nrZ^SKu7#oi7Bm%1nSA1H5qaf|0_D`c0ZeXQSbMRJ}Wp^ujFWEojX z(Y1{1lBcW8em3h3o6B)FgQ$TZv?6jQ8yMxx;o>^&qx~ghy5ef_6fHB&ac3`cuq8MD zSbdMbr>J*|b@#!#g0h@qxe*x=qGVcHY literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/hmenu-unlock.png b/src/main/webapp/gxt/images/default/grid/hmenu-unlock.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd5df34b70b94b708e862053ef4a634246acc8d GIT binary patch literal 697 zcmV;q0!ICbP)WdKHUATcr^L}hv)GB7YRATlyKF)%tYH6SZ6F)%P+<{wS~000McNliru z(*g|-5GqRX(wr!towOa3bz1}%hRS$Ze*UVXl27U>F*+kf-M;&k-s!`fDVCrZezlf>dy^3`BTW$z=L>EIW zO>?T0B!*En2q>u<@}12dniz6|2?Qm9qx{jpBiX~P{FQ(#@rTzxF``)#1i>x@j&6Pg z`g9}R!YZ+#Bpq}r3e{~P5}$S=h*)1OVUmx@SN9wqKg;4@^1P3fXJWAV73+q9*IOoT f&)vjR{Ezq!d`RXXnklE900000NkvXXu0mjfw|6I- literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/invalid_line.gif b/src/main/webapp/gxt/images/default/grid/invalid_line.gif new file mode 100644 index 0000000000000000000000000000000000000000..fb7e0f34d6231868ed2f80b6067be837e70cac44 GIT binary patch literal 815 zcmZ?wbhEHbWMN=tXlGzx_z#4mU^E0qXb33&WMKq(T?a&f@&p4150I4La9D7liGhiU G!5RR1hX@}4 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/loading.gif b/src/main/webapp/gxt/images/default/grid/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..e846e1d6c58796558015ffee1fdec546bc207ee8 GIT binary patch literal 771 zcmZ?wbhEHb6krfw*v!MQYQ=(yeQk4RPu{+D?cCXuwr^cCp}%d_ius2R?!0jBXnAQ) zOH<|l|Nj|aK=D7fpKD04vtxj(k)8oFBT!uNCkrbB0}q1^NDatX1{VJbCr|b)oWWMT zS%hVC ~NwO_yO%;SvZ5MdNYf|QNy-I*%yJaj+uTdt+qbZ z4E`Fzb8m}I&!N8OKmWEcCmrLs^Hs&3i)mt@hQVdcqghkaBs*D}tG_lKew4?rTjzIZ z9tSone1TS+TR7tu^CunG)Y7Jg#sw#)sG9C!c0I%LEzP)9;hqRf&)s$D8d5Db{TBs% zgl0~5QQ91luq4Q9tJgt4QLbaxZvAaKeCM9!oy85dg4k>TdBSVqjHub_PG=PO&J-rx z7oYTuF+kH|tG-UK+EkUhDjYx?zW?T|lx>+aOQm zzL$v$zBLo4Cj=G&tw{H}dW?tlTkS)SY4<#NS92z*EY-MMB6Ftp`R=*=*Ev7cS+X%W zMCur^FdlokL}1Y+&aasU2J4#EOuNlnb9CmqgLCGTSY!1BD42pkHY^XidQ5=>YQx%` z*%Pm9D!CkBu&tMWm(%-ejACVWGS2RX5=QOJ$1*tr7F}F+*-OA+Ly&Isg|AEuUYicA z#%IG6kPXkHt{zk2M6zK@Vu^4Q(1zE$?yY6M!^&jQ+2^E?!p7{g*|X6}vuRC3p@jk0 W117c83?+LXEZI4G$p&LV25SKE>nb+@ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/mso-hd.gif b/src/main/webapp/gxt/images/default/grid/mso-hd.gif new file mode 100644 index 0000000000000000000000000000000000000000..669f3cf089a61580a9d1c7632a5b1309f8d0439a GIT binary patch literal 875 zcmZ?wbhEHbWMYtKXlGzpd-4Cei~rYO`oH1Q|BaXbZ@T<{^OgTwuKwS8_5ZeO|94#b zzw`S4UDyBbzVUz0&HsCE{@-`&|NdM558VEL!C+hQ;zA>HJFm1! z#)%1x%x&D_IuR=Z8kt%-g@N({4h;>A%p3w50S6iynb`#tJSI3aHnDO`7-U>H(Adn* Pui(%j;MmmCz+epk$!Kdz literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/nowait.gif b/src/main/webapp/gxt/images/default/grid/nowait.gif new file mode 100644 index 0000000000000000000000000000000000000000..4c5862cd554d78f20683709d0b450b67f81bd24d GIT binary patch literal 884 zcmZ?wbhEHb6k-r!XlGz>`0sG^=;33>fanOrC>RZa5f%c9KUtVTUe*B-pgh6A5y-&E zA>*-O!NDdb7MYkC1`iK4@=0rzWCSQRbnt4Ywd@dF=+rMIANR*%(jvDmG5%#TnwOp& kU}SchrxH17*#QO%<_$5P0_ncfbgjEYUKG8!(7<2~0Pia+WB>pF literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/page-first-disabled.gif b/src/main/webapp/gxt/images/default/grid/page-first-disabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e02c419f5e73fc1ba5770df0448d44adf856288 GIT binary patch literal 925 zcmZ?wbhEHb6krfwXlGzZPfyRu$tfx-s;H=_udjFb@6g=b+}hgO*4EbE-rn8a-P_yS z*VotI-#=;6q{)*fPnj}h=FFM1XV0EDZ{Ga*^A|2$xOnm6B}gPhY%v@z$+dw{PFR zd-v{x2M-uV!Dt8!L;Mq+#E6<8x|aFW_O4e+3))3Q*|Q=94?bWMk!6jGP<+(r$fM>Xwqe7gmNr&4?FkK$jz>EMMFb>zJ~*Z~ zvMU=|C?p6pu`gocw@ENKkig96%Ptk5a9{xwcPOV4M}k2k%Q{v@i4+D0okN>5F7xql HFjxZs_zi%( literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/page-first.gif b/src/main/webapp/gxt/images/default/grid/page-first.gif new file mode 100644 index 0000000000000000000000000000000000000000..d84f41a91fca3a0ccc1107a78ffbf7b62c527afb GIT binary patch literal 925 zcmZ?wbhEHb6krfwXlGzh@tC0DJ54uuo^j+di-h&|8QW#kzUrr(*H68ylXk-(>4ag{ zZHv4+cEz{tOYf>=ebOm>XHxXSuI{Hx{sE`lD_*51{Hrf`RNeQhe(3PuA-LgMaLe7$ z)_W1{_x-!R`FH*eYuz6C>RX^ z>V<&fPZnkd21y1TkddG~!N5_)V9X)ov0=f%X7nX_llo;Ppa!i5VLFJ8Q4$&%&Em#6pV(z;0OW5pDfG_ z46F<~Am@Pc1OrC}12>0^$A$$5o7t@;-Y_UNJMxKf6&W}lT+k*Y$eyJjc<@21kdg?` z9)m}X2f37ODg+`IICZeGskVGL@ZdlLlaQT?!H)&bz6?zAIR*(A8e5nhSgkHN9C*OQ m>dC5ipkT8?(+Va*AAy7q4&fY(0%9#)p=)k#W@Tbxum%8@3U^Ha literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/page-last.gif b/src/main/webapp/gxt/images/default/grid/page-last.gif new file mode 100644 index 0000000000000000000000000000000000000000..3df5c2ba50b143fca7d168d5acbcc4404b903ee8 GIT binary patch literal 923 zcmZ?wbhEHb6krfwXlGzh@tC0DJ54uuo^j+di-h&|8QW#kzUrr(*H68ylXk-(>4ag{ zZHv4+cEz{tOYf>=ebOm>XHxXSuI{Hx{sE`lD_*51{Hrf`RNeQhe(3PuA-LgMaLe7$ z)_W1{_x-!R`FH*eYuz6C>RX^ z>V<&fPZnkd21y1TkddG~!N5_$V9X)ov0=f%X7)sh7DeV(M==$yO&0_YC2+|IvM<}Q z@ZbVY8B+}&lf=VK2L;XIwg}8jWa;H%bG(qjsCck}M+|z`(?y z1M&eVPcU$JFtBpScx+g3u$hC^!6V}XBXb*zY)A!1phGj4Fjq*7gQ62lFOR54M?r!E kLmQ{U6cz@-#wJD`MJWvdVWq}d0_-7oPHt8|*uY>70KTb0MF0Q* literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/page-next.gif b/src/main/webapp/gxt/images/default/grid/page-next.gif new file mode 100644 index 0000000000000000000000000000000000000000..960163530132545abe690cb8e49c5fef0f923344 GIT binary patch literal 875 zcmZ?wbhEHb6krfwXlGzh@tC0DJ54uuo^j+di-h&|8QW#kzUrr(*H68ylXk-(>4ag{ zZHv4+cEz{tOYf>=ebOm>XHxXSuI{Hx{sE`lD_*51{Hrf`RNeQhe(3PuA-LgMaLe7$ z)_W1{_x-!R`FH*eYuz6C>RX^ z>V<&fPZnkd21y1TkddG~!NB3cV9X)ov0=f%W)9;69vKr@Ionu*A5?G{Hgn3DYJ|un wK6d5q<#D`_!KiqUp-ntt3Jb$U#ts%8MWY1*!jGC}2?&SWIk{Q=U;~3S0KQg&YXATM literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/page-prev-disabled.gif b/src/main/webapp/gxt/images/default/grid/page-prev-disabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..37154d62406ddc064dba311b95f554e49ad38003 GIT binary patch literal 879 zcmZ?wbhEHb6krfwXlGzZPfyRu$tfx-s;H=_udjFb@6g=b+}hgO*4EbD-QC;U+t=4O zY0{+0lPAxdIdk5;dGqJbU$}7L;>C-XELpN*#fp_HSMJ!cW9QDDr%#{0ef##^yLTBz z!Dt8!oe)s`$->OQz{;Qlaxy4SFmU)VaC69bY*=uxnSOV literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/page-prev.gif b/src/main/webapp/gxt/images/default/grid/page-prev.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb70cf8f6a3b7f524bbeb3656d875a823b27fd7c GIT binary patch literal 879 zcmZ?wbhEHb6krfwXlGzh@tC0DJ54uuo^j+di-h&|8QW#kzUrr(*H68ylXk-(>4ag{ zZHv4+cEz{tOYf>=ebOm>XHxXSuI{Hx{sE`lD_*51{Hrf`RNeQhe(3PuA-LgMaLe7$ z)_W1{_x-!R`FH*eYuz6C>RX^ z>V<&fPZnkd21y1TkddG~!NB3eV9X)ov0=f%W)AK)kBA8^Y;DZmPc|?ZI=9Q{X*oQZ zkbJD2lgIqQijPiCj2*mD6%7sx9yN0CvxS^laG;@KrlbJNftid9=jS`{vav8&0{~Hw Bh1385 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/pick-button.gif b/src/main/webapp/gxt/images/default/grid/pick-button.gif new file mode 100644 index 0000000000000000000000000000000000000000..6957924a8bf01f24f6930aa0213d794a3f56924d GIT binary patch literal 1036 zcmZ?wbhEHbA}e@6f*BUeEG-{mbu9UVeYtn)@A#A9pQ#+`IB&@5(0= zRzH}y`r(9CPbRH>G-dUZ>1!TLU-xM0+NU$tJ)FJ%!HkVh=4^U8ck{CaTb?f6`F!=h zms^g%-go-h&Rf5C-u=Dz!SB6~|L%M6=kVF*ht9t`fBVhRyMGQn`g7pPpQDfe9DDTl z(5wGPUi>@u`u~ZCzfU~=ed^KQvyc9qee&n@+yCcY{k`z?&xIF%F1`GB>D9kWZ~k3* z`RB^(KUZJ||Ns8~&oBx`LjW}d6o0ZXGcYhR=zxSld4hrCB?B{ujK>Cr zPF^XagaZi+ome=9Dmm#SD}7El7CSA;=KXekY^RG>e-{ zuuVYm(pR@|5zQ!{2@Y3s!WlFkEt+xRKzr=&*z_|U*@qgNWbB##KVWn?)_GXn$>4`} z#Rk5^9iqw$CMLJ{owi8Xkg$-crJaR6?!tz^#b0>Dw8Q57c+l9;Af%gcqV6G6E2r=p gYaW5X0}L(q1$Yc3_9+}>;A5Sv9e-|5r2~UC0H_cnr~m)} literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/refresh.gif b/src/main/webapp/gxt/images/default/grid/refresh.gif new file mode 100644 index 0000000000000000000000000000000000000000..110f6844b63f04ee495cb6260aadccc5c91f3245 GIT binary patch literal 977 zcmZ?wbhEHb6krfwXlGy$h}b9*vsWVToJh$rg~Ib{73bBfFRNEyRjIzARe8a@{G?U= zS=*`;&XtFqYK{lh9g^y}Bh~OmX2K7phHF|4mvmY#YBk-m>AI%V{Zwn}AFb*CO}Zah zE&Ol0{J&TG39p`WUhP-C+HU)IUUQmo-)qvfh`zI76Yqx1zV0&XfzSMxLGvGbFMQ~+ z=(Y3m{~l}q`>*>SwD@7vl2_py{zq>5pE~<)_MEHvb8Z#%9?x5TCvVmLlErrtmc7Ye z^(1@q`{eEa%QikQ+y0|u-~Un|+W)`u;QzYA|67+{YhHeP%Er5`D<5=iecZe0VgIfd z6ZSoyyYE@Yq4%wa{&t-D-*@u=lr#UQo%uiG{Quc!{>?l8fByOZOAkC-cNm zdAaJ$n+2EuFS_`D;g$bOF8yC{^Z%AJuQpuyyy5=;?RWm~z4m$Iga5mp{NMZF|DH$x z_dNZ7J^Oa?<^NmHzCC{Z^XcdR&%XSB{pru! zuYbP%{{Q3WpTGb9|NHkJ2pC4ez=eR~PZnkdh6V;5kP|?8f`MZl10$!5$A$$5)il%s zei$5ka6nGTs361eNrP~El!A@oXXa)eCC+CvI2;iHZM67s#E^NJN1wTgOT&i;3Ec;TOAjTi zTyP{|exu5jn1!2~IsF{O7w}9FI^s0Dv3!z%j9{}Lqr9=eiw8w24r1-;JbMZ*Iy$pR TTfCj3pwPfLY5NRjCI)K&rUX|l literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/refresh.png b/src/main/webapp/gxt/images/default/grid/refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..870adb5f809a883bf68ecb12da69b7a1b82c40c5 GIT binary patch literal 791 zcmV+y1L*vTP)WdKBPATcx`PH%P~GB7YQATl#LGch_eG$1Q5F)%QMP#j1A000McNliru z(*hb7G9jgE(O>`o010qNS#tmY3labT3lag+-G2N4000DMK}|sb0I`n?{9y$E00M7G zL_t(|+ND!%NRv?%e%^O;U#`t`bFM8yQ)EAknBWiX*9Zg2KZX9vpd`UQOoS|gew0C$ z5Mn8UXhC8H1sP@#RG?@xENz+zqja0Nwav|sP516~@9ioiiHd^`T)6k1=RD_}=bj7v zr!m{!o*%lbNmZXx62UBr@lofDua94fHsNK_n_UT*8?NSkDcVYPf|yBCiXfK&<}~10 z?|9hd^i|=xrDJD;s`1mTN_{%7hI6GB7m{@G+pF z$0khJ7p_64Ysc&CKomIZqBz%jHo_pQQv!P#w?SaoBg^ow(6VT7gs!}U26keaM)Uxxa+x*VORwIsoyuM|Sw6&981*v>y z&OLi|zgjX}c+{*|=7E8MNzOUtet=NSO6xN*EOU`SRD+&lT|57UGd7Dcg>>iUA5wBu z^)MA+j%pM1%n|pftqI+h>fJw6NnaLA7V46<`Xa(Ive0k;7j7}!iFYTOj-2EYIms=0ihImdkJxD*ann5GrhCOt_fD7*mN_@JU|~Yh zlH}5*DP>F3%9rQXt#bJ9;Pl_AtZj8)e}DJP-90mRO_;lP-R7O^x9r-qeb1Jidw1;K zKX>_o#p_P2-*JBTzJq)AAKI|<;`aSlckaKi>)_Qrhp!zxeDu(fW5aL2&AYd5-M(@A-tF6WZr{0c>(2e#ckkc1d++>}M|bZ(ymSA_y$28PKYDua;miAv zUOssE@WI2!4<9{x_~`M2N6#KTe)9Oq(zkK@q?aP-hU%!6+_U+q`A3uKn{Q2YOFNRSt)Ivb< zCkrzJgCK(r$l;(o!NBpKL779wW5a@j%^bpFa}I1+c({#=)o#uSgQOPDOrxwjGt!z| zdt@$e$lSc_@o^LJpjAf}JZwJMArZPP=b&Sgps8HqqLPD`kM_zs`Roai*qqK|#L3VT zF?sR}KXId?9~w-oM=!LvF0}h7u%L13YL4V{2NpVaOx6sKXt0%-%sxprU4%n}F=ee| zk7OB3V$o4<2?NtNdOnMp+}aIPI1Cb!oedm&q`N#WDjn;2s@TV#Wb?^^L6Du@WzE4m zBH2;`fg2hOC%gI1Qk$u|ta4(CLnAZyojrZEhG#jire0bj>DOw0Oe9%D!a<-Z<>RHq z%WD>VO!l0r8@nULP;YPhBrdTFH4+!k**uiX3i z{QdXWpZ@~^!zdUHf#DSbia%Kx85kHDbU@w$^aLtQ^>)SRb9SKCQ``Jr`=eVAz{OT z183VTy}$iASS#R nB^X?DXxtttx-R#(S?*zGzsXrO9p?HCdj*-f<$NLv92l$th`d^G literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/row-over.gif b/src/main/webapp/gxt/images/default/grid/row-over.gif new file mode 100644 index 0000000000000000000000000000000000000000..b288e38739ad9914b73eb32837303a11a37f354a GIT binary patch literal 823 zcmV-71IYYGNk%w1VF3Ug0EYko000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV00930EC2ui0096U000OS0Po$iSC8I2dGX-ATgb4XLx%wY06VC` Bj$r@* literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/row-sel.gif b/src/main/webapp/gxt/images/default/grid/row-sel.gif new file mode 100644 index 0000000000000000000000000000000000000000..98209e6e7f1ea8cf1ae6c1d61c49e775a37a246c GIT binary patch literal 823 zcmZ?wbhEHbWMq(KXlG!!`QrEOm%s16{{7(1pGR;1JbC};*@r(bKmL9F`S1V#{~1QX wXb24J5K#Qd0`%X11|5(uL3x6KLxe$C!6IP+Ln9*-6GOy_4GW#y85tR@0bQ{sTL1t6 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/grid/sort-hd.gif b/src/main/webapp/gxt/images/default/grid/sort-hd.gif new file mode 100644 index 0000000000000000000000000000000000000000..45e545f74423d274d5ba7fd942349e9b6e377787 GIT binary patch literal 1473 zcmeH`Yfn-E06_1O8OuKCZ05?;9y0{yY?;~WgRMsR$~K$2`D~d1@}bQ#*KE^FOzmNr zk4h0m5xA%*2nq5&mj9jr&@R9m?MLJ@ z28+?&*i;q2X{glmbaXwjt9hit_dI1))x{ir6L_uMFRHs`tO}FBO&#lQRo8}|J5?7Y zU`>9C$Th8w3EHL`Ba086h!(PEnZzn=+PIK2*LI5;-9YgM=D}nEMKj(5E_P-Pm7jo~EXPhgm4T&wVplL(D->;y1`B0^KR=R4S}*a1vj)fV>NEY1mB8Uq&zYI6Q%t`{**z!J+Vr;E@5~g9*=aqW{3>u}nt)+%y z;;>ng6u?b5{(;L^(y<6nxNxiv6hU01L$+fA6FPrm&HQ1X9CMc{2sC$3gd=9b3;|~m zeo4%+^eknA7SU=RVi9X;xUJr+UX-mqm<4W0%pznE9#Hd|0*@ZIv{eO*Nb# z12yCIrOhLLJlbn33DTB}t(F_b2bV4~y*j=}%v9m90(t13QX1^b_==P$D+H{5*5Mu? z8gKY>BXXf^7@!+sCzFj+>XgJsqfc(1Ya(r=#J=3 zlZtj9{~(p*xA$9X2mMtN6e0bM#^36uHAhJ9Q&;+@HQ_ThCJ=yPPcaaStzMs1DHP_0 zvw_E92pgO+s83$0SnZp{u*pvQ$A3#Rftg(VD(=52XCTzUftd4T-22$PQrgIR*gHx4 z{43C_yk?5j?(i$Mual4dFf?{<9Wn}qfaB%>iNwkdu&q!m&h2IcZ$2Th!C8}<*_&Pr zyKl`OZw8N)3D^4?RK}UoD=o00gbKYHy=yv32mZ9Dl8aIS8x^Z$2?NwcBLzFmZOtoW zzN62&u*QDIz{Fy}^YAXY&Txmg7ATSAhAr8K5fZbFZ*SFa$_qE2L|VVFHOI{wKE8B_ zGXV2p-56OO`rc4Z7g3zbj)2_3YjK$((`OUqD%*mgvS`YELYsVW1or1)YW%;)D$oE>#r zQ3z|D(W$Eg`c?NY^+fD&+nctrc25@u47U__J8-QW7NqK!$T9C@*SpuaHyFRRpIGae rj_Lao#za}+eaj_<`F9!mRdtBiaY8;H`0o(Vu;KK>|7RZkKlk|m`6vG`Jo$g|>HkYl|6hLg|LXJq z*I)d<@$&!8m;Z0Q`hVy3e}+*o8Un*81QdU=FoV3K10q0qf`LPwfssSTW5a@j%?wOD iArS@)&h5PNMll*66^^tBbH?qtQJ{FJU!IwX!5RR^E;%az literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/layout/expand.gif b/src/main/webapp/gxt/images/default/layout/expand.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b6e1c1ef82bc36104018936848c3ebfa6e05e6b GIT binary patch literal 842 zcmZ?wbhEHb`0o(Vu;KK>|7RZkKlk|m`6vG`Jo$g|>HkYl|6hLg|LXJq z*I)d<@$&!8m;Z0Q`hVy3e}+*o8Un*81QdU=FoV3K10q0qf`LPwfssSTW5a@jO^j@6 iCK3sWhnx8sU0hxiEIiaD!s-`t;^Ttj{VdE(4AubXYdZG; literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/layout/gradient-bg.gif b/src/main/webapp/gxt/images/default/layout/gradient-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..8134e4994f2a36da074990b94a5f17aefd378600 GIT binary patch literal 1472 zcmeIx`%jZs7{KwDTLnZd*hMh7R3%&{VK|xh5d@TrMjeTpnq?_&b8`}Bh(kowLJ^R= zwLrP_Mz6F*N-1{`N?)K@6i}uD1>V*|OIv8)A|*;9JN<2c#7;i>=A7rpCpmEmrw$)U zc7mcXc@UIVGnG~gOy34*)9Li-becMyuD$~>)ERVj219+9F_Xbm-(}8ZvefrjGxzFd z?gQ+Z2W-&U2kcoQXO_sF&Em{uap$rD-W-Vsija6n4j*~Q*W?J0hYp%tpk9;bpv@I( z@`Tz)B2B(fn=b+vZGl)@(4Z|8YYQ8+MGfzZp1v;z8bNg>jk*$vu2iBclgyVj>B^es z9|O{PvUGvmyzs<9PmwK9WcqTTMPJ^kuV~R%wCXE?Ha*qBP}OFjwi~K|4nuYOVl`;T zVhzx_SPOK48f&|ZG@#o^cQDa=jErs*qsPQ}W@7f3n4r(hETGq1*K1~j_Lq?Dr%LqcFxvPW zut}by5*6B{LZvEO(+Ju$Vv_!sOuZvAc4ePkK}Mg^X|R8{wv3g3jV&Qm0~*o(w;!4zGtP^}q4TE3f=4jcq2s zNTj41IT7{z(FAgK^iIzZ@_2j+Ir8!+!Q#r@%9(ju7k_5|Ghf7eqx2?7%YoH4jP!wx7HA*Q43) zwFOW=pP6ly3pn=?dHpWVl+z~h4aA7q3Dbmfk>A9h*D=1j0=ZkaJtNDl4|Dy58=OQ4 zb=w|rEX#G|6q4dPk_gFV6VcYbmUmazi7x6i6Xb&As-j$U2PJ(S9-JDYvw05^=DZ2M z-q(%65iC7!Sf=Hfs~2MFb#cc_ASYbPO$Z9ewDx-)GFuhcxKI?v{g{Fd`2H?N2mNoG a(II?Zs7)DAnPM9b=8J95L)rdV=-9sjoxm#q literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/layout/mini-bottom.gif b/src/main/webapp/gxt/images/default/layout/mini-bottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..c18f9e34ac1f4d06525592c5ec25783921e7ab1c GIT binary patch literal 856 zcmZ?wbhEHbRAyjhXlGz>c6N36?{M+r#W!!>FpPrH5Ex-0p!k!8nSp_kK?me-P@Z7m zFlAunknz~C;9xU5Gl#^14GRyqF(|p!cuZW_z#t(WR-;k)_;9y`aa9RNLW=VQMPsFy Kokpn+4AubBJRUOu literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/layout/mini-left.gif b/src/main/webapp/gxt/images/default/layout/mini-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..99f7993f260b374440c5c8baa41a600eca99d74d GIT binary patch literal 871 zcmZ?wbhEHbWMxohXlGz>c6N36?{M+r#W!!>FpPrH5Ex-0p!k!8nSp_kK?me-P@Z7m zaA9EP;893e(9p!fE+S&!pm?~AUD|4jgy5sYono4CYdSV2yD|teHi#$`Jzc6N36?{M+r#W!!>FpPrH5Ex-0p!k!8nSp_kK?me-P@Z7m zaAja+k&tj`IMB$%CgZbW!-Ix)HhHZSi@+q84iWvZBN>K^-5Dep8%#8W7*0-Pa>$EW bxpC?7J_E~BDJKIG4z;p#3-JgDFjxZsq+}v; literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/layout/mini-top.gif b/src/main/webapp/gxt/images/default/layout/mini-top.gif new file mode 100644 index 0000000000000000000000000000000000000000..a4ca2bb20aad89264b9022fee88ee29154dfb192 GIT binary patch literal 856 zcmZ?wbhEHbRAyjhXlGz>c6N36?{M+r#W!!>FpPrH5Ex-0p!k!8nSp_kK?me-P@Z7m zFlAuo;89qx;9xU{u$s(?fCCNf0?JM-3L76eGxBgot>IYk*sW87)#{JM#>MWF#5uKM LPHswdV6X-Nu*4oA literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/layout/ns-collapse.gif b/src/main/webapp/gxt/images/default/layout/ns-collapse.gif new file mode 100644 index 0000000000000000000000000000000000000000..df2a77e9cc50cdb15e8be856710f506d462a9677 GIT binary patch literal 842 zcmZ?wbhEHb`0o(Vu;KK>|7RZkKlk|m`6vG`Jo$g|>HkYl|6hLg|LXJq z*I)d<@$&!8m;Z0Q`hVy3e}+*o8Un*81QdU=FoV3K10q0qf`LPwfssSTW5WW+W=1|P io&z5e4!5x=GEI;OeCX1}EU(tHE{jAJP4AubO%sO%a literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/layout/ns-expand.gif b/src/main/webapp/gxt/images/default/layout/ns-expand.gif new file mode 100644 index 0000000000000000000000000000000000000000..77ab9dad2948270706c9b982c5fcdce78940b4c4 GIT binary patch literal 843 zcmZ?wbhEHb`0o(Vu;KK>|7RZkKlk|m`6vG`Jo$g|>HkYl|6hLg|LXJq z*I)d<@$&!8m;Z0Q`hVy3e}+*o8Un*81QdU=FoV3K10q0qf`LPWfssSTW5a@jjf_kR jAsz;b4DD>fMm823AG&mK%ZJ76*!b{ZzXCfO3xhQP{>?dp literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/layout/panel-close.gif b/src/main/webapp/gxt/images/default/layout/panel-close.gif new file mode 100644 index 0000000000000000000000000000000000000000..2bdd6239987b95025826fa39f37a036d73ae1c9a GIT binary patch literal 829 zcmZ?wbhEHbWM^P!XlG!MGRSrK@6dAaKf@>(4S|st0*XIbm>C!t8FWBi2jvL{4k-pk f4i1Na28TvQ9=?!{4GD)^*u|AnEG{HEFjxZs3+oT= literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/layout/panel-title-bg.gif b/src/main/webapp/gxt/images/default/layout/panel-title-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..d1daef54c578cced19b7f0c3074dd7a23d071cb1 GIT binary patch literal 838 zcmZ?wbhEHbWMoKTXlGzB%sOhAecUMblu_OpknmbK5V>R(wmyk!^#qaiSiLO}5+3(z&}UbNe&Fw0C0UOPyhe` literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/layout/panel-title-light-bg.gif b/src/main/webapp/gxt/images/default/layout/panel-title-light-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c2c83d82536f2e1e8c1fa15ccdf6683047b1d34 GIT binary patch literal 835 zcmZ?wbhEHbWMoKUXlGzJdGFVm`@haV{B`m1uPaY~Uw`)d){EbFU;TOT=Fj7|f1bYo z^Wx***Ps8s`}&t*6pV(zunPgjpDaK>{b$et`3#gN7&sIdqzxh#C@?lLvvCPXC@3&A WvZm{QhJfNv7G{tF#eZVXMX8A; zsVNHOnI#ztAsML(?w-B@3=BFTX;5xq;Lv4YLV0FMhC)b2s)D9)qBYY9s=7v2nHV6X-NX@DCv literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/layout/tab-close-on.gif b/src/main/webapp/gxt/images/default/layout/tab-close-on.gif new file mode 100644 index 0000000000000000000000000000000000000000..eacea39b623348f656de9a8f0df4ac4b74ceccbd GIT binary patch literal 880 zcmZ?wbhEHb)z|%kKX-x z_TkUV&wm+4!Dt8!#}H8b$pZA&e+C_p=RkRafy0-9okPYWK%u#rLy#**AmKn$J2Q)p zz={Nh21Zf+FqsJojYs=sS(PMy7OF5cvh&sKnGv+0v0q<*pG<%Q!&xR)rDrk@3zqxO MXKm)=;9#%@0E9$42LJ#7 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/layout/tab-close.gif b/src/main/webapp/gxt/images/default/layout/tab-close.gif new file mode 100644 index 0000000000000000000000000000000000000000..45db61e6000bedd9a4eacdd171d99a9af159389b GIT binary patch literal 859 zcmZ?wbhEHb+a1fq{uZ2jn48o?zgxVBqGE@d#MZ z(99ty#S`H0kb#knn;}DEVv=)*u)3Vdj=;yqxu0#kX9cC0)w0klmAo1XIMn(o} E0NP7EbN~PV literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/menu/checked.gif b/src/main/webapp/gxt/images/default/menu/checked.gif new file mode 100644 index 0000000000000000000000000000000000000000..fad5893727ee8a13f428aa777380ae97152adec8 GIT binary patch literal 959 zcmZ?wbhEHb6krfwXlGz>j-2EYIms=0ihImdkJxD*ann5GrhCOt_fD7*mN_@JU|~Yh zlH}5*DP>F3%9rQXt#bJ9P}a7(ufM;0=I)-EyC%%tyKeK&xyuhMUUy>sj`JIKUfjO_ z>dyTab{)LB=kT>-Cr%wbdG^%lGbhhnIDP)=+4C1qp1*tM!nLy(uU)-*?dpv?S8v|E zb?f%+J9qBfy?6e~qdWJX+*RNl{ef##~$B&;sfByLSi(wRuh5*qap!k!8nE{v; zbU->ld4hps4uc|xjK_ur2b)<{HDXQ_Japi6Q1W6iYUvPA5Rzlscwpk<4sO9XmXjI+ zi&_OWe7|@wG&BoL67X4M6R7Omz-DfcwPk^l8<#v6OGU!M%_;%{ss?XfI5Zp-5OGar zYW(QXz|GEX#*rx~s>CVD%q0^Mz{1hH&cW`(j0A>8wr;ZvZ4rjePOb7*MGqXL4LK$% TI;tJY@rY17bXb6iiNP8GS6tA5 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/menu/group-checked.gif b/src/main/webapp/gxt/images/default/menu/group-checked.gif new file mode 100644 index 0000000000000000000000000000000000000000..d30b3e5a8f138bfbbfea3d1d6d5631a81268fe26 GIT binary patch literal 891 zcmZ?wbhEHb6krfwXlGzxGAUp-FJv++Vzw-1u&!ctt7CJoDF4C-YI>17M;4q>erj}J#1 znRLYtaeQ=iW)bC#?NNBB=*-HhDWD|4xae>zCoh|V$$>=XHZB1n7Kal~O{`q}VgeQu b3s{-ixj1G-bT~0I2=PqTialkbz+epkbq-F$ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/menu/item-over.gif b/src/main/webapp/gxt/images/default/menu/item-over.gif new file mode 100644 index 0000000000000000000000000000000000000000..01678393246989162922ff0051d855ea02b4c464 GIT binary patch literal 820 zcmZ?wbhEHbWMU9yXlGzpb>`d67r$SB{>v~5Mnhoag@EEu7NDp9Gw6W44$2b@9D)q2 W95Nmo7Bnz$2y4ZhC`fc*um%9+ToJhd literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/menu/menu-parent.gif b/src/main/webapp/gxt/images/default/menu/menu-parent.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e375622ff951a3a3f1ccc668061e81b9c93b411 GIT binary patch literal 854 zcmZ?wbhEHbOQz{a2h@&qVP zFmM<%@JmQ|Y*@g^%E=?8;=tJG)Wo9VlknjJLnFJO0!M|%0mo(rQBEC(fQyeBCb4lX KFcA=7um%9T95sFb literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/menu/menu.gif b/src/main/webapp/gxt/images/default/menu/menu.gif new file mode 100644 index 0000000000000000000000000000000000000000..30a2c4b6c0458751f85126e8bbca6ef2ccc2ff00 GIT binary patch literal 834 zcmZ?wbhEHb{Kde?(9Xc{=<(wZA3ps5|DRzLjE2C-3jxKSEI?2HXV3w89h4^+IOG|a lIb=LGEI8Q6z#`0voy-@k72&h=Y%ZQ8zP%g((!cJJT4@8F*OhYlV-dg#cp zW5-XNI(_EM*|Vq5Up;&A+S!ZOuUxr$qNpFDl?^y$-QVDS9;ix)3mg1{>fcnt(^ zUcUi>w{PFRfB*i&hYz1Vefsj{%h#`8zkU10FbYOPfHonZ_>+YhWU>y30Obh=jxGj9 z4jGRP3l283GHb+~D0p~)!9>Yxj)(FAXDKG5ESZ1@4oAD0WI9R=9v*6Ak!N+{dHKMR zl}FY^$AdFLm4!>ptVN@75u5?#BR20ya;KC(goN;9V qqtnW!)kYaNB(j|}n>i$H<|I5^)XKF~L^CSn=7x7MEgZ~D4AuZjXTU80 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/panel/corners-sprite.gif b/src/main/webapp/gxt/images/default/panel/corners-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..aa0d0ed8fb4a7af14a00f77c9fb0f456144363d0 GIT binary patch literal 1418 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 F0{~gSY2E+; literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/panel/top-bottom.png b/src/main/webapp/gxt/images/default/panel/top-bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..578ffb6092a47d9af33fd86615855ac328958537 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^j6kHr!3Jb81>C#}q}WS5eO=kFvq*AsijL3o~JcpmZ-+$h~ z_Wy_3jh&1fGyeT$7yAGIfBVLN2O~0szQ_GbNqF=$At@m#iKWOT4w?3V`{ps}G&u8y_K7ar7g$G|QJ^XUz(U+@FzFvR&^~SSrx1N9d{QdWj z-+%u9|IaWAMnhnTgn;5t7G{uBbwC6tPcU%&XJBNJ@Yt}xfl*RO%SR(2fsIE%+3C!K zfJH7{j7BjxP82F1;}LV};`zC;>EvWJ`=E%EMNf}&8YCb3qp@(=*;(?+FYc`TtlTo+ zp}tPWVT;DaewImEzP~m$Twd;HFEzuf^wn|Zh|NiVI~J_IzD{1aLst9S;-<|R=j&n) zY}38n&-3V1@9&L`cXyZBTirNa{{A?712gkCNfC{QhXnY zwzDg8A8&6~zAsyC`Qh2A#m@8R-Tqnd^6EzM>veOgi(cJ6SpHx9zpZuUvuBsv!|mtQ z{`~sk_VIfC{dRwUzj*$9`+oWV#ozz3{+M6K{3(1v{q?!!3mQ0?c06e26_QxkD6Dkj zcI%WyT+_vK2mMcNg7q+sp IvM^W!0LCzFhyVZp literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/panel/white-left-right.gif b/src/main/webapp/gxt/images/default/panel/white-left-right.gif new file mode 100644 index 0000000000000000000000000000000000000000..d82c33784d106a699921e8186376adfe08ed7159 GIT binary patch literal 815 zcmZ?wbhEHbC) zJaOyO$=jb!-~D{{-ski8KVNw8<p u#Ky(P`xTtKWIQ)5IXPLwHYwudrlqH+8zi5aADi9QnH9n_(1;hQKfi0UeNEKzV_IL!CjML&jsnf`iQ*+*TO}5*nMB cm>F0E91a{{WZ^W*x^rUV;^X}?%uEc{048uWPyhe` literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/qtip/bg.gif b/src/main/webapp/gxt/images/default/qtip/bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..43488afdbd4924057e45df94ed68690068fbabac GIT binary patch literal 1091 zcmZ?wbhEHbvJG_ z_wB{IZ!h0}dj&)vzP|>dkKf;X{QmaSk9R=y`N#XuKRjL%gg;OJ?2_%ZN9oX+&1IxF3}_H>l603F*t71i4@GZyiE4sw%lkTl{?!^ z6Bo7I-L2~P;_hzq*8BVGLsu~TDQ|svxII!MZqJR@$6^zdt>?XQDtdZif@HSanM&4& z=Nke$o_R~@-`i0Xygcmmtu?PVY}k3~nAhx8xhrg)|NZ;-|Nno6Q7{?;gDC_Qf3h$$FfcOc zfE)$N6ATu z!(r;m%j_$9KP-wo!oMF4bR^Z#pCLVEt6JIYJY>r`(GBHu8TKMAH hV%craN*NY1aV$`Fvrs8ibZTIkpzPfzqoBZG4FEi-n5_T+ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/qtip/tip-anchor-sprite.gif b/src/main/webapp/gxt/images/default/qtip/tip-anchor-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..9cf485060802498647ba462c826869140085778c GIT binary patch literal 951 zcmZ?wbhEHbRAb;`_|Cx4x9Z%wLw6p$`1JJa&v#${Ljc1l7!84u5dw-oSr{1@*cfy` z-Ua0e297BVyc{MB2@4t-nK?8-AM7;o6g|H=X=D(-<8}9T;jWog=1UD z4&$fCrm{73`D9*Nda=)=)Tw8u>7xs+o|a)(X9%W5PEyUaQmLAfdV6NU**cdOLJyDZ LX;5ZkVXy`O9&A$y literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/qtip/tip-sprite.gif b/src/main/webapp/gxt/images/default/qtip/tip-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..9810acac5b323d99a641627276e8dbb9a3607d2e GIT binary patch literal 4271 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/shadow-lr.png b/src/main/webapp/gxt/images/default/shadow-lr.png new file mode 100644 index 0000000000000000000000000000000000000000..bb88b6f2be887650f28b16726e470c09459b9c86 GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CG!3HG1zpHNqQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JiZnf4978H@C8Z=JJZMPDQ+U>TNx_ce55uGN4u2%Q{wE|U g2=cJ=GBC0+@aVFNEX<$33#f^~)78&qol`;+0F-4Xf&c&j literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/shadow.png b/src/main/webapp/gxt/images/default/shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..75c0eba3e101e3f32cef8bde7bae7383d849e935 GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Q+l0V0jwbN>KRk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XZhE>nhE&`-GTD~D$v~hjI>0gT@Uw(Rj}ARr(#+ZY|Nr|R ztz576{))TQsGN9FjsN;R=N;cX_7>}LNxZmoT3OARN%FUXp-|AVh0k3k3m;=qQcOOgc@EIAyfV(r;i((zEeg z`}y44S?ng!NoE&wcK=*_2F$s1%jHel(|yj_4>tF9g$FFYCZ&0@DQ;=K_|9xe0dH@S zX*Z%4Z8@@VyGFIRewDnzd#yOua)FIqa}4Vg?=kT(Xhpeh(=cjy2J|F@r>mdKI;Vst E09T24*8l(j literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/shared/blue-loading.gif b/src/main/webapp/gxt/images/default/shared/blue-loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..3bbf639efae54ae59e83067121a5283ca34fc319 GIT binary patch literal 3236 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 JpNE6N8UT=&&-wrW literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/shared/clear.gif b/src/main/webapp/gxt/images/default/shared/clear.gif new file mode 100644 index 0000000000000000000000000000000000000000..35d42e808f0a8017b8d52a06be2f8fec0b466a66 GIT binary patch literal 43 scmZ?wbhEHbWMp7uXkcLY|NlP&1B2pE7Dgb&paUX6G7L;iE{qJ;0LZEa`2YX_ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/shared/glass-bg.gif b/src/main/webapp/gxt/images/default/shared/glass-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..26fbbae3bc6d2510832a5ed709f0cb029c2c1170 GIT binary patch literal 873 zcmZ?wbhEHbWMpt*XlGzJe&g*4AiDYX)q+w@6G_xop)#NygPUI-MM=} z^!_{$-T!dm{)dbAKU@Mb9(=g)@WaK2A1*!oaQVT<%a1-@ehfsPt~~sB_0h*Gk3U^| z^yxZ~`{dJA5c+)e>E~-e^z6&^=U;C;`E>K?=UY!d-+uP_&hsxfUVOdx;_KT_KNv>A zXb8|f1QdU=0PXzGpaZfQlqVQC+!&%a1WaT)$|)>om2)9Mk%@&tK#^^Rgu{V`ZWgW# wlLCgu<17lIIuQpJG%~aEtN6@tSlD!$TihV!!H0*;9Rf;j6Erp|DKJJSK2bm`zya0vPFVPO+Hzo=EoiUW<# zt-R7&85aT+o!hu13_^AkENo)sW?~Im5RiDNg-b{!q(fjK6AOo^oXv^{2OL}3c(n`? z0um24adC-+cuZKp#Ka=XC$l2qfI}-2tCoO5K;nT0E+&=`4uJ(sK-Uz9X;c_IJk-Xo z?6;=E@bR%edFMWzN~5Qzrs*f2TT>bQ{@gtKWw+(i!R!IjKB)<%j$y1Z!Zof6-y9;DGq~5NJ}7gDVJu-S5NBXy HWUvMRItY+| literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/shared/large-loading.gif b/src/main/webapp/gxt/images/default/shared/large-loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..b36b555b4ff04f841bb2101514d8f95bcf7358f4 GIT binary patch literal 3236 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/shared/left-btn.gif b/src/main/webapp/gxt/images/default/shared/left-btn.gif new file mode 100644 index 0000000000000000000000000000000000000000..a0ddd9ee8203b9fc45eb5ee78ae6bcb7e57aed7b GIT binary patch literal 870 zcmZ?wbhEHbSKV^zd-BO3vC604f{{R1d4Yk$n}L-sZYVSj)zmI o(Q}fL|Dq=uMNdw3X~iE>$=vYlK$lteqcf2P3=A_Zn3))?0bn93t^fc4 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/shared/loading-balls.gif b/src/main/webapp/gxt/images/default/shared/loading-balls.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ce214beb5cd4db00666778d371223c605874519 GIT binary patch literal 2118 zcmbW22~ZPf7=}Y29Kir0FmlXvp;AJNF@T|n3=l~OQNReX(lJsJSV$lTCK1p9Cy_(M zQm|OSsz3m3sz4Eyf*^8<#%d)Dpydoi0>~kDK!ll=ZaA%FI-`5dzq{YQ`#%5s?JSAx z1lbx&?h&&9gFi*>!1pzUs7{@wn9`hLm1fx>(Jl7@kz#sNtqbnGu~ zQe16TTxnMP)H3+<{h@2EL)RY+mC2N450&LIW#wqY$lA~nbxPa!&C zu$mg`OY>TK<}eSK12l%IF?DpG!V-0@d@BkYlXMMpg0lep88I%nH28pK5h2~o?kkh6 z2b2xQChiFj0eW(#g;VTwwMJ5_?EDvp>#4GK+r2+JC89@-_OzrTH4{qP8k0!hnWK}9 zap_c+yqJ92gY!};(l)Zfx*I7zMHm#j&@PQG;7HGJgfynxUXLv`)H1{Pg;t0}hNdo2 zEzCw6`;fZ{f2sO<=B5-4@O@rsqC&BzvE4Uy6nRmKzwG>WQa)|oDe}n~loonAD-5{> z?UL_)*}^8e6BlB4$-lNLQ?wCd`#X$Xp*I-B46&`*HeU)u(UfY42oW;RS(7rB(NZ(l zVXa9y3Fg@)|wdEu-^Mr$bM<2lcshb1_0+qU%7*YY5d4R}04b5q{6gDK#lN_Yz+3 zA)Yn+Y!&vbrDwhDx#Nq+`TkLUbU3j!TN`d7b-gn)W>MmQ_}fG`$z)HJCVV5zccWav z)VK6731;9=Y1sl!Lg@h;g8AmhLs23E}Fg8bsA}jW84be zJj3a&!EX+(#)=!^aPHuvE0%9D^z0oWQl`8qV(5Oxp*_o)rkOg&mhP%-u(0XS@f3?_`nfh@f|7!XJ# zk%OqjKq3JM^2G-d4?(;7)p&sbDCoC_x zFgMyk0aQ)fOAm{tLDLuoh6x2UK0R(bi$jkD1vEB~9?s%M(#YylM@%FuVp#;fssZ~@ e5vO$#&5sswUKi2&Xpx=kB8ZO`!7YivcK-uGv{KRl literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/shared/right-btn.gif b/src/main/webapp/gxt/images/default/shared/right-btn.gif new file mode 100644 index 0000000000000000000000000000000000000000..dee63e2113fcca680699455e8a56ee3eecc81c40 GIT binary patch literal 871 zcmZ?wbhEHbSKV^zd-BO3vC604f{{R1d4Yk$hk=zr!efJiBO@aVPsE804;fk*WxQe}6c#pgOBlzkIk8cxsZYUC>4${T q6OT!%mh)U@eo8sjryPH%CUe8H16^j>kIqCIFfh!NVPs)pum%9ETq}wI literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/shared/warning.gif b/src/main/webapp/gxt/images/default/shared/warning.gif new file mode 100644 index 0000000000000000000000000000000000000000..806d4bc09385a98ef1ac19d25e30a21310964e7e GIT binary patch literal 960 zcmZ?wbhEHb6krfwXlDR{f&hVn2muENhm@owhyM-@5dsqm1SVuCOej#8P@%A(LSO-q zY!KMcp>SY^z=a6{7Zxa7SYhyB1;c|43=ehyk-&!?1`l=wJUAfm;Do@30|Fm_AFI_r#;p+LTS5IEMaRKbDQDQU%2#0{;PZnkd237_gkWx^dVBna` zz|A4!v0=eMCPx*A6NM8NOc1gSve|KQ1H(iiYYu@O7ZQ#gR8*}I_~Dqq(8*@R^@`(W z@)HIIWfz?e!wVeVa#HbKFBUvx;Axbo`SPIg5jz8ey-mRe1I2~|N`gTPEE1a-8hE@l zIU)=NI+%skoc{dSsL0&PpvCnl!Qs*I)AH$&GFuihv|L@Lt98xe!$KzpaZ%Pw4hauj N9~|!BW@BNn1^{&szCZu~ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/sizer/e-handle-dark.gif b/src/main/webapp/gxt/images/default/sizer/e-handle-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..b5486c1a95bcc0f39a88c15c10c04ef7c3c561dd GIT binary patch literal 1062 zcmZ?wbhEHb#gW zSa7hJLs%>3#D;~3+Xa-p=6GyebhKN-IP1=djf;=>D>!$_cy3y9a}Xwye0g*kiI*?5Qm)FE0;R>^0YG>#D1(BQ|H< zJ+*c9_4NsdyJWq$t+}~5+bHZ`26bb>Fw+9?{8q{mh;)M z;o;#9VePmxJJK5%IOMqVHRPj^sIT3W`5a^n+Y$P=Sr`RJG*P^>+2hm zPtWt+z3uJo9mTKjo!!0t{rv;Y-12^Vc6@w%VzPGpxjj2SKfkcpd%oY^U0+|{*qnX; T+}_>a-#<9q&HP*pKCAv-hK1$|Ns9CqhK@yMn(uI{$v4q z^gn|R$h)9C!NBpKfm=XAL80MbGZUwri^YZqhZs0z^?H5?BpvP&kx!db5t!`W$7S2b zqB-%Q$7EIBJeSUo%H9(-b?1e=ob=3RreXN4Gm*mSr)OK$9{O`qIOF^RkA5xFQ(IO9 zFA8Y)Qk9(g>dN%6%}IB6ZPp537_~c2R9fuK^(DT0C)w`)@-kv`_TxiyyRYTm+?Dlm z+u82#x%YQh|7ByF6IPITsO+X(*qn%W@yBY|oz3n@jiJwDpWpD!D2@#*RM zbouaqd#t{`KC@K){5zTIFYoRwZ~uS)Uu;d~r?Y35yRVo1RrUSt+WvO_e>SyWKknT> zJ%9fHy1zfqK96ts%NTLLo=K|Xej|%gL_(8*oyNju5wi@%W(mC&iq(=uJ08}`wQ)S^ zU@r4m)TA`+$HFenMHNXcqO(ps>K2aMv8dblS;yl(gIhO}`i(wCBu{X-7xARuS!$-r zBtxy6DwFLl{a7+3@KuG%R2RL@rISOsESFA=YWlf!dTg9#+RVgBGoQ{#TXpj3tc*=F z(`J{P%UnLE;@C>{IW_xUs!yq9`t^KTlbF|wh3RZvD`vN;S*=*yYqTq4ZlxC2%O&OS zey&(Dz3kM>?LPQFywyoHAYVDT0ajVyEf83S5 zYUk}~v)}G~z3g<}j<=J3>+SdwC9S{f)2`L|`~Ez7{eCaQVeNvw_itHmILNZPy5Jy> z_M8uUINa|T91(v1`~4w4?>U7>|FZqra8xea=i@Pz{v4wd67%mAp3VHu<2 zhTV5Ioz;IFV|>wdeI5}aFh%{jYv+pP@iy=AuwcHjMWHRrml`Q7q*+i$mvZu8$Qzn3`O RcKf}i-@V(HGcqz*0{{svxFG-l literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/sizer/ne-handle-dark.gif b/src/main/webapp/gxt/images/default/sizer/ne-handle-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..04e5ecf7d3837aec9510f5467282c10f158a5563 GIT binary patch literal 839 zcmZ?wbhEHb+Yh5$94ZWq95Nmo l794Em;N}uwNKib;z{ui|Vj-Z!(9Iz$HK#)0@qq>gYXJ2^5-b1! literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/sizer/ne-handle.gif b/src/main/webapp/gxt/images/default/sizer/ne-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..09405c7ac7b321b3eb9170b1584167448819a071 GIT binary patch literal 854 zcmZ?wbhEHbc63}qqP#3eHjE2L+1SS?XB|ZfS0S0RTeD^Ni literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/sizer/nw-handle-dark.gif b/src/main/webapp/gxt/images/default/sizer/nw-handle-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e49d6967c08db2c02a3aeb9c1f3cacb9c8665f6 GIT binary patch literal 839 zcmZ?wbhEHb+Yh5$94ZWq95Nmo l794Em5abeINJw;KWMp#S2{2G%=w_Cco6{kn+|a;a4FKuB5a0j+ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/sizer/nw-handle.gif b/src/main/webapp/gxt/images/default/sizer/nw-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..2fcea8a9285dc74626ba9374055b25ab77e53a08 GIT binary patch literal 853 zcmZ?wbhEHb#gW zSa7hJLs%>3#D;~3+Xa-p=6GyebhKN-IP1=djf;=>D>!$_cy3y9a}Xwye0g*kiI*?5UEB1_q}2ZmnDnS(jHwY|grS zYU}Fj>k|%l$$D>Fb8~aX+fl6@9wVn{Oa!M?d$LFZ(!z@^VzW> zaVFC%HL)EM4v!B{Q1+hZvvbqa(=&{-@15DX`T6+;&fRjpySBW%ydrpY+}T}QUtiyl ze0rYm?rm>x?*pKCAv-hK1$|Ns9CqhK@yMn(uI{$v4q z^gn|R$h)9C!NBpKfty3dW5a@j%^bp7F()=GJlrmz>@~+@*_y+_d!cbc5tmb38XMJ3HH=_|=`0o0p%T&eFss>$PRY#l;?zwPH_g zS$TPRz+$htURzgPT^+GG>+Y$otFNz5INT-cy=~3S%^8FMbi#@YAI?A-kP`~v50 zIp1AdUS3`iygKgeuC1@HZ%95pZ|#k>jf~q0nRm>cz3u(|1I^s>etUL&e0*ZEcKo?L zJ3n7!TI4<7Z||eAWv;!(H3F^$JPCf70^_gXw#@wm_C+l$Bj4s4oFCb)=Y zKAGsDw(`j&AG4QFCI`4_KAjR0micsQMB2)y(_+eAKAoP>rul3}%CyX9Gc%U0d^Rg* z+skLO3yx_%pHp%z^ZDG0XDgr2tNHfw`TPbptrrVg#Ijy2>`+_vVo{ITs~3wWxM{sy zG9@hQ<LuU0IXmi21oie;-_ty;6~)vMJTjxl$oIxtuR03tF% AKmY&$ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/sizer/se-handle-dark.gif b/src/main/webapp/gxt/images/default/sizer/se-handle-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4c1087868afab5b5bfd329f52d9907eb1c0061a GIT binary patch literal 838 zcmZ?wbhEHb+YZ5$9Lfxg96SOJ k3mltSSY>Q9925^Vv52er?AV~l(9La}b>~E3vIB!P0N;ZWjQ{`u literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/sizer/se-handle.gif b/src/main/webapp/gxt/images/default/sizer/se-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..972055e7b297a702ab9aa2d799d133b94ac92315 GIT binary patch literal 853 zcmZ?wbhEHb{~M&wt%~@%zrJ-wdN* zGz5lq2q^w!0s8MhgAT}-pgh6AVaveCA>$E{(A3N!$mMciL!xsdyOP%wjSCG&yTw_> nZk(97*nvsGxlP1k!4l8OOsp$nb_OLhOgBgro5QJ~z+epkjJq?f literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/sizer/sw-handle-dark.gif b/src/main/webapp/gxt/images/default/sizer/sw-handle-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..77224b0c06f1666685286c5322fb02b4cd2204bc GIT binary patch literal 839 zcmZ?wbhEHb+Yh5$94ZWq93m15 l2M#ndammSOI2<_C%q421Gvk7Sb33nm)}0d@l^YrutN|0L6o3E# literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/sizer/sw-handle.gif b/src/main/webapp/gxt/images/default/sizer/sw-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..3ca0ed96df2059fe283c1d65fa1032a777e1ff97 GIT binary patch literal 855 zcmZ?wbhEHb_F_q!3-qVNZQx|DV-A6h!W?b)Wnj^{5*w_%-mFl zkc?6VBXb4c#3BVF0|N^M17j-_11m#w1ziJE1B0DgB7cDlD)IDnWxv59C8liseo9Il zP>8d@BeIx*f$tCqGm2_>H2?)!(j9#r85lP9bN@+X1@ct_d_r9R|Np;d_l_fHFK%AH z^6>thcW+(4aQ66_;|EtQS$O!!!80cg?%BPQLC5($P(5QwkY6x^!?PP{K#rTIi(^Q| zt+Nw$@*Xe{IQ-;9=l;Lnc?BNrIk1yMnla18!|Rfx_=~o=7sXGUdm8y8?D5mi^pr2Z pI^U;TAL(EB=a!G%y}ycg#aS#EpKsu3JPkCF!PC{xWt~$(69A`aaP9yA literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/slider/slider-thumb.png b/src/main/webapp/gxt/images/default/slider/slider-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..cd654a4c1680183026145066b4aa1a7802605456 GIT binary patch literal 933 zcmWktYfO^|6#dFz0*jkYAxr02nPDo(Y#3G2We5n&sxU;xD0?`TAk?4`t&?nHc7tSd z3BhbUwh=-{CW2C=R96rO(&5-gscoUWiha@ACv=ooX>pu=`*F^>IX5>s$;rK%mHE!r zP$h3lZ zsu&tSJM$EgWSu@k&1X2N$vNfP1r2#P<>bx>9-HY>X?dzQ`iE=Wlw;RNCAE=}lB(Zo z<6gMZclprm#8~&$>T1JWM}M<~-Ml+E|D-6_*cxWgU-Z?i6ust)nk;MoNq#u7uv;l^ zc%Sp4FTSFge0_U;M2mWF(hez^x65SwD7r47cs}l{u%vZ=dWdj%&y6Bm@aZmsp732n z`nJSRY5d(iFV7q)Zw^u^L<>z!SwVOYYiDTWE^70(u!`A86P*2iZai9?pV48-{yUCV9Ec?o@;sUjk=1>cAm88uY+&dR!6>c{!;b@zv}ZnqTHCISIq3j zrmRZR!4J?JEO}MEgUxOYRO$OSzfMm1HjkLN%MA;yI5!rveWW!)Se@qKRd$^E(bb#N7V}{^w%jXPw*+ z6yhxKh%9Dc;5!7ujG`J|4M0JbbVpxD28NCO+UBR8*c(lVeoYIb6Mw<&;$UDTwkjI literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/slider/slider-v-thumb.png b/src/main/webapp/gxt/images/default/slider/slider-v-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..7b3d7258ada4c81c6fc060bd5eea69524f0ddd65 GIT binary patch literal 883 zcmWkrX-ty`0R50E#}rYbBu=wW5C%9+p|mz^KUyf-HiDg2qsADUdFzy5J(6V!F6ux{ zaM+2OO$`xO3Uq)R3W!vwP+G1+0l{9h^wh2t1P1Ecw;%7wOWvRN3Pjo4mW8hgCkSGh zfX~}W=_U$Ep}`bKs$wE3`9_+#SDKM~L?S(L_6#XL@#7IfeEd9_vW3i&r8Rg-rR1}uO-*=86B3}KEpj8RNJSwCe z<7ROQqPp;lkCMd%5%jZYyEu~r&Z91X zf9j@W8dR9k4|L3<$&YFmJnu7Kt{FYwd>r5Rl|w2Y#50Oj3~YoXAgst?bG&}PJ#5B*LU z{dhi%PAi5yumtc_57k?YzK3lZCO;fAuuj1>3uQ0r2GKeOg9r8x@cfIq0W`lshXs93 zIA`IVN8>P>-au=Idk*gx@Nx_tR`fbB@($(zCT8GUfYt`J8SN(MT~J+7{6rlSB;A?4 zi{Lm$j#55Vz~hQ9js9@RB1tFCELoIyqu@p3lls?9n^{Tg3m@givo8E|x9G0ECUCv$ zW>S2Nc)=b`i+*yoGx z#+_e9u4`NQ<+fT+t3SUpVSIPU;$N@*R&qb?%B_=I<2M+#S1hId9!oIRt6i-(mIr+o zmUzJ$m2>{w#i(h~Zhb8&|6|8ij!3;n-D6VqYdY^0h8ofXcZ&8bNx3$};+3(67|G0C z237+ptgBK!Xd(M@Vq?UoRC)CgD-;F^C*wA|I6wb-VmZG|v7&PSfrH%d3oaQ}7UiZq zmftCgdwjomxq$gFHJCdQ+PZ_EoJLm54s(eZpwB$-?_*CEA{yP4?kaf^!fVZ&ljHjyZH3qg@$%oTSO4z3`gia3-v=)~KYIE3!JEGi-~N64?(ft0f1iK&`{Lu@ zSD*gA`TY0Im%nen{QdCl-?v}?7)HTp2+%PE6o0ZXGcYhQ=z#15;&S4a5oxH0SN zs>{3yhr48VA6(hFIb*xfjjnHNf_V!bACgrtUw2uk;$t4KK*H+yJ${-Taz2a<42PQM zPKxkJ(vROCEp9#6VdthqhN;HZya#U@-alV!X+70p)|aQ38N94n84nr1IKF1C+YDL8 zubH>}>|d1e-fGQTF3`ljJvU-UF#ieLincdQJ1?_cSRCKycQ>=`^>ta}{qLqUet*xy z)BNWDJCWv}pR=~lGk;&w`1|`i_5=0rzcl^*E&k`x_V*!;|Nk?vt!M}q6Ulhc$Px7* zgo(%O#e-%}i_n8DB4HVctbU3M9=6GpbuB|t=_ytT&nMMP z`uTi9#V?DDDUEfNEBackRz9EIx$NhQITN>8zMMPtSf%EI+Fv_07qYUjFjxZs<-Km4 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/tabs/scroll-right.gif b/src/main/webapp/gxt/images/default/tabs/scroll-right.gif new file mode 100644 index 0000000000000000000000000000000000000000..4c5e7e3958dd31d9591fb86b76bcea760d402589 GIT binary patch literal 1300 zcmZ?wbhEHbRAJC&XlG#XDOwU%v(DkaLssvulIcf!H$6UdwB$-?_*CEA{yP4?kaf^!fVZ&ljHjyZH3qg@$%oTSO4z3`gia3-v=)~KYIE3!JEGi-~N64?(ft0f1iK&`{Lu@ zSD*gA`TY0Im%nen{QdCl-?v}?7)HTp2+%PE6o0ZXGB7YP=z#15bKis=idlbh4oJ2jiQWW7vW8%1R%X~mwJayU>VV6oTSu17E0R!3~kx?Aw2 z<@$QPLv^y%A^2nhXpR#NS^OQa!}QC!nD7;IO;8 zMx0HeKEtuD{z(do7CH|P>8bhKX)WCR_&kGEx1E$yOZVv&hST{9O`5VV%#Yn|$HjEy z<(27&ui0@eG=H;qZ?pX04-d`WZ8%~tlY3xKCG+ufGv&WNSh(rqhAS)OQxEL5Zr*!u zxBSPm6AoHE-0~gh?W8#ltoZnb3pn3T+xmtnRW2k2*D$RU8Q9-}2&7w}D*% z12@~1jK{qeQU;5eZN9yD+|MU+!Ku&XmWIj%k8c_&6J6zIs!Z}Wnz?wg|38VPQ_O=R zmrim{nwiQS9d&c*bki)!XH!#V?Npr=w<=O~cEqlqDszHP%~YA|bBpuojLarUwdpBR zFQ3nM{B-l#g8D}{RTia7NvSW+wu(|;lJ7N3eQ9yjE{%mYT3$=$IaFDxF7sq#VXy`O DM15!0 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/tabs/scroller-bg.gif b/src/main/webapp/gxt/images/default/tabs/scroller-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..099b90d8aca10ad0e0a87552e5eca975a72f985a GIT binary patch literal 1100 zcmZ?wbhEHbRAvxkXlGzB3f<)J-=TNYo33`GCmeE$39%ip(O{=Nqa{`~*` z?|&d*7zLvtFcd;S@h1x-0|O(24#=^fJi);6pMjM_#$&^RgUzhWECL4>ELn-DC~RnIVicC$7cz76!_!<$ z>JQ$${Hzu@UzjE8z|Ms$FE5w2*ptE~x+;X5$?(CI16#El)=4dqV*M?ebAwTWCGCLb z!rW*EhC5yYr?2V8>?~$a3FsDXisvX`{L|_%{qTbW%}d{jE|}`vc)XF(rY@$UsPV+) zrOQ%#E;pnzH`+^U=vaM8Kg*>5z~#U!(>vEVxDMCxM!#ZRY9ajM9&bW<)1iIUzyH}X ztY+Y{kkp7jH^=eevkOau1SA?YzdQ|GUUZ`%w(=VXldOd1+nvQV=ceVVf8Tof`}V7UcV7Lu_vY_|cfTII{rlwo-)A5GzWVg{)n_33 z|K{`GH(&m~{qpzyxBo!EFbYOPU=W9Z;!hT!>;5z7fZPbm6AT=|49qGs6ec`4(8R&7 zWpctG@o+1jveTR&8bSd<0UIDB9_$ireT@Wf$*vuBf>3d;uuMTd5FMl%bJhJ}p` byxeRN0S*aFO-%B91_mD*nV1VVf8Tof`}V7UcV7Lu_vY_|cfTII{rlwo-)A5GzWVg{)n_33 z|K{`GH(&m~{qpzyxBo!EFbYOPU=W9Z;!hT!>;5z7fZPbm6AT>x8PqvsJT@#i*vuiU z6?0<4!o%$X%3gCkHZD5aEoRSf;Kato$NLqWyJS2!B{ngr2Cs@axoPR?Y3lK(=6G&i zc6O>^{;NADH!nXw$F7-6)@zIMg+(5dwPLGER$g8nkZIQIwRKf!fAIROyQe}EudPcs z9QRji+nSq8QqHf6-EFLUdwW6Rq8{(<>tc3SeC{e)y?y=t)|&rZayE(v4-Z%JD#yu$ z8$LdsCF?v-Cd}yR=_uXgdorQM&(C|=Hp|(Dn7q7fhzYodz&w>VTjrBahiCSe0-cybJ4R4j(HVwd#&8~uB^?Te?#&2xA%OzoBzw} z2R5}c2wYkne}3QI-`_txK0V)m|GvM!e|&y@|NQ>_|NlL=Rd~?AB9`%>kwb08gC-uc z7Y~{R+%z7xh=gT4Y!xeeexOaJ?8U=&g*J^x9V*i@9(8IgTk)t%XWNTM-3I$CVwp{@ zWjyY+c(&qkpUt-ykNX|iG@ndx5zBls(L=3Mg^f|?!IQ}WZkkW0goI^2of?t0^69jg zvX@V%C$wokn~{{I(7=?jY~{0AIon=7n_X~B^ZA^TYnjjIRyp5UhSa>TCY|tnU?ix<%(si zUaeZQ?bWN*8;-eiy=G^vNqD_>$Fo(h*X{ZC>h<~qY}#)&91+WYv+;!5>NlHCNgZHd qxZtM!cFUEp?6+HQq^*9t?M~V2x7#1IX}{a?WSX}gvj__dgEat$YLPww literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/tabs/tab-btm-left-bg.gif b/src/main/webapp/gxt/images/default/tabs/tab-btm-left-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..e695186d5ebb450c6ebf6b6ef270ba407c735977 GIT binary patch literal 863 zcmZ?wbhEHbWM(j8XlG#P-SqhEz0a4Q{k!+(?}K;0UVi%X`tzT6U;lpi_V@FTzh8g; z`|4|fnTJWlvlbe=$Pt%A$HOF)Fva?eR z^IzRLxmo@E9J^*NS+5Y~3yVA^Yx!1{th~HDAl0nbYwN13eZlLq?w$%wytXdkaM)k1 zZEJ2WN;$tOw%SQ_jCSclKT^G@bGXMuX5aD#!Z;nSXxHI@h^gZ$rb^*Ecq2-#@o^_xJY?4tM{T_useY z=jRufSI4i9ThRFZ!{gKQ{rB(t`}@b|*Z0rw-w!MY*fbtAu<&VIVB}C+@t}#v?8Sp- z0XL0@Eh1qV4_hVDRy=HzDLb*yfulv^QHRR3j7Oas%T_$<(%JUnQMbV{jmJGE*D{iO znN$}%?z8#!;&HzNo92@VE@GKaCVHr?d@{+$?B$cmeq2iqObH3gd^$BEZROKxF=a2G zPETmld^RIxTIREv8S^wRFy(A}`D}K&3zjwN)<`^_abSv3P=;*2^VR!m?g2osqUGa~YHAgO|$}v}wIsv1D4-tCcI3t$MX; z&9+ysR&O{KuJwA&CMJOf<{i&gy53p&!*>FTG`_0A^YOCLDI%9Tv4Z}7o z?YCR5gk`_odLwQ1+6^oY+y}NlXw!bTJ?|=UP{`(&Y7)HTp2n_uYQ2fcl%)r3Npab#>C{HkO#4<3m zSU7BWz}U#Fsu82{@Bt$ykATIDjt0lW%z^?U8V?ebn>bh$O%xm^r7&}_$QvXWEO>f~ vokdbbz+rM46PqC~1H*!Z<&1OKC3FlnEYJv?!yK*^TN$w6U=tHF6N5DXg62z6 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/tabs/tab-strip-bg.gif b/src/main/webapp/gxt/images/default/tabs/tab-strip-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..34f13334511d9d8efe3dee18e6f69f3d1277f8e6 GIT binary patch literal 835 zcmZ?wbhEHbWMq(HXlGzJee3<1+wafb{&4orhjVv6oWJ|w!rhM-?|r;<|I_6MpRPRk zboC(+eZKbS^YurcZ#@2d^U0T6PruxL`t{DUuXlmy`PX~TzukZFjbRjwhQJUE0mYvz zKv(}~&;hv}lqVQC6d3d)RyZU!wQvY1*c4o7ILO4xDIjB!uz;bFk%@_cgM+~u0EV(m Avj6}9 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/tabs/tab-strip-bg.png b/src/main/webapp/gxt/images/default/tabs/tab-strip-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..fa8ab3f462f07ad14c7dbbf76117118a302e35a9 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0y~yU~>SnxjEQ?q`I@C5s=a;ag8W(E=o--$;{7F2+7P% zWe87AQ7|%Ba7j&8FfuSOQ!q5JGBmO>HB!(uFf}kZ+p+j0P#=4Vr>`sfH6CexDft?u z8*)G)&H|6fVg?4eLmeKJnpZ&P`;>Yb*KkvN$ zdGGD72k(9{jDpb+7>*&J_>%?bt^W) literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/tabs/tabs-sprite.gif b/src/main/webapp/gxt/images/default/tabs/tabs-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..e969fb0b7338c81f8e22e3f69f82fe49fb9b3d2d GIT binary patch literal 2120 zcmeH`|3A}t0LMR@Sv#(pzRU-6RFY!pi@u#ZcG;OPS3Isuz7>Quj<9+o%+>iHqydKXVUq3t_j~CU~d;1O=3^k%I zK@b^`uT%}+t{?xq&)D9te$_uGl4xEH&A%Shb`ERb%I3SIy7w}@coY$jfq&$NZiV54 za=zztL9f!-HxBy8kpUIxp8ygSBAEcv31nyzNTM!e8%TbKsW$>0{H=_AsuJ(WpBfSg6Eg;XE65o%BUvD{bXEk zOXWSPEqo%A=v#Hal?Wf>hPPG~`V-;UmYcp0i`uPV+Gua_+QM z+jV}9XjM%UXVRS6?YV-3@6U&nCSD1PY#jK)GL$I7A7l=yuRmuXLlc& zu@F~vWI*)H{TFEUl1yM1Q1?`aK~Y?SJL;YpH0EedBw1L87_?THz$uRK(*dzsGDIRr zN|-oDu000xBPZXiMrBDev$%^N#95@_X;=$Cd;!|xEBsJq?XSTrf4yxQ8O3r=d><9( z$|fA7Z?+Cv6}4?0d(}aA(YxVj&me;IkXQF!hcK$_x&zIB`dxH%z}@AAET`IkY#?-W z$p}0A^jgNzrjTXz(8BD)vKw(l9~dVr_zGG6(PpcLQ%k!J%WoygcA%1$&nV<~7}(J7 zQY@FzM+-6?Q<$mNZpzVnSG{=+X~duCio)EOmnf#~Nu{EgbFmx6bj+qJOSnb!#x$OQ zx309J8HCcIwJqyPQw7b|^|;5i*7XaX39QN3hPrj%RhD2mP!*TgGF~F`a34c;?haG& zx`J%V`8^&zq=y45Z4xVov0;gS$z^#J7eHm)^lR+#H!Oo9khi&`&-UgmsGutKK zo3JG{IQG`S`*8EoS+V&=lHg5rPQu)WxZ?7;?)XQlxt^mhNSa=H@?lM%-@f~@{?s<0 z&`1vYIN) zra0~MyiReB6<(**9P7x_+-5Gmp-umDajq_{K$xRXs*K1n9B%+@W8xbj8=()LXV1q> zMX*6MN)n85BA`R-8Mu=o%`(^n`+Em-BweC&$n`L*==eqTTw-v8Jr{{O(q~Nu5lXI5 zOmaCba9#xEHSd)AVCWluTNGO4?WKyhhl1J$ll<_EGTqg0SK=TsxEO4=3?n(>GxLWT z+Fs!J71z|k&D@lenZG({BP+%iMQDqn^!^rkIa&w7FRn2+vc5;h@EPdNBxq}`#kPbC z!!{vHsb7oUY(CXAY`Y?h>hbZ|hI1IH9cro1&PAQB85HRX%{3qI^-El@T)1yD;q6N* z*pLx1l<(NiH$fRyS&5sN5QggKUQUKG{0r|y+e1x{I|Dc3>xW_#PS&{kV>SHjg&6$f z11U-@noGbjlFRoKHs`+Mp*9sBYCBRn9lAbP_HeiTu9##_UP~ji_3{WK0b80cM#ok+ zttB1zXuJ7p=bEan)?Gi(v2G2VjIEI9b|-hUZmaplWs}LP1I{(G?igl@OCfy#Q^4Yw aY~k|oDS;V9tOD~>PCR>kAPR$l-2Vk@&nw{o literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/toolbar/bg.gif b/src/main/webapp/gxt/images/default/toolbar/bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..0b085bf24e173f7a2568c347f3245bdaade1579b GIT binary patch literal 904 zcmZ?wbhEHbWMZ&jXlGzJdGqb5TR`;g^zCwCTzUXRA1^)paQWfKD-So0~;Fd71bH3SrYvH+d-pFs!YKv14w;7Da~Z1~~up_!du)~evahJ_E= zc%_Uy&NM7kYU38y$=KqsP`Q;;Sgxby!h)1$R&Ie6E(r^kHZrktoKP`HXkcJuWMa6% p$*}A^6FZ-Z#4LwKrYSs=j0zqwFtu<5D0@r@Sh(uyYDPu|YXAnXewY9N literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/toolbar/btn-arrow-light.gif b/src/main/webapp/gxt/images/default/toolbar/btn-arrow-light.gif new file mode 100644 index 0000000000000000000000000000000000000000..b0e24b55e7ee53b419bdd5d769bb036b19fe9592 GIT binary patch literal 916 zcmZ?wbhEHbQ@i%X_#s+qO5ao&#Bg}b_z?(JW>fAX3`Gd3KV zv*q~0?WdOQKC^1y`Sph`ZaH>k$H{AZ&)(dB?ha5d!zdUHfuS4%ia%Kx85kHDbU>Z} zernn7GpqKUUw`Q0mSb0ToV>R8?9Kh>?)?A%A85cR7!84;8v=?yS(q6Z7#Vax zUI66@296R2W)2yT4GRu7a|mm>STHs?w+nNawPX}9G%#|o>fAZ8aq;nf1?Mgq&rM5C zPSyxs6?1aa(*sN*0#Y579~gX_Ir7AO7EE5yG(%Y4FT%k%!-dUUH;Lzh!*aJqzAC;N dg;0f-Rg6jrr6;$pzP>);aF?w2wgd+TYXG#xTAcs@ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/toolbar/btn-over-bg.gif b/src/main/webapp/gxt/images/default/toolbar/btn-over-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..ee2dd9860c799be6dc194b387c36a953c55aac59 GIT binary patch literal 837 zcmZ?wbhEHbWMoKTXlGzJeCy}&J3mj~|8@T1uggzJpf;!hT!Z~imrfcyl?6AT{b$et`3#gN7&v4Zqzw`_ELgzA$|)pg(Xe14 SBQvX#kb;4O15gDcgEauAx-gUg literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/toolbar/more.gif b/src/main/webapp/gxt/images/default/toolbar/more.gif new file mode 100644 index 0000000000000000000000000000000000000000..02c2509fee0fb4555df61072d8e8daac8dc7430e GIT binary patch literal 845 zcmZ?wbhEHb_??HKjfkTUdnM1~7 r!-9j&9Ku>L9YCQ*K7KbIgN+Z4bP31@U9tF}++`ynz+epkzXub1 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/toolbar/tb-bg.gif b/src/main/webapp/gxt/images/default/toolbar/tb-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..4969e4efeb37821bba1319dce59cd339cec06f86 GIT binary patch literal 862 zcmZ?wbhEHbWML3xXlG!!aPPx~`#|*Z;=Kx_O l3y+3|gN`0r3Od0)xY0~Iq4Rm?bCJ?B`>oTK&gPd3dz*}CLR%aU_l zD=ze`x;$asm5J-FP1|y7=C<4Oc0KGp@OARxuQQK*oqzJ{(lcLIpZm7u8ukxPurZ-YfblWU`p4o5&%%PX!%{-|5oZ<}b{tn!>Yw4W=u^Uq zQpF50j}MM*?7gx+W?f1zJDKabS=0$Rg*yZqflo?c5Ixr^dQ@Bde4NjsFf-c#W=%hte#Xx8144{oy_EOnT}e!Oo~L)&NLV<%|FT literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/toolbar/tb-xl-btn-sprite.gif b/src/main/webapp/gxt/images/default/toolbar/tb-xl-btn-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..1bc0420f0f0e30675a9eef74adbcb55e3efe9d00 GIT binary patch literal 1663 zcmd_p`BPE}00(e9$fKOV%p>iPJj&c%bKS|xcC^ftT+_6&bQ^Q1v0|HYZH>xJ<)Pwz zJ{2=BT=7g3OVbPx;Rzm~c$*61k!dRMUNt+7`}{lhJD>Uf{{7*5&d1C3_zfM5t5zZg z*DM_almg(yCS!GDY@;y)?seu{c7h(Q&j zgny%6K+jMmP;5z0Y-vv%s!SALDvB=?$Crz#U$z654p0@{`RiKu^2 z14&f_^ePFRB}v{QO|F)tR7+E8P=l$c+QGEiq4e6Jw7Q}6I#~v)9yOfNFq~OGocVGj zt6?PT&fvmXJUF)t2KjJ7H_Q;g#SmQ5 z1DA>53Nc*S3$yy*ntr%$0BMjQ>>fpnXzn#itbEfu-`cm(hU#B@JFwI)`Pd=(_)fa~ zZtzp*(8~Lvl_n|DJczUmA#Y?z+c45Gigb=49N8*o_%nB8jW@E^HM-6jM|cwme{6$4 zuIe6F2`1FtlZbFqBbs8TgLuNs?IjW4Js7St1q>d8g*)ROwcN6j>9 zSu?Y&nf(OIS6~Hd6`or~l%J7#)Ecs|_GNMX3+8_r>uji{Y{M4quYv` zK1ZlvHoGPY*j-7ev-=+W3ti~ob1cXsIm=-%B`70^8A;N(lJ71^2VXz?dPh4Tu$GN$JgLf z{3za}WGW%h4420UW0~llVVYVIXr;Kr+JF~!z5KiQkXD$d#isr)hd6Wp9fH_M_ied= zbBRO2H$dKNZxrE1@t!jP7=AW&Qn~^8e!TYHBDTNK?x(Rb1Ec7OaGiY&W#c)!Q|oa) zxR@|!V1K^37G&$K8%{T-20M=%Uw4vYF~9N0M5&-GxF;=F>DrU-MpPWMarYu94|<*m zCmr;5E>{wK?G#LcKY>tb9dwxj<f_U;r4roZGa6lchMQo#=t2JlW z1rrR`MBfun)4u2}<(LGzxnp$QfVUwDi0IAGB@ z(YR^83IK=@3&2sHp2BJ>i_4GC(}I&g&Z3hSEU z&NlR)bS6>qNrRnXmuy7j3_I#aYmbm&fGh5=W!qB+~0KPzi82i4~N59efh#UeYWHH ziQYC+Mx2D$Y_{(1?y3d3j+g8Fay>8C`{my6>a7)xW!d53VVBG0cDp%_^LRXSb90UW zOm3)?VVK%bxiCyez!QPli1s+5%|241ssO5h8la+6MbE2x9uPHS(mWc_ zyiW5pUx57QpKrjbnoWfClOu(sg`XgnRT8mOo$*fi1})`>FY{jaypyRp*Q#)#g^_(n zueb8;{JX(w?)JeSMLy@ax$^ixY0B;xYA`cnOw+u*dPn7A&ss28L`c~TGtf&|XSvzp z9q+$8THIVgOPJl(ou&iz4EfUNAeL>Hnje+d_(s|D9$TyZfqA>>&|Vu$o_Bnm>e|Cy z7-?ilSw+dvMOU!)is@LN5P#We>YQjOeZ_d~ZN-khUHdy{GHqiIYr8)AtP=z5ot7KV krf=5p_lK;fJ~ugf+I@>pPF}U&d;LNTycxV!Vj(Sm0qgvcUH||9 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/tree/drop-add.gif b/src/main/webapp/gxt/images/default/tree/drop-add.gif new file mode 100644 index 0000000000000000000000000000000000000000..b22cd1448efa13c47ad6d3b75bdea8b4031c31e9 GIT binary patch literal 1001 zcmZ?wbhEHb6krfwXlG!sZ8LT1HFNH_aOtsj?X~gjxA*9E^z3&Ep6U}i%{O4CWB5GR zxH(~o^CD6fgr+PAPg@j`zBoE{b!f)w;OtcqS!<$mRz>A)jmQU~$dc{RCEH^Pc0?BK zj4s|4Q@Ag_Y)yK_x{UHY2^CvX>NjQ8>`JNKlUBPgy>f3}?ar*)o!Rv}a|;e8R~}5M zI+k5?IJ@p(X5I1prmcC+Tl3ns7k2C@@7Z0}wX?EwUq$b}>dE`-8_$%sovdm*S<`y9 zvg=S~|DoE>6ZKu^Yp3pS>N(xmcc!K9QuCyv4O0&^O+Vf`{Y>lRvmG-|x6L@yKI2T+ z?1R&1ADl7ea@VxWol~!LO}o-P{c88ji`{c?Oj>eo%Chs*mR*>(;O5i?H>WMVJ$u!a zxvQ_tS$1N<@{-~Tgx`xUa|S^%B{CoY`?W?%iUF5@2}Z*cg>Eg z>v!B;zx&SmUDr15xw>=vgZ29!ZQJ`~+mSmvj^5pQ^4^hC_l_QYap3f`!)G2GJNw}H zxtAxeygq;Z-KCo^FW&ihj$;hsoH8C8796zp$T+b>@c4oQ4ptl9{CxcUY?nYS7uzPr^nkf~ zF-KnfWK`sLl+9v^jSOlzC8As$;v$iu&bdH0ut_86$zxX@GwwqiGMCbLCdz4)g$X=7 zcxoaWQ~HIKhmx0vy2>O}Xevx#ky5l?_wGr-qtgtHrgJ}!+;FF#5#6#i2*%nh> zyAFx!#AZoGf3_x%!Zyuz9to2P8w(l~c~334oIij5|Ns9CqhK@yhFS=VTXXjp>_!!i-ZjhjBP9&d=d&P1P-@w z2*?REbZj`-z{teJvFE@96*ex`7^N1;;s=LXIk{il(fr(WZkkH%E}e=3)qp;}RJS=1 ZACr#t%8J+VSOzWgoT4>ViN zU%dGJ;lrOVU;h61@&EsShEXsY0)sdN6o0Y+UH6|s2joUjo?zgZ#9+@MbEA=|m5*7N zuP1?_;V=Wcmd2kAjEoFSyb3l63JeWQEzG)l4<-aOJF{^!n#_11;LyO$#4EyJxnXG= zBd1*n!vlvz??xWBngt9APKV|*$upc#SeW74&N(&d!GU0fOO1}n=k{oQNISc~334!T+I5ReJa7x*DTyS#YWmWQ8@*yChwS&o6 zrsT(mM-FYgx*h@@4;QobG08Hm@c7Wg%*HKZQ}Uv~iG_ooBg3QNK|^B;FB^}5K!V!o j#pc~334eSRT}sa)VS__s8w&@Y zgu;q|!z~;Fasmw<8xA%wGBG*Ccx+O2Y*vXZDtTe_=t!5iao(F9ACgZ@)bm{w(wUgh k*e9SZBf7&RvvH|ppWc*{Usi^4=^EOswG7BU)WBd303hyMjsO4v literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/tree/drop-yes.gif b/src/main/webapp/gxt/images/default/tree/drop-yes.gif new file mode 100644 index 0000000000000000000000000000000000000000..8aacb307e89d690f46853e01f5c4726bd5d94e31 GIT binary patch literal 1016 zcmZ?wbhEHb6krfwXlGzhFH%vfSJo_7)vQuAsWC9EH&km;*6LR^?KiYxFJMjooS=wa?sdwqwu&r?{0KDI0upwuR+x56{~g zkq<(VSvvztwnvw2k15z6Ua%vwaA$PU&gkM@F@^i$%l9PIZcnS(l~TJWt#)5}{f^9- z1J*HzZPSi=W*zp-IqIEx!mH#^WYOu+{6mTPhZFOT08vuj(d7JNDFp|U3y&lh98WDi zo>p==rRYRP$%%~86B%VEGs{k8RUS;KJD6E_Jiqc}cGa2O`cnnX`*Pb46}28MZ8%lj zaHgpFTzUJ+%FZKY-6tw0oU5O>vwy;#zG=ssCm!gZcDil)nbs*M`lp@kn035;#_6_M zr`l(nX`gwvYwo%3nHRffUg(*1rFZuAiSsW_n15;F+#8b?UYok``qahOr>(v;d-dhn ztL{u+dw=%2>kHRkU$E}Z()D+iZN9m5#o~d_ub#R;qm;f57%vfxPJS?4f`H%+y8jS!N=PUJlT2r&He)i4xD~_ z;M%)OH{V=&_T};0@2@}p{P5-1r$2vx|NZy(|Ns9CqkyasQ2fcl%)rpgpaaqk$`cG6 zR~e)^Wjr=4aC9<_3F%-wzQDoVIAhB~=k&AfoLyW-Re?t*%+d(FBC_aGf`Fq$D3_+D zkjse)Dz(dOBqZEh6jdE-UYxkdEGT3zv4dmE!Dl=ZWi9e%{1g;@!G-s^!P$| z8==@$AR3<{5^GPA?~^>Pma%d|c$9FpHZ#?|? z{QdXWpZ@~^!zdUHf#DSbia%MH85kHDbU@w$lae%R5x_+pfh=9;jCRWxkA&~=x h2Yp#A(~SZe4mdO}wqloSIC&-M@bZAgN<174)&TX)MQs28 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/tree/elbow-end-minus.gif b/src/main/webapp/gxt/images/default/tree/elbow-end-minus.gif new file mode 100644 index 0000000000000000000000000000000000000000..9a8d727d70ff5161ec18c0cd0156ae8d50a23b75 GIT binary patch literal 905 zcmZ?wbhEHb6krfyXlGzB^h$R6?=)rU-Z?Z#?|? z{QdXWpZ@~^!zdUHf#DSbia%MH85kHDbU@w$``4~=2xoOmJxRJ?YUCe?7 p4c<*mc6tvw4?K5dl1^^H;N?iZ| literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/tree/elbow-end-plus-nl.gif b/src/main/webapp/gxt/images/default/tree/elbow-end-plus-nl.gif new file mode 100644 index 0000000000000000000000000000000000000000..9f7f69880f48db8d86785639055fcc198764617b GIT binary patch literal 900 zcmZ?wbhEHb6krfyXlGzB^h$R6?=)rU-Z?uiX3i z{QdXWpZ@~^!zdUHf#DSbia%MH85kHDbU@w$uiX3i z{QdXWpZ@~^!zdUHf#DSbia%MH85kHDbU@w$y4*XmR1y>vzmpih{E$}o|KC(Juvl9;ogEauy5=OfK literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/tree/elbow-end.gif b/src/main/webapp/gxt/images/default/tree/elbow-end.gif new file mode 100644 index 0000000000000000000000000000000000000000..f24ddee799ccebea4dfe60fd65a5703a6a59d44f GIT binary patch literal 844 zcmZ?wbhEHb6krfy_|CxK^xx^&v19*7!DtAK$PiHc$->A01UeuBlqVQCG#MBA01UeuBlqVQCv>6yVWIQ%3 sIM~R@rxjCSpm?~QTh?igM}U%RmzciOnH3WikN0ueH<|n}RA8_M07ViGB>(^b literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/tree/elbow-minus-nl.gif b/src/main/webapp/gxt/images/default/tree/elbow-minus-nl.gif new file mode 100644 index 0000000000000000000000000000000000000000..928779e92361aaebfe9446b236d95cb64256e443 GIT binary patch literal 898 zcmZ?wbhEHb6krfyXlGzB^h$R6?=)rU-Z?Z#?|? z{QdXWpZ@~^!zdUHf#DSbia%MH85kHDbU@w$lae%R5x_+pfh=9;jCRWxkA&~=x h2Yp#A(~SZe4mdO}wqloSIC&-M@bZAgN<174)&TX)MQs28 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/tree/elbow-minus.gif b/src/main/webapp/gxt/images/default/tree/elbow-minus.gif new file mode 100644 index 0000000000000000000000000000000000000000..97dcc7110f13c3cfb72a66a9891e8ab3ccef4a98 GIT binary patch literal 908 zcmZ?wbhEHb6krfyXlGzB^h$R6?=)rU-Z?Z#?|? z{QdXWpZ@~^!zdUHf#DSbia%MH85kHDbU@w$``4~=2xoOmJxRJ?YUCe?7 s4c<*mc6tvw4?K5duiX3i z{QdXWpZ@~^!zdUHf#DSbia%MH85kHDbU@w$uiX3i z{QdXWpZ@~^!zdUHf#DSbia%MH85kHDbU@w$y4*XmR1y>vzmpih{E$}o|KC;?;W0q*gYXG$^NPhqT literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/tree/elbow.gif b/src/main/webapp/gxt/images/default/tree/elbow.gif new file mode 100644 index 0000000000000000000000000000000000000000..b8f42083895bb98276f01a5d0e33debddb3ccf1b GIT binary patch literal 850 zcmZ?wbhEHb6krfy_|CxK^xx^&v19*7!DtAK$PiHc$->A01UeuBlqVQC^cfgAWIQ%3 wIM~R@rxjCSpm?~QTh?igM}U%R7pF1PhKh>{$NPBfn?f{-mK<+pWMr@g0DWQ)HUIzs literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/tree/folder-open.gif b/src/main/webapp/gxt/images/default/tree/folder-open.gif new file mode 100644 index 0000000000000000000000000000000000000000..56ba737bcc7734693d7ddb2f50c8f3235fceacee GIT binary patch literal 956 zcmZ?wbhEHb6krfwXlGzB^h$R6?=&-=aaIP?oGg}kIcy8^I2ILfEiU9P24$!>3v-_@?Pw@dZdEXiZDqz?6KotSEHa+=}k8OCR3nw(sqcz%)E z^&Jkk_UAm>?EL6pz~8F{|8JLmcvAKMN&S?id*>|OyM6oiIctwC-Fj{1-dlT*9ou>8 z$^Yvu|6jNKf8Y82L+Ae=lmGvp`Tzf%|NoaBIdbIa(W7V2p1pYS;<0P5Z#?|?{QdXW zpa1{*{pbJx{|uvGGz2IP0mYvz%nS^S3_2i_KzV|JV1OfBquQXEGvI4}0>6q3BdQLvD`XSzZ1sfd8&rn9pxa_cf0 z8;-R|sQDgyVbIvhINu@p(3Fo!OdU)nOn*uow`yILl(G@%_!WGtV|{}AnFkvZ9YR(b rI<1IZ9mc}SXv*Rj;4nR}iJ6T{KqBGLF$ZZACT_Vm-ya@qV6X-NkKMK> literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/tree/folder.gif b/src/main/webapp/gxt/images/default/tree/folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..20412f7c1ba83b82dc3421b211db2f2e93f08bf2 GIT binary patch literal 952 zcmZ?wbhEHb6krfwXlGzB^h$R6?=&-=aaIP?oGg}kIcy8^I2IRjFD>R>Udq3sOkj1T z@R}--bv0re>LfNdN^fnF-QFU)=hNov3pP6ZL zdwbCB?S=oZs*|No!)|Nor- z|92fYaNzXm(`U|{xqSKZwQJXoU3-1w;m7CizrX(c9|#ym!DtB3CIl3JvM@6+Ff!^t&H2GZdv-WZP}~tRj*oB|LorIYr@vw({}!uwfFDhO(&LbJ2U^lzeR`sUwH800T8|T z00#d*{P_PLi2nZvyK9sf4FQ^mfZ|UUW(Ec>1|5)1pgh6A(Z?XlA>*-O!NF!$M-7&b z2M@Kd^GWGABrIrf5YP;mqG0Ic!oef1<ENsed*j@4Yk?RR_1qN#Xfm)wA literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/tree/loading.gif b/src/main/webapp/gxt/images/default/tree/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..e846e1d6c58796558015ffee1fdec546bc207ee8 GIT binary patch literal 771 zcmZ?wbhEHb6krfw*v!MQYQ=(yeQk4RPu{+D?cCXuwr^cCp}%d_ius2R?!0jBXnAQ) zOH<|l|Nj|aK=D7fpKD04vtxj(k)8oFBT!uNCkrbB0}q1^NDatX1{VJbCr|b)oWWMT zS%hVC ~NwO_yO%;SvZ5MdNYf|QNy-I*%yJaj+uTdt+qbZ z4E`Fzb8m}I&!N8OKmWEcCmrLs^Hs&3i)mt@hQVdcqghkaBs*D}tG_lKew4?rTjzIZ z9tSone1TS+TR7tu^CunG)Y7Jg#sw#)sG9C!c0I%LEzP)9;hqRf&)s$D8d5Db{TBs% zgl0~5QQ91luq4Q9tJgt4QLbaxZvAaKeCM9!oy85dg4k>TdBSVqjHub_PG=PO&J-rx z7oYTuF+kH|tG-UK+EkUhDjYx?zW?T|lx>+aOQm zzL$v$zBLo4Cj=G&tw{H}dW?tlTkS)SY4<#NS92z*EY-MMB6Ftp`R=*=*Ev7cS+X%W zMCur^FdlokL}1Y+&aasU2J4#EOuNlnb9CmqgLCGTSY!1BD42pkHY^XidQ5=>YQx%` z*%Pm9D!CkBu&tMWm(%-ejACVWGS2RX5=QOJ$1*tr7F}F+*-OA+Ly&Isg|AEuUYicA z#%IG6kPXkHt{zk2M6zK@Vu^4Q(1zE$?yY6M!^&jQ+2^E?!p7{g*|X6}vuRC3p@jk0 W117c83?+LXEZI4G$p&LV25SKE>nb+@ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/tree/s.gif b/src/main/webapp/gxt/images/default/tree/s.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d11fa9ada9e93505b3d736acb204083f45d5fbf GIT binary patch literal 43 scmZ?wbhEHbWMp7uX!y@?;J^U}1_s5SEQ~;kK?g*DWEhy3To@Uw0n;G|I{*Lx literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/window/icon-error.gif b/src/main/webapp/gxt/images/default/window/icon-error.gif new file mode 100644 index 0000000000000000000000000000000000000000..397b655ab83e5362fdc7eb0d18cf361c6f86bd9d GIT binary patch literal 1669 zcmV;02738NNk%w1VITk?0QUd@0|NsJ0|X2J00{{R5ds1i7Z(~66B`>G9v&Vb001Kp z5h)oOFaQ8I0021w0Y3o&E-fxEFEBACCN(uSJUcx_0Rc|{08I)CQ~&^5003P90ZlnN zZ2HgaR#tRYR&iNbdS75? zU|?otXJ=+;Yin(FU|@V`YIb#ZeSCg?et>}h0EGYmiU0tO0055<5Rm`?kOl^o005Z) z0GmN+?~005%|1f>7~rUeD5005~41+4%8tpx?M0RglK2)Y6SybBAy92~17B(5YS zt0^g|FE6h$GP@!ovpPDDN=%4PP>)+%g=J@gYio~fZHaSpjd*yLX=#~kY?O0znsITT ze0->1U$sL+wn#|6N=l(?ZKHd8zjAWJ0s_Pf3(Ero%L)p|939OP64C(y(FzLN0RhLMcRH8%DjAoeXS{Ujv)EG+gtJ^wQ^{W?3v zNJh*-LCQ@{#8XqnUth>oR?f~+Utj)HQ~z6A@Lyo#VPouQYVB}x>v?Q{t%gd(L*0R{xyxG~vlatYag2Jb&>V$^kk(2*{ zf&Yw*|C5vdnwsaLq~@lni75b z|Ns8}{@~x^A^8LW00930EC2ui03ZM$000R70RIUbNDv$>R;N^%GKK1uH+KXhN+gI) zQmI(8v}vO?E0!usk6NLdNb;LSjN7_}3)gKMEm^BfQ9=}oWJFkzOv$3fZRN_A+GfF& z32BcxoBv$pj74i3x2G;S3XK)B)FeoEmXWL#snn`jv}gsDrLa^fQ>tQ`viiu;6mb&4 zIih50RjgR4R9RKTR}rL1lO$0B9ElMiAmt)9>blUBj4Y5687efWvLQo=T3ms|nUS42 zGT05w#%K~HN|L}(qt>OeA3m=K#Zlp_nV3Y10NJUdgV?}Dj3P~n6lR(~fAPA&<^wy< z3SY;ip*i$tjvF;7)cwO(hY@E;pU(dEJAMvK96x^EuyA(#I4D2W)wt>4TNE8YjvOf} zG)mrhfAgFX#~WKj)1E)1@X?1HY^b3I4=}g`${ckFf(Rmn_^}B+|J5T5Fy|aN${TUW z0S6mQFhRr!;UgPsq@e^7N-V$&6Kb%bq#Sa*Vdfi^>~mm0dsJzqm1!)YL=j6Upi2{A zuE7S7XQmMhKT=kc#-N0zk;D-~AfZ4mcqp-i8dkz#<`P*@Bc(t0{IW!$Ngy$V5I-1@ zizZxdisc(i!~o5u$IbJ_rv6JTkwg(c{D4CNyI4a65=m^j#u6#8*Ipi;`17AUTJ(BE z5kdIy0|yB7l8z8W9HFeL2U?Ou5|`ZbpQ}X_F@z60{NTU@$Nckz5JFhX#WM$9V(qqN zczc{Zzy$F_4?N^RzzK;Blf(}}6cGhE|5-BcwnvOnPkU1IumcV|U{F8}13B@74?zS0 z#dwzlam2`nic7|EPvkH$4mJotfiVMJGlaxG_)rEWKMWD>&Oe?)03;wIQ58SrAhy#rm+eCjRSRuH))@dW!7dZ& zW5o_u2R%03bq^haWeql1000EIv_ld+Sb#9`4TvW`^x8Ju-~j^zOmNFONd2>m2p`;_ zHs5>m&A|f!9AH8(f>-{JI5cc`2#jD0Go}*+k21NqFv0{8KoG$M PBfNl1GVhQS5C8x>^BLCH literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/window/icon-info.gif b/src/main/webapp/gxt/images/default/window/icon-info.gif new file mode 100644 index 0000000000000000000000000000000000000000..58281c3067b309779f5cf949a7196170c8ca97b9 GIT binary patch literal 1586 zcmV-22F>|LNk%w1VITk?0QUd@002Ay07w84PX`%A3LHrS9ajJYWB>?a019mY3w!_= zeheW`4kS_$BTNt{R2C>w87x&AE?6EhTN5*F88u@cHent&Zy_^VB{*RwJ!T<2Ybrfu zEanAeNJ0@02_k<8;bxSjRY)#049Cl8e5Y1_tY3bkWN(XQaEfVlk7;?7 zZF!SzdY5*8mt2auc!8LDgq&lBt7(C!V~et7k-lw{yKsuMageiql(2i8y-tSTQHA4U zhskM;!F86%bDF?tGlSHx~QzWsjj`Ou)c+z$A_QDf}_NMrOt$@%8RPR zi>%9lsM?CJ)Qqyzkfy4!pytE%CW@Nu*TlB$=|re)xF5pzRlaC#O0*M=&Huzs>kT8$>*ZV^`Xr3 zq{{ZD&GV%F^A_)Y{V6-P_#W#@Xx7+U3jK?!?;j!ruDO*W%II z<s1(&F;b=Ka&^{@UjA-Rbn(?f%pA|J?Ea z-}(RG-{a%sWQF}}=T6!l(LfBVqwLzTzdz--gr zA>~JRUspdjz=SD#uW#3T=*1z15PotP*O<}1TXI=rW8fk~GqY79KP}1YrcVGlvzs zDl$nW+ZJ<7GW-rh3M7OOB8UkZSwRrC?KL;(Q+JJH=Ywg3PC literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/window/icon-question.gif b/src/main/webapp/gxt/images/default/window/icon-question.gif new file mode 100644 index 0000000000000000000000000000000000000000..08abd82ae86c9457172c7a4fdbc527641cf28e48 GIT binary patch literal 1607 zcmV-N2Dtf0Nk%w1VITk?0QUd@02fyP7F_@vT>uhh032%o9CQF5e-A8e03mY#BzglW zcL_0l6g7B5MoUafO-xQwNKjc)QdCG)VMGais%VD1YKp&Yk+f=&xOI)E zaEiQim9}=7y?K_jd6&3+oV;3t&|-(kYnQ@tj>UPC!+4gSZh?S#&mcD?Rw3D8!n4hVIpuCNxypy7?lBc|sslAz{ zv!1E8nykH`pQ59qrl_Z?tE#T5tFf-Ly0EXZv$D0gx4OH!y?~j^f}_NSpv#4+%#5bO zjit(rsl|+~%!H%Tg{shuuF;CD-i))_m#xK;uF0IQ!Je+okgwa9u*sgY$DOs#l(p29 zwb+%o+nKY|oV(kBuJ?(u=#RDcm$&DYyyKX=;G(m`qqxkgwZo{l%AmW~pu5Wy1~n_!_~3H*|^2hyUEtQ&D)~F!=r_S`L&GoF&_N~(Sv&!PL&+@j??Yq$Bv(odm+WouL^Ss^uzv2JK z#>vRX%gf5m#L3db&e_e*)63J`)6&(_)!NwC+uGXR!PV)++V9BJ>B`#d#N777-1y4d z^3d1g(%a?H-|XGp;>6+p%jEve=>OE=@803%+~e!f;quVt`_t+E+2!%y==0m`{@(Hb z;NRop*MI`>g(&|>+<34{Oa!Wf0xe!3Pge_@yBbqQDAy z^yqLDY^(Y`Bgb#Yy&t*SHt<)MmubQE= zM_%4K|K!o54GAF7UTBq*Ob!?g0o7_ijR4L$#5Cl7WQu5*Y1Gi(Bmg6D)2&N<*T z_(l=0(9+Fy7{;fLf+vi?iGtvWSYtTY0MiN@9f&f^H7LmFMINyXBrZBDyqCps^d=g7F3EF65lHnZVrI>UYlglJe zU~oq>afkv8HsRE$YQu zh#-bkqRKD4cwz`3RWxA(1Qnd&3}YuvgUT2`;GhH*Q&3SwBCD*Dh!i~7&_D!W@DWW; z1F;hgDs>bA#0Ei30Z1pS2x5T)7=Y0SG)EyV5IfR9lMEkstO3X(t9(I08OcCnvDYWD z6Ol7qAd-p~6!7sjC){4MV~P`tbU^{7d>1~=99ZDpN7scTEv^xRGv0Vk((EBd#a;&l F06QAMRrde@ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/window/icon-warning.gif b/src/main/webapp/gxt/images/default/window/icon-warning.gif new file mode 100644 index 0000000000000000000000000000000000000000..27ff98b4f787f776e24227da0227bc781e3b11e8 GIT binary patch literal 1483 zcmXAoYc$k(9LB%H%(yfgGuR9b<4z3ocd29*O43CNd(`UWmQ=H)a>`a4DYpzOx}c(x zSlvdcWJ?+unZaR-H7>b~v1S^TyJ_?Ptx;{_9t|N0Ki69nENoJ2v3`>&g|W8&busa_So7*+dD)$ zvLc<>kt@t%F{f~h9qzG`vt^ZG;7|7JumJBhJ9Y+8Lf4suZE^fH#5_9C`L|tWUS6U8 z{=uOE0fBzowgqiH9`W<?y6`^?T9Sbi>kIro^$r3_Y4hFwk)R(#Q}G+VFY!jG?tX{A@K zA7Ak-yF;xiAyhqNys9yLRL-ovzEyCSA}UpDxeZO_LcSl+NfU}@28A3*bVbNWrHA>fZ4D_larvD z0o4={9|wFI(DV=ZJRp1#nxdfzI{Lyuvvho356v%?4p|^%j&Mta>}F3~{K0|F!GZpTzVLoC6_EgdgTr?dzB>V$ILvD;-4MrIlR(m27G@h~>JlYZ zVAt|_ro3YUVh;qD&xzwC(+MYO@wD@Y_NS8}VxR3300jn*@X<;}{z{$rL zTQ1Ygt3r~JNZK6NqxROCFAF5#=}AsXB5Gp!SiKu3HLoB=^T~;XI#AbK!S$~9M1UFk{5%nyiu}%*CZiIbNf<7_U*)eK2jmJEb7FxOYX=;RObGwm=_w(}-X91Z& zqYL6B`%{}cDrkMSM*JWx2`jXogS!VNpUr25HWVJ_hwMpzlk(}y+|3YZ)%_6gfm?u*PI1fu~NtNN%<%o?1bnQ|HcP z+A{@eE%wEmbNMT^8Mo3bU$&{4r}IL6UfVqFo%2t*Tz4deYD9aVZE~6`7TH{nSG#4; z<6vfan`>!V4h5%@)!a#Ahc&Ef--@I2iU;@wEYEC-zjIsI(0PM(`f?qQqf=C&8Tb?#p4A}3P=ZzHb8 zU%2?008r{GmdfTSw5X-f*JnevxfSlSM{Cc=no(Hy6^Zi{dugQHUH~t06Bw zQt4307HjGF&8-z0AF;fZZq8-%?^|4nr#0y83LDz+toN8`gZZg2p9Yd5@bP-%L)8(V zUmmP8OS8yf(llyk`BV+l3sY@pR^S)K>*+DB$}jc0e)m$1w?{Mi5Ahq5K8vj4mE(=f iL}jwpve+-)v>A%!R(IJo>4b>g=e!-tLq`xb9G_3G{0 zGdEv6d-+ygtj!51%UBZR7tG-B>_!@pqvPq~7*cWT?X^Hr1_hqO2g;KF>0Y)?neb;$ rtH-@3vsBJ|GJLS*We`|3`JPV9O%{pDFOA1RPGj(N^>bP0l+XkKCecH0 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/window/left-right.png b/src/main/webapp/gxt/images/default/window/left-right.png new file mode 100644 index 0000000000000000000000000000000000000000..7586ff3339a48b828abf06c241b9a0aad9a78368 GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CK!3-qbmi(0kQtTz3zOL*yxY<0%69y3#E2IL6&q!Uq=Rpjs4tz5?Mit0(?ST`<5Jh{POMDn=j@c;kE$^ r3VFIXhE&{2PDn^;Vsc|+GqPadUdIqEbJpV=P?o{d)z4*}Q$iB}hcqa_ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/window/right-corners.png b/src/main/webapp/gxt/images/default/window/right-corners.png new file mode 100644 index 0000000000000000000000000000000000000000..e69a3ffc962e9e3dc762ebefe931f3a42003e7e3 GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz#HIvmVE*7YExc|c01#5JPCxhOTUBr`uxAtW<5 zl_5MeMZw5a!Lgu7!N|bCT*1J|%EZLV&`d$sz{0>_xt^0TP#=4Vr>`sf4Q_T3Wwt5N zPc{LCI14-?iy0W?4uUY_;mnX=pdd@Sqpu?a!^VE@KZ&eBzEFTqi0g+BA37H7d-eA1 z;w`7n+SOS9^>bP0l+XkK)D%*5 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/default/window/top-bottom.png b/src/main/webapp/gxt/images/default/window/top-bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..33779e76b8d7407100e44ea79974d9c8300a9573 GIT binary patch literal 180 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 Ku&A#Ku>T(wJsgPu literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/button/group-cs.gif b/src/main/webapp/gxt/images/gray/button/group-cs.gif new file mode 100644 index 0000000000000000000000000000000000000000..46a891d8d8b7a13f3ba92a0c0473456cc2c4c828 GIT binary patch literal 2459 zcmeH``9Bj31Hk7|UXPyMP&_<2l4}Q+=kCT+(qUJpDL?YSP*iiY0e+vBH6foG_rvUgLW`FDNCjiQFfP$*B^9evIPWdo6q?`VM(ykTV=g&5?##NLLZDw`NDs5VxAX)|^9N@@TPk2bN;9j6^=zQp z8KsAO36&`8m|4sopeZ-kfd`AjmMU4sBr1!MT9XT5A0nT1`_X}0DdO4I& z+?!%yr3aTfmKpVQ%0G!q6A4lk59oO|)8FwUHh&81Yi5XFKQ#21&Pj;<(DTSTdc3cN zb)&m@By7*~dDGko!H)#j4qlmmPrue%b>Zmki>)=J(eXDtu1wUH&(YK6H?N4h3n4JO zkd4)u!CH^%(=D69^MA0SMg6;^b?HP$u3X^W?2EQ@>3NmE|zZhu?D zQfUH#Tn_l!2}|9l88MNTIaZ<-r))brfm7w!T)uZCFk&)Y?LyXMh7LOGNrqkqa4Ksh z&21_h*g&Yv26JYoa@!cn;`=tE3FY@~rwQV`yvc5HzO#~hY5p0_$S(z#)UvWTvAKh>4M8|R`QA?N3wRmH2! z6Y4&?Y9Oh_jq{C90&Qf*IW=3qK-- zwhLw<1&io#_xJ*CjWEMwN^Nz73X~4)U1nt;GMuRTa z3{_{4AH%FMt|p_NfM|Qin% zbcZfAa8)k;#|12^hKgH+0$|OZ#>OMCc^8hsVA=!Y0|B$6oCcrGGhRl1Y?V++aWD7DeqFN+#)%s{ZOpK@16Rz zoq!&wjPLu#35xL<@{V=SbsQlNJ zfmngdx`>87vndl`<$FARfTEp1L46sc)m>;7=fj;B4m9B<2?oJSElMpo#Vwc7@& zawpSQ21sg_D_=*w(5}VUY9-Dqd1|T#*xBL3$ieZBYswos&83vwF#b`k4m++Tegy${ z5Puvdbg>wW2iKAebp$4_?U9r`H2){PH9NNB>PlqFj(GSxP&f_ia7 z%o0VOv4y<8H&jY0eZl|n1nwg3in?`Jmjj%KC-%i#vdU%>O>7i0N+OkhD6OyDV-Dgw?RSR#a9{a1{Yt*sswS$ZV?jO9pvTfFosaMuV;7xYw<%&dOE)`=@s!wQ*p78+A4z+5zl4MtED_ z#UOgs8~WEKz9#wx9ZOGoKb8NZU-E65H!j#VUpqDM!_Rn-E3w69*K!I7K4BH z9A;B1_>eG1;``PNCN0I-__AV>uw6Z{IKwdpa+nkpWW`~ylFhCoKp%RhnamQ2G2D8) z_YErWQPpmYr3)nZI-b+i>tG&LN&NWEmBpskn|NKVc>5t?xP-`QUGlp{xBiH(bo_bWK($p|PYFjxZsYh*if literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/gradient-bg.gif b/src/main/webapp/gxt/images/gray/gradient-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..8134e4994f2a36da074990b94a5f17aefd378600 GIT binary patch literal 1472 zcmeIx`%jZs7{KwDTLnZd*hMh7R3%&{VK|xh5d@TrMjeTpnq?_&b8`}Bh(kowLJ^R= zwLrP_Mz6F*N-1{`N?)K@6i}uD1>V*|OIv8)A|*;9JN<2c#7;i>=A7rpCpmEmrw$)U zc7mcXc@UIVGnG~gOy34*)9Li-becMyuD$~>)ERVj219+9F_Xbm-(}8ZvefrjGxzFd z?gQ+Z2W-&U2kcoQXO_sF&Em{uap$rD-W-Vsija6n4j*~Q*W?J0hYp%tpk9;bpv@I( z@`Tz)B2B(fn=b+vZGl)@(4Z|8YYQ8+MGfzZp1v;z8bNg>jk*$vu2iBclgyVj>B^es z9|O{PvUGvmyzs<9PmwK9WcqTTMPJ^kuV~R%wCXE?Ha*qBP}OFjwi~K|4nuYOVl`;T zVhzx_SPOK48f&|ZG@#o^cQDa=jErs*qsPQ}W@7f3n4r(hETGq1*K1~j_Lq?Dr%LqcFxvPW zut}by5*6B{LZvEO(+Ju$Vv_!sOuZvAc4ePkK}Mg^X|R8{wv3g3jV&Qm0~*o(w;!4zGtP^}q4TE3f=4jcq2s zNTj41IT7{z(FAgK^iIzZ@_2j+Ir8!+!Q#r@%9(ju7k_5|Ghf7eqx2?7%YoH4jP!wx7HA*Q43) zwFOW=pP6ly3pn=?dHpWVl+z~h4aA7q3Dbmfk>A9h*D=1j0=ZkaJtNDl4|Dy58=OQ4 zb=w|rEX#G|6q4dPk_gFV6VcYbmUmazi7x6i6Xb&As-j$U2PJ(S9-JDYvw05^=DZ2M z-q(%65iC7!Sf=Hfs~2MFb#cc_ASYbPO$Z9ewDx-)GFuhcxKI?v{g{Fd`2H?N2mNoG a(II?Zs7)DAnPM9b=8J95L)rdV=-9sjoxm#q literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/panel/corners-sprite.gif b/src/main/webapp/gxt/images/gray/panel/corners-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..5305d73ab8769cfaed6d3994dda5a01825016f0b GIT binary patch literal 765 zcmZ?wbhEHbhW6)gwR}H+{r>U$ z-`{^<7kS|Fi7#KeIyHq|oZZR9qeyQf;Mr{&$;Y4ZM-@9y&4xPA41 zpY`1S{?<9F!}N%kO}1h3Q4P7%MQ3IdC7tdtyxye~S)6>X-`1ZkcIKDV%QFM>r}50( z`r_K$(E2jnYLmCOHx{<9i&i8w QYkqn7s9R%+01JaP0I9W&x&QzG literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/panel/left-right.gif b/src/main/webapp/gxt/images/gray/panel/left-right.gif new file mode 100644 index 0000000000000000000000000000000000000000..174c85ea27c42d0e27b4faf1edacc1adbbaa9c23 GIT binary patch literal 63 zcmZ?wbhEHb+|z`(+w1LA6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV00930EC2ui0096l000OW0QKq1ch4TZdGX%0V^^-B!-o(fN|YE7 F06QjbkQ4v_ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/panel/tool-sprite-tpl.gif b/src/main/webapp/gxt/images/gray/panel/tool-sprite-tpl.gif new file mode 100644 index 0000000000000000000000000000000000000000..18277a3d4873a92ed7b481533026dd6e6f91f831 GIT binary patch literal 971 zcmZ?wbhEHblw;s$_|CxK@ZVw1oH;vo?0ER_;p4}TpFMl_;>C+suU>ul@ZrmsFWI% z7A6UgIUW-k53w<_W!yPYc;Ik{sB_dAjY*4+cW?)-irJa)gkhS2zfpk0=4HODdik%W z%v`Yi{Cv(BCRr`v#*2$R1b6tH3Q0S@TyMS|ufW8HtE(e8cbqvDn%1~J;jmbN=C(CH z%o&$gnLa358$FZ#(W$xB2UPFwHWI%x^>&bh+umw^oevfpo*e0xT$)#-@nON^771A^ J5eWeXYXBZ@aLoV! literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/panel/tool-sprites.gif b/src/main/webapp/gxt/images/gray/panel/tool-sprites.gif new file mode 100644 index 0000000000000000000000000000000000000000..11845e66c96040e4b4e67a50e9052ce02b58bf0a GIT binary patch literal 4464 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 bDyFN53{pQV^w{PFR1A_M;@ZrOU zk3jGV1U`TM{N>A+uV24@1A_10zyJ90C#}q}WS5eO=kFvq*AsijL3o~JcpmZ-+$h~ z_Wy_3jh&1fGyeT$7yAGIfBVLN2O~0szQ_GbNqF=$At@m#iKWO-O#2ckbM|ckkYV2M-=TeE8_mqsNaQ zKY8-x>C>mro;`d1{P~L)FJ8WU`RdiH*RNl{dGqG&+qduDy?g)u{f7@9K7Rc8>C>mr zpFe;7`t{qlZ{NRv|MBC;uV26Z|NqZ03PwXBf@$o)cwxSshn^Zjcn9V&RP8L0FYm`zr zF-J4_@BtqFqE}~TCMvM8J2W#LHMqdkyx5~ZO2Wgj@$zy%O@mgh&{qwdoSU-FS|uj5 zFee;t>NWV#*tj|4yq(5uv$wYxdAUx^)!u&4fsN(UtFxyQ9yB$v{^#>hSg_&YAx<_W zjsrUklUcfCt=nu8Ha#dLpePP@EVyV)&v)|Zs)y^;IFYNgE5 zZmqQ5er#{__niA1bK9T&t=?L2^I)esd)@4x1ujycUf-(#Ro2S3G+xPe9_t%f_uiyXw)3^T@#S`k7KZP%-zbZIm zK_j=)kGW0!MiL8~?}b{(HSo%PI)1&kOz~ zsj(p9ljVy!9nWUInBOh8>c!$7r&k$Erub!LE^JEj(wH%O(#;ji<`+q=T0W^MYSoJ6 zlcH9xT)pVls#Vi>8A)lcS#!?n+1jLMSs82hoVumGb{`w}n+-eOY2|F3DYrU%(-FPf Vnw!pBS!->%{EX|yRz^k!YXB4;a=8Ei literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/panel/white-left-right.gif b/src/main/webapp/gxt/images/gray/panel/white-left-right.gif new file mode 100644 index 0000000000000000000000000000000000000000..2c9e142be832aa2b1bfc7e5df32cc70f5c721c6e GIT binary patch literal 815 zcmZ?wbhEHb-j`MZjT$ M!a)WGCME`J0Q>YT`Tzg` literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/panel/white-top-bottom.gif b/src/main/webapp/gxt/images/gray/panel/white-top-bottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..8046089a9de7680673de4bc9dbf45ffedf72aa52 GIT binary patch literal 868 zcmZ?wbhEHbWMt4`Y-eD&e*OB58#iv-HPoF=3 z{^G@pmoHzwe*OB*n>TOYzJ2%Z-G>h!{{R2aFbYOPVCaW{;!hT!C;l_&fV=|A6AT=V z46Gg<3=bQd*?7b>JQ^4dGBUGr2}md?Ff?>a7-!u%v2pS7eg)?)8P7|LTPAA+uZlUj WY3b?d2Fa)9cy3({T}zkmPv^XKp1zyJRI`~Uwx!zdUH zfuR-xia%L^PX5oJ19CVhPcU%YWiaHBu_$Ob*v!tU5p!b0!$V90%5EkO8qa=t4qF?&UHs9h zx!&8?-Q8V&|5fbiZTaz=8je=Uz7buWxT-_gJoe0&70HVom6`8){#=$i+tB!M%*mfi zo}cG*==yeIqlsJh3T>~Lw;M{GTQ(%ii#Y5qd&{t+`1QTH(hcwLA87v1$H8C?08ARV ACIA2c literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/qtip/close.gif b/src/main/webapp/gxt/images/gray/qtip/close.gif new file mode 100644 index 0000000000000000000000000000000000000000..69ab915e4dd194ad3680a039fd665da11201c74f GIT binary patch literal 972 zcmZ?wbhEHbg)|NZ;-|Nno6Q7{?;gDC_Qf3h$$FfcOc zfE)$N6ATu z!(r;m%j_$9KP-wo!oMF4bR^Z#pCLVEt6JIYJY>r`(GBHu8TKMAH hV%craN*NY1aV$`Fvrs8ibZTIkpzPfzqoBZG4FEi-n5_T+ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/qtip/tip-sprite.gif b/src/main/webapp/gxt/images/gray/qtip/tip-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..472c4c25a7ed21fab3620f0adb32a08b294ed3cd GIT binary patch literal 4033 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 LVMe7-@#+5u3K;32 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/s.gif b/src/main/webapp/gxt/images/gray/s.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d11fa9ada9e93505b3d736acb204083f45d5fbf GIT binary patch literal 43 scmZ?wbhEHbWMp7uX!y@?;J^U}1_s5SEQ~;kK?g*DWEhy3To@Uw0n;G|I{*Lx literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/tabs/scroll-left.gif b/src/main/webapp/gxt/images/gray/tabs/scroll-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..bbb3e3d9d35fd19b61bd8d0a0bd5f42dd3e82ccf GIT binary patch literal 1260 zcmZ?wbhEHbRAJC&XlG!^&(E){taSMA(ACv7Wy+Lw>(*VncJ2E0>o;!PxOwyDty{Nl z-@bk4&Yin=@7}w2@BaP!4<0;t`0(MQM~@yqe*EOglc!IgK701;`Sa&5Uc7ku^5v^n zuU@}?{pQV^w{PFRd-v}B`}ZF{eE9hB(?)aQ7{?;gDC_Qf3h$#FfcLb zfE)$N6AT>x8CW@FJT@#i*v!GL5p!b0!o%$Xo*r{NHZD5CBxW3>qp)c4@qPu@2^td? zE;%__!?=g%;HIUgrz^U}&G6j3>@2sk-C{6l>y=^}2HC1i!~*t=M0VE{$9P zi@oMX9bDPII>NT+#;mWag1Hh7cgcDm%xvGBv0dm!*S9s7ISU>il2tHY7tB}jF^^Xu zVRif-KUEGn9iS@@HP6k9*psLqzdu^sy4PXnrbLFR#@1I4+%&v@zSh#Z)nV3`rXetA5}PyR$*!>=zn%O#4ov)L+b4`x5mc->6qPNwhq3GQb~ZY|jP`SiKP)~c^8 zDg&1DY|2hgsMuY$JmhNL$+@pe8h?I%#=gM*|I{_{oBTvi%=h2FuW5Vf=hLOL7VQ83 zpFvGPB8f%lnFtey+KLBF96r--HVasl9%vB>%XrARcCWshkjGny1}Ebdi2H{)@iP2CISUI#YICEc!{DxP$D-rBLG z)A!hqC4F*iCzbjvvm~B&1@DVkI#nfUrfO#NJ&Uy7gtkhxnekCKmrl!-(tI`}weN@8 atb}_f(`IF@i(KAOwMb(5Bvuv{25SK3cQ--+ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/tabs/scroll-right.gif b/src/main/webapp/gxt/images/gray/tabs/scroll-right.gif new file mode 100644 index 0000000000000000000000000000000000000000..feb6a76f0ae36a545fcc77242b53261680199c39 GIT binary patch literal 1269 zcmZ?wbhEHbRAJC&XlG!^&(E){taSMA(ACv7Wy+Lw>(*VncJ2E0>o;!PxOwyDty{Nl z-@bk4&Yin=@7}w2@BaP!4<0;t`0(MQM~@yqe*EOglc!IgK701;`Sa&5Uc7ku^5v^n zuU@}?{pQV^w{PFRd-v}B`}ZF{eE9hB(?)aQ7{?;gDC_Qf3h$#FfcLb zfE)$N6AT>x8CW@FJT@#i*v!GL5p!b0!o%$X+!JPaY+Q7-Q%FB+iH2eG@qPv8va$sA9+SCBOozMC+_uY(~X=Y~m lbWUzm=JUBFY&)M%sr~e0`Q%19%NG+`_f@RuXJlls1_1f>KmPy# literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/tabs/scroller-bg.gif b/src/main/webapp/gxt/images/gray/tabs/scroller-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..f089c0ad65ccfc9be9663e7e0d65f547e9160ac3 GIT binary patch literal 1090 zcmV-I1ikx5Nk%w1VIu$*0EYko000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV00930EC2ui03!ev000R809^?jNU)&6g9W{LbM>#G!-o(fN_^;Q z;XiX2Giuz(v17)60@ZmONm8Raf$lKkTFJ5{u8l5ZVss}^o;h3-9llhVv*Am50^{NA z>GLL0pYa6F!?~}i)2I9Xy<`d%s?>Q(ao*d?H4E2!QjLD~`V}lLtghIqc)51wCmZ?pV`H@ENKz=Nggb+zuJgFS zp2rmq4cfD2#yB^=)mT{LYSw2rqnk}T3vG0TZ`;0&JGLu%IMoRsPF!8#;>e`}b@h%Z z^5IdZ{@eFlc=UGy*%|G*b9>I0>;$48QyH@*%6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV00930EC2ui00RIq000P10C9m+Cy?O4f(Q>PG{`Vv!-WnbLY(-p zB0_Qm(Gg@v@Et*U1m}euiAyA|dg)G{D_O22Ib89?<&qapm%DGi)OjQJj~h8;|Jadp H6%YVBg5#z` literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/tabs/tab-btm-inactive-right-bg.gif b/src/main/webapp/gxt/images/gray/tabs/tab-btm-inactive-right-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..bf35493685825b861e5adcfe7e9c22d331a6e50f GIT binary patch literal 1383 zcmV-t1(^CrNk%w1VJrbM0EYko000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV00930EC2ui04xDA000R80M!W`NU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3A|GC1*v7^V2AVZ2ANwOh0TqRSgT*)2C2rHjPTPs#T9uuWH@ORbkeyV8dShDz>cIq-4*kUAr?a+qZCG zqKr$ou3Wo#^NMtzV1UR_f)>(?$_!=9Z|HtpLX$<4*hdndZxy@S(a2VA)EmhXxmUtUt4 za^}!M&U+rcI>zbNvwOs@y}L#3-or!xOji%rx%24Lt6$H)z5Dm@;D7`cXyAbeCaBFH-H8z=%9oaYUrVeCaUP7j5g}%qmV`_>7ZqiaYU-(|rmE_ythVavtFHb;L(D(4)@tjmxaO+suDtf@>#x8DE9|hu7HjOW$R>*{ pGUT}8?6c5DEA6z@R%`9G*k-Hkw%m5>?YH2DEAF`BlEY3w06PxN$anw% literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/tabs/tab-btm-left-bg.gif b/src/main/webapp/gxt/images/gray/tabs/tab-btm-left-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..c41cada78932294c367dfe3da5c1f6789a920fa2 GIT binary patch literal 863 zcmV-l1EBmzNk%w1VFLg%0EYko000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV00930EC2ui00RIr000O)0M-3-C6M62f(Q>PG{`Vv!-WnbLY(-p pqC|@n9mX3dZy>#a_6Fh`m~Y^|f&2#g8~Bf#tAXTPkz*GS06TgxpfLad literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/tabs/tab-btm-right-bg.gif b/src/main/webapp/gxt/images/gray/tabs/tab-btm-right-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..96d2e5eb8a519e15bf48608df8d4c5b5a92ec7d4 GIT binary patch literal 1402 zcmV-=1%>)YNk%w1VJrbM0EYko000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV00930EC2ui04xDA000R80A2l4N3fv5g9sBUT*$DY!-o(fN}Ncs zqQ#3CGh!5|v7^V2AVZ2ANwVZajwVy8T*n4zqDYe}O?q^x)2C2nHjPTPs@0BDuWH@ORbkeyV8d4ZDz>cIqGZpiU3)Vv+qZC6 zx{XV>?#H=y^Xi?5cdy^S3Ht&b{8upH!*&fLUi?-uw(>hI~UOiJa>(?*`!k(?vHSOCWZR6f;R5tJ5ZG8hDE>$@3<8qB7Urtgt z^XCPfLw_zXp7rb4vuoeZy}S4C;KPgmA5Xr#`Sa-0t6#5PpuG3++*pMVAms6hM_YUrVeCaUP7j5g}%qmV`_>7ZqiaYU-(|rmE_ythVavtFXpbD(kGWy28yrxaO+suDtf@>#x8DE9|hu7HjOW$R?}o zvdlKiEIGD1EA6z@R%`9G*k-G(u=?z`~DEAPDY I${P>>J76Hy3jhEB literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/tabs/tab-close.gif b/src/main/webapp/gxt/images/gray/tabs/tab-close.gif new file mode 100644 index 0000000000000000000000000000000000000000..98d5da9528411ee291e0548246d9c86a82455d32 GIT binary patch literal 896 zcmZ?wbhEHbJo2h-f@WP;TO2Q8ZC-n3TfI!6I*vV6fon wDRve~6%L2VX-sT}ybKHr5|%U0VVBS`*swq&a1L|0R%~U!f`d&=%uEc{0N$%ghX4Qo literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/tabs/tab-strip-bg.gif b/src/main/webapp/gxt/images/gray/tabs/tab-strip-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..040b677a52f9a5eff89870aa31d1874765ea5a39 GIT binary patch literal 835 zcmZ?wbhEHbWMq(HXlG!!ef##EJ9qBhy?gK8z5Dm?KX~xq;lqcI9zA;e`0SnxjEQ?q`I@C5s=a;ag8W(E=o--$;{7F2+7P% zWe87AQ7|%Ba7j&8FfuSOQ!q5JGBmO>HB!(uFf}kZ+p+j0P#=4Vr>`sfH6CexDft?u z8*)G)&H|6fVg?4eLm6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV00930EC2ui0096R000OV0Gl<#*3BEZaO23CLziwHyN3`XLJSB1 EJ2X9wg#Z8m literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/tabs/tabs-sprite.gif b/src/main/webapp/gxt/images/gray/tabs/tabs-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..1901b231b007616143c945403e60d961f41e3b32 GIT binary patch literal 2109 zcmeH`{Xf$Q0LQ;ZOddAN!(v@TbTf3+QC^++C1EKie%(+0&*Z1&L5(D3l^=;-L!*qA^d7#|-O3WXCB6C#mFEEY>75~)-=IXO8sH6@eDrl+T8 zW@ct*XXobTjiz=0BX=zEVRxd9vudJ-BuCA`Ft!XqG;QPKC z_@5cDQR`@byM+3NZ%qJT4e%Ad4{5w?u(lzB_ptP7E)=6<4XwvL18mXp!=3eI7!$ZZ z39*+|-UWsGRfl!4DzH$vS7*uIhROpFxTkcutD%Z-40i`_+Sgd!YXo=OcA~qn=B**z zWzXGxkLdjdaHsf@?njIu1Go)o6ZUa!2snyQ-+AXO^LV4}Xj_t_3N_LkGb`N0NOuY2 zBz^+fe@st_YR&y@PiZ+83pf%>brE{@*-m6 zqo_erlq2Oe_3_Dp%OQ;9>&GM8$Mh{i5j{{_;-^lsW5hvg;0owX8TS4`wl6_nmvw5a zhuuO1ETAOK=0k0*89G`hyI_7Bdqt%WiahMgY5TIWWY!tM<#4`+>7!o8jNcv5`FI84PYNgKdR?m`H9rRz+Tlal)cT}xsn%rrq-O0q{1 zGdJv*l9uHM?&cB9jwVc2P-8=R1bEuiWECyvDlzi`1&OSwtQ`80PQTrqz^Dq>01Srd ztI!0%hq`2VRz+IR5rdY=!u@?h& z$n0x3-=07>t$wD=*uifLY)*kqIz5Z~eCUXnI=T{3cxjFOIKI%=j=V+Fd-Pb#li z^vK3Z4s}byJolNUPx%;U^+aJ%vRXuqt5b_h(r45XTFPg)KS1p1!+!$QOXmUornZ}C z!x!EKXvkn&0U9RpCZo+%ZDcfD&!-S=Wx**#|KQ+Lgtl?#6rrE^@oy{d{R+9YkR1h~ zE?!FI6syh=BZ`+!-_%gl$)z01azg!O%1SIRg0dRj>qGg18;20rRz2O>ntpA;f)3RS zl*}iL_zP5~aBtlke4;2@pthrWudm~0OL>);idY>!i7Emf?**2a40ltL_G%oWr0F4Zah zDE0?F3)7&iM_qo0vv>~M<6;a0{be^{v*GW~fZeR5{AVyd&-YvZ4Jp`f3-ulOxy#-V z45ZM?-|FfR?m)nVlxihePiL;_m}Pfi*0qWjP5=M^ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/toolbar/bg.gif b/src/main/webapp/gxt/images/gray/toolbar/bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..6789c88b2a8e7f5cca28867b2132d601e6d924ea GIT binary patch literal 853 zcmZ?wbhEHbWMW8R_|Cxa?Af#D&!4||@#5vnm#<#Edj0zKn>TOXzJ2@d-Mjbi-+%b< z;s5{t45MH)1cqq{=z#nM$_oq}Rt(}g3=RSg4b6-!8Zj0N9x^ZqD2vUAIM8sko83sx j;lRe^rhZP54jIo)OHNMK2woL)a?{e&(+y(TSQxAUS;smO literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/toolbar/btn-arrow-light.gif b/src/main/webapp/gxt/images/gray/toolbar/btn-arrow-light.gif new file mode 100644 index 0000000000000000000000000000000000000000..b0e24b55e7ee53b419bdd5d769bb036b19fe9592 GIT binary patch literal 916 zcmZ?wbhEHbQ@i%X_#s+qO5ao&#Bg}b_z?(JW>fAX3`Gd3KV zv*q~0?WdOQKC^1y`Sph`ZaH>k$H{AZ&)(dB?ha5d!zdUHfuS4%ia%Kx85kHDbU>Z} zernn7GpqKUUw`Q0mSb0ToV>R8?9Kh>?)?A%A85cR7!84;8v=?yS(q6Z7#Vax zUI66@296R2W)2yT4GRu7a|mm>STHs?w+nNawPX}9G%#|o>fAZ8aq;nf1?Mgq&rM5C zPSyxs6?1aa(*sN*0#Y579~gX_Ir7AO7EE5yG(%Y4FT%k%!-dUUH;Lzh!*aJqzAC;N dg;0f-Rg6jrr6;$pzP>);aF?w2wgd+TYXG#xTAcs@ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/toolbar/btn-over-bg.gif b/src/main/webapp/gxt/images/gray/toolbar/btn-over-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..ee2dd9860c799be6dc194b387c36a953c55aac59 GIT binary patch literal 837 zcmZ?wbhEHbWMoKTXlGzJeCy}&J3mj~|8@T1uggzJpf;!hT!Z~imrfcyl?6ATx_O l3y+3|gNw^!V}P zr%#_gfByW%ix)3nzI^@q^_w?u-oAbN?%lf&@819W_xJz*zyJRI{}04K5{!XHj)Kt; z7%Cy4_>+Yh5$9Jd%486*rY9BSaXJ>!E&dA8fU=090ubNf> literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/window/icon-error.gif b/src/main/webapp/gxt/images/gray/window/icon-error.gif new file mode 100644 index 0000000000000000000000000000000000000000..397b655ab83e5362fdc7eb0d18cf361c6f86bd9d GIT binary patch literal 1669 zcmV;02738NNk%w1VITk?0QUd@0|NsJ0|X2J00{{R5ds1i7Z(~66B`>G9v&Vb001Kp z5h)oOFaQ8I0021w0Y3o&E-fxEFEBACCN(uSJUcx_0Rc|{08I)CQ~&^5003P90ZlnN zZ2HgaR#tRYR&iNbdS75? zU|?otXJ=+;Yin(FU|@V`YIb#ZeSCg?et>}h0EGYmiU0tO0055<5Rm`?kOl^o005Z) z0GmN+?~005%|1f>7~rUeD5005~41+4%8tpx?M0RglK2)Y6SybBAy92~17B(5YS zt0^g|FE6h$GP@!ovpPDDN=%4PP>)+%g=J@gYio~fZHaSpjd*yLX=#~kY?O0znsITT ze0->1U$sL+wn#|6N=l(?ZKHd8zjAWJ0s_Pf3(Ero%L)p|939OP64C(y(FzLN0RhLMcRH8%DjAoeXS{Ujv)EG+gtJ^wQ^{W?3v zNJh*-LCQ@{#8XqnUth>oR?f~+Utj)HQ~z6A@Lyo#VPouQYVB}x>v?Q{t%gd(L*0R{xyxG~vlatYag2Jb&>V$^kk(2*{ zf&Yw*|C5vdnwsaLq~@lni75b z|Ns8}{@~x^A^8LW00930EC2ui03ZM$000R70RIUbNDv$>R;N^%GKK1uH+KXhN+gI) zQmI(8v}vO?E0!usk6NLdNb;LSjN7_}3)gKMEm^BfQ9=}oWJFkzOv$3fZRN_A+GfF& z32BcxoBv$pj74i3x2G;S3XK)B)FeoEmXWL#snn`jv}gsDrLa^fQ>tQ`viiu;6mb&4 zIih50RjgR4R9RKTR}rL1lO$0B9ElMiAmt)9>blUBj4Y5687efWvLQo=T3ms|nUS42 zGT05w#%K~HN|L}(qt>OeA3m=K#Zlp_nV3Y10NJUdgV?}Dj3P~n6lR(~fAPA&<^wy< z3SY;ip*i$tjvF;7)cwO(hY@E;pU(dEJAMvK96x^EuyA(#I4D2W)wt>4TNE8YjvOf} zG)mrhfAgFX#~WKj)1E)1@X?1HY^b3I4=}g`${ckFf(Rmn_^}B+|J5T5Fy|aN${TUW z0S6mQFhRr!;UgPsq@e^7N-V$&6Kb%bq#Sa*Vdfi^>~mm0dsJzqm1!)YL=j6Upi2{A zuE7S7XQmMhKT=kc#-N0zk;D-~AfZ4mcqp-i8dkz#<`P*@Bc(t0{IW!$Ngy$V5I-1@ zizZxdisc(i!~o5u$IbJ_rv6JTkwg(c{D4CNyI4a65=m^j#u6#8*Ipi;`17AUTJ(BE z5kdIy0|yB7l8z8W9HFeL2U?Ou5|`ZbpQ}X_F@z60{NTU@$Nckz5JFhX#WM$9V(qqN zczc{Zzy$F_4?N^RzzK;Blf(}}6cGhE|5-BcwnvOnPkU1IumcV|U{F8}13B@74?zS0 z#dwzlam2`nic7|EPvkH$4mJotfiVMJGlaxG_)rEWKMWD>&Oe?)03;wIQ58SrAhy#rm+eCjRSRuH))@dW!7dZ& zW5o_u2R%03bq^haWeql1000EIv_ld+Sb#9`4TvW`^x8Ju-~j^zOmNFONd2>m2p`;_ zHs5>m&A|f!9AH8(f>-{JI5cc`2#jD0Go}*+k21NqFv0{8KoG$M PBfNl1GVhQS5C8x>^BLCH literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/window/icon-info.gif b/src/main/webapp/gxt/images/gray/window/icon-info.gif new file mode 100644 index 0000000000000000000000000000000000000000..58281c3067b309779f5cf949a7196170c8ca97b9 GIT binary patch literal 1586 zcmV-22F>|LNk%w1VITk?0QUd@002Ay07w84PX`%A3LHrS9ajJYWB>?a019mY3w!_= zeheW`4kS_$BTNt{R2C>w87x&AE?6EhTN5*F88u@cHent&Zy_^VB{*RwJ!T<2Ybrfu zEanAeNJ0@02_k<8;bxSjRY)#049Cl8e5Y1_tY3bkWN(XQaEfVlk7;?7 zZF!SzdY5*8mt2auc!8LDgq&lBt7(C!V~et7k-lw{yKsuMageiql(2i8y-tSTQHA4U zhskM;!F86%bDF?tGlSHx~QzWsjj`Ou)c+z$A_QDf}_NMrOt$@%8RPR zi>%9lsM?CJ)Qqyzkfy4!pytE%CW@Nu*TlB$=|re)xF5pzRlaC#O0*M=&Huzs>kT8$>*ZV^`Xr3 zq{{ZD&GV%F^A_)Y{V6-P_#W#@Xx7+U3jK?!?;j!ruDO*W%II z<s1(&F;b=Ka&^{@UjA-Rbn(?f%pA|J?Ea z-}(RG-{a%sWQF}}=T6!l(LfBVqwLzTzdz--gr zA>~JRUspdjz=SD#uW#3T=*1z15PotP*O<}1TXI=rW8fk~GqY79KP}1YrcVGlvzs zDl$nW+ZJ<7GW-rh3M7OOB8UkZSwRrC?KL;(Q+JJH=Ywg3PC literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/window/icon-question.gif b/src/main/webapp/gxt/images/gray/window/icon-question.gif new file mode 100644 index 0000000000000000000000000000000000000000..08abd82ae86c9457172c7a4fdbc527641cf28e48 GIT binary patch literal 1607 zcmV-N2Dtf0Nk%w1VITk?0QUd@02fyP7F_@vT>uhh032%o9CQF5e-A8e03mY#BzglW zcL_0l6g7B5MoUafO-xQwNKjc)QdCG)VMGais%VD1YKp&Yk+f=&xOI)E zaEiQim9}=7y?K_jd6&3+oV;3t&|-(kYnQ@tj>UPC!+4gSZh?S#&mcD?Rw3D8!n4hVIpuCNxypy7?lBc|sslAz{ zv!1E8nykH`pQ59qrl_Z?tE#T5tFf-Ly0EXZv$D0gx4OH!y?~j^f}_NSpv#4+%#5bO zjit(rsl|+~%!H%Tg{shuuF;CD-i))_m#xK;uF0IQ!Je+okgwa9u*sgY$DOs#l(p29 zwb+%o+nKY|oV(kBuJ?(u=#RDcm$&DYyyKX=;G(m`qqxkgwZo{l%AmW~pu5Wy1~n_!_~3H*|^2hyUEtQ&D)~F!=r_S`L&GoF&_N~(Sv&!PL&+@j??Yq$Bv(odm+WouL^Ss^uzv2JK z#>vRX%gf5m#L3db&e_e*)63J`)6&(_)!NwC+uGXR!PV)++V9BJ>B`#d#N777-1y4d z^3d1g(%a?H-|XGp;>6+p%jEve=>OE=@803%+~e!f;quVt`_t+E+2!%y==0m`{@(Hb z;NRop*MI`>g(&|>+<34{Oa!Wf0xe!3Pge_@yBbqQDAy z^yqLDY^(Y`Bgb#Yy&t*SHt<)MmubQE= zM_%4K|K!o54GAF7UTBq*Ob!?g0o7_ijR4L$#5Cl7WQu5*Y1Gi(Bmg6D)2&N<*T z_(l=0(9+Fy7{;fLf+vi?iGtvWSYtTY0MiN@9f&f^H7LmFMINyXBrZBDyqCps^d=g7F3EF65lHnZVrI>UYlglJe zU~oq>afkv8HsRE$YQu zh#-bkqRKD4cwz`3RWxA(1Qnd&3}YuvgUT2`;GhH*Q&3SwBCD*Dh!i~7&_D!W@DWW; z1F;hgDs>bA#0Ei30Z1pS2x5T)7=Y0SG)EyV5IfR9lMEkstO3X(t9(I08OcCnvDYWD z6Ol7qAd-p~6!7sjC){4MV~P`tbU^{7d>1~=99ZDpN7scTEv^xRGv0Vk((EBd#a;&l F06QAMRrde@ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/window/icon-warning.gif b/src/main/webapp/gxt/images/gray/window/icon-warning.gif new file mode 100644 index 0000000000000000000000000000000000000000..27ff98b4f787f776e24227da0227bc781e3b11e8 GIT binary patch literal 1483 zcmXAoYc$k(9LB%H%(yfgGuR9b<4z3ocd29*O43CNd(`UWmQ=H)a>`a4DYpzOx}c(x zSlvdcWJ?+unZaR-H7>b~v1S^TyJ_?Ptx;{_9t|N0Ki69nENoJ2v3`>&g|W8&busa_So7*+dD)$ zvLc<>kt@t%F{f~h9qzG`vt^ZG;7|7JumJBhJ9Y+8Lf4suZE^fH#5_9C`L|tWUS6U8 z{=uOE0fBzowgqiH9`W<?y6`^?T9Sbi>kIro^$r3_Y4hFwk)R(#Q}G+VFY!jG?tX{A@K zA7Ak-yF;xiAyhqNys9yLRL-ovzEyCSA}UpDxeZO_LcSl+NfU}@28A3*bVbNWrHA>fZ4D_larvD z0o4={9|wFI(DV=ZJRp1#nxdfzI{Lyuvvho356v%?4p|^%j&Mta>}F3~{K0|F!GZpTzVLoC6_EgdgTr?dzB>V$ILvD;-4MrIlR(m27G@h~>JlYZ zVAt|_ro3YUVh;qD&xzwC(+MYO@wD@Y_NS8}VxR3300jn*@X<;}{z{$rL zTQ1Ygt3r~JNZK6NqxROCFAF5#=}AsXB5Gp!SiKu3HLoB=^T~;XI#AbK!S$~9M1UFk{5%nyiu}%*CZiIbNf<7_U*)eK2jmJEb7FxOYX=;RObGwm=_w(}-X91Z& zqYL6B`%{}cDrkMSM*JWx2`jXogS!VNpUr25HWVJ_hwMpzlk(}y+|3YZ)%_6gfm?u*PI1fu~NtNN%<%o?1bnQ|HcP z+A{@eE%wEmbNMT^8Mo3bU$&{4r}IL6UfVqFo%2t*Tz4deYD9aVZE~6`7TH{nSG#4; z<6vfan`>!V4h5%@)!a#Ahc&Ef--@I2iU;@wEYEC-zjIsI(0PM(`f?qQqf=C&8Tb?#p4A}3P=ZzHb8 zU%2?008r{GmdfTSw5X-f*JnevxfSlSM{Cc=no(Hy6^Zi{dugQHUH~t06Bw zQt4307HjGF&8-z0AF;fZZq8-%?^|4nr#0y83LDz+toN8`gZZg2p9Yd5@bP-%L)8(V zUmmP8OS8yf(llyk`BV+l3sY@pR^S)K>*+DB$}jc0e)m$1w?{Mi5Ahq5K8vj4mE(=f iL}jwpve+-)v>A%!R(IJo>4b>g=so9eo`c7&i8E|4C#8^5=NEIEGZ*dVBLA=Me>g z)`y;3I!uze@8w*I+QxA5s`Cw|J)L@KofA^{wV(XpRyy~5kLCeSz0=kIv!0jeT0CFk ztSyzC5-G;1_+~+WUs%lb&}WtZ%C=m;7S(AuFYT@D*04aYy9=jWQvTO0X3A#y{GcT7 zmTSz$b*^*sfp%j68y?N2)_by($DQHI?FeI%nc{+Zs*+J`Q3Bx zJ7GddRCK(2Qe;f5e1bkkK5A}=E?lmOniDQ|Mo>gp7Ws|F-@RHzfS)}G{Kb|iH9;aL z#I^}koQ>G30Dq@gfu0x-VhfrvxW^jTii?YJA7X{GOdxOb3<}q(1B*2H{M5NQExNKieEkPwfNFphhq?5ePG8(JsCYXwQXa|YQugR^0aGWdwayZ}FA z9TDOq<|E-_L;pZb!Car#cz+%VPa*2 zYrjx^nn>Ki(W#@e!p&Xj@q16N{sX)R4jMLmgvNj5sDMe61E)+4`e@p$udyFENeiIuULiLs64z8ZJ6pz3q)}!`0l=eX$ znH@6w!(2y}JOYOePl|j{6$JC+#TAF5>5dz`IvRLQm11|@kI6SFQ%Y%ZMSm)k3AWA?h9s~F^K?~6MX zk5rp;Dx#c&Xw%2g>9EP`m)`0%6({Q$)F`^hpa<7{9!tlqZ@5xC`nK+=p`qF&8u9|& zKVnnvuyy83UeiO}#hNdsGAMm}V5fp&*P0o(j}%Om>O4LQeCcBHe{jD0(E$dV6AUVB z@n~3M8nx^=gI@5e8C17trhVeA*Sgg7v6;`^WHt<{w~1j;=?NqgCEqDn=)<7hLynlT z?9oC6gYrTe7-Ty7ltC>$CJ_HO@xRW6tix;{S$SN;sp(f1b%~S&eO$NJ;qmnmMF(^H z1yuUo_3Rax-{JZOZ=~Cgl9_98tBVkYFL>^rr`TJZj~3%wK!PO>3*6B{e1|6#)t@*l zJ=RAe2-zR2xZ$*W{;cUgm-%`Pb3Au1#o??>=@xpoe{=s$VG%W(JoTpBojbxz^STb4 z^lJ->W22Adhe60d5K!5r6JAd4}AZVX6u2Q zcu9ugp^;0cv+($6Q7f2eGZ+%Uocz{mv05_x)@@mI2{ zs_OH+>h}4rbI=Brj&?Y6(0ffrLC5r>)%htIySsJ%WPDYV`f`^iH*)8V7~)u!T{h6= zLHb&kz1F9-IZAuX@i#m06L397dQYjS^-`3m^@8Fvp zq|)a>pW~N5tg^1TPz9^-PzVkMs8J{b+fTtlB0qm~YJ%HuEe!XXf9u%moeTqu{-!XD znvF|P=MWh%3_vADV{wKh9~LtwMsG&emXx%u25l9Vv;R3{kWF!W(-$uUC#EYFI5Cj1 zB^0$V%#q?^dG3VClPSB*;L!XEKS-v4@bc5jl6R>>e1q!d&2G7|v9ZX``W4lX)dA<< zr3xX5Rg)7EymQOS%8;GIE2^rd<&KB!9 zte5g!?}HYF`rv8lxL1IN#pt8M^*BxC@LthIn;O96 z`)L5B?bVR8n9L#iR#X%c<8WMxX9|(OJ|rwEJUZSSpun#?mbL=iDzNnXZ}1Dh^nl;N zSjyS`gxet$pEX%VBxyoMgS^?2dYDq9ko)jNO7Q ze_ig$ZNZyHxh?oN8|8NCUor}51h_v7OFkB0Afd?8xRN}kM(Dzejghu1^0fAf4O&&E zW|cCt^o-J3v7u5KP^!((&e`?s6QRcvr`qrS*xN#Ov%H|tX}+qVcuVcM72O@DIiIU4 zDpL;B2ah-A6!q-b$%IWqr0!5oj^?hcm3Xz~xYq(=Vm>~1@$oTp**$=l1BAt|zq`41 z3)o;m;z~Qp2OqnE*f{XwfhEHZR)VmY_N3lLvcp;7e@3g%@2ptXM^rlH%VYs%xm^uY zz`O2iRTLKlZ<>H0c&mw|S52g=$ak55Eq^Z)JuxnDqzje{_`e3+1`mphu+L7@_7Q80 Q4TNQ|Z7XKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0000gNkl*8o|0J>k`RhGh978H@y}fymw^>2t zSYedRA@1lBvGysmjVr$7H8D@%JJ9P`JAlV--Ng7oL0OqvA8WUp!eFZf)`>l-}fGw zvUT0-{(#<9PCXwV^?ZIERvuG#d}Fi-&?Ok)f0Mu=yZlq^E0=%ImpJ}W+wEW9K86F% VL2+p=XLUfTJzf1=);T3K0RXZceS-i1 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gray/window/top-bottom.png b/src/main/webapp/gxt/images/gray/window/top-bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..2887f063e81658e8462a74f4a9d3eb421b5531df GIT binary patch literal 2860 zcmV+{3)A$8P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z00012Nkl;cx_fy!xa&u zp@@7$RXw@?foDlwKoA5$5ClOG1VIo4K@bE%@LF7%+0oq_?g0RS%Ml3-9e4@=0000< KMNUMnLSTaXcuOPz literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/dd/insert-bg.gif b/src/main/webapp/gxt/images/gxt/dd/insert-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..2f63b1475745d63d3fa2bc600ad02691895852cd GIT binary patch literal 54 zcmZ?wbhEHbWM&XzXkcUr=s)%U|9{1wEQ|~cj0`#qKmd|qVB&RQnzp-Qd4%_ey)SY! G7_0$={0|ZU literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/grid/row-editor-bg.gif b/src/main/webapp/gxt/images/gxt/grid/row-editor-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..03b3b2cb348d73e2cb77beba34ee632b0afebb09 GIT binary patch literal 819 zcmZ?wbhEHbWMN=oXlGzpuwcQFBS)@2`S$haUxraI8UiCM1QdU=0Db(QK?me-P@Z7m Y5MW^D;4xV6fPs;Nl_7#dL4m;<00&VK7XSbN literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/grid/row-editor-btns.gif b/src/main/webapp/gxt/images/gxt/grid/row-editor-btns.gif new file mode 100644 index 0000000000000000000000000000000000000000..10668edea8a6c65beb3d1c98d08ba314fad011f3 GIT binary patch literal 1087 zcmZ?wbhEHbWMznDXlGz>`0ub_!GcYjHtjfkVfV4i`%m9Eef9o@3l~n^d~^EN+q1Xd zp1bqz{M~mK@4dft|HI`6AFe$7cyJNOdGhV*lW*6ae!u?g`;8}`Z$15d|?{}Vmz4zkl{g>ZvzxZ(nh+h7<`|`)VS3mB*`tjh^w}-F4KY0D~;hUe2 zfavYd$8UZ-e*5#u+aFKg{e1H7*VA{up1=S3>^+eD_2R>?mmhz>`uO|xr{4^tU^E1% z9Ri9!S(rg)>VODPo?zhk&rrxAl98am$HfbygOt&oOBD~x+PJqH zM(k)UJe12VoEKhGu=-H*Z4uc!i*7vF#=^E;MQ?|!;=#2Y9C^+T1>BDsqxtymWMw=s zV`kniCbnbkf`n40?IHp@<~kgB%dnk+t%g-0Y|Wwje9i7MetX)EK9-zZ9P@AE&J)j7 z7cZW(Z_}>RuMIa}zEih(_qq4BhnZz$?YHc?_}TNaaqRysdw+9b HEDY8F)M^uZ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/bottom2.gif b/src/main/webapp/gxt/images/gxt/icons/bottom2.gif new file mode 100644 index 0000000000000000000000000000000000000000..ec57dbb9cd7228fff986c71ff4633d522368b455 GIT binary patch literal 927 zcmZ?wbhEHb6krfwXlDQcOG`@zo00>EP98sb?%Iv}x9&W=d;iIUM=u^ffBoXs``2$j zefaeC^Vc8WzW)L%A0pdm1C1s+0`OCH>RGR%E_iQqw|2O+bj+? zxf?q#tDc|B%*(-RFl7bfVm3Chh$sby%gg-P`DR#|I)ttYW*53~N>n*~UDW=rzfxsy QA{d!?SIPcRP++hI0IK#;X8-^I literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/columns.gif b/src/main/webapp/gxt/images/gxt/icons/columns.gif new file mode 100644 index 0000000000000000000000000000000000000000..2d3a82393e31768c22869778698613b2f5f2174a GIT binary patch literal 962 zcmZ?wbhEHb6krfwXlGyuEL<5_v@*CDh*pJ^t_~?(6IQl1ymDPc)rN@bjZrn5V(PZU z)NOSrd+hMvA+B+IeDltP)?JCMyOZ1ZrgZEJYkQj3eITRnaL%L?Ia5yNO*xf6?R5V1 zGX)b57R)?XH0ylvoQuVCFO|-_Qnuh~<)Ryvi*HsfxmC5~cGa>w)ywZpoH%jn)T#64 z&D*eH!>(Ps_U+r(Fz^e+YaA8aNxk9Lx+wXJ9gs4iBqReojG&n z?%lgL9)0`&|3AYh7!3i+LO}5+3nK#qAA=6a7*L*I;F!-K%OT^jVZp&>mh3YgjfYq| z1(lp?K5S5QW|J^Yxp3pe#^mFCnoeCZo|g`B%4>LkiP*V`#cPUi%)1K8vI{DjqJp0*huu%~roJzC1V7qiQ)z(xVq;t8Q*e g@TwP&*%vbDj%DY0^FxMh_Sd^OqF)Bg)PDm=<4s**x$gy$?NU%^Y!@f^7Z!j z`Z+l{$H~qBJaqs6{{R30A^8LW000gEEC2ui01yBW000DA(6vcxl`8AKC;DI*PDyE= z=X9*=(z5GB%)~M;Hcd=IzxcSGZ~_1)PDm=<4s**x$gy$?NU%^Y!@f^7Z!j z`Z+l{$H~qBJaqs6{{R30A^8LW000gEEC2ui01yBW000D7(6vcxl`8AKC;DI*PDyE= z=X9*=(z5GB%=5C;G%*Q0Z!f;y1OWIMi3{Q+5HS9j3+7}%rT(ndNnyLSb-9I!VLV=x Z$>RxQ&2G2V?)VxmcQ+)K{KOFf06Q|9RrUY? literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/down2.gif b/src/main/webapp/gxt/images/gxt/icons/down2.gif new file mode 100644 index 0000000000000000000000000000000000000000..15e923445b14e0a5341b96ba9f294e129e105875 GIT binary patch literal 920 zcmZ?wbhEHb6krfw_|5+_f9`Z{2x#_x_Uyk6t`}{`$qM_pjf6 z`ta%N=dVA$eg6ekK1z&+!0-tH#h)yU3=I4XIv_8B@&p4%DT6$RgvW*i$3{LOt(YAJ z3C-;S%5E|z7A!i-z^D@?vtz+x_Z~T0z7U5^D#s?Nva3aOZcIHrm6J_rM&|)lw^?Z56VAa*t;VYBwMulpJuVG@5lCl2a J=)k~W4FHxPQrrLl literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/folder-closed.gif b/src/main/webapp/gxt/images/gxt/icons/folder-closed.gif new file mode 100644 index 0000000000000000000000000000000000000000..f1ce479b4045ed49d500824647d0db91a67c9761 GIT binary patch literal 999 zcmeH`{V&u39DqOS*m;RFdO1;EB8qmGS|_zJ(XrZCOKXiy`K1~~Vx)6NUP3ccQ`iV~ zshh8tLSA-mgrd8p&PyeC&hF@h?uC2vDg6)q*7FZM+p|3aTK7yY5}z0fo2vE zw*h4bUu8pQ9`qK$>l{E++4S(kHV$;;!jo%&s0%de$Dc`k9A(XWru~l z%k6nKMxFdqcP^UBM{E62or)_-_}zO>Kzo(~ybQn@Py7+pkPJgr&ZsM{NdR6Z8?>UWv2g z^$sdy5DNXMhuRqSWTDH}OBPNAg8U*!>l}j5@W?q`&54X|tBvwLRds+~k!cneKjRQ= zP6Hp6Jc8_YW{)?ugKrHaPbZtC6@lFYI~$8#%sRG+%(#-s_K|Wz?sG`$Af|hEC@FBW u#e^a$&b8WelNTkpOfa%@?=i|8wIYaLYReWW2`R;O literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/folder-closed.png b/src/main/webapp/gxt/images/gxt/icons/folder-closed.png new file mode 100644 index 0000000000000000000000000000000000000000..caad126826f4bfdafde2ced9ac73129ae0b8d9ff GIT binary patch literal 686 zcmV;f0#W^mP)WdKBPATlu^PH%P~GB7YQATcpIG&MRjH6SZ6F)%Q)s|A<<000McNliru z(*pz&CJw83@S6Yt010qNS#tmY3labT3lag+-G2N4000DMK}|sb0I`n?{9y$E00IU{ zL_t(|+ND!HXcR#d{&w$n@7(0P6o=wZqlFmI!Y-14MX(VpEG)FK5G<_hVv~Si5fDWz zEQ5{O36dtH5Q`YZ#L7q_>Rm1fdY8SQ?B49&&hE_kcF#oPra1J$W9R*R-+pg+1N^6H z{WdN?!hEBH^HKt_J8jHdd4TJE|LN5|c-(8KZF@Nd73Z^mH>$U%3fjnu`{@ZrTU!{H z3L_!M0cDg-CBhVOiePDJW%>QnGbi}KAsjw^7Nz4CVHOSo0toyKu*xj<9~n-@*hTRA zKBg#n$K$}ctFs8ab-Ey(oI&wL(i_6ED5{l_$rK?(52tSv#NgraTS2c7AZPh7EeD3x zKsGO77!l3qP$MI6rxnDBtZDr!)X5tJAdp6kvP^G|M0NRv-d9lN9`QA|M5E zph9$7ZL0ZTj*DX_hw$Y?HLXC=T6CHlDk=CCz;n=L9wNapSfsW>h+;{{>cSeTWmg#n zHd6{5+tCvOUP&%4Z;=ApqP0aEmCs$}x*9We{rRP7eq(y9hut9{wKwbE>W^d9QT;34 zytc-+?sTnJShM-O}vA~e9!qSQkGK)M=b6ayuO;bh( z7|yfhGUvRos5TXEQ>Te}fw3we0bmq3J&BPjivz&ED~sV z2sjhjm;s1J#D3HTR;K|H$7=cT>Ygo}?vP(9z75(Es_YijXHd1J+ZsgVc6m%y3ZPkl z%XfRqygp>Yx}_a;0pl%cNCe@oE<0GOi?a%Y%?OtbPorKQmGl(3DR@9I=`g zQ0G~G-{vb!b3!&PZT0?dvk zuNv~vSXd=weav!3!%furOb_x^>2%ysS0>xA#}UU6^=0v(&ZVdxKu?hmPMyT{0wmZ| z9ekqe`9y0hS_?EUc>1B&Xnmx~b6FUP(e(&%>B(XjQ?HGk>^15YpA`|cLf6h> zPHUkbnnjC!2P|Jh%}aePdE_Bw@Oue-X^0(AhL{$b(UfMMX=%)2{GK|iNM$rj>2(5F zH`N<@PaqcIuN&{`~^( zYa}}W3GCmj+WZ7;(Ey#|##72P0uK_%YY3LcW8YS$cN{Iu$@i3!R}g8)5*<0$r`{=J zwTUSXL4#_z!V`NQ0*{&9Y)7V}%a}pZFU-t2$O)ULUGwiv_vIOm=k*tNGZ>`pTij~e za=||7Z8#C`E_vo0LQ+xgkhpZ3D2n=y&JEi^wy%V0A<>%+dkSKP!-*UrKf0Z5Je}TZ tNB8eeOk`h`Njdy_Zm`C|pR_B2>gpX|Zs+cm63KBY)rm=BIg?BRzdt1)X1M?W literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/folder.png b/src/main/webapp/gxt/images/gxt/icons/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..c5df8d8a1f41b21b263d5829dfa29e7b05e4332f GIT binary patch literal 711 zcmV;&0yzDNP)WdKBJAT%INa(W;#FfcP9F*!OhI65#jAS*C2FfihJXe$5!00(qQO+^RO z0|XK$H3MiU{r~^~32;bRa{vGf5&!@T5&_cPe*6Fc00d`2O+f$vv5yP*{Hac~a&{Wr%_ZD)Zz;MG%o)z34#@b`U%X+fam^ z#Ph(zP$-l!CWC=>qVr&Br^8O`+G&%lYtrN;FWHw=r)5)$KKSJ&-=E+2%lEwp{O1x{ z4P1DDbft#Vjstk8s(5^96xUm>G;<$1(<|=JH8ld)vj_i_kb8nbWgVv+7e_6IxEtyW zha%FpxNQWPhscT2;eHlNpy%K*boQP{xIGS0jFEShU=X_e-`J5rXXrn1`2}p_J#_Um z)Z!G(jWxh!ux*CEUaN2<;Yo25tzS=I=t67oo{1gm%Rs?c0O4Xp%Z- zpp;(()3ON12DTIgyoY7G+L3E%p?C16?}$nXboCuTNB3T|MJR-;M6izT{Rw={KBJ8K zmI9x^amBp4TA;Vu4`z*w6_QQh@-J92f{x;~xLJY2?YD)@gyl8JcW?@-mkHD~vqa`{ zWHJhQDc#%yN}85G%wDkdoa8$!l59{iXXGSsv#}Go5D*}0tV`Qe0s($-8L(oA`P8%SHjuGk&%@0ppYOTwO7TCppKD04vtxj( zk)8oFBLf42;y+oZ(#)I^h4Rdj3>8V47nBGRLn+Q9-(eXZMC@T`q-A zfguTok_rhvuF+B}YGk&S-hZ1Y!QP;7UE)!jv*adK6)hob2AOf}GE&w)<#=MknJHoV zY^}*Md|xE}K6*MO&RAU_^MUKk=Djk=g^pDJi6uprK3M%`#IdVL zUEAw4e{ zmg0{~p6|Ie&p`6H%mYO|r)_gjg|As;$iv1hQk=MZgX#CFjEx2xI6HUG&(-w8Y7Wpj zcm93g6udbnG(No#i13!1{`|2)F4_jl^X=3LnUJzge<}>RZc~zP~kV; zB68w#pu>SnK&adpIt5*dn`7OIQ?33Dj(x+oeanNlwY^!!2PQI6AN?^vMGITlu?Sc$ zU>9uS*}igoaC}8PN`jCCnovooc75v7&|^Bl#h|GI2x(JLP!wWjlNOK|~-m_dM?T+-E!pI0dd^5l}(d@Glq_swQ5Q<6ypk{;!;VaqFyLusAH|W zI_^hNH}3WaBSr@P!$9skWgujrrQZ^Mn?RWcN@fn{AM5KVovc^P{B4D$=SroI5_&zI zNSF`DRwb35%9fAbth<-%@nxq_$~TO}IN9OvPh(dz1*g;6JvytHv(;6&xjkRcOr!mB r{VRFNa;Pe5osHT>5@ibIb~{3g+0C%lYO~3O6<&R=-|w9m23q?84YkzM literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/hmenu-desc.gif b/src/main/webapp/gxt/images/gxt/icons/hmenu-desc.gif new file mode 100644 index 0000000000000000000000000000000000000000..f26b7c2fc5836850958f7f2b1fafd3988a988d7a GIT binary patch literal 930 zcmeH`u}cC`9LIl>nH9kiSwcv;h)RPe4nCSX#PT4JtLbR)IJcwe#y6z#3aSf)9!+l$ z;%yxW@kSwnZWM)ZydeVHiWX}!?QdxG!)N_2ANcN;ig{#6Ai)s+7(q%#GE!y5mQ{jO zj5MrhrlNCIcT|&WCe|#b*{*J3-4-SmmeaOT%60^HIHrQgae`8gf*j^igs3uBp{hnT zopO)5V>`?=nQ1YLFxzIBGSTNY=9rB4oG{nnt~U^b3F->w3Rehk(B^L2>$m$u&+|JS zzvF-O{o!cJw7~xri2now00G#VJYn()2%o@AE8lw!UPJ@SiC{BRyCfUg+)-YByjskr zv+Ug{Ji~hAw(%`jAsUlHdvfpXd_GaEWO`qB`!@?~^gbD{hpr>BT&DZEGYhLy?xoZ; n!ca~nNw;=d4=v4s)H*Z{&Ndrqrwj#{39jU-m51Y}8o>51Tocwt literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/left2.gif b/src/main/webapp/gxt/images/gxt/icons/left2.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8bbfb0537c0d4382fa77e81c242022128395de9 GIT binary patch literal 920 zcmZ?wbhEHb6krfwXlDQcOG`@zo00>EP98sb?%Iv}x9&W=d;iIUM=u^ffBoXs``2$j zefaeC^Vc8WzW)L%A0h4+}H@ zi#0cco;NnKHA!V?Zh3Kl$z$R)pHn3d8kPqzJIuA3&~SBi#Ky3*r>?%bwl0#D!^ETP JL30CxH2`!SR>=SW literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/loading.gif b/src/main/webapp/gxt/images/gxt/icons/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..e846e1d6c58796558015ffee1fdec546bc207ee8 GIT binary patch literal 771 zcmZ?wbhEHb6krfw*v!MQYQ=(yeQk4RPu{+D?cCXuwr^cCp}%d_ius2R?!0jBXnAQ) zOH<|l|Nj|aK=D7fpKD04vtxj(k)8oFBT!uNCkrbB0}q1^NDatX1{VJbCr|b)oWWMT zS%hVC ~NwO_yO%;SvZ5MdNYf|QNy-I*%yJaj+uTdt+qbZ z4E`Fzb8m}I&!N8OKmWEcCmrLs^Hs&3i)mt@hQVdcqghkaBs*D}tG_lKew4?rTjzIZ z9tSone1TS+TR7tu^CunG)Y7Jg#sw#)sG9C!c0I%LEzP)9;hqRf&)s$D8d5Db{TBs% zgl0~5QQ91luq4Q9tJgt4QLbaxZvAaKeCM9!oy85dg4k>TdBSVqjHub_PG=PO&J-rx z7oYTuF+kH|tG-UK+EkUhDjYx?zW?T|lx>+aOQm zzL$v$zBLo4Cj=G&tw{H}dW?tlTkS)SY4<#NS92z*EY-MMB6Ftp`R=*=*Ev7cS+X%W zMCur^FdlokL}1Y+&aasU2J4#EOuNlnb9CmqgLCGTSY!1BD42pkHY^XidQ5=>YQx%` z*%Pm9D!CkBu&tMWm(%-ejACVWGS2RX5=QOJ$1*tr7F}F+*-OA+Ly&Isg|AEuUYicA z#%IG6kPXkHt{zk2M6zK@Vu^4Q(1zE$?yY6M!^&jQ+2^E?!p7{g*|X6}vuRC3p@jk0 W117c83?+LXEZI4G$p&LV25SKE>nb+@ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/nowait.gif b/src/main/webapp/gxt/images/gxt/icons/nowait.gif new file mode 100644 index 0000000000000000000000000000000000000000..4c5862cd554d78f20683709d0b450b67f81bd24d GIT binary patch literal 884 zcmZ?wbhEHb6k-r!XlGz>`0sG^=;33>fanOrC>RZa5f%c9KUtVTUe*B-pgh6A5y-&E zA>*-O!NDdb7MYkC1`iK4@=0rzWCSQRbnt4Ywd@dF=+rMIANR*%(jvDmG5%#TnwOp& kU}SchrxH17*#QO%<_$5P0_ncfbgjEYUKG8!(7<2~0Pia+WB>pF literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/page-first-disabled.gif b/src/main/webapp/gxt/images/gxt/icons/page-first-disabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e02c419f5e73fc1ba5770df0448d44adf856288 GIT binary patch literal 925 zcmZ?wbhEHb6krfwXlGzZPfyRu$tfx-s;H=_udjFb@6g=b+}hgO*4EbE-rn8a-P_yS z*VotI-#=;6q{)*fPnj}h=FFM1XV0EDZ{Ga*^A|2$xOnm6B}gPhY%v@z$+dw{PFR zd-v{x2M-uV!Dt8!L;Mq+#E6<8x|aFW_O4e+3))3Q*|Q=94?bWMk!6jGP<+(r$fM>Xwqe7gmNr&4?FkK$jz>EMMFb>zJ~*Z~ zvMU=|C?p6pu`gocw@ENKkig96%Ptk5a9{xwcPOV4M}k2k%Q{v@i4+D0okN>5F7xql HFjxZs_zi%( literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/page-first.gif b/src/main/webapp/gxt/images/gxt/icons/page-first.gif new file mode 100644 index 0000000000000000000000000000000000000000..d84f41a91fca3a0ccc1107a78ffbf7b62c527afb GIT binary patch literal 925 zcmZ?wbhEHb6krfwXlGzh@tC0DJ54uuo^j+di-h&|8QW#kzUrr(*H68ylXk-(>4ag{ zZHv4+cEz{tOYf>=ebOm>XHxXSuI{Hx{sE`lD_*51{Hrf`RNeQhe(3PuA-LgMaLe7$ z)_W1{_x-!R`FH*eYuz6C>RX^ z>V<&fPZnkd21y1TkddG~!N5_)V9X)ov0=f%X7nX_llo;Ppa!i5VLFJ8Q4$&%&Em#6pV(z;0OW5pDfG_ z46F<~Am@Pc1OrC}12>0^$A$$5o7t@;-Y_UNJMxKf6&W}lT+k*Y$eyJjc<@21kdg?` z9)m}X2f37ODg+`IICZeGskVGL@ZdlLlaQT?!H)&bz6?zAIR*(A8e5nhSgkHN9C*OQ m>dC5ipkT8?(+Va*AAy7q4&fY(0%9#)p=)k#W@Tbxum%8@3U^Ha literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/page-last.gif b/src/main/webapp/gxt/images/gxt/icons/page-last.gif new file mode 100644 index 0000000000000000000000000000000000000000..3df5c2ba50b143fca7d168d5acbcc4404b903ee8 GIT binary patch literal 923 zcmZ?wbhEHb6krfwXlGzh@tC0DJ54uuo^j+di-h&|8QW#kzUrr(*H68ylXk-(>4ag{ zZHv4+cEz{tOYf>=ebOm>XHxXSuI{Hx{sE`lD_*51{Hrf`RNeQhe(3PuA-LgMaLe7$ z)_W1{_x-!R`FH*eYuz6C>RX^ z>V<&fPZnkd21y1TkddG~!N5_$V9X)ov0=f%X7)sh7DeV(M==$yO&0_YC2+|IvM<}Q z@ZbVY8B+}&lf=VK2L;XIwg}8jWa;H%bG(qjsCck}M+|z`(?y z1M&eVPcU$JFtBpScx+g3u$hC^!6V}XBXb*zY)A!1phGj4Fjq*7gQ62lFOR54M?r!E kLmQ{U6cz@-#wJD`MJWvdVWq}d0_-7oPHt8|*uY>70KTb0MF0Q* literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/page-next.gif b/src/main/webapp/gxt/images/gxt/icons/page-next.gif new file mode 100644 index 0000000000000000000000000000000000000000..960163530132545abe690cb8e49c5fef0f923344 GIT binary patch literal 875 zcmZ?wbhEHb6krfwXlGzh@tC0DJ54uuo^j+di-h&|8QW#kzUrr(*H68ylXk-(>4ag{ zZHv4+cEz{tOYf>=ebOm>XHxXSuI{Hx{sE`lD_*51{Hrf`RNeQhe(3PuA-LgMaLe7$ z)_W1{_x-!R`FH*eYuz6C>RX^ z>V<&fPZnkd21y1TkddG~!NB3cV9X)ov0=f%W)9;69vKr@Ionu*A5?G{Hgn3DYJ|un wK6d5q<#D`_!KiqUp-ntt3Jb$U#ts%8MWY1*!jGC}2?&SWIk{Q=U;~3S0KQg&YXATM literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/page-prev-disabled.gif b/src/main/webapp/gxt/images/gxt/icons/page-prev-disabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..37154d62406ddc064dba311b95f554e49ad38003 GIT binary patch literal 879 zcmZ?wbhEHb6krfwXlGzZPfyRu$tfx-s;H=_udjFb@6g=b+}hgO*4EbD-QC;U+t=4O zY0{+0lPAxdIdk5;dGqJbU$}7L;>C-XELpN*#fp_HSMJ!cW9QDDr%#{0ef##^yLTBz z!Dt8!oe)s`$->OQz{;Qlaxy4SFmU)VaC69bY*=uxnSOV literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/page-prev.gif b/src/main/webapp/gxt/images/gxt/icons/page-prev.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb70cf8f6a3b7f524bbeb3656d875a823b27fd7c GIT binary patch literal 879 zcmZ?wbhEHb6krfwXlGzh@tC0DJ54uuo^j+di-h&|8QW#kzUrr(*H68ylXk-(>4ag{ zZHv4+cEz{tOYf>=ebOm>XHxXSuI{Hx{sE`lD_*51{Hrf`RNeQhe(3PuA-LgMaLe7$ z)_W1{_x-!R`FH*eYuz6C>RX^ z>V<&fPZnkd21y1TkddG~!NB3eV9X)ov0=f%W)AK)kBA8^Y;DZmPc|?ZI=9Q{X*oQZ zkbJD2lgIqQijPiCj2*mD6%7sx9yN0CvxS^laG;@KrlbJNftid9=jS`{vav8&0{~Hw Bh1385 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/paging.gif b/src/main/webapp/gxt/images/gxt/icons/paging.gif new file mode 100644 index 0000000000000000000000000000000000000000..29d51d70108790cc6e3fb20afee3571b6a7267f8 GIT binary patch literal 989 zcmZ?wbhEHbRA6vmc$UVHo}RAaF`=)oZ|BaP?d|P4X*X7^STT9>vFE!z8k>HhzB@7_Iq`t*_|ON=9z=@h;TY<`$N=lAW~w>NIwxPANf?(Xiw zS*Q4Iv-f3Ij&zm=|sHiBR=ZQt$o$&Stt5&U=GG$6|!!?hp z`xh@>>|On#zP^6(;>GqE+m|n2ZeM!WCI5hi@3j8@e%;`C8B?BS%=u}Nus(O@v#ndV z=H%p@JbBW;`a;LL{|_EK@T-0(oA!0bjvb+`_ZIH^5ZrQCKjnPp#K(5Ux3_HB(%Ra( zZ{NQBX>Y<>Uf#NOD|6O=ySktA=g&7Oda-`}`qp*-<9i+&B%RPty`0+r+P~{t_T<;i z&CN{3}7Dfh!GzJ}zk)SwX zVE^Bc*3{h6+ScCD+0~sU9qZAi-X`f2(k9eql{l$|TdU35VMYs^a+|s9{N^xzyEX~` zWzF&e9Bryf>zWey1LWE?bhb4K2{^O2Dd_G`bKwt7HEuJsJ&~p_ASkccCK`9ijnCd9 z(4dVoG*7W85z96XuMcVL%seIqi5|zqYMc6e1dR^{aPhFP>RKu^ zG%E^6O7ZPdI?}dKDp`l`(W1tdg?xTCLWi6VPiPZY<1~DbxWZw=v{ohwr4OxXiVSTc zEEi6CFfc6WnWPnaYRk&Y%LCX8y{x(>sxMtSY15^x9oGz8_tY3_mE}w{&bTC!c=?!a z;Euwl|3%hjf6tp}Tf-sDC?XL!(W$LREzIXs;8UeZhLRgYtco=+F7a6GHP2_~rl+T+ zr=>-#N^ZO)%Qod+!GoECZQKhbrwS}@5acRjl4ulYJnWS1Y8b&IArKwdDki2Oa-l=R zv7eEbqr+uOQuBx79RevHa*`8!xL6k`drfR`D0NY5QCpj6lF9zI)1<~fBtf(B^oPf% z=kwbaE4okM%Don^8T`_5mX9e%Mr%vZRfWZW)7i9E2^2+TH62jmR$TqJV7BCr0@D-O zf?v|y4B~l>qI0)v9_CTp`SzN$={12*(FKQRKJ<-hk!YV&l(yiqnBrMm^$wda0!p%_ zO&=cfD_&1E@33;LO$q3oB6n&*Ubc(w5^ic{2AHS?%$z0o49 Y_+IqTWdClC)_aO>Yu)2(8W|X@0U3Cnt^fc4 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/right2.gif b/src/main/webapp/gxt/images/gxt/icons/right2.gif new file mode 100644 index 0000000000000000000000000000000000000000..9dba8d78491bf40fcd7441235c4b91f878ca490a GIT binary patch literal 925 zcmZ?wbhEHb6krfwXlDQcOG`@zo00>EP98sb?%Iv}x9&W=d;iIUM=u^ffBoXs``2$j zefaeC^Vc8WzW)L%A0cb8DZ_4Nsdm0TnQ7_0%ATVtdE literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/top2.gif b/src/main/webapp/gxt/images/gxt/icons/top2.gif new file mode 100644 index 0000000000000000000000000000000000000000..049379357359fe3846c6c931cfc565271e4cbb43 GIT binary patch literal 927 zcmZ?wbhEHb6krfwXlDQcOG`@zo00>EP98sb?%Iv}x9&W=d;iIUM=u^ffBoXs``2$j zefaeC^Vc8WzW)L%A0OPUze{FlkhSdhvvU0?W!kAXm=?`#Rf zds{3&G@NI)EdFO>aG~Mi0>@q{iHHR&gM0ku^2s=C)jGB+lwIh?DN*I{by54f{z{d- QiC|>nT_yWNL4m;<0CAvI*Z=?k literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/up2.gif b/src/main/webapp/gxt/images/gxt/icons/up2.gif new file mode 100644 index 0000000000000000000000000000000000000000..431ddd43c9350b853ced3df99bce361fc1f3c6c6 GIT binary patch literal 920 zcmZ?wbhEHb6krfw_|5+_f9`Z{2x#_x_Uyk6t`}{`$qM_pjf6 z`ta%N=dVA$eg6ekK1z&+!0-tH#h)yU3=I4XIv_8B@&p4%DT6$RgvW*i$3{LOt(YAJ z3C-;S%5E|z7A!j2EzYiYxZst`C0U!aW;F( zsUwvM3mWHJmHsm^*wAosu~xsFti^(r!BhR_@~Jp%U3F?z=<=kyU7_0H>zG)iWUN0p JIxsL;0|0XsRo(yq literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/icons/wait.gif b/src/main/webapp/gxt/images/gxt/icons/wait.gif new file mode 100644 index 0000000000000000000000000000000000000000..471c1a4f93f2cabf0b3a85c3ff8e0a8aadefc548 GIT binary patch literal 1100 zcmZwFZA@EL90u^)S14;kcS~P51JcqXyBK7YjR|$m*3qt)1nqFnf*+(nyIT_zZIrbc zP70+hE$ePOAcE2K4FU;V;KM+=xUiQtnG(k(Qx;;(oQVNl47kM11c$9(j7iV=cuw*= z&;L26aeaM*8AVX!4nUmF3luezO5JukyN8Fbj*JY)E9#Hd|0*@ZIv{eO*Nb# z12yCIrOhLLJlbn33DTB}t(F_b2bV4~y*j=}%v9m90(t13QX1^b_==P$D+H{5*5Mu? z8gKY>BXXf^7@!+sCzFj+>XgJsqfc(1Ya(r=#J=3 zlZtj9{~(p*xA$9X2mMtN6e0bM#^36uHAhJ9Q&;+@HQ_ThCJ=yPPcaaStzMs1DHP_0 zvw_E92pgO+s83$0SnZp{u*pvQ$A3#Rftg(VD(=52XCTzUftd4T-22$PQrgIR*gHx4 z{43C_yk?5j?(i$Mual4dFf?{<9Wn}qfaB%>iNwkdu&q!m&h2IcZ$2Th!C8}<*_&Pr zyKl`OZw8N)3D^4?RK}UoD=o00gbKYHy=yv32mZ9Dl8aIS8x^Z$2?NwcBLzFmZOtoW zzN62&u*QDIz{Fy}^YAXY&Txmg7ATSAhAr8K5fZbFZ*SFa$_qE2L|VVFHOI{wKE8B_ zGXV2p-56OO`rc4Z7g3zbj)2_3YjK$((`OUqD%*mgvS`YELYsVW1or1)YW%;)D$oE>#r zQ3z|D(W$Eg`c?NY^+fD&+nctrc25@u47U__J8-QW7NqK!$T9C@*SpuaHyFRRpIGae rj_Lao#za}+eaj_<`F9!mRdtBiaY8;HD^^WuJc3pV4=hFMVm*4Nd^5Njs4~MRO zICA6Tv6~-H-1>C#_NUW#KcBt#`TYIQ7an}M^zh4-M_;Z!`Fj27*Bj5i-Fp7*&WmsN zUVgv-;@kaK-ygpD{^a$y$8Uc;efQ(p`yVep{CxHC=bKNz-hKJ?{_C%g-+q7o{`<%8 zKMbQ_Gz11T1QdU=FoGPQ10q0qf`Q{d10#!s$A$$57&U@4VrC>Aa1fDG^6JS*O6cko z4vsjY5t!T{BJI@0^HT7M$3#{CMO#)(QaL?MGjU&t8jw&;AM7m-CCnUGyW9qmIlvf+Z$DqeQCY#?YG@l+g{!5PJMi~wz@p`&i>lXY<4j_ zvL7AqJ?yqGX6L)Tdvd+g|IH~Yd~tAN{PuY<)#dNb?ro1}kGHk@dhgNcboKsue@mXf zJ$tx*zTLm7pI=|@wqGy*|KHC)tQ-#-esV@AH2#-ek-mFPfxPbvS_JFN7q*J_ ll`m|QT;=|-OvW`Ns6(ztVv#$u!I25hOrlSe7#JBDtN{RHDNq0a literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/info/top-bottom.gif b/src/main/webapp/gxt/images/gxt/info/top-bottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..05bd80253f0bfabd091a8b63c0340a292b7b7438 GIT binary patch literal 1329 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/shared/select-18-bg.gif b/src/main/webapp/gxt/images/gxt/shared/select-18-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..35d90b1516ade82a68003dfbc6b46b00d4f3d5ab GIT binary patch literal 508 zcmVguf1|K8r-?d|RR`}^?l@YvYc*XIAa)&J@5|Jm8u z>FMe2^#A4W|HRz?;qU*@=Kt&K>+AIY-QC^U=l`wM|JvvO>+t{S@c+Nv|AxK)hrR#& z{QQBu|8=$h@AUuX@BiTI|M~g(+~@z}@Bi=b@9ysI?Ck9H^z`-h_4oJp)z#J1)YNCI z|NsC0A^8LV00000EC2ui00RJQ000L6z@N$`S%n}qly4C8!D_ya%r~O>QUzbk;PWhe zAcaqM@X;8)Q^Qw6yc{1B%kh&yT&iDaB|+67F#|p|Fk>BNBR&NwJ_bz-9zF^nJ_l0_ zRt+aU2qiur4sR?b5E4H=r~|4RtTC=NurjhVv<0>XxC^=pya&DvzzxC(#2LmI$f!O) zHzW}g02ezmJQXuN4?Ea8Ju^ByGXOjS1Ux$dJqZ@(Ha$8wJUKW$@*4p+&lW!%8zeVB z047A3vEzb(7UmwfQ>f!w4r%}d@F1{*hm8b0ZY1b&gPVvPJaBNk5nzJ_ffqRZ=)tl@ yg$e=$?2x%*M*^EVa^}bZU?+hYp8hAXR_4@1U>-P5c z^Yio7)z$9q?)&@u{QUg?|Nr^<`L@X4-rnBy_WI@P^VHw$>gwwH`ug_x``Ovq@bK{1 z*x2Um^uW;L)ZpyB&f?wO-RbG+@ALTG=J3DJoE*q;knDo@_3QbV{vSuh^_~)F@@X z;IMd1E}Ops%VN!LyWjA*oGnl_?)bcZ&+q&3bqs=ogoTEOh>3#&I1Y}Fkdcy;l$DPH zB?_9GoSmMZprM-r3m2xRsHv)}tgWY{6S1Z15Y^V#*xB0K+|~jL5#i$F({ezl8x22=eRS&%eL_{{ZIK!3X#SXyAbcB>m3Koz8gAhh2 zA%q)LXyJtzZr~sR8FuLZ;fEIzAmWH5j#z*QC8nt2iYy-B;)^i8*ntQf)M(?4IOeEh zjxqKqBLWlzDddnu7HQ;>NDA430S`3k zfCi98D(R$@Ryrx8hOY2{2bOl~DW#YeY90$LmTIbsKE4>j3@ec5>Z={ZD(kGXzG~~O z;>qAa2=w*p>#x8D8y^QGpm1P*6DF&yf+84T-?Gp~8zBN9bO2(8(q?Nw3TmF}?YAp( zo9ejamOCy1A_!{5?z-%zDnbWI#w+i<6mWn*2UX^)@4gREU_b|G1}yNF8vs1;!DV`& zA)X93?C`@7+ettHfVLUx#foZhKnECi>~WzJe=PFFA&+cwq8>c30=YZ3?6S)&6ie&O zG}mnN&9SyHLkPI`>@#=o1ue9D!qRu_(MTt)G=SPRz3jD6M=iC5;8tz5i0vNm^42bA zeE_{+hfO5EWS0#k!f2BoBa4XVdi2fpslxZ*r> G5CA(Iv5ndQ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/shared/select-19-bg.gif b/src/main/webapp/gxt/images/gxt/shared/select-19-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..31a3923125840199fc4be8ce4180496f65139299 GIT binary patch literal 2018 zcmc(c`B&2U0zeT7P-&!|$H<)G*-$U%#AOLvM+9*cjo;Q@BVOqy+7O_N}$h==RIMSuvr*P zrBZz`PAYXkrUr5y=#hdM6&N$iG#bs&3>cjSUm@_>3`ro+Ck1*l&}y|)N-*#ZOe(>G z4s;nN6bi-cqS|OQPFNH=oh}<{{PgM5{QUfYaZ0yhURqi*tt>7tF9QHn%X*8&GNl3{ zz2q|lG|Q%(c2F_jxwyC}m&+$6CIk~;Y-~)eR*#O3K2tQ0m}UzU0*Ml^K7it0pf!Q< z@$qt%xNjD`_yF?6U~mRN5Y#FK3wof|gLeHFwF&4<0MY@o*{oR7Ni9mfUJos4O(xUO z(9mP(t-)ZJUR>ywft!otFRK2R!^Jq9W4|HR)di2s${{_U?>p3^`H+eIVCkM zJtLEmyxZH${^6s?**Up+PaYBx{tksj#U-Vz7cUEG_VCIo&MPkOb#)aj5K-Uow((ul z`{oAPkJfF%_70J_vr9+|K=$kD5G~7?~TlYmWKJisL`AtHD+s(-!xk9O$m(8rz z>huPq$!yWlf^1g-%-YtO%#*edt=AKN7W0bRQn6ciRsBLrY|q5)jg*LAPqhlxu2SF}rH)jeV5l*7XX`mwE?~f(_kM`D*-K<>oL;dp-B- znLzBWP1FW;yt4y$$Jw4y(gWg@OGrV}QF3-%-d_5l?L`^QeMSD=iYQ(UG`N}-_CVZN zOHa10xRrnOU0r}RElfVqdxn)x+<(t*%Y@eZ1 zD#N{@C;{y=TRxR_&?w%DCLwoRV0!L50bfscWlw{LR4-`y5jh6d`XDs?%EiA$Tw-6$ zImYA7QTK^!A#eaJs5?^irj& zX5jRBLA^9(=X}F-#=GcR4}AaOx5~N$^KXZSacu?q;b)gi|Hy(NFnf)P-6$B!jmKYg zjJn3~z3I`)#CR*!ZCGn|f}MLrIt%3CF6UpgIqJaHi17E)lhDph>6gR=Z-L({W1X_P zVCU3MUC+L5On}Y6aFyKhj79Rtk~r3oPBWYK7oJ}8pI(YkB3C>=X}q) ztsMS2PGuNr_nQ>HX=(TcMbTc8n34O@C^X;WP03x;cpS#T-pwpc z+Hlo}?+M$}Dqwgwm;8qrH1Vs@|8$gPChzjLv}icu1`uws&?a#w)O&I{O9i>!>hx~Sv=!ID~J4=_|FQ@CQDo1H(k>3&_JfBsm4qq5rjms&PV3S(ooltq5er>?HR+*@ z5{D<|B)k4|wh=ugj`ia9U3WB@5mXnPh}_}%i^k@JngkmbcX%~w?q9oEikc;he21@F z2RHaRo5Z3+^BSAmO^J9EMeOIKWu{SCc&ppVwm#YiOa|+R?Hefp>#LC{HEf%ACxvo4 z1~8{f6KsPh!46tp@>aaxTA`>b{HipY$GGTrhSGgH@psf_T*7i}XZP7fZSF!h-}YE2 zecMOdx;_3 z3dHR@hDyJovIvp<$i1hAs^8pYM@AMqQi+c_*Y58O2njyrAFF+puOyr`$thXk1}>yz NyGJ_>l3=g{{{`p1C4c|` literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/shared/select-bg.gif b/src/main/webapp/gxt/images/gxt/shared/select-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbcf7e9b89e4ca0836f851545bc415a356a0666d GIT binary patch literal 1431 zcmV;I1!($5Nk%w1VKM-O0M!5h?d|RB>+ACJ^6c#F*5?21^8e!O|LXDo&f)*_^YiKN z|IOh4(Bl99|Nrmv|K{)i+UWo6^8eA}|KRKY)a3u2B|JdgL>gwwC_4U!w(eCc< z;q3qK@9*d5=lA#b!QTJ+`ug~V&*uN;=H~hN`RM5A@bK{I>FM_N_Vo1h@$vEa`1tVm|IpCTjllo^|Nj60 z00000A^8LW002DzEC2ui05SlC000L6z(xbs;u(*~q;kn@@*1GjOGK?&uh^`1E8^)K z;IMd1E}PF`Z(+@DyWjA*ob8R+@A$la&+p&82Z4fvgoTEOh=N`UjE#k7unj|+}+;a;M!gUfPfcA6&I z%C&2trj){p9m}Zcr?Y6&UTUhUt=qSvn%0_2w{EMZ!1C(di>v9fzkmY|Yig~q;ls|F zhFi?Iaki%HB1@i3uIatYm@~g?DzLNX&-$7+98J1(!KN5ft6mMUDaqHcV{_E8BBt%z zxH+(Jfnuj`nA79F@ z`SY;&s$aiLu>1GM5X+w*&9VLa+$ihce@?Ui|MGw);DG&@X5fJcv8LdH6UpY_gCFH4 z;e;#^XWHvFjMk~_$dfejf%Ddm(=B5CE7L++46kW_a0B$i%wd1R9} zlxgOfXr`&=nrxb>WdaGbDW{om)@kRRYxXF>oOIqZ`EE`sxO>)=F!W z003a?uDtf@>#x0Pnd`8`7HjOW$QC=mvdk{4WwX#i8^E;GR$Fbf*kZdw2pCxF?YH2D zTP+6UmP@XdHPj&guDKYb>+ZYhvMcYr=jPDv4EW}&FTU{h>+iq+Hd({I1Q%@Z!3g7f zLJl){knqD0BkTbQ9dwGRqk=-Zs;Q9nFoFsxhAi^PB$xc*i71yyatQ-uxZ}$;<|wm` zFuzCx2_y7?<<3Vg>9fx^$go40JQs~*lsOFT<<4PJ$+XaXMlE%kNl$%dp@q%~XVq+C zodCv;di`etNlOa$pq^$5Xbu{r?e^P=mM!VVbdTyOs7Y@u>)w2K04%L|@9_8FgaZpe z2T3QZ_~OK7+bjSB2%W9C*E(*wv`JI0Ipy@4J8kCHvI}s$otJKI4HzVC@aU|!?yu?* z$1Z!iGH4*Q`|S`rEW-(ro^9!(b*tS02_Bei{P8?|D};uw{LZv?q4l-oo#*{wb#B2>UE`_<_{>`01O}i zL3Ovf84y!6Xq5pI*tZ6{s&EjDVBr`?!3yTeasjy9vNo4N4Ni`OAmkjq0)V=8oo;ld lE8Psz^)T1D@L#x#p$un8!%A7~Qohp|-8S{S9+E5w06XW z<@Sp&Pu_lg`u5A+mtS7K|FZVno8_lo-+KP#(VH(%f#~hm*B`z z?Thzc-+%mk`tG}D@4mix^Wnj(FOT1RdHxP)=GV6$zMj1E?#+kK8!x=waN+IS51*gE z{rd9Vm*=lPy!r6u)w_?cK72iM_x=C>{~3q|ia%Kx85j(Ko&f@opBUKwADF>iCM3}- zc!Kj;SFOREuq3OkDp4|LmLINM!|-6k_k%ApJRX`nU{uRw;oK@QN5J9HCsSFWjWYil z>Xqun1ex@CJG*#A*gN&zBsnHenJh9{aw6C4IkOdK&t#HjUb1wF@Dgda#mkniU|z)} z&bDRi7KJV1Zd$B+_w8ldtHmU!%yRt1an|F?o^pH_F7mOkUXT-D66L;qhntb*wx}Bq zgAUwE2o~f z3}0Wf%PMvCi?z}FCowTkTeH$A_0l50)oyENhvq-ncd%LA|K7EVS9|JQ#iubG+?=k> PBa;5nV^X&x1A{dHJ{%0w literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/table/row-over.gif b/src/main/webapp/gxt/images/gxt/table/row-over.gif new file mode 100644 index 0000000000000000000000000000000000000000..b288e38739ad9914b73eb32837303a11a37f354a GIT binary patch literal 823 zcmV-71IYYGNk%w1VF3Ug0EYko000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV00930EC2ui0096U000OS0Po$iSC8I2dGX-ATgb4XLx%wY06VC` Bj$r@* literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/table/vs-column-bg.gif b/src/main/webapp/gxt/images/gxt/table/vs-column-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..4025bceaf0ef5d70c7e5cb406c90e23cc1d6f9e2 GIT binary patch literal 548 zcmV+<0^9vZNk%w1VKM+n0K@-)&y`^Db-*XsL?uH)9} z`N-b;^!4}E)z!e%>B!*x$>RL-^YzN&{Kww=%i{g@_W0N7`t$Vm_xSqu_xaiD`{?uj z@Am!w|Nj6000000EC2ui05Skb000I5U?+}bX`X1Ru59bRa4gSsZQppV?|kq7KpSRA zEE41ejE#C$jQpf%+1cv(9zP<)YaD4*v|#q+}+;a;Njxl2<7JI z=;`X~?C1mU@bU8V^!4`g7Ww-7{Qds_00RmfND!ccg9sBUT*$DYLxln&N}NcsqQ#3C zDF)ccv7^V2AVZ4u=%A#@lPFWEs$9tu<%X9qW6GRKv!>0PICJXU$+M@=pFo2O9ZIyQ z(W6L{DqYI7=}-z#qe`7hwW`&tShH%~dR2nguVBN99ZR;X*|TWVmW9B!t=qS7?$9!$8f;lqOsC|=CCvE#>(BR5_^xw7TUm@{kMe0hTB&!9t# m9!C>oFmp;I{wd>cgW6PfXI)UxmxO3~?&AWH*5CA)*9#r=L literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/table/vsort-asc.gif b/src/main/webapp/gxt/images/gxt/table/vsort-asc.gif new file mode 100644 index 0000000000000000000000000000000000000000..1981f08d4669c3adc122b11492d2d04bd1a72585 GIT binary patch literal 846 zcmZ?wbhEHbWM>d#_%6V3^7{KZn;&`vXF2(2C)I6s3&}fp>FxPjAF>+|z#zb&1M(9nPcU$3GbnP%cx+&BWp!Lf;%fiLUMiH(bo_bWJe$=ozlV6X-N@ewa6 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/table/vsort-desc.gif b/src/main/webapp/gxt/images/gxt/table/vsort-desc.gif new file mode 100644 index 0000000000000000000000000000000000000000..c2d7f595d0f080621c008661d7a2e48619379808 GIT binary patch literal 845 zcmZ?wbhEHbWM>d#_%6V3^7{KZn;&`vXF2(2C)I6s3&}fp>FxPjAF>+|z#zb&1M(9nPcU$3F(`7#a5x@dV&)Q( mVF(a7*v!Do#;0(gL7|07%sA`LiH(bo_bWJe{gDu0um%9GXfB@s literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/tree/checked.gif b/src/main/webapp/gxt/images/gxt/tree/checked.gif new file mode 100644 index 0000000000000000000000000000000000000000..f00ec978d466fb00537e79987f8d685da20cbca0 GIT binary patch literal 533 zcmZ?wbhEHbF<^H3W>vx>r zb@1w&w{Ks*eD&bbv$yX)zIyY)BX*igbN_|hx>a}XKS?fKdiClx z?}Ql%MN6JPe{u5s-3>c0&Ru@MGj4kK%-wqqU%U74<<%Q^&R=;nVea1hkDi`7edgYS zhqv$CxpnLIoxArQK6(l3NC(m4X`|jP*lV_hjdlr^Ccl-XUS8v`u zd;X$(%+%O|g|A<~>6y9f%!O;;zI{7={_48TJHLGS(%0Y5Fw}tJPZqF~bwDI2P8isW z8eE#1TUwmkJDeGr9Gsh+ohD8+RuGn8=y!6QZO?BmBIYo2wkRK$5SwhD%LGdeRSp{# zW$o3@rgHiw+=7yfQron|S=88>EgW>WS*cjFGRqh`>uoa-P*RkZ?=jn^sl#cfZp35D SyRDspiIJhR^?h?AgEauprn;a2 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/tree/joint-close.gif b/src/main/webapp/gxt/images/gxt/tree/joint-close.gif new file mode 100644 index 0000000000000000000000000000000000000000..e34b5e4f025d3458675ce9868b5c2a358ef5317d GIT binary patch literal 900 zcmZ?wbhEHb6krfy_|C{+=#|XCz%XU$-Z?uiX3i z{QdXWpZ@~^P~|8X4T0el0*XIb7#SEC8FWCN0_6z?jzk7#4jGRP3l27O2y4ZhxbT39 zNr0V4K;gjwM4qKGZ-YUv(Y%f=+3|`B9h=4 kz;K+EK}6w(=j6r!X4XlcWGWPv1$Xl<_L|#epuk`a046X(P5=M^ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/tree/joint-open.gif b/src/main/webapp/gxt/images/gxt/tree/joint-open.gif new file mode 100644 index 0000000000000000000000000000000000000000..87717afc85d35c0f390f1221606a16f6c4bea11f GIT binary patch literal 898 zcmZ?wbhEHb6krfy_|C{+=#|XCz%XU$-Z?Z#?|? z{QdXWpZ@~^P~|8X4T0el0*XIb7#SEC8FWCN0_6z?j(7%U4jGRP3l27O2y4ZhxbT39 zNr0V4K;gjwMlx ig$I3EEYpnw8V)!#F1BKqYdCo&>G1M^#Y#LJ4AuZh-$Ype literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/tree/notchecked.gif b/src/main/webapp/gxt/images/gxt/tree/notchecked.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b2ba4e8c689bf060c50eccec9a2ea8425a1d0fc GIT binary patch literal 321 zcmZ?wbhEHbw`t|F}m#-c^di3Do!}VKsy?_7y$cJAG@eb0{F`_Epye*5;FSFc{3 zIeYft;iG3SUfaFz;NvGxFI~O$`t_SzckVxU`1slL=XdVjyK?>Z(`U~fJ$|xh|DlJE z9>0F`=ECJ0&z?QIar@pIAp6SAPoF-$ef#$G`K#+T@BH%ROJ9FK174u`lLaiV10q3w zVql9qFsr~rmg`P4QdA5YRpK<{7!3_fcun}@*xR{G7$)n)@o-28D6?rP@Wpv~xh{5gWUvMR D;2*C= literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/tree/tree-table-special-col-sel.gif b/src/main/webapp/gxt/images/gxt/tree/tree-table-special-col-sel.gif new file mode 100644 index 0000000000000000000000000000000000000000..ee8399e71c95acd4b7c949dd4e6fd9710dce6e7b GIT binary patch literal 835 zcmZ?wbhEHb6lY*!_|Cwv>ddzbkAGcy^6T=`Uss>~zV`h0_2<8DzW9CX@G6CzxS;6LDWc29!e9*mvg|^_ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/tree/tree-table-special-col.gif b/src/main/webapp/gxt/images/gxt/tree/tree-table-special-col.gif new file mode 100644 index 0000000000000000000000000000000000000000..fcc7f9ee56e9501966ea21b112796d5e88297592 GIT binary patch literal 96 zcmZ?wbhEHb6lY*$*vtR||NsC0`02}skDuRv`1J1m$G7i3ym|Zn^_zD;fBw91;Q~+= ntO`mf{$ycfVBluZ0r5d*FtG3%oV09}m@y&gjAMroBZD;n0mvvO literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/tree/vnode.gif b/src/main/webapp/gxt/images/gxt/tree/vnode.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f031bd1bcd6658edd4dbdf24a33592d590bb1f8 GIT binary patch literal 846 zcmc(c>q}E%0Egdm+|{Lx)LOCDSr@}=W>I#tW0qZ%8gs@p2!$l+#=i9-i0$agRBBP0 zC6W8!P^6m+im*C~(G~XKir4vML%sSJC$HvB{r>8%Lc)#C2x&XVny1ZU*=Q#IaR><^3 z#Z2UoCrMROgJ%Ct37v>bwXz|LO%9Ta?x~%#?Rpv{=W4OgX!P`deSYq9ye_k~VYH|2{OCwUCGD*I`<^sVR#50zYO*-q z+9XTt=ahNvmH4&gYw`@{ZPm|k?bin7` zK(ewTdNlESpKRa5;=E|irHEWAzaVd>tEeRjD`@G9JtUCDrx4_jg&=L!#z!)O77OH0 PX#+N3eq}B!Ccv&glsa{y literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/images/gxt/tree/vnode_transparent.gif b/src/main/webapp/gxt/images/gxt/tree/vnode_transparent.gif new file mode 100644 index 0000000000000000000000000000000000000000..504e9407a422ab08b1740ee04bf66c85112b00c2 GIT binary patch literal 972 zcmZ?wbhEHb6ku>*_|5_t*sp$9W!RkSh#TEvSrIw ztXQ#f<;p#K_B7r9z3l0)rO$q^c=~I_^WW>9|62d@_of%WPo6w^|Ni}B@BW;4|L5$x z-={wOx$yq?g-?I4fBbX()1RB4{@nTe=iZmUj~+dG`SRtPH*em)ef#d+yN6%@KK}Oi z>9@ZxzW;ss2M>rl+B;x4_cbqx$|at958s? zE5t6AcIU=LCAUs~S-+T*o0guQZon^f!l00$k%ON-V8_XV18s9nM1Q?WNNiwV=)##1 zVR3+|k<)g*oyh^kWmi{6Y|fH>!En%-osr3aMcZMG)27t(Yyt) r-6gsr6&i^L7}^BbY<{fX@V@yVmo|r;k3=Hl{<`mv=Ke8KV6X-N6Jgcl literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/css/xtheme-slate.css b/src/main/webapp/gxt/themes/slate/css/xtheme-slate.css new file mode 100644 index 0000000..1993b29 --- /dev/null +++ b/src/main/webapp/gxt/themes/slate/css/xtheme-slate.css @@ -0,0 +1,1008 @@ +/* + * Ext GWT Library 2.0 + * Copyright(c) 2006-2009, Ext JS, LLC. + * licensing@extjs.com + * + * http://extjs.com/license + */ +.x-panel { + border-style: solid; + border-color: #abc; +} + +.x-panel-header { + color: #fafafa; + border: 1px solid #abc; + background-image: url(../images/slate/panel/white-top-bottom.gif); +} + +.x-panel-body { + border-color: #abc; +} + +.x-panel-bbar .x-toolbar { + border-color: #abc; +} + +.x-panel-tbar .x-toolbar { + border-color: #abc; +} + +.x-panel-tbar-noheader .x-toolbar,.x-panel-mc .x-panel-tbar .x-toolbar { + border-color: #abc; +} + +.x-panel-body-noheader,.x-panel-mc .x-panel-body { + border-color: #abc; +} + +.x-panel-tl .x-panel-header { + color: #f4f4f4; +} + +.x-panel-tc { + background-image: url(../images/slate/panel/top-bottom.gif); +} + +.x-panel-tl { + background-image: url(../images/slate/panel/corners-sprite.gif); + border-color: #abc; +} + +.x-panel-tr { + background-image: url(../images/slate/panel/corners-sprite.gif); +} + +.x-panel-bc { + background-image: url(../images/slate/panel/top-bottom.gif); +} + +.x-panel-bl { + background-image: url(../images/slate/panel/corners-sprite.gif); +} + +.x-panel-br { + background-image: url(../images/slate/panel/corners-sprite.gif); +} + +.x-panel-mc { + background: #dde5e9; +} + +.x-panel-mc .x-panel-body { + background: transparent; + border: 0 none; +} + +.x-panel-ml { + background-image: url(../images/slate/panel/left-right.gif); +} + +.x-panel-mr { + background-image: url(../images/slate/panel/left-right.gif); +} + +.x-panel-dd-spacer { + border: 2px dashed #89a; +} + +.x-tool { + background-image: url(../images/slate/panel/tool-sprites.gif); +} + +.x-panel-ghost { + background: #e0e0e0; +} + +.x-panel-ghost ul { + border-color: #b0b0b0; +} + +.x-grid-panel .x-panel-mc .x-panel-body { + border: 1px solid #abc; +} + +.x-btn button { + color: #fff; +} + +.x-btn-over button { + color: #fff; +} + +.x-btn-focus button { + color: #fff8da; +} + +.x-btn-mc em.x-btn-arrow { + background-image: url(../images/slate/button/arrow.gif); +} + +.x-btn-mc em.x-btn-split { + background-image: url(../images/slate/button/s-arrow-b-noline.gif); +} + +.x-btn-over .x-btn-mc em.x-btn-split,.x-btn-click .x-btn-mc em.x-btn-split,.x-btn-menu-active .x-btn-mc em.x-btn-split,.x-btn-pressed .x-btn-mc em.x-btn-split { + background-image: url(../images/slate/button/s-arrow-o.gif); +} + +.x-btn-over .x-btn-mc em.x-btn-split,.x-btn-click .x-btn-mc em.x-btn-split,.x-btn-menu-active .x-btn-mc em.x-btn-split,.x-btn-pressed .x-btn-mc em.x-btn-split,.x-toolbar .x-btn-over .x-btn-mc em.x-btn-split,.x-toolbar .x-btn-click .x-btn-mc em.x-btn-split,.x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split,.x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split + { + background-image: url(../images/slate/button/s-arrow-o.gif); +} + +.x-btn-mc em.x-btn-split-bottom { + background-image: url(../images/slate/button/s-arrow-b.gif); +} + +.x-btn-over .x-btn-mc em.x-btn-split-bottom,.x-btn-click .x-btn-mc em.x-btn-split-bottom,.x-btn-menu-active .x-btn-mc em.x-btn-split-bottom,.x-btn-pressed .x-btn-mc em.x-btn-split-bottom + { + background-image: url(../images/slate/button/s-arrow-bo.gif); +} + +.x-btn-group-header { + color: white !important; +} + +.x-btn-group-tc { + background-image: url(../images/slate/button/group-tb.gif); +} + +.x-btn-group-tl { + background-image: url(../images/slate/button/group-cs.gif); +} + +.x-btn-group-tr { + background-image: url(../images/slate/button/group-cs.gif); +} + +.x-btn-group-bc { + background-image: url(../images/slate/button/group-tb.gif); +} + +.x-btn-group-bl { + background-image: url(../images/slate/button/group-cs.gif); +} + +.x-btn-group-br { + background-image: url(../images/slate/button/group-cs.gif); +} + +.x-btn-group-ml { + background-image: url(../images/slate/button/group-lr.gif); +} + +.x-btn-group-mr { + background-image: url(../images/slate/button/group-lr.gif); +} + +.x-btn-group-notitle .x-btn-group-tc { + background-image: url(../images/slate/button/group-tb.gif); +} + +.x-border-layout-ct { + background: #f0f0f0; +} + +.x-accordion-hd { + background-image: url(../images/slate/panel/light-hd.gif); +} + +.x-layout-collapsed { + background-color: #567; + border-color: #e0e0e0; +} + +.x-layout-collapsed-over { + background-color: #789; +} + +.x-toolbar { + border-color: #abc; + background: #f0f4f5 url(../images/slate/toolbar/bg.gif) repeat-x top left; +} + +.x-toolbar button { + color: #f4f4f4; +} + +.x-toolbar .ytb-text { + color: #f4f4f4; +} + +.x-btn-tl,.x-btn-tr,.x-btn-tc,.x-btn-ml,.x-btn-mr,.x-btn-mc,.x-btn-bl,.x-btn-br,.x-btn-bc { + background-image: url(../images/slate/button/btn.gif); +} + +.x-btn-click .x-btn-text,.x-btn-menu-active .x-btn-text,.x-btn-pressed .x-btn-text { + color: white; +} + +.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button { + background-image: url(../images/slate/toolbar/btn-arrow.gif); +} + +.x-toolbar .x-btn-text-icon .x-btn-menu-arrow-wrap .x-btn-center button { + background-image: url(../images/slate/toolbar/btn-arrow.gif); +} + +.x-toolbar .x-btn-over .x-btn-left { + background-image: url(../images/slate/toolbar/tb-btn-sprite.gif); +} + +.x-toolbar .x-btn-over .x-btn-right { + background-image: url(../images/slate/toolbar/tb-btn-sprite.gif); +} + +.x-toolbar .x-btn-over .x-btn-center { + background-image: url(../images/slate/toolbar/tb-btn-sprite.gif); +} + +.x-toolbar .x-btn-over button { + color: #fff; +} + +.x-toolbar .x-btn-click .x-btn-left,.x-toolbar .x-btn-pressed .x-btn-left,.x-toolbar .x-btn-menu-active .x-btn-left { + background-image: url(../images/slate/toolbar/tb-btn-sprite.gif); +} + +.x-toolbar .x-btn-click .x-btn-right,.x-toolbar .x-btn-pressed .x-btn-right,.x-toolbar .x-btn-menu-active .x-btn-right { + background-image: url(../images/slate/toolbar/tb-btn-sprite.gif); +} + +.x-toolbar .x-btn-click .x-btn-center,.x-toolbar .x-btn-pressed .x-btn-center,.x-toolbar .x-btn-menu-active .x-btn-center + { + background-image: url(../images/slate/toolbar/tb-btn-sprite.gif); +} + +.x-toolbar .xtb-sep { + background-image: url(../images/slate/toolbar/sep.gif) !important; +} + +.x-statusbar .x-status-text-panel { + border-color: #9ab #9ab #9ab #9ab; +} + +.x-statusbar .x-status-text { + color: #ddc; +} + +.x-menu { + border: 1px solid #aaa; + background: #f0f0f0 url(../images/slate/menu/menu.gif) repeat-y; +} + +.x-menu-item-active { + background: #ebf3fd url(../images/slate/menu/item-over.gif) repeat-x left bottom; + border: 1px solid #c2cbd2; +} + +.x-menu-item-arrow { + background: transparent url(../images/slate/menu/menu-parent.gif) no-repeat right; +} + +.x-menu-check-item .x-menu-item-icon { + background: transparent url(../images/slate/menu/unchecked.gif) no-repeat center; +} + +.x-menu-item-checked .x-menu-item-icon { + background-image: url(../images/slate/menu/checked.gif); +} + +.x-menu-item-checked .x-menu-group-item .x-menu-item-icon { + background: transparent url(../images/slate/menu/group-checked.gif) +} + +.x-menu-group-item .x-menu-item-icon { + background: transparent none repeat scroll 0 0; +} + +.x-tab-panel-header,.x-tab-panel-footer { + background: #6b869f; + border-color: #4f657b; +} + +.x-tab-panel-header { + border-color: #abc; +} + +.x-tab-panel-footer { + border-color: #abc; +} + +ul.x-tab-strip-top { + background: #dbdbdb url(../images/slate/tabs/tab-strip-bg.gif) repeat-x left top; + border-color: #4c647e; + padding-top: 2px; +} + +ul.x-tab-strip-bottom { + background-image: url(../images/slate/tabs/tab-strip-btm-bg.gif); + border-color: #566c82; +} + +.x-tab-strip span.x-tab-strip-text { + color: #333; +} + +.x-tab-strip-over span.x-tab-strip-text { + color: #111; +} + +.x-tab-strip-active span.x-tab-strip-text { + color: #fff; +} + +.x-tab-strip-disabled .x-tabs-text { + color: #aaaaaa; +} + +.x-tab-strip-top .x-tab-right { + background-image: url(../images/slate/tabs/tabs-sprite.gif); +} + +.x-tab-strip-top .x-tab-left { + background-image: url(../images/slate/tabs/tabs-sprite.gif); +} + +.x-tab-strip-top .x-tab-strip-inner { + background-image: url(../images/slate/tabs/tabs-sprite.gif); +} + +.x-tab-strip-bottom .x-tab-right { + background-image: url(../images/slate/tabs/tab-btm-inactive-right-bg.gif); +} + +.x-tab-strip-bottom .x-tab-left { + background-image: url(../images/slate/tabs/tab-btm-inactive-left-bg.gif); +} + +.x-tab-strip-bottom .x-tab-strip-active .x-tab-right { + background-image: url(../images/slate/tabs/tab-btm-right-bg.gif); +} + +.x-tab-strip-bottom .x-tab-strip-active .x-tab-left { + background-image: url(../images/slate/tabs/tab-btm-left-bg.gif); +} + +.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close { + background-image: url(../images/slate/tabs/tab-close.gif); +} + +.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover { + background-image: url(../images/slate/tabs/tab-close.gif); +} + +.x-tab-panel-body { + border-color: #abc; + background: #fff; +} + +.x-tab-panel-bbar .x-toolbar { + border-color: #abc; +} + +.x-tab-panel-tbar .x-toolbar { + border-color: #abc; +} + +.x-tab-panel-header-plain .x-tab-strip-spacer,.x-tab-panel-footer-plain .x-tab-strip-spacer { + border-color: #abc; + background: #6b869f; +} + +.x-tab-scroller-left { + background-image: url(../images/slate/tabs/scroll-left.gif); + border-color: #aeaeae; +} + +.x-tab-scroller-right { + background-image: url(../images/slate/tabs/scroll-right.gif); + border-color: #aeaeae; +} + +.x-window-proxy { + background: #e4e8ec; + border-color: #abc; +} + +.x-window-tl .x-window-header { + color: #fafafa; +} + +.x-window-tc { + background-image: url(../images/slate/window/top-bottom.png); +} + +.x-window-tl { + background-image: url(../images/slate/window/left-corners.png); +} + +.x-window-tr { + background-image: url(../images/slate/window/right-corners.png); +} + +.x-window-bc { + background-image: url(../images/slate/window/top-bottom.png); +} + +.x-window-bl { + background-image: url(../images/slate/window/left-corners.png); +} + +.x-window-br { + background-image: url(../images/slate/window/right-corners.png); +} + +.x-window-mc { + border: 1px solid #abc; + background: #e8e8e8; +} + +.x-window-ml { + background-image: url(../images/slate/window/left-right.png); +} + +.x-window-mr { + background-image: url(../images/slate/window/left-right.png); +} + +.x-panel-ghost .x-window-tl { + border-color: #abc; +} + +.x-panel-collapsed .x-window-tl { + border-color: #abc; +} + +.x-window-plain .x-window-mc { + background: #e8e8e8; + border-right: 1px solid #eee; + border-bottom: 1px solid #eee; + border-top: 1px solid #abc; + border-left: 1px solid #abc; +} + +.x-window-plain .x-window-body { + border-left: 1px solid #ddd; + border-top: 1px solid #ddd; + border-bottom: 1px solid #abc; + border-right: 1px solid #abc; + background: transparent !important; +} + +body.x-body-masked .x-window-mc,body.x-body-masked .x-window-plain .x-window-mc { + background-color: #eceef0; +} + +/* HTML Editors */ +.x-html-editor-wrap { + border-color: #abc; +} + +/* Borders go last for specificity */ +.x-panel-noborder .x-panel-body-noborder { + border-width: 0; +} + +.x-panel-noborder .x-panel-header-noborder { + border-width: 0; + border-bottom: 1px solid #abc; +} + +.x-panel-noborder .x-panel-tbar-noborder .x-toolbar { + border-width: 0; + border-bottom: 1px solid #abc; +} + +.x-panel-noborder .x-panel-bbar-noborder .x-toolbar { + border-width: 0; + border-top: 1px solid #abc; +} + +.x-window-noborder .x-window-mc { + border-width: 0; +} + +.x-window-plain .x-window-body-noborder { + border-width: 0; +} + +.x-tab-panel-noborder .x-tab-panel-body-noborder { + border-width: 0; +} + +.x-tab-panel-noborder .x-tab-panel-header-noborder { + border-top-width: 0; + border-left-width: 0; + border-right-width: 0; +} + +.x-tab-panel-noborder .x-tab-panel-footer-noborder { + border-bottom-width: 0; + border-left-width: 0; + border-right-width: 0; +} + +.x-tab-panel-bbar-noborder .x-toolbar { + border-width: 0; + border-top: 1px solid #abc; +} + +.x-tab-panel-tbar-noborder .x-toolbar { + border-width: 0; + border-bottom: 1px solid #abc; +} + +/* Forms */ +.x-form-text,textarea.x-form-field { + border: 1px solid #9ab; +} + +.x-trigger-wrap-focus .x-form-trigger { + border-bottom: 1px solid #4a7192; +} + +.x-form-focus,textarea.x-form-focus { + border: 1px solid #4a7192; +} + +.x-form-field-wrap .x-form-trigger { + background: transparent url(../images/slate/form/trigger.gif) no-repeat 0 0; +} + +.x-form-field-wrap .x-form-date-trigger { + background-image: url(../images/slate/form/date-trigger.gif); +} + +.x-form-field-wrap .x-form-clear-trigger { + background-image: url(../images/slate/form/clear-trigger.gif); +} + +.x-form-field-wrap .x-form-search-trigger { + background-image: url(../images/slate/form/search-trigger.gif); +} + +.x-form-field-wrap .x-form-trigger { + border-bottom: 1px solid #778899; +} + +.x-form-field-wrap .x-form-trigger-over { + background-position: -17px 0; +} + +.x-form-field-wrap .x-form-trigger-click { + background-position: -34px 0; +} + +.x-trigger-wrap-focus .x-form-trigger { + background-position: -51px 0; +} + +.x-trigger-wrap-focus .x-form-trigger-over { + background-position: -68px 0; +} + +.x-trigger-wrap-focus .x-form-trigger-click { + background-position: -85px 0; +} + +.x-form fieldset legend { + color: #333; +} + +/* Checkboxes & Radio Buttons */ +.x-form-check { + background: url('../images/slate/form/checkbox.gif') no-repeat 0 0; +} + +.x-form-radio { + background: url('../images/slate/form/radio.gif') no-repeat 0 0; +} + +.x-form-check-group-label { + border-bottom: 1px solid #99BBE8; + color: #15428B; + margin-bottom: 5px; + padding-left: 3px !important; + float: none !important; +} + +/* Grid */ +.x-grid3-row-selected { + background: #fbf0d2 !important; + border: 1px dotted #ccc; +} + +.x-grid3-hd-btn { + background: #f2daa9 url(../images/slate/grid/grid3-hd-btn.gif) no-repeat left center; +} + +.x-grid3-header { + background: #f9f9f9 url(../images/slate/grid/grid3-hrow.gif) repeat-x 0 bottom; +} + +td.x-grid3-hd-over .x-grid3-hd-inner,td.sort-desc .x-grid3-hd-inner,td.sort-asc .x-grid3-hd-inner,td.x-grid3-hd-menu-open .x-grid3-hd-inner + { + background: #ebf3fd url(../images/slate/grid/grid3-hrow-over.gif) repeat-x left bottom; +} + +.sort-asc .x-grid3-sort-icon { + background-image: url(../images/slate/grid/sort_asc.gif); +} + +.sort-desc .x-grid3-sort-icon { + background-image: url(../images/slate/grid/sort_desc.gif); +} + +td.x-grid3-hd-over,td.sort-desc,td.sort-asc,td.x-grid3-hd-menu-open { + border-left: 1px solid #fff; + border-right: 1px solid #ccc; +} + +.x-grid3-check-col { + background-image: url(../images/slate/menu/unchecked.gif); +} + +.x-grid3-check-col-on { + background-image: url(../images/slate/menu/checked.gif); +} + +.x-grid3-cell-selected { + background-color: #e0eaee !important; +} + +.x-grid3-body .x-grid3-td-expander { + background: transparent url(../images/slate/grid/grid3-special-col-bg.gif) repeat-y right; +} + +.x-grid3-body .x-grid3-td-checker { + background: transparent url(../images/slate/grid/grid3-special-col-bg.gif) repeat-y right; +} + +.x-grid3-body .x-grid3-td-numberer { + background: transparent url(../images/slate/grid/grid3-special-col-bg.gif) repeat-y right; +} + +.x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer,.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker,.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander + { + background: transparent url(../images/slate/grid/grid3-special-col-sel-bg.gif) repeat-y right; +} + +.x-grid-group-hd { + border-bottom: 2px solid #abb; +} + +.x-grid-group-hd div { + color: #456; +} + +.x-dd-drag-proxy .x-grid3-hd-inner { + background: #ebf3fd url(../images/slate/grid/grid3-hrow-over.gif) repeat-x left bottom; + border: 1px solid #abc; +} + +.x-tbar-page-first { + background-image: url(../images/slate/grid/page-first.gif) !important; +} + +.x-tbar-page-last { + background-image: url(../images/slate/grid/page-last.gif) !important; +} + +.x-tbar-page-next { + background-image: url(../images/slate/grid/page-next.gif) !important; +} + +.x-tbar-page-prev { + background-image: url(../images/slate/grid/page-prev.gif) !important; +} + +.x-paging-info { + color: #FFFFFF; +} + +/* Progress Bars */ +.x-progress-bar { + background: #9CBFEE url(../images/slate/progress/progress-bg.gif) repeat-x left center; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; +} + +.x-progress-inner { + background: #E0E8F3 url(../images/slate/qtip/bg.gif) repeat-x scroll 0 0; +} + +.x-progress-text { + color: #789; +} + +.x-progress-text-back { + color: #789; +} + +.x-progress-wrap { + border: 1px solid #b0b8c4; +} + +/* Combos */ +.x-combo-list { + border: 1px solid #89a; +} + +.x-combo-list .x-combo-selected { + border: 1px dotted #ccc !important; + background: #fbf0d2; +} + +/* Calendars */ +.x-date-middle,.x-date-left,.x-date-right { + background: url(../images/slate/shared/hd-sprite.gif) repeat-x 0 -83px; +} + +.x-date-right a { + background-image: url(../images/slate/shared/right-btn.gif); +} + +.x-date-left a { + background-image: url(../images/slate/shared/left-btn.gif); +} + +.x-date-bottom { + background: #DFECFB url(../images/slate/shared/glass-bg.gif) repeat-x scroll left top; + border-top: 1px solid #abc; +} + +.x-date-right-icon { + background-image: url(../images/slate/shared/right-btn.gif); +} + +.x-date-left-icon { + background-image: url(../images/slate/shared/left-btn.gif); +} + +.x-date-inner th { + background: #dfecfb url(../images/slate/shared/glass-bg.gif) repeat-x left top; + border-bottom: 1px solid #abc; + color: #345; +} + +.x-date-inner .x-date-selected a { + background: #dfecfb url(../images/slate/shared/glass-bg.gif) repeat-x scroll left top; + border: 1px solid #89a; +} + +.x-date-inner a:hover,.x-date-inner .x-date-disabled a:hover { + background: #faedc0; +} + +td.x-date-mp-month a:hover,td.x-date-mp-year a:hover { + color: #123; + background: #faedc0; +} + +.x-date-mp-ybtn a { + background: transparent url(../images/slate/panel/tool-sprites.gif) no-repeat; +} + +.x-date-mp-btns { + background: #dfecfb url(../images/slate/shared/glass-bg.gif) repeat-x scroll left top; +} + +td.x-date-mp-sel a { + background: #dfecfb url(../images/slate/shared/glass-bg.gif) repeat-x left top; + border: 1px solid #abc; +} + +.x-date-mp-btns button { + background: #405574; + border: 1px solid; + border-color: #abc #055 #055 #abc; +} + +.x-resizable-over .x-resizable-handle-east,.x-resizable-pinned .x-resizable-handle-east { + background: url(../images/slate/sizer/e-handle.gif); + background-position: left; +} + +.x-resizable-over .x-resizable-handle-west,.x-resizable-pinned .x-resizable-handle-west { + background: url(../images/slate/sizer/e-handle.gif); + background-position: left; +} + +.x-resizable-over .x-resizable-handle-south,.x-resizable-pinned .x-resizable-handle-south { + background: url(../images/slate/sizer/s-handle.gif); + background-position: top; +} + +.x-resizable-over .x-resizable-handle-north,.x-resizable-pinned .x-resizable-handle-north { + background: url(../images/slate/sizer/s-handle.gif); + background-position: top; +} + +.x-resizable-over .x-resizable-handle-southeast,.x-resizable-pinned .x-resizable-handle-southeast { + background: url(../images/slate/sizer/se-handle.gif); + background-position: top left; +} + +.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest { + background: url(../images/slate/sizer/nw-handle.gif); + background-position: bottom right; +} + +.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast { + background: url(../images/slate/sizer/ne-handle.gif); + background-position: bottom left; +} + +.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest { + background: url(../images/slate/sizer/sw-handle.gif); + background-position: top right; +} + +.x-tip .x-tip-close { + background-image: url(../images/slate/qtip/close.gif); +} + +.x-tip .x-tip-tc { + background: transparent url(../images/slate/qtip/tip-sprite.gif) no-repeat 0 -62px; +} + +.x-tip .x-tip-tl { + background: transparent url(../images/slate/qtip/tip-sprite.gif) no-repeat 0 0; +} + +.x-tip .x-tip-tr { + background: transparent url(../images/slate/qtip/tip-sprite.gif) no-repeat right 0; +} + +.x-tip .x-tip-bc { + background: transparent url(../images/slate/qtip/tip-sprite.gif) no-repeat 0 -121px; +} + +.x-tip .x-tip-bl { + background: transparent url(../images/slate/qtip/tip-sprite.gif) no-repeat 0 -59px; +} + +.x-tip .x-tip-br { + background: transparent url(../images/slate/qtip/tip-sprite.gif) no-repeat right -59px; +} + +.x-tip .x-tip-ml { + background: #fff url(../images/slate/qtip/tip-sprite.gif) no-repeat 0 -124px; +} + +.x-tip .x-tip-mr { + background: transparent url(../images/slate/qtip/tip-sprite.gif) no-repeat right -124px; +} + +.x-form-invalid-tip .x-tip-tc { + background: url(../images/default/form/error-tip-corners.gif) repeat-x 0 -12px; + padding-top: 6px; +} + +.x-form-invalid-tip .x-tip-tl { + background-image: url(../images/default/form/error-tip-corners.gif); +} + +.x-form-invalid-tip .x-tip-tr { + background-image: url(../images/default/form/error-tip-corners.gif); +} + +.x-form-invalid-tip .x-tip-bc { + background: url(../images/default/form/error-tip-corners.gif) repeat-x 0 -18px; + height: 6px; +} + +.x-form-invalid-tip .x-tip-bl { + background: url(../images/default/form/error-tip-corners.gif) no-repeat 0 -6px; +} + +.x-form-invalid-tip .x-tip-br { + background: url(../images/default/form/error-tip-corners.gif) no-repeat right -6px; +} + +.x-form-invalid-tip .x-tip-ml { + background-image: url(../images/default/form/error-tip-corners.gif); +} + +.x-form-invalid-tip .x-tip-mr { + background-image: url(../images/default/form/error-tip-corners.gif); +} + +.x-tree-node .x-tree-selected { + background-color: #f2daa9; +} + +.x-tree-node .x-tree-selected a span { + background-color: #f2daa9; + color: black; +} + +.x-ftree2-selected { + background-color: #FBF0D2 !important; +} + +.x-tree-arrows .x-tree-elbow-plus { + background: transparent url(../images/slate/tree/arrows.gif) no-repeat 0 0; +} + +.x-tree-arrows .x-tree-elbow-minus { + background: transparent url(../images/slate/tree/arrows.gif) no-repeat -16px 0; +} + +.x-tree-arrows .x-tree-elbow-end-plus { + background: transparent url(../images/slate/tree/arrows.gif) no-repeat 0 0; +} + +.x-tree-arrows .x-tree-elbow-end-minus { + background: transparent url(../images/slate/tree/arrows.gif) no-repeat -16px 0; +} + +.x-slider-horz .x-slider-thumb { + background: transparent url(../images/slate/slider/slider-thumb.png) no-repeat 0 0; +} + +.x-slider-vert .x-slider-thumb { + background: transparent url(../images/slate/slider/slider-v-thumb.png) no-repeat 0 0; +} + +.x-slider-horz .x-slider-thumb-over { + background-position: -14px -15px; +} + +.x-slider-horz .x-slider-thumb-drag { + background-position: -28px -30px; +} + +.x-slider-vert .x-slider-thumb-over { + background-position: -15px -14px; +} + +.x-slider-vert .x-slider-thumb-drag { + background-position: -30px -28px; +} + +.x-slider-horz { + background: transparent url(../images/slate/slider/slider-bg.png) no-repeat 0 -22px; +} + +.x-slider-horz .x-slider-end { + background: transparent url(../images/slate/slider/slider-bg.png) no-repeat right -44px; +} + +.x-slider-horz .x-slider-inner { + background: transparent url(../images/slate/slider/slider-bg.png) repeat-x 0 0; +} + +.x-slider-vert { + background: transparent url(../images/slate/slider/slider-v-bg.png) no-repeat -44px 0; +} + +.x-slider-vert .x-slider-end { + background: transparent url(../images/slate/slider/slider-v-bg.png) no-repeat -22px bottom; +} + +.x-slider-vert .x-slider-inner { + background: transparent url(../images/slate/slider/slider-v-bg.png) repeat-y 0 0; +} + +.x-item-disabled * { + color: #333 !important; +} + +.x-form-check { + background: none; + ! + important +} + +.x-form-radio { + background: none; + ! + important +} + +.x-border { + border: 1px solid #AABBCC; +} \ No newline at end of file diff --git a/src/main/webapp/gxt/themes/slate/images/slate/button/arrow.gif b/src/main/webapp/gxt/themes/slate/images/slate/button/arrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..1052a4208fe0062f312284eddc44f0bc14df40dd GIT binary patch literal 59 zcmZ?wbhEHbmYc?Kq)IsGe7YyFRjS#)zY H7lSnb<|`2~ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/button/btn-arrow.gif b/src/main/webapp/gxt/themes/slate/images/slate/button/btn-arrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb2ef99d09007aa600012cccc1f3d968feb6c4b2 GIT binary patch literal 871 zcmZ?wbhEHbkD+XF;v_fA=RY|hqW zOShg|y7$~#AUbw!>#=Kl&jHcB|D#|u1crVHDE?$&WME)q&|v@qP@Z7maADx~;c(cX z;K65MEi&C9BHJN4&nqU|Gd9mBHpe--z%{18J+{OvzSJin z-z%xoH>D;Ztu`pLE>yd$~1JF&7S zrK&fjsz0T=FRiXWqrN|@rqA)eYkJeP^u`$(jnlIlr(`!y&2E~J(=;Qmc}8yQ%)Hjw zMJ+Rm+h-TG%_(W0Q`j-DsAFzv$DGpcx#hjHDtqTw_0Fs6n_tRYg( zZ^5Si#apHM<;1o#orXz%CoCkDRePrB$8Ad}Ols|#o$kHFHgR*mpj5&36L+1%`(te?-oKc8 z_S;J)xIp>JBhY}t84^IBY#^k{ z%4BILaK!QO0^V1q=>q?za5g{a7H5fFp)lbQi{oTf4!19CjDMQhSR{JGs(4V zaA23yIpE079T9MlNho520~4=|Rl}l49fJnJn3SCjg4Po@IEWhSB(MtcIW(#Xd+HRh z2y*i<9$|9)vw?x%N@v1h-azh_3(MIX$_^Z45|zkmWZ^cM(6D$vpTHZY-lD`7juW>Q z2!1a&8^^wB$l*9F%$n`{5YDQUXpUL&1%Jrkm^;vI)rOfqdev?*bcxQW$TWo%F zh@EePmt}W}VsnLfjiPghn`wKEe37Pgh@5PGkY{*`aDtR_f|GfQn|zI)g_Wkd&*hx0 zzQ5AuJyB#lP+~n%V@O|gK2l^qQ)NnFc0yKZOJa9KS!_dBYD{BzMOtk_R%lLTdPiJu zMOkb^S7}dXdq!GqL|AH3Xnjy;d`DYuMp|q|S!+^hen(qvRcwJ+Z-iNJgV|a^Ub%>&MZiJa?f0Ji?k7Rg@TWx-BgqU7& zf@^@2VRVIaiJfJ5igSpZZ-kd+c!^?kg?Nslc8i~Lh?{tgp?8d+XnTx$kE3pZlYNq= ze37Mpl&EZek9&`zb%>dIjh=Ibm4TF|Y=2azR#TKvicyRAoqC zb3<8cLRV=(Rc1|PdP-q+NnmtCSZYC5XGUCZMO$q|S!+U9Xh2kDPiK5gV|PbgZ$(;c zLs)51X?{&)ct%@oL|JM-QesYJc}-+@M_g`3TWm#IYeZOSQfhusXM0FpZ%15hQfYli zU2auufH_H4Sa5`0b%{z`Ye7+7W_*rXZGCQpmwb|?aD$V7k)V&AsiLvII8I+cS!_8^ zU_n}KKv-)-TyHy3VnbVQLRxJ_UU5WRZ#`3FMqY70Rc1U8L?p&34^XgT_x3Ay7eO(G3OcoDlW#Fpj)51xv2VCd1qdd!$JDPqrQ z!@r^&H2|{41{-n25t|z;xB*Q?aIgSJG_2K8M++^)h6WmMyirjZWvsCVYca&Ihaa(} zK}H&BRHT9#DyYC3A%sjrLu{{UQIRn?8pB#pLB*DfYsge&3y#UK7D^EEOcGlaOjc15 zFi--+nmOipbIFoTJ{cuzmvlK#Y=TuZ(-y38!if-^#72ut740$;YebC02@$bLVW$)o zLB`r9pb!B{Y)%B~L`6^(3I%JWl(I=FvGwIkMM*@O1#6#FI!kQ2=(2<=6;VNj5=pQ| z3Mr|i65A4}E>V#ZtSZ5pE3mr%5*re4ZYq#7Y%q{eaA~3#16wKNb!7u?!Y~*<2a7BF*K?G~BxVcMgnPi+vMM88e z1Z%*&5;DdbbL=r|>^uQwY~6@M2_zL+8AK$kJ%J-TvF)@|MLY_%OpeCH2F^F&fK!nq zlSm>7Ye2_VNhL*Bgb5}}Go7Q;Pj4gj)Y@2$qtlLXla18a#Dk63K|7O;BiV3M5jJqg zgLck3^UUMiI@Jx--9KOdo%har7uEOIfAbW$&rKI@x8RBEY7$2^`s1n--g)bsn@+jwvSXh5>9pTId+fT~&N}YA|Gqoj zy>Cvu@V-x;{N=_g&b;WzH~%{D$15*=?bjD?Ogp(p554u@KfgNoeGPuAET9ASsEFcK$$3gb(?}Hj7AqqRFLJ_9$gf3(u3=gWNlRZYlb6WE zB`kM&%vwsbn9#H)F`rpYXHv77$;>4;!FkPb3bUNwJm)sk8O?P9lbr5kraG0$PHocj zo%0lDJ-vzl&vxEZp8nKlKkX?{fD&|?1Ldbd6`DO;W)TS}T=}dK6(|qpKr#;nZ zP!Bp(hw?O|L`AAmfvVJxiZrG6(}EatA;v0HRg6{;BQ3-z1u;57jH(c$F2uM5F(SdN zVqAq7Ss_Mrh*1=86(c#smush%C|WS4r`&@z^@r0pzCMVr~wx)!vnJ?&@r zTH4tERu;9e&FgJvOW4=aR<*j_EN@4fTgTc~xU9wPZ++X_;?_2}rrm9Fhud1`0@t|E zJ#KW7E8FRMx4Yn#Zg{yX-tv<7yxUE$cGsKT_G0(F&xP-G<4fQ9+LyV+U9NTUTV4J7 zx4Hk#FMtOu-~#uTzy~(4auK{>1yi@d363y?C;Z?Ff7iU~b#Hz7OW_Nnm%Z}ku!YB) z;Slfl!~vG@h%pS}4WpRBEB>&C@B3m0d$`0dPH~4x++rH*IL0{kF^q5AV-XX1#zy8b zl54EuBb)fgPR{X=mHgx>vv|o+rm~c6tYsl{`N~!PvW&yrbo7oKKImx}0;16j{mjAS``E}nc8y#^jAc9fM_NDzGPD5gTu3|GHENQ!tALDcd%H0(9D(P4@qpo10lvX{W@rF5n{U0_g; zy40iIFo$`fVO77n!>S$*jd}g+UUwMSGa(Lfc)jczYuU?Q*0OJi0}?KygxlZlxVqOJ z5;_}N(TJw^q3vYvM0;A%wy}+(L9OuM*ap;|#(2V4Lh*!GJmVj)_^_=l85_ z%~#^`V#EB}!X`FuaNhKsPrd3_&-&K8{`Ihrz3gXC``X+7_PEcz?sw1o-uwRdzz@Fg zhfnaf+(1RD!76y*n%$j zf-o3^GB|@YSc5irgE*LjI=F*8*n>X!gFqOBLO6s(ScFD+gh-f#O1Okf*o02_gisiT zQaFWFScO)2g;lh2^C<5?!Ev{reki=q;qi_!AaF7rQkq;S>rE(6Xa*-H$kq&tdrBDv#(2*YL zk*Oe(iSm)Dpf4zyk}A0gEZLGQsVFWPla?@(maqvmNs~7Jd6P3~CP2WGJqZLr*^`{m zlQVeu~mk@P(YAFd+bC!?r2$-M^m@t=kd6##ImyduAefgJs2{(8NH-0IYh1r*c z>6eI^n2gz&j`^678JUtfnUqo3vS*wt1VlnVY(~o4nbZzWJNL8Jxm7oWxn2#(A8`nVibGoXpvr z&iS0s8J*HOozz*K)_I-SnVs6Xo!r@--ua#28J^<*IiBQMp5}R;=$W4Cxt{FVp6>ac z@EM=-IiK`dpZ0m5_?e&jxu5*mpZ@uu02-hII-mqvpay!N2%4Y@x}Xf&pbq+=5E`Kp zI-wL=p%!|f7@DCPx}hA}p&t67AR3|~I-(?6q9%HxD4L=wx}q%FqAvQPFdCyWI-@jN zqc(b@IGUq6x}!YWqdxkhKpLb%I;2Eeq(*wA-|1{hx@^1Aq`jdGO}ZOT+8fNE9A2;- zCvXB)dZk#(99{4Q*`Xa`3Z`Nzrp?d{=#i#sx~AzN2KMo$XAq}vY9DcmA1N>(cv>KF zfTshZrv)M*fJz}P0H_ios1y<+h`I-gil`y~qNpR{2QU(;(;y>}3L}$B1DLv%nyQtd za3n#1B=R5+o%*Sunk17zC8+8Rs*0*qqN-NHlt?)buzCseP^)Hgs~&T!W|FIO;wR%E zC%x*cz$!6B(2}4KF~!P~$4acnnvyN)tS?y#?J}*@I<2!X3!{>)7n!Z2l993Ut>7B2 zO~5O?Qm*4#uH|}=sBkRlfGo+fuI=is0T~7OSg-cF4&!nPL}@{W1jzql`>&u@tL}33IWq01L11vAf_VGV!q$BeGi% zvQR>@uBfsp`wHy94z}YO`?hc!w{knTbX&J}d$)L-w|cv`eA~Bv`?r7_xPm*lgj=|Vd$@?3xQe^DjN7=5 z`?!!Bxsp4%lv}x$d%2jKxthDVoZGpc`?;VSx}rO}q+7bCd%CEbx~jXntlPS-`?|0j zyRtjGv|GEjd%L)sySlr(yxY6J`@6s!yuv%Y#9O?^d%Vb-yvn=0%-g)q`@GN_z0y0q z)LXsQd%f73z1q9I+}pk0`@P^S8@}Q@zT{iJ=6k;Ao4)G1zUy}*y*TU5yZ>M)j$~<`XsWJk>%MR-&vb3yHq$IbPvF3y za7Zi~kI1BQ$!t2G(3_9IAP5H7sCLWkdcWYXcuX#vQ`mukS|Fqc=eT@MuiNkVynb(a zv)yTYf`f#GhKGoWidud=Z;OzTl9QB`mX~3TZI76po}ZwhqN9|WfLWxes;jK6uCFtu zoUpXDwzs&sm9l}lzQ4f1!oy3vsKm(0%FE2n62@@O($mz{)}7GT+S}aS-elR|;^XAy z<}l&s>g(+7?dk6E^7Hh{@b&ol`un5z{Qm$03glyI%D{sN6Ds^N<&VLI5F<*QXrm#I zhZHkv+{lstgT*!&JBl1ha^lB^B~z+g`R`;%mM~+=9Ou%<%$qoKPOI5Nr_Y~2b@BWW zw5ZXeqJ|<}%CzYsrB0(tomvMf)vH*uZn3JhtJkkWxPl!^wyX-VX49%&n*lA`w{X|G zjZ3#~*SU7{>TQa5uiw8u`vM+Jc%|UNh!bl(thljbgp40co}4c-<;$4YSdbH`&!AhfE&6<|#*05ubdM&%Q?Mk$7>)w4RH}BuT@%Ro-ym*=6#*-`GI_09x z<fPTGu^X=cu{~mw7ee3n_>tCLK zzklNY{rxB4ZUGKxplk&msNiY|F6f|W4L&GgW)V(kp=1?as9|CmZs;Lk9eyZcULlTX zB3vb&sA5_vuIM6IExssYRx!?Kqf|BCsN+&O?&xDsJ^mK>(@s;V8SuIg$Wt-dPj7_rW3s~5H2s%sRv?&>QOz5Xif5y1{?Y*@{K^xU!k z%+^wDv(U=$Y_!z2Fm1KiqHt}t+>Wqqx8Qp4ZMfvNl`Kl-ru)>nFRAP9AmhF(Z@lul zOK-jD-it4}`tA#Ezy5LyaKP9OOfa}$mq>xyy4wrtYRDq1N^;4jo{X}nDzEHm%PwmQbIg{`OtYjm-|T44IxEU^&xZaCw4g!{?Pt+O z>xp#Ib}r4doK8ROX4F!vNp;m`UX8VwT5s)T*IsK0cGy;qO}3O~pY3GYYAeZh+eW?( zw~%tr?PJ|`>xg&WHtx;0jDG*^V&Hh`V9x_qv`?q2M&t4Dk7@Ugor?lIradw9P8PM_{Q z3GZ_7#%qUs^7s)?6!Ri44}EmfPtTw8)_+`m_Qq|`J%HGMKe6}X|3-fK1cs0P!RN1U zTl?-KsDAwW!cTu|_TSIo{QAF}fB&ZW9{?f5zX6s@fClUg0uxA~0y3~$3w$7DA}B!& zIk1A&q96tvqrnYw=z<<>RtG~!m=Tf?L?ArjuuQ1Jy|A!_BuXI+clE*<(xrwrM3D@0 zI4d0TP%bLCdM%yt&C<=8XD8sv^BC3YHobv)Z!>dtI@HJS-T@1xu(ZGeyxvw6dND|S++qE z5^aV&^rd9Z%UHE8=k>ktZ&((V?rk&mWKS84}C39ZJs&zT9`cdJ=;=c9kKiVhaEM3>ucdJ=;=c9kKiVhaEM3>umYc?KrsIsGe7zvW*%XUnbb g&G+{F=5KqXF=c78)1edF-f|WFP*e~X1<8~j-s)+ulcKmH|&D}Mg3=Gx)vq3#2 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/button/s-arrow.gif b/src/main/webapp/gxt/themes/slate/images/slate/button/s-arrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..546f5cc2523c3274c33707b1d2fe021a841563a7 GIT binary patch literal 152 zcmZ?wbhEHb|WFP*e~X1<8~j-s)+ulcKmH|&D}Mg3=Gx)vq3#2 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/editor/tb-sprite.gif b/src/main/webapp/gxt/themes/slate/images/slate/editor/tb-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..bd4011d548cc62fcb4ecf3a92a96414fa804cac6 GIT binary patch literal 1994 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/form/date-trigger.gif b/src/main/webapp/gxt/themes/slate/images/slate/form/date-trigger.gif new file mode 100644 index 0000000000000000000000000000000000000000..5da5850f7963d274f9672aeb21aabec6693100e1 GIT binary patch literal 1612 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 Q9FqGS4K{Pf06^gX0oBSl{r~^~ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/form/search-trigger.gif b/src/main/webapp/gxt/themes/slate/images/slate/form/search-trigger.gif new file mode 100644 index 0000000000000000000000000000000000000000..61e7d98dac647cdfad674def156c441e96feb940 GIT binary patch literal 2345 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 W=iMgExu4HI+q7o$X+ahi25SJY7|nnH literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/form/trigger.gif b/src/main/webapp/gxt/themes/slate/images/slate/form/trigger.gif new file mode 100644 index 0000000000000000000000000000000000000000..d2db1bd8289e77ca4efacf54bccfe1dbad7cde14 GIT binary patch literal 1657 zcmeH`={ws80LOnMsbgr`HKD7gi*{?(k=CpermA6UsdgT-@Wkz~l~{l56T`@H!)&-bj~=NR|sIKT#= z0>CjW&cP?-7#8p1A9L~|!96JP6fWK?a4ul?^EHwMDIGO~L)xe{?nQ&{V83j-H$&Xo`jHe$dPRhTGkHx2Ek5^_N93=em!*VvW zCS%w=sxD(@oCUvbzDTIbaoA$PPz4T)d8e;AIN;10*=#7*m(FH`62mR;roDq(6%g^0 z910vUcZ-APACa;-LOjZm*Iz_m;@iEFF7ZPVsAugkU+-t_U__X-Wr8#&6=^>SJR{b! z8OZ`&T&}Z7O^WU5(hoQu$3Y(@u1H>z3a?1^ES;BzSU{chQYdGBMYgp(xzY{twEAB7 zS=tz|FC=NTAB^C(_JhvaRXK{vRSkSV2;dKZt@P)^P9hotFzRz!Q+x!`BNQL&Y{^Qb z&9~A~ZxhRQqlCY>YYNW;d1(sI5$!(@1J4#$0Kp;2>tkR9PcR1BY1h?JRGvz8iEu%v z0+sZQi6qgf_3_X!AoI^?wdKZRVn}kvlyM_YvoW1`U-@DxJ2P3N$=Z!}o6ZXZUe4xQ zcZ+AJhrK%HXm0;vv}L0g#5!bfWadnj>+*{yNtsqJbQ~&rOH+BZe)B1d!`m9?&Mt5L P9eD%Y^%Mz(0-yc|5N9Wz literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/gradient-bg.gif b/src/main/webapp/gxt/themes/slate/images/slate/gradient-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..8134e4994f2a36da074990b94a5f17aefd378600 GIT binary patch literal 1472 zcmeIx`%jZs7{KwDTLnZd*hMh7R3%&{VK|xh5d@TrMjeTpnq?_&b8`}Bh(kowLJ^R= zwLrP_Mz6F*N-1{`N?)K@6i}uD1>V*|OIv8)A|*;9JN<2c#7;i>=A7rpCpmEmrw$)U zc7mcXc@UIVGnG~gOy34*)9Li-becMyuD$~>)ERVj219+9F_Xbm-(}8ZvefrjGxzFd z?gQ+Z2W-&U2kcoQXO_sF&Em{uap$rD-W-Vsija6n4j*~Q*W?J0hYp%tpk9;bpv@I( z@`Tz)B2B(fn=b+vZGl)@(4Z|8YYQ8+MGfzZp1v;z8bNg>jk*$vu2iBclgyVj>B^es z9|O{PvUGvmyzs<9PmwK9WcqTTMPJ^kuV~R%wCXE?Ha*qBP}OFjwi~K|4nuYOVl`;T zVhzx_SPOK48f&|ZG@#o^cQDa=jErs*qsPQ}W@7f3n4r(hETGq1*K1~j_Lq?Dr%LqcFxvPW zut}by5*6B{LZvEO(+Ju$Vv_!sOuZvAc4ePkK}Mg^X|R8{wv3g3jV&Qm0~*o(w;!4zGtP^}q4TE3f=4jcq2s zNTj41IT7{z(FAgK^iIzZ@_2j+Ir8!+!Q#r@%9(ju7k_5|Ghf7eqx2?7%YoH4jP!wx7HA*Q43) zwFOW=pP6ly3pn=?dHpWVl+z~h4aA7q3Dbmfk>A9h*D=1j0=ZkaJtNDl4|Dy58=OQ4 zb=w|rEX#G|6q4dPk_gFV6VcYbmUmazi7x6i6Xb&As-j$U2PJ(S9-JDYvw05^=DZ2M z-q(%65iC7!Sf=Hfs~2MFb#cc_ASYbPO$Z9ewDx-)GFuhcxKI?v{g{Fd`2H?N2mNoG a(II?Zs7)DAnPM9b=8J95L)rdV=-9sjoxm#q literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/arrow-left-white.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/arrow-left-white.gif new file mode 100644 index 0000000000000000000000000000000000000000..63088f56e1c33fd23437ab00ef3e10570c4a57fa GIT binary patch literal 825 zcmZ?wbhEHbWMSZBXlGz>`0uc0#Y_e;`2YVugfU8vhQJ630mYvz%pkAofCx~YVBipA cVC0bDXlQU?ViVMIiI|XhxRH&WjfKG)0LI-8@c;k- literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/arrow-right-white.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/arrow-right-white.gif new file mode 100644 index 0000000000000000000000000000000000000000..e9e06789044eacb8a695cd1df46449bcb2b9aa07 GIT binary patch literal 825 zcmZ?wbhEHbWMSZBXlGz>`0uc0#Y_e;`2YVugfU8vhQJ630mYvz%pkAofCx~YVBipA cVB}zNNKj~OV&PY_IbpESp@o^1jfKG)0Ls}94FCWD literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/col-move-bottom.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/col-move-bottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc1e473ecc1a48f6d33d935f226588c495da4e05 GIT binary patch literal 868 zcmZ?wbhEHb( zLO{cVgpLOZ6Fwx&_)sw8LBWC#1q=Q+toSft!~X>b{xgh%(GVD#A)xq^g_(hYn?VQU zd{CZX;BaIR=ZFzVT;Rwl#vu{Yu%W4$ky$xng~3BdrVc>?i4_ctPK=BUEM^-R4mL70 a^J-WG2rw*VW@C5a%Q0YR@NEQ2S_1&+BRBT| literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/col-move-top.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/col-move-top.gif new file mode 100644 index 0000000000000000000000000000000000000000..58ff32cc8fa2aa1be310b03bb2af77c1b77abe93 GIT binary patch literal 869 zcmZ?wbhEHbG68wVGIhem=U(^LUb4h;c?We$u2%uEc{03e(}^8f$< literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/footer-bg.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/footer-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..126120f71eef89987818dcf64e6510ae83c8e18e GIT binary patch literal 834 zcmZ?wbhEHbWMq(JXlGz}`|9@lH+SE^x%d9- zPZpr7|1;=-+z!eU3>@+d`VlJv8V|8>3M$wXTxdAR#L6ikV-V2L(7?dJ#=^p24FK}3 BP__U7 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/grid-blue-hd.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/grid-blue-hd.gif new file mode 100644 index 0000000000000000000000000000000000000000..862094e6803f522712e4d193c7becd8e9b857dd3 GIT binary patch literal 829 zcmZ?wbhEHbWMmL!XlGzJa`*r7`~Ocp_<#1%{|it4Uw-=k+VlT6U;e-I>i_*W{~x~l z|K$Du=O6#S`uzXxm;WEW{r~*q|F@t2fByde=kI?YU>F6XAuyCfK=CIF(E0xvbU>Z} m<=_zzU~q6?um%8<;zWG_ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/grid-blue-split.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/grid-blue-split.gif new file mode 100644 index 0000000000000000000000000000000000000000..5286f58f6f798184c3eeacba1352cfd39b9ae03e GIT binary patch literal 817 zcmZ?wbhEHbWMbfDXlG!Ub?iS7FpPrH5Ezjmp!kyo=M_wPS^_`om@~ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/grid-split.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/grid-split.gif new file mode 100644 index 0000000000000000000000000000000000000000..2d270017b268a93c03f7ab1935c9b3b73116b819 GIT binary patch literal 817 zcmZ?wbhEHbWMbfDXlGz>3(HKYo+czFJ&Hy{U<8JM;!hR^28RC(IzW;ElqVQC_!t;j S1Uw2B9Bks?XXD^tum%9Ja7?)X literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/grid-vista-hd.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/grid-vista-hd.gif new file mode 100644 index 0000000000000000000000000000000000000000..d0972638e8305d32d4a2419b3dd317f3c8fd3fe2 GIT binary patch literal 829 zcmZ?wbhEHbWMmL!XlGzJe){5xGZ#;uy>#l_<(QpFT5;g3%Bd$|0cmlLhGf{|q`H nPk{0S1BVoYrq2Wc#zV~Pyb=r?3JDC2Ol*7#9t#p29T=ZA+Ik8BpmKy)fQ;FxjEyk zn#^glmILesk59GE7HGM7KC*=z}wjV%1qHY^gpRtztAr;2JE*t4@Si*>$bfk5o7<{ZAM!Y|U!Ms9z1UaIM` znXFAkD$5DMguDqdKht?G7C+l$8&ELK@O?QmH4L!~Qp-;UJo*l#~ldm`Cb G7_0%830oKd literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/grid3-hrow-over.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/grid3-hrow-over.gif new file mode 100644 index 0000000000000000000000000000000000000000..bdb4095ae22cfc5999460aca39cb51ed7bc8320d GIT binary patch literal 826 zcmZ?wbhEHbWMU9w_|Cxa<=&$2k2imRy7l{$?I84Q=a1*R{(QWlISNKYU<8DK4g(N? q@&W^gJOe+6jK_utjLaOoA`vGxC^9lJEAa^^C^Q@es$pSaum%87E0rt& literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/grid3-hrow.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/grid3-hrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..e72e2211abee5f3181aca50fb285db1d6947d790 GIT binary patch literal 828 zcmZ?wbhEHbWMYtD_|Cv^>CW9pFJC@>_3Fv%S5Mx&eDVfJzJB`l)tB!;$x$#G0>eB6 xbU^+C%^ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/grid3-special-col-bg.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/grid3-special-col-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1481dca2628da571fd92aa0466683e0fa3b595f GIT binary patch literal 837 zcmZ?wbhEHblwe?DXlGzJb>+sZcOPHB|M>R9r*|JezyI{*!{@IbzkL1i>o>zF7!85p z9s-I#S%6;r&!7YHC@4=ba40bda>#gmIKarv!7ZX-kkHV;z{nslr{jQv6El~jRSSoL H0)sUG8dxQ~ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/grid3-special-col-sel-bg.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/grid3-special-col-sel-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..34b242d096a9333238e322da961781735f3f6b9c GIT binary patch literal 847 zcmZ?wbhEHblwe?DXlG#fc%kb1qqShP?)#(l-yd)I{&?e$CtH3z-TLF{_8-r7{CKwW z=kq;3U+n$)^1!cGhkw03^6Sm^ve01`ZAl3=Aw`8Wjc)54G_t N`>m-EbZ}s>1^{v}VP^mU literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/group-expand-sprite.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/group-expand-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..9c1653b48dbd2d4bb00886c379ba3a66813737c4 GIT binary patch literal 955 zcmZ?wbhEHbuiX3i z{QdXWpZ@~^!zdUHf#DSbia%Kx85kHDbU@w$?_tHlbAgvKT&29}T*1_wr_8B7v4Oad0D zH!!O=%UO7AS#fc($7HS8Q(IPEULLU6Yp&PURaaMg26lV0F?{M|skyG2(-{0TB%q{1$Bh!Jw8USBOURwYF literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/mso-hd.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/mso-hd.gif new file mode 100644 index 0000000000000000000000000000000000000000..669f3cf089a61580a9d1c7632a5b1309f8d0439a GIT binary patch literal 875 zcmZ?wbhEHbWMYtKXlGzpd-4Cei~rYO`oH1Q|BaXbZ@T<{^OgTwuKwS8_5ZeO|94#b zzw`S4UDyBbzVUz0&HsCE{@-`&|NdM558VEL!C+hQ;zA>HJFm1! z#)%1x%x&D_IuR=Z8kt%-g@N({4h;>A%p3w50S6iynb`#tJSI3aHnDO`7-U>H(Adn* Pui(%j;MmmCz+epk$!Kdz literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/page-first-disabled.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/page-first-disabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..1eddc0b104db208364e7cbcdc758b68dc7877e6b GIT binary patch literal 925 zcmZ?wbhEHb6krfwXlG!Ejg3uAOiWKt&&kOtDk`#kW?5ENR#8z=2?n*bwe|J&4Gj&A zjg8IC%`Gi0t*xzHU0pprJ$-$B{r&wDCr+F^dGeGgQ>IOuHhuc^88c?goH=vOoH_I6 z&6_`e{-Q;T7B61Bbm`J%%a$!)zI@fHRjXI8-nw<`_U+sE?AdeV$dRK*j~+jM{M4ya z45MH)1O_4m6o0ZXGBB_*=zuH-p~+D|M@Hz3!NCRX zBBJbB5rPLFu!+dB#ziPTYINjL^AX#y;ZaK)E1UL&hDgVwoq{3)5ZcsLlW0qh-k ADF6Tf literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/page-first.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/page-first.gif new file mode 100644 index 0000000000000000000000000000000000000000..0cfc2f309879c86760fe37bb2fa61333b5d02f29 GIT binary patch literal 925 zcmZ?wbhEHb6krfwXlG#X`W-p3LU($t;k*{JWj!|QCp&JN<$iXB<*_AJ7gt+eU2Aq@ zqxH=#?l-qM-QMc)ai8X^o#sz>+P&MW|Mi5&{)IlrR|cKm5PoT!_uXBASGGpq-VuFg zSM1$A3HSFz-9He1Z%_P#y@~hsr{6!2{_J@C=aUhS4re?(R`B>p{*$96Pft|*ycqHF zOzz8bMXxTDy}8!<<5K>&iv@pf6+XMv@$TmAcef`0ebDpwasRtJ>)zj5_V@Mjzi(Et zkAl$5$990aA95Nmo794D54?ba#_@UWR#9T&*XX3#JoHC;9 zT^AA$CUi>5vKCzsT-@X+VB*7cW5MD!E-p6f9StiL+j%8~c_fZpa8hSr)Aw-DNVver yy@-k5WrD+jgl17+cBKk~0}q-6Lpjw15&|08*Re87>=AI#IkY+BG9M2IgEauvaIk#< literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/page-last-disabled.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/page-last-disabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..29881bea508cc5ca85359853f93a3e2e39a715f1 GIT binary patch literal 923 zcmZ?wbhEHb6krfwXlG!Ejg3uAOiWKt&&kOtDk`#kW?2aawY9bN_4N%64ULVB&CSg% zEiJ9BtzBJRJv}{reSH%rPMkb>@{}o4rcIkRefsp7GiT13GiTnsdGqJbU$kh^;>C-X zE?v5O`SMk(R;^yWdh6D$+qZAuvuDqdBS(%NJ$mZYDTYxn8UlkO1QdU=FfuT(GU$Mu z1IiN&92E@Q95Nmo794D5x0ZOrpw#ThC&pD|;COIBn~)%TmV)5H2dzR%B0PHx9yK21 zQnslOh+N>*!N#WA^5MXP0}V_{_9oujpZ@H4{G-De504c*K9c|B zXvxzP6)(@^zC2g->O$F@Ypp*n<$t?a@a$5@yPLD$-J1OOasRtJ>)zj5_V@L2_E9hz z0s|TXia%MH8Gt|sM1b-H14jh|BZrK~h6M+k*)1iW7$`L#+1CwHnK|(-d3$p{O s)`x%t2~F&ttZFX`HY+r(U=oaxNciAzos&sGtfeb-&CSgWOiT>c02lU-a{vGU literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/page-next-disabled.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/page-next-disabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..90a7756f6fd77f74fd2b5786dd3586b5c50c8d89 GIT binary patch literal 875 zcmZ?wbhEHb6krfwXlGzZPfxF?sBrl2(B9tO-QC^S*Vo_QKWWmWDO0A*oH=vh!iCG1 zFJG}@#i~`SHg4Rwb?esc+qduBx%1@7lc!IgzIgHC?c28*M!{$Z4A~G+{K>+|z`(?y z1M&eVPcU$JFtBpScx+g3u$hC^!6V}XBXb*zY)A!1phGj4Fjq*7gQ62lFOR54M?r!E kLmQ{U6cz@-#wJD`MJWvdVWq}d0_-7oPHt8|*uY>70KTb0MF0Q* literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/page-next.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/page-next.gif new file mode 100644 index 0000000000000000000000000000000000000000..39986b714b1539c5acf148267d586e5a097252f1 GIT binary patch literal 875 zcmZ?wbhEHb6krfwXlG#X`W-p3LU&n@&DFJLH#S<|+~Rb5tH-OI=9jj4-`y2>e^1nd zy@~hsr$0KJ@%TvolcOb1PgMN4l>hBw!MmHY-`$%0_i_K<*UQ;Q!Dt8!%@9!h$->A0 z1UeuBlqVQCJQx@`WIQ%3IM~d==-`p@fswh5MK+>>L(qYlTT~z<#=y~urI$xEprat6 lfuW64VG0k!#fBzE9Yrw*0b!-aSpw`KcTR3rKiI%v4FDC-XELpN*#fp_HSMJ!cW9QDDr%#{0ef##^yLTBz z!Dt8!oe)s`$->OQz{;Qlaxy4SFmU)VaC69bY*=uxnSOV literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/page-prev.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/page-prev.gif new file mode 100644 index 0000000000000000000000000000000000000000..02f24a84892b1cb5d3046570752366b0123579e0 GIT binary patch literal 879 zcmZ?wbhEHb6krfwXlG#X`W-p3LU($t;k*{JWj!|QCp&JN<$iXB<*_AJ7gt-}+~WRm zpXRHb=1+Ipz1yq*^@PX%g+9ku2A$s!er0R)?H$o~cE#S^lW=cO{Js6@_Yb6hJ{j@z zV#JS2`QI)U{JB;5_d(C!$Nhg_FaP^y75gX{4S~TI0*XIbm>GaT2SkAK1OtZ;10#ow z$A$$5n>o1SJR$@Rv$QcAcT8XqY+x0XQ*v0N@aQlb2aje8!^MYR literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/refresh.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/refresh.gif new file mode 100644 index 0000000000000000000000000000000000000000..c622b5d9a0381483e41b8aef797edb50eb7752f6 GIT binary patch literal 980 zcmZ?wbhEHb6krfw_|CwPo12@ORh*Vxl9OMOTTot6lv`h(Urv95Y* zWBSzQ{HZPZ^V+lLwB^m{NT1)GGOfLAZg2hk{+fl2@r#>d7PrML>5gC39JRV5d`)Nc zy6)&*6GB&YC9I#Ay<$rJzD4n;=Y|}boqJ$u?2+Y>x0m=`UK(~~b@Y)%h38imU*4Pk zXpR4~)&B2R`#f78_;REFv#nuI_l15~AN6gc|F`YIA9n|S+ZFhIckq|}k+083e?JiZ z{ZRDx6H%`Y)qXru_x)_)kK@HZj+Xv7UHbWY^7l)5-|ysozfk=Bb=vpW=|7&A|9DjW z{abcJL&K5vo!7Q>Uf%%Ji)-Rk-?BdM&kn$dlLt{(hr3+cc&Jm zs)9!2HkPJ#34uEw7O{3qn_jGu*? znI%LGR%8UZG&zXHo?-B~kkcyE!26ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV00930EC2ui0096U000OS0Po$iSC8I2dGX-ATgb4XLx%wY06VC` Bj$r@* literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/row-sel.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/row-sel.gif new file mode 100644 index 0000000000000000000000000000000000000000..98209e6e7f1ea8cf1ae6c1d61c49e775a37a246c GIT binary patch literal 823 zcmZ?wbhEHbWMq(KXlG!!`QrEOm%s16{{7(1pGR;1JbC};*@r(bKmL9F`S1V#{~1QX wXb24J5K#Qd0`%X11|5(uL3x6KLxe$C!6IP+Ln9*-6GOy_4GW#y85tR@0bQ{sTL1t6 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/grid/sort_asc.gif b/src/main/webapp/gxt/themes/slate/images/slate/grid/sort_asc.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4c6adb5c57e81d5026f247d522513da880f78d7 GIT binary patch literal 830 zcmZ?wbhEHb~O|{pW9nQ7{?;BPIkCf3h$#FfcOc zfP4(f6AT>D49pxd9vc=MY-VHCh&fTfaFCIO%VUnk#0KX^CXK8q8VL!^u%MTZuBM}$p?#1&KAk6o3b)c-F2F9Z4-}`z@rOHV)8~YRe}pIH!v_* F0|3@sFw_75 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/menu/group-checked.gif b/src/main/webapp/gxt/themes/slate/images/slate/menu/group-checked.gif new file mode 100644 index 0000000000000000000000000000000000000000..52d7ca7feb1bfda1acb28e7adb76f8b713020e34 GIT binary patch literal 887 zcmZ?wbhEHb6krfw_|CxK=o9JW8|~s7?Hmx}6BOeU8s{4t?;M!m5}e=`l;|0j<`;ZC0tLq=MiBw2 zi~|QAyZ5kjYB&@;aA;y+5%7~Zuqm}+0tYt(hk^pbsTN@lff)xjthl(?gPDoJ8UXq% BJuLtL literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/menu/item-over - Copy.gif b/src/main/webapp/gxt/themes/slate/images/slate/menu/item-over - Copy.gif new file mode 100644 index 0000000000000000000000000000000000000000..6d44e437154026496250eb006807787f171264ae GIT binary patch literal 833 zcmZ?wbhEHbWMU9yXlG#9e&Ocvn-5RidUWdMqtmw@pSk_`?42j~Uc6-(1*0J_0zyFX yCkxP*{~2^Zeg)+T1`as}ehwLr4G$QZ*|;=fPE25EWE5cM5D-|91X9ApU=08)?jHsK literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/menu/item-over.gif b/src/main/webapp/gxt/themes/slate/images/slate/menu/item-over.gif new file mode 100644 index 0000000000000000000000000000000000000000..238a77d961dc9cdfb47bd6e0ea76bbe3dc62829a GIT binary patch literal 833 zcmZ?wbhEHbWMU9yXlG#f{A}a5*9X77IsEPI(eH1MeSdTO``Z)0Ki@Vt5FJIMAu#Mi zK=CIF0|Uc<1|1;D0Ll{#9C8f&95Nmo9xyVqacRVyn847;D8SAkAg~|_q=bpV8UV>` Bm@EJQ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/menu/menu-parent.gif b/src/main/webapp/gxt/themes/slate/images/slate/menu/menu-parent.gif new file mode 100644 index 0000000000000000000000000000000000000000..2bdb679ddd9943ec80ff92f3acd7d2c783c9cad8 GIT binary patch literal 853 zcmZ?wbhEHb*-O!NEobHjaoB8x|gJ7f|+^IMkXYUj5 z=$GK+pXeNr>=Kyl5|rW=oa!E$<`J6i8J^)4k?9?gCMAjhBsavCU4FmU{1uw{_&*s$OL zABV7(%!!2y54SU$d(81DT+r4nVa#{tz{bVL8zr2&WGp{4ot&(}9u;wN)6)Z72Fa&n zJQglHJDXYk#hsJI3tHwoH1qX1Y*}%!QDBl*tks9c%gY1Ut!8*_eRY5>Vsn=4i3O{# zuV)tTko7KG(6l+@GM~?ZZEJ5gay&XU*ZM=l-Q5-JQa4U-e}90fftg#*W5I@phnd+m z;?7hoXgEGWnV-jD=ccD8rx_=oi>Wkz&M?oi{Tk1M;^&u^IW9J{{q^b9`L+Jb!)&e1 zQg3ewethq5R7w7&t@XS4{9?8j+&tF3*{*JO<-4b+60M)h-YqYEaB{Qrb-lm83f^5i z_%Hds-@e^H-akFOTt2_f_Sd%$SC6Ob@3;H=`~BPJ$NTTp{{Q)#^~d}==1l(TYG zJgDR}+p(aYpXtSeVj(w=1+8pB6${%WgN`e-aTQ4{Y8Pnw*2tl_WJOY!Qcc05F70hU zlzMb_btv^Jo~TgnwR$vTaj)ICj>Qvfm@Jn}bUioYNuPnxO_fRhT9T@h4V@yFP6-cM zxoC1ETjtYg@z*+3XC!y6Tskvu+Rw$aVkT8So0Y$<^V!6lHqP`}g|{@H&n@!T}4tWmrrY&wQ|MmbCRo8 zE?yL+HGlc0S*upNuYRYwdfpbMTPs&BdDiuM-G*1UwAXLG^-FWZRxYbI>rb#{=d3<; rZ&uF6b7s|Rww!UYUc2=w*KA!5rIOdV+ZAdaGV`Z%iy`N-AtlDr!kCZcQm}Pb=+6E9*=v?Mkoc&aCLp zsO-(G?8~m|&#vjushN;lJ29_rQeOR}yoM?H4O0smrxrF&D{Pux+%lu6btc0o7!84; z69S4qS%8lH&!7WxGAK_laA-1^rW`0Z=)}q;tm4w};ecZ^8;_WVN5g}LMkW>x9svP{ OhU5JT&UHK-4AuZi?l@Zj literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/panel/tool-sprite-tpl.gif b/src/main/webapp/gxt/themes/slate/images/slate/panel/tool-sprite-tpl.gif new file mode 100644 index 0000000000000000000000000000000000000000..a19505559014bfccc34ea723c2d41b78efdc9760 GIT binary patch literal 1197 zcmZ?wbhEHblw;s$_|Cu}Y3wa&>?3RHZxxVj5tw5clxr1~V;z!j7gk^&R_GXB;1E&l z5Lx0FS>hB`>Ks$<8dd5RTjm~D?iyF=5m)A(Q0$v}<8$_u_)?6&1ZpD*Bhz zPFh(%Wo7%cmF+WDcFkVZJ$HTo{Pq2FH})>vK6&BB$&0s6Te4x=vMm#r?wqxJ%j{J< z=d9T?Z~eYS>-Q|)uy^^U{qr{-UJOK=4zAd8Xyx|9tF|3lz2oTmok!R2KE8I(>5aRO zZ{B};%ia^)_Mh5(;Ow@8=e8d@zvJMU9f!{BIdX3Q@$);6Ufy-|(%xei_n)|Y@Z`nA zr!F5leeK|x>qpOCJ#y~ak#jeWoxgGH!nG3@Zk)V$`}C!or!L((b>-fft9Q-;(Y1T$ zZrr;8qC4=&w&aOL)+D|a4Tz4!R~-G|rjJ-&JG@$HAtZ$El|_u=!qkDlLo{NlmW zSC5~+Wf%q24gtlVEQ|~cMhrS2gF$(Mf#V-TDuaZ_1_eh+BQA}Y69o$$RJ-^@e;sD` zpKF$Ws-}~10fU%(ub8Tl3de`yoFLzJV_UkE8aq*Zi->&)@PpI=UZ_#PFw-#s$w{?qYx|Gbgps?`q zMVpdm8$6ZUP6^7JCv0G0PV1hg=~q?Z(9m$Oc^m7!4KuBmaZi@f4BFE0vFYg)&A?3x z3okZqXl57FDUmUL);&$d++)s!H%Z5Mruj}2(R5N~X<`+2N(9GEz-1Rif>mn&g$;Zm6}fr;l{WxF$<HD@V$ONel{CE==Y+DImbWU=0AkxuMqp literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/panel/tool-sprites.gif b/src/main/webapp/gxt/themes/slate/images/slate/panel/tool-sprites.gif new file mode 100644 index 0000000000000000000000000000000000000000..e91fb9c7191e9d58019d850de5775dca3cbca2eb GIT binary patch literal 5787 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 bDyFN53IMkXYUj5 z=$GK+pXeNr>=Kyl5|rW=oa!E$<`J6i8J^)4k?9?g+L9`W2kJWIQ)5IXPJ)cvZ|vqXX^J4U$jI@!Y)Z>}-qTS9eZsPWKa# JV`5^k1_0nCLV*AP literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/panel/top-bottom.png b/src/main/webapp/gxt/themes/slate/images/slate/panel/top-bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..f0c7ff472a1e9fa90007ae059fa910807f7ac1ac GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^j6kHr!3Jb81>C#}q}WS5eO=jauyP2Any+_XUI7&1 zEbxddW?+y5vgIlmPp@W{2MV&JJNh~@Fl_AS{*%ZGkU5gyBHjZR4`=Q@y6al{KzkMq2z`P=ZlPH{fwb^?RV&eu=g~0 z7&Md`^aw3x*~;0r+dsZesv;f4d&?157RI*h>~B6J28N*P!9Th;mCpm($l&Sf=d#Wz Gp$Pyzltugi literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/panel/white-corners-sprite.gif b/src/main/webapp/gxt/themes/slate/images/slate/panel/white-corners-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..d5b8adfd18f530a71fbbb081aef99ce7d3fc2221 GIT binary patch literal 1365 zcmZ?wbhEHb-O#2ckbM|ckkYV2M-=TeE8_mqsNaQ zKY8-x>C>mro;`d1{P~L)FJ8WU`RdiH*RNl{dGqG&+qduDy?g)u{f7@9K7Rc8>C>mr zpFe;7`t{qlZ{NRv|MBC;uV26Z|NqZ03PwXBf@$o)cwxSshn^Zjcn9V&RP8L0FYm`zr zF-J4_@BtqFqE}~TCMvM8J2W#LHMqdkyx5~ZO2Wgj@$zy%O@mgh&{qwdoSU-FS|uj5 zFee;t>NWV#*tj|4yq(5uv$wYxdAUx^)!u&4fsN(UtFxyQ9yB$v{^#>hSg_&YAx<_W zjsrUklUcfCt=nu8Ha#dLpePP@EVyV)&v)|Zs)y^;IFYNgE5 zZmqQ5er#{__niA1bK9T&t=?L2^I)esd)@4x1ujycUf-(#Ro2S3G+xPe9_t%f_uiyXw)3^T@#S`k7KZP%-zbZIm zK_j=)kGW0!MiL8~?}b{(HSo%PI)1&kOz~ zsj(p9ljVy!9nWUInBOh8>c!$7r&k$Erub!LE^JEj(wH%O(#;ji<`+q=T0W^MYSoJ6 zlcH9xT)pVls#Vi>8A)lcS#!?n+1jLMSs82hoVumGb{`w}n+-eOY2|F3DYrU%(-FPf Vnw!pBS!->%{EX|yRz^k!YXB4;a=8Ei literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/panel/white-left-right.gif b/src/main/webapp/gxt/themes/slate/images/slate/panel/white-left-right.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b07a06460800e7d7f94314d026d0bedf0ee0976 GIT binary patch literal 805 zcmZ?wbhEHbOg3%Bdks+W1@--+gFmP}&FtSK^Y*1)uU|_HY E04swEF8}}l literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/panel/white-top-bottom.gif b/src/main/webapp/gxt/themes/slate/images/slate/panel/white-top-bottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..8f4ded426b3667928d0ff1771ef7fa36112c961d GIT binary patch literal 864 zcmZ?wbhEHbWMt4`Y-eEL5LGjGi?DEuwDO3y_KdOdinZ~Mv-OF$_f2&4OL7WGb_z&w z2}*SfPIC{*@CeQH2+Q&c&-RYY@rlg!jn4Cn$@h;f2#6~Tj4uvKC=O064M{2sODPXa ztzZ}hqaiTpLqPE-3($@K8FWA{1?33_4qFDsk_Q_co!NNAbwU;xI6AR#@XMGaY;bU7 rVqxbIQ7~|DXy{jP?vnA`wB+Pujo?)=CpRrUJ>4Mr)SRD23Jlf&W|}wl literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/progress/progress-bg.gif b/src/main/webapp/gxt/themes/slate/images/slate/progress/progress-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..5671eed8cc9ab0021be389196f4bce3a266c3ddf GIT binary patch literal 837 zcmZ?wbhEHbWMoKS_|Cxa|I_~eA9w%%xby$V?f*Y){r`UB|M%6!-9j&9PE4y0uBs~Ol*7#4h07s7@3%u7$gifE<0Mt?lV*mgE literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/qtip/bg.gif b/src/main/webapp/gxt/themes/slate/images/slate/qtip/bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..32ebaaab1f271e5b8dc128e082e3b6e17f9ca969 GIT binary patch literal 1091 zcmZ?wbhEHbC;qjOEkH36)^5y-LuOFX&{rK$b zr{~{*=<|zjpI?6a{ObD`AbS1%^XuE`ThOR?;n1C|M=_Yr(Zul z{rdU&*N-p1e|`P^^Xu__wS#7 z|A6Q(82$VI|3AYh7!3hBhJfNv7NBka8FWB)g7O3d$A5-+4jGFN4F{Xqg*9SMYFN5KC+1jgZaO>LT=&JD zou8Y|&$l<^khL;tzPQ-kR3mm*N%Q69{+1qdt+qB_T^(+lad(&Kk@oco``Z{Cx9LO* zW?Wt-dvIHBw2;c3ZKjEfTJG*v^?Px5w|VRR{q>%;R6fgR7hrS$LZC<d;qG=6?@ hQ8?oKyuS_KKRo1~;Xl8w;rEY^%s0-@uXkXu1_1UvArt@r literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/qtip/close.gif b/src/main/webapp/gxt/themes/slate/images/slate/qtip/close.gif new file mode 100644 index 0000000000000000000000000000000000000000..69ab915e4dd194ad3680a039fd665da11201c74f GIT binary patch literal 972 zcmZ?wbhEHbg)|NZ;-|Nno6Q7{?;gDC_Qf3h$$FfcOc zfE)$N6ATu z!(r;m%j_$9KP-wo!oMF4bR^Z#pCLVEt6JIYJY>r`(GBHu8TKMAH hV%craN*NY1aV$`Fvrs8ibZTIkpzPfzqoBZG4FEi-n5_T+ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/qtip/tip-sprite.gif b/src/main/webapp/gxt/themes/slate/images/slate/qtip/tip-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..fcd6ffec1253ae83e693d5818227f12ea31ec663 GIT binary patch literal 4129 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/s.gif b/src/main/webapp/gxt/themes/slate/images/slate/s.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d11fa9ada9e93505b3d736acb204083f45d5fbf GIT binary patch literal 43 scmZ?wbhEHbWMp7uX!y@?;J^U}1_s5SEQ~;kK?g*DWEhy3To@Uw0n;G|I{*Lx literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/shared/glass-bg.gif b/src/main/webapp/gxt/themes/slate/images/slate/shared/glass-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..4950a854e6f0fe5ff93a40e8d9074d9d78675078 GIT binary patch literal 865 zcmZ?wbhEHbWMpt*_|Cv^^2*IqS8jmN)mx{p+&q2lHV~b?4nk+H-#K>!iq7A>d*Q~N z3%Blp&}}dYV_&{=AA&C3c>qLL!077Thga`C1hMZv0I|W`Yxf>qyZ;D6UVrfT=7Yz# z9zFpwZa;eZ^vzp_Q7{?;bPoX?kd2_cz`)_g5WOK_BGXY$VL7Xu3kix$EDQpQY%?Sr z4m5PLaAlYjFf<-#Q4rOMIIy6RnVnz7XNJSVrqkTw1}P6dJY?<=P;#4~u~A8Z!5RQI C_OrLw^Os00pB!MdKhvlVBy& z5G9jPWz#SqQZWlxF%MTYk5IFSQnQRww~AJ`j?u7=)v$@xw2jlWi`TMC(6Ud|c1Y58 zOxAHs(Q!)EbxzZDNz-#p*LTY>aLY7s&x)#8^8LpThEXsY0s|caia%MH85lGebU+RP zNC8R@OArlLSsGQA;2L~Km*?6@K5&{wr zHgR!@gm_F?z{JEN$|tiT;ebOc6RVbhLO|ky1}-L+5DtL_OhDHZhiOz8JUrCKuk5#` z!tn92K6&Rpol2vpr>5yApIcKI{QlfL`({4fDwCI&miaICTU%xN`r5kq!+pBdW^Zq8 z%YS@sZMFIH&fDz18afvzupAK-c8%bfD9Cc0U*5LkO~54PQ@q-yJI)9QGoR%)FMM_9 zWwBELr;D@AJoD32k8x$Ow7+H8CPHcF{z{tpCF=vOtqK0k>-cToD32k8x$Ow7+H8CPHcF{z{tpCF=vOtqK0k>3|4Oo?zhk&%nqbg&s68etUL&e0*ZE xcKo?LJ3l|au-JRP-`-tcU*FiAegE9v-QV9oINZ%8@4s))&(AMTv#~H(0|0y;vETpz literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/sizer/e-handle.gif b/src/main/webapp/gxt/themes/slate/images/slate/sizer/e-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..7819f0f71937ea7c158fc67021a665e9e1186fc8 GIT binary patch literal 1599 zcmZ?wbhEHbBR+}?Rsacwq{@55PaIr_xG0EBU=ma&s($G{Qdp;#mwe!t$*Y_KHABjFB@&~ z>FN4(`S5>xtiHZJvsC^3JDKV)@9r#b|9}5qY)$2-vuBsPub2H*_5JPI{&xOS1vkb*%3B47H)sjU!9@fgW zaXji^F7sH_q%`fv!Y<846-h0kvratf7LMDosN48i$KyVOTQ`#WjXp&rPjI*w@uc5b zYNpC0L#>-ClkG13STZH>RfWn_7roAImrjjp`nhy^Y@BA=%*07EpUy~Ib@J(~ zj7>AsW|y4HTt27b*h=*|HTzzwPpM`4^?X{BnAeMi>1o+qyfKbw%gxdcW(o-tK3|y!H2dUZkDB_vgCR@Av+Gbo%`PCUKb$2N~4= zyg&5M?2qnYe(N=PM@0N{HtrROzmtDd!uyWlap`OygF}+_I-3r1Rm*HTsk8pgrxTjZ zJjEyV7yEoZqxD#4^I6N!dyG%oGXE_;qs|>`a#8nn&6l%w`m!dMOr__RTn_e@HND~$ z-fMa_+&H)NTCDxsuh-&>dB5FETORxER?2qUZ?}_<+nU@dKK-`jZpHnz+pm?pmys>I hS94p|;z9lIUbEY^{CPWW<#EUDcr?NOU#0_tH2}zdw(*-O!NFz@ZY}|V1Vu*%1{Q}D3xOntZVp+gITZqr4>T}X0|1$&6TAQb literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/sizer/nw-handle-dark.gif b/src/main/webapp/gxt/themes/slate/images/slate/sizer/nw-handle-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..fdfb7dc01158743e653753b75f43851c13fd29f7 GIT binary patch literal 841 zcmZ?wbhEHb z;!hT4kpFZ*1Sn51aHugba>#gWSa7hJLr_SA;Q>Qa6AKfIfx^awqg~AG0uCAsiyiwJ H85yhrhzKBv literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/sizer/nw-handle.gif b/src/main/webapp/gxt/themes/slate/images/slate/sizer/nw-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..7655a81f6662efd5cbbda8db7b8999773f38bf8c GIT binary patch literal 839 zcmZ?wbhEHb*-O!NFz@K`sG-ghWS11_lR~0D~lkZf04zIUNGY4Gj#|0GYEBCIA2c literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/sizer/s-handle-dark.gif b/src/main/webapp/gxt/themes/slate/images/slate/sizer/s-handle-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..aeafee2ac8cf7764bd8427f9343ed8cb1b2339c8 GIT binary patch literal 1051 zcmZ?wbhEHbyui-I(9Qq?Ho+Ok&s_pDM~Tr87+E2p_>+Yh5$96uNsIb=LG zEI8QAA*>a1V#C72?E=bPb38UKI@&E^oOS2K#>L0`6`Z?dJU1;lIawokRm{mvOHWTX zNIo^kbMvyZvn`5W-8s2=`T6+{&0MlxTUK0L>@is@_Ebqm!}5T|Ub$XdS6y8lu{rDR zsjaK8uTMDKCF{Ly&CSgjm0S_0x2?UsrQq?Yx!&8?-Q8XB`PJRi+t=UU-;nAhD`UFh z;o%Np?YJ{LHaWAduMlVe}Df#Gq=3oo*f?_pO~y2e{Rpt&(AL`_MY#zch}d~H#X<< IaWGf|0N!PnrvLx| literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/sizer/s-handle.gif b/src/main/webapp/gxt/themes/slate/images/slate/sizer/s-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1abc4acc11011a4f2d67da8807479ae03da2cb4 GIT binary patch literal 1311 zcmZ?wbhEHbyui-I(9XbM6P(evV)w+AyQZw(HDmRTIcs+uKX-{?6pV(z$Or+&pDaL+ z{%6nuc^8x?7&!hjaC69bY*=uxnL}7B=ER1DhuZ~|z2BiH(bo_bWJe z$#`yBa&odp@T!=To0guQZjgLxj_2lOXJ=a!zq)gB^YZi4S(>J!zV7bs ziqEg^p5DIx{{9ALZaJTb*A0g|gtg<&?AZAD_ylF|c|JQgJv}|cIQ!n2otvMZU*Oy= z=eujm%gZZ*SI3>*we|J&4axil4!gI#y}d2<^}VyZx4*xCpqX3VZ_kd8k55e2X4hS? z^Yilyi@oRj?cMeD^^MKh_s{L!{r&xe!`*-6{rBzp`T51=)$!-|?fw1z!{gKQ{rB(t z`tLfeQ_y7OTz^3t_fkiCiK_iFSiU&Y?@CdxQJyw zndqUm^2sD0vzJdM2e@fIoe~n3`E+VT+RCTXV#;1Vou1I9`D{kYw9IESGnTDn*3L1QZu8-qeX!ouVI3eIgj H91PX~$ao?p literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/sizer/se-handle.gif b/src/main/webapp/gxt/themes/slate/images/slate/sizer/se-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..c6684f9ee5bbf2f06ea18c54a16478576e5ddb71 GIT binary patch literal 838 zcmZ?wbhEHbL21X7M355d(npwHzWIPreIMmD~$|n+Vp~0n*iH$*{;K9P<{R+-Z92^YR E04QxBMF0Q* literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/sizer/sw-handle.gif b/src/main/webapp/gxt/themes/slate/images/slate/sizer/sw-handle.gif new file mode 100644 index 0000000000000000000000000000000000000000..920621ef66c5dea2d203780ad3cdd301e65d7baf GIT binary patch literal 839 zcmZ?wbhEHb_F_q!3-qVNZQx|DV-A6h!W?b)Wnj^{5*w_%-mFl zkc?6VBXb4c#3BVF0|N^M17j-_11m#w1ziJE1B0DgB7cDlD)IDnWxv76FDj;}d#&j@ zP>8d@BeIx*fv*IF8M9S3UjquVq&xaLGB9lH=l+w(%D}+P5a1Kyx^v6MgL}81Jbw82 zh3nU@UV8QH$^ZZVSx3QW2#kyn=-iXA37m(5{DOfg9|#zvyqVpALXMs;jv*Dd&Q35C zVo=~X?6CHKy^%BbyB7)5?vyIF=O)FfPrjk_^bULG{mRr8*RMW(rIUSJeJ{(e#jn>N e-)Stq{X0`xJg4rFlHN9;VGN$GelF{r5}E)_m~^86 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/slider/slider-thumb.png b/src/main/webapp/gxt/themes/slate/images/slate/slider/slider-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..3a9423a81edb532473a4ff6830963afebaa68e63 GIT binary patch literal 1569 zcmcgqc`(}v82wSEXl<*lnPsQj>~=?MTh?@I+UjUg6fLW2(*p^0#a)CtO6zKiRaXeQ zR7pxG8n-wiX3iAitVKJZ!mq5-wQJ@QEW|u)` zzgw7_S(sl2nV6ZIndw}X8msmW!X2IM4o+(y(Lbb7+Gp{XD$;)J@E{rhzJvcOwUA$0 zrc|LuptZ9#0AO+Ja&B4?>-MlU)K*Tw!Ssqq01r zay;OCJwgM6TICUveg&9j!W3;O2)r%t3tCHHBcO8Y*ZRMD@zd!U;H1)m3eyUcnnNZ(3fbAl-;742f z$?XJ62a(z}K*J4;o6qDd?JN#SIYb3_ zaF;_+a)zYrQ8{N=!5NkDN2FY`lt)$Y$O=AH$*1lv4J!pyIe$#XpOEwENm zD>nGbwMFGRPbpd2mn`kc#QQR_s-^!kl;ylG)k%H0o6Ft({{V1qCP@eY>bD$it=;2h zeUIwpKgv)y*6Vq0oz4-L>W?B#As3%fLSuKG(BO&(U58OotS<&5ab$mQuV%k>qUL5G zdD!8P9N&Q^_}*?;OQ7}{qapiY9X(eI%hRV#GJbO^Kq8@e&&Lr6RJud4cQ_dtF%g()hLto~h5>;vuG{5Z>d+$VhER zb*GHZxc(K5Is~D~JuCZ%Mz>?nLNh-`u5ajQrA{7mIDkT(zc`Ol*K|oo1hYD0WyJO4 zH=nFBsxqM%8af1Nn(Dp+#lQQe-Q-r}JLDq1@-cDq#h>*x@Y?x%xWt`ClQ+?Z3Pzn* zsMguJ*5FCuNa@yVd;8)k4TMVtlkQPn?ho?|^1o#j6cN##U13v^kIrd0sfIQoQxfD^ zU7(_E4aC$5p}^p5(d^93%+;f=54}-M5h%}qh=|pB2P;fYUrIh&b1e4Y&Fi~P7^32OO7C|S61wL`$ZCyd^c%g%v{ z4qj?}vzT@dLm4To+4=EGYs_3(8!Z98cFqzGQ?xg5oeOcor5jgR3=A9lx&I^r?PF#L@Ck9FVdQ&MBb@03+pV(f|Me literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/slider/slider-v-thumb.png b/src/main/webapp/gxt/themes/slate/images/slate/slider/slider-v-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..3caf7a0650ffe0860a7d576ebc8d013ea00ea5cb GIT binary patch literal 1476 zcmeAS@N?(olHy`uVBq!ia0vp^x?NMQuIx8B`9--bZ=7|% z0~F#c@Q5sCVBjkOVa9Bg&DVf}Ea{HEjtmSN`?>!lvNA9*GX(gAxcWwCdBzrbCzN?5 z*ZCz?2BcQ|r8Nd*G)EP6MHlr(m-NR~Oi8Sso?JUKrEZqPe~0wOxf#t1vRW48wlB`_ zTw2n#prCt2?WC1!+FUkvx@_up+uGx{yT@@yf7pS3r-Kumk4|zvHYNDllCbN`L$9t3 zy}LT}{<`p6D`Fol4|%*g_~F{%hwH;1t&e!RHs-~;kjI;%pKgwQx+VVAhR`>gLf>o- zd%HRE{nqIB+hU(>OMbpR_2tgA=X;7??yCN+ z?_0Q~Z{fB{OLxs#vuFOs!>e~3-F)Ee&ZCzf?{9g2u;syyf$$&QB*Me?2|z-TB2|E-w0Xb@lgat3Th_{N?VRFZcHS zxU=cU-Q7R#?LBzr`jK-tPF=Zo;pT&@_a5JV^!(1_7vCNo`}X+E_s8ddJwE#L@#$ZW z&;59D{pZW;zh7Se^9mIHqhJt*Kr~lOAJAC>B|(0{|4{+M1Lasr1_s8@o-U3d6}P5d z`dvPWL4>{FY!)k<;^fGi-cCy=T;PzLY-nEn&Aec7DUWid&_3tuD!RIlSb*o_l4r zXx~z$8EiK*u4u(fS)vhh{q@(VR#i`^o9&zJv)c5Q z8t@ibyfN$DqTspX-S^*jm+5gh{hGOG!LHl6cl}j_%HQ1!W_oeW{qdJCZ{FPf&F@(9 zx#9WGEi54yOGD(BRK`vC^mEUm_tGn-F)UyD+$+wUCuDj>M0@{t$K>k^js02n-vI_wGNYHxI%;y_ z;)?6rxHheNRAnIX<<>Ht)2-sO+Fr%2|7#0oO=fvF=%w84IIWV*=u{TrY15h!snewX(*VncJ2E0>o;!PxOwyDty{Nl z-@bk4&Yin=@7}w2@BaP!4<0;t`0(MQM~@yqe*EOglc!IgK701;`Sa&5Uc7ku^5v^n zuU@}?{pQV^w{PFRd-v}B`}ZF{eE9hB(?)aQ7{?;gDC_Qf3h$#FfcLb zfE)$N6AT>x8CW@FJT@#i*v!GL5p!b0!o%$Xo*r{NHZD5CBxW3>qp)c4@qPu@2^td? zE;%__!?=g%;HIUgrz^U}&G6j3>@2sk-C{6l>y=^}2HC1i!~*t=M0VE{$9P zi@oMX9bDPII>NT+#;mWag1Hh7cgcDm%xvGBv0dm!*S9s7ISU>il2tHY7tB}jF^^Xu zVRif-KUEGn9iS@@HP6k9*psLqzdu^sy4PXnrbLFR#@1I4+%&v@zSh#Z)nV3`rXetA5}PyR$*!>=zn%O#4ov)L+b4`x5mc->6qPNwhq3GQb~ZY|jP`SiKP)~c^8 zDg&1DY|2hgsMuY$JmhNL$+@pe8h?I%#=gM*|I{_{oBTvi%=h2FuW5Vf=hLOL7VQ83 zpFvGPB8f%lnFtey+KLBF96r--HVasl9%vB>%XrARcCWshkjGny1}Ebdi2H{)@iP2CISUI#YICEc!{DxP$D-rBLG z)A!hqC4F*iCzbjvvm~B&1@DVkI#nfUrfO#NJ&Uy7gtkhxnekCKmrl!-(tI`}weN@8 atb}_f(`IF@i(KAOwMb(5Bvuv{25SK3cQ--+ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/tabs/scroll-right.gif b/src/main/webapp/gxt/themes/slate/images/slate/tabs/scroll-right.gif new file mode 100644 index 0000000000000000000000000000000000000000..feb6a76f0ae36a545fcc77242b53261680199c39 GIT binary patch literal 1269 zcmZ?wbhEHbRAJC&XlG!^&(E){taSMA(ACv7Wy+Lw>(*VncJ2E0>o;!PxOwyDty{Nl z-@bk4&Yin=@7}w2@BaP!4<0;t`0(MQM~@yqe*EOglc!IgK701;`Sa&5Uc7ku^5v^n zuU@}?{pQV^w{PFRd-v}B`}ZF{eE9hB(?)aQ7{?;gDC_Qf3h$#FfcLb zfE)$N6AT>x8CW@FJT@#i*v!GL5p!b0!o%$X+!JPaY+Q7-Q%FB+iH2eG@qPv8va$sA9+SCBOozMC+_uY(~X=Y~m lbWUzm=JUBFY&)M%sr~e0`Q%19%NG+`_f@RuXJlls1_1f>KmPy# literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/tabs/scroller-bg.gif b/src/main/webapp/gxt/themes/slate/images/slate/tabs/scroller-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..f089c0ad65ccfc9be9663e7e0d65f547e9160ac3 GIT binary patch literal 1090 zcmV-I1ikx5Nk%w1VIu$*0EYko000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV00930EC2ui03!ev000R809^?jNU)&6g9W{LbM>#G!-o(fN_^;Q z;XiX2Giuz(v17)60@ZmONm8Raf$lKkTFJ5{u8l5ZVss}^o;h3-9llhVv*Am50^{NA z>GLL0pYa6F!?~}i)2I9Xy<`d%s?>Q(ao*d?H4E2!QjLD~`V}lLtghIqc)51wCmZ?pV`H@ENKz=Nggb+zuJgFS zp2rmq4cfD2#yB^=)mT{LYSw2rqnk}T3vG0TZ`;0&JGLu%IMoRsPF!8#;>e`}b@h%Z z^5IdZ{@eFlc=UGy*%|G*b9>I0>;$48QyH@*%R-E#2E)X*~nHYE^7z!RRFtBhisCY0qG%_)8 oi!me|U~p(=W00|6`0#*{fkS}7rGvqtiG_hx!H0oCL4m;<0E5>?Jpcdz literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/tabs/tab-btm-inactive-right-bg.gif b/src/main/webapp/gxt/themes/slate/images/slate/tabs/tab-btm-inactive-right-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c378ab56fd1cabfd9f401fcca79f26c344494c1 GIT binary patch literal 1553 zcmeH``A?H~0EfQ=qzxKFrh#R$*hNwceOW*ZvPiNnGC&SBV|K(ej!nX#t=SSc3# z=z}AG4#0gT`{i5Y+HQreM`i4TC;HXn1H&fq=#+G9My8!r=;sv1d3bzLZCV)V=I?+J)PRSm=m{CJc&Txj4S7n^bcO>8JQOh%#+y;ai%+qnv=>5{oL}_lJ?@Z;(-fhUPT}IZ2hnNh3>QRYoC-vIF{a;S!W(!Ed1*c zb;Z!Oll9pvdHvy~38UnvVdd|!sCY=4d48C-PxX~RnsrXobm+v`DDIOHc+x4YVB<*J8nmoq__53CghU93f!>!;3*~0SPVfa+wxiZC@UtVd^=zrX^b8`J*0ROcF%U9&ajj_+d-SL{j_T6-<{WC-^!#) z6^(*;9P27bskHuq#&WFJ_T;#&4T%M~)$99-HLEv1s^+ZH4#ZrA=@=Sr?Pe;YX6+V^ z%~`t*iQQ|BnHrq!&e0h(Atu+!u{GsI+_t-f_%!>y{G?j@{UR*a{-88xF%=}_r#T*e zL#%Z?s;K5V7^FInqotCT=6qbmsAabTh~<1j6?>e2{;WxJF@Kq_b+y$yxvrx)7mt5PAjC53yq+!=E#1p`&LDfa95&C( z6NtTDzDTqFF&^wSlYK&|ljnP>hKnU zA6=k^CvshauqkgF2~QGG8Jko2$rm@L3!{|KOzAQI=Ioimj4gA*0RYcc{3zU-Ctdb$ bEmYDoB9^L_i;=~eE@5PeDk=Mt0FM6$i{jqK literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/tabs/tab-btm-left-bg.gif b/src/main/webapp/gxt/themes/slate/images/slate/tabs/tab-btm-left-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..9f578f1faedaefa36e80bb7a6ef112b201c95f3e GIT binary patch literal 888 zcmZ?wbhEHbWM(j8XlG#XO|Q#to1fdUFu!YYQP1+?zU3u-E6OIWET6QheA4RbDeJ1I z0?~$=X&Y*1Y^@?@chD9!IOl*7-9uI&jIT%y|7!nwn8F*zFDi|0YSU4HffC3Ad f8hFGRaxO3&U}k5KH(+2;+``^0EU0qj-s2H*$9vYum%UElnn)0QCwI=+IzAXlMxp&XX0^x!CmO4&frh)`_l-2xU`9GFf&#s2Zl^8wyG$#Wqp0vVEma5xE2 z0O0(!o8doXpMS@Xzr>{E#-!$js6(*iW*nsjU)-8iO1o9g_?61Yp)v`TtlTPgZWSlL zrZfNEJNN~){NL-l|ETZz^L{U}p|7x^kJQvpY8oIl58iGbqO=W{(1wd?!jkrp(hgBM zU0lHsQ<>5`tg%Y&L={g4eAovA|F?l-Z@>-!;0PezA9>#d;A96N0mv|Zi?qn;b9llO zzjcgq#4EZnvb$}f%q=k0nb}R7yaPQ~>K@gjI!E=6V<$}abi~xcl4csCdg)JUPGsqq zr+a@`y%x&9y~V!!P}o!_@MNgl{a`c}|jCG_q#}xg+YY zh(&Mrb}fcgxmaws1CB5S5$u9d6gqh#C7{DWT1C;32-q6Q8I4)H?Uv45BfAr{YZNFM zmRbx72c#u1I`dU2LZE$B79fKu%Yzm%$_k{KsicOQkrMD{U|-eUaF+~KWu!MtRdq2~ zr>c&P@LjJ#p);=E1EIpCwFv~>dR;QvS6!c0o1y*-LuaY);{-Z&L$)YH@{!9zhUP(@ znx$zfu0?;Px$M8h8V0wxLsK)nmIr*>h6|_Y_B;+Y7<=a; z{7iidXsqesv&1t*2sFoF>Q|8c%mb=gta(sN=a`3#0)u&YQ|6Z?1d*VlBfDzOhG^ev z*boB{#HIx7irbVr`EWN!KlwUT;`C)WVr$$v9=A2&c7wYmbI&zyO+qP%*Hg#qaJQyG z1<9i`h<@YiM*))v%j2LWoaG5p!?nzY+Kd)?nB83h@o7ok{yWl#xBbt>Z%o_su^0Sz z7Etl{ou}X5;O#74a}5Iy9&bcgpQY8|tVX9;h6nWy2|RtjvN Vnry2?$XB}xlIzV~g@Xfd=0E13`e^_F literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/tabs/tab-close.gif b/src/main/webapp/gxt/themes/slate/images/slate/tabs/tab-close.gif new file mode 100644 index 0000000000000000000000000000000000000000..3bdff41712915a70612415d5bdae81297c395f4d GIT binary patch literal 853 zcmZ?wbhEHbsN2yyng%k&AWGR-@kwN;RC}c7!83T8v;5YmxJ;G z14llCHiwMIgrSnxjEQ?q`I@C5s=a;ag8W(E=o--$;{7F2+7P% zWe87AQ7|%Ba7j&8FfuSOQ!q5JGBmO>HB!(uFf}kZ+p+j0P#=4Vr>`sfH6CexDft?u z8*)G)&H|6fVg?4eLm6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV00930EC2ui0096R000OV0Gl<#*3BEZaO23CLziwHyN3`XLJSB1 EJ2X9wg#Z8m literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/tabs/tabs-sprite.gif b/src/main/webapp/gxt/themes/slate/images/slate/tabs/tabs-sprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..d7f1f32829a16d69578e4ee4925c2120b195dabc GIT binary patch literal 2625 zcmeH``BM^j1IE8-DhU}`ORTmr$biOjitw>&vs0GalH^cLa| zGukqk?Ic!5Cc7iQtg?VsMdpaIxRSe-UD;JqTAh$yFJkaJnF0yBLCR^Al{d-Cn`PB4 zGH#2U+oGs!QPs4{t6J67ZR(o#ZeE+BwnN41(C~yBo~Wl*)Kf3)=8H5BIyDc(8iAyz zzVjhp{E#o{7f5;^NCyS7!3Nn64>ib!8@nDhN&A~+{Y~=WCdF`ze4te^*s2_CRSmVN zhMJX+T2v!#-H+QePlW0bQTK>QGuqkvMBMj-r;?vMlRkVd?SC#C7?TfbmBSOtN0Z?H z`ByDq|9KGv00=<;Z2j{S0BQuL0Oil4ic-uDFv3K!Y74|1bg2rJWhS1qo(Nft3yCZXQJgu0x+!n-9@e{JFwLz{ziV&}&Y(D!;9g3gsq59lL_Fm;j^)dHWI9?C?@M@si zPfY$T!Tn8-Ahv!ev-ywM-lkX!_Mh7?Ul^91Sor?Nt0{V#T~?Iun&@@$RolG@!FSul zn7P(AQ=>)A(XW@^bSq$o_7-2C1*c2HI(-isGc}oUH8~PD<`ynJS+y@g>Az5qNW#msEne)(NrQ zf%}q1a)0GymF4R)!^j=iMKUS-6QWqfM-s5?`{ymAnKbg&sB)HXMl`pijyuDy4m37L zbL$I_yyi3{7oO$tq?R+)#U@4NJc@NtbWOX>0=I^{#)X#EQ0cKfa_R79m-x<6EiU2d0-Hpm@3PKvCZ*_8$*ntpEAGOPss zPQ7IqM=J<56_54H$to`Z~{pj&8lWd=ogh^_; z)%+`xxTJBG*uUrM>*~kfn_d@AtZJSsSeWzD(O^AZ`nGr9oAr#%v0mQ2em5V!UwS(H z+XrMSDhnjL@5Has6(&=vjH_%(JgcIWZ=>D7L4u10b7HlWj z@RHz+MWh~-cUm`REm@mU20x4y+YG%-^PIhF6(7l1^+gwefv?Foruj?Ue$^AB18LUN z5{aW>=2kE|cLn+?*L@y#m->dlY_aF~GE+9|~UtJWD;VKZF3z z+hRX00Hd-!oJat4w<8WZ0Q~2X184-mfBV>EL|Op5n}7*31;UQxkGmmYzSMh34ggSH z*&Qzc;QoCo1cnBcI45l3{zl#;qjx~o#bUX(+0Ud5{;sHVA+K!mtEEhC(o9r%v`ryd z%A$#)A}?9ml-!WAOCVf82n+$?1037k(SCVf_Oa3i%Gahw2QU-%1EP+*8VZ4KN8neU zBJOkv-DN3Du=Aj3P0_gZ1U15>=8XRm`>e8KI|*rs0bRATiw`tTK8(uL`fh`tBYTgD zJ1xs$_E6fX0)8q2p|1^5c2daxhh6`&UlgdWyeAouXxal7+v91G`dk76r{^ba^@di< zN3oDy4-ONm1mP<5sPT(ZP}^BmaY^O!jHPT~naptrFqiSm%En^v^Q_$4>!uDWn{t!q z7>xDnUim7UvpQX^_^PJ}$xutZS!_&K;!(rYP;1NX*x12^#|X8)Z3Pcw=7<28HKe~+ z3h}ExC2n-XB$-@?y9udbkOjwCOC*Ysyc%f+Lm5P<#AGw;0BzRq+HjIOPKnmZtyGmz zWEO)M@4g5YVvt}LL<4S$Q>+g{lOj^>AY)2lb8~|Q63Qg^T{eYf8DtkKlFWhwCR-I4 zITu@J$W?E1Y|$vnQtGA|YA=@vjWSE~Ts<@@lIg{93CVNQN{yP}^KNVa?dfiz mS=EhC*$kh=MZg?JG(pmfIUl};@9-PxIbeP%Zvz4Ww*3!}Vs487 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/toolbar/bg.gif b/src/main/webapp/gxt/themes/slate/images/slate/toolbar/bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..2745bae4770b88e068b989d5cfd642f172f890d1 GIT binary patch literal 540 zcmZ?wbhEHbWMW8Rc*Xz%|Ns9lX`5f%I=8faeop=L?7FG>O|x_8q%sJB$xFhm3GA!w#DQ%W!6qktL#s$=u0W@NiOS7Ebd4EDQ?NGpPErUF|D#M zwW2qlxqMQzFD-Qn4F5jpi? zSv664jgh$xK#zk1U?2&_pDc_F3?U3UAV+}Wgn_-X!J)|^(9Sc^#l_#&*;&#)z{5!{ z*m0U{kg~hm95-)o8EqvAUui8bDNRjRMMFgc4L=_ReRVZ8RXurCGc#RXOFk7|Q&S5I zHXTlL8&(qz9v)$1c5WkfAtAxrVqABb1w;h|n5_Bv#jRLG-n@PH{=>&lpTB(l_O+40 F8UQ5&poRbd literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/toolbar/btn-arrow-light.gif b/src/main/webapp/gxt/themes/slate/images/slate/toolbar/btn-arrow-light.gif new file mode 100644 index 0000000000000000000000000000000000000000..b0e24b55e7ee53b419bdd5d769bb036b19fe9592 GIT binary patch literal 916 zcmZ?wbhEHbQ@i%X_#s+qO5ao&#Bg}b_z?(JW>fAX3`Gd3KV zv*q~0?WdOQKC^1y`Sph`ZaH>k$H{AZ&)(dB?ha5d!zdUHfuS4%ia%Kx85kHDbU>Z} zknPra_q{Elh^+L|IaWAMnhoehk)Ww7DfgJW(FOQS3r4!fg_WF zokPZB!-9j&9Ku>I9t;i6?JOK-Eg1m}42&GiI(JTNTztG=!MRJubJLQOlQn`@#hl#q z)PX@z;LsGw&kuZNoAREU^J7Dz?>xbLz6~9P4Hp=tSmjiAd`Ugm!FjxZsEb>#s literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/toolbar/btn-over-bg.gif b/src/main/webapp/gxt/themes/slate/images/slate/toolbar/btn-over-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..62464c0400c5440bdd73909ca5322775872c6332 GIT binary patch literal 829 zcmZ?wbhEHbWMoKT_|Cv^_}0(kcYdC}|Lgq2UzeZ!zW(g@?U%przy9<1-Jj{b$et`3#gN7&v4Zqzw`_ELgzA$|)pg(Xe14 SBQvX#kb;4O15gDcgEauAx-gUg literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/toolbar/sep.gif b/src/main/webapp/gxt/themes/slate/images/slate/toolbar/sep.gif new file mode 100644 index 0000000000000000000000000000000000000000..1ed67097e784a11f48d957346f3691e5e4255502 GIT binary patch literal 66 zcmZ?wbhEHbWMbfDSi}GV|NsBbtnIO|vIa810w6;1CkrD30}F!=hyzl~z|3y3XwSV5 Ioh%I205;7K2LJ#7 literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/toolbar/tb-bg.gif b/src/main/webapp/gxt/themes/slate/images/slate/toolbar/tb-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..4969e4efeb37821bba1319dce59cd339cec06f86 GIT binary patch literal 862 zcmZ?wbhEHbWML3xXlG!!aPPx~`#|*Z;=Kx_O l3y+3|gNrd`R|}|8 z53JP)uGbDK)(mOXiE6YQ_XjYtsX`TuVPft(h&k*ytpy1TXBkMH95xH0PJ>qM@NVDq)HW!8m1ho=zwp#Q1CX-^8*6|9*@WC^$LO@ilX1|N3(AD zYYZ)o!NqYL7I1h1g~h`16pB1Ga^)FboyO7WP$(3ML`eJtiGN~HVvcNvur#kr^C&kCE&#W<6+0fMuoZlqs7J-tUXX7SA;TBR;M3bntMWMtR0#mdgQN%JO%QDu|SYs(; znAQtviZX@*%PfXDq$#AJu$~}=V3i_8M|p}>j5LBFAy7veC6FN)QQd$sraGaNF$(;z zfBphiXf^@R1CAJ*8b1LnVX$tgI_nz^xGm*}uLOPGnSRc8zDW~e?+5oCztI$I34U}} z3wI9wC<^qCm@6B4OEXSapTo=zb9FP$>K&D{oh#935ddYATyGcP`^(K1-$>8Bq2l@q zy@cCs-Dx^-j00b5UBI&Ka{c3STVRO4AljRp56#<6hxXce@S^qGc>5mV;$STg$|_3w zE_tFgS4}6nlZjVtrnXT>>1)pCY%X?n@7musnQI)t{?>63iK5@$ye9&h- c{iV*;*%FwYK6TA`|IN!(`W0iU0rr literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/window/icon-error.gif b/src/main/webapp/gxt/themes/slate/images/slate/window/icon-error.gif new file mode 100644 index 0000000000000000000000000000000000000000..397b655ab83e5362fdc7eb0d18cf361c6f86bd9d GIT binary patch literal 1669 zcmV;02738NNk%w1VITk?0QUd@0|NsJ0|X2J00{{R5ds1i7Z(~66B`>G9v&Vb001Kp z5h)oOFaQ8I0021w0Y3o&E-fxEFEBACCN(uSJUcx_0Rc|{08I)CQ~&^5003P90ZlnN zZ2HgaR#tRYR&iNbdS75? zU|?otXJ=+;Yin(FU|@V`YIb#ZeSCg?et>}h0EGYmiU0tO0055<5Rm`?kOl^o005Z) z0GmN+?~005%|1f>7~rUeD5005~41+4%8tpx?M0RglK2)Y6SybBAy92~17B(5YS zt0^g|FE6h$GP@!ovpPDDN=%4PP>)+%g=J@gYio~fZHaSpjd*yLX=#~kY?O0znsITT ze0->1U$sL+wn#|6N=l(?ZKHd8zjAWJ0s_Pf3(Ero%L)p|939OP64C(y(FzLN0RhLMcRH8%DjAoeXS{Ujv)EG+gtJ^wQ^{W?3v zNJh*-LCQ@{#8XqnUth>oR?f~+Utj)HQ~z6A@Lyo#VPouQYVB}x>v?Q{t%gd(L*0R{xyxG~vlatYag2Jb&>V$^kk(2*{ zf&Yw*|C5vdnwsaLq~@lni75b z|Ns8}{@~x^A^8LW00930EC2ui03ZM$000R70RIUbNDv$>R;N^%GKK1uH+KXhN+gI) zQmI(8v}vO?E0!usk6NLdNb;LSjN7_}3)gKMEm^BfQ9=}oWJFkzOv$3fZRN_A+GfF& z32BcxoBv$pj74i3x2G;S3XK)B)FeoEmXWL#snn`jv}gsDrLa^fQ>tQ`viiu;6mb&4 zIih50RjgR4R9RKTR}rL1lO$0B9ElMiAmt)9>blUBj4Y5687efWvLQo=T3ms|nUS42 zGT05w#%K~HN|L}(qt>OeA3m=K#Zlp_nV3Y10NJUdgV?}Dj3P~n6lR(~fAPA&<^wy< z3SY;ip*i$tjvF;7)cwO(hY@E;pU(dEJAMvK96x^EuyA(#I4D2W)wt>4TNE8YjvOf} zG)mrhfAgFX#~WKj)1E)1@X?1HY^b3I4=}g`${ckFf(Rmn_^}B+|J5T5Fy|aN${TUW z0S6mQFhRr!;UgPsq@e^7N-V$&6Kb%bq#Sa*Vdfi^>~mm0dsJzqm1!)YL=j6Upi2{A zuE7S7XQmMhKT=kc#-N0zk;D-~AfZ4mcqp-i8dkz#<`P*@Bc(t0{IW!$Ngy$V5I-1@ zizZxdisc(i!~o5u$IbJ_rv6JTkwg(c{D4CNyI4a65=m^j#u6#8*Ipi;`17AUTJ(BE z5kdIy0|yB7l8z8W9HFeL2U?Ou5|`ZbpQ}X_F@z60{NTU@$Nckz5JFhX#WM$9V(qqN zczc{Zzy$F_4?N^RzzK;Blf(}}6cGhE|5-BcwnvOnPkU1IumcV|U{F8}13B@74?zS0 z#dwzlam2`nic7|EPvkH$4mJotfiVMJGlaxG_)rEWKMWD>&Oe?)03;wIQ58SrAhy#rm+eCjRSRuH))@dW!7dZ& zW5o_u2R%03bq^haWeql1000EIv_ld+Sb#9`4TvW`^x8Ju-~j^zOmNFONd2>m2p`;_ zHs5>m&A|f!9AH8(f>-{JI5cc`2#jD0Go}*+k21NqFv0{8KoG$M PBfNl1GVhQS5C8x>^BLCH literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/window/icon-info.gif b/src/main/webapp/gxt/themes/slate/images/slate/window/icon-info.gif new file mode 100644 index 0000000000000000000000000000000000000000..58281c3067b309779f5cf949a7196170c8ca97b9 GIT binary patch literal 1586 zcmV-22F>|LNk%w1VITk?0QUd@002Ay07w84PX`%A3LHrS9ajJYWB>?a019mY3w!_= zeheW`4kS_$BTNt{R2C>w87x&AE?6EhTN5*F88u@cHent&Zy_^VB{*RwJ!T<2Ybrfu zEanAeNJ0@02_k<8;bxSjRY)#049Cl8e5Y1_tY3bkWN(XQaEfVlk7;?7 zZF!SzdY5*8mt2auc!8LDgq&lBt7(C!V~et7k-lw{yKsuMageiql(2i8y-tSTQHA4U zhskM;!F86%bDF?tGlSHx~QzWsjj`Ou)c+z$A_QDf}_NMrOt$@%8RPR zi>%9lsM?CJ)Qqyzkfy4!pytE%CW@Nu*TlB$=|re)xF5pzRlaC#O0*M=&Huzs>kT8$>*ZV^`Xr3 zq{{ZD&GV%F^A_)Y{V6-P_#W#@Xx7+U3jK?!?;j!ruDO*W%II z<s1(&F;b=Ka&^{@UjA-Rbn(?f%pA|J?Ea z-}(RG-{a%sWQF}}=T6!l(LfBVqwLzTzdz--gr zA>~JRUspdjz=SD#uW#3T=*1z15PotP*O<}1TXI=rW8fk~GqY79KP}1YrcVGlvzs zDl$nW+ZJ<7GW-rh3M7OOB8UkZSwRrC?KL;(Q+JJH=Ywg3PC literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/window/icon-question.gif b/src/main/webapp/gxt/themes/slate/images/slate/window/icon-question.gif new file mode 100644 index 0000000000000000000000000000000000000000..08abd82ae86c9457172c7a4fdbc527641cf28e48 GIT binary patch literal 1607 zcmV-N2Dtf0Nk%w1VITk?0QUd@02fyP7F_@vT>uhh032%o9CQF5e-A8e03mY#BzglW zcL_0l6g7B5MoUafO-xQwNKjc)QdCG)VMGais%VD1YKp&Yk+f=&xOI)E zaEiQim9}=7y?K_jd6&3+oV;3t&|-(kYnQ@tj>UPC!+4gSZh?S#&mcD?Rw3D8!n4hVIpuCNxypy7?lBc|sslAz{ zv!1E8nykH`pQ59qrl_Z?tE#T5tFf-Ly0EXZv$D0gx4OH!y?~j^f}_NSpv#4+%#5bO zjit(rsl|+~%!H%Tg{shuuF;CD-i))_m#xK;uF0IQ!Je+okgwa9u*sgY$DOs#l(p29 zwb+%o+nKY|oV(kBuJ?(u=#RDcm$&DYyyKX=;G(m`qqxkgwZo{l%AmW~pu5Wy1~n_!_~3H*|^2hyUEtQ&D)~F!=r_S`L&GoF&_N~(Sv&!PL&+@j??Yq$Bv(odm+WouL^Ss^uzv2JK z#>vRX%gf5m#L3db&e_e*)63J`)6&(_)!NwC+uGXR!PV)++V9BJ>B`#d#N777-1y4d z^3d1g(%a?H-|XGp;>6+p%jEve=>OE=@803%+~e!f;quVt`_t+E+2!%y==0m`{@(Hb z;NRop*MI`>g(&|>+<34{Oa!Wf0xe!3Pge_@yBbqQDAy z^yqLDY^(Y`Bgb#Yy&t*SHt<)MmubQE= zM_%4K|K!o54GAF7UTBq*Ob!?g0o7_ijR4L$#5Cl7WQu5*Y1Gi(Bmg6D)2&N<*T z_(l=0(9+Fy7{;fLf+vi?iGtvWSYtTY0MiN@9f&f^H7LmFMINyXBrZBDyqCps^d=g7F3EF65lHnZVrI>UYlglJe zU~oq>afkv8HsRE$YQu zh#-bkqRKD4cwz`3RWxA(1Qnd&3}YuvgUT2`;GhH*Q&3SwBCD*Dh!i~7&_D!W@DWW; z1F;hgDs>bA#0Ei30Z1pS2x5T)7=Y0SG)EyV5IfR9lMEkstO3X(t9(I08OcCnvDYWD z6Ol7qAd-p~6!7sjC){4MV~P`tbU^{7d>1~=99ZDpN7scTEv^xRGv0Vk((EBd#a;&l F06QAMRrde@ literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/window/icon-warning.gif b/src/main/webapp/gxt/themes/slate/images/slate/window/icon-warning.gif new file mode 100644 index 0000000000000000000000000000000000000000..27ff98b4f787f776e24227da0227bc781e3b11e8 GIT binary patch literal 1483 zcmXAoYc$k(9LB%H%(yfgGuR9b<4z3ocd29*O43CNd(`UWmQ=H)a>`a4DYpzOx}c(x zSlvdcWJ?+unZaR-H7>b~v1S^TyJ_?Ptx;{_9t|N0Ki69nENoJ2v3`>&g|W8&busa_So7*+dD)$ zvLc<>kt@t%F{f~h9qzG`vt^ZG;7|7JumJBhJ9Y+8Lf4suZE^fH#5_9C`L|tWUS6U8 z{=uOE0fBzowgqiH9`W<?y6`^?T9Sbi>kIro^$r3_Y4hFwk)R(#Q}G+VFY!jG?tX{A@K zA7Ak-yF;xiAyhqNys9yLRL-ovzEyCSA}UpDxeZO_LcSl+NfU}@28A3*bVbNWrHA>fZ4D_larvD z0o4={9|wFI(DV=ZJRp1#nxdfzI{Lyuvvho356v%?4p|^%j&Mta>}F3~{K0|F!GZpTzVLoC6_EgdgTr?dzB>V$ILvD;-4MrIlR(m27G@h~>JlYZ zVAt|_ro3YUVh;qD&xzwC(+MYO@wD@Y_NS8}VxR3300jn*@X<;}{z{$rL zTQ1Ygt3r~JNZK6NqxROCFAF5#=}AsXB5Gp!SiKu3HLoB=^T~;XI#AbK!S$~9M1UFk{5%nyiu}%*CZiIbNf<7_U*)eK2jmJEb7FxOYX=;RObGwm=_w(}-X91Z& zqYL6B`%{}cDrkMSM*JWx2`jXogS!VNpUr25HWVJ_hwMpzlk(}y+|3YZ)%_6gfm?u*PI1fu~NtNN%<%o?1bnQ|HcP z+A{@eE%wEmbNMT^8Mo3bU$&{4r}IL6UfVqFo%2t*Tz4deYD9aVZE~6`7TH{nSG#4; z<6vfan`>!V4h5%@)!a#Ahc&Ef--@I2iU;@wEYEC-zjIsI(0PM(`f?qQqf=C&8Tb?#p4A}3P=ZzHb8 zU%2?008r{GmdfTSw5X-f*JnevxfSlSM{Cc=no(Hy6^Zi{dugQHUH~t06Bw zQt4307HjGF&8-z0AF;fZZq8-%?^|4nr#0y83LDz+toN8`gZZg2p9Yd5@bP-%L)8(V zUmmP8OS8yf(llyk`BV+l3sY@pR^S)K>*+DB$}jc0e)m$1w?{Mi5Ahq5K8vj4mE(=f iL}jwpve+-)v>A%!R(IJo>4b>g=*8o|0J>kEob+1aSW-r_4cNB-XQ}4 zwuJt|2|GA;>uH6qh;C^RR`}W{vq<~_gN~Nj+FcA`u_3yh#y!q+eBy%mKJasu{V_B? z7Cm`lM9%$ni9SNpC$M;1ME7^M7J9cX4my~#wDw^dpKi{|C{n!8N^9z6491HQ>{K_NgvsugH z75{dfSu4pA?tk;e&yJq7Lo;|bX-&ES5a}lK18&w z4Cpazpr`#f@#?vTx$zKc2gb+mfsdByJ_eV(p&U>cv7h@-A}f%u@9E+gQgJKUq>%T2LPFBX4e8JG z+KhjP-%mWiWaBIx`lVM_vh4khqX&*SC`q(PG04p3p0a1lHIV%bp00i_>zopr06thO A@&Et; literal 0 HcmV?d00001 diff --git a/src/main/webapp/gxt/themes/slate/images/slate/window/right-corners.png b/src/main/webapp/gxt/themes/slate/images/slate/window/right-corners.png new file mode 100644 index 0000000000000000000000000000000000000000..314da072c5cb77ee0fc57b5c0c503fb5c09de8ce GIT binary patch literal 459 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz#HIvhZf;X%)#H9$(I#5JPCxhOTUBr`uxAtW<5 zl_5MeMZwTQ!K*Y!!N|bCT*1J^%Gk`x&`?3wz|_Ft(7Qt$fcn@=Jbhi+uX779a0t5j zdpQGzI14-?iy0W?DnOX=^lD~#pdd@Sqpu?a!^VE@KZ&eB%auG`978H@y}h~D@34UY zd%YYt&F7$lNvbLSS-GMeN-dhuJ@Mt zkG}Jx-#^dw8N2!Gt+(I8;vEqkrD`}^th%JaCQOHUt<#fvr(gZ^Ja@8rnn|%h?kmYB zd#CQ1R>M2<=Bk61^30~9Z*n3Qob=8y7frnxzlb|C^>82CPp&y$t{GF=(k~ylxAgi3 z`};4uzE4-5`EK{-8}hQI?m@cun%6C|>ih62%01yq*Mj|jKP(e{+4NuQkXd#7-qxO; zB@ycwB~D#V|N3p~zgdnf1LZu`SpN=1opGeh6L^;^8Q zx${1X4P{Kb^|eB$YP;I0pHVq=d(gTe~DWM4f$oy)$ literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/D4infraFWS.png b/src/main/webapp/images/D4infraFWS.png new file mode 100644 index 0000000000000000000000000000000000000000..7162c8ba0fabd09117f49d190a1cd54242351f7f GIT binary patch literal 38740 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

8s? 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%0ASJ6jBCIjHZvR=z+^Qy!<& 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/bg-pattern.png b/src/main/webapp/images/bg-pattern.png new file mode 100644 index 0000000000000000000000000000000000000000..d9ca94b4c39905ae9d7bace9c2ee0dfec54ac0ed GIT binary patch literal 945 zcmaJ=&yLbS9G+z3MmO2S=t(b5W-ppZ+bOiWZK#_r1($>p0wl|k(hktD?bLR#g_H5N zFX1EX!IKFGz4`kx zm<88iqGtwL>*{=;n?(fI5H>N;T~Ix{1uHZrP!Wm+SHc*os(?$1s^ZsBmar^J{8kIN zq${c}pTfTRpG@x@OD8Z#E@qL`+skQN0Rk3_6#TCO3>1&$~rvyeGiAxuuT z3KmJ+*pHY`LzpW%13F~};*s8^5JWrKFxixe7fj5YNW_Aar?dsy_Wz+lutO)TP446U zr*P7pMMP|qgid3ZH*R>6yNdKmOdLkzE~VGoDz?Uy(PT^`Sm~(n<&__LG)-Qu@wTnk z!-P4ZOX`+^xPsvOo?gP$qNLR{<;=nuS7r0UlqyQGQj=5(n?-rcwWvD{NXWKa@1AS! z<>sRhMBKAQV*fqyYB3GqI%VD8AIs@py$#pfAIsTZuE>KC^Tz(w=&gxQPrluaEkEoA zpM-qcV?NfOrA34P5{Ioux4K%bmdoX>{p%68Jgr-1H~Ts0dwqaPAMD5Q8vvicgPYOf P3;zu2)uwfO(f{}dAORta literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/d4infra.gif b/src/main/webapp/images/d4infra.gif new file mode 100644 index 0000000000000000000000000000000000000000..910f0a09872a491b1f1b7e1bcbe68cfe5eea1be5 GIT binary patch literal 14059 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 H0~`Mz29XB4 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/GenericResource.png b/src/main/webapp/images/icons/GenericResource.png new file mode 100644 index 0000000000000000000000000000000000000000..c9348a21a92077805483a6e962a52d96f2c2593c GIT binary patch literal 622 zcmV-!0+IcRP)=3_2NMgdhXeCFM9Bz7pb0VPlcWe2{~y65zIwQn%WwS z4Z6GCZT2VYn=!R1siz(s_;~Z)&b;@{``!v+7{Ym0ADnZM`T0jcDFs3Z$g+GKSBHl$ zEvRa2hB?iqQP|!6zRtGocAFpYeV>DLXA6P=L{U_yrf#idvlF_eCF$Xz3$R4T|EW3GdU=*s=Z=4b7rkqM8 zW`>4RH&r!GkBcsxcI7c*Jb^S!-Beq*DQ-rCw;BKQtj(EO%Yi>~ zhagE2jJ5DvAB{#Y+#&t_k!jnuX{Ay-C68ekJ(A%$Zdo$ZG+R46Uq6twwaq7n@hf?j z#*S0J%&a77)$Vv0wp;uAKUgDQ2$FOi19H!0f58C%_2*?S)!nO)$$G5k45dFo_~(eN z4m^XhH^%oj=r-gV56+xKL<(^QaT_s;xQ4h0s}|&*>pa1m`>&XJ$7T&t>FnPkJ~0Mt zU?fDe1NI&f9?JJ%K$zxb8etKh+Aoh=!<6m77XJI+_*;Mh099|+L3mS9a{vGU07*qo IM6N<$g3Q?y@Bjb+ literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/about.png b/src/main/webapp/images/icons/about.png new file mode 100644 index 0000000000000000000000000000000000000000..25f3b40f90a0c7a778763ff81598f29bad4f7a76 GIT binary patch literal 1379 zcmV-p1)TbcP)4Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx20?>!`FrQsdJlnHR>OPy zcd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_^6ZZ}PI-92wGS&j#91PI zKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3rn}7Ut74&?PWBFvy`A)a zPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C-srWU*6kiZcC!$nw*)9$7 zn6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3j}vF!)ZOnz+5)dI4jl{{ z44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8lUGNUta*C8 zn(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu-=A!MJ3Znq&n~srbFGPs zH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u z(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<*4sZI8+sFJD270UUORdLHO0nA4V) z%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRcp*ceL#HUJSllrgm5wQKR zQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3ljhU3ljkVnw%H_00J9HL_t(2 z6+KbUYZFlr{@(6pH=8xl{7#itjga_@g1rNb#fy7HJ?A`ws|uP|%)A zYcC$G9z7^hRK#M4B}$;7W^GE+G|6VOyKi@&yE!-v!(-jDEm+qFYrTF>fPj+l*# zn9fB}Q#I6EL-<^`YucO`is#Oqoe|m^%?+S~nFbL!g4b0Yw+9x^PeicQ9^z6Y0N39$ zAfRWs7lgyU=_rIkA}&JWD2aMghav}{cn$oMP@6$FE%f>ZIOaNK$pdC$GMh*rK_Pn- zshB(>Opix!I;|jaO!9tbV6Wx&B+%y7R3bMO!D5ED-zs&$hk#NwvLcoC8CUn)_`Ws?{R9VHk(~TedF+gQSL8D5xnVSSWAVY>J9b+m>@{iq7_KE}go~11+5s4;8hc+i0Xa zI1j@EX5!S+Me6HNqKzU5YQwL;-W5$p%ZMKMeR<%zp69-~?<4?8|C8S?bklXr4v&Ov zb&06v2|-x?qB`90yn>Qi%Sh2^G4n)$ZdyvTPf9}1)_buUT7>`e2G&2VU@~Bb(o+Mz zi4)>IxlSY${Dj4k={-9RzU^W5g9|2V5RZ2ZulL9s2xQbZ@r6eP9Ra5u(s|C0Nj#&4>wTSkb?%#=9?@ z^oxDy-O@tyN{L@by(WWvQ3%CyEu8x{+#Jb4-h&K9Owi)2pgg+heWDyked|3R$$kL@A z#sp1v-r+=G4B8D6DqsDH0@7OztA7aT9qc1Py{()w`m``?Y0&gi2=ROcc-9+nU^I6< zT=e_Y=vSnG@?3Ue{BW5ONFttcE!R-R_W4O01|0-|K-YNXLo2`4Qv z`r1LxR6#yf3FB%T95gJnaKKivA~Z}S9A(ZxEDK}O3T04USJ P00000NkvXXu0mjf^IS-S literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/application_cascade.png b/src/main/webapp/images/icons/application_cascade.png new file mode 100755 index 0000000000000000000000000000000000000000..da5c622eaca0deb4866135926af1d2aa5101d106 GIT binary patch literal 524 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 TcoDi$@O-22!-f$a1dje6e!W3I literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/bigcube.gif b/src/main/webapp/images/icons/bigcube.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c474628ca0573f2d9cf177ed607684a8435570d GIT binary patch literal 43552 zcmagFQ*>ovw=J4VDptj|ZKEo-ZQHh!72CG6Vy&=Z+pgHQDyQ~2?d<*E)^5A^dzcU3 zoR4$#-bWv!OGt@x^B56-`|&Lh?7z;}*B8kbyu6sIiinV+7%L+)#J7L9B(LAU|JPgk z|9bq_$6(-JG4YiXm&nCA&Fj%k+gF2-52yo$p zMYj>MwCR&&_pq_j<%?C1QB&4!o3+pINYNt)jju8C)hidR?}+ge#}6H!@=zz=Ui@v5 zEy3E4HLzJLsDefqZ|@G-dq7uGs{#obfgxQ5ZN zk+Nj9f+3sT%Uk;Rp9S5lMDUDII|(~Z*DF7fATTbg=VyfbV7^%~bd{a0_GzFI$h*w` z*b%Y%YAi@4OJWx5j5!xyu0~Pbmms=OZ?yHgDwV<92hbsjFPRJJo?;77^OWAP{YS+^TH-ArH9#iCC?wgbgu(J9Kt!?gW>a4+C;#@T` zkrlni9??8oq+}}!hPxSg^zTv%=TG|Qjx*TgmInP*{DkNHy}`#y#w?Hi8n)^Y4k0nF z2~ybWbCEz5(5v1aT+x#Vp28ofIgSO1gi1SjD0O6XvQh0k-f6w&dAx6F>9ybASWoSI zJzwX!yV|+q`|tJr-f=HK70ERP({E9?Lt@OxcXPxUB@X)Pe$3WH6@Jk3d8e?%cAURe zp9wcp@+^qJYSc7vU}hyLb|3~1C5~(aVwr@%7?o$oL4EG(2R@}171@)JYLXk?tfd`9 z%XDz>#HhVVYNyDdHjkyDTH$<8h%%~BOeYhjHV-c?q$wda?^!MT73!J3DaV-?NygzB zhoh3kQ{_pOGXQEjPN#o+O-&2Z$0-*$N4HK)jS!D2H8&Mr-^

s;?+j=&vj^H(%vgoPLn?H&xy-2Dg`$38Wm4~Xg7)*i)g88KXbA7Yt;9K(aUbX=Ay6* zl54$f6GGm`sk1vcb;$hM#PKd#03@X~i7DnfiNTvuBQ?d;VSGhxd`Ui6wWnF|)s-iA z>%h+0c`Jr`i=g-F!rR~~VAsobb)6wtFRf$$YaaM^SG9a5{Q$Uy$IXzXd}r-YiZMU4 z0S=xnQz2nAeq(a(U8Zvt#fDA&z-lmkQ#1XFtvvMw+}rUu?iYQ`G(Utu>LBfY*X2Zm zx)0mb+AE%`<+p&%rn!mMF47VBeCY@EL(Zwjd1ks*Ci8+wJkIokQQOBTO|+P1kW=(q zEBjDvjKoyNpk8s zGVRl&Q0~`t%X5s>d5fETn%(Ffifp|`s<0%`B6TfHKC}mr zKdi-T9#0*E?BSEXv#H^Cm4Lda>E{E0*fgv| z_{KhIrE4229WG1EeW&PMPJ4AS4F+xU z)W+LLnTM2h|Iv|?SEfXkkm5t~HIY?;`ItV`V!U2WZoWHal28Pd&-Dm6>0qUlpx0sw ziBWb1!HOgz1mg$J*Ca_e=d|h?eT-Ad0pT;$)J%G0W;&Vzn?Fg(K{mSx=O+`!%NCiq z7vvbFYxS0bF5ZJ^M>usLIsCg4!>o%kn%+v$@4_ywW8|4UB$4ts02ha0TMITsY|7Rk z=ahSdycXOw;48XN{zzAW00vKO$nZt(@xl6cuS|iIwfV2ymxnTuFD|7S92(Lpd}5AF zsk!1?mE03PN;BS$!g%%jJW>K0DFaJU*rJqd47&;r3TwqcxcN-aO)5D$RmosuM{0?A zOH4K%6$##b7-5cF86t`KB0(o#juy+aidLCian-b&j7nSsSgdTho4~Tu6jh^jWmgKL za6vu2@0UD@P0LYLciO`5>u^hGmm;-)MAo`5czL=Q?P-?&*hqzEHKq$v)QPI@B*qx6 zZi}5cOV6Gud||2Vw~#ij+*i}n*=Y4;vC|ZdT3V#4?|+)v$usl!8}S zLc-JqW5(C^@j=@;fkf-JTe;*hY~)Sub%I!vWCg$E&dy#^m#Ycf@w{UYD3MDyw*D?O z!^d7aBa0PpD_4N*y01{8eN_DYCu$oXspZj1XLB2x6UWp}t(oWyB6-{D=DX{D_WMW( zCUA9%3v8LTXd3{cG};ey?dR^ETfQ@;R!0D9e}=>C#%Qf}n8t4UGuaw`qRRKfiJRH% zcJ3Zgus6s%rkjyriy-`LHY2Y+v)JMirK-9cf-9CYPkh>i6V%M(q(tOKl=^dz@H%2^ z(=gENsf~V~;iQ-rW0x_x3>D&;qZN1UtrK(DSEiXHvrWvo1bGxF`0OYoPM40xC(gRu zKG-Tk2H~Q61O_eQ>cZ%}+_O=^nXEMoO;7cuxaKp*u`e?lGkG7pBQheG&(s}gZY)qf zSuHfKH6QN2R-BEoU-6@<#NS`6Xo_x)D_*M;9?Gp8WolkwrX@0zvo4{6K8%W}CNxG} z2DrpGrBSUu<=sO86ycvIh4TU4<}h-4e{O2$r!SV8SJjF@VOY|sPc7ulhHAK+DcSgJ zy6my|m#$_xo@-6m+vk8(IxdVx)+Z0-8*M)U=QO%H6`%C=oxQXcv|SAG*ZRl3L6Hvf z;T$Eh>Ku@ra;@B?m7S+4jVZltAhphcp|!A=3*6P)b*nD&mG$y;ACNIPpZ&q?E&E|B z@BpFO*OWd$I@e(P8aR!8)V4l{J^f|o>tJ>0bWi?!mpJVlqVVhJGiT%~!>X@nLn*9X9vJZ!YqgBP_bq zt-sB@H8Eb}nC!!NBH14`lK5Q*OD!=uS?}RZymGFFaK*z%Z?}MoAlrD^k^lCx2W^x!cL}~uP`@_bZ^vKsO=T(T89rraCf)sg zSpDkt(P^C7MSX3@|7S=Hox;~u@ZY+pI=BWWM%N}vr%w-f4GI?v^FVK*K*981H0dsv zR9NsCxUit5RZ>xE6!1}bNLLSOZc4kh5Xl!m z#ZfB4)lh12LG@MaO^?tES0ddP46XFASQ9^EO$2+4&J-VvxrCP9!V;S?-kO570vqv0~15w*!Y8toCBT#QjK5eGja#keCqiVe~{ zBR$Z#f-JeRx!nSiLkeOt5D6CjN>)jVGy^IsD51EBYq%9hjy1cWqopKeAT*;JJfklX zqq$L}ujiu!-P~BPW7ttGvqYkY+JkMvgT`SfCM~0s;9{rBep=c_n#lyNs1UJB2!W0LVm8S#dJf$x%WIGX<< z&>g`L!3x1f!2U;|`xa<3|Cc}~(k+7dC(y0;dCRWg9WHE1G-HmL<+xIj5UMlL_Ps}XPR%6b)2IFsx}71`)=fiK8^%hQ2dQ`dBD6Sk z1=;8m))RyWHI}(#@DgMY}YT%1_F0Im6 z@^7A5ZW%eYco+%*yGM8lN-`X^I(wOOBlu$Ljs-DjBd&H!ftbsU<-9yXMA%2_q>TqmO z^r~E%$Nh=4xx1kO$n1PLlP$whr7{{VnfJV{e!tr_Ts{@$J~>6-8o~ofL*b^o(xf-A z=JlBwqbmZihcg{)ER6X9ceSBEOfCOZ0HeZNQ% z>mW0(>FqQcAMle4A;DWBq`L(va&yZ2VZ}ksb{LQ+AV8&h-^geXCU|n&u@vwXJ`L-^ z@AW*%rKF0HkM0d@S_*nOEGMEbN2Hz%M&=>%4wq;pQc7sh@A-Jw{z*zV3pY7b!16EfDR`LtP*jby%5}RF$b$vA`pJ z=A1drbzBx!g=?Dln8}+{jU@%3sq&19q|-@%v#xfiMG`)D?=5Pft$_TZQMmv%xLcK$ zMFX?&;zz)vZCj@A*0T}_l*2?NhYpYi4;yZwjDkD765E#|KAZX2ye?lixrWd{p_ zwkgq80`~Uo?Oc0b)8dxa>FYEI&%xlPDeGOoXvB+=;Uk8&c-^ma1m!(Jm0Ay(#Oms} zqcweP_TBt+{-~2x#%b>Ha+TbuGp=O)x6LMzh2RVEg}A2Ky1G4<APq!KM?46Fw9TfzwyW{Im z|KFEUGKSw4Mt;|$+~{A!&%&;hgeO z|3*XT&x^e^B!NXPQt1i9_t)GRPV5XHFJ{U3eLQr$1p+q2dV!ILaX@ zHEiS&@+n1gWuc3`oyB$r&b&Dvlx)Pm%MibKmlOF0CbTfesQ%U3T)Z+r@vM48lF*gC z{}TuRW`Ip*7;%tjd2WDzg4rWl<&fxMD?vfCCOocY&05TtcHk=^-Lr&{P$64NLGUbH zQ<7u@wOKMjdHM^+7%ZhtR)ol4tyX?~J~8*)U?tRROo}o-k#7Ich}C#h%=(6FIy8zE zI(%wGEg29*kGU!jlCyVIa^e&vWd(Uj5>~n7aG;}W6@gk^0kkX_Md{+Ft>u6Y?s@R5q01NDE9LF_-bCK;^n|B}HLSYh^mxi$U`?}&gsY;W@t z$%FCMW!T<8nH5soxTdLR6&*@T|=h=F5< z8b$I{#gP`GSzESai?6)jO7wHHr^C{UQwelCMMRsKWax`i^XN)OyDE$p>8a(ug;z*s z<=EPu)d40hhjf*el{Vl_Y6xy`JOwM7BfH9)E+iYi^L-&&1ZI;qM?^Qrng63A=66o& z2R?%UqAuc5Q%43+Py50Sv4>6&DavkJ_OEZjGy}ZDdH2?I^f{%21G5ZIdw^6@oEsSQ z_S)~Vf}d>9Z`3j2qZz-$F;InlFu+pz{JzHNm4CMdn$XApAV~9)bS|tjd{SoZe<8yk z;2o8B?|flUo%)_VJZkkSb-+o3&ei{rsj?fMr}140k5Y9^K?Pc(L)RsNrle92_ZEWp zzH}_+qv&e4YQ7W=c-jwDgNv%IR4nyVyjjbgai-cVS6#P^t3<30yFbGZPB~vLf2gDOB_7FXxSW~km;nx6`M9m1PG7&|={9Ky-sR$IE17yJB^<42d(+!% zXp+f8uta~P)YtwrB*1Av5GZ+jPxjU2u;MRuaiHY}1|>oma4CeT?|k#%^kH<35cQeu=7llxps$hmChP4WitLQr zrizsHINfTZISaZ$1vhfKuI7u7IxlbB-K@s__mcBPlWm>!Q3iXds+9F_0o3jY2 zuIsj?T^)E<^=AGCTotsz&tN*cj$M0LvbcvL_)GH6?Fy#K56;6sy{}OG`rV&ZhBtjJ z^EPF{7jb+IK$HMYmLVJ}TdQURPT%WcSc6TfaM`FFoUtL&53Bl$R+z?)d+}42E=shj zjd9v=ulo@mthL)tlK3qBCc&Bdrt0I_50`XQ@-5a05U$+OZ!xq->%|54YUY`9Q#m6m zX=Ix!kl{#GVo;Zm9A})xgltR45^e1D25vd<7GTYESzA0g3iMcgu`YLE>aA^L8&@Z? z^W3OUtnn-f$bb8@6JyfjbCZHR!&%fg65BOP${4SIFT#uLxKMsC={GxhFYox| zX>w|_(>0^(Ow2LB(BgmO(@XHQHeye*bKc98cq^cTC%8LRC)nG*d*#6O2#RN^$20s( z?$J2YN8%-xods@%`pa`I#?vCQ;O=P|>dna^a4T!zTm14*;B5&RrYhdL_k++*>8yww z+3xGMb6Z}?jWvFkE{XYQ6E3g3Jhy8WQfX=-;n7+6x=zv;-1ES@+He@|hXG14#UM#P z0;F^dELuE_=wC7hB}%3oVh9)4A>{EoW?)~@+44dfrMZ%{QfTsEhi9S%`hVbNz(3q9 z1nc>~xcUF;a$Em?Z@s(d=X4x=m?q;w`1S-S%fBfiqqX6hbApX!R~V~Ey%iCt(=|zb zI27+TqLTNeNEgw0P~76|Om)n57cf}5eEzWispfh#0-hljCShql8eWmnZ|TbQ!i`F^ zrUCNAp_Z&1>yv_dh0P-2&9WK~^^VZ&pq+!0z_nqKfnT=53$1=ioY**jkM6_%L1p`^ zi)$_lp?Y#NCafa?n@oQtLX*Och%NJ1ZtK$y7p^Y=4R z-}orCE$;>Bd3K0mz$JFdFdLyXjig$&oVZe(35UKOK*}bs&2~J?ra1k_PU=Y2w_F{o zoBGaYdMJR#Gn0t}I|>9jO%;)B;!+t-=VQhSeGnB7+9COUfmK(<7R&BQyd3p}{c^Ar z7A~BIOmk#b<1(k7fmkc(5UH`k-FB?I^n^4UbgMz`F63}W_sM-2>RRq$&tOwwBas>s zFhaQ9c_ek(O)tKq$EP3=ml%g>*#nphzI8|aN{bIu2p@9MbFmx?gXVLu)W{2jz$}mU zWR;R6)K2d1H}t{jQCF7dJ$&8)yroL)ia=?@6yf7WMG!?(zhN24UG*LAg;-!n8pl$d zdS(guZLOL_V&`S#h7*_G5yltL@F*KKy=syt-=cWwYtv1y8bx(UjpZ0?D05Jx<1%{g zM%VrdI}8_Y1kVQ-7Y<2I`x#}0??hZ=U_ncp$5|{gCt!x-_)MODi z)5W74VIH|=;8@rv`6JLHZviD+75A+&`;+JRw4{)8%u0%3{*^FuaQ1<`n!3Zgg1#N2 zqqMAuRb&O&D2TmZy(<@S?$);~T~*idHS9%OG>0g2Q71+SPon56?PF0pO6qah$TJPf zuKM>c?vIs1tBi0oRkV&0JFZdFwiw)o97O-QM`Fo#%xcT9zyt7Tw-~w;5mbcX?&o<|3STPx&K`dA{xi zdG)l?%dX9oXF;0xQq{*i?MkKa)h)y`iR81z{YOEF5R{j&%)_Mik?{#UQMb@{TPT3{ zuivIkujM+c^kC$3fgHE@$&=di_t*;AA!rxOnC^ZW9LQebJ1xW#@cuo47yq&o>Arb( z_3%sn={R&n$GejO`tIeK6S?kYyV%s|A&!HH$#t=kwi@_ycE4`-DV3e&`1cR$WUs}i zgZ$Hi#tvLtk zumSypl$;74RVGA4x)t27{%T6l;qS4?Qs|xJ3CPh}p+*Bym_M128UU&AAt+;-;=(PC zCixjf)kWeB-^Io;C2S2>TSKtsd{KOjibshr+A-LK>lDKWqZZv0yYNU^6P-&$$(cB% zq^ppeJ=%XurjdA+-NJwrx9KxX^K_?8XU4 zosD;_O&0!Jcn#Sc{03jEcGC5vb4j>QS!YDuE&ALkqgS@;q{QDMo$$yj&U|62Zq4RK$fIYTCEU5Q%mEP8l|pr1}=-4OrNpg3xm5 zTVY$tluYScD-$JQ{R^mNH9oL_kswyv!D<~t!A`%PsX8&Qdh^&X?q*~6gCU~1uf4g3 ze|=C>y)7J&$l_p}0|5_8c-tLM) z62;~s>&I4jp3M17n|rC*YL}Dl(K{@+vNmHMh66za(}{3Y7EO9i5&O~ZylY2;6_A(n zmUWnW$Xgzv{pNaB^v!_t!%NQHymw;Y^UBX}<+9Bu|0qw;`){C#PW~5FFOk>a!vT@Y z8)OAua88U`fp7mWDq{6P8ux^d<;XTeny*LbLi>j)5zIh*+KfWI=-B1LaEMbUW1rnb z%~=74DvRAPh{hAtAnf5blNj!|GO`#fxYOtu9(74_Z?0|PWkC*Fn!-qlq=y6Haco%f zBr?XagBWOgoYEAnp4H;m{?l1<2ebJWbEP_29^>pI3Z626qp^yGrigl^X%hRLRID$H z5ly*;|1?i|x+?fML53&JqeoIZ&XmRXO?kQt@?VdxRtLpU3EL$flXbXpy# zZHx5Awj+o_=OPbaO&8NLUKM7LRUNs(ke#$$irY3REM*(o`Z}*k#X?Js)+_15fDQh^x!cf7%b9S<{dQ*U$}%Y*jOCFKp&C0*^Ox zqgt5taXf^gf@haV(G*rUP8W{mGO-wUfiR5@LETtk)FE@kMnQ*zvEv+zfKw zw664svQF7n?gY9N27Gzf{6Ssu`_milVArz8DYN{%pYwI;)q2qDeR;cvbDeR1OiGR9 zzN(XLS38IWU+dN+q=3V_*E$Z>V(@F&o^23{uDd?y=1=Y0#kM?*73XgVM&Dj~h`1TH zk!xUQK_wc~IN?k_|C@K7#+G4!R`_No=>*-if#29M;pod*>$1&LEDP}O+l||mzxT~Z zJm@re8}Op>f=pi*;YDxS^O~<+22J-D#K-}qyF7zl_G|igSr93y{wFy#AspjG@S{nV zeuN?DQz}{mh=vKx_sorGpCEL7_oqq!P9SC%C`U_<1;20JP8zCcd#Ig`WJ3K5nzaf5 z#!mv~u^LY#_#;?C)L1lSl<$N?NlBD`5AoguYWeFMWJCn%4lkkRkS9(;XeGoxW;#sc z4R9z%k-qSv04qHoG#82xyl;Bo`JD?f$a&$8)t%?x`S#(x~ zvxyKHCh4#5ZT)USSz{!J>aLX2O!g{iGbm^ygkTFBTJ* zoDj#3P5;CICs;W+@>lF&v8711;aR7Cd07e_#i%d!IY0RU_aBr(43-ME1?Ka=DFxAS zBDOLo2a)ouW}D@FER4Y2_h3xZl7n$pyNB6&n)JBx0=V%R^E$_fz9$WnvKZK9W|(X} zo-}P*E5-`dqEqX3{3yjYJMv(z- z@y@3m4KHzVzJy1IkQ0IHfj@DVqdxpZFD)=u>^H=p{T6ErL`dH9TR;TznGSB}Y4yAd z;>UXXM_T->le7cMTNtnf-9$v}ugv6k1%2n^m}Cvx?l6QSI%;Z{Hb&w3f+m3);6^EE zi$jpgQ!E%d7>uXo3KpfD|G}9;rVV8Znk^lU;fr3|3?dE_$>EkB?s{FIs>l*%LPb6pZnDAR5eK0Iy7TCC@{NwTv^qtmJTire#P8Qhv__wX&< zf?C#{Zqf{iI?RsT+38@pCdJsRRpA~KQ#iuM)pY8kg-Wg})YUrH?n_4wuu(1?q>eAp ziWhHxQ8&iQ$4?aBJbXM_O_~;EvE4XUnX|%y7+iUNMpIOB0+gJ;Y?E2^LYxyaqIp|2 z1I$hQa=loA*+a!P&c@cbo?Ba$8g#vSrz;2FW|~H1wm#-x{J(X6A%{;H{4Fdqka|XW zRzmuA$C>BOv~`59_zV*fLUxbWwCSw_kv6=(W%z1$h zo5LwbjKyeB)lugdr$!Fw1WKyLRTU1Hh+xN2Cuy0Nh?9rl60GI&`oi)Y#L0V87R6>5 zwH2n2lAg}SQYour+v)3r7G(tm0eUfVh4+WjPr$Y^ZRs?r(w~;nZA5^A(naAMg7s1g z#;F$UbZ4(K(6OwJePniA2&WfGOtPgKW@Zv&n{hEmtLjMv@LPL@aGt-la>eCmC3U%b zF5EFI`DbNOcCs`qT@G}mH5HI4iKHTvB<-0js>j`nt~T`x3SP=SrOVNlC>MpVCT1EA zZMcDu+{e6yKe+NwiyiIAMcJ?A$cUVc@vJ|sX_$%C?n<2S8p2m_C$wr^-Z<3WE2VAr zAcwPwqKtdH{yK*iyvy5_F9EZQb`wszFzi`XFMl_-}%r-#WbD}-wJhrXX!1P`hV*XIY~k~Zq}BajNd z5u-@jX$|v|*&poVocj~5rNpjw=*oNwu}+MpGUXb}jY+w&OJWYXtn0^DEUq*BOz_XH zHY#*28)j{9&mhB%+>+)nBE~jPFO#W>J+~R#r-hhZ4n{9~lAl-FP?-?9ZmX(3e_uD< zqVk^VN}spT&OF#aZ|kL?yqEBt5k|z&HnbJytLT{s&ryi?zdSU}M9&aMgT>aeH#EI1 z{I?wVOunge1`1p!3)lVv_pR1D5YJm4*1Qt?`9y5f8^tq!F)Sn&{XclHaDwjcsuf;c z_I75tnM9(Bg#ZSjY|>Li%JNU?A}-Ry3*e6e&pytl+8GFCk+uoC z+Y3H)evH4_Pj z#lODMxHnfI?F|Qwh~rMQpYJ1zP^zKYS^-KrJ-}dFCQEM0a8oGE*5R!rs1$>QK{uOw zjTWOt+ybnhPK%PtB|>@f&A3#wKY=c!hJG)Ph$|U_HUQX8Q>jsld1QWEA>7-2sA|9ryIrIh(wO7_t>(9k!X08w63I^jfq!o5l$Vivg6rP z@#N{ujH=Uxef9EI+u0VL6_uYMB~#vPSDVsa)!PCaK;xYdgEr2%2`*fGN+v7}Vt!?5FAcEd01l!&c*RH=#- z)`Es{nO!+ViCh;p!)JbR9y%Gu^iznNnC5;9LzAL59yRe9<7rL7xIdND_ZDZBNX9x5 z8zVQ6kFzinri=(%OTfU4Jml5Cf>uv8*2g(Y9Q7KVjk4>Z*^8*3o!`$v7^0!dV>*2m zmG_MU5f^;xQ7^Z&s(K|i0sEw(_OSJrv@E(M@XpHyXQ(ya`4?!X4O{A!STh(hhv&_96a-mu)?=F*yWxA7GmPrzJ=tk#cD2+c+i^E7wP^5%ttq6 zl`y)AV^pE15;hdD@L+8>c9b=m13B7P(MJGHr}RGV9S^=><~ z{kPj#<|^3!nvgjt@lFZtx!9m9;2xaS#@sTr&-VqD_947(mpu5Zzgf=I%nm%#t+2#O zG`JzHCVp5l&FEL7sd(JhnH~F>^DfH|%v?2RiTlklexzaGRwtCfavnB7?^D1gIWET2!cN?t=A&58pZ0RC$ zca)Yqf)k1S@or%_S9W#Y|tKQ7D-1T>8eE+Q@>!KE|m!HEosr51$O zfAEw$l;Wa=+j=k>tIE`47u{;y)Nm-qXU7GQnMTjW#F~0Db`=*ehNF`8Z94(2%cvPJ zx_N7W%m(?OVyzfoZY;;HQ?@=MKmM#3ti&KMvYo7xow9w+tR?#Vl>-ntp2ec&1vclB zp$CY1g&PJVnTsm~qWM$lNTOm!;i_|GKh?ihKh!X z=k2)jLa13eiV0g|E7GG|`bGzhA)jtd6olZ`pnvi0J(P%I&}!vJ2WJ)=dueqfm1qjT zx$C2r31ID|g!oBmxsKYwn#GfriI}B=F{aBY+4Hg=X{+;;se8Ez4jkzzMS-UBGC9I! zqDm0f4-$i?j86)o-NcN3p1d{_xg{p8N*88edRZl8!Zn>HX@HSg8x^9$Qn>|Ao0GeI zg=JNlL44v=6x0`u&^lOtO3{^f7Y(1NHPGVL2={+c@LlKuy3eQ^hB(J9o8xJ{kFBS+ zsfaU?jkD=%ckSOt+S9!@wwo8Xt$^{P06a=yP09wKPch?W#NfC|bIccJ15& zSe+$w?e9bJLDIwpGilQcIe~joiIy(4JOr;UTRZIJeB?C3;azjAgB8tBIQAi3&N4n* znX}mo*;!-O${d|^JBC2#)1(5~(&eHnFpzdX$PO*Qt~?DEOEf6;WpX#!!1MVK<;}A7 zV@Yk}M@ugOX}23d;~f8{$EbWVEgf^$0ViWTHvQF=*Hs9)c1~t_RIC#|LpLS{ZHS6 zKv+59yIPckJgwdY#s1u_mq?YiZ<3c&R4Q{gY-$@w!rALCvtnrwJm)D`I05sa>CI={ zuVq^s2r9A8>JUpLtzFtBkPgsU_LM>l$Uh(+{ot%zSvtU(>o5U6a^L|)n~nFOPO#iw z%G)v`R$K)!a;%9XxnO{B-9!4e}bwu1w%8eKw^K@HunsSYSJdGl2qTyfAZFXJ5 z@gz{*ur7Tzm~;Cg0166pI*V})i4-C|AOiah#bnBFbL*PQ>#~wyULkOXlIXJ8T&khL zl)`!{g(Rr}MmKGYeU%C_lGeqnmJPKkxvwyM=YAXUC?mT#NS(Ap4KBu|T8^lA?TrG# z!|6-mK6|k;FPqC$FYavvr=T??-i<@xuQ78phgYX&8`a9F_bR$gBv;DDVt%$-o0Xfc zNhrDdt#>)uuvDv(tc`Sy)snE1NMqv2?NXu)mz-nQRS3PYL6BT@mLkF7+a&aRTU0Q|^`f~fR} z5fb+k&`Fxj_e9CmNR}QhvWOC`2r_kE;Zc)#&emb$2;$mBb#D_$tEI%aSIzIt4}aWD zJhT`q4w6Mbsd7yfuZ9nURB4mM6@-^7w$f-B(#WK;2c^o={?b5FX=s!Gm`{L^L_AAAc zzaW1Bjr}Nh1l3_1S(ZH{Bs^c{;0;noS$brME4F^1lLc4-* zoAq1fINl!HP?&qqokp;P+C~SydY)V8(1KjKzd7t#`V+q(s@fG|RN~I}tqqV~XmZYD zWH$c__e>uZ>r`qSMYy=kok^R#zqRE{6m?vnf1^u01r8LxuVKE(Go4*QA#;8or1F0U zjBYS6pG4y3zu%9j&G=qV=zOvFtvZYd9M5}fJVWn78~E4mgu4j7ot|GhzK;f6+wt7} zjQ9JD+hKZt8R8rNc~vPN;0pWal~dxE63$KFq0Ap|OwZn1o_h2j2n9`)o?UR_iW=B8 zK~N+aI9XDYfjXMZ>p5zXNH-MCo4JFf2k(xeA zy=(ZQ7bFinVq7K9(X|NF^a^2cxr0c>m_1)gjUjr0w_kph#YLEf8Zm;Nx6%H^xmd%J z!>m2UaF(*gxO5Hiq#X@@q zMLB@|pHvioFmmwLzf_bJfcC!dUn(k{R=XwUnD^h9u@fH7Nx*QDTb9Y+o&2)W15^1L(%gj&Qsi{BY#?aJc@DA~x~!?OiW1~_$W`nRRF)l;dQjBqSbVM~^| zxp6<4uTb8#Xtvx@ME=r({k~d?1{cMHeo|>JwyxRFi(*xgK)bdsHGVt(46`5|Z6Oo! zUf^SzHE|bB@rG4ZL62U&0w&1?Gtpt?Cwr;*S(!NXUMYuiF-qX(M<%OnYG!j0ojwI|7zaZ}9VWjV zeuRTgOdRweG>9olo0l3@q2TyCis7;-OwBikBHM6I9GS(ioO|L`ci3D&$%LAFy0|A& zdRqi%_td2S3_%uGg%)MB=f+hUiSWTWf=zGCi43K}8In3{7nCQ=G4VAb_fa4Skt0P$* zD3W-qlZ5Kr9gU}7tBq3Vz!tQdNAqWlk!ESAw;m?A;JTJ4O9Cm)v%TUnS3+^*#Z7%A zK<#AN?0+Md{A2y0(Tl=LrE&_~{ytU|YpcH}ayxQ~O6Uw#{^yN)~+J9TKDws2ts%cFwng`|;RHXp3j_#D}y446X94x1| zXRqyc!F6x4!(*axjj~N zEdscn7!0-{!3nvyCDHU>{8a8GoA=yV;}}B(zoLs+*QkHmI|)E$C-F2r!kw)8Q7K!U z%@)cavU>N^kENXC$Vfk)$-d8*w)m{rKW%oCZ7dQD>Sxwn9<)yT+$dku>9u})7j(ZX zm>BY{894X*xJZ%!H<$^4d;6H1!-AK4W@F1Te5s7@ZKZl_k2vmFuqL{@zMoEnZu1)F z&3S7ynQ0MxISyb_QtkL?<9bJ7rg{s}E#_>a?T6U?xz4=Ffk z$Z0aGQxnng-b*wZ!!s_@d&nujgOrIx2%Uq1Qt}&LP9(TFzokajiIpc_BU=N6?ShH!jPQF zn&(x9jQ%+K!c-H0S4z$|!%g+kf18uqLQZHm-e%N-Sx88{Hdl?NVUKJEmJBbZdQa>= z{-7PKh)XDv`^>wYOt0YKVe-|Gn;Nb7{d4b7Hd)7Qg502O=nTkQG@fIP_8I>Djo^FW z5F7F7AV5J3#<^fgbge@heS9{iR^x|GZqO{u;IE$BP=kXC_cYqU_GyZG)G2D7Hj8F^ zs6`3*&s}a7Jgr23PW!7tIQpeZxpONFR}1cQHU_%s3$cW{M3+mOu|-+7DKgQvy|E|! z?2d8qxJ1VNuONtOTvbV{`_;#t)79E4q5kC8nE~85EE;-mEm$& zbY}vLqZ{-l0~8fv+tk$d^^s>rzz|96qljY|-=O$noNCb1R6T)M&R8-cDm%?Vsvwtk zGe(nUiZsEcG=Z*e?$YY8_o73bTa6ge_UgdYL$Iod8zm7Is8gtv!6$NZ7k0oJc&J7h zWFgznC&pv1sDDROhJSFZt<|r zkmqOZxVB)OH_w1QrhduwQYsX`sZ{~MT>*1GyXKEfIkB~7r{juCYjz$nfL3;DBMS?` zkd$C-D3ml%R8O_)jW$l!t=Tiq5oa>5Hf&ieCr7l3WZF7PZCS~nXt%}uRYP32Ie866 z$C?&Q=U~fUL?yFWV_Xkh;1K6iLpk0>1O^*9xPE3#fgIi6;qo$Y!w zS`LwKGeY@1=YVvN9ussf9xU3hOoz>oTYpOTxQuoh;X$0}f9lAWo5ft}+)Cw+Yk1E+ zH=lg}(;aJXMP3kX`MdZt&v&-f_H_bJ@IL4IpO1~~jrE_~e8^z%{~T}d z|5j(nCg9E5k^eihF2Br;`zzvKWK~@c#7ceKdg%UoYmEx4Q`0#r<2$11Q<2}W6=|zOvb^(Vw9XPlF#lL zW}>7G5!hugIETl3*pUZfT2=#@nT@ZRgDb3Xw5lGCRh8QNmXYK8>qFk6(OeYm6xF3+ zpm4rUbfb5T4m_C`7K#s;oXDJ-7|5yF7!%*aF6$|74H@0j&rjK&t;y_)zk{&_5*hM( z04<@jzy5-Zbph3McGlRP)|>MUC|vT=z3wj^r^Z1H`p}*e{Mb1!3Hl!5@Ap!Ce>9EBgkcq5hJq4OsQz_^7_jTsVl!3@Xar)` zDQl8BGHA36Z&4PKK%KQ;gS5~FOXWBgfH3Vtjg?F@xzEXw<#>*{R3U03sPr;K!I>{I%;uCk1`#B+3EM6_S2CfR@D2-3%2AKDZ%uu;l1H;av_ zz5@!dxgU>*%LhO`gW7c$t%aU4Qx}}i=Ua{8*N4^$wT=gak>#Y`i>=lO^=@3f)0Ho3 zWqCm+gGho!Ptyw>KIMdh-ERk;_qh^Nc_5e5^K2$elz_Vn!Ly*{FQWLQfVR(8BEOZ& zM*~YK*wrYb$I6rfL-@ON1EcX8DuYl6afx-GZmV_@6=DFlt_`^{U^kpB&oeTTUJz?r zi%z~=k%jOmI5&*=e^K@pK5>N&+h+}z7I$|BcW-fb_u}pj1I68)!F>jIm*P%wcV}?- zvVFeIZk~7dOE&u-oa7|;xz8oP%iVZ4X0X^iCp0lnb6aU@z1|p?r3*eS@F;pX-b!3& zQB8m!F=W{=S&(ioSayc?XG)K&*O;~H-y>aH1aG?i40FC?iD2bUgpvT9IatGA257@Y z;Uns$=8+Hi85Tf)XF5xN%QEVN{Ji61H0!9zU9kD_8Dz)OxNh&DkQWt^BpY=nVz)R? z29(cUl!|Cz>L$}}gVr{N7lWU zl~~hq2St!=ZlfSefZ>v|)5#@~1KPywL5{x9Ej6chcvX_UFx1ZE-sE?7_ z70|ZZm!`JK68jDE0a)7MpQ9*iozsIa(=PFWj-B`RgGOOjb==I6pKlOLRha&QYJq#7 zv{?Ia4tuHx(G|!3^iJhuRd%5?%Q{7z7-U|12+=RHiLLZ@=ykKt64qI<>~z!*pSZ5= zB&wlK(98)ec7T4c$r9ZSGL&kYq!OAimM!Swpx|j5M%g*d3?%9!XJb^`vMuoqMx*6w z!&S0LtI6`(E%92=H>bLO*Nj@nLkE8Aw=o$AF3}1K^2oFvYcXqydDkkVNsgEicE@DTc`Dq=2Xa25+v*WSk;8NT9guauRj(V1 zeB4)9Nkr9Fo|92GIxEYY6?N2wI5v=G`f@gyIKF<)D{8oR0n-=LcDZw*|Mi~G>iu$R z9dIT%+ve=Mn0eUF)j36gPSQTQ|H03lji4F$<;VM542Lg()ESkh{tJ_X-*S7V<1^0h zzz-FE0lR;eY{Pnx?f>`=v!!kFNs+*xBe~OCr^2w`@kIwP<0N>KRjYY^LhzPT4im+i z)_P>BpZe;^`lSHLtbi>YYuZl=bLR^jc5it0dAR&z)^jgr2ip2(s76y&ly^E~S|?i(gH# zR8vPWt7eod#VBXQ(xlbtS!f$8cGfCjnY_u0(?p%-WsP~|L<5~o6Q-BRi;r-Pcg9k` zW9+|S(#Sg~D+A_dO#t%b8sA#0!o08a%ZIeh+c!hcL zDv`c);IHO@6|MQstPWhV`F)R@bS2Od;d~`WkcWqT`QqPm+Ly=zUh&4zpzL880?K#< zPn?;z)f~{zR{3He*|;5roQ4%krl;lKYi6#oOqFReB!|2pySXn+?MDo+pN__RoS$xwYub>Kw&C| zF0*=`gQDR1-X{UgdsPhHqBJRiERg{iD%F^(tb3 zYUk3qlnT~2O_?v_`T*+($?QHXABwC$FllAICXFQ?l^+c3wrl%>=O6}F zeefb)xY6+;3*pkX*`J%22I$T$z^TJ)9}B~J|76+PVMb$MrD@fFYOrAOB$OlnqXmm8 ze-w{pty0D@_gfJ*3+)73i2x%ZPxC%XDnW05#+?^y=o=d^w>IFlt$&1|Fe_W0|nb(VU*UK1cQYNzT;&26s z>e45%N9QK8l>mm-qwx!MkzZZ8e=}HTbv@0MxPw#wNOZB9Xi+H|}Lb=#*)xXg4>j(-}u$cbs)M?nyOHpl?b z6LVz41w+ot25xf|Wtx$wd2Kv41H{Esn>+Z+O?+0je~r&KGsJq?|2lc0{)p4^n{&w_ z2%yspquJ7{KkXRCzlMO8*3!=la*S$j+rhu!xfDRXj*kNFQ8KrVD8^nVmjm}199qW= zQE$@6fCn7atrHHhH(4jZLxGFdKfk`%Uw`^9ixK7D#c1Zk?f)4C`2P*_LEb{JlyR9V z%SX(%R$VGBB3O@P{i)~`Es@2qF~AoCbogx-Mp#wvet7%W#4rrbWdUbcDLg$T9@m`) ze&;CFb3hA>{TmnU3EVoQnc;QxU^VPjBMr;9a%>hjdh4Cvrh|5XeiEe1FFRyj_!4#3 zbMmh)xC6}92A+FQFP5@5>AQBwe#_}Dk2uAakH zoK46)QIgW1By6)U5V-C2(Pn2{UX|Mb-{tde1`lM!9Gn+`@Q@%_pOFRJh(+iNvP*NLBY% zm)X;TD7AAXI{j~V+kz~EIx1gIx7PdipC<+Ixg|Czr|yN$(|K;xYD@rW@Yz?+XVp>7 zs8!@Iclxg!rNqojo5mvZ5Cxnb!B+1_|7oP}n;VZ##~o)5??dkfNK?L&slUqcq=-H1 zpJ3G)5JRy^9XA-Ibc068(g{NO1jC7fisZl&eryp^q!HU*;dtT28Swd$Body+AujRP zxc*F458p`WHarcZ@kbvrmH4k8NkYEscuq(2FC0-s5lxmB`pDrUP^9dqv+gA;@@3@M zi7YGWoRm}!$IP!Qu~fNVfk21)AHNv0Vpp;o1tuVkf^ZXTg~7J+&@ zxJAsaT^L!=m(PO-O-^FZXZ2JtWK_yf$+z@GX^W~C5NsQq zsnwKR2F)WY9MfccGUO*f&kPM4c9}-a6Hgfc$!Wi5;&!-HoAbtKo#pd7qiv+k*0RCT zvzGTyEA!2{T%g_f)t2JR%;QKK=Fab}i075d3abYL3;#-M!CsMsME%bNHpjyYg0{|s zOZa>?xm4W*PJwV=`D@$QeSEHeXYS}(kM_g1U1t19vsl)x`@!NMLPT;#Xv7c)mY(Pp zsce{&BG9?3{IKkB`1)Y3x~lBH9f}d#GGOBagl~*}f0tvCcO7fLS?ogx@ha+Cpgj38IXt!0 zzsEDN4!zi)TFO_*PAXOjTY#RIs>-V}&#t(Ly-r|Xkd1~thR&JF1btBW^+#@y>jneK z6rWf$nsJ|9=4pU@qpy65?p@Q}0)mh3CbsEUfWr;C7YNHcAGD|MR0wY|=rkfQcelql&;8l8zmMEqk62UwJtCW#{z>0qVU_&XDYn{CY4byFt1TyzwqC8By4yG% zMY{_%Szu{v?tJ4NFW`;h_-NY@_Gxvp+l%1M9_ydiDLr_{wuxKKN=x&_RZ9h65S?(Ogxsr?x>r~Gi6Klf zRVb+@S9?e}Qs3*=r5t6;w*bc&9RBJGsTd9WV1Maa8H0S+N3JmH95iZUeIR+7JZ}YI5d(jsIt}m!5lfQWUuN$y<#CDjL7vQ z51+ijfG^{OJ!T**8pVtPA@&F$GR&zh@xvhdK~hvwh*!g%9kjFXv<=<>g=T zL7Q(LP_;ErW7lgjPHJ*~Z?tnL2d&1QHH9|2+47JPtSxfjv`wq8+oX+X>=@55$)bfw zXz@!;);8F%F*17`((2TQ9?>3Aol17gM$mM5w2sSH`CeGApP*Z`o!CkEBCV-r-u;Xz zwLM$Czy1u{&fJM`z^H&~JBa9D27eQn6jc51HMxxRVN%n$?c|Z7zjHfg$vHH|1GfIM zIU(^YI|a-~0eC8^dV=OyBukueh^swI*<4vwbzY2&w1*fzo>iUW_nAUNHR3S3YSAat z_Fi;oM=Oz7yyOSW!ieTttdMVP>lsu=K^em?@RB zcco)ml^aP=)}Nb^tB=6=luAG3H-k)fhZpcJ`8-g`>%_|mxfOfnU$^o zD1ila%DZ04IHOJWmN5JLldLg^cMRp3Rafh3zY7xJ(Kak)6cR0>z2gf?5X=RYi`O>3 zTI%!m4%p$C2_^OYbRfO`4LA~h}PEfHTn&=0%QE)d-MaLN*PJb7d} zrF)mYa>)aqREHwuSpCtc>D2=PL`BJLfA zaKj{Xhf42fK)z@fC#kwW?fXjo1yjkp5_23Tx{;?AW%iCQ?dF(Pk(<-{u}SWxyK{Mg zB}iaL7YbC-mv{0o5p^svfkG{GE-}WihsEiB&qVU6sXW%{b~|p9UJ2%9bQRv1mJt=; zE)cc7tU66hCG$RFVOdHtD6~2>k)FP4_}yEYfpG9SjlSgZ^kD!pR6uuHlUut&-85ql z1J$yoZ$E9^!l$mP+SfXPRzaNzv>Q%@+9SeoVP&g2&R38wYWMvfnY*>0+NrEQ2Eo|Y zt)MeNfN(C)m+hjhS}YAW)UP&Rkn$RH8yX3?cHodLt4fT-2gn94PPd?F_oi=m&Usg} zt?P<3J`EdhxZYta+-y>z&YK`#xG7?3j?9`uojpyN;51*Ms}BtwYhYGjCO4laFh^!9 z7q5Q48CPRkbuqlf_q{??mQSrsq80MxDu%TpY+j*C$X7|;Af3Fh>h5M#)9RW{1j)@WpbsSRL{ztg+B^}q@rz6c#Zc+xt6WK z-(Rbn7|SAnlW@ff?AeC*&Q=?#LHHHBxTT9nJXq)BQvtNjq8k4V^_!Bd&i>#cA4F;5 zi=7xLH?*afxBxlErF9qe?54qkj5UJd)?}1xp;5SN$|(%FfEW*#RXp-M#`?n&iPx}{ zsK!jtuVl(zkwJ*OGkS7Pa60u+0}t!Ygwq<&HmNKft48EZq9bsVfFPqsTSLi(qhp^= z*@|g-eMR8}q-<>8Nvp{KVfwXQlMu0AXU5|M-)A?TvuuQbK>7={?1qS5by=nAH6 zaoI4OgTgPg@~37y?>?)6<`tJxq9L(?1^?14&svb_829>oVi;1Sr*xjs^SYu_emdFX zo@p^-%=~7c6@vt#wCi(x0y_*yMjt`Z-vF~%Ysr{?Gh#B{V82vS9<$IJ5j&V}8Y0pk zy2^wnBqcasvLTv=Ui%zZxxhvU_e`%b)W%^z9Vp=WDvVp7!Hep6hk3wYaDksD$|aJL zX}_HsjN^NbL__i$sT3|YBBph5fkbMW$oHboH1ait6uPPU$nk@U$II#;mD*cz=0kzWaRtv#^tvx-IT!Lzn(dw@4kz zwIBl2yFRHKy4c3uo!_bRLp=8)ahfBo-?8xUcZ$~dU7Ge_la@v%6P%N21hnXB5XLl7 zYlsp$%ywO$5DXXU%01=Q0847a^kY})2}ZK)@9-1QMi!xjve|_SuRk2-j=51UvD{zP z%1tminv~-~-$fN=CqJvY79t2LOL}~oK~Ch*=6hB_OX~FRZW9BpeHTeWtO$Ue66fvCU7#UGAwd zT)rN+O~_*yoIaSyj?g=cBz;ipn!H!DL^N|K@8|D?Hnrf`i2-u?`<%Cl8y2&nI2Sk@ z@zVg+arq0`n-7~$e&SkB>keq21-8hkTcS681OHni`S`DQ-19$r$I*EU|I0jz(+?Go z-1-MR#s|q;)&2t>Gf(x@PCN)Ts2=4D=Rsb}Sngo+J zYFZz#yoV0CBG>f+>#j;VjA4rpm{~lAy)?A>VQ@U$>0rk+XPzQ>Jf)?hM_k_FM-3}4 zZEoq-k!7z`FZ4DpsD`zNPAdLAWZC-;vFVvLQ&Sd8JoTh)l@jh5Ne-6)7^Iq^T5&Q3 z0F65)@NWZKaN+0peSe$D$Dq)*o;hXWzPt#YA29|^ZV0`jVlfMm=s4^*Cth^@AqM^0 z`vhtm>cMNafYp6XcdPm-3KY8SN#a2>5{Z7t;$`{)D_e+R(m^S6GZ&ZJDp)#G{Q5Z& z^G7Np^h1}gn2-4iolBlV}QPz2qVj%OJ-S` zy}|EIo11c^!moQ{iOJE76Cp`tZLCQ4Hf(-6!_no}F zw`FRlTB_%xg2Yjp2(z(D$VL$eakseCn;KG3P@hd7niS%TSQNa%icePgd!4GN&}+19 zuf*?pG^gC-*qT1Fv&!2NUF5ys`IyI*e2m&AsvjRFDd`iEWqt*&G^6kz5u20BHFu=+ zJm6n3c@jPY&+{^lg-De4E#s5*_RCRPXvb04hcc0^MjK48w;g`KZ=uNYs`>-y$+=V7 zbLK_bt$mbZuRSBfRTtKwr&GU0D1Zg#vnm2jpC&Oo+laG5H2yGV{u;P<86=0#*X-HO zHo;)ecN8C2*OA{u#D`gLBK$cfYYIg6eED6Pf{1P|{L|`9yqiQjRUHK7Fgh2NcqV>ziIfRf#W^Fy#T99JZ9^>Gl(f>rAxLTD< z_SnzLLHw$-Ke1hYyZ&8>IFn8<&cgz1#CdcyzxB4kG6*FYd#C zSf;^8Z{LraMNK+;%jx33P`(Inw$7`s`gxK$CRBgb)<*!W8?HWoPMs+oXSfSR+!V-P z`(v4UJ)88m{-HmKHu90q#?Y@i3uE1@>J$)pe6jk~3Fu<}{mO5=dh&ax?MI4Vx~rS0 z&laqo6RR!1>k@rL0{?D%Qt7??^4mkK) zk{cn&4-4$=$NDeU|FjSg>YMJeQnUp|gE88cDO@_TF~Enx{|GbKwc23Se7Er8Os_#Z1b~K zZGfB)d))Wis%p$@^UxS0ywXQmEuvp3^qAOel3{y=&*M_`Zk#IdNVmJ>7~KDQ><-c@ zv>~9JMK&d3J4Bb>ELzbgR+TOU7l+m5FL+=X(uQd#P9L+avTwsHt>gX?M!|Gpj~p6I ztdwM#N{n`NLkzE0fu+a?tRYVg$l5AtQ_03s;r(Kyg7qMs(|s9*bh+`mmQhl<;Gp0R07t$l$A|t7E)}G?LI2~Ak$eA2 z1LGD5z%8hM_js_~H+2@}mEgKf2Ra7CC@lR!io9VyKr3((S!oDrDlU3}n)7|voW83F z^rj6dW=fcW6kHXR*akyH30OZdtCZw@yoHdLZ7Wh;a)`jaS)~THj*M~6K?-E);av`9 z(mlPQXzE3ig=Gg{mgY~D*(*N@mycB;syAtjRIUY=D@`D(NzRN`@e!Ta z(jG4gOh;53&D;EZFO{z8{Ztd2jc$_GCSjtHSdowX#k6#I#5eTV@2$l)f~{RKkCUsR zV_bG6*?BUjKwdiM?Udu)L#9`us*wj+`N?fq^TSM&{NQ;0_evd5-{0D1gZV9WRh#KS z|E88NTz2+qNtrqOpt+J+7*m6WK9Leoa;|gbnUep@v?bX?D8xSzX#{TIDzUkvCCWzo zvcN!%?7y3b|Da0$ld43N&i=o)0|*d9{U!gQNi`ydV~>!AiVzzsq7U0vm-A7P%`G9B zm*IL>#)C!dEv8(#YPi$Z<<^ReY0PaXUp)+K@n#wQdJehBC-ha1KSL?*s&-%jv%>UK~~mb}GW_cK!OmxQy?apI71?{Yq8jVI4~op^~@l=y_yN zp!W{l`4DAULy^jP_!v^<~K(DP`fd`^nuzFqbVTwJ5IU@ z53N3x;G6_mk9MMQW(Ypb2qa$(nXuG9Z-s*IPJTY33KN1-cxPKrecV=2(2tD~wW$ff=ZtQ3k8vi(IT;-Fsk_)LA~L#t&G0lvXbD}EaK*LJ zUaE+d-L!eOI6g40_c%2pda}Csgy9?~?}yWJ$y{9U=M7$l?f&Ahy&uI4xjg_}=JcLI z_SKiawKUFU*Vi?HYnlva!!?j>Kb`G`acN!X&p2DYe`I4)o&v%O-nOWE=+S{2sSKKW0!0tP zUIueOQ89~$d4@SjU}!{1?q4i?85JP44oy(xM$=)Dn#3q69=%A$bYAbc7EPf*=s$2r z&VeOeqK6}XA$T>}8d}J*VZ0kJQv#wlXl-jc0adLGlE?kbp*PC4|EmKD?R*!awNdNi zIssG!eDW^$PoIn+C@~o|WhihK$viDxAB3@L?8t+r#T`(SGiFv)uFA9@KOr(@v*)cE z23&?xTu8DxLl}SKGL8YX-l1*Pe!Ec5%OHgBbIh&gu*Z(ccd<<@v25fgmbG|_V--0t z-;vjbNEHcjhU~c9&N|>E3a|4&?yS~SRW{00pre@ptSp18O6|I$uGgx(_%Y`{G6+o72Xu8$Fn;0adIL>f33rfiue8IEov`N=`V** zcx0iMk5sp z!E+0H#elQ*os-F1ctCU|Mzv-0+&kQgeRkw1wvfGZKOyR?(9NF3B%fW^EXwA6=S3y& zlJ;zoVASy>Gsml{;c3^a9sY4=p_77nu9AM^3S6SXRh;=lpW;WH$NG=xm;VR}h9B<4 zd;GO)97Ox@zF>LwlzP8eh_}vIl+9g#WP(DK?)b$cKf2@4;R<3q=;w z+mZ5wBuRbo{=R2)uGRY)Rbf1oHR2N*U{D0Fmz+&(&L{_z&Rr%4yo{70#HcMw=VFk! zP}5M;#4&NJE!AAnJVF3JOD&E*meEnSOXwnnASS+mTxGXUY{dDpUa<5m zfNRKjg$&#O$vU&XonSCV2*QuA*=aYTplyVj`&#%RDojXsHB7GLr2mXW&DHzU*(&=k zM>iJ_e4Z>u2cKMo-!ojJj7wFc z1r{6WE9_6)uph3ts@spsNsfN@0wuZiNOJ#Za#(kXI-1r zulcm0{1U!WE=G%k2xHP3z-3~yuwJ=zAjA9t{-3BPyzJ%HehZ^ak5~Yqq?;L;lLzcsmlxeHYBUZH)XXb~=}`c~*622os-k6cwz+Jd+xg)} zhpk+n7E{&s?*IzA!y!~px_fh9&$f~97{46%-Dw=8nVFIyok;TT%#D= z6$x@NR9G1DNRgbE+Ce~61Qf5BtGD&+$vN~SHN$?^W zM)Xr&t!8-X`su}fOeIfRnfChdhjzlfS~L!w(U?B zEWTi{Q?w2jopCgoDJUyegD(T$k7~svD{})cgDBS>A7Wq{*kr71ELetDnrRPj11Uy~ zv<5eeNJvyhsPHW**2#dN+G(&h7AY9-34Gh4$B*8psShk;IrT7Cc!0vn;wgINMPmXx z4v*=kvYbut#me$ht}(J23aj+(w)w~-drN1dQO3rNx`nK=$GTPWqAAqpi(H1buv72` z9+1)z0f2l_frQ>(lYhODS(e(O6K&bC?=Es!)BMbH>7RgIZr}D=FmqLf(G6klZ58Uc z9-;7Ka2(}Gdt~dU4FcJY2(Na~v=Cmj)q+v_Dx4=PG+xhogx<3%WA0J)m4{g~Pn|~O z3C39G`avBxi$c~hE+z2aZSP}Y;$m3q>K1(eyQ{|vP zijXgh|JPYyS6h^AJN=r8p>FN$R_xzA)C-e_^|N-8W;Jl>ns2U+B=P&y(}`jI>>9Jq zd%f(3jKyxfe}3*Ke)%nQ(~hAlOX=0mDM5h`LO6nq%*lOQTX|s|2gemW#L=su8m_8u zh}40mCWG**U=hVy7XL+v&g~>;7`jXiKRaLzHmwvu@Cl;X0M0#G;t;#UQx3DiAYt7Y z>c{4*4)=&6M+pl{K|t22c3Stz!H#Qz{I{6%^&cF+{(r#n|G(F(yg!KfU%~_EQAWwH z5vxQ%-oEn_!_y6W{i@+E61tn5d2Xqy=x9wio6+$lzu z#ZK_zxMsMIVPV_gL`xc8ZDr{sty1ZawCTIcaBX>R%i4&%BY1g;*sEJ!w@{Y$d6^7d zu9aziWq!5}X9DyrCEKj%54cXYt?eCrZ&6k&ea{FD6Q1!g{gIqiKzXQdSE{{2SdQ#j zdsL;=MGj{7A~2C;Iqo%XR7gML+j8bmK4ye}2yCcz>7|I6IeZ9jGPs(MDfAr^X{N1( zc8tq{aNmoe6-KAcCq_faM)}XCloGy4Kc<$;H~!41jz(9!GZdCwA!?CZtsUy>Y!fBo z=%iZ|rA&qIfeljM2$eb1Mcs;1?v6B5G{aKW^VD`^Yb}&xV3xS-`Wh`W5-XQ5i`L|~ z*(P0AHA0mezC3)&;eC`5>cc+X`7(NjNz!cI4RQ05F*VdO!l)WQU1U8Rb!?U~hg7&6 zck?9#s-D5s@AS(d(u9ojI7}|4xKPO4c!k-H=7_H@;OkvF>UGMCN!V-ZI9pCQ5QH@X zjoj&LG&ec*)7|pVk?k8Vs~ zS0#fq-x=T9D2?nsf;PzvJ&7Pjoy%H1D^}-O7Z_(8cI;!S0;2Qxa)urjc)E{9l{DL0 zLy-!tC5a&5Y&dJnTotSnRsTAWaV1o8T&AO9A4sdOexJSX%30*9xFLX*4RSy{uOk+~~QY3oc@X zu2wn>qy7Vf-VQc1cOSQ5Gyi6Cl%lgs;zLf#MROoH@A*JoQPJac6VV9m7lbK}ZkhPq~-p@n@sg0{@F z7(^z<>0F17s?#x*C*a`*sLQ)!L3GaOX!t#P@%*96n{uws+V3y;ToyQ|QXTh)Bl*5> z^CtB;;@o%l(2?YO&@r;d+shjBhxG4p>oNZGnJJ{-ju_%b-ikPTXM9gd|C|t~}pRl-GgK9F~ zn{fYwEIhgDeRh4j#v!MUP$s8`7oI`dhm?50) z&64?-^|`9?G*2C^LQ0TCSrtrEZmhD2Pk&v`Ji~*Je(Y9cQDR|Cmql)e&55xY3g@|+piz!A+J{66WO#6YPxs)?$$ ziW;uE3|E^Iop}UJ7eWciV>xZzX72@dZKtZaF_4>bn=K z7mgN0Tc!J)UelF+YbB+;TI-71a@!QgpPH@M*C8~k*2S({Gq)d8b&A#jwnn2R=>~m` z+JgThnW6AMlNs<|dm=0A;4A;vej_TiHYK%!>A(HPc4Zs41-y2Z%gKjPtD0kpUgHRJ z{f>^1Bu8yl^mDu)N)GF#Y+Q>BH(%iML@Fj4623GfjqcL-xq z(o?eWbBo2WhUN7XZgA>j%OmVDJe5~p+VHmflPMkT$|K|xd?a16af>76)NtXG^5qJXqJytqJ)EAoAqTeSRTR<4} zUi`W)3Qj;8@+a0dLxzND^#3YS>cy3|G|Nb0a?%2N#+y%ktth zpbycnN+<66cVapJ`vjl2`#{}hq(L;W&{c6YqxoLG#rItKTCsBx)=zNk`gF+Q9e|_> z{OilP<$71_L_+^`%uV;H_7ZDg5}UEsE%I@xT;ea5|P0 z@%1n~g>idm845|LdI*Mczt?XHq<>0`>?JczdPpX0LL@0NxO(BuEUcYzO0yt>UI&?> z`w^vSgJjF4*}trh%`+-&t!V7*5kW^;=0eXA@h`&o$2n1Kd^+W%B=eN!RGoRqxRH)U<-$j=-O{@EbMMoN4D?4p zjR}Z*+l;slPs_3zyF8|`fqpc*sg>&pL_N8HRoM`ZN?@*VSOsNBsLj!;vhVMWIxW60 znx_pIgiWeydtkCTYF?r?*>3s437v1#KPYF`P+;k};MpS2s_C~-ibl#ix5KY3Ja9&i z@&uYQTn|zlZFm5gI~|@VB+`{i)YcKpmlMZ(?$o>VqO}_wG;myM&Rs5(T()Dj~lhv zJpU^w`|`ki^BXNrdzF(-Xi~N;mP7d{ZZ^%(36@=PlRs)Zef2 zae}z6c{dD42-9AdLAUKc;p+FguL2x2FvX_e=iz#-!ejlVt+#cIabdcb<2Ao#A${(a z6eUia@-N}nMf}wudYi%$%m-Xgc|7cUn^1Dum?cGv@!)QMzhVlX=-vKR0v^~CPN4c; z5x(V)(?p5L45ZW^+sd&NhwrMUr3dcT4Tfj@<32g5VUnLk!_YFd#m6bQ8Xs2S{!qA- zk9LYCKR5z&&1JyFdD9n&et{h#8@=+^=$oHLmgW<4c0@J2-IJNZZQh(-%&*0G7I&#cEEq4%Q@ecSjrT3L z223ZPI)LnDzo*SnKhlD!{wH*cp_By%0YD0x<&fEd>j@N1& z2n|nxO>w6q3RSVASIY{VW0N(b7fy4UE_1Gi?DK^A+gsP9g}RpZP#OwNw@x=--D>H* z&8X&EtE)$wYNs>TjsZ+7+o@^sE*dx{OJ>3F-QpFL=>nyhL%_N$r1H`{BYL>m; zfi>l!x&9h?W4th`^Gvcc)K4+x5fvGgYvvZg%V1b&jrM7UElSj4 zy{S_rHiaD{Qtztk%6xIS_R!6e+v*%S8r9IYJcYGxiAeD!CJ084fstUSa|qN3n&2c9 z$Q|P<-U~O#kza8ma2A4UTR@nuy(nTSJE;jr$Qm?t zd+2YJzbe#{+iud<`bV3Ob4=4U!5#bgm3q?YJKKy2Nnx|82$OT9rtKc+3-8E`I3Ot( zd7oC+YgDbOE~PqppTWj!Oz*rdtsD7(CCY2ul&L=BPxJvtxz~iP{SDuLlWv9opGA+| z&;M5g*4W=D#r!`F*rvUubhiD4`xu)Bp|Pj0$e};MIf~(OI?wX7{4d58%BANt|>EuB%%M3Cos8 z(W87EYKYYG+;H9UVaBkw$+C8+7QD=;D1}a&_aoovN|^=LOG3Npv&zXMyloNN2>(C# z1s!NrOyCtQx7;3>*{sK1NuQ>_oRtppBKkZi7#fAg)YXWD^f|`YAV4SQ_r?y?j=1{o zeU%b&kJGkAS< zD53F??*P6IP(z+Z6i#tqG;1opNRd@Y3Xx~ix22{PoehEdWc!6evcsP-^$zC{(`==| zJtT4lqdM9F?EZ5^2EatH6Fh5>F(qZKl6Lf6X+b7 z{!o)oySqiTkKK^n1b(w|Lw>|_Qw%rv=~k>_6c4Izz3FjQiYiJ6Q`>#x7({c3hVbS7 zsw0y<_x!w({`z#;q$C@6)-mg>8Bo9Z_IlbTb3*Z6eMoEqePf>mwmsp*Y3-$$W;+St z;gSS)qv38zT#6sT1|LX!8u@(Sk|H6+CmzoCSd?DM4gbuiwiB}alvY4-*}${oy<3bc z8>2tXvla90c*xM1aVMNe@5dyMRmsU%L)X%es^Ora7k#CT< zhMDwl#&mE26FQ<%n*EdKfw{vO&kl&o7(_>s87h@lY!)a}8tGBHM5`+%QhLZ=Sod56 zvE9M3X011nDK5oo(+1~V%IlaXO%L#`R58CpTWEt;0+!2)rqSC^LEsV@sObb7eO%=l zF##kEO?j-uf}#h%s-;e%oT<<+KeMWh((a`)W&177My)+j_McG|h@|0AFa-dMJs`r^ z)l5eAF&7gMW&P~6>lDB2__nyL+&5!f?9^$w9L!wP*sEL{0S#few)b-d=H}O9(G>Th z(j!?A9~m(ejk6QLrU<8!GdRU@xLE(O_;KjN)I--wPd({e2c&ODx|zDo41;!%E%a`w z-A(b@$QR6&;x7Vn3nH?qyP4RKT*h%yCZ};H+x) zJS}ItZt){UJ#2`PcCqd;cQe}VvA@&YLzW~hDjs+IOwK$HAo;KKj>&aVT#30hu50rf z8{XyP`MG}|pyJejpO0$+S$ym5EVL&- zh*LPY-^BQ%Vs#H8d_!MQ{r6AN_}dmC)*+HW`waR}f~0Zgn0TYV=&jK?uOH)&g^9nK z%H92*pk(;@Db@woq8nbP%F*Q;aW98fQ$x#FI>rty_)YafBEC^(kC*LEXWY~^)=TwU zUHQeqInhO46poWj5;^BmF_?F81}8-^{U0jS{ev}E$DIdnM^&g4Q zM#IC0t&Q;^QXxpGtU!yb0`Z;n-njXiSmrPJFawv(f^Am;pFW#*bEprB!}i6_*x+BI ziwxyy*8-JvLD1k76(WEYBygSF6X>Jp zRsgXgE&$JDG6FJHpYBiE{AGp`7L06n1anR!%cg@z2-STDjgXU6*-=16u7r&lg_RWk z2ei4+mzP5JABAl;Y?$wPXCjsq3Cof;`P15|!sG({+LeZW*14Ylz$YY}VED4}4E^MP zJ7U^O(dKi-L~2%auu=-iq006iZE%dPczsB=4Q8M2Aksq*954qM?${wmBI=Kd8*b;O zk|AbF8A-zFsF+}Bs!f$mxbB&8=K`=;E`NZQ`pT8EE^voZ$Lv|^R}O6<4Bv_FHvP~- zv46NcUmc36?DcXZ-~{I zB60ss`K*r*f_NZff{hV~2VDrgfr|Z3P_v8Dj-5^0r5BD-O2(ac0)!^x&Ik^m{=-5VAO!*BU zmW#Fl?h;iNEN9eH$z~ z_;j&jR!DF)uB;ilMutx97IsedQS8?fc$Sc*lk&IyOIf?`IYS@YM2eH)VpkXc{+*@K z%1z29F}`j6?2}xQCKqO-+rQT%gdR%D+`Ksii)y^tN4I5QW{nO{2ago^svZa;)sa6o zx7!?Igy&YM1Jo*LkG?~O7Zl$!XCzBU zM)7K@m8$R5EJqxj6=hEvjL5JxLSm^ zFJF^w3nSE0plWMZ9X7Btyf5yI%H@5i=PL>V1h&Tt`vsPLp@i5yGyCpTqX}GJ!u#ai zX}iD9D-%_f((WkvTvB*Gpqw{vO= z=%2RqrCF+%U`u3@ORdx{!>)onc~iC`WHP8Tue55pGIpIWMs&}5X~Y-RG!^R-)7mP> z7Cop8(rCn1K%cPPFehN$B9A!;ry%SUtb8nZY_bX`K$_A zQ_EzVsR6LIxE#1vv9*_CmaTrOM7y~SZB-PR{`Z(yuyuZwv>)68tc?Ln$rATPhiu3z z%x0z)H|&N7xC*nCe&h18$@a-Br>)c*2cG6xPv|+(1L6~?o3;je znm+Sdt;h~7Z7K#5%R1Z!u~2Er$5sNz82f8k%r9Amc8}@>SMrz6_&&9ix%0WU{jRH! zUzFz)3aOtHd*w;lK;&nKE*6x1A=Q6S;ge$^LYD0V;$YNgAzXPTKe zU@Dx}d(rBW3bd$^>a;zUQ&2TM-N$;;x2Ge^8QG2EXXKXcKvH`7?Z>T3-JyF|g`L=t zt0^=quR5@OI#*c3+LB=hp%Jip=Ct~ ze+pELpf=1rM-uux!x--zo{-!`8s5jiRLK#ZI~kmf#szzcjbQ;2MxU{%e_WNG^dndKuLF~@#3H+S|cE#3=uNXqJaPb6^%P;-lR1zXJT_`rt@ zKBy+2HPCa)qGx0NbFqO|5<6G`6x+v7QxfP4Kbg!aeqp-Q8|+(bc8XHc{Ds3|9?8V} zl~q}_oz3BQ7{gmd05ONI2H5?BC4+5olT$d_I|0g`;lgkz`3l$fzhMPT{Glj9K=Gn?Iq?7>&<%m z6!6aN&tyI)k@|)EaD??JWDG(VelB=5tEal8^oG*?Kx%1T4baf|5KyGfcsB)By$Fr8 zCA+)&Qt%Fe(GhukBdt-d^ZMRd!x?O_a}h0;d2S(Hm%+AfWlWKl17Ji34iE&Zo2Ry<$hrDSWnj4WcSaO5x`#dfMf;{Y#aS&$~wP2mD z4j-H-#K%G2gi4nvj!2=#R?PU(FG}Jy`XTP?3$neNsefnK#krNY>HfiIpTCv_*d_dp zaH~+MSypmQqTZ_&@~^Ga+8@uGlLffl6`>k5u%!1}v24*cB6D{mf`%Ryl{7DS@n@-o zj`S34sJCxSo{JN^k&SFzzf=G;RCw8`r%F)*KVl+~sItk|oq4$Ctpn6sdwzSAGb(Q@ z#ruGvyanU}ZFOd{`l=9+fLshZauva}TY+D@E8`$W33B)}vv75lC`7jK-Ip^UHM5$mcxMIHfgruQ-`^Cs*Ic6(v{e@wN?s_KkMZO zm|Fa}0+;hx(+Ub2!jrD=ACbtz`)d8)66^-yK zeONe()LA}Qx2b_eOn4Fj{I*S3(c<3zIym)BiF)-&pV9J?Z{T|>}PQ=a_-rkS&h@37x#Z0@h}Hp9XU6#yAKn$sBe(&!uw>;Y=lri zW0?djz8D#r$usU%cD#Cr?wBeb)|))I_nm%2@<_!@pacx zQ%r@5Bv?qhBQ4QLZ7<|BeG_$encatNcaw)orrR#i$^Cp}cEJzz@}cSI6!I8!83b&A zC}@SX!aOFKq0gh5QpdryUxLWgnCOxkh?LW7%ple!_TIkZ(eSbZn_rBS{lGo0I-MgH zgP5Y3x@aXgV`Dn^e2VxILOyyt*Cr0??a;dHw9uCg0siJ@_vL ztEmApbF5I|RIbOaHXyos^UlHLb^ebigA^|%U!62{I(Ee&D&N?x`#N)9R2epYNg9lo z%;9=x7X{O-A;cZ$W4vvhML_=rgjO7#6Mf4N`Sh`q@+h$^&Dx=(;pzBFe&WS*my+b3 zYIfBq0YYSA81>tGH3*kCjlvVtPgW-wNpc7hHihMr<Mk4U7KNtYc`P zAr3H&&`T*|kWrOk-A)s)mIKFyxAo>jOpW%7z~snnR#?G~zMDoaZa&lEH&kUixF{of zIKBZZ=nQ~hb--TaH}Z1pe8(F|U%qeR{8oZZF}h8GcDpToVVvr|ty}U1nO#(NYWY5} zEN*xovKu_ISDMl6mj`ixDI9{@$nQ%_i?oRktG1rYV{6^37SN_s<(i zdzmf<=;{4AM#z&4Yiml}hDZ9@|JY z(7QplC0PH`KHb3g@z5*&`^z)g#_U1m?%FmauzA%{2j(_y@FE|mwyM{1e5@aB#??43 z9`WnWoo{-KeO_yz)GQ8vv7|M^*=WLT+j3x~tt`hnkWXLDU=dmheWVgCv)}|Cp5+pA zKXi_n%Zs%CQN($?`kSFreqCl<*;(TZaK3|&M#Qt+%+ovb^_AKe2hUcwaDj|x_iUGY;-bM?yUy*J zn~{wiZ}l1Ngj0(la}pJoMA8GH#y=MEJ!+B+Hc{s2k4G0;42qqM%>)}yB>$XU7cga} zYq?NYE$!cd9{?(^$bcLkv%x~kN-cpy4^mJlp?PQ@(F^%_$hmGPZVtG=CrcIBL9c#4 zuvPiV!PO9Tt6SqJWGFsQ!_J@_a9O)wIIT_(|LU4SV$8U;GnQl0U7Zzm1KK0rg^aRET;oHN8i?JAu02T?Ll&`5)IS7E}sOk zN^<4WCK@UNzkalOipFRWt2dx>h}J1)!H@CWMqupq2bze8m2O?^BVy7%k?Plw&}t#4 z#HaqMYSuUS*w3PjaT4QFot(}UJOA5N1v_Q6l2ll^SjH*(Qt^08S!f!b)G=!ldL3ZK znfGd4WOGz_Zd?$1Zo>)Ys*^+3T9Y91p?A8Ge@O}i?4I`tk@%*neHs~~`3SKTi*=ge z#ui&*rY{#upibgs3|yDpN7S;q#*ocm ziiiF5JTDV5W(zB1yZ!+Bz{XbMJDZOsV7ghD%j#XME-yTrEj(uT#TrAaqFkW3I%HsA z;6QaX5YN7Ti(FuIct-WQs`^!Dp!|oVDf3()D?or<{FF`8UU}oU2k`6o_ zGl0iVB)R;_2e<$|{v1Q%Zxvf5eDioKp1(C5uVyQ4iQXCCYu`38@o`&}G2@yFdw=PD zc4k{#Q{Gv3Y(e>`LeD@hs`1XJ{CaeRqJ?Y-c1HsGi56i*Wi7<+1n#XesHD1<)mM-6 z`N^pLwoqlL02Au@uC1LjvihDkT{W_SFzz_U-QYv@jgP*fa`bJO!|HpTQVb(@8^riZ z-D`4!;dkb`L5u3?jlZtMyw4m0Y!_hx<0$e$0{f|qyqQ-w-03zF?&-5f-Tqk+8)uj_ z!n_jc(9Ar!N#AAmQ-k&AN7$c?N~z=AKwcX_8hUGl)f_famEq41ezG|Uhm_c2wt{Kz z#tz!uye2TA06$^Y46Y`%*^H%Exe*}QObah%}u0>^G-+cZO>}X{zyxLlj;e> zK&O!)ie&?JL0IJyT8OCvec&z?Q^T zk^FH(j+^D>fr?&GdY#qlbRy9YY`s-uQCIy_UNfGe)nHT`$K%g|Nplvn;=iMcbJ59y zbFXa>X_FNi01{G#E%FhVT2ILT<8^nPZq4+)<;u>xasJ(;M7Zks=yTHjihlL_=O^sA zKa_&dva)b!d%k2{^B6P`J+Yp#o>~*N{4=8XU=B3*{7W_LPH?B;r5R`0@P0XsBslt> zgc8uB_ZlV?eJkL#oi>qVIYL)J$;tr(!D89K8&(W9+7OJ!uSt13=h7B~an2Hd79NushO=ML{TL~U6jCHiLjE3+sK_-K}5`}(#w^3m& z2?&DeVOjoK7i7UV*w7qMpk2SV5ewMyEz65Q(F5hXq-)tmL2gJ`^NZtPW3f3_vwKGP zMzi|{1sM9JpBhr5lM-6N9|<4gT5pzb%G z{ZVO8b^9KyjFe`~t%uOqtKMjT#P4!|ZgJrf2Z=M49h*FNsrG zytJWrqm1M5X3=XeEgg96v|dd|)3|(>lBbVp!6U=3U)h|zOT$r>hPmU-&kaRDeh$GF z%W#L`Wof%(w|HqSyJxFCN-g6<@#JHzPeN2i$Z$ic+(=0k}i%H{5B&A3LDHCkZs1j)<6rRcOaL zyEpe1dNOK45w8XJ{JPMJ#9)q|@aYimYtNKAuEHhdE6hStT-Scru_g6!m+;%Q?! zh1MoZ>QxXb6~CJ_GH|>6zzOvqEvFh#ToMW%$N#f zhED6zVXnYo!7+pVh>Gj0kGu=9YS;!P4);E?q+TXL~jQL=@5sEmC$V4i&7|X zJ#$*tg(A-xKH9-8!c#;^05)5aih~yN1VKffTQ#bWA7(drH8VL2?blHZq(`&^&m5}W z%Azf-?Wl=lS;CyxS(io;c_Str)VUnNpvom;cmKg-NAg@nlKqG4>hvTIrt5T-4XZ@M zrW7k&=w$xIf)^MC3EyJ&(CEA5RA#Zwjz=SCRWeJm;QE;Xo~mdxq^(W!BrqiU?ez=z zTQE60mSsQl5oiya)j+V)3hkHXlO+DHFB8oh(l?iHGXJLr9KP|N2K=h0Il*-9{?7?Q z*yZRS?h!(SwEj^mxHD#i@z0(eUBVO$+sjiWUW*tfBle0F=+38kTFv#7r&r?CR$_1fSp=4Joe#Oxa>j}VO}KqN;R&D-u~ zuN!$N_l_c`;9Z0%%!;I8){R1U^|2_&c$5Mv;4v8-nrZychZLN^K!+!+ET|In zm_6<(u;t5gnvvs*jq=S&`h&c&^S7?3sIEV&r^X{YIo-iXoORPAxJHt`dlRw%3j(&gOb9C8$)wF*Jp}+t;9)4{=y* z-!56NT59vaHYx=P)~rwgZy%mBbcok}hs|Sf#R&2K>a`qKX(H2FRy9om7IS(KJDMY# z(R$w)LiTo$au|(M$?s{+D^MDp#5kKyZN?zIsW7j(!?{Ha)7yzE1J#3-c&*Xw;{?Is zb%tPi*{Vzmcc%$GXq;D;)gJ2PAW_7x<#Tu1-{%3$;>*zT3+DjE(`ptepT$dwxe_sI zgn-h=`_&ggqb#ka`7|2O!#Y`oZ#~bbYp$@i-K>zE;lcMl$TGULuCBDCDt_`n($(5{#$Z1nX_^ugO8^ZZ*lWYo8eK25FXe94!82Q4}M zbbt4~m)C^ePDbW-SyqNI#=;H&*@(;{Cv=1?KPX~K@71-8u{ZD|66HQU!taU9BsZPT zw=6yr(GF6`ZY6wR=a(M6Umi|fYLn+cF3D1rqE1>-l_QQ`MxPQwdXU^ntz}Rj zp4StLKwVHNrgu;DvA>?#50H_JDk12^LVLzUu(aqXtZ3FOjW+(cDdZL`UZhIb8Va8q;#EhFkSFRCD* zGIsut9yozOlRR3BpW|;(LH{W`iQZUTFz&?zTWrLiiC1i3*1U^!a=z=ASjqD3bLZXF zndrY=>#Np*dvB>#Yq7#ZgNIc*Ze^UKG3dC^4e*%cl?Zp+A>9yAcnZuNiaTk&{SZYI zOHeOKf@Gh-80~-+d>_)6@vgrr-QsUx@Y>oRt|5}(;4>Ep87=yyNl#wUUuj|oWk*AB z7ki(J_0y*5rtTmT&pJ=Ug-AB8qt6EhvkBA|bMQ^HPX{x0lw-oWYNi!SH*1^nq|IvC zs_Tewh{0BT_S>0ez z{3l9%iWe}zY(GIOjKh%X_A(S3V3ts9S4e=ppZC7+m?haGo^kO`jtrlcYqNfZG38P| zLyXsVKN83)8__>)%9kSJro8uRu&3sWOqCbiI#zcZm5-Z9$XeefRg)99N76`WGc*s3 z0gPHlcrZB+ma=%@OMV!=-r4dGlJ$>HedRB-evn?7ylb zYj{M`Ue%H9UXsS~EJ|#layv(^4qPQOq{{b5Uu0)b)E^Fslu_$%m+&JRjNt;cfd!N2 zRjIN4iU-L69K!)`q@pxynEGxDf)6bVyy#wHwq9*FuX4nbq0|t z$J2+eEm$c)$}#LG)7unM_HFlzK#_|6=JxPgOb3nt2dRM$5v5E@`(}>O1cL+JQ4zs$ zyW>ZFWo(jv9lA<^&#n{UT%5aWIJ5`1%t1tP(_Uju7(JMlWAKN(6v}g zefRojlD*VpQ9U=wFbGA?F~x(sONG>?fDIMgYcDk`FcYW9PiJU-Fp0ZslWu!$wd}+; z2k0*tqGn$DV$4k%bVJ3A^X<}CC&$qb9d5|;NTwS_^db*iadTGvLG6j2Kad;3y+@m4 z9IK?O6;bzGs1~_A*|PW@o!UHKs=c)J4<|$Z7M&NB%piVj_k62q)O{z>rrbra7brq1 z^DZaRgI7q!Lrwus_nnyB3YffR3?JNzK20i0M#qAlWG&p5 z>Mx&gUjVTVf|#pGJ={_J^xueNijYH4U^WXS(6w;}-otI)OYo(a`jP9W?tV=oCuent zXh%0MB6Jwp_dg1ZE-5YG8YwMB~vws@|rX?2Q zW>2U;I56+k1CBZ}Q!)EmL^q&x4Lvxsm3gO$Kjs?|FQGeCNOYLaJqRTLp427bhce>` z%XXJKtWOrFY80mnyq#P36ufE%anPEUzda;19gHmj7o#QNJqyit`X0Q{kMuG8nf&I4 zb=_%*93T2=R@ZBPnyLU~sKYILCKQydu6EUEwkMm+0_MF7gcC=M8vliin z8w08n_RsmAH7?J6|r}YPh$sldo&{Dc3HWSU!=j6*^uCPDf&{FfDSw zEG=CvF^%3hZVKDn2+bzUWwn)r##dLHnZGPvZ$x9>+5}X!(0lH&cHsaH6jk{C9$^x< z0N1e5of}i}4~wk9@qfpBy>98aOSO3jzcruCR=j(~ev?(DeC705u)P-LZ{I6KMaEfvxz=R;Rx?87>j@BhiN)tFK-7iM{lC2Ug zeu?~jChQB_MGT^PBPEfkN6tH=iQwyAL$W5HK5M zj;p7)6d~0oBsq!@r=N@6CLhwlzomD$qGP0uX{_g@F@-PUk}ECf1-#{zi_Mc>*fW`b zn?p4mYX#_^^5~}bhQ-PyLb4Fhr_qE4uv692${OjO7<4`hq430s2-EGjlqnLMse?h3 zx-nyj!aC_wP7V@T)S+?;tw1;H6)9b=KSJb|7g(u{GgvbZ7UL~Vc;HRZ<#Oq$cn>~z zKfHG(z@>W?hrfjW1=HsITEs)&>rcWw7p;+v^}4|5@7$z?P20MOGJ>XXUu-iiO5gK- zi2kM^k$<_Azb;v(94gFQfIUll@*PElKibK*6BDzGlo>NF+XLieUPdx|K4t4BQLN!$ z^KdepoO#fg`I^|FJP1xn^NajBuT(bobAf+}HL48v1Dh^^epCFUd{Jcs+fl9l=OyW% zrD|6Pw~Y&2Rn)3wRLeUW!Sj?&)hSs5$F@2t^Y7cL1wf9BB|sqBgc9OJLf@q|Uwr#q z^!SI+PKFY_h(z7~i|@7bd`Ai|7&&$70%AF#I}0&-b1g*Cr|QzW~)A@74eS literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/brick_add.png b/src/main/webapp/images/icons/brick_add.png new file mode 100644 index 0000000000000000000000000000000000000000..fac186bfb79b7237fcc1ebdbd8e052b994d52f9f GIT binary patch literal 729 zcmV;~0w(>5P)$DtCMgZgg9MW%rA`w{qe=RC&!sIosTV%x&Y5$*@4M&R5da8Mgu~%CZnwK` zGMSDDw5Qlvxg&vldQFc=`4&GHz1 zqa4aTal{E2d+%?xN~Hpa!-4hnbq>4T&SMfsJx<_sI*km-<#Jq+5R1j&@p!Pjyv#v+ zijkXszmH5N1FBhET(k&GslU0oiDWW~R4T<4NnN^593>J7ghC+%0s-iBy1u~diQR4& zJ3Bkr-rh#3R02C6wzjrT9nn4#iJ(v@z~}REq|<3=wOUcI*=(F(e}5l)dwZx>tK4op z9zX2?sZtZEFc=JSkXwyLBT@r7fhdaD-Q7j2)k3{q=c;tHXf(7dbQ@Zxg0jAF6KM@h+4sC6jtTy+RLI zIeishH}wCE^>ao^1fxHPUa!B*=4)mnI-uq<2Oz|6c+rSn>=*hio4|XDI#$RoWYMPX?k900000 LNkvXXu0mjfahOHG literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/brick_delete.png b/src/main/webapp/images/icons/brick_delete.png new file mode 100644 index 0000000000000000000000000000000000000000..3a8c373482e071726fcf2e8967eb3c762b224cbe GIT binary patch literal 745 zcmVk(*8wLyDN6qc8lhZhzWexdK7n$>DOH&Eb@W1hKn8Q^d@kW41g?RL@Wbg;d>&1>|H z_R!v=L|lNWxBqtA-QC5~(h_2^7>CVfq3AG<**(V(o?;pYD#p|9T1vg`zE3EEYGZ7mG!H z3=*MUPy!O*&Ws$JzJ?#pH|Ql-(faThp{Xl)KQ;bEU}HMXF2|(VY|c=3_xAQstJQcj zNr2+J?w!YXM#j5wVCD=kJBr$?>u}u~${$}zlgTt}G#X#B*&b|eZgLS4qXw?sl%p51 z|1;Ku7bEOAL%kFKf?lt`%;sxhBkIxJ@OV786E00000NkvXXu0mjf_hDCw literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/clean-restart.png b/src/main/webapp/images/icons/clean-restart.png new file mode 100644 index 0000000000000000000000000000000000000000..8f4eabb76151f5d42c6638ad485ab3e94de779ae GIT binary patch literal 1332 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 DMJfFw literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/cog.png b/src/main/webapp/images/icons/cog.png new file mode 100644 index 0000000000000000000000000000000000000000..67de2c6ccbeac17742f56cf7391e72b2bf5033ba GIT binary patch literal 512 zcmV+b0{{JqP)CQDsH?WF>AIFt zQuJ}i;w2$ZUU#3SZ6RY0Gw;kZ&ol1~2ky^QZ(fom$=jNJZt!z7w_pH~wdQ;R)Gh%BbQFCx+Nm!4SuS-vkr`vhhrX zM*>w%e+v~?m@q~ImPAgtLkR_3U<2F8LP3W5=LJ*ZN|S5p#sf4YFr$p~Q~Z*0Ngxf2 zjk#J#<7EAlhzlrV53~GF&pIzcCN_lz9@05UeoUXiK%N z#x+4o*i_c|6_Uu1+&TIho?3@y4k-#b8Y_o94zW*B3a1ne2-Y5s0uke$$|@=}OP-i= zNYZQA=>PrZu0MfSL=b8UhD_={W4IY1{b{)U)*gc45xtL%IYLY&hF;d`@GzI&7H&D# zh;z_BX$#hqh@q?AY3sJTod2%*Yd)_>YM0#q&ixGuh+PQsneK)F00002z8@H#eso9vK+4F-h&nJZ&{G7+WHR>s{e4_qTwrf+4t zo}Sk7`8;yD9400vG!kEtGboCJ$;nB0ydu)MsC zrluyXzP`StsD;JFMHe4lUth<{$_gY&LO2{oe}6wa0=0$N*;!HDc=xP zGnYF%JCJ1=$z&2vr!(Ey*l1{NZ8iA){`CC(ya4fcpU-#ccDs+;+S+6tiPf{SGhvr2 zQ;--M8bW(}yWzS@cXzjeG60KH`i!KUM1jQ>oB#e%Zg6L7WWGu8f3f0;{|@fi^gbbu zMx!mm!^7J4_O=l7bf|2?RSyLh4Jr*XM+s*`=%WZM^9Z{oocaIl!k@|JwX(9!VVt1xutof=Wt6k zLhSxrQ|#b+5}?d#wU#zFH-)HU~Z@BQ7|ITsWqFPt%czwZJk^u%JZL0Ogu z7-JwwQn0tTclx3}?kvID+L{XidsxQ^&e&|W7P?hu`JbU6)Keq zD2hUaNxZkB72a$%4^2)^`UtC|A7te-nGAX1Xrjep5qO>_@7ffX%SGn`-ED7gLpU5( zk(@u5K{Og2Z)$29rKuELp-_NyIt_Job>MI~K&R7bgynLX>`sh~jA#lt3}_YQwqglZ ztJPR4mEiF3kO&v?|I7ONdO%xaZnyg`4MVH2u&{85WF^F8xkx0!oK7d7&*!07ENT-s zHZ~xYO7;1CzImGB_xm6GXq~MiVV0C|gzZGQ)-QC?rN*&h*fy7fxUu2>pgCsM)-Q?tMb$Vds z*E@*sEW?$R-d!Zlo`yI#H#gqa);3B?D6pBWXVBO67?`R6Qy3_qLZ+|_MxhlJx8`9r z{Xs@mdTouNQ0N7+J#TJqhNGh+O#w+J@OC~45~`3D2_z=L-&zrFU%dy%Qdzg0ic~cM z%s{~na19L&^isj*=4PpCtqL-e!E)J#V5X7%DWt(#}Pq3W$oGSy^Pc4j%jrk7_ z4xV5*S(C}slXQfB*Dx$m5ut)=uA6Vdoof#vmX1Pr{o_H2ueAT3P;2Ktrs3gX7h2gv zE62G1jK||?p|odbXLH|f%y4eoeRKHd`|tRw^&nXM?`u5!c)i}iTrM|2E9N*Z__gcJ lE2dmBR}@y4olxbIzJJd{=EC=vF*^VN002ovPDHLkV1lGDi4On( literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/collection2.png b/src/main/webapp/images/icons/collection2.png new file mode 100644 index 0000000000000000000000000000000000000000..9866da1d41341470382c692aa2a76b9ad82f7a63 GIT binary patch literal 854 zcmV-c1F8IpP)+Y#%1ws9!eO7a0hG9|XVbLm3tY zhi*8xmfD#_sxr2*&5C#_RmU($?Jl&n&7!Qei))U#wI?|_=h@*UgstocFYoih^Zx%l z7e+*=R4UMQ9SjEsz6baa$WPEI13 zOd^#^y|cW$ybF(k%QMEfBUcmz?yPAVIY)Ik31F+s<@yv3M8xw~3-D8onOjxK@2e9v zkLQFF?;+4op-?P3Vm!~b?b;t+LO!2|X`0+!k!8vkiYVFAX;E>t>w0FY=e7N3pL${) zHn+Cm&%`yJM*yq!z^RWn(rFaPGI3|g_;B7(kNmS_Y>WOh*KyO1T<~l;aCHt(pXhz} zv!l1CX9EIbglbKgnwmm?e?Nu>&f>jeeXae`Z|R$#C+N!f1U>)eC)9TE1KN3HfL`oN z(E6TJG<+`FNJRXvfGUcjAe+m<^o9r5t_{QMmh3x=I{sbKA;AC>7!`{JG#E4Sy)Qqv z_{bQUg9sZ71+%w#Q`g64+2m~Jp50^Mrl<*^VwRB;wU0Jz+!$CX zmF(+t^K9hWEmRo68(af-eGqD$8-M-s)o|CVdy&f*P#prKoSwn=W8;xZVH; zi-G1AtlQeonznZ^U(@G?!P+?>3#}AeXt>2vNohL zg$O*_j?kvauI!R7ZC8aWCPb`;rPFDQ{q{TG1CR}?V!|>_tP~3{@;U^8L3V3mnFOo5 g>lHLMhVd{D0Q0R`f`ZCEK>z>%07*qoM6N<$f zQ|I0H?!Esx=RX7dFaNSQfV0jy?}0&8ZBVn~pSU!0PTH-;rnk3jdB6djcIH|Br5B$s ziXtZfAp}AQ5CT@yLwa6G55b5_Haa6%ATZV~7**xD^R9d3qj%qF6aZ>gRXnZvpG z4=Lsb8WfX&1x3wJHB=Q-LrgJ=>t=?iqH4VN{s;7WJwz1|zp@89-3|b=2hWmcIa%h& zoFjyQhJd95RTWV|)DRI=;(pPjr}J`^k;R=(iHIOxe+@t+e%S3q06+b>hb+%VAS{4c zv{DlYQ9(^nNr22y(ez%E^@^DRP?jB31V7CKqKb-8mL&jdX4g;@IYm*BXE_#`0 zMZ6;F$Lq-mKhnn@i2zDO74N5oKm<{xJu?Hq{M-(*+>z%Q4o3hi#Z@&~ZDUJK718Jc zF&%|LMX7uRK)c-@fn0$DLc84tVAbj#S)Q|g?K+-#>d9D4EJOgw)xI8YFDdRqReAQy z0s4zeEH3t`DxUzf;=XAf@FJ)Pt!5K|?c3*Y&avUX``Ps1MmF4cf2?>IW{HdzQjCX| z3JVJh>_2c|L~2z~<)-C7T|8hzB=rjL)4eWv8tD zmbBV4m~(g)ie{5;uScibrR;W?DNEYz$g4)th#Xm&145%20nBZm$2o8gaE|qN-ofLK zJ;u8AcMuqdVz9Wx;$SIRD=9?{O+;0-ng<&6`vZJcO$mYbs3^^LE5>W49Se|)74gwW z9_H?Q?`5W(!OW<<$Eu2=*`&<#iL{eZ9gtCWEcW|kSr$1mjf9d4MwZ8@%+1foDv0BS z=QeZwjW+`^=3XT7AZ5ikJ8D^?<187L^*jOa)nEz$A4A}h#f@eQ=V0?QPjl0)w^1}3 zm<67Hb~DT6s%vjRQ;`~aVF+RTxD#~E6LI}R!_5)i#`2v8|vu%z#g(69X0{L0aR7R>dq`@KlCX8pKm-lHI4dASDOzftQ~(ds4A|w z^dbP>c=H`ZbYkuGEpOF5;2cn%a>kkaZn);EVoCQSOYu$KGIDE0W)o}wum=RjId5hJ z3#ci<0{x{$_Ae{|&}z5Ivy4IIkwiR;EascCxF2)$yNbJpK$8wuVqx&;c4i^Dn-;0z7a4 g_=#Un_Wx1&1p>3UeM={G=l}o!07*qoM6N<$f`R>lx&QzG literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/cube.gif b/src/main/webapp/images/icons/cube.gif new file mode 100644 index 0000000000000000000000000000000000000000..080baf481f0fda832a7d0990a17122bde9911e4f GIT binary patch literal 17747 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 c4Tx0C)kNmUmPX*B8g%%xo{TU6vwc>AklFq%OTk zl_mFQv@x1^BM1TV}0C2duqR=S6 zXn?LjUp6xrb&~O43j*NvEr418u3H3zGns$s|L;SQD-ufpfWpxLJ03rmi*g~#S@{x? zOrJ!Vo{}kJ7$ajbnjp%mGEV!%=70KpVow?KvV}a4moSaFCQKV=XBIPnpP$8-NG!rR+)R#`$7JVZi#Wn10DSspSrkx`)s~4C z+0n+?(b2-z5-tDd^^cpMz5W?wz5V3zGUCskL5!X++LzcbT23thtSPiMTfS&1I{|20 z4}j|3FPi>70OSh+Xzlyzdl<5LNtZ}OE>>3g`T3RtKG#xK(9i3CI(+v0d-&=+OWAp! zYsd8Ar*foO5~i%E+?=c&shF87;&Ay)i~kOmCIB-Z!^JGdti+UJsxgN!t(Y#%b<8kk67vyD#cE*9urAm@ zY#cTXn~yERR$}Y1E!Yd#o7hq8Ya9;8z!~A3Z~?e@Tn26#t`xT$*Ni)h>&K1Yrto;Y z8r}@=h7ZGY@Dh9xekcA2{tSKqKZ<`tAQQ9+wgf*y0zpVvOQ<9qCY&Y=5XJ~ILHOG0j2XwBQ%7jM`P2tv~{#P+6CGu9Y;5!2hua> zCG_v;z4S?CC1rc%807-x8s$^ULkxsr$OvR)G0GUn7`GVjR5Vq*RQM{JRGL%DRgX~5SKp(4L49HleU9rK?wsN|$L8GC zfHh1tA~lw29MI^|n9|hJ^w$(=?$kW5IibbS^3=-Es?a*EHLgw5cGnhYS7@Kne#%s4 zdNH$@Rm?8tq>hG8fR0pWzfP~tjINRHeBHIW&AJctNO~;2RJ{tlPQ6KeZT(RF<@$~K zcMXUJEQ54|9R}S7(}qTdv4$HA+YFx=sTu_uEj4O1x^GN1_Ap*-Tx)#81ZToB$u!w* za?KPrbudjgtugI0gUuYx1ZKO<`pvQC&gMe%TJu2*iiMX&o<*a@uqDGX#B!}=o8@yW zeX9hktybMuAFUm%v#jf^@7XBX1lg>$>9G0T*3_13TVs2}j%w#;x5}>F?uEUXJ>Pzh z{cQ)DL#V?BhfaqNj!uqZ$0o;dCw-@6r(I5iEIKQkRm!^LjCJ;QUgdn!`K^nii^S!a z%Wtk0u9>cfU7yS~n#-SCH+RHM*Nx-0-)+d9>7MMq&wa>4$AjZh>+#4_&y(j_?>XjW z;+5fb#Ot}YwYS*2#e16V!d}5X>x20C`xN{1`YQR(_pSDQ=%?$K=GW*q>F?mb%>Qfv zHXt})YrtTjW*|4PA#gItDQHDdS1=_wD!4lMQHW`XIHV&K4h;(37J7f4!93x-wlEMD z7`83!LAX));_x3Ma1r4VH4%>^Z6cRPc1O{olA;bry^i*dE{nc5-*~=serJq)Okzw! z%yg_zYWi`# zol25V;v^kU#wN!mA5MPH3FFjqrcwe^cBM>m+1wr6XFN|{1#g`1#xLiOrMjh-r#?w@ zOWT$Wgg6&&5F%x&L(6hXP*!%2{VOVIa)adIsGCt zQITk9vCHD^izmgw;`&@DcVTY3gpU49^+=7S>!rha?s+wNZ}MaEj~6Hw2n%|am@e70 zWNfM5(r=exmT{MLF4tMUX8G_6uNC`OLMu~NcCOM}Rk&(&wg2ivYe;J{*Zj2BdTsgI zSLt?eJQu} z$~QLORDCnMIdyYynPb_WEx0YhEw{FMY&}%2SiZD;WLxOA)(U1tamB0cN!u@1+E?z~ zLE0hRF;o>&)xJ}I=a!xCtJAA*)_B)6@6y<{Y1i~_-tK`to_m`1YVIxB`);3L-|hYW z`&(-bYby`n4&)tpTo+T<{VnU;hI;k-lKKw^g$IWYMIP#EaB65ctZ}%k5pI+=jvq-p za_u{x@7kLzn)Wv{noEv?qtc^Kzfb=D*0JDYoyS?nn|?6(VOI;SrMMMpUD7()mfkkh z9^c-7BIrbChiga6kCs0kJgIZC=9KcOveTr~g{NoFEIl)IR&;jaT-v#j&ZN$J=i|=b z=!)p-y%2oi(nY_E=exbS&s=i5bn>#xz3Ke>~2=f&N;yEFGz-^boB zexUH6@}b7V+Mi8+ZXR+RIyLMw-18{v(Y+Dw$g^K^e|bMz_?Y^*a!h-y;fd{&ljDBl z*PbqTI{HlXY-Xb9SH)j%zPWiZFxp-U=e_gQC>*|APo-#E)948>ALf$y!uW@to~q$?*Q%|p^w{N`X_za; zWb*y5Xq4^&*QIz72$Uu!p6kgZtpW8aKrdBw$x0Xw22X5`j8LJyeN76Bnik!hn%bwa zF!fUY83^rm5c_9K6-r*_l65E<0YO(?14)#9kw_SoBK8s2xts^xlk-7R3Y#Qv?yQFYC1PG^w8w8 z48YuAX||>1F1owb7r^*uA>>1FMQ~U>SQFsR_V>@P27~mI6H1DmR(RcJcmepx@KMQS z0Y$`k$`bu%5u-vx&e`o}eYIME14Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9C zMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx z20?>!`FrQsdJlnHR>OPycd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_ z^6ZZ}PI-92wGS&j#91PIKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3 zrn}7Ut74&?PWBFvy`A)aPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C- zsrWU*6kiZcC!$nw*)9$7n6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3 zj}vF!)ZOnz+5)dI4jl{{44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z z<8w`3e3jI8lUGNUta*C8n(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu z-=A!MJ3Znq&n~srbFGPsH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8 zF7cAsOREdwU~R_;ot1_u(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<* z4sZI8+sFJD270UUORdLHO0nA4V)%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRc zp*ceL#HUJSllrgm5wQKRQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3ljhU z3ljkVnw%H_00TBjL_t(I5ml32XcSiz$IrcUXJ;~#o!xxyHi;&}7NJE%(1-Y-4K`^d zf}$i;;-lzWp|wvU&5D8``cP7kR^LKJ67Zp+lu`;Q#gZ!I#XJc@R^4qrj3(>O?(F^a z%%pkfg?ooN_x}Iqp5K`v#u%6#AGgNF0AOrJ;R<&rPfqmZ^G6)VYnChJ)zZuIgDXEg zdLHk^WB%$8`x8FVlarI0pq>EWisSn$qX&CBbJx4ugU6qrtUMLfNiIw3b9mVHqu8|M;J zY>-;Ssy8A{2(cQGiH*Rv08)g2RuYVsz`201&IuRVmP$+CwOLcBiG;z@uiwpSQ9rR< zT9yEsNu^MzfKmX4Mo|<&y)Hm$jd86qfoECFUf5czjD`zfEze^0FMvbK`yef92^r8Z}?hg29?;faD ztKhme1WpE7NC<*7c%GBoOf-2aPM#Pb9PAW@<>eAyw}J2pI1UN}4}~0BT72m3$%8^3 z5?M$>K^duI1FRCOmVzlH-rg1{*LBUx>N>2gzeacp6lTV5Mx_ReoF4iE3? z%}lhq)==7Kp1`EpYzJ_mpt834`#(#i+fzUN{ac(Jr6eI=EEcIT@ifUh?l@#j*W`{KqI9*f}>dGZw>3N{?gj Y0d`oHYyCmI1nr3DC<^9@PyNudrDc9~P$75b!T6T2tv<*K=EzTZ+r6P_ zRz+%oP}4Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx20?>!`FrQsdJlnHR>OPy zcd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_^6ZZ}PI-92wGS&j#91PI zKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3rn}7Ut74&?PWBFvy`A)a zPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C-srWU*6kiZcC!$nw*)9$7 zn6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3j}vF!)ZOnz+5)dI4jl{{ z44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8lUGNUta*C8 zn(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu-=A!MJ3Znq&n~srbFGPs zH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u z(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<*4sZI8+sFJD270UUORdLHO0nA4V) z%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRcp*ceL#HUJSllrgm5wQKR zQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3ljhU3ljkVnw%H_00SFIL_t(I z5nWSFZ&ODUJ@fJW^&H1;hz)L<#zF;JMJkY}NUR8mzt9aKLS@IcJ6J#@T6NQHcdbw& zu|RC75ZfRj@l_%e2ti4NAPou$wqqyudv@YCbGc(dg*s28cW36Fd(ORgMi3F)m=r=@ zCbG^R79xEFIKU@4w-!L{DX=t8)O735eT56~X+sF1F9H*#;cw3thDsxS`FszoMRk3> zv9Yo;`}*bL^sm4)V>P%Fv;N7#Q#_WVLss;iY(AhMpc*+*OIjD4| z7kB@8eEsLO_vf6FZh%Wd{4{p@)Stbu`1jt7Rek+ZC_vtxDz^+Lix!PJexQtqTz!!t5px5=3D^S-CZE!9NCr((oVLkf#e&& zgM@%`YbCormIG3!(>>E1rB<)kx3gq2-awv~#wWz01O0D0Z?_j?AGBMt1~in1ntlZ= zmm7`QVsB=QTVgu{1?8ku_xl)#k;Gz%nT4@7<9TYO8O|rdaj1Sbd}S{r&6k8 zA~Gi8wy{i}aDU6`af-W9L`6TP>fF+|t#Ha=yH&cn*|;&cwSCi58iT&ieJ2}PLv0S! ziXwE3WkF<1=`@nu(%G%XZN}XBQSfb9n4DA#K+l7qRZoKseHoAM+m}cPPf3x~+WMYH zy`CqF$)spn61O*Ni@#OsQ(TUBoK@R_Q2^3)c(DgzxVp8|7EG6jE1k~8V=AVUs6@s* z55hOMs+%)Y+ri&_xu1UxySB`Q{PY&o2oP`ke&$6GxF=jV4)o=L6x*n><2|6_%%Mc0 hm1(!jb3}nV`v6;xm9pCkbou}Q002ovPDHLkV1fwn7l{A> literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/eye.png b/src/main/webapp/images/icons/eye.png new file mode 100644 index 0000000000000000000000000000000000000000..2bcc44ff13a85f15eb67d4b0c0bc9b8423cb6b91 GIT binary patch literal 1429 zcmV;G1#0?4Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx20?>!`FrQsdJlnHR>OPy zcd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_^6ZZ}PI-92wGS&j#91PI zKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3rn}7Ut74&?PWBFvy`A)a zPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C-srWU*6kiZcC!$nw*)9$7 zn6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3j}vF!)ZOnz+5)dI4jl{{ z44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8lUGNUta*C8 zn(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu-=A!MJ3Znq&n~srbFGPs zH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u z(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<*4sZI8+sFJD270UUORdLHO0nA4V) z%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRcp*ceL#HUJSllrgm5wQKR zQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3ljhU3ljkVnw%H_00K=(L_t(I z5v5XVNK0iTa7G1WIK(FAY`<39;xNA{z>d8E3N6169qs@dTNOL`s<9uY@Up zmO!0QT1E6VPV@k77y7=zvWXEkE4Z3mvc5?p{5e2>Fh3ygSN)s$Fu- zNH`c?gf8sz^SDiy4tep2@2TT=C) z$%h21Hg3qxM{saUxf`c(XoHVC=RND}Q+)1fx_zMyC8GP+Vq~}5mGPnBEK(O}TPt=* z`aoT2UB0`}ESg%5$>rqY3M$}b@I6a5P35A7-oo_VjPJn!V!8z4%i6L{wkL06asPDh zngn83-saIe(@&nFK9jD?P=w6pWXTKAj$G0RGW`7B^9wlEdf79e4&@ jW2)p#`GdeL{Hy%|Fe^Fc*8fnX00000NkvXXu0mjf>b|$7 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/folder.png b/src/main/webapp/images/icons/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..8213bea24c7f37542d0bd24e80a07d44cad3695a GIT binary patch literal 1604 zcmV-K2D|x*P)4Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx20?>!`FrQsdJlnHR>OPy zcd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_^6ZZ}PI-92wGS&j#91PI zKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3rn}7Ut74&?PWBFvy`A)a zPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C-srWU*6kiZcC!$nw*)9$7 zn6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3j}vF!)ZOnz+5)dI4jl{{ z44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8lUGNUta*C8 zn(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu-=A!MJ3Znq&n~srbFGPs zH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u z(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<*4sZI8+sFJD270UUORdLHO0nA4V) z%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRcp*ceL#HUJSllrgm5wQKR zQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3ljhU3ljkVnw%H_00R6;L_t(I z5rvbCpVQGJShGF;%PjH2SG&; zK~EkOGvh^+#FGXuUfhVggK^0^E|bjkzE$~ZT;fR!URQVXeqX(M3zSL)MVb&m1fb!| z|EyRn(qa*)^lJ*>uXX+Wj^##+StKkIhrT`PyS2}s-adG7;tEvJ%|lW6$DQCBJhyX` z6HxK!u`_zHbl*O6gzP$Y{Os-Y!qrfn9EZl-6nCt;ABIsQ@V$4w>%4dD#s@Co+P))q z##mdH40X3fde5rt>u1CJZ?4_ABjdPpkT%AmT$ZRE3l>nSv}XWBCJwyCQ5bAyG=br} zPgY_ihZq1I%$ekHlFao|wXJvAvV0N*KKM>eP5dztfeHdBP(>4zGSE~#QdFi>3Z}dY ztIp6%D&q%?jGq!BNC-?Qjx_^Z^nua3geasAgf}1wZ4v_m9x+AJR17GIC4e40e(S00 zDz_=oAq+W$kt#g<8+?2{1aC$k!u!e;)T~bQG*CPXJZ^x9EvytLO@MrOk#?o}O(dRc zDX!}wh@t`5^=bGz`3x%0N5Jx0fib)>7D4d&LQo0lKc?RkBt2qgyMc2(!7PL4`VgRB z%v->7zQEMP48+h0aTH*;G-Xl>v|R4TCMqR_DwoY%Cvuul$b9cb^WoXMFj+cHLW4^xy4rrDCt=Q|X`NP+9u zk}%10O-o_2>)I~>ZrGo)D{=Gj>xnc%`p;cGJ+a=ho!yMhZqKAs8?y#YSH~;Ll0|v! zhq^uw_{nHSQZ5zft5;=Yi3EQ?l~yj7PffqM&^uSNw`jV(H|BhWLfN1M{A2Qf6pKKA zPU`%G4qe!(A1$nD#RHn!e*or1a?B-20)GpC?>_+4pxV~L8CAys0000l`516uN0Cy%QCn*#P zN4+?XnV6U$gm4+)tOVYBPqW#iR4O4NG#U+RwHhG=0M1IFaU5fYPBd9i&QF= zBOt%>{_2-vWqR6}e=Q|zuYC{Uu?29>0nqF9j!t;*`+!k9HF4uzWQ+mrU&a`G`uoz? z#gBS;ID~+64r9zo0Iw1eXI_!I(0|i?-!<9Z@v?#tyr}>L)YYlM;xxzWB zci)1-?#>Q-`)#}rhzPl%F?4Yb=iJRf0!x1A0_U$k1q4)4Y2){ok#wD5&4{9uo~C&1 zQXYT84`6>h%AjLt$N-1h{%&j_q^YWt>=;P1=igr4zlL%fL;19?jRI!bA-Ztb`U~VH VYY-ljn{ogE002ovPDHLkV1lweE*Ss- literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/forcedelete.png b/src/main/webapp/images/icons/forcedelete.png new file mode 100644 index 0000000000000000000000000000000000000000..0069e84a4eddfc7b8000d4ee52aa92e90961b14b GIT binary patch literal 1318 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/grid.png b/src/main/webapp/images/icons/grid.png new file mode 100644 index 0000000000000000000000000000000000000000..2ea5dc45ec0e027a8a435d900a80b172f3846d4a GIT binary patch literal 398 zcmV;90df9`P)KvheT^SXe3;TeT3u5Q0b$ zi!_!dod(fhaooB4joBqER@sfd{ym17Q6fTi=c3{oGvgUU94xJ|wSH}E{7TyZzPwzR zCX;sYgWXU{(R{HvxVlaO*qtU$GQn+K0HHgIvEfAEgaL!o+C8f|B0?O_mBLa^D-1kt zP0j|f-f-EJKw@r>%l{sO#z52%N`cn!!{Qkj3Ie|TXJLiDWD^k;5fI-0W>_!o4~9GN zou}j-jn`_d39_k)zzGBYe$v`Lt~y4Dg;rIpwi5K(l@c;k- literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/hostingNode.png b/src/main/webapp/images/icons/hostingNode.png new file mode 100644 index 0000000000000000000000000000000000000000..71059ba5232c48551d57b4ea79a2c7a44021a014 GIT binary patch literal 636 zcmV-?0)zdDP)o!O{p z5K>v_T9!x*poR#lBx;=>j(umFOC(na2j!7Y{)W@@y?ze?D=ROsyu5t9P-1*)Q8 zdOC^rX&XeL5Y8f(j*sixgpgk$!4S{$ctQ!s4lJvWZm$RGdgyk#@CGh8j*GB6obUVL z1d&Jtq9_tk5IjmKKXY*g^K7kr23d6yjooKKld2Dx1B8^`e-Q4-PX z_lCcOR;vYTFhHLrN~hDc;`3sAad9y$kYyS1c-&ExsHbTfrt~SKl1ZdeDM+#i8uy^8 zic{Jsd24HHVL^c7IIwL8XQqi}yERHMux$8U50ttH_^*KV08xk_rmC1q=+Jc?q9njm z{83Kb)fRBHW7Z&baTUvVZa%*eL*xlVV_CM^u*?Yfdl*?sfb92*JUw{2L8kP0G7ykiz W$pe4r^j7i!00004Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx20?>!`FrQsdJlnHR>OPy zcd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_^6ZZ}PI-92wGS&j#91PI zKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3rn}7Ut74&?PWBFvy`A)a zPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C-srWU*6kiZcC!$nw*)9$7 zn6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3j}vF!)ZOnz+5)dI4jl{{ z44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8lUGNUta*C8 zn(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu-=A!MJ3Znq&n~srbFGPs zH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u z(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<*4sZI8+sFJD270UUORdLHO0nA4V) z%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRcp*ceL#HUJSllrgm5wQKR zQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3ljhU3ljkVnw%H_00TTpL_t(I z5lvIgYg|CUO3Rb9DRH?K`2vVa92{wY#g*&_G)>1`KG8?hr zf8froSqMTmA~fJqteAzZCQ*WolSDF;`F!u)cRxH65InofJHK;&ALr4%_L5p!yJx}m z<%idnWhg%pL@khbK%hTMAGR{Dwj=TbE5$*#x^TF*wq~aN)1nXpKE1K>^y4-6SuGaV z1qFB?pd$tFx4d+4{FZ{I?E?tWvDWPhsdh3;TlDRn_dXwwhaV_-J<3YY8@;oha_fU- zWUK^5Qb;L@bR>C@fL4-+du;CZjiSTu&9ezRNYkPTPWF%+&JWUfqdLY>--{`=a)bzP^nc=PZOMOq+n?%N*5#vWQ7~6 zJTH%Dk{HYorYsQ}Pobm<4)1@5w4NeG3?;zYCD;t)#_~|WI1l!hRN_KLtl6?T!4t+u z2h2uc(A$U2BB;g;bg)p8je|W&WRzR9v_e|Z6NSPJ!*Gb%vrXvPDoSI}pNvq`6+{f0 z6jP8uVG0<_v9ioSglas6;#i>(cb!Ub%+y-eACCC4MCSP6=N&y; zi=hV(S%zlez-&^AdJ++zIMvRaJ7EyXz3|)iFLY(~HZEUYd?25H;nMigKjvXpi0(Ku zy3;eKFD=ZA+*`5LIi`XH4UMyZA0BycZMeVrqno?x<>(t9MR*CeG)-iax&e z{)M`xtA9P(e`PWmU94!#3mNeG%TMB`&EK&zdIE31bN%k>wbeJLAZoYUd?p*B-QM6^ z;y>hn_3Oq)`px%WU+8p>UVU~hdTn#(;F;%MdgH5)Zr@ttHov~UF8>7^7pOBYDZ7XO O0000-d^Ad7)8u`Y0Ma8zax5#csK5(60+K$HO>jq2*645p^C4oLC_ zP(uhC0MjTdC!hdyHb2Y-F0QHuQ18SeiK7|-l#tib7FPhVjZI|0-hnCL<7J0=DFIm= z23UZa>p?b&ig8Z>(jTOx_!zryyDk>rq1O;al zynp}w0N$u6%-?waKM<6aZrKlt)=e9){s&nE#QV{snFX5xSFgUjfE1k{&YXDyqCvJ^ zICr7&AVCA(y!m?I=FQg$@85lA0BX3%z|hYC)%+1}N<;z|Zryy%aQ5sIm|r(w(~Q#q zkgZT>!$1L1c>x(bfA;ABl7SCNHUR4U3xqNg3m!R;0Urn%01#jRLTPrsgM3k`00000 LNkvXXu0mjfvLB<> literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/link.png b/src/main/webapp/images/icons/link.png new file mode 100644 index 0000000000000000000000000000000000000000..15a202006a178f653daf569950816db984689cfe GIT binary patch literal 1547 zcmV+m2K4!fP)4Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx20?>!`FrQsdJlnHR>OPy zcd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_^6ZZ}PI-92wGS&j#91PI zKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3rn}7Ut74&?PWBFvy`A)a zPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C-srWU*6kiZcC!$nw*)9$7 zn6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3j}vF!)ZOnz+5)dI4jl{{ z44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8lUGNUta*C8 zn(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu-=A!MJ3Znq&n~srbFGPs zH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u z(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<*4sZI8+sFJD270UUORdLHO0nA4V) z%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRcp*ceL#HUJSllrgm5wQKR zQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3ljhU3ljkVnw%H_00P5FL_t(I z5rtD9D4yGsyc98mf zKC-E)iG(=3tE-E`FbpqX4g@1WA$advAW@mX*e5s$fXU9zPRZ?dpZb{=I@TaV(KcToXlkF)xeH2!b>dBz4r~a(zVwDT>qSqyQ`-$H>U=V^f*w zs*p-$E6UC1I&R&5j{G;;+9EVfn-Ey`WD!X8MuwTPSU5YRC`F@DT`2U8 zy$sPk-Q9Br{h>M`mHu?1q2U9#{gKY;J74)akUxEmo^S5`^sc`%xEi zHMO>rFm(a&T}kf@TZEdZFVT||EsWisN`0K8Lfrltx1VFQa z)}o*}MSuxj%HeR7>}3X@roO%& x4GXiY23Yl=C7?P`^^^TO%0ONerMUag<~Qo_vtYp@3QPb1002ovPDHLkV1jma_Cf#v literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/log.png b/src/main/webapp/images/icons/log.png new file mode 100644 index 0000000000000000000000000000000000000000..67de2c6ccbeac17742f56cf7391e72b2bf5033ba GIT binary patch literal 512 zcmV+b0{{JqP)CQDsH?WF>AIFt zQuJ}i;w2$ZUU#3SZ6RY0Gw;kZ&ol1~2ky^QZ(fom$=jNJZt!z7w_pH~wdQ;R)Gh%BbQFCx+Nm!4SuS-vkr`vhhrX zM*>w%e+v~?m@q~ImPAgtLkR_3U<2F8LP3W5=LJ*ZN|S5p#sf4YFr$p~Q~Z*0Ngxf2 zjk#J#<7EAlhzlrV53~GF&pIzcCN_lz9@05UeoUXiK%N z#x+4o*i_c|6_Uu1+&TIho?3@y4k-#b8Y_o94zW*B3a1ne2-Y5s0uke$$|@=}OP-i= zNYZQA=>PrZu0MfSL=b8UhD_={W4IY1{b{)U)*gc45xtL%IYLY&hF;d`@GzI&7H&D# zh;z_BX$#hqh@q?AY3sJTod2%*Yd)_>YM0#q&ixGuh+PQsneK)F00004Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx20?>!`FrQsdJlnHR>OPy zcd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_^6ZZ}PI-92wGS&j#91PI zKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3rn}7Ut74&?PWBFvy`A)a zPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C-srWU*6kiZcC!$nw*)9$7 zn6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3j}vF!)ZOnz+5)dI4jl{{ z44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8lUGNUta*C8 zn(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu-=A!MJ3Znq&n~srbFGPs zH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u z(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<*4sZI8+sFJD270UUORdLHO0nA4V) z%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRcp*ceL#HUJSllrgm5wQKR zQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3ljhU3ljkVnw%H_00T`)L_t(I z5nWSVY!p=#{_dUWcDK9zW!IKs!nWn1U?encH8GkL>Q9VS5@KVBCO#P72)tpU4{l8Q zQu;&z1HKd!6RbY?q*%}{kl5PBP$ZSMShh>M+n?Q;?RIwlcIU@40~+uoC->ZQzVFPv z-?_tF*ToYiP;5W3|9{9S;Sv5Lc?sW=$)reuPc}_^Kq_sXm6Xk28-W8nKiw(?9(ERXvW}tZ_O`z6X1DLTe`c@Rx3f2euK3~C0;s7F_7=H+9bs&2 z%sW=|&E+4iOYVHMY^Ww2v8pfrA$OR?AM8wVjvC=!?uxy;kqF~h{THWDG)hNdC`kn-uYxYBTHW1(tQyYsGaiT3vEk|jESkUs_c_ZB< zYb)+aq|K8SBGcU> zibkHm3@gPs+(>_ebny9Pc^lawZCNJ)3iW%>xOEL}EQw)BLh-+wIpLjF%h5W|5;7YsF>!k-3VLd>fV} zA<>`2foOMy3tW)$(vRVA_}iJ88Rk7-7@PdFWBX3L5R2@o`(^1%Cz(C(C~5GvNE>@| z-)Z-q10T7Kyw%x~wgRSUW=2LvE)uOXm&>jBPnj{+FnZ>~z|r>xPN`h(u|<<4h0|{W@l#?9{&p@Fk@lr+H`LC(&12T)%&`s_b7@| zSJ;uPNPYP4SoE2nFOOaRdU|?#b8v7_A0Ho=z0?2Oz>A+UYS>PRwj*yGDLAI{*W~1+ f@f3hIgkk>xSFwOhy(gKH00000NkvXXu0mjfon}1H literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/plugin.png b/src/main/webapp/images/icons/plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..6187b15aec001b7080b51a5f944f07591f26cc15 GIT binary patch literal 591 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 B+Zg}= literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/refresh.png b/src/main/webapp/images/icons/refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..85f47cdedc466d12f299f4770d1d87b583eaa1dd GIT binary patch literal 1783 zcmaJ?c~BE)99;+sg*alVBcQEoXmKo(Y=R*s62lRYC_x0KrfLg07D!{VAz4hckO);q zi-OvYctPsa+oGn}(W#ISV?`^6iV_7h1r@cZ7y<_6*ltv`f0XXb?tZ^--h02}dpo;1 zC3(>#-(X(=04DJgxvBWu-+lW`1OShm{$>{*1flT)G!4l@H9{2(#7Gbk4D#f{Y&aDb zO4jCHhNA$0K$4~lPys)QB}U|Ap&LWi%9S`90HQcrrBEz`QBVYDOBHNV?>RFGluFp7 z<#ay8SH{6P(!_NtIBi{Wx_F&T%#@Hg3&AKY3m1^Xs1Vf3S1Z&kEt~XOmxZt0+Y}P` z8iLB$q&Gzg_$go844Fekq{V3B~v5jF&K=wAPu5I6o^Kl(!!|>Rs@X&LEzhq zglAJpvRJ9ygtxiyh)v2tQ6-B)(P%VeO#~THWmBk3Cey7!qlM#$aP?XRD%6H6)FERE zTv#nuNtLJ+QGjkmp$N%C*(AKuH!aAO?_?F~w`0NwM$rnD6e<~Vw=@Ri^Zy?zm%l@+ z(Ny?-z5gk!PG75pDXFj;$y15(gUbqWr&6-wRIm_5ROtw^dTfd*IS7iVa}XsMmqrKq zLa|igj$h;Xd=^ikMuiG7%;U02xB^)!m9VH>F2soAQsZfKh>AaB>C6}=#GJ>BkD$lX z;$z3STtu8FhZX1;SMr`q8<*?0f?SDb=E5rJ8d#E`Lge7i;TyON!PZChB1so@PP__ zUUn5kczAA_5_-NSzRO|>SlZZ4@bV`lN?Ncuj33$&`K+d2>?z<~EpP3pn4@xl2LTT+ z8-b8idHC21yX36X{P$q_=0gDrzf*y`<^=!Iq{zwwy69=Or9XU<*r_ z1D%7p()EDn-cC)GqanCzu{d&KWbtS__A&X+$OXO2VQb--^!g@G+O60n%Od)c+wa)Q z?K9CG_;Q+ov}C>LVkQToRZj2$iTa-ip?29;YV<3NQk;RslvXjF5f|24 z{AM42Tn75;YKM%IALSO85euN3WkN?EJ{uI#7SO zD60R-Xiw=(yXk3U>iuf(z6AnP?eN?@L+8!Il%)&1q3UWVf1Qim?HqCy_3hX*F*D3$ z9&U4XIqIz(dqMAD-y_0z6=xhG{sQ(rHN(L6Sn1J!w|ja-vmdWs)@O8{V(vRvXQ^wv zT&H|`kwn8LZ6e`ULIYKf-n>P}{pa{K-~ z*PiOIRbg8SyNF>FJM%f#YhM~oIKQg#!09ay=I{QbcI27vo~8Ujbk*Kjx_k#S#$e@k z&$7yjgGv|`ut-dEWUL^3AJgulWYB<$g3|9wdOC{l*e3tJa!&9jXEiYLVp;I*^@MD@ zT|DYC6jrR<=N#$rJ6SWDkJWD2Sdw?S>|}=JXpgOI=IjIThJ!N;US6qhc;3@qUN+NU zsRgz?-RTTyHeEYO`yq2#w{Y9?duqKAGu|DNA#3y_{hMPJG+fzLvh~_v=a8NFOUGQI z&DOhc0Bbgg&U#?jC;Ceg=qN&Smm@MjUQ|(_fKlt006?={l+gZ1$4WAMZEZA?uppUqJIFl)$Jev literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/report-big.png b/src/main/webapp/images/icons/report-big.png new file mode 100644 index 0000000000000000000000000000000000000000..d85c8bb061ee87e46000df2d2eb8184cb95c9de6 GIT binary patch literal 2022 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 Hjm!EMo>tu< literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/shutdown.png b/src/main/webapp/images/icons/shutdown.png new file mode 100644 index 0000000000000000000000000000000000000000..76eb6e09f61b669714091c9f5df4b2186bad969e GIT binary patch literal 515 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 QumAu607*qoM6N<$f{N*-7XSbN literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/sweeper2.png b/src/main/webapp/images/icons/sweeper2.png new file mode 100644 index 0000000000000000000000000000000000000000..e6c8e8b9f341cbf3a1795631ccaafd14b0e0c911 GIT binary patch literal 773 zcmV+g1N!`lP)5 zl1pfmXB38?@0*$EOcI;hNJ5iHyw#`_D<+Ey(t?XhOLl^ng^SURf+GA21zi{y1{{!5 z5QL7#g;8=>?7hOBWP~@Qv%4i?;^z?o7$2sh!G| zts6JQ<4rGsx`hNvL;&d8r%uFIa{QCF&sB3vJ3Xhnz3G3(a_m%-#>gcR&Ll0E*wJ36qI~C2ft2!

!GOpKDtrJ2lSaNQ|Hgjn@93PsJ(gZ`2+IBy96 z0wag|dVeYUtj2Xcip4zE2Iz1NmGK?q-I(0Ec_nX5@MXf0%df=eg{JcD1;K)00000NkvXXu0mjf Dmc(vD literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/table_multiple.png b/src/main/webapp/images/icons/table_multiple.png new file mode 100644 index 0000000000000000000000000000000000000000..d76448e34a04f5c94794597f91ade6f423b3f6cf GIT binary patch literal 612 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 Tb9aXZ00000NkvXXu0mjfT$&!h literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/upgrade.png b/src/main/webapp/images/icons/upgrade.png new file mode 100644 index 0000000000000000000000000000000000000000..74d20bcd3ac299b3e3f7bb9d1cdd5e1e5ea09248 GIT binary patch literal 1631 zcmV-l2B7(gP)4Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx20?>!`FrQsdJlnHR>OPy zcd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_^6ZZ}PI-92wGS&j#91PI zKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3rn}7Ut74&?PWBFvy`A)a zPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C-srWU*6kiZcC!$nw*)9$7 zn6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3j}vF!)ZOnz+5)dI4jl{{ z44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8lUGNUta*C8 zn(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu-=A!MJ3Znq&n~srbFGPs zH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u z(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<*4sZI8+sFJD270UUORdLHO0nA4V) z%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRcp*ceL#HUJSllrgm5wQKR zQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3ljhU3ljkVnw%H_00S3EL_t(2 z6^)WxXcb2o$N#fCyX(1{oScY8k0&;%f`W?C6cN0jXe)V8@uWp)X+gmUFCak$g>V`K zgHJ+z5CrK%1&<<#@zzM2QivKaHBG33iJ|1C=HkhT=d!aqJI<`w(mpvb!_Lh2`+wgz z`-cz${sc%SlhXg$%kvcQpS}3sJyF3Rg!l>o`dhZtS&2`-qoMMZ8qtD+m0p*!W4GQs zIDc;Wd6B);*r=y687@OX)RY2J0T?*7y(K&+alE`D23E?$;|$aaf>H}FhlWQAg9BeJ z{Ql1GkOGhbM3sV6hCgrF+*(~T@9^tf0p3)<1FJ$K=1h?Mun#q-$fM0e`)4H{@W(R(=g~vtl712N2r;+M9RSaNDv7R<~dVod7ADY?m=_fVmjuq;u zG<9$4rTw~7fIZqSP=8P(HEY1`W?)}$g*(~@+Hefo;?K?OP&W_g&hp--)eVZHHxF#J zlGI)`JvIaq-=-N$HXwiDFx=;tAv_sC3?P<()7K4qd_q_(48enIC3}sQ(QwEuu&B*O zASxrI&~+Py&dU<01vCP;_dZI!SD`01!u6_PPs@ii@rlZ;ndTerIgGnr0_;U6oWX8b zUmO96#^rx7;EwdcSg{Y09Y-MSK6yqVh?Vos!CEuIy=XcT!pGo$?Ny*6Es%|UE`2Y7B0W>qyx z{XNLF9r9>2X-qO+49%W*RdMefCT-ZYXYu1G#nP$lQ%LZhxHFon((X?$F|Jtw$mb&y5iwO-N=)<-jZ$lv5T- zo~=LgXs^nuEbV9RNT=!g=4SV4=auB>FF!vE4nCM+3di@Z!(Gt$0^}-de_Y>m`dc5A zBxL)3&k9sRH-vaOGF`ULL0Mf{?(YzF3nFh;ko^3m7SXA@WU0Ec1R`MPy>; zv803LO7=r#rBd_FTEQr*QH7>94Ogvu zk&FG~o!2@q_g%f*ceA^@`^VwQpRSDekM#@;3=a&C58eEIc;wc#(TUNi`!~j>Z%xhp zI`hZm)ZMAs`I$S@v-kg;eK7y%5fA^U*K%QrRxH@2GleHuu`o%`#zZY(Cw*#6EMm+rpbVx^#R4ue=ERen z7W+X}gdDLmaugX^k%Z%jdV=%Q6Oyf1z~-k*VixcKm#rXmHzB9iz*>GV)F!+L`+)@p zbf5=@$BhOB$RHHl!2ld&ffijlr0CGf5E5E-V1$e(GFgx>MX|_`!EKDWZHYMq*%(do zCqZZo6uB*Bpv70j)8aw#3309Xw=(B!*JV!;cR;7^Exm(zNoAsjBNO@7=ln><# zG!;YzQ-PEe-~6bkrHDjSsDoV8&7pb~_MnG6^e$-S|8crty>IxZ!Mh}5^bDs{(_{w7 zxh$=YWh@Ts_8)E==D$HQTde++Y=8zMz`C8wwtEW891%G7F567e00A>N6Z)2Iu6QNZ zRs*!`QfG5H3-tto9sm<_81FrRB+HP;>C)0o^meg$Hywgwi=o5yY7dDUtzuc);xp15 zV`R7-M&kiS?G7Apk%A_P)hUn2-Navsqo?5A8 zh}}V^=%7@_%C;=H{tGpIj5CMu*>5J=i;m^t2QTySd)}9aAppozC}++wDz`eOViU-dbRRoz=JsVlZk>N%^azhi%=xTCt9`LQjtqNFW~e|R=r9= z`@I3J^#z@aD5yBuq2DLQO#|4uFW6R5kzPZ+h&6Af&5}POarL&lA~3t5R1i7uh*ffDw@qEs=HBW ze?CI~MkvG6H-MF7r{Yv4kw_q&PNP^XqFgTHXlH@RpLO}3aV{T{Ez=8lo;PHV$Ads1 zfOtF(s5%5V>3qE|&{lueV1Y1j%GF zXt&#NI-LlGLPN>_18TJzN~Mxf*f6pY5Dteo^|P&3>(H{!KTr&_wGRQWb^rhX07*qo IM6N<$g7V1&P5=M^ literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/warning.png b/src/main/webapp/images/icons/warning.png new file mode 100644 index 0000000000000000000000000000000000000000..47667430a9fa7337a5bd14d345ab6b79c15af9db GIT binary patch literal 869 zcmV-r1DgDaP)z?Ck8E=Xrk5^E*cXKych#SXij`csx@x zGc!|URR8Z@-ez@mRk*aYR7k)D1f1O3+Cn0cfYE47n$6~dk&%%?lgT7JmVkge2$-9n zpJ&`|cahWSWTMe1B9RCPkQp8xE+RzCz`y|4+uPfbN3gQ8A`gedNTpH;g+d_UJ)6yz z4Fm%4`~4Ui8p;yz9;plr!(e=T98FD4@*DwCRS>UPNT$c> zo?c&Hhu7h@aN6V&1tPx8*gZ6@Cpc++uq*h z%caUBNc8pfL9JGoQH984W#PvAo3T{LfK|&gzA{=34Ob$Oa01d}ZgX>!_ec+@0!bWg zZEZY3$Xrps^HGnZy)XhpB3Q?|L8|5NS5;MU0@4z1Yinz~tE(%$yu8el&>VC+oqM!b zUL6>`@#Ao36o+40kdBOD!6?DqJJo5CNE9zGFZbp`ByG}=Ao-x^>hZYYdRL3xpb>|0 z6`ap5;#bOuW!+V@D=SQS@4#R%DEj;RvukT>Jeao2=Q7}vRgO%u2W+?sPHhPeVp4pM znlagO1$C0!>KuVyub0#0>B}QT(5O{=_V(-eMuI!|d>{K8qCYcqi&%MqnBx`RKD=zn zdk0FTvZJ=PmaD0$VVtk8J&HM7koo$CSKkj+5(}mL%0|UtnPE5^&TTuC#b@(A6Cn_a z#p1%bmzNUkZUmXM6^BWZLDKNgG~wu{ABkB#Z1U5FW51~DdFk%7wj^U$U*M)x=Q;b+ v;*9-?keyPTVF`$}%1*IX=}Fe|;KcNA$#nLD6jKLZ00000NkvXXu0mjfo}8uk literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/world.png b/src/main/webapp/images/icons/world.png new file mode 100644 index 0000000000000000000000000000000000000000..68f21d30116710e48a8bf462cb32441e51fad5f6 GIT binary patch literal 923 zcmV;M17!S(P)A9)b<7tX~vT z$e)FfZ+`X4_uKyq#wJHC;J3lH{lhQkUc~Wid;*pnjhM12xe-bPByd^xuQ9zgeM^Mm z*tc)|P}LtTnHXr@Gkmmbkg^O2bqyhO>LP|qjIwW2@Di+4EuKm~&tOO2!N3o{128Hl z9v%fgerM0C#)7P|PMvxr*!Gf?eGA8f{OT6fS`9l>LQCg)p=~c$Zr|AT_0+_?F*JJk zlapOT2Q(wWx-LMq(TxXxLn+U;!LV)MhNp~ommdh+fo8T*&g-yQbbG&ze&=>tC(Ar=&^1xlA;Jc(6 zcCi_xs8k}-S&#ONOHm%e@#nGC7F++8C~r29Or!_{(QGQEG)+O^J1BCPmgM4JAzC8I z`jS9bO>|}Jq_#$IRzp0d34>)&3L%7MN)eTv!0B!^nn}f4z2*vFE@jv3dn zG>H)u>FR7_d2JcsjvfZ$vkP~xik@T^(_N)nx=tqJV+tQjQ`owJ83bf`zX6Ear*=Mhzn5QUuXE|v zR33Qyi8G!0{H2r##d#6R6YmYbZz4NTssT;cXiGb6lxO+k@{ba@2D~*hKDY6N;Bkh> xhhCRLejsJkAIT{5sICHcfU`5>bKmUb{{y)0nR3PMMxX!y002ovPDHLkV1nl+t-}BS literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/icons/ws-resource.png b/src/main/webapp/images/icons/ws-resource.png new file mode 100644 index 0000000000000000000000000000000000000000..e1ac96fcb45283fbbdfbb9bdd0776bb68cf2e50d GIT binary patch literal 695 zcmV;o0!aOdP)|8JRi+H|V#jxp`JQ7@=)6!Nva*i)0!yEV|UOMzvgA08t2DA7bW1^VlE zdv6px&eN(y?1OAi@G?%`RIYu{Xt{b*sH|5KuLDU@NPIFPd>T@6ij|GkrB=H+w^N;< zRKyjW&D54RSQ{FZS*3{XcpZpeRecka0qz z4SQ!Hefx~4YZQ{#0orzhg7Yyw1}QZKI@1-t;F!8Ht{^eIk%n~#kSqtJ2qG>wBD1le z-v>xLKzIWba)Ucl0j(kbcw9k*7enyQKw20Eq%D8|DG)$-b`7-s9kC{GDi!eI9(H_- zzv2oO{nFf4#zjf?(+g?o2{=B8h;t0&cK{(Lkf?+F_Z))j9-3bXIO7UF%`Lwhcs(<& zEUkuINQWY?7)p}`isEd@(n}zdR={za7@Sf}POS#tA94q(OT)IjC3=32=;JM-uR}y* z*NEQa61_FjXoqRFP}E$;QOFeds)yBvms5|5{GR_x$TxJGoPBkhowbF727x!@2yg)Q z4kS5Ml~7SrVy d49ntQ@dqy86i9NF!nptd002ovPDHLkV1g;~G>`xQ literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/loader.gif b/src/main/webapp/images/loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..2e7de3e32dd8bf9740ce35b1b4960e161df31478 GIT binary patch literal 3924 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 Wd}HOKn-N`^RbH!hc7-r7SOWmwN7Zov literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/resource-icons/blue.png b/src/main/webapp/images/resource-icons/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..395561173d2a96cb83482aff9264c744e2faac06 GIT binary patch literal 1169 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{L-^Aq1JP;qO z-q+X4Gq1QLF)umQ)5TT^Xo6m5W{Q=Yk%5z&tD&W#tCOptp{uc@g}JM%lcj~Zxv7h* zi@6g_uSMv>2~2MaLa!rEy`ZF!TL84#CABECEH%ZgC_h&L>}9J=+-@<)X&zK> z3U0Sp;MA)Rbc{YIVv!;mCIn19ASOK70y*%6pPC0u?M1+3ZO@fe&%nUQ>gnPbQgJKk z&;S4S%&HBnE`R>~o&NA@yF5=%PeEavLYhl3_oI5&NA?QVmN#Zdy8N_MU~4crf48)I zW^b#e$ce8^Np&mOQl1+!e&koM`~Ld;eo3vMJ@1ocLV@aX*s}Z*QWLe?oj zNoKJe@zOctvr~aNa)D5c!yE2Tydsa8_cz?&>e%YAF0qNLh{@1e;J>ocoqx`I53_$3 z_n9!|MZ@a!qy+*z#>^5YFR~}sFg^P2aK^1AEluGc-x2+Xm5ejC{b!i`Tt;Ctdq*Y5 z685wOw_5A}{oBoI&M?I=Wa*D@hQ`KfOgraY*z&sX{oNlMG=p2`yhmmk b8;1eIzG5$rA|IBkphCja)z4*}Q$iB}Fn5OH literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/resource-icons/green.png b/src/main/webapp/images/resource-icons/green.png new file mode 100644 index 0000000000000000000000000000000000000000..d329ef29642ff609e48b8317bcade8a17e7b2792 GIT binary patch literal 1179 zcmaJ>U2NM_6n4}u?beR98e*gZdT}+L7XQSwZcI}*iBlScLze~-@l?mYX{^pa*tf*# z9@;VqWdaE#1Zxmws)od*X&~(dq&_SN2{GOg9YTyvleQPcV1ue!OStZujt7Dz``&Z) zecw6voKHSInR));fxZI-K^#m^NLjr0_-|(rfBWw?6ug8`DvzeDA}T8mB;uM?fFNxs zGcXGkt@7FxI6@F@q@K&8y!@h|S_Y-~7|Jtj%qEBt(X$nG79vo9GrAcge_Oju0$q!d zuMEnJY$st!pO|;x)O;qV&d;h*jTA@0h$mnH10n@@#tG9EycoHoE8x90vpHH($V%h8 zxo{LCO9CGm+SSF+SO1DdGG)gE%=ExEoG3>#;bprgMI zwQ%^oOTAsL*1DGAmRuSaL;HjM*Pxq6*ggJs&$c+&Gd?u2+a2H5FOO{# zMBq?bis!r^3tNqb*miWWSF67xilL7eDqq#Vt+yY(weQO6g?%?ZAKSVmek}$wk7a`U zpJJaZ z@x#OG%U8c!`sv!(){!%BEvqn{!33l{OSM}mzzUyY+@~6?I zU1-}z99QBj8HqF8Hjt#0^`=nP!K@Fvj$$>Qn^^AZ5ryCwX8JHHOJ_$U(kaqq zR>DSBkmqIJq#MQx~SyxJD=60K=|G1Pq83;2JZgBf1HCOIIX&|Cpu076eZx z=x0IYFEFTH;f*6g690#@^ns~FdqL`JA zZu=ruf}X`>#efj>z=*+nuo`#?IhFlT5o!#`=qm z%j9OY1TxY{&b?E3T(2hs2fSS~SF0ZfgH^U=-kN=+ zA9b%U&VJojIpyU~E`1v9)j(HnxvTR2Qtj2Ap95FCTb-4)Bdf}Cr`^gQ4%G+fyH8W! zTrd2KqLC=uqElz4zBj+gl$LPkgD?URq~&wLh*u>iA^%7wY#i zxZhG>THV;SpQ;y+9Dn7tGje5VWJB41^MM4u-}71TQzf&p=+%0-bEp*JYad=e)kAqy ZfXX}>d$9Rr?N9#~kx7qBtD`5D{{dyShWG#g literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/resource-icons/ramarro.png b/src/main/webapp/images/resource-icons/ramarro.png new file mode 100644 index 0000000000000000000000000000000000000000..ac441531f8734694a8980c1ac7c8797c1cbd3cc8 GIT binary patch literal 1175 zcmaJ>U1$_n6rN<0Xf?8t6zrC^-cAU#ke#0$H=CXAm`!#zy5OX7vo?7Ulli%uoyPg; z%#FJVsWv_|3N1*XkiHbEkEQB^*gz>+K_!t$=z}ko{t(c85f<^ms4?3+F&q2P?ZC{v z=kk5uIrp58IX}>UXwR;kn1-@8`PmYT5rmJ_Gs9?DI>M`#LCGG5Di}6q6GW`LV9V+_L_mRKx+#$5UlvH9 zYXUhGmKe!Sz?^<~%7KGZ{TX#?T#agE_dyUV@L0frNCpMtr0Mbnf!x&P@!mV8Nw5h) z;{y4rs9|XUBrFGlFvSE_rjr4kEX8sMB9TZ32r(=}Ga;G{1=$GCg?NSmTMvn|Ia-!a zi+x+Ua3qj9glwLs^Z7iL=P1h=quFRQ>S=^RL5v8xlO~c2LDOxkDu~ck9oGrjMu~#dW7e)eqe!g(4xVYHRT54SS;m5|+EAjPGrE;eE zQO9(1{X2JBd?!u|D_0-%y~*uv9r|EkW?##bL>PSJ*Pi>q!KbCaeh!4Dub2NgHpX6! zf0b2;Py0vZ)s7v`8Qy;6(@y4ySA`PzBE5Qrnqu)Pl zP)>o3L*o3)*{NCoLwXK;_*>o3%FX!uZ)Ka9Z!Y<7uQl8(&&++j^X_td{oQjTXS+Hs zbUk~zV=h)Az7yih2_P`Od(`@iaw#}p_h@;#xp?hY|6Htf=J?0C6Kk{WflA%#VEpdy i$@z(m8*W=W0gA+XUmjKWF+VMNzlv0{U%cEqdiEcKT8)|j literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/resource-icons/red.png b/src/main/webapp/images/resource-icons/red.png new file mode 100644 index 0000000000000000000000000000000000000000..cbc88dabfd58b13d42ddecc912d78afada460c01 GIT binary patch literal 1169 zcmaJ>U1%It6u#MXH?>$uvB*Xra+#QF!JVJoq?;WxCfS|YbW0{Io288}y0bHPH$yr< z&fIio^I+G4rGX+r6jC4R5BOk_`cSCSQqoddTH2Q)A{No$LxqT>L7@vq$2(~@^}%&u z=H7GpzVDoS&c`g|C&zd1dTtj0V0Z4ISRiY6@a~L|Z}0EELY5vZP2(x6f@_L{z?f#0 z5zHA%6%~-8)!)30h5_iL^x`z0mM3`CGH4~h(4JuvHUPsTo~@{}2*Wa}>ZU-gU0$Z3 zt_jqUL7A2944Tmo&O2yoezK^}&#Ebn8hI5Cdpr>^5LTdP95r3u6R1sHp6r8ThJu?A zJS$L-i<*}6Fk?9g4$^E)We>3M07r9)fn+lIGK{kv%dl~Vi^sSmpNR7;3%4GMWOK9% zUl6lfxkw~XGZ@=E!_;aux|X0Vr^;}tR4UMj$72K$bL%EnyqM|swG>3;s*Y}B-7;aI zsFbZaEKsD<$5$}yZCTUZY7=P~<0&@7(QI&~7EqS|A8HueXcrgIlY0MC*e%v=#1xQg z%{eL=T%|8aW%C&aDcEv~mUXn%#r%wgEqBJUVPc#Mn?$lG3T6WO7iH#ALd~6)knnKqhW+wI^JuEjO@&VUx@v za`ar6Hy}@#*K`_2tld@5$qSH2QTt zx}@!ek;Z`k#qCOEW##FxbEUD=d#>aAI{fB1SWlho{i(|Ke7Icwa`nU|pe4Ghq0U#v zQ;UzDKjr^ybGPz+@Nl_=?u2`8g+5pbmEVAWKXs#dm4O#S<=EnE>Fk3Y z`L&1FHp0)m(9f@|o{7G+({ix9tx-abcxc=U0AFS{H_`z=zhgM7V?4b*Z b(MAXO?6mmKyLU2M}<6n2OT3Dh)Te_E=}13!IFLN zx%$5EoO{kEf0{|Zzje#oTL^;Kni>?cc=fyQ=8gEf_a8^XO9x7hq7kEj%8~_%e#OW` zkkX`an1zxu^~oI=CkQX8=0?$|IK;_@MoBJ)s%R!=6GXhXVoLG^L?92xRh=gv-IynV zs_^885s?wi1T3n9(-s_=PUqz52|1>ay$3yBsUSdGwp0_Th7Mds zDQ`?7p2U^DxPoS`%j))8n{dPEie%C(#kf~$0!8ulP)%D$+b9cP*856fJ2z!QIty)M z(vtDu3IR8j$t5f(A;ZcUMyc7wOwmAwT{KLP7>NK;l2zS}SMj3ArF0ufx(rhSPhtg1 zRTVDQ)x$*CNEe$-bhB(S+}{&TCI@0Y(P%_S3ekZkS1{yB4eF@LRbFxh418*j>3-a2br%n(BQ%8qkYHrwEG=m$*!Jw_Qk%7)Z;&5H&52u zN?n0~H)C(`pY>j!uhnU4r+03<|2_75=IFO}yGg5&F#8$>W8}4iDnf+z2Q+oHRFMIUX({mr4Z?AnkTs%@g-Pz%ImPV>o m=XdJBk59H;cxS(d@N6U&hqLjU;l@Sxcach_g>MGNX8r@!ERNFv literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/resource-icons/yellow.png b/src/main/webapp/images/resource-icons/yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..a2fdb56224e48725fbd71c9b309870a1e62dac79 GIT binary patch literal 1173 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/images/tree_diag.png b/src/main/webapp/images/tree_diag.png new file mode 100644 index 0000000000000000000000000000000000000000..b9c024e148ebb062c92c4491b4f8cc0b01fc6d59 GIT binary patch literal 655 zcmV;A0&x9_P)g#Y1O<8ZpM3mhEg-UZNmTm z|KZr#-PtxEETjxsEPK6zLCa}}?UhGNrXY*MFbleYKY#x6^$G~khVgY16cyOSzu2*V z?OVE{Wj+vfEvS9ihq`Mb5e|GbkB`S#`8Bfq}C zbFL>d@cjG#pPfTgw)ItuMmL55=pZ%l(HTA!&Lh9SeZ8CP#iu2pr@7+w&C3&5_{HVe z1f;|nkyE0Jhl?#24__@aBkLuYSn-30>bjqQ`utF4_|0MZ{5=~tm)Ku^G2fTeL6uW!z6P?V$>U6f|)E1U;KabYC7fg*5;G002ovPDHLkV1lGzJXin# literal 0 HcmV?d00001 diff --git a/src/main/webapp/mask_images/7_capacities.gif b/src/main/webapp/mask_images/7_capacities.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d1870a0cfd419258f1562d498aa177bd2c33ec5 GIT binary patch literal 1250 zcmV<81ReWFNk%w1VKD$K0OkMy^7;Jz{QUd!_3L1z<}-~PX|0md?&wCA>sO;3oYu|S z>8jiD?tHZQ-NXqTDjw7g0z~|?o~OAOtava&g$y+`zd9o zL$2OaQ<^KJ+PUHLG;6B#v(uw0hPt@igv;r9!{*}`er3MpC860ms@?Oe&HVcM@RY%H z!{-{E*z9qw^|{vJ4S6x9+wP9NddBGf{rvHs#zuFs{Py_v%HQbf@yW#D{{H>gr_cD* z=J1HQw5Q7X-0Aql;qQmJv&iC&&+XOW?Q6j0tGd-SsM{c(*!cVW_WS!ha;|>J>Fh%( z`ugYZ^ZNZVTAcdq@}X9pZlcZi!`=AJ41ejE#y6^1}yNv6vfd2z?*c$Dd(JS zN`b=?Oe}%to>S22r<-#2Ih}eIVg(WmT8J?L7iEMnK>#q|Ab=J=Ob|o}A?P6h79qHi zM+gEyQ{s|^_z{K*HsG*=7cBTN0|OHf00RSj;D7)Q3~cd45CaGx00LyJfZ!sgKH)@2 zaP6)GR56ACL%;y8ASjmV2M$kUF~bU&!mt7hRoJja7Ank8g$j14Fvk-w!0-Y;12_y? zYDWSz;K0Wqf84;xB$qt0116U&a>y)~(Gd=FfFbkDG}mnN%{bdEKu0_rIqJ_q2W?>( M0nBGKM1cSRJBVs+YybcN literal 0 HcmV?d00001 diff --git a/src/main/webapp/mask_images/D4S-II.jpg b/src/main/webapp/mask_images/D4S-II.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cd2e1222eb20fa72b3a308c68b14b357d8c8e259 GIT binary patch literal 18628 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/mask_images/D4ScienceInfrastructure.png b/src/main/webapp/mask_images/D4ScienceInfrastructure.png new file mode 100644 index 0000000000000000000000000000000000000000..04f0318be34df2441758bce95441a6baaf6dfee8 GIT binary patch literal 13238 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

e_LvrM05b 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 F{~y)SH2nYo literal 0 HcmV?d00001 diff --git a/src/main/webapp/mask_images/banner.jpg b/src/main/webapp/mask_images/banner.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7d46f3253496ceea15a83c27d31322abcf5d34e0 GIT binary patch literal 83007 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/mask_images/eu.jpg b/src/main/webapp/mask_images/eu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..93aaacbeafed569892e211bbe6e6654bded3e4c8 GIT binary patch literal 25861 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 Ni;nb`sv=&^{{z4W5aR#< literal 0 HcmV?d00001 diff --git a/src/main/webapp/mask_images/favicon.gif b/src/main/webapp/mask_images/favicon.gif new file mode 100644 index 0000000000000000000000000000000000000000..87e2a685268a127a96ecf5e9e168296c4cb6f9f7 GIT binary patch literal 1761 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/mask_images/mask.gif b/src/main/webapp/mask_images/mask.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbb3d285538bf25c273b6c9fbf577917420437a4 GIT binary patch literal 56 zcmZ?wbhEHb#FEq$h4Rdj31pDc`A42%pq c3_t)<&cMX$lDAy)Qj{ literal 0 HcmV?d00001 diff --git a/src/main/webapp/mask_images/mask4.gif b/src/main/webapp/mask_images/mask4.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b8e8bf109c03a81c8ad9f2165ec03b3159091b9 GIT binary patch literal 77 zcmZ?wbhEHbintegration tests must extend GWTTestCase. + * Using "GwtTest*" naming pattern exclude them from running with + * surefire during the test phase. + * + * If you run the tests using the Maven command line, you will have to + * navigate with your browser to a specific url given by Maven. + * See http://mojo.codehaus.org/gwt-maven-plugin/user-guide/testing.html + * for details. + */ +public class GwtTestResourceManagementPortlet { + + /** + * Must refer to a valid module that sources this class. + */ + public String getModuleName() { + return "org.gcube.portlets.admin.resourcemanagement.ResourceManagementPortletJUnit"; + } + + /** + * Tests the FieldVerifier. + */ + public void testFieldVerifier() { +// assertFalse(FieldVerifier.isValidName(null)); +// assertFalse(FieldVerifier.isValidName("")); +// assertFalse(FieldVerifier.isValidName("a")); +// assertFalse(FieldVerifier.isValidName("ab")); +// assertFalse(FieldVerifier.isValidName("abc")); +// assertTrue(FieldVerifier.isValidName("abcd")); + } + + /** + * This test will send a request to the server using the greetServer method in + * GreetingService and verify the response. + */ + public void testGreetingService() { + + } + + +} diff --git a/src/test/resources/org/gcube/portlets/admin/resourcemanagement/ResourceManagementPortletJUnit.gwt.xml b/src/test/resources/org/gcube/portlets/admin/resourcemanagement/ResourceManagementPortletJUnit.gwt.xml new file mode 100644 index 0000000..ef3b0f5 --- /dev/null +++ b/src/test/resources/org/gcube/portlets/admin/resourcemanagement/ResourceManagementPortletJUnit.gwt.xml @@ -0,0 +1,9 @@ + + + + + + + + +