home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 3_2004-2005.ISO / Data / Zips / VBLayers2_1719603132004.psc / clsLayerItems.cls < prev    next >
Text File  |  2004-02-27  |  11KB  |  359 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "clsLayerItems"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = False
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = True
  14. Attribute VB_Ext_KEY = "SavedWithClassBuilder6" ,"Yes"
  15. Attribute VB_Ext_KEY = "Collection" ,"clsLayerItem"
  16. Attribute VB_Ext_KEY = "Member0" ,"clsLayerItem"
  17. Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
  18. '**********************************************************************************************************************'
  19. '*'
  20. '*' Module    : LayerItems
  21. '*'
  22. '*'
  23. '*' Author    : Joseph M. Ferris <jferris@desertdocs.com>
  24. '*'
  25. '*' Date      : 02.23.2004
  26. '*'
  27. '*' Depends   : None.
  28. '*'
  29. '*' Purpose   : Collection class.  Provides a LayerItem interface, similar to a ListItem for a Listview control.
  30. '*'
  31. '*' Notes     : 1.  Actions that require callback functionality are Add() and Remove().  Both execute the
  32. '*'                 EventCallback() method of the VBLayerWindow instance.
  33. '*'
  34. '**********************************************************************************************************************'
  35. Option Explicit
  36.  
  37. '**********************************************************************************************************************'
  38. '*'
  39. '*' Private Constant Declarations
  40. '*'
  41. '**********************************************************************************************************************'
  42. Private Const ERR_INVALIDLAYERWINDOW    As Long = vbObjectError + 22001
  43.  
  44. '**********************************************************************************************************************'
  45. '*'
  46. '*' Private Member Declarations
  47. '*'
  48. '**********************************************************************************************************************'
  49. Private m_colLayerStack                 As Collection
  50. Private m_objUserControl                As Object
  51.  
  52. '**********************************************************************************************************************'
  53. '*'
  54. '*' Procedure : Add
  55. '*'
  56. '*'
  57. '*' Date      : 02.23.2004
  58. '*'
  59. '*' Purpose   : Adds a new LayerItem to the LayerItems collection.
  60. '*'
  61. '*' Input     : Caption (String)
  62. '*'             Key (String)
  63. '*'             Picture (StdPicture)
  64. '*'             LayerEditable (Boolean)
  65. '*'             LayerViewable (Boolean)
  66. '*'             Tag (String)
  67. '*'
  68. '*' Output    : LayerItem
  69. '*'
  70. '**********************************************************************************************************************'
  71. Public Function Add( _
  72.        Caption As String, _
  73.        Optional Key As String, _
  74.        Optional Picture As StdPicture, _
  75.        Optional LayerEditable As Boolean = False, _
  76.        Optional LayerViewable As Boolean = False, _
  77.        Optional Tag As String = vbNullString) As clsLayerItem
  78.  
  79. '*' Raise errors directly, via relay.  This will allow the collection errors to be directly raised to the calling
  80. '*' source.
  81. '*'
  82. On Error GoTo LocalHandler
  83.  
  84. Dim objNewMember                        As clsLayerItem
  85.     
  86.     '*' Instanciate the new class member.  Even though the variable is only scoped for this function, it is stored
  87.     '*' in a collection with member level scope.  It will exist for the lifetime of the class.
  88.     '*'
  89.     Set objNewMember = New clsLayerItem
  90.  
  91.     '*' Set any Layer Properties directly to the LayerItem. as needed.  Note that the ID is set last.  This way, any
  92.     '*' callback events will not be fired from the LayerItem class, since it requires the internal ID as a
  93.     '*' 'finalization' of the intial assignments.
  94.     '*'
  95.     With objNewMember
  96.         .Key = Key
  97.         .Caption = Caption
  98.         .LayerEditable = LayerEditable
  99.         .LayerViewable = LayerViewable
  100.         Set .LayerWindowCtl = m_objUserControl
  101.         Set .Picture = Picture
  102.         .Tag = Tag
  103.         .id = CreateGUID
  104.     End With
  105.     
  106.     '*' Check to see if a key has been provided by the user.
  107.     '*'
  108.     If Len(Key) = 0 Then
  109.         m_colLayerStack.Add objNewMember
  110.     Else
  111.         m_colLayerStack.Add objNewMember, Key
  112.     End If
  113.  
  114.     '*' Signal the event to the parent.
  115.     '*'
  116.     m_objUserControl.EventCallback objNewMember, "Add"
  117.     
  118.     '*' Return the newly created LayerItem and destroy the local reference.
  119.     '*'
  120.     Set Add = objNewMember
  121.     Set objNewMember = Nothing
  122.  
  123. Exit Function
  124.  
  125. '*' Error handling stub.
  126. '*'
  127. LocalHandler:
  128.  
  129.     '*' Just pass it on.
  130.     '*'
  131.     Err.Raise Err.Number, Err.Source, Err.Description
  132.     
  133. End Function
  134.  
  135. '**********************************************************************************************************************'
  136. '*'
  137. '*' Procedure : Item
  138. '*'
  139. '*'
  140. '*' Date      : 02.26.2004
  141. '*'
  142. '*' Purpose   : Return a singular clsLayerItem object through either an Index reference or a Key reference.
  143. '*'
  144. '*' Input     : vntIndexKey (Variant)
  145. '*'
  146. '*' Output    : Item (clsLayerItem)
  147. '*'
  148. '**********************************************************************************************************************'
  149. Public Property Get Item(vntIndexKey As Variant) As clsLayerItem
  150. Attribute Item.VB_UserMemId = 0
  151.   
  152. '*' Handle error locally.
  153. '*'
  154. On Error GoTo LocalHandler
  155.  
  156.     '*' Pull it from the stack.
  157.     '*'
  158.     Set Item = m_colLayerStack(vntIndexKey)
  159.     
  160. Exit Property
  161.  
  162. '*' Error handling stub.
  163. '*'
  164. LocalHandler:
  165.  
  166.     '*' Pass it along to the caller.
  167.     '*'
  168.     Err.Raise Err.Number, Err.Source, Err.Description
  169.     
  170. End Property
  171.  
  172. '**********************************************************************************************************************'
  173. '*'
  174. '*' Procedure : Count
  175. '*'
  176. '*'
  177. '*' Date      : 02.26.2004
  178. '*'
  179. '*' Purpose   : Returns a count of items in the collection
  180. '*'
  181. '*' Input     : None
  182. '*'
  183. '*' Output    : Count (Long)
  184. '*'
  185. '**********************************************************************************************************************'
  186. Public Property Get Count() As Long
  187.     
  188. '*' Handle error locally.
  189. '*'
  190. On Error GoTo LocalHandler
  191.     
  192.     '*' Return the count of the collection.
  193.     '*'
  194.     Count = m_colLayerStack.Count
  195.  
  196. Exit Property
  197.  
  198. '*' Error handling stub.
  199. '*'
  200. LocalHandler:
  201.  
  202.     '*' Pass it along to the caller.
  203.     '*'
  204.     Err.Raise Err.Number, Err.Source, Err.Description
  205.  
  206. End Property
  207.  
  208. '**********************************************************************************************************************'
  209. '*'
  210. '*' Procedure : Remove
  211. '*'
  212. '*'
  213. '*' Date      : 02.26.2004
  214. '*'
  215. '*' Purpose   : Remove an item from the collection of clsLayerItem objects
  216. '*'
  217. '*' Input     : vntIndexKey (Variant)
  218. '*'
  219. '*' Output    : None
  220. '*'
  221. '**********************************************************************************************************************'
  222. Public Sub Remove(vntIndexKey As Variant)
  223.  
  224. '*' Handle error locally.
  225. '*'
  226. On Error GoTo LocalHandler
  227.  
  228.     '*' Signal the event to the parent.
  229.     '*'
  230.     m_objUserControl.EventCallback m_colLayerStack.Item(vntIndexKey), "Remove"
  231.  
  232.     '*' Remove it from the array.
  233.     '*'
  234.     m_colLayerStack.Remove vntIndexKey
  235.  
  236. Exit Sub
  237.  
  238. '*' Error handling stub.
  239. '*'
  240. LocalHandler:
  241.  
  242.     '*' Pass it along to the caller.
  243.     '*'
  244.     Err.Raise Err.Number, Err.Source, Err.Description
  245.  
  246. End Sub
  247.  
  248. '**********************************************************************************************************************'
  249. '*'
  250. '*' Procedure : NewEnum
  251. '*'
  252. '*'
  253. '*' Date      : 02.26.2004
  254. '*'
  255. '*' Purpose   : Allows for enumeration in the For Each...Next syntax.
  256. '*'
  257. '*' Input     : None
  258. '*'
  259. '*' Output    : NewEnum (IUnknown)
  260. '*'
  261. '**********************************************************************************************************************'
  262. Public Property Get NewEnum() As IUnknown
  263. Attribute NewEnum.VB_UserMemId = -4
  264. Attribute NewEnum.VB_MemberFlags = "40"
  265.  
  266. '*' Fail through on local error.
  267. '*'
  268. On Error Resume Next
  269.  
  270.     '*' Allow the callback to retrieve the implied item.
  271.     '*'
  272.     Set NewEnum = m_colLayerStack.[_NewEnum]
  273.  
  274. End Property
  275.  
  276. '**********************************************************************************************************************'
  277. '*'
  278. '*' Procedure : Initialize
  279. '*'
  280. '*'
  281. '*' Date      : 02.23.2004
  282. '*'
  283. '*' Purpose   : Attach an instance of the LayerWindow to the class for forward population to the LayerItem to implement
  284. '*'             a quasi-callback ability so that multiple control items can "raise" the same "events".
  285. '*'
  286. '*' Input     : LayerWindowCtl (Object)
  287. '*'
  288. '*' Output    : None
  289. '*'
  290. '**********************************************************************************************************************'
  291. Public Sub Initialize(LayerWindowCtl As Object)
  292.  
  293. '*' Handle errors locally.  The sub purposely watches for an error to occur in the form of not having the VBLayerWindow
  294. '*' attached to this class instance.
  295. '*'
  296. On Error GoTo LocalHandler
  297.  
  298.     '*' Make sure that a proper VBLayerWindow Object is passed.
  299.     '*'
  300.     If Not TypeName(LayerWindowCtl) = "VBLayerWindow" Then
  301.     
  302.         '*' Raise an error for an improper control type.
  303.         '*'
  304.         Err.Raise ERR_INVALIDLAYERWINDOW, "Initialize()"
  305.     
  306.     End If
  307.         
  308.     '*' Store the reference to the object for a quasi-callback interface.
  309.     '*'
  310.     Set m_objUserControl = LayerWindowCtl
  311.     
  312. Exit Sub
  313.  
  314. '*' Error handling stub.
  315. '*'
  316. LocalHandler:
  317.  
  318.     '*' Pass it along to the caller.
  319.     '*'
  320.     Err.Raise Err.Number, Err.Source, Err.Description
  321.     
  322. End Sub
  323.  
  324. '**********************************************************************************************************************'
  325. '*'
  326. '*' Procedure : Class_Initialize
  327. '*'
  328. '*'
  329. '*' Date      : 02.26.2004
  330. '*'
  331. '*' Purpose   : Initialize the collection.
  332. '*'
  333. '*' Input     : None.
  334. '*'
  335. '*' Output    : None.
  336. '*'
  337. '**********************************************************************************************************************'
  338. Private Sub Class_Initialize()
  339.     Set m_colLayerStack = New Collection
  340. End Sub
  341.  
  342. '**********************************************************************************************************************'
  343. '*'
  344. '*' Procedure : Class_Terminate
  345. '*'
  346. '*'
  347. '*' Date      : 02.26.2004
  348. '*'
  349. '*' Purpose   : Destroy the collection.
  350. '*'
  351. '*' Input     : None.
  352. '*'
  353. '*' Output    : None.
  354. '*'
  355. '**********************************************************************************************************************'
  356. Private Sub Class_Terminate()
  357.     Set m_colLayerStack = Nothing
  358. End Sub
  359.