#Region Project Attributes
#MainFormWidth: 950
#MainFormHeight: 600
#AdditionalJar: sqlite-jdbc-3.7.2
#AdditionalJar: bcprov-jdk15on-154
#End Region
Sub Process_Globals
Private fx As JFX
Private MainForm As Form
Private kvs As KeyValueStore
Private dialogue8 As Dialogs8
Private strExistingFilePath As String
Private tableDataView As TableView
Private txtPassword As TextField
Private txtFileField As TextField
Private btnSelectFile As Button
Private btnReload As Button
End Sub
Sub AppStart (Form1 As Form, Args() As String)
MainForm = Form1
MainForm.SetFormStyle("UNIFIED")
MainForm.RootPane.LoadLayout("main_form") 'Load the layout file.
MainForm.Show
dialogue8.Initialize
tableDataView.SetColumnHeader(0, "Key")
tableDataView.SetColumnHeader(1, "Contents")
tableDataView.SetColumnWidth(0, 200.00)
tableDataView.SetColumnSortable(0, True)
tableDataView.SetColumnSortable(1, True)
End Sub
Sub GetDataFolder (AppName As String) As String
Dim os As String = GetSystemProperty("os.name", "").ToLowerCase
If os.Contains("win") Then
Dim wf As String = File.Combine(GetEnvironmentVariable("AppData", ""), AppName)
File.MakeDir(wf, "")
Return wf
Else
Return File.DirApp
End If
End Sub
Sub btnSelectFile_Action
LoadFile
End Sub
Sub btnReload_Action
If txtFileField.Text <> "" Then
Dim strFilePath As String = txtFileField.Text
If strFilePath <> "" Then
txtFileField.Text = strFilePath
Dim strPath As String
Dim strFile As String
strPath = File.GetFileParent(strFilePath)
strFile = File.GetName(strFilePath)
If File.IsDirectory(strPath, strFile) = True Then
fx.Msgbox(MainForm, "You must select a file to import.", "No File Selected")
Else
strExistingFilePath = strPath
If kvs.IsInitialized = True Then
kvs.Close
End If
kvs.Initialize(strPath, strFile)
LoadKVSData
End If
End If
End If
End Sub
Sub LoadFile
Dim saveopenFile As FileChooser
saveopenFile.Initialize
If strExistingFilePath <> "" Then
saveopenFile.InitialDirectory = strExistingFilePath
Else
saveopenFile.InitialDirectory = GetDataFolder("KVSViewer")
End If
Dim strFilePath As String
strFilePath = saveopenFile.ShowOpen(MainForm)
If strFilePath <> "" Then
txtFileField.Text = strFilePath
Dim strPath As String
Dim strFile As String
strPath = File.GetFileParent(strFilePath)
strFile = File.GetName(strFilePath)
If File.IsDirectory(strPath, strFile) = True Then
fx.Msgbox(MainForm, "You must select a file to import.", "No File Selected")
Else
strExistingFilePath = strPath
If kvs.IsInitialized = True Then
kvs.Close
End If
kvs.Initialize(strPath, strFile)
LoadKVSData
End If
End If
End Sub
Sub LoadKVSData
tableDataView.Items.Clear
Dim listKeys As List
listKeys.Initialize
listKeys = kvs.ListKeys
For i = 0 To listKeys.Size - 1
Dim Row(2) As Object
Row(0) = listKeys.Get(i)
If txtPassword.Text <> "" Then
Row(1) = kvs.GetEncryptedObject(listKeys.Get(i), txtPassword.Text)
Else
Row(1) = kvs.GetSimple(listKeys.Get(i))
End If
tableDataView.Items.Add(Row)
Next
refreshTableView
End Sub
Sub refreshTableView
' Use a temporary list which holds the updated row (cells) objects as taken from the updated tableview list
Dim tempData As List
tempData.Initialize
tempData.AddAll(tableDataView.Items)
' Clear all items in the tableview list
tableDataView.Items.Clear
' And add the objects from the list to the tableviewStandard items
For i = 0 To tempData.Size - 1
Dim r() As Object = tempData.Get(i)
tableDataView.Items.Add(Array As Object(r(0), r(1)))
Next
' Set the selected row
tableDataView.SelectedRow = 0
End Sub