1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 #ifndef __FRAMEWORK_HELPER_OTASKSENUMERATION_HXX_ 29 #define __FRAMEWORK_HELPER_OTASKSENUMERATION_HXX_ 30 31 //_________________________________________________________________________________________________________________ 32 // my own includes 33 //_________________________________________________________________________________________________________________ 34 35 #ifndef __FRAMEWORK_OMUTEXMEMBER_HXX_ 36 #include <threadhelp/threadhelpbase.hxx> 37 #endif 38 #include <macros/generic.hxx> 39 #include <macros/xinterface.hxx> 40 #include <macros/xtypeprovider.hxx> 41 #include <macros/debug.hxx> 42 #include <general.h> 43 44 //_________________________________________________________________________________________________________________ 45 // interface includes 46 //_________________________________________________________________________________________________________________ 47 #include <com/sun/star/lang/XEventListener.hpp> 48 #include <com/sun/star/container/XEnumeration.hpp> 49 #include <com/sun/star/frame/XTask.hpp> 50 #include <com/sun/star/frame/XFrame.hpp> 51 52 //_________________________________________________________________________________________________________________ 53 // other includes 54 //_________________________________________________________________________________________________________________ 55 #include <cppuhelper/weak.hxx> 56 57 //_________________________________________________________________________________________________________________ 58 // namespace 59 //_________________________________________________________________________________________________________________ 60 61 namespace framework{ 62 63 //_________________________________________________________________________________________________________________ 64 // exported const 65 //_________________________________________________________________________________________________________________ 66 67 //_________________________________________________________________________________________________________________ 68 // exported definitions 69 //_________________________________________________________________________________________________________________ 70 71 /*-************************************************************************************************************//** 72 @short implement a helper for a oneway enumeration of tasks 73 @descr You can step during this list only for one time! Its a snapshot. 74 Don't forget to release the reference. You are the owner of an instance of this implementation. 75 You cant use this as a baseclass. Please use it as a dynamical object for return. 76 77 @implements XInterface 78 XTypeProvider 79 XEventListener 80 XEnumeration 81 82 @base ThreadHelpBase 83 OWeakObject 84 85 @devstatus ready to use 86 *//*-*************************************************************************************************************/ 87 88 class OTasksEnumeration : public css::lang::XTypeProvider , 89 public css::lang::XEventListener , 90 public css::container::XEnumeration , 91 public ThreadHelpBase , 92 public ::cppu::OWeakObject 93 { 94 //------------------------------------------------------------------------------------------------------------- 95 // public methods 96 //------------------------------------------------------------------------------------------------------------- 97 98 public: 99 100 //--------------------------------------------------------------------------------------------------------- 101 // constructor / destructor 102 //--------------------------------------------------------------------------------------------------------- 103 104 /*-****************************************************************************************************//** 105 @short constructor to initialize this enumeration 106 @descr An enumeration is a list with oneway-access! You can get every member only for one time. 107 This method allow to initialize this oneway list with values. 108 109 @seealso - 110 111 @param "seqTasks" is a sequence of interfaces, which are tasks. 112 @return - 113 114 @onerror Do nothing and reset this object to default with an empty list. 115 *//*-*****************************************************************************************************/ 116 117 OTasksEnumeration( const css::uno::Sequence< css::uno::Reference< css::frame::XFrame > >& seqTasks ); 118 119 //--------------------------------------------------------------------------------------------------------- 120 // XInterface 121 //--------------------------------------------------------------------------------------------------------- 122 123 DECLARE_XINTERFACE 124 DECLARE_XTYPEPROVIDER 125 126 //--------------------------------------------------------------------------------------------------------- 127 // XEventListener 128 //--------------------------------------------------------------------------------------------------------- 129 130 /*-****************************************************************************************************//** 131 @short last chance to release all references and free memory 132 @descr This method is called, if the enumeration is used completly and has no more elements. 133 Then we must destroy ouer list and release all references to other objects. 134 135 @seealso interface XEventListener 136 137 @param "aEvent" describe the source of this event. 138 @return - 139 140 @onerror - 141 *//*-*****************************************************************************************************/ 142 143 virtual void SAL_CALL disposing( const css::lang::EventObject& aEvent ) throw( css::uno::RuntimeException ); 144 145 //--------------------------------------------------------------------------------------------------------- 146 // XEnumeration 147 //--------------------------------------------------------------------------------------------------------- 148 149 /*-****************************************************************************************************//** 150 @short check count of accessible elements of enumeration 151 @descr You can call this method to get information about accessible elements in future. 152 Elements you have already getted are not accessible! 153 154 @seealso interface XEnumeration 155 156 @param - 157 @return sal_True = if more elements accessible<BR> 158 sal_False = other way 159 160 @onerror sal_False<BR> 161 (List is emtpy and there no accessible elements ...) 162 *//*-*****************************************************************************************************/ 163 164 virtual sal_Bool SAL_CALL hasMoreElements() throw( css::uno::RuntimeException ); 165 166 /*-****************************************************************************************************//** 167 @short give the next element, if some exist 168 @descr If a call "hasMoreElements()" return true, you can get the next element of list. 169 170 @seealso interface XEnumeration 171 172 @param - 173 @return A Reference to a task, safed in an Any-structure. 174 175 @onerror If end of enumeration is arrived or there are no elements in list => a NoSuchElementException is thrown. 176 *//*-*****************************************************************************************************/ 177 178 virtual css::uno::Any SAL_CALL nextElement() throw( css::container::NoSuchElementException , 179 css::lang::WrappedTargetException , 180 css::uno::RuntimeException ); 181 182 //------------------------------------------------------------------------------------------------------------- 183 // protected methods 184 //------------------------------------------------------------------------------------------------------------- 185 186 protected: 187 188 /*-****************************************************************************************************//** 189 @short standard destructor 190 @descr This method destruct an instance of this class and clear some member. 191 We make it protected, because its not supported to use this class as normal instance! 192 You must create it dynamical in memory and use a pointer. 193 194 @seealso - 195 196 @param - 197 @return - 198 199 @onerror - 200 *//*-*****************************************************************************************************/ 201 202 virtual ~OTasksEnumeration(); 203 204 /*-****************************************************************************************************//** 205 @short reset instance to default values 206 207 @descr There are two ways to delete an instance of this class.<BR> 208 1) delete with destructor<BR> 209 2) dispose from parent or factory ore ...<BR> 210 This method do the same for both ways! It free used memory and release references ... 211 212 @seealso method dispose() 213 @seealso destructor ~TaskEnumeration() 214 215 @param - 216 217 @return - 218 219 @onerror - 220 *//*-*****************************************************************************************************/ 221 222 virtual void impl_resetObject(); 223 224 //------------------------------------------------------------------------------------------------------------- 225 // private methods 226 //------------------------------------------------------------------------------------------------------------- 227 228 private: 229 230 //------------------------------------------------------------------------------------------------------------- 231 // debug methods 232 // (should be private everyway!) 233 //------------------------------------------------------------------------------------------------------------- 234 235 /*-****************************************************************************************************//** 236 @short debug-method to check incoming parameter of some other mehods of this class 237 @descr The following methods are used to check parameters for other methods 238 of this class. The return value is used directly for an ASSERT(...). 239 240 @seealso ASSERT in implementation! 241 242 @param references to checking variables 243 @return sal_False on invalid parameter<BR> 244 sal_True otherway 245 246 @onerror - 247 *//*-*****************************************************************************************************/ 248 249 #ifdef ENABLE_ASSERTIONS 250 251 private: 252 253 static sal_Bool impldbg_checkParameter_OTasksEnumerationCtor ( const css::uno::Sequence< css::uno::Reference< css::frame::XFrame > >& seqTasks ); 254 static sal_Bool impldbg_checkParameter_disposing ( const css::lang::EventObject& aEvent ); 255 256 #endif // #ifdef ENABLE_ASSERTIONS 257 258 //------------------------------------------------------------------------------------------------------------- 259 // variables 260 // (should be private everyway!) 261 //------------------------------------------------------------------------------------------------------------- 262 263 private: 264 265 sal_uInt32 m_nPosition ; /// current position in enumeration 266 css::uno::Sequence< css::uno::Reference< css::frame::XTask > > m_seqTasks ; /// list of current tasks 267 268 }; // class OTasksEnumeration 269 270 } // namespace framework 271 272 #endif // #ifndef __FRAMEWORK_HELPER_OTASKSENUMERATION_HXX_ 273