00001
00023 #ifndef INC_RVC_UIFORMOBJECTLIST_H
00024 #define INC_RVC_UIFORMOBJECTLIST_H
00025
00026 #ifndef INC_MGUI_LISTBOX_H
00027 #include <mgui/listbox.h>
00028 #endif
00029
00030 #ifndef INC_RVC_OBJITEMLIST_H
00031 #include <rvc/objitemlist.h>
00032 #endif
00033
00034 #ifndef INC_RVC_OTYPESET_H
00035 #include <rvc/otypeset.h>
00036 #endif
00037
00038 #ifndef INC_RVC_GETOBJFLAGS_H
00039 #include <rvc/getobjflags.h>
00040 #endif
00041
00042 namespace RVC {
00043
00044 class GETOBJFILTER;
00045
00046 namespace UI {
00047
00048
00050 class FORM_OBJECT_LIST : public MGUI::FORM_COMPOSITE {
00051 public:
00052
00054 FORM_OBJECT_LIST ();
00055
00057 virtual ~FORM_OBJECT_LIST ();
00058
00060 void Clear (
00061 bool notify
00062 );
00063
00065 ERRVALUE Create (
00066 MGUI::LAYOUT_PANE_BASE& ParentPane,
00067 const MISTRING& promptstr,
00068 const RVC::OBJTYPESET& ObjTypeSet,
00069 GETOBJFLAGS GetObjFlags = GETOBJFLAG_None,
00070 RVC::GETOBJFILTER* GetObjFilter = 0,
00071 int ListHeight = 5,
00072 MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_Expand
00073 );
00074
00076 const RVC::OBJITEM& GetCurrentObject () const;
00077
00079 const RVC::OBJITEMLIST& GetObjectList () const
00080 { return (m_ObjItemList); }
00081
00082 MGUI::LAYOUT_PANE& GetBtnPane (
00083 ) { return (m_BtnPane); }
00084
00086 const RVC::OBJTYPESET& GetObjTypeSet () const
00087 { return (m_ObjTypeSet); }
00088
00090 bool IsEmpty () const
00091 { return (m_ObjItemList.IsEmpty()); }
00092
00095 ERRVALUE Select (
00096 bool notify
00097 );
00098
00100 void SetDelegateOnListChanged (
00101 DELEGATE_VOID_NOPARMS delegate
00102 ) { m_DelegateOnListChanged = delegate; }
00103
00105 void SetDelegateOnObjectAdded (
00106 FastDelegate<void(const RVC::OBJITEM&, INT32)> delegate
00107 ) { m_DelegateOnObjectAdded = delegate; }
00108
00110 void SetDelegateOnObjectRemoved (
00111 FastDelegate<void(INT32)> delegate
00112 ) { m_DelegateOnObjectRemoved = delegate; }
00113
00115 void SetDelegateOnObjectSelected (
00116 FastDelegate<void(const RVC::OBJITEM&, INT32)> delegate
00117 ) { m_DelegateOnObjectSelected = delegate; }
00118
00120 void SetDelegateOnObjectsAdded (
00121 DELEGATE_VOID_NOPARMS delegate
00122 ) { m_DelegateOnObjectsAdded = delegate; }
00123
00125 void SetDelegateOnObjectsAllRemoved (
00126 DELEGATE_VOID_NOPARMS delegate
00127 ) { m_DelegateOnObjectsAllRemoved = delegate; }
00128
00131 void SetObjectList (
00132 const RVC::OBJITEMLIST& ObjItemList
00133 );
00134
00135 protected:
00136
00140 virtual void v_OnListChanged ();
00141
00145 virtual void v_OnObjectAdded (const RVC::OBJITEM& ObjItem, INT32 ItemNum);
00146
00150 virtual void v_OnObjectRemoved (INT32 ItemNum);
00151
00155 virtual void v_OnObjectSelected (const RVC::OBJITEM& ObjItem, INT32 ItemNum);
00156
00160 virtual void v_OnObjectsAdded ();
00161
00165 virtual void v_OnObjectsAllRemoved ();
00166
00167 private:
00168 #ifndef GENERATING_DOXYGEN_OUTPUT
00169 static RVC::OBJITEM *s_pNullItem;
00170 DELEGATE_VOID_NOPARMS m_DelegateOnListChanged;
00171 FastDelegate<void(const RVC::OBJITEM&, INT32)> m_DelegateOnObjectAdded;
00172 FastDelegate<void(INT32)> m_DelegateOnObjectRemoved;
00173 FastDelegate<void(const RVC::OBJITEM&, INT32)> m_DelegateOnObjectSelected;
00174 DELEGATE_VOID_NOPARMS m_DelegateOnObjectsAdded;
00175 DELEGATE_VOID_NOPARMS m_DelegateOnObjectsAllRemoved;
00176 MGUI::CTRL_LISTBOX m_ListBox;
00177 MGUI::CTRL_PUSHBUTTON m_BtnSelect;
00178 MGUI::CTRL_PUSHBUTTON m_BtnRemove;
00179 MGUI::CTRL_PUSHBUTTON m_BtnRemoveAll;
00180 MGUI::LAYOUT_PANE m_BtnPane;
00181 RVC::OBJITEMLIST m_ObjItemList;
00182 MISTRING m_PromptStr;
00183 RVC::OBJTYPESET m_ObjTypeSet;
00184 GETOBJFLAGS m_GetObjFlags;
00185 RVC::GETOBJFILTER* m_GetObjFilter;
00186
00187 void OnListSelection ();
00188 void OnBtnRemove ();
00189 void OnBtnRemoveAll ();
00190 void OnBtnSelect ();
00191
00192 FORM_OBJECT_LIST (const FORM_OBJECT_LIST&);
00193 FORM_OBJECT_LIST& operator= (const FORM_OBJECT_LIST&);
00194 #endif // GENERATING_DOXYGEN_OUTPUT
00195 };
00196
00197
00198 }
00199 }
00200
00201 #endif // INC_RVC_UIFORMOBJECTLIST_H