Crazy Eddie's GUI System
0.8.4
|
00001 /************************************************************************ 00002 created: Tue Sep 27 2005 00003 author: Tomas Lindquist Olsen 00004 *************************************************************************/ 00005 /*************************************************************************** 00006 * Copyright (C) 2004 - 2006 Paul D Turner & The CEGUI Development Team 00007 * 00008 * Permission is hereby granted, free of charge, to any person obtaining 00009 * a copy of this software and associated documentation files (the 00010 * "Software"), to deal in the Software without restriction, including 00011 * without limitation the rights to use, copy, modify, merge, publish, 00012 * distribute, sublicense, and/or sell copies of the Software, and to 00013 * permit persons to whom the Software is furnished to do so, subject to 00014 * the following conditions: 00015 * 00016 * The above copyright notice and this permission notice shall be 00017 * included in all copies or substantial portions of the Software. 00018 * 00019 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 00020 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 00021 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 00022 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 00023 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 00024 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 00025 * OTHER DEALINGS IN THE SOFTWARE. 00026 ***************************************************************************/ 00027 #ifndef _CEGUIItemListbox_h_ 00028 #define _CEGUIItemListbox_h_ 00029 00030 #include "./ScrolledItemListBase.h" 00031 00032 #if defined(_MSC_VER) 00033 # pragma warning(push) 00034 # pragma warning(disable : 4251) 00035 #endif 00036 00037 // begin CEGUI namespace 00038 namespace CEGUI 00039 { 00040 00045 class CEGUIEXPORT ItemListbox : public ScrolledItemListBase 00046 { 00047 public: 00048 static const String EventNamespace; 00049 static const String WidgetTypeName; 00050 00051 /************************************************************************ 00052 Constants 00053 *************************************************************************/ 00059 static const String EventSelectionChanged; 00065 static const String EventMultiSelectModeChanged; 00066 00067 /************************************************************************ 00068 Accessors 00069 *************************************************************************/ 00074 size_t getSelectedCount(void) const; 00075 00083 ItemEntry* getLastSelectedItem(void) const {return d_lastSelected;} 00084 00103 ItemEntry* getFirstSelectedItem(size_t start_index=0) const; 00104 00123 ItemEntry* getNextSelectedItem(void) const; 00124 00134 ItemEntry* getNextSelectedItemAfter(const ItemEntry* start_item) const; 00135 00140 bool isMultiSelectEnabled(void) const {return d_multiSelect;} 00141 00146 bool isItemSelected(size_t index) const; 00147 00148 /************************************************************************ 00149 Manipulators 00150 *************************************************************************/ 00155 void setMultiSelectEnabled(bool state); 00156 00161 void clearAllSelections(void); 00162 00173 void selectRange(size_t a, size_t z); 00174 00180 void selectAllItems(void); 00181 00182 /************************************************************************ 00183 Object Construction and Destruction 00184 *************************************************************************/ 00189 ItemListbox(const String& type, const String& name); 00190 00195 virtual ~ItemListbox(void) {} 00196 00197 /************************************************************************ 00198 Implementation functions 00199 ************************************************************************/ 00204 virtual void layoutItemWidgets(); 00205 00210 virtual Sizef getContentSize() const; 00211 00217 virtual void notifyItemClicked(ItemEntry* li); 00218 00224 virtual void notifyItemSelectState(ItemEntry* li, bool state); 00225 00226 protected: 00227 /************************************************************************ 00228 Protected implementation functions 00229 ************************************************************************/ 00247 ItemEntry* findSelectedItem(size_t start_index) const; 00248 00249 // overridden from ItemListBase 00250 bool handle_PaneChildRemoved(const EventArgs& e); 00251 00252 /************************************************************************ 00253 New event handlers 00254 ************************************************************************/ 00255 virtual void onSelectionChanged(WindowEventArgs& e); 00256 virtual void onMultiSelectModeChanged(WindowEventArgs& e); 00257 00258 /************************************************************************ 00259 Overridden event handlers 00260 ************************************************************************/ 00261 virtual void onKeyDown(KeyEventArgs& e); 00262 00263 /************************************************************************ 00264 Implementation data 00265 ************************************************************************/ 00266 bool d_multiSelect; 00267 ItemEntry* d_lastSelected; 00268 mutable size_t d_nextSelectionIndex; 00269 00270 private: 00271 void addItemListboxProperties(void); 00272 }; 00273 00274 } // end CEGUI namespace 00275 00276 #if defined(_MSC_VER) 00277 # pragma warning(pop) 00278 #endif 00279 00280 #endif // end of guard _CEGUIItemListbox_h_