home *** CD-ROM | disk | FTP | other *** search
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
- <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Listbox" script:language="StarBasic">Option Explicit
- Dim OriginalList()
- Dim oDialogModel as Object
-
-
- Sub MergeList(SourceListBox() as Object, SecondList() as String)
- Dim i as Integer
- Dim MaxIndex as Integer
- MaxIndex = Ubound(SecondList())
- OriginalList() = AddListToList(OriginalList(), SecondList())
- For i = 0 To MaxIndex
- SourceListbox = AddSingleItemToListbox(SourceListbox, SecondList(i))
- Next i
- Call FormSetMoveRights()
- End Sub
-
-
- Sub RemoveListItems(SourceListbox as Object, TargetListbox as Object, RemoveList() as String)
- Dim i as Integer
- Dim s as Integer
- Dim MaxIndex as Integer
- Dim CopyList()
- MaxIndex = Ubound(RemoveList())
- For i = 0 To MaxIndex
- RemoveListboxItemByName(SourceListbox, RemoveList(i))
- RemoveListboxItemByName(TargetListbox, RemoveList(i))
- Next i
- CopyList() = OriginalList()
- s = 0
- MaxIndex = Ubound(CopyList())
- For i = 0 To MaxIndex
- If IndexInArray(CopyList(i),RemoveList())= -1 Then
- OriginalList(s) = CopyList(i)
- s = s + 1
- End If
- Next i
- ReDim Preserve OriginalList(s-1)
- Call FormSetMoveRights()
- End Sub
-
-
- ' Note Boolean Parameter
- Sub InitializeListboxProcedures(oModel as Object, SourceListbox as Object, TargetListbox as Object)
- Dim EmptyList()
- Set oDialogModel = oModel
- OriginalList()= SourceListbox.StringItemList()
- TargetListbox.StringItemList() = EmptyList()
- End Sub
-
-
- Sub CopyListboxItems(SourceListbox as Object, TargetListbox As Object)
- Dim NullArray()
- TargetListbox.StringItemList() = OriginalList()
- SourceListbox.StringItemList() = NullArray()
- End Sub
-
-
- Sub FormMoveSelected()
- Call MoveSelectedListBox(oDialogModel.lstFields, oDialogModel.lstSelFields)
- Call FormSetMoveRights()
- oDialogModel.lstSelFields.Tag = True
- End Sub
-
-
- Sub FormMoveAll()
- Call CopyListboxItems(oDialogModel.lstFields, oDialogModel.lstSelFields)
- Call FormSetMoveRights()
- oDialogModel.lstSelFields.Tag = True
- End Sub
-
-
- Sub FormRemoveSelected()
- Call MoveOrderedSelectedListbox(oDialogModel.lstFields, oDialogModel.lstSelFields, False)
- Call FormSetMoveRights()
- oDialogModel.lstSelFields.Tag = True
- End Sub
-
-
- Sub FormRemoveAll()
- Call MoveOrderedSelectedListbox(oDialogModel.lstFields, oDialogModel.lstSelFields, True)
- Call FormSetMoveRights()
- oDialogModel.lstSelFields.Tag = 1
- End Sub
-
-
- Sub MoveSelectedListBox(SourceListbox as Object, TargetListbox as Object)
- Dim MaxCurTarget as Integer
- Dim MaxSourceSelected as Integer
- Dim n as Integer
- Dim m as Integer
- Dim CurIndex
- Dim iOldTargetSelect as Integer
- Dim iOldSourceSelect as Integer
- MaxCurTarget = Ubound(TargetListbox.StringItemList())
- MaxSourceSelected = Ubound(SourceListbox.SelectedItems())
- Dim TargetList(MaxCurTarget+MaxSourceSelected+1)
- If MaxSourceSelected > -1 Then
- iOldSourceSelect = SourceListbox.SelectedItems(0)
- If Ubound(TargetListbox.SelectedItems()) > -1 Then
- iOldTargetSelect = TargetListbox.SelectedItems(0)
- Else
- iOldTargetSelect = -1
- End If
- For n = 0 To MaxCurTarget
- TargetList(n) = TargetListbox.StringItemList(n)
- Next n
- For m = 0 To MaxSourceSelected
- CurIndex = SourceListbox.SelectedItems(m)
- TargetList(n) = SourceListbox.StringItemList(CurIndex)
- n = n + 1
- Next m
- TargetListBox.StringItemList() = TargetList()
- SourceListbox.StringItemList() = RemoveSelected (SourceListbox)
- SetNewSelection(SourceListbox, iOldSourceSelect)
- SetNewSelection(TargetListbox, iOldTargetSelect)
- End If
- End Sub
-
-
-
- Sub MoveOrderedSelectedListbox(lstSource as Object, lstTarget as Object, bMoveAll as Boolean)
- Dim NullArray()
- Dim MaxSelected as Integer
- Dim MaxSourceIndex as Integer
- Dim MaxOriginalIndex as Integer
- Dim MaxNewIndex as Integer
- Dim n as Integer
- Dim m as Integer
- Dim CurIndex as Integer
- Dim SearchString as String
- Dim SourceList() as String
- Dim iOldTargetSelect as Integer
- Dim iOldSourceSelect as Integer
- If bMoveAll Then
- lstSource.StringItemList() = OriginalList()
- lstTarget.StringItemList() = NullArray()
- Else
- MaxOriginalIndex = Ubound(OriginalList())
- MaxSelected = Ubound(lstTarget.SelectedItems())
- iOldTargetSelect = lstTarget.SelectedItems(0)
- If Ubound(lstSource.SelectedItems()) > -1 Then
- iOldSourceSelect = lstSource.SelectedItems(0)
- End If
- Dim SelList(MaxSelected)
- For n = 0 To MaxSelected
- CurIndex = lstTarget.SelectedItems(n)
- SelList(n) = lstTarget.StringItemList(CurIndex)
- Next n
- SourceList() = lstSource.StringItemList()
- MaxSourceIndex = Ubound(lstSource.StringItemList())
- MaxNewIndex = MaxSelected + MaxSourceIndex + 1
- Dim NewSourceList(MaxNewIndex)
- m = 0
- For n = 0 To MaxOriginalIndex
- SearchString = OriginalList(n)
- If IndexinArray(SearchString, SelList()) <> -1 Then
- NewSourceList(m) = SearchString
- m = m + 1
- ElseIf IndexinArray(SearchString, SourceList()) <> -1 Then
- NewSourceList(m) = SearchString
- m = m + 1
- End If
- Next n
- lstSource.StringItemList() = NewSourceList()
- lstTarget.StringItemList() = RemoveSelected(lstTarget)
- End If
- ' Todo: Hier weitermachen:
- SetNewSelection(lstSource, iOldSourceSelect)
- SetNewSelection(lstTarget, iOldTargetSelect)
-
- End Sub
-
-
- Function RemoveSelected(oListbox as Object)
- Dim MaxIndex as Integer
- Dim MaxSelected as Integer
- Dim n as Integer
- Dim m as Integer
- Dim CurIndex as Integer
- Dim CurItem as String
- Dim ResultArray()
- MaxIndex = Ubound(oListbox.StringItemList())
- MaxSelected = Ubound(oListbox.SelectedItems())
- Dim LocItemList(MaxIndex)
- LocItemList() = oListbox.StringItemList()
- If MaxSelected > -1 Then
- For n = 0 To MaxSelected
- CurIndex = oListbox.SelectedItems(n)
- LocItemList(CurIndex) = ""
- Next n
- If MaxIndex > 0 Then
- ReDim ResultArray(MaxIndex - MaxSelected - 1)
- m = 0
- For n = 0 To MaxIndex
- CurItem = LocItemList(n)
- If CurItem <> "" Then
- ResultArray(m) = CurItem
- m = m + 1
- End If
- Next n
- End If
- RemoveSelected = ResultArray()
- Else
- RemoveSelected = oListbox.StringItemList()
- End If
- End Function
-
-
- Sub SetNewSelection(oListBox as Object, iLastSelection as Integer)
- Dim MaxIndex as Integer
- Dim SelIndex as Integer
- Dim SelList(0) as Integer
- MaxIndex = Ubound(oListBox.StringItemList())
- If MaxIndex > -1 AND iLastSelection > -1 Then
- If iLastSelection > MaxIndex Then
- Selindex = MaxIndex
- Else
- SelIndex = iLastSelection
- End If
- Sellist(0) = SelIndex
- oListBox.SelectedItems() = SelList()
- End If
- End Sub
-
-
- Sub ToggleListboxControls(oDialogModel as Object, bDoEnable as Boolean)
- With oDialogModel
- .lblFields.Enabled = bDoEnable
- .lblSelFields.Enabled = bDoEnable
- ' .lstTables.Enabled = bDoEnable
- .lstFields.Enabled = bDoEnable
- .lstSelFields.Enabled = bDoEnable
- .cmdRemoveAll.Enabled = bDoEnable
- .cmdRemoveSelected.Enabled = bDoEnable
- .cmdMoveAll.Enabled = bDoEnable
- .cmdMoveSelected.Enabled = bDoEnable
- End With
- If bDoEnable Then
- FormSetMoveRights()
- End If
- End Sub
-
-
- ' Enable or disable the buttons used for moving the available
- ' fields between the two list boxes.
- Sub FormSetMoveRights()
- Dim bIsFieldSelected as Boolean
- Dim bSelectSelected as Boolean
- Dim FieldCount as Integer
- Dim SelectCount as Integer
- bIsFieldSelected = Ubound(oDialogModel.lstFields.SelectedItems()) <> -1
- FieldCount = Ubound(oDialogModel.lstFields.StringItemList()) + 1
- bSelectSelected = Ubound(oDialogModel.lstSelFields.SelectedItems()) > -1
- SelectCount = Ubound(oDialogModel.lstSelFields.StringItemList()) + 1
- oDialogModel.cmdRemoveAll.Enabled = SelectCount>=1
- oDialogModel.cmdRemoveSelected.Enabled = bSelectSelected
- oDialogModel.cmdMoveAll.Enabled = FieldCount >=1
- oDialogModel.cmdMoveSelected.Enabled = bIsFieldSelected
- oDialogModel.cmdGoOn.Enabled = SelectCount>=1
- ' This flag is set to '1' when the lstSelFields has been modified
- End Sub
-
-
- Function AddSingleItemToListbox(ByVal oListbox as Object, ListItem as String, Optional iSelIndex) as Object
- Dim MaxIndex as Integer
- Dim i as Integer
-
- MaxIndex = Ubound(oListbox.StringItemList())
- Dim LocList(MaxIndex + 1)
- ' Todo: This goes faster with the Redim LocList(MaxIndex + 1) Preserve function
- For i = 0 To MaxIndex
- LocList(i) = oListbox.StringItemList(i)
- Next i
- LocList(MaxIndex + 1) = ListItem
- oListbox.StringItemList() = LocList()
- If Not IsMissing(iSelIndex) Then
- SelectListboxItem(oListbox, iSelIndex)
- End If
- AddSingleItemToListbox() = oListbox
- End Function
-
-
- Sub EmptyListbox(oListbox as Object)
- Dim NullList() as String
- oListbox.StringItemList() = NullList()
- End Sub
-
-
- Sub SelectListboxItem(oListbox as Object, iSelIndex as Integer)
- Dim LocSelList(0) as Integer
- If iSelIndex <> -1 Then
- LocSelList(0) = iSelIndex
- oListbox.SelectedItems() = LocSelList()
- End If
- End Sub
-
-
- Function GetSelectedListboxItems(oListbox as Object)
- Dim SelList() as String
- Dim i as Integer
- Dim CurIndex as Integer
- For i = 0 To Ubound(oListbox.SelectedItems())
- CurIndex = oListbox.SelectedItems(i)
- SelList(i) = oListbox.StringItemList(CurIndex)
- Next i
- GetSelectedListboxItems() = SelList()
- End Function
-
-
- ' Note: When using this Sub it must be ensured that the
- ' 'RemoveItem' appears only only once in the Listbox
- Sub RemoveListboxItemByName(oListbox as Object, RemoveItem as String)
- Dim OldList() as String
- Dim NullList() as String
- Dim i as Integer
- Dim a as Integer
- Dim MaxIndex as Integer
- OldList = oListbox.StringItemList()
- MaxIndex = Ubound(OldList())
- If IndexInArray(RemoveItem, OldList()) <> -1 Then
- If MaxIndex > 0 Then
- a = 0
- Dim NewList(MaxIndex -1)
- For i = 0 To MaxIndex
- If RemoveItem <> OldList(i) Then
- NewList(a) = OldList(i)
- a = a + 1
- End If
- Next i
- oListbox.StringItemList() = NewList()
- Else
- oListBox.StringItemList() = NullList()
- End If
- End If
- End Sub
-
-
- Function GetItemPos(oListBox as Object, sItem as String)
- Dim ItemList()
- Dim MaxIndex as Integer
- Dim i as Integer
- ItemList() = oListBox.StringItemList()
- MaxIndex = Ubound(ItemList())
- For i = 0 To MaxIndex
- If sItem = ItemList(i) Then
- GetItemPos() = i
- Exit Function
- End If
- Next i
- GetItemPos() = -1
- End Function</script:module>