Initial population
This commit is contained in:
428
.gitignore
vendored
Normal file
428
.gitignore
vendored
Normal file
@@ -0,0 +1,428 @@
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
##
|
||||
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
|
||||
|
||||
# User-specific files
|
||||
*.rsuser
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
*.env
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Mono auto generated files
|
||||
mono_crash.*
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
|
||||
[Dd]ebug/x64/
|
||||
[Dd]ebugPublic/x64/
|
||||
[Rr]elease/x64/
|
||||
[Rr]eleases/x64/
|
||||
bin/x64/
|
||||
obj/x64/
|
||||
|
||||
[Dd]ebug/x86/
|
||||
[Dd]ebugPublic/x86/
|
||||
[Rr]elease/x86/
|
||||
[Rr]eleases/x86/
|
||||
bin/x86/
|
||||
obj/x86/
|
||||
|
||||
[Ww][Ii][Nn]32/
|
||||
[Aa][Rr][Mm]/
|
||||
[Aa][Rr][Mm]64/
|
||||
[Aa][Rr][Mm]64[Ee][Cc]/
|
||||
bld/
|
||||
[Oo]bj/
|
||||
[Oo]ut/
|
||||
[Ll]og/
|
||||
[Ll]ogs/
|
||||
|
||||
# Build results on 'Bin' directories
|
||||
**/[Bb]in/*
|
||||
# Uncomment if you have tasks that rely on *.refresh files to move binaries
|
||||
# (https://github.com/github/gitignore/pull/3736)
|
||||
#!**/[Bb]in/*.refresh
|
||||
|
||||
# Visual Studio 2015/2017 cache/options directory
|
||||
.vs/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
# Visual Studio 2017 auto generated files
|
||||
Generated\ Files/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
*.trx
|
||||
|
||||
# NUnit
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
nunit-*.xml
|
||||
|
||||
# Approval Tests result files
|
||||
*.received.*
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# Benchmark Results
|
||||
BenchmarkDotNet.Artifacts/
|
||||
|
||||
# .NET Core
|
||||
project.lock.json
|
||||
project.fragment.lock.json
|
||||
artifacts/
|
||||
|
||||
# ASP.NET Scaffolding
|
||||
ScaffoldingReadMe.txt
|
||||
|
||||
# StyleCop
|
||||
StyleCopReport.xml
|
||||
|
||||
# Files built by Visual Studio
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_h.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.idb
|
||||
*.iobj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.ipdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
# but not Directory.Build.rsp, as it configures directory-level build defaults
|
||||
!Directory.Build.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*_wpftmp.csproj
|
||||
*.log
|
||||
*.tlog
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
*.VC.VC.opendb
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# Visual Studio Trace Files
|
||||
*.e2e
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# AxoCover is a Code Coverage Tool
|
||||
.axoCover/*
|
||||
!.axoCover/settings.json
|
||||
|
||||
# Coverlet is a free, cross platform Code Coverage Tool
|
||||
coverage*.json
|
||||
coverage*.xml
|
||||
coverage*.info
|
||||
|
||||
# Visual Studio code coverage results
|
||||
*.coverage
|
||||
*.coveragexml
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
nCrunchTemp_*
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||
# but database connection strings (with potential passwords) will be unencrypted
|
||||
*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||
# in these scripts will be unencrypted
|
||||
PublishScripts/
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# NuGet Symbol Packages
|
||||
*.snupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/[Pp]ackages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/[Pp]ackages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/[Pp]ackages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignorable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Windows Store app package directories and files
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
Package.StoreAssociation.xml
|
||||
_pkginfo.txt
|
||||
*.appx
|
||||
*.appxbundle
|
||||
*.appxupload
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!?*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
~$*
|
||||
*~
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.jfm
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
orleans.codegen.cs
|
||||
|
||||
# Including strong name files can present a security risk
|
||||
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||
#*.snk
|
||||
|
||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||
#bower_components/
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
ServiceFabricBackup/
|
||||
*.rptproj.bak
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
*.ndf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
*.rptproj.rsuser
|
||||
*- [Bb]ackup.rdl
|
||||
*- [Bb]ackup ([0-9]).rdl
|
||||
*- [Bb]ackup ([0-9][0-9]).rdl
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
node_modules/
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||
*.vbw
|
||||
|
||||
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
|
||||
*.dsw
|
||||
*.dsp
|
||||
|
||||
# Visual Studio 6 technical files
|
||||
*.ncb
|
||||
*.aps
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/ModelManifest.xml
|
||||
**/*.Server/GeneratedArtifacts
|
||||
**/*.Server/ModelManifest.xml
|
||||
_Pvt_Extensions
|
||||
|
||||
# Paket dependency manager
|
||||
**/.paket/paket.exe
|
||||
paket-files/
|
||||
|
||||
# FAKE - F# Make
|
||||
**/.fake/
|
||||
|
||||
# CodeRush personal settings
|
||||
**/.cr/personal
|
||||
|
||||
# Python Tools for Visual Studio (PTVS)
|
||||
**/__pycache__/
|
||||
*.pyc
|
||||
|
||||
# Cake - Uncomment if you are using it
|
||||
#tools/**
|
||||
#!tools/packages.config
|
||||
|
||||
# Tabs Studio
|
||||
*.tss
|
||||
|
||||
# Telerik's JustMock configuration file
|
||||
*.jmconfig
|
||||
|
||||
# BizTalk build output
|
||||
*.btp.cs
|
||||
*.btm.cs
|
||||
*.odx.cs
|
||||
*.xsd.cs
|
||||
|
||||
# OpenCover UI analysis results
|
||||
OpenCover/
|
||||
|
||||
# Azure Stream Analytics local run output
|
||||
ASALocalRun/
|
||||
|
||||
# MSBuild Binary and Structured Log
|
||||
*.binlog
|
||||
MSBuild_Logs/
|
||||
|
||||
# AWS SAM Build and Temporary Artifacts folder
|
||||
.aws-sam
|
||||
|
||||
# NVidia Nsight GPU debugger configuration file
|
||||
*.nvuser
|
||||
|
||||
# MFractors (Xamarin productivity tool) working folder
|
||||
**/.mfractor/
|
||||
|
||||
# Local History for Visual Studio
|
||||
**/.localhistory/
|
||||
|
||||
# Visual Studio History (VSHistory) files
|
||||
.vshistory/
|
||||
|
||||
# BeatPulse healthcheck temp database
|
||||
healthchecksdb
|
||||
|
||||
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
||||
MigrationBackup/
|
||||
|
||||
# Ionide (cross platform F# VS Code tools) working folder
|
||||
**/.ionide/
|
||||
|
||||
# Fody - auto-generated XML schema
|
||||
FodyWeavers.xsd
|
||||
|
||||
# VS Code files for those working on multiple tools
|
||||
.vscode/*
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
!.vscode/*.code-snippets
|
||||
|
||||
# Local History for Visual Studio Code
|
||||
.history/
|
||||
|
||||
# Built Visual Studio Code Extensions
|
||||
*.vsix
|
||||
|
||||
# Windows Installer files from build outputs
|
||||
*.cab
|
||||
*.msi
|
||||
*.msix
|
||||
*.msm
|
||||
*.msp
|
||||
81
AADeleteMe.Designer.vb
generated
Normal file
81
AADeleteMe.Designer.vb
generated
Normal file
@@ -0,0 +1,81 @@
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
|
||||
Partial Class AADeleteMe
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Form overrides dispose to clean up the component list.
|
||||
<System.Diagnostics.DebuggerNonUserCode()>
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
<System.Diagnostics.DebuggerStepThrough()>
|
||||
Private Sub InitializeComponent()
|
||||
Me.MenuStrip1 = New System.Windows.Forms.MenuStrip()
|
||||
Me.Test1ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.Test1SubToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.Test2ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.MenuStrip1.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'MenuStrip1
|
||||
'
|
||||
Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.Test1ToolStripMenuItem, Me.Test2ToolStripMenuItem})
|
||||
Me.MenuStrip1.Location = New System.Drawing.Point(0, 0)
|
||||
Me.MenuStrip1.Name = "MenuStrip1"
|
||||
Me.MenuStrip1.Size = New System.Drawing.Size(800, 24)
|
||||
Me.MenuStrip1.TabIndex = 0
|
||||
Me.MenuStrip1.Text = "MenuStrip1"
|
||||
'
|
||||
'Test1ToolStripMenuItem
|
||||
'
|
||||
Me.Test1ToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.Test1SubToolStripMenuItem})
|
||||
Me.Test1ToolStripMenuItem.Name = "Test1ToolStripMenuItem"
|
||||
Me.Test1ToolStripMenuItem.Size = New System.Drawing.Size(45, 20)
|
||||
Me.Test1ToolStripMenuItem.Text = "Test1"
|
||||
'
|
||||
'Test1SubToolStripMenuItem
|
||||
'
|
||||
Me.Test1SubToolStripMenuItem.Name = "Test1SubToolStripMenuItem"
|
||||
Me.Test1SubToolStripMenuItem.Size = New System.Drawing.Size(120, 22)
|
||||
Me.Test1SubToolStripMenuItem.Text = "Test1Sub"
|
||||
'
|
||||
'Test2ToolStripMenuItem
|
||||
'
|
||||
Me.Test2ToolStripMenuItem.Name = "Test2ToolStripMenuItem"
|
||||
Me.Test2ToolStripMenuItem.Size = New System.Drawing.Size(45, 20)
|
||||
Me.Test2ToolStripMenuItem.Text = "Test2"
|
||||
'
|
||||
'AADeleteMe
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 15.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(800, 450)
|
||||
Me.Controls.Add(Me.MenuStrip1)
|
||||
Me.IsMdiContainer = True
|
||||
Me.MainMenuStrip = Me.MenuStrip1
|
||||
Me.Name = "AADeleteMe"
|
||||
Me.Text = "AADeleteMe"
|
||||
Me.MenuStrip1.ResumeLayout(False)
|
||||
Me.MenuStrip1.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
|
||||
Friend WithEvents MenuStrip1 As Windows.Forms.MenuStrip
|
||||
Friend WithEvents Test1ToolStripMenuItem As Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents Test1SubToolStripMenuItem As Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents Test2ToolStripMenuItem As Windows.Forms.ToolStripMenuItem
|
||||
End Class
|
||||
63
AADeleteMe.resx
Normal file
63
AADeleteMe.resx
Normal file
@@ -0,0 +1,63 @@
|
||||
<root>
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="MenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
3
AADeleteMe.vb
Normal file
3
AADeleteMe.vb
Normal file
@@ -0,0 +1,3 @@
|
||||
Public Class AADeleteMe
|
||||
|
||||
End Class
|
||||
32
AssemblyInfo.vb
Normal file
32
AssemblyInfo.vb
Normal file
@@ -0,0 +1,32 @@
|
||||
Imports System
|
||||
Imports System.Reflection
|
||||
Imports System.Runtime.InteropServices
|
||||
|
||||
' General Information about an assembly is controlled through the following
|
||||
' set of attributes. Change these attribute values to modify the information
|
||||
' associated with an assembly.
|
||||
|
||||
' Review the values of the assembly attributes
|
||||
|
||||
<Assembly: AssemblyTitle("OrganLit")>
|
||||
<Assembly: AssemblyDescription("")>
|
||||
<Assembly: AssemblyCompany("Jon Reuss")>
|
||||
<Assembly: AssemblyProduct("OrganLit")>
|
||||
<Assembly: AssemblyCopyright("Copyright 1996-2013")>
|
||||
<Assembly: AssemblyTrademark("")>
|
||||
<Assembly: CLSCompliant(True)>
|
||||
|
||||
'The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
<Assembly: Guid("58B6982D-3388-486A-B1A4-33C0FAEE208D")>
|
||||
|
||||
' Version information for an assembly consists of the following four values:
|
||||
'
|
||||
' Major Version
|
||||
' Minor Version
|
||||
' Build Number
|
||||
' Revision
|
||||
'
|
||||
' You can specify all the values or you can default the Build and Revision Numbers
|
||||
' by using the '*' as shown below:
|
||||
|
||||
<Assembly: AssemblyVersion("1.0.*")>
|
||||
138
BaseEditForm.resx
Normal file
138
BaseEditForm.resx
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAICAQAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
|
||||
AAD///8A7gDu4A7uAO7gDu4A7uAO7uD4Dg+A4PgOD4Dg+A4PgO4P+HD/hw/4cP+HD/hw/4cODwBw8AcP
|
||||
AHDwBw8AcPAHDg/4cP+HD/hw/4cP+HD/hw4P+HD/hw/4cP+HD/hw/4cOD/hw/4cP+HD/hw/4cP+HDg/4
|
||||
cP+HD/hw/4cP+HD/hw4P+HD/hw/4cP+HD/hw/4cOD/hw/4cP+HD/hw/4cP+HDg/4cP+HD/hw/4cP+HD/
|
||||
hw4P+HD/hw/4cP+HD/hw/4cOD/hw/4cP+HD/hw/4cP+HDg/4cP+HD/hw/4cP+HD/hw4P+HD/hw/4cP+H
|
||||
D/hw/4cOD/hw/4cP+HD/hw/4cP+HDg/4cP+HD/hw/4cP+HD/hw4P+HD/hw/4cP+HD/hw/4cOD/hw/4cP
|
||||
+HD/hw/4cP+HDg8AcP+HD/hw/4cP+HDwBw7g/wD/hw/4cP+HD/hwD/Du4P8A8AcP+HD/hw8AcA/w7u4A
|
||||
7g/wD/hw/4cA/w7gDu7u7u4P8A8AcPAHAP8O7u7u6Znp4A7g/w4P8O4A7u7u7umZ7u7u4P8OD/Du7u6Z
|
||||
nu7u6e7umZ4A6eAO6ZnumZ7u7unu7pme7unu7umZ7u6e7u7p7u7unu7p7u7u6e7unu7u6e7u7p7u6e7u
|
||||
7unu7p7u7u7u7u6enumZ7u7p7pme7u7u7u7ume7pme7u6Znu7u4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
492
BaseEditForm.vb
Normal file
492
BaseEditForm.vb
Normal file
@@ -0,0 +1,492 @@
|
||||
Imports System.Windows.Forms
|
||||
|
||||
Public Class BaseEditForm
|
||||
Inherits Windows.Forms.Form
|
||||
|
||||
Enum EditingOrAdding
|
||||
Editing
|
||||
Adding
|
||||
Loading
|
||||
NoAction
|
||||
End Enum 'EditingOrAdding
|
||||
|
||||
Private mvalEditingOrAdding As EditingOrAdding
|
||||
Private mintCurrentSortColumn As Integer
|
||||
Private mobjEditFormExistingItemColumnSortRules() As clsGridColumnSortRule
|
||||
|
||||
#Region " Windows Form Designer generated code "
|
||||
|
||||
Public Sub New()
|
||||
MyBase.New()
|
||||
|
||||
'This call is required by the Windows Form Designer.
|
||||
InitializeComponent()
|
||||
|
||||
'Add any initialization after the InitializeComponent() call
|
||||
|
||||
End Sub
|
||||
|
||||
'Form overrides dispose to clean up the component list.
|
||||
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
If disposing Then
|
||||
If Not (components Is Nothing) Then
|
||||
components.Dispose()
|
||||
End If
|
||||
End If
|
||||
MyBase.Dispose(disposing)
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
Protected WithEvents fraAddEdit As Windows.Forms.GroupBox
|
||||
Private WithEvents btnEdit As Windows.Forms.Button
|
||||
Private WithEvents btnDelete As Windows.Forms.Button
|
||||
Private WithEvents btnSave As Windows.Forms.Button
|
||||
Private WithEvents btnCancel As Windows.Forms.Button
|
||||
Private WithEvents btnRevert As Windows.Forms.Button
|
||||
Private WithEvents btnExit As Windows.Forms.Button
|
||||
Private WithEvents lvwExistingItemsList As Windows.Forms.ListView
|
||||
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(BaseEditForm))
|
||||
Me.btnEdit = New Windows.Forms.Button
|
||||
Me.btnDelete = New Windows.Forms.Button
|
||||
Me.btnExit = New Windows.Forms.Button
|
||||
Me.fraAddEdit = New Windows.Forms.GroupBox
|
||||
Me.btnRevert = New Windows.Forms.Button
|
||||
Me.btnCancel = New Windows.Forms.Button
|
||||
Me.btnSave = New Windows.Forms.Button
|
||||
Me.lvwExistingItemsList = New Windows.Forms.ListView
|
||||
Me.fraAddEdit.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'btnEdit
|
||||
'
|
||||
Me.btnEdit.Anchor = CType((Windows.Forms.AnchorStyles.Top Or Windows.Forms.AnchorStyles.Right), Windows.Forms.AnchorStyles)
|
||||
Me.btnEdit.Location = New System.Drawing.Point(976, 8)
|
||||
Me.btnEdit.Name = "btnEdit"
|
||||
Me.btnEdit.Size = New System.Drawing.Size(96, 24)
|
||||
Me.btnEdit.TabIndex = 1
|
||||
Me.btnEdit.Text = "&Edit"
|
||||
'
|
||||
'btnDelete
|
||||
'
|
||||
Me.btnDelete.Anchor = CType((Windows.Forms.AnchorStyles.Top Or Windows.Forms.AnchorStyles.Right), Windows.Forms.AnchorStyles)
|
||||
Me.btnDelete.Location = New System.Drawing.Point(976, 40)
|
||||
Me.btnDelete.Name = "btnDelete"
|
||||
Me.btnDelete.Size = New System.Drawing.Size(96, 24)
|
||||
Me.btnDelete.TabIndex = 2
|
||||
Me.btnDelete.Text = "&Delete"
|
||||
'
|
||||
'btnExit
|
||||
'
|
||||
Me.btnExit.Anchor = CType((Windows.Forms.AnchorStyles.Top Or Windows.Forms.AnchorStyles.Right), Windows.Forms.AnchorStyles)
|
||||
Me.btnExit.Location = New System.Drawing.Point(976, 72)
|
||||
Me.btnExit.Name = "btnExit"
|
||||
Me.btnExit.Size = New System.Drawing.Size(96, 24)
|
||||
Me.btnExit.TabIndex = 3
|
||||
Me.btnExit.Text = "E&xit"
|
||||
'
|
||||
'fraAddEdit
|
||||
'
|
||||
Me.fraAddEdit.Anchor = CType(((Windows.Forms.AnchorStyles.Bottom Or Windows.Forms.AnchorStyles.Left) _
|
||||
Or Windows.Forms.AnchorStyles.Right), Windows.Forms.AnchorStyles)
|
||||
Me.fraAddEdit.Controls.Add(Me.btnRevert)
|
||||
Me.fraAddEdit.Controls.Add(Me.btnCancel)
|
||||
Me.fraAddEdit.Controls.Add(Me.btnSave)
|
||||
Me.fraAddEdit.Location = New System.Drawing.Point(10, 320)
|
||||
Me.fraAddEdit.Name = "fraAddEdit"
|
||||
Me.fraAddEdit.Size = New System.Drawing.Size(1064, 272)
|
||||
Me.fraAddEdit.TabIndex = 4
|
||||
Me.fraAddEdit.TabStop = False
|
||||
Me.fraAddEdit.Text = "Add..."
|
||||
'
|
||||
'btnRevert
|
||||
'
|
||||
Me.btnRevert.Anchor = CType((Windows.Forms.AnchorStyles.Top Or Windows.Forms.AnchorStyles.Right), Windows.Forms.AnchorStyles)
|
||||
Me.btnRevert.Location = New System.Drawing.Point(952, 80)
|
||||
Me.btnRevert.Name = "btnRevert"
|
||||
Me.btnRevert.Size = New System.Drawing.Size(104, 24)
|
||||
Me.btnRevert.TabIndex = 2
|
||||
Me.btnRevert.Text = "&Revert"
|
||||
'
|
||||
'btnCancel
|
||||
'
|
||||
Me.btnCancel.Anchor = CType((Windows.Forms.AnchorStyles.Top Or Windows.Forms.AnchorStyles.Right), Windows.Forms.AnchorStyles)
|
||||
Me.btnCancel.Location = New System.Drawing.Point(952, 48)
|
||||
Me.btnCancel.Name = "btnCancel"
|
||||
Me.btnCancel.Size = New System.Drawing.Size(104, 24)
|
||||
Me.btnCancel.TabIndex = 1
|
||||
Me.btnCancel.Text = "&Cancel"
|
||||
'
|
||||
'btnSave
|
||||
'
|
||||
Me.btnSave.Anchor = CType((Windows.Forms.AnchorStyles.Top Or Windows.Forms.AnchorStyles.Right), Windows.Forms.AnchorStyles)
|
||||
Me.btnSave.Location = New System.Drawing.Point(952, 16)
|
||||
Me.btnSave.Name = "btnSave"
|
||||
Me.btnSave.Size = New System.Drawing.Size(104, 24)
|
||||
Me.btnSave.TabIndex = 0
|
||||
Me.btnSave.Text = "&Save"
|
||||
'
|
||||
'lvwExistingItemsList
|
||||
'
|
||||
Me.lvwExistingItemsList.Anchor = CType(((Windows.Forms.AnchorStyles.Top Or Windows.Forms.AnchorStyles.Left) _
|
||||
Or Windows.Forms.AnchorStyles.Right), Windows.Forms.AnchorStyles)
|
||||
Me.lvwExistingItemsList.FullRowSelect = True
|
||||
Me.lvwExistingItemsList.GridLines = True
|
||||
Me.lvwExistingItemsList.HideSelection = False
|
||||
Me.lvwExistingItemsList.Location = New System.Drawing.Point(8, 8)
|
||||
Me.lvwExistingItemsList.MultiSelect = False
|
||||
Me.lvwExistingItemsList.Name = "lvwExistingItemsList"
|
||||
Me.lvwExistingItemsList.Size = New System.Drawing.Size(960, 312)
|
||||
Me.lvwExistingItemsList.TabIndex = 0
|
||||
Me.lvwExistingItemsList.UseCompatibleStateImageBehavior = False
|
||||
Me.lvwExistingItemsList.View = Windows.Forms.View.Details
|
||||
'
|
||||
'BaseEditForm
|
||||
'
|
||||
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
|
||||
Me.ClientSize = New System.Drawing.Size(1080, 598)
|
||||
Me.Controls.Add(Me.lvwExistingItemsList)
|
||||
Me.Controls.Add(Me.fraAddEdit)
|
||||
Me.Controls.Add(Me.btnExit)
|
||||
Me.Controls.Add(Me.btnDelete)
|
||||
Me.Controls.Add(Me.btnEdit)
|
||||
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
|
||||
Me.MinimumSize = New System.Drawing.Size(848, 568)
|
||||
Me.Name = "BaseEditForm"
|
||||
Me.Text = "BaseEditForm"
|
||||
Me.fraAddEdit.ResumeLayout(False)
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
|
||||
#End Region
|
||||
|
||||
Private Sub BaseEditForm_FormClosed(ByVal sender As Object, ByVal e As Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
|
||||
MyGlobals.FlushCachedObjects()
|
||||
End Sub
|
||||
|
||||
Private Sub BaseEditForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
|
||||
If Me.DesignMode Then
|
||||
MessageBox.Show("The BaseEditForm class must be inherited, and contains methods that must be overridden." + vbCrLf + "They have been declared in the base class and will throw NotImplementedException at runtime if not overridden.")
|
||||
End If
|
||||
MyGlobals.FlushCachedObjects()
|
||||
lvwExistingItemsList.Sorting = SortOrder.None
|
||||
mintCurrentSortColumn = 0
|
||||
mvalEditingOrAdding = EditingOrAdding.NoAction
|
||||
LoadExistingItemsList()
|
||||
InitializeDetailControls()
|
||||
EnableDisableControls()
|
||||
'Dim lobjColumnClickEventArgs As New Windows.Forms.ColumnClickEventArgs(0)
|
||||
'lvwExistingItemsList_ColumnClick(Me, lobjColumnClickEventArgs)
|
||||
lvwExistingItemsList.Height = fraAddEdit.Top - lvwExistingItemsList.Top - 10
|
||||
End Sub
|
||||
|
||||
Protected Overridable Sub LoadExistingItemsList()
|
||||
If Not Me.DesignMode Then
|
||||
Throw New NotImplementedException
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Protected Overridable Sub InitializeDetailControls()
|
||||
If Not Me.DesignMode Then
|
||||
Throw New NotImplementedException
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Protected Overridable Sub EmptyOutDetailControls()
|
||||
If Not Me.DesignMode Then
|
||||
Throw New NotImplementedException
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Protected Overridable Function DetailControlsHaveSignificantData() As Boolean
|
||||
If Not Me.DesignMode Then
|
||||
Throw New NotImplementedException
|
||||
End If
|
||||
Return False
|
||||
End Function
|
||||
|
||||
Protected Overridable Function DetailControlsHaveDifferentDataThanExistingData(ByVal lstvwExistingItem As ListViewItem) As Boolean
|
||||
If Not Me.DesignMode Then
|
||||
Throw New NotImplementedException
|
||||
End If
|
||||
Return False
|
||||
End Function
|
||||
|
||||
Protected Overridable Function DeleteExistingItem(ByVal lstvwItemToDelete As ListViewItem) As Boolean
|
||||
If Not Me.DesignMode Then
|
||||
Throw New NotImplementedException
|
||||
End If
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overridable Function ConfirmOKToDeleteExistingItem(ByVal lstvwItemToDelete As ListViewItem) As Boolean
|
||||
If Not Me.DesignMode Then
|
||||
Throw New NotImplementedException
|
||||
End If
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overridable Function SaveNewItem() As Boolean
|
||||
If Not Me.DesignMode Then
|
||||
Throw New NotImplementedException
|
||||
End If
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overridable Function SaveNewDataForExistingItem(ByVal lstvwExistingItem As ListViewItem) As Boolean
|
||||
If Not Me.DesignMode Then
|
||||
Throw New NotImplementedException
|
||||
End If
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overridable Function LoadExistingDataToDetailControls(ByVal lstvwExistingItem As ListViewItem) As Boolean
|
||||
If Not Me.DesignMode Then
|
||||
Throw New NotImplementedException
|
||||
End If
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overridable Sub SetFocusToFirstDetailControlForEdit()
|
||||
If Not Me.DesignMode Then
|
||||
Throw New NotImplementedException
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Protected Overridable Sub UserRequestedToExit()
|
||||
If Not Me.DesignMode Then
|
||||
Throw New NotImplementedException
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Protected Overridable Sub EditOrAddStarting()
|
||||
If Not Me.DesignMode Then
|
||||
Throw New NotImplementedException
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Protected Overridable Sub EditOrAddCompleted()
|
||||
If Not Me.DesignMode Then
|
||||
Throw New NotImplementedException
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Protected ReadOnly Property ExistingObjectsListItems() As ListView.ListViewItemCollection
|
||||
Get
|
||||
Return lvwExistingItemsList.Items
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Protected ReadOnly Property ExistingObjectsListColumns() As ListView.ColumnHeaderCollection
|
||||
Get
|
||||
Return lvwExistingItemsList.Columns
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Protected ReadOnly Property GetEditingOrAdding() As EditingOrAdding
|
||||
Get
|
||||
Return mvalEditingOrAdding
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Protected Property MyBaseEditFormColumnSortRules() As clsGridColumnSortRule()
|
||||
Get
|
||||
Return mobjEditFormExistingItemColumnSortRules
|
||||
End Get
|
||||
Set(ByVal iValue As clsGridColumnSortRule())
|
||||
mobjEditFormExistingItemColumnSortRules = iValue
|
||||
End Set
|
||||
End Property
|
||||
Private Sub EnableDisableControls()
|
||||
Select Case mvalEditingOrAdding
|
||||
Case EditingOrAdding.Loading
|
||||
Exit Sub
|
||||
Case EditingOrAdding.Adding, EditingOrAdding.NoAction
|
||||
If DetailControlsHaveSignificantData() Then
|
||||
If btnCancel.Enabled = False Then
|
||||
EditOrAddStarting()
|
||||
End If
|
||||
mvalEditingOrAdding = EditingOrAdding.Adding
|
||||
lvwExistingItemsList.Enabled = False
|
||||
btnEdit.Enabled = False
|
||||
btnDelete.Enabled = False
|
||||
btnExit.Enabled = False
|
||||
fraAddEdit.Text = "Add..."
|
||||
btnSave.Enabled = True
|
||||
btnCancel.Enabled = True
|
||||
btnRevert.Enabled = False
|
||||
Else
|
||||
If btnCancel.Enabled = True Then
|
||||
EditOrAddCompleted()
|
||||
End If
|
||||
mvalEditingOrAdding = EditingOrAdding.NoAction
|
||||
lvwExistingItemsList.Enabled = True
|
||||
btnEdit.Enabled = True
|
||||
btnDelete.Enabled = True
|
||||
btnExit.Enabled = True
|
||||
fraAddEdit.Text = "Add..."
|
||||
btnSave.Enabled = False
|
||||
btnCancel.Enabled = False
|
||||
btnRevert.Enabled = False
|
||||
End If
|
||||
Case EditingOrAdding.Editing
|
||||
If btnCancel.Enabled = False Then
|
||||
EditOrAddStarting()
|
||||
End If
|
||||
lvwExistingItemsList.Enabled = False
|
||||
btnEdit.Enabled = False
|
||||
btnDelete.Enabled = False
|
||||
btnExit.Enabled = False
|
||||
fraAddEdit.Text = "Edit..."
|
||||
btnCancel.Enabled = True
|
||||
If DetailControlsHaveDifferentDataThanExistingData(lvwExistingItemsList.SelectedItems(0)) Then
|
||||
btnSave.Enabled = True
|
||||
btnRevert.Enabled = True
|
||||
Else
|
||||
btnSave.Enabled = False
|
||||
btnRevert.Enabled = False
|
||||
End If
|
||||
End Select
|
||||
If Not Me.DesignMode Then
|
||||
If btnCancel.Enabled Then
|
||||
Me.CancelButton = btnCancel
|
||||
Else
|
||||
Me.CancelButton = Nothing
|
||||
End If
|
||||
If btnSave.Enabled Then
|
||||
Me.AcceptButton = btnSave
|
||||
Else
|
||||
Me.AcceptButton = Nothing
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub btnEdit_Click1(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnEdit.Click
|
||||
DoEditClick()
|
||||
End Sub
|
||||
|
||||
Private Sub btnDelete_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnDelete.Click
|
||||
If lvwExistingItemsList.SelectedItems.Count = 0 Then
|
||||
MessageBox.Show("Must select an item to delete", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
|
||||
Exit Sub
|
||||
End If
|
||||
If ConfirmOKToDeleteExistingItem(lvwExistingItemsList.SelectedItems(0)) Then
|
||||
If DeleteExistingItem(lvwExistingItemsList.SelectedItems(0)) Then
|
||||
lvwExistingItemsList.Items.Remove(lvwExistingItemsList.SelectedItems(0))
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
|
||||
EmptyOutDetailControls()
|
||||
mvalEditingOrAdding = EditingOrAdding.NoAction
|
||||
EnableDisableControls()
|
||||
SetFocusToFirstDetailControlForEdit()
|
||||
End Sub
|
||||
|
||||
Private Sub btnRevert_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnRevert.Click
|
||||
LoadExistingDataToDetailControls(lvwExistingItemsList.SelectedItems(0))
|
||||
SetFocusToFirstDetailControlForEdit()
|
||||
End Sub
|
||||
|
||||
Private Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click
|
||||
If mvalEditingOrAdding = EditingOrAdding.Adding Then
|
||||
If SaveNewItem() Then
|
||||
mvalEditingOrAdding = EditingOrAdding.NoAction
|
||||
EmptyOutDetailControls()
|
||||
EnableDisableControls()
|
||||
End If
|
||||
Else
|
||||
If SaveNewDataForExistingItem(lvwExistingItemsList.SelectedItems(0)) Then
|
||||
mvalEditingOrAdding = EditingOrAdding.NoAction
|
||||
EmptyOutDetailControls()
|
||||
EnableDisableControls()
|
||||
End If
|
||||
End If
|
||||
SetFocusToFirstDetailControlForEdit()
|
||||
End Sub
|
||||
|
||||
Private Sub DoEditClick()
|
||||
If lvwExistingItemsList.SelectedItems.Count = 0 Then
|
||||
MessageBox.Show("Must select an item to edit", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
mvalEditingOrAdding = EditingOrAdding.Loading
|
||||
If LoadExistingDataToDetailControls(lvwExistingItemsList.SelectedItems(0)) Then
|
||||
mvalEditingOrAdding = EditingOrAdding.Editing
|
||||
EnableDisableControls()
|
||||
Else
|
||||
mvalEditingOrAdding = EditingOrAdding.NoAction
|
||||
EmptyOutDetailControls()
|
||||
Exit Sub
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Protected Sub DetailDataHasChanged()
|
||||
EnableDisableControls()
|
||||
End Sub
|
||||
|
||||
Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
|
||||
UserRequestedToExit()
|
||||
End Sub
|
||||
|
||||
Private Sub lvwExistingItemsList_ColumnClick(ByVal sender As System.Object, ByVal e As Windows.Forms.ColumnClickEventArgs) Handles lvwExistingItemsList.ColumnClick
|
||||
mintCurrentSortColumn = e.Column
|
||||
lvwExistingItemsList.ListViewItemSorter = New clsGridSorter(e.Column, mobjEditFormExistingItemColumnSortRules)
|
||||
End Sub
|
||||
|
||||
Private Sub lvwExistingItemsList_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles lvwExistingItemsList.DoubleClick
|
||||
DoEditClick()
|
||||
End Sub
|
||||
|
||||
Private Sub BaseEditForm_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
|
||||
lvwExistingItemsList.Height = fraAddEdit.Top - lvwExistingItemsList.Top - 10
|
||||
End Sub
|
||||
|
||||
Private Sub fraAddEdit_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles fraAddEdit.Resize
|
||||
lvwExistingItemsList.Height = fraAddEdit.Top - lvwExistingItemsList.Top - 10
|
||||
End Sub
|
||||
|
||||
Private Sub BaseEditForm_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
|
||||
If mobjEditFormExistingItemColumnSortRules Is Nothing Then
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
Dim intSavedSortColumn As Integer = mintCurrentSortColumn
|
||||
'If there is more than one column, temporarily sort by some other column
|
||||
'This is because, when first shown, for some reason, it was sorting only by the first
|
||||
'column, with no subsorts. I'm not sure if this is because .NET thinks that we're already
|
||||
'sorted by the first column.
|
||||
If mobjEditFormExistingItemColumnSortRules.Length > 1 Then
|
||||
Dim intTempSortColumn As Integer
|
||||
If mintCurrentSortColumn = 0 Then
|
||||
intTempSortColumn = 1
|
||||
Else
|
||||
intTempSortColumn = 0
|
||||
End If
|
||||
Dim lobjTempColumnClickEventArgs As New Windows.Forms.ColumnClickEventArgs(intTempSortColumn)
|
||||
lvwExistingItemsList_ColumnClick(Me, lobjTempColumnClickEventArgs)
|
||||
End If
|
||||
|
||||
'Sort by the current column
|
||||
Dim lobjColumnClickEventArgs As New Windows.Forms.ColumnClickEventArgs(intSavedSortColumn)
|
||||
lvwExistingItemsList_ColumnClick(Me, lobjColumnClickEventArgs)
|
||||
End Sub
|
||||
|
||||
Public Sub ExistingItemsListSuspendLayout()
|
||||
lvwExistingItemsList.SuspendLayout()
|
||||
End Sub
|
||||
|
||||
Public Sub ExistingItemsListResumeLayout()
|
||||
lvwExistingItemsList.ResumeLayout()
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
138
BaseQueryForm.resx
Normal file
138
BaseQueryForm.resx
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAICAQAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
|
||||
AAD///8A7gDu4A7uAO7gDu4A7uAO7uD4Dg+A4PgOD4Dg+A4PgO4P+HD/hw/4cP+HD/hw/4cODwBw8AcP
|
||||
AHDwBw8AcPAHDg/4cP+HD/hw/4cP+HD/hw4P+HD/hw/4cP+HD/hw/4cOD/hw/4cP+HD/hw/4cP+HDg/4
|
||||
cP+HD/hw/4cP+HD/hw4P+HD/hw/4cP+HD/hw/4cOD/hw/4cP+HD/hw/4cP+HDg/4cP+HD/hw/4cP+HD/
|
||||
hw4P+HD/hw/4cP+HD/hw/4cOD/hw/4cP+HD/hw/4cP+HDg/4cP+HD/hw/4cP+HD/hw4P+HD/hw/4cP+H
|
||||
D/hw/4cOD/hw/4cP+HD/hw/4cP+HDg/4cP+HD/hw/4cP+HD/hw4P+HD/hw/4cP+HD/hw/4cOD/hw/4cP
|
||||
+HD/hw/4cP+HDg8AcP+HD/hw/4cP+HDwBw7g/wD/hw/4cP+HD/hwD/Du4P8A8AcP+HD/hw8AcA/w7u4A
|
||||
7g/wD/hw/4cA/w7gDu7u7u4P8A8AcPAHAP8O7u7u6Znp4A7g/w4P8O4A7u7u7umZ7u7u4P8OD/Du7u6Z
|
||||
nu7u6e7umZ4A6eAO6ZnumZ7u7unu7pme7unu7umZ7u6e7u7p7u7unu7p7u7u6e7unu7u6e7u7p7u6e7u
|
||||
7unu7p7u7u7u7u6enumZ7u7p7pme7u7u7u7ume7pme7u6Znu7u4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
294
BaseQueryForm.vb
Normal file
294
BaseQueryForm.vb
Normal file
@@ -0,0 +1,294 @@
|
||||
Imports System.Windows.Forms
|
||||
|
||||
Public Class BaseQueryForm
|
||||
Inherits Windows.Forms.Form
|
||||
|
||||
Private mintCurrentQueryBySortColumn As Integer
|
||||
Private mintCurrentReportSortColumn As Integer
|
||||
Private mobjQueryFormQueryByItemColumnSortRules() As clsGridColumnSortRule
|
||||
Private mobjQueryFormReportItemColumnSortRules() As clsGridColumnSortRule
|
||||
|
||||
#Region " Windows Form Designer generated code "
|
||||
|
||||
Public Sub New()
|
||||
MyBase.New()
|
||||
|
||||
'This call is required by the Windows Form Designer.
|
||||
InitializeComponent()
|
||||
|
||||
'Add any initialization after the InitializeComponent() call
|
||||
|
||||
End Sub
|
||||
|
||||
'Form overrides dispose to clean up the component list.
|
||||
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
If disposing Then
|
||||
If Not (components Is Nothing) Then
|
||||
components.Dispose()
|
||||
End If
|
||||
End If
|
||||
MyBase.Dispose(disposing)
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
Private WithEvents btnExit As Windows.Forms.Button
|
||||
Protected WithEvents fraReport As Windows.Forms.GroupBox
|
||||
Private WithEvents lvwReportItemsList As Windows.Forms.ListView
|
||||
Friend WithEvents fraQueryBy As Windows.Forms.GroupBox
|
||||
Private WithEvents lvwQueryByItemsList As Windows.Forms.ListView
|
||||
Friend WithEvents fraOtherQueryParms As Windows.Forms.GroupBox
|
||||
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(BaseQueryForm))
|
||||
Me.btnExit = New Windows.Forms.Button
|
||||
Me.fraReport = New Windows.Forms.GroupBox
|
||||
Me.lvwReportItemsList = New Windows.Forms.ListView
|
||||
Me.fraQueryBy = New Windows.Forms.GroupBox
|
||||
Me.lvwQueryByItemsList = New Windows.Forms.ListView
|
||||
Me.fraOtherQueryParms = New Windows.Forms.GroupBox
|
||||
Me.fraReport.SuspendLayout()
|
||||
Me.fraQueryBy.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'btnExit
|
||||
'
|
||||
Me.btnExit.Anchor = CType((Windows.Forms.AnchorStyles.Top Or Windows.Forms.AnchorStyles.Right), Windows.Forms.AnchorStyles)
|
||||
Me.btnExit.Location = New System.Drawing.Point(976, 16)
|
||||
Me.btnExit.Name = "btnExit"
|
||||
Me.btnExit.Size = New System.Drawing.Size(96, 24)
|
||||
Me.btnExit.TabIndex = 2
|
||||
Me.btnExit.Text = "E&xit"
|
||||
'
|
||||
'fraReport
|
||||
'
|
||||
Me.fraReport.Anchor = CType(((Windows.Forms.AnchorStyles.Bottom Or Windows.Forms.AnchorStyles.Left) _
|
||||
Or Windows.Forms.AnchorStyles.Right), Windows.Forms.AnchorStyles)
|
||||
Me.fraReport.Controls.Add(Me.lvwReportItemsList)
|
||||
Me.fraReport.Location = New System.Drawing.Point(10, 320)
|
||||
Me.fraReport.Name = "fraReport"
|
||||
Me.fraReport.Size = New System.Drawing.Size(1064, 272)
|
||||
Me.fraReport.TabIndex = 1
|
||||
Me.fraReport.TabStop = False
|
||||
Me.fraReport.Text = "Add..."
|
||||
'
|
||||
'lvwReportItemsList
|
||||
'
|
||||
Me.lvwReportItemsList.Anchor = CType((((Windows.Forms.AnchorStyles.Top Or Windows.Forms.AnchorStyles.Bottom) _
|
||||
Or Windows.Forms.AnchorStyles.Left) _
|
||||
Or Windows.Forms.AnchorStyles.Right), Windows.Forms.AnchorStyles)
|
||||
Me.lvwReportItemsList.FullRowSelect = True
|
||||
Me.lvwReportItemsList.GridLines = True
|
||||
Me.lvwReportItemsList.HideSelection = False
|
||||
Me.lvwReportItemsList.Location = New System.Drawing.Point(8, 16)
|
||||
Me.lvwReportItemsList.MultiSelect = False
|
||||
Me.lvwReportItemsList.Name = "lvwReportItemsList"
|
||||
Me.lvwReportItemsList.Size = New System.Drawing.Size(960, 312)
|
||||
Me.lvwReportItemsList.TabIndex = 0
|
||||
Me.lvwReportItemsList.UseCompatibleStateImageBehavior = False
|
||||
Me.lvwReportItemsList.View = Windows.Forms.View.Details
|
||||
'
|
||||
'fraQueryBy
|
||||
'
|
||||
Me.fraQueryBy.Anchor = CType(((Windows.Forms.AnchorStyles.Bottom Or Windows.Forms.AnchorStyles.Left) _
|
||||
Or Windows.Forms.AnchorStyles.Right), Windows.Forms.AnchorStyles)
|
||||
Me.fraQueryBy.Controls.Add(Me.lvwQueryByItemsList)
|
||||
Me.fraQueryBy.Controls.Add(Me.fraOtherQueryParms)
|
||||
Me.fraQueryBy.Location = New System.Drawing.Point(10, 10)
|
||||
Me.fraQueryBy.Name = "fraQueryBy"
|
||||
Me.fraQueryBy.Size = New System.Drawing.Size(958, 302)
|
||||
Me.fraQueryBy.TabIndex = 0
|
||||
Me.fraQueryBy.TabStop = False
|
||||
Me.fraQueryBy.Text = "Query By"
|
||||
'
|
||||
'lvwQueryByItemsList
|
||||
'
|
||||
Me.lvwQueryByItemsList.Anchor = CType((((Windows.Forms.AnchorStyles.Top Or Windows.Forms.AnchorStyles.Bottom) _
|
||||
Or Windows.Forms.AnchorStyles.Left) _
|
||||
Or Windows.Forms.AnchorStyles.Right), Windows.Forms.AnchorStyles)
|
||||
Me.lvwQueryByItemsList.FullRowSelect = True
|
||||
Me.lvwQueryByItemsList.GridLines = True
|
||||
Me.lvwQueryByItemsList.HideSelection = False
|
||||
Me.lvwQueryByItemsList.Location = New System.Drawing.Point(8, 16)
|
||||
Me.lvwQueryByItemsList.MultiSelect = False
|
||||
Me.lvwQueryByItemsList.Name = "lvwQueryByItemsList"
|
||||
Me.lvwQueryByItemsList.Size = New System.Drawing.Size(944, 200)
|
||||
Me.lvwQueryByItemsList.TabIndex = 0
|
||||
Me.lvwQueryByItemsList.UseCompatibleStateImageBehavior = False
|
||||
Me.lvwQueryByItemsList.View = Windows.Forms.View.Details
|
||||
'
|
||||
'fraOtherQueryParms
|
||||
'
|
||||
Me.fraOtherQueryParms.Anchor = CType(((Windows.Forms.AnchorStyles.Bottom Or Windows.Forms.AnchorStyles.Left) _
|
||||
Or Windows.Forms.AnchorStyles.Right), Windows.Forms.AnchorStyles)
|
||||
Me.fraOtherQueryParms.Location = New System.Drawing.Point(8, 216)
|
||||
Me.fraOtherQueryParms.Name = "fraOtherQueryParms"
|
||||
Me.fraOtherQueryParms.Size = New System.Drawing.Size(944, 75)
|
||||
Me.fraOtherQueryParms.TabIndex = 1
|
||||
Me.fraOtherQueryParms.TabStop = False
|
||||
'
|
||||
'BaseQueryForm
|
||||
'
|
||||
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
|
||||
Me.ClientSize = New System.Drawing.Size(1080, 598)
|
||||
Me.Controls.Add(Me.fraQueryBy)
|
||||
Me.Controls.Add(Me.fraReport)
|
||||
Me.Controls.Add(Me.btnExit)
|
||||
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
|
||||
Me.MinimumSize = New System.Drawing.Size(848, 568)
|
||||
Me.Name = "BaseQueryForm"
|
||||
Me.Text = "BaseQueryForm"
|
||||
Me.fraReport.ResumeLayout(False)
|
||||
Me.fraQueryBy.ResumeLayout(False)
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
|
||||
#End Region
|
||||
|
||||
Private Sub BaseQueryForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
|
||||
If Me.DesignMode Then
|
||||
MessageBox.Show("The BaseQueryForm class must be inherited, and contains methods that must be overridden." + vbCrLf + "They have been declared in the base class and will throw NotImplementedException at runtime if not overridden.")
|
||||
End If
|
||||
lvwQueryByItemsList.Sorting = SortOrder.None
|
||||
lvwReportItemsList.Sorting = SortOrder.None
|
||||
LoadQueryByItemsList()
|
||||
InitializeReportControls()
|
||||
Dim lobjQueryByColumnClickEventArgs As New Windows.Forms.ColumnClickEventArgs(0)
|
||||
lvwQueryByItemsList_ColumnClick(Me, lobjQueryByColumnClickEventArgs)
|
||||
Dim lobjReportColumnClickEventArgs As New Windows.Forms.ColumnClickEventArgs(0)
|
||||
lvwReportItemsList_ColumnClick(Me, lobjReportColumnClickEventArgs)
|
||||
fraQueryBy.Height() = fraReport.Top - fraQueryBy.Top - 10
|
||||
If fraOtherQueryParms.Controls.Count > 0 Then
|
||||
fraOtherQueryParms.Visible = False
|
||||
lvwQueryByItemsList.Height = fraQueryBy.Height - 10
|
||||
Else
|
||||
lvwQueryByItemsList.Height = fraOtherQueryParms.Top - 10
|
||||
End If
|
||||
lvwReportItemsList.Height = fraReport.Height - 10
|
||||
End Sub
|
||||
|
||||
Protected Overridable Sub LoadQueryByItemsList()
|
||||
If Not Me.DesignMode Then
|
||||
Throw New NotImplementedException
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Protected Overridable Sub InitializeReportControls()
|
||||
If Not Me.DesignMode Then
|
||||
Throw New NotImplementedException
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Protected Overridable Function ReportOnQueryByItem(ByVal lstvwQueryByItem As ListViewItem) As Boolean
|
||||
If Not Me.DesignMode Then
|
||||
Throw New NotImplementedException
|
||||
End If
|
||||
End Function
|
||||
|
||||
Protected Overridable Function UserWantsDetailOnResult(ByVal lstvwResultItem As ListViewItem) As Boolean
|
||||
If Not Me.DesignMode Then
|
||||
Throw New NotImplementedException
|
||||
End If
|
||||
End Function
|
||||
|
||||
Protected Overridable Sub UserRequestedToExit()
|
||||
If Not Me.DesignMode Then
|
||||
Throw New NotImplementedException
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Protected ReadOnly Property QueryByListItems() As ListView.ListViewItemCollection
|
||||
Get
|
||||
Return lvwQueryByItemsList.Items
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Protected ReadOnly Property QueryByListColumns() As ListView.ColumnHeaderCollection
|
||||
Get
|
||||
Return lvwQueryByItemsList.Columns
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Protected Property MyBaseQueryFormQueryByColumnSortRules() As clsGridColumnSortRule()
|
||||
Get
|
||||
Return mobjQueryFormQueryByItemColumnSortRules
|
||||
End Get
|
||||
Set(ByVal iValue As clsGridColumnSortRule())
|
||||
mobjQueryFormQueryByItemColumnSortRules = iValue
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Protected ReadOnly Property ReportListItems() As ListView.ListViewItemCollection
|
||||
Get
|
||||
Return lvwReportItemsList.Items
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Protected ReadOnly Property ReportListColumns() As ListView.ColumnHeaderCollection
|
||||
Get
|
||||
Return lvwReportItemsList.Columns
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Protected Property MyBaseQueryFormReportColumnSortRules() As clsGridColumnSortRule()
|
||||
Get
|
||||
Return mobjQueryFormReportItemColumnSortRules
|
||||
End Get
|
||||
Set(ByVal iValue As clsGridColumnSortRule())
|
||||
mobjQueryFormReportItemColumnSortRules = iValue
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
|
||||
UserRequestedToExit()
|
||||
End Sub
|
||||
|
||||
Private Sub lvwQueryByItemsList_ColumnClick(ByVal sender As System.Object, ByVal e As Windows.Forms.ColumnClickEventArgs)
|
||||
mintCurrentQueryBySortColumn = e.Column
|
||||
lvwQueryByItemsList.ListViewItemSorter = New clsGridSorter(e.Column, mobjQueryFormQueryByItemColumnSortRules)
|
||||
End Sub
|
||||
|
||||
Private Sub lvwQueryByItemsList_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
|
||||
DoReportClick()
|
||||
End Sub
|
||||
|
||||
Private Sub lvwReportItemsList_ColumnClick(ByVal sender As System.Object, ByVal e As Windows.Forms.ColumnClickEventArgs) Handles lvwReportItemsList.ColumnClick
|
||||
mintCurrentReportSortColumn = e.Column
|
||||
lvwReportItemsList.ListViewItemSorter = New clsGridSorter(e.Column, mobjQueryFormReportItemColumnSortRules)
|
||||
End Sub
|
||||
|
||||
Private Sub lvwReportItemsList_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles lvwReportItemsList.DoubleClick
|
||||
DoUserWantsDetailOnResult()
|
||||
End Sub
|
||||
|
||||
Private Sub DoReportClick()
|
||||
If lvwQueryByItemsList.SelectedItems.Count = 0 Then
|
||||
MessageBox.Show("Must select an item to query by", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
ReportOnQueryByItem(lvwQueryByItemsList.SelectedItems(0))
|
||||
'Check if there are results - if so show them
|
||||
' - if not hide them
|
||||
If lvwReportItemsList.Items.Count = 0 Then
|
||||
lvwReportItemsList.Visible = False
|
||||
Else
|
||||
lvwReportItemsList.Visible = True
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub DoUserWantsDetailOnResult()
|
||||
If lvwReportItemsList.SelectedItems.Count = 0 Then
|
||||
MessageBox.Show("Must select an item to show details results for", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
UserWantsDetailOnResult(lvwReportItemsList.SelectedItems(0))
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
|
||||
10
My Project/Application.myapp
Normal file
10
My Project/Application.myapp
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<MySubMain>true</MySubMain>
|
||||
<MainForm>Form1</MainForm>
|
||||
<SingleInstance>false</SingleInstance>
|
||||
<ShutdownMode>0</ShutdownMode>
|
||||
<EnableVisualStyles>true</EnableVisualStyles>
|
||||
<AuthenticationMode>0</AuthenticationMode>
|
||||
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
|
||||
</MyApplicationData>
|
||||
109
MyGlobals.vb
Normal file
109
MyGlobals.vb
Normal file
@@ -0,0 +1,109 @@
|
||||
Imports System.Data.SqlClient
|
||||
Imports System.IO
|
||||
Imports System.Xml.Xsl
|
||||
Imports System.Collections.Generic
|
||||
Imports System.Windows.Forms
|
||||
|
||||
Public Class MyGlobals
|
||||
Public Shared g_objDatabaseLayer As clsDatabaseLayer
|
||||
Public Shared g_objCachedObjects As Hashtable
|
||||
Public Shared g_objObjectTypesCached As New List(Of String)
|
||||
|
||||
Public Const COMPOSER_NAME_SIZE As Integer = 60
|
||||
Public Const PUBLISHER_NAME_SIZE As Integer = 60
|
||||
Public Const PUBLISHER_STREAMING_ALLOWED_SIZE As Integer = 7
|
||||
Public Const HYMNAL_NAME_SIZE As Integer = 60
|
||||
Public Const HYMNAL_ABBREVIATION_SIZE As Integer = 10
|
||||
Public Const BOOK_TITLE_SIZE As Integer = 120
|
||||
Public Const HYMN_TUNE_NAME_SIZE As Integer = 60
|
||||
Public Const HYMN_NAME_SIZE As Integer = 120
|
||||
Public Const WORK_NAME_SIZE As Integer = 150
|
||||
Public Const OPUS_INFO_SIZE As Integer = 50
|
||||
Public Const INSTRUMENTATION_NAME_SIZE As Integer = 60
|
||||
Public Const COLLECTION_STRING As String = "(Collection)"
|
||||
Public Const NONE_STRING As String = "(None)"
|
||||
Public Const PUBLISHER_STREAMING_ALLOWED_UNKNOWN As String = "Unknown"
|
||||
|
||||
Public Shared Function GetItemFromHashWithStringKey(ByVal strKeyValue As String, ByVal objHash As Hashtable) As Object
|
||||
If objHash.ContainsKey(strKeyValue) Then
|
||||
Return objHash.Item(strKeyValue)
|
||||
Else
|
||||
Return Nothing
|
||||
End If
|
||||
End Function
|
||||
|
||||
Public Shared Sub FlushCachedObjects()
|
||||
If g_objCachedObjects Is Nothing Then
|
||||
g_objCachedObjects = New Hashtable
|
||||
Else
|
||||
g_objCachedObjects.Clear()
|
||||
End If
|
||||
g_objObjectTypesCached.Clear()
|
||||
End Sub
|
||||
|
||||
Public Shared Sub AddCachedObject(ByRef objObject As Object, ByVal strKeyValue As String)
|
||||
If g_objCachedObjects Is Nothing Then
|
||||
FlushCachedObjects()
|
||||
End If
|
||||
|
||||
If g_objCachedObjects.ContainsKey(strKeyValue) Then
|
||||
g_objCachedObjects.Remove(strKeyValue)
|
||||
End If
|
||||
g_objCachedObjects.Add(strKeyValue, objObject)
|
||||
End Sub
|
||||
|
||||
Public Shared Sub RemoveCachedObject(ByVal strKeyValue As String)
|
||||
If g_objCachedObjects Is Nothing Then
|
||||
FlushCachedObjects()
|
||||
End If
|
||||
|
||||
If g_objCachedObjects.ContainsKey(strKeyValue) Then
|
||||
g_objCachedObjects.Remove(strKeyValue)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Shared Function CachedObjectExists(ByVal strKeyValue As String) As Boolean
|
||||
If g_objCachedObjects Is Nothing Then
|
||||
FlushCachedObjects()
|
||||
End If
|
||||
|
||||
Return g_objCachedObjects.ContainsKey(strKeyValue)
|
||||
End Function
|
||||
|
||||
Public Shared Function CachedObjectRetrieve(ByVal strKeyValue As String) As Object
|
||||
If g_objCachedObjects Is Nothing Then
|
||||
FlushCachedObjects()
|
||||
End If
|
||||
|
||||
Return GetItemFromHashWithStringKey(strKeyValue, g_objCachedObjects)
|
||||
End Function
|
||||
|
||||
Public Shared Function AllowKeypressInNumericTextBox(ByVal sChar As Char) As Boolean
|
||||
If Not Char.IsDigit(sChar) Then
|
||||
Select Case Asc(sChar)
|
||||
Case 8, 3, 24 '8=Backspace,3=ctrlC,24=ctrlX
|
||||
'Let these through
|
||||
Case 22 '22=ctrlV
|
||||
If Clipboard.GetDataObject.GetDataPresent("System.String", True) Then
|
||||
Dim sClipboardText As String
|
||||
sClipboardText = Clipboard.GetDataObject.GetData("System.String", True).ToString
|
||||
Dim sCharInClipboard As Char
|
||||
For Each sCharInClipboard In sClipboardText
|
||||
If Not Char.IsDigit(sCharInClipboard) Then
|
||||
'There is a non-digit in the clipboard - don't allow the paste
|
||||
Return False
|
||||
End If
|
||||
Next
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Case Else
|
||||
Return False
|
||||
End Select
|
||||
End If
|
||||
|
||||
Return True
|
||||
|
||||
End Function
|
||||
|
||||
End Class
|
||||
BIN
ORGANLIT.ICO
Normal file
BIN
ORGANLIT.ICO
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 766 B |
6
OrganLit.exe.config
Normal file
6
OrganLit.exe.config
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="XSLLocations" value="F:\VBDOTNETPROJECTS\OrganLit\" />
|
||||
</appSettings>
|
||||
</configuration>
|
||||
24
OrganLit.sln
Normal file
24
OrganLit.sln
Normal file
@@ -0,0 +1,24 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.4.33122.133
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "OrganLit", "OrganLit.vbproj", "{77265D90-970B-4B0E-A99F-974E4EA852D0}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{77265D90-970B-4B0E-A99F-974E4EA852D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{77265D90-970B-4B0E-A99F-974E4EA852D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{77265D90-970B-4B0E-A99F-974E4EA852D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{77265D90-970B-4B0E-A99F-974E4EA852D0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {01F7DDB8-06D9-492A-A62A-DDBA84268474}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
81
OrganLit.vbproj
Normal file
81
OrganLit.vbproj
Normal file
@@ -0,0 +1,81 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0-windows</TargetFramework>
|
||||
<ProjectType>Local</ProjectType>
|
||||
<ApplicationIcon>ORGANLIT.ICO</ApplicationIcon>
|
||||
<AssemblyKeyContainerName></AssemblyKeyContainerName>
|
||||
<AssemblyOriginatorKeyFile></AssemblyOriginatorKeyFile>
|
||||
<AssemblyOriginatorKeyMode>None</AssemblyOriginatorKeyMode>
|
||||
<DefaultClientScript>JScript</DefaultClientScript>
|
||||
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
|
||||
<DefaultTargetSchema>IE50</DefaultTargetSchema>
|
||||
<DelaySign>false</DelaySign>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<OptionStrict>On</OptionStrict>
|
||||
<StartupObject>OrganLit.frmMain</StartupObject>
|
||||
<MyType>WindowsFormsWithCustomSubMain</MyType>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
|
||||
<Deterministic>false</Deterministic>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DocumentationFile>OrganLit.xml</DocumentationFile>
|
||||
<BaseAddress>285212672</BaseAddress>
|
||||
<ConfigurationOverrideFile></ConfigurationOverrideFile>
|
||||
<DefineConstants></DefineConstants>
|
||||
<RegisterForComInterop>false</RegisterForComInterop>
|
||||
<RemoveIntegerChecks>false</RemoveIntegerChecks>
|
||||
<NoWarn>42016,42017,42018,42019,42032,42353,42354,42355</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DocumentationFile>OrganLit.xml</DocumentationFile>
|
||||
<BaseAddress>285212672</BaseAddress>
|
||||
<ConfigurationOverrideFile></ConfigurationOverrideFile>
|
||||
<DefineConstants></DefineConstants>
|
||||
<DefineDebug>false</DefineDebug>
|
||||
<RegisterForComInterop>false</RegisterForComInterop>
|
||||
<RemoveIntegerChecks>false</RemoveIntegerChecks>
|
||||
<NoWarn>42016,42017,42018,42019,42032,42353,42354,42355</NoWarn>
|
||||
<DebugType>none</DebugType>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="combotypeahead">
|
||||
<HintPath>References\combotypeahead.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Update="System">
|
||||
<Name>System</Name>
|
||||
</Reference>
|
||||
<Reference Update="System.Data">
|
||||
<Name>System.Data</Name>
|
||||
</Reference>
|
||||
<Reference Update="System.Drawing">
|
||||
<Name>System.Drawing</Name>
|
||||
</Reference>
|
||||
<Reference Update="System.Xml">
|
||||
<Name>System.XML</Name>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Import Include="System.Drawing" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="ORGANLIT.ICO" />
|
||||
<Content Include="OrganLitHymnTuneBased.xsl" />
|
||||
<Content Include="OrganLitIndexByBook.xsl" />
|
||||
<Content Include="OrganLitIndexByComposer.xsl" />
|
||||
<Content Include="OrganLitIndexByHymn.xsl" />
|
||||
<Content Include="OrganLitIndexByHymnTuneName.xsl" />
|
||||
<Content Include="OrganLitNonHymnTuneBased.xsl" />
|
||||
<Content Include="OrganLitWorksByBook.xsl" />
|
||||
<Content Include="OrganLitWorksByComposer.xsl" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="bin\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.VisualBasic" Version="10.3.0" />
|
||||
<PackageReference Include="System.Data.SqlClient" Version="4.8.2" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup />
|
||||
</Project>
|
||||
149
OrganLitHymnTuneBased.xsl
Normal file
149
OrganLitHymnTuneBased.xsl
Normal file
@@ -0,0 +1,149 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
<xsl:output method="html" version="4.01" encoding="UTF-8" indent="yes"/>
|
||||
<xsl:template match="/">
|
||||
<html>
|
||||
<head>
|
||||
<title>OrganLit - Hymn Tune Names, Hymns and Works</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Hymn Tune Names, Hymns and Works</h1>
|
||||
<xsl:for-each select="//OrganLit/HymnTunes/HymnTune">
|
||||
<xsl:call-template name="FormatHymnTune"/>
|
||||
</xsl:for-each>
|
||||
<br/>
|
||||
<br/>
|
||||
<a href="index.htm">OrganLit Home</a>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatHymnTune">
|
||||
<p>
|
||||
<a name="#{current()/HymnTuneID}"/>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="count(../../HymnTuneNames/HymnTuneName[HymnTuneID=current()/HymnTuneID])>1">
|
||||
<br><b><xsl:text>Tune Name (with potential alternate names or spellings):</xsl:text></b></br>
|
||||
<xsl:for-each select="../../HymnTuneNames/HymnTuneName[HymnTuneID=current()/HymnTuneID]">
|
||||
<xsl:sort select="HymnTuneName"/>
|
||||
<xsl:call-template name="FormatHymnTuneNameMultiple"/>
|
||||
</xsl:for-each>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:for-each select="../../HymnTuneNames/HymnTuneName[HymnTuneID=current()/HymnTuneID]">
|
||||
<xsl:call-template name="FormatHymnTuneNameSingle"/>
|
||||
</xsl:for-each>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="count(../../Hymns/Hymn[HymnTuneName/HymnTuneID=current()/HymnTuneID])>1">
|
||||
<br><b><xsl:text>Hymn(s):</xsl:text></b></br>
|
||||
<xsl:for-each select="../../Hymns/Hymn[HymnTuneName/HymnTuneID=current()/HymnTuneID]">
|
||||
<xsl:sort select="current()/HymnalAbbreviation"/>
|
||||
<xsl:sort select="HymnNumber" data-type="number"/>
|
||||
<xsl:call-template name="FormatHymnMultiple"/>
|
||||
</xsl:for-each>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:for-each select="../../Hymns/Hymn[HymnTuneName/HymnTuneID=current()/HymnTuneID]">
|
||||
<xsl:call-template name="FormatHymnSingle"/>
|
||||
</xsl:for-each>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
<xsl:if test="count(../../Works/Work[HymnTuneName/HymnTuneID=current()/HymnTuneID])>0">
|
||||
<br><b>Work(s):</b></br>
|
||||
</xsl:if>
|
||||
<xsl:for-each select="../../Works/Work[HymnTuneName/HymnTuneID=current()/HymnTuneID]">
|
||||
<xsl:sort select="Instrumentation/InstrumentationName"/>
|
||||
<xsl:sort select="Composer/ComposerName"/>
|
||||
<xsl:sort select="WorkName"/>
|
||||
<xsl:sort select="Book/BookTitle"/>
|
||||
<xsl:sort select="Book/Composer/ComposerName"/>
|
||||
<xsl:sort select="Book/PageNumber" data-type="number"/>
|
||||
<xsl:call-template name="FormatWorks"/>
|
||||
</xsl:for-each>
|
||||
</p>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatHymnTuneNameSingle">
|
||||
<br><b><xsl:text>Tune Name: </xsl:text><xsl:value-of select="HymnTuneName"/></b></br>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatHymnTuneNameMultiple">
|
||||
<br><b><xsl:text> </xsl:text><xsl:value-of select="HymnTuneName"/></b></br>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatHymnSingle">
|
||||
<br><b><xsl:text>Hymn: </xsl:text><xsl:value-of select="Hymnal/HymnalAbbreviation"/><xsl:value-of select="HymnNumber"/><xsl:text> </xsl:text><xsl:value-of select="HymnName"/></b></br>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatHymnMultiple">
|
||||
<br><b><xsl:text> </xsl:text><xsl:value-of select="Hymnal/HymnalAbbreviation"/><xsl:value-of select="HymnNumber"/><xsl:text> </xsl:text><xsl:value-of select="HymnName"/></b></br>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatWorks">
|
||||
<br>
|
||||
<xsl:value-of select="Composer/ComposerName"/>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:text>"</xsl:text><xsl:value-of select="WorkName"/>
|
||||
<xsl:if test="OpusInfo!=''"><xsl:text> - </xsl:text><xsl:value-of select="OpusInfo"/></xsl:if>
|
||||
<xsl:text>"</xsl:text>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:variable name="WorkComposerID" select="current()/ComposerID"/>
|
||||
<xsl:for-each select="Book">
|
||||
<xsl:call-template name="FormatBookTitleAndLocation">
|
||||
<xsl:with-param name="WorkComposerID" select="$WorkComposerID"/>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
<xsl:choose>
|
||||
<xsl:when test="PageNumber=''"/>
|
||||
<xsl:when test="PageNumber='0'"/>
|
||||
<xsl:otherwise>
|
||||
<xsl:text> p. </xsl:text><xsl:value-of select="PageNumber"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<i>
|
||||
<xsl:text> (</xsl:text>
|
||||
<xsl:value-of select="current()/Instrumentation/InstrumentationName"/>
|
||||
<xsl:text>)</xsl:text>
|
||||
</i>
|
||||
</br>
|
||||
<br/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatBookTitleAndLocation">
|
||||
<xsl:param name="WorkComposerID"/>
|
||||
<i><xsl:value-of select="BookTitle"/></i><xsl:text> </xsl:text>
|
||||
<xsl:choose>
|
||||
<xsl:when test="ComposerID=''">
|
||||
<xsl:choose>
|
||||
<xsl:when test="PublisherID=''">
|
||||
<xsl:text>(Collection)</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>(Collection - </xsl:text><xsl:value-of select="Publisher/PublisherName"/><xsl:text>)</xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:if test="ComposerID!=$WorkComposerID">
|
||||
<xsl:text>(filed under </xsl:text>
|
||||
<xsl:value-of select="current()/Composer/ComposerName"/>
|
||||
<xsl:text>)</xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:choose>
|
||||
<xsl:when test="PublisherStreamingAllowed=''">
|
||||
<xsl:text> - Publisher Streaming Allowed Unknown</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text> - Publisher Streaming Allowed </xsl:text><xsl:value-of select="Publisher/PublisherStreamingAllowed"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
151
OrganLitHymnTuneBasedByTune.xsl
Normal file
151
OrganLitHymnTuneBasedByTune.xsl
Normal file
@@ -0,0 +1,151 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
<xsl:output method="html" version="4.01" encoding="UTF-8" indent="yes"/>
|
||||
<xsl:param name="HymnTuneID"/>
|
||||
<xsl:template match="/">
|
||||
<html>
|
||||
<head>
|
||||
<title>OrganLit - Hymn Tune Names, Hymns and Works</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Hymn Tune Names, Hymns and Works</h1>
|
||||
<xsl:for-each select="//OrganLit/HymnTunes/HymnTune[HymnTuneID=$HymnTuneID]">
|
||||
<xsl:call-template name="FormatHymnTune"/>
|
||||
</xsl:for-each>
|
||||
<br/>
|
||||
<br/>
|
||||
<a href="index.htm">OrganLit Home</a>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatHymnTune">
|
||||
<p>
|
||||
<a name="#{current()/HymnTuneID}"/>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="count(../../HymnTuneNames/HymnTuneName[HymnTuneID=current()/HymnTuneID])>1">
|
||||
<br><b><xsl:text>Tune Name (with potential alternate names or spellings):</xsl:text></b></br>
|
||||
<xsl:for-each select="../../HymnTuneNames/HymnTuneName[HymnTuneID=current()/HymnTuneID]">
|
||||
<xsl:sort select="HymnTuneName"/>
|
||||
<xsl:call-template name="FormatHymnTuneNameMultiple"/>
|
||||
</xsl:for-each>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:for-each select="../../HymnTuneNames/HymnTuneName[HymnTuneID=current()/HymnTuneID]">
|
||||
<xsl:call-template name="FormatHymnTuneNameSingle"/>
|
||||
</xsl:for-each>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="count(../../Hymns/Hymn[HymnTuneName/HymnTuneID=current()/HymnTuneID])>1">
|
||||
<br/><br><b><xsl:text>Hymn(s):</xsl:text></b></br>
|
||||
<xsl:for-each select="../../Hymns/Hymn[HymnTuneName/HymnTuneID=current()/HymnTuneID]">
|
||||
<xsl:sort select="current()/HymnalAbbreviation"/>
|
||||
<xsl:sort select="HymnNumber" data-type="number"/>
|
||||
<xsl:call-template name="FormatHymnMultiple"/>
|
||||
</xsl:for-each>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:for-each select="../../Hymns/Hymn[HymnTuneName/HymnTuneID=current()/HymnTuneID]">
|
||||
<xsl:call-template name="FormatHymnSingle"/>
|
||||
</xsl:for-each>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
<xsl:if test="count(../../Works/Work[HymnTuneName/HymnTuneID=current()/HymnTuneID])>0">
|
||||
<br/><br><b>Work(s):</b></br>
|
||||
</xsl:if>
|
||||
<xsl:for-each select="../../Works/Work[HymnTuneName/HymnTuneID=current()/HymnTuneID]">
|
||||
<xsl:sort select="Instrumentation/InstrumentationName"/>
|
||||
<xsl:sort select="Composer/ComposerName"/>
|
||||
<xsl:sort select="WorkName"/>
|
||||
<xsl:sort select="Book/BookTitle"/>
|
||||
<xsl:sort select="Book/Composer/ComposerName"/>
|
||||
<xsl:sort select="Book/PageNumber" data-type="number"/>
|
||||
<xsl:call-template name="FormatWorks"/>
|
||||
</xsl:for-each>
|
||||
</p>
|
||||
<br/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatHymnTuneNameSingle">
|
||||
<br><b><xsl:text>Tune Name: </xsl:text><xsl:value-of select="HymnTuneName"/></b></br>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatHymnTuneNameMultiple">
|
||||
<br><b><xsl:text> </xsl:text><xsl:value-of select="HymnTuneName"/></b></br>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatHymnSingle">
|
||||
<br><b><xsl:text>Hymn: </xsl:text><xsl:value-of select="Hymnal/HymnalAbbreviation"/><xsl:value-of select="HymnNumber"/><xsl:text> </xsl:text><xsl:value-of select="HymnName"/></b></br>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatHymnMultiple">
|
||||
<br><b><xsl:text> </xsl:text><xsl:value-of select="Hymnal/HymnalAbbreviation"/><xsl:value-of select="HymnNumber"/><xsl:text> </xsl:text><xsl:value-of select="HymnName"/></b></br>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatWorks">
|
||||
<br>
|
||||
<xsl:value-of select="Composer/ComposerName"/>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:text>"</xsl:text><xsl:value-of select="WorkName"/>
|
||||
<xsl:if test="OpusInfo!=''"><xsl:text> - </xsl:text><xsl:value-of select="OpusInfo"/></xsl:if>
|
||||
<xsl:text>"</xsl:text>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:variable name="WorkComposerID" select="current()/ComposerID"/>
|
||||
<xsl:for-each select="Book">
|
||||
<xsl:call-template name="FormatBookTitleAndLocation">
|
||||
<xsl:with-param name="WorkComposerID" select="$WorkComposerID"/>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
<xsl:choose>
|
||||
<xsl:when test="PageNumber=''"/>
|
||||
<xsl:when test="PageNumber='0'"/>
|
||||
<xsl:otherwise>
|
||||
<xsl:text> p. </xsl:text><xsl:value-of select="PageNumber"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<i>
|
||||
<xsl:text> (</xsl:text>
|
||||
<xsl:value-of select="current()/Instrumentation/InstrumentationName"/>
|
||||
<xsl:text>)</xsl:text>
|
||||
</i>
|
||||
</br>
|
||||
<br/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatBookTitleAndLocation">
|
||||
<xsl:param name="WorkComposerID"/>
|
||||
<i><xsl:value-of select="BookTitle"/></i><xsl:text> </xsl:text>
|
||||
<xsl:choose>
|
||||
<xsl:when test="ComposerID=''">
|
||||
<xsl:choose>
|
||||
<xsl:when test="PublisherID=''">
|
||||
<xsl:text>(Collection)</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>(Collection - </xsl:text><xsl:value-of select="Publisher/PublisherName"/><xsl:text>)</xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:if test="ComposerID!=$WorkComposerID">
|
||||
<xsl:text>(filed under </xsl:text>
|
||||
<xsl:value-of select="current()/Composer/ComposerName"/>
|
||||
<xsl:text>)</xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:choose>
|
||||
<xsl:when test="PublisherStreamingAllowed=''">
|
||||
<xsl:text> - Publisher Streaming Allowed Unknown</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text> - Publisher Streaming Allowed </xsl:text><xsl:value-of select="Publisher/PublisherStreamingAllowed"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
51
OrganLitIndexByBook.xsl
Normal file
51
OrganLitIndexByBook.xsl
Normal file
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
<xsl:output method="html" version="4.01" encoding="UTF-8" indent="yes"/>
|
||||
<xsl:template match="/">
|
||||
<html>
|
||||
<head>
|
||||
<title>OrganLit - Index By Book</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Index By Book</h1>
|
||||
<xsl:for-each select="//OrganLit/Books/Book">
|
||||
<xsl:sort select="Composer/ComposerName"/>
|
||||
<xsl:sort select="current()[Composer/ComposerName='']/Publisher/PublisherName"/>
|
||||
<xsl:sort select="BookTitle"/>
|
||||
<xsl:call-template name="FormatBook"/>
|
||||
</xsl:for-each>
|
||||
<br/>
|
||||
<br/>
|
||||
<a href="index.htm">OrganLit Home</a>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatBook">
|
||||
<br>
|
||||
<a href="worksbybook.htm#{BookID}">
|
||||
<xsl:call-template name="FormatBookTitleAndLocation"/>
|
||||
</a>
|
||||
</br>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatBookTitleAndLocation">
|
||||
<i><xsl:value-of select="BookTitle"/></i><xsl:text> </xsl:text>
|
||||
<xsl:choose>
|
||||
<xsl:when test="ComposerID=''">
|
||||
<xsl:choose>
|
||||
<xsl:when test="PublisherID=''">
|
||||
<xsl:text>(Collection)</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>(Collection - </xsl:text><xsl:value-of select="Publisher/PublisherName"/><xsl:text>)</xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="current()/Composer/ComposerName"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
31
OrganLitIndexByComposer.xsl
Normal file
31
OrganLitIndexByComposer.xsl
Normal file
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
<xsl:output method="html" version="4.01" encoding="UTF-8" indent="yes"/>
|
||||
<xsl:template match="/">
|
||||
<html>
|
||||
<head>
|
||||
<title>OrganLit - Index By Composer</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Index By Composer</h1>
|
||||
<xsl:for-each select="//OrganLit/Composers/Composer">
|
||||
<xsl:sort select="ComposerName"/>
|
||||
<xsl:call-template name="FormatComposer"/>
|
||||
</xsl:for-each>
|
||||
<br/>
|
||||
<br/>
|
||||
<a href="index.htm">OrganLit Home</a>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatComposer">
|
||||
<br>
|
||||
<a href="worksbycomposer.htm#{ComposerID}">
|
||||
<xsl:value-of select="ComposerName"/>
|
||||
</a>
|
||||
</br>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
</xsl:stylesheet>
|
||||
41
OrganLitIndexByHymn.xsl
Normal file
41
OrganLitIndexByHymn.xsl
Normal file
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
<xsl:output method="html" version="4.01" encoding="UTF-8" indent="yes"/>
|
||||
<xsl:template match="/">
|
||||
<html>
|
||||
<head>
|
||||
<title>OrganLit - Index By Hymn</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Index By Hymn</h1>
|
||||
<xsl:for-each select="//OrganLit/Hymnals/Hymnal">
|
||||
<xsl:sort select="HymnalName"/>
|
||||
<xsl:call-template name="FormatHymnal"/>
|
||||
</xsl:for-each>
|
||||
<br/>
|
||||
<br/>
|
||||
<a href="index.htm">OrganLit Home</a>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatHymnal">
|
||||
<p><b><xsl:value-of select="current()/HymnalName"/></b></p>
|
||||
<xsl:for-each select="../../Hymns/Hymn[HymnalID=current()/HymnalID]">
|
||||
<xsl:sort select="HymnNumber" data-type="number"/>
|
||||
<xsl:call-template name="FormatHymn"/>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatHymn">
|
||||
<br>
|
||||
<a href="hymntuneworks-{current()/HymnTuneName/HymnTuneID}.htm">
|
||||
<xsl:value-of select="current()/Hymnal/HymnalAbbreviation"/>
|
||||
<xsl:value-of select="current()/HymnNumber"/>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:value-of select="current()/HymnName"/>
|
||||
</a>
|
||||
</br>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
26
OrganLitIndexByHymnTuneName.xsl
Normal file
26
OrganLitIndexByHymnTuneName.xsl
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
<xsl:output method="html" version="4.01" encoding="UTF-8" indent="yes"/>
|
||||
<xsl:template match="/">
|
||||
<html>
|
||||
<head>
|
||||
<title>OrganLit - Index By Hymn Tune Name</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Index By Hymn Tune Name</h1>
|
||||
<xsl:for-each select="//OrganLit/HymnTuneNames/HymnTuneName">
|
||||
<xsl:sort select="HymnTuneName"/>
|
||||
<xsl:call-template name="FormatHymnTuneName"/>
|
||||
</xsl:for-each>
|
||||
<br/>
|
||||
<br/>
|
||||
<a href="index.htm">OrganLit Home</a>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatHymnTuneName">
|
||||
<br><a href="hymntuneworks-{current()/HymnTuneID}.htm"><xsl:value-of select="current()/HymnTuneName"/></a></br>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
101
OrganLitNonHymnTuneBased.xsl
Normal file
101
OrganLitNonHymnTuneBased.xsl
Normal file
@@ -0,0 +1,101 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
<xsl:output method="html" version="4.01" encoding="UTF-8" indent="yes"/>
|
||||
<xsl:template match="/">
|
||||
<html>
|
||||
<head>
|
||||
<title>OrganLit - Non-Hymn-Tune-Based Works By Composer</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Organ Works Not based on HymnTunes</h1>
|
||||
<xsl:for-each select="//OrganLit/Composers/Composer">
|
||||
<xsl:sort select="ComposerName"/>
|
||||
<xsl:call-template name="FormatComposer">
|
||||
<xsl:with-param name="ComposerID" select="./ComposerID">
|
||||
</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
<br/>
|
||||
<br/>
|
||||
<a href="index.htm">OrganLit Home</a>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatComposer">
|
||||
<xsl:param name="ComposerID"/>
|
||||
<xsl:if test="count(../../Works/Work[ComposerID=$ComposerID and HymnTuneNameID=''])>0">
|
||||
<p><b><xsl:value-of select="ComposerName"/></b>
|
||||
<xsl:for-each select="../../Works/Work[ComposerID=$ComposerID and HymnTuneNameID='']">
|
||||
<xsl:sort select="WorkName"/>
|
||||
<xsl:sort select="Book/BookTitle"/>
|
||||
<xsl:sort select="Book/Composer/ComposerName"/>
|
||||
<xsl:sort select="Book/PageNumber" data-type="number"/>
|
||||
<xsl:call-template name="FormatWorksForComposer">
|
||||
<xsl:with-param name="WorkComposerID" select="$ComposerID"/>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
</p>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatWorksForComposer">
|
||||
<xsl:param name="WorkComposerID"/>
|
||||
<br><xsl:text>"</xsl:text><xsl:value-of select="WorkName"/>
|
||||
<xsl:if test="OpusInfo!=''"><xsl:text> - </xsl:text><xsl:value-of select="OpusInfo"/></xsl:if>
|
||||
<xsl:text>"</xsl:text>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:for-each select="current()/Book">
|
||||
<xsl:call-template name="FormatBookTitleAndLocation">
|
||||
<xsl:with-param name="WorkComposerID" select="$WorkComposerID"/>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
<xsl:choose>
|
||||
<xsl:when test="PageNumber=''"/>
|
||||
<xsl:when test="PageNumber='0'"/>
|
||||
<xsl:otherwise>
|
||||
<xsl:text> p. </xsl:text><xsl:value-of select="PageNumber"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<i>
|
||||
<xsl:text> (</xsl:text>
|
||||
<xsl:value-of select="current()/Instrumentation/InstrumentationName"/>
|
||||
<xsl:text>)</xsl:text>
|
||||
</i>
|
||||
</br>
|
||||
<br/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatBookTitleAndLocation">
|
||||
<xsl:param name="WorkComposerID"/>
|
||||
<i><xsl:value-of select="BookTitle"/></i><xsl:text> </xsl:text>
|
||||
<xsl:choose>
|
||||
<xsl:when test="ComposerID=''">
|
||||
<xsl:choose>
|
||||
<xsl:when test="PublisherID=''">
|
||||
<xsl:text>(Collection)</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>(Collection - </xsl:text><xsl:value-of select="Publisher/PublisherName"/><xsl:text>)</xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:if test="ComposerID!=$WorkComposerID">
|
||||
<xsl:text>(filed under </xsl:text>
|
||||
<xsl:value-of select="current()/Composer/ComposerName"/>
|
||||
<xsl:text>)</xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:choose>
|
||||
<xsl:when test="PublisherStreamingAllowed=''">
|
||||
<xsl:text> - Publisher Streaming Allowed Unknown</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text> - Publisher Streaming Allowed </xsl:text><xsl:value-of select="Publisher/PublisherStreamingAllowed"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
84
OrganLitWorksByBook.xsl
Normal file
84
OrganLitWorksByBook.xsl
Normal file
@@ -0,0 +1,84 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
<xsl:output method="html" version="4.01" encoding="UTF-8" indent="yes"/>
|
||||
<xsl:template match="/">
|
||||
<html>
|
||||
<head>
|
||||
<title>OrganLit - Works By Book</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Works By Book</h1>
|
||||
<xsl:for-each select="//OrganLit/Books/Book">
|
||||
<xsl:sort select="Composer/ComposerName"/>
|
||||
<xsl:sort select="current()[Composer/ComposerName='']/Publisher/PublisherName"/>
|
||||
<xsl:sort select="BookTitle"/>
|
||||
<xsl:call-template name="FormatBook"/>
|
||||
</xsl:for-each>
|
||||
<br/>
|
||||
<br/>
|
||||
<a href="index.htm">OrganLit Home</a>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatBook">
|
||||
<p>
|
||||
<br><b>
|
||||
<a name="{current()/BookID}"/>
|
||||
<xsl:call-template name="FormatBookTitleAndLocation"/>
|
||||
</b></br>
|
||||
<xsl:for-each select="../../Works/Work[BookID=current()/BookID]">
|
||||
<xsl:sort select="PageNumber" data-type="number"/>
|
||||
<xsl:call-template name="FormatWorks"/>
|
||||
</xsl:for-each>
|
||||
</p>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatWorks">
|
||||
<br>
|
||||
<xsl:choose>
|
||||
<xsl:when test="PageNumber=''"/>
|
||||
<xsl:when test="PageNumber='0'"/>
|
||||
<xsl:otherwise>
|
||||
<xsl:text> p. </xsl:text><xsl:value-of select="PageNumber"/><xsl:text> </xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:text>"</xsl:text><xsl:value-of select="WorkName"/>
|
||||
<xsl:if test="OpusInfo!=''"><xsl:text> - </xsl:text><xsl:value-of select="OpusInfo"/></xsl:if>
|
||||
<xsl:text>"</xsl:text>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:if test="ComposerID!=current()/Book/ComposerID">
|
||||
<xsl:value-of select="Composer/ComposerName"/>
|
||||
<xsl:text> </xsl:text>
|
||||
</xsl:if>
|
||||
</br>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatBookTitleAndLocation">
|
||||
<i><xsl:value-of select="BookTitle"/></i><xsl:text> </xsl:text>
|
||||
<xsl:choose>
|
||||
<xsl:when test="ComposerID=''">
|
||||
<xsl:choose>
|
||||
<xsl:when test="PublisherID=''">
|
||||
<xsl:text>(Collection)</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>(Collection - </xsl:text><xsl:value-of select="Publisher/PublisherName"/><xsl:text>)</xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="current()/Composer/ComposerName"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:choose>
|
||||
<xsl:when test="PublisherStreamingAllowed=''">
|
||||
<xsl:text> - Publisher Streaming Allowed Unknown</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text> - Publisher Streaming Allowed </xsl:text><xsl:value-of select="Publisher/PublisherStreamingAllowed"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
91
OrganLitWorksByComposer.xsl
Normal file
91
OrganLitWorksByComposer.xsl
Normal file
@@ -0,0 +1,91 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
|
||||
<xsl:output method="html" version="4.01" encoding="UTF-8" indent="yes"/>
|
||||
<xsl:template match="/">
|
||||
<html>
|
||||
<head>
|
||||
<title>OrganLit - Works By Composer</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Works By Composer</h1>
|
||||
<xsl:for-each select="//OrganLit/Composers/Composer">
|
||||
<xsl:sort select="ComposerName"/>
|
||||
<xsl:call-template name="FormatComposer"/>
|
||||
</xsl:for-each>
|
||||
<br/>
|
||||
<br/>
|
||||
<a href="index.htm">OrganLit Home</a>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatComposer">
|
||||
<p>
|
||||
<a name="{current()/ComposerID}"/>
|
||||
<br><b><xsl:value-of select="ComposerName"/></b></br>
|
||||
<xsl:for-each select="../../Works/Work[ComposerID=current()/ComposerID]">
|
||||
<xsl:sort select="WorkName"/>
|
||||
<xsl:sort select="Book/BookTitle"/>
|
||||
<xsl:sort select="Book/Composer/ComposerName"/>
|
||||
<xsl:sort select="Book/PageNumber" data-type="number"/>
|
||||
<xsl:call-template name="FormatWorks"/>
|
||||
</xsl:for-each>
|
||||
</p>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatWorks">
|
||||
<br>
|
||||
<xsl:text>"</xsl:text><xsl:value-of select="WorkName"/>
|
||||
<xsl:if test="OpusInfo!=''"><xsl:text> - </xsl:text><xsl:value-of select="OpusInfo"/></xsl:if>
|
||||
<xsl:text>"</xsl:text>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:variable name="WorkComposerID" select="current()/ComposerID"/>
|
||||
<xsl:for-each select="current()/Book">
|
||||
<xsl:call-template name="FormatBookTitleAndLocation">
|
||||
<xsl:with-param name="WorkComposerID" select="$WorkComposerID"/>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
<xsl:choose>
|
||||
<xsl:when test="PageNumber=''"/>
|
||||
<xsl:when test="PageNumber='0'"/>
|
||||
<xsl:otherwise>
|
||||
<xsl:text> p. </xsl:text><xsl:value-of select="PageNumber"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</br>
|
||||
<br/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="FormatBookTitleAndLocation">
|
||||
<xsl:param name="WorkComposerID"/>
|
||||
<i><xsl:value-of select="BookTitle"/></i><xsl:text> </xsl:text>
|
||||
<xsl:choose>
|
||||
<xsl:when test="ComposerID=''">
|
||||
<xsl:choose>
|
||||
<xsl:when test="PublisherID=''">
|
||||
<xsl:text>(Collection)</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>(Collection - </xsl:text><xsl:value-of select="Publisher/PublisherName"/><xsl:text>)</xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:if test="ComposerID!=$WorkComposerID">
|
||||
<xsl:text>(filed under </xsl:text>
|
||||
<xsl:value-of select="current()/Composer/ComposerName"/>
|
||||
<xsl:text>)</xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:choose>
|
||||
<xsl:when test="PublisherStreamingAllowed=''">
|
||||
<xsl:text> - Publisher Streaming Allowed Unknown</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text> - Publisher Streaming Allowed </xsl:text><xsl:value-of select="Publisher/PublisherStreamingAllowed"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
BIN
References/combotypeahead.dll
Normal file
BIN
References/combotypeahead.dll
Normal file
Binary file not shown.
23
app.config
Normal file
23
app.config
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<system.diagnostics>
|
||||
<sources>
|
||||
<!-- This section defines the logging configuration for My.Application.Log -->
|
||||
<source name="DefaultSource" switchName="DefaultSwitch">
|
||||
<listeners>
|
||||
<add name="FileLog"/>
|
||||
<!-- Uncomment the below section to write to the Application Event Log -->
|
||||
<!--<add name="EventLog"/>-->
|
||||
</listeners>
|
||||
</source>
|
||||
</sources>
|
||||
<switches>
|
||||
<add name="DefaultSwitch" value="Information"/>
|
||||
</switches>
|
||||
<sharedListeners>
|
||||
<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/>
|
||||
<!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
|
||||
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
|
||||
</sharedListeners>
|
||||
</system.diagnostics>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/></startup></configuration>
|
||||
553
clsBook.vb
Normal file
553
clsBook.vb
Normal file
@@ -0,0 +1,553 @@
|
||||
Imports System.Data
|
||||
Imports System.Text
|
||||
Imports System.Windows.Forms
|
||||
Imports System.Xml
|
||||
|
||||
Public Class clsBook
|
||||
Implements ICloneable
|
||||
|
||||
Private mguidBookID As Guid
|
||||
Private m_objComposer As clsComposer
|
||||
Private m_objInstrumentation As clsInstrumentation
|
||||
Private m_strBookTitle As String
|
||||
Private m_objPublisher As clsPublisher
|
||||
Private m_blnObjectAlreadyPersisted As Boolean
|
||||
|
||||
Public Sub New()
|
||||
mguidBookID = Guid.NewGuid
|
||||
m_objComposer = Nothing
|
||||
m_objInstrumentation = Nothing
|
||||
m_strBookTitle = ""
|
||||
m_objPublisher = Nothing
|
||||
m_blnObjectAlreadyPersisted = False
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal objComposer As clsComposer, ByVal strBookTitle As String, ByVal objInstrumentation As clsInstrumentation, ByVal objPublisher As clsPublisher)
|
||||
mguidBookID = Guid.NewGuid
|
||||
m_objComposer = objComposer
|
||||
m_objInstrumentation = objInstrumentation
|
||||
m_strBookTitle = strBookTitle
|
||||
m_objPublisher = objPublisher
|
||||
m_blnObjectAlreadyPersisted = False
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal guidBookID As Guid)
|
||||
mguidBookID = guidBookID
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_book"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmBookID As New SqlClient.SqlParameter
|
||||
prmBookID.ParameterName = "@book_id"
|
||||
prmBookID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmBookID.Size = 5
|
||||
prmBookID.Value = guidBookID
|
||||
ldbcmdCommand.Parameters.Add(prmBookID)
|
||||
|
||||
Dim ldbdsBooks As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsBooks.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
ldbrwRow = ldbdsBooks.Tables(0).Rows(0)
|
||||
PopulateFromDBRow(ldbrwRow)
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
MyGlobals.AddCachedObject(Me, Me.BookID.ToString)
|
||||
End If
|
||||
ldbdsBooks.Clear()
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal ldbrwRow As DataRow)
|
||||
PopulateFromDBRow(ldbrwRow)
|
||||
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
MyGlobals.AddCachedObject(Me, Me.BookID.ToString)
|
||||
End Sub
|
||||
|
||||
Private Sub PopulateFromDBRow(ByVal ldbrwRow As DataRow)
|
||||
mguidBookID = CType(ldbrwRow.Item("book_id"), Guid)
|
||||
|
||||
If ldbrwRow.IsNull("composer_id") Then
|
||||
m_objComposer = Nothing
|
||||
Else
|
||||
Dim guidComposerID As Guid = CType(ldbrwRow.Item("composer_id"), Guid)
|
||||
If MyGlobals.CachedObjectExists(guidComposerID.ToString) Then
|
||||
m_objComposer = CType(MyGlobals.CachedObjectRetrieve(guidComposerID.ToString), clsComposer)
|
||||
Else
|
||||
m_objComposer = New clsComposer(guidComposerID)
|
||||
End If
|
||||
End If
|
||||
|
||||
If ldbrwRow.IsNull("instrumentation_id") Then
|
||||
m_objInstrumentation = Nothing
|
||||
Else
|
||||
Dim guidInstrumentationID As Guid = CType(ldbrwRow.Item("instrumentation_id"), Guid)
|
||||
If MyGlobals.CachedObjectExists(guidInstrumentationID.ToString) Then
|
||||
m_objInstrumentation = CType(MyGlobals.CachedObjectRetrieve(guidInstrumentationID.ToString), clsInstrumentation)
|
||||
Else
|
||||
m_objInstrumentation = New clsInstrumentation(guidInstrumentationID)
|
||||
End If
|
||||
End If
|
||||
|
||||
m_strBookTitle = CType(ldbrwRow.Item("book_title"), String)
|
||||
|
||||
If ldbrwRow.IsNull("publisher_id") Then
|
||||
m_objPublisher = Nothing
|
||||
Else
|
||||
Dim guidPublisherID As Guid = CType(ldbrwRow.Item("publisher_id"), Guid)
|
||||
If MyGlobals.CachedObjectExists(guidPublisherID.ToString) Then
|
||||
m_objPublisher = CType(MyGlobals.CachedObjectRetrieve(guidPublisherID.ToString), clsPublisher)
|
||||
Else
|
||||
m_objPublisher = New clsPublisher(guidPublisherID)
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Function Delete() As Boolean
|
||||
Try
|
||||
MyGlobals.RemoveCachedObject(Me.BookID.ToString)
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "del_book"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmBookID As New SqlClient.SqlParameter
|
||||
prmBookID.ParameterName = "@book_id"
|
||||
prmBookID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmBookID.Size = 5
|
||||
prmBookID.Value = mguidBookID
|
||||
ldbcmdCommand.Parameters.Add(prmBookID)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Function Save() As Boolean
|
||||
Try
|
||||
If Not m_objComposer Is Nothing Then
|
||||
If Not m_objComposer.ItemAlreadyPersisted Then
|
||||
m_objComposer.Save()
|
||||
End If
|
||||
End If
|
||||
If Not m_objInstrumentation Is Nothing Then
|
||||
If Not m_objInstrumentation.ItemAlreadyPersisted Then
|
||||
m_objInstrumentation.Save()
|
||||
End If
|
||||
End If
|
||||
If Not m_objPublisher Is Nothing Then
|
||||
If Not m_objPublisher.ItemAlreadyPersisted Then
|
||||
m_objPublisher.Save()
|
||||
End If
|
||||
End If
|
||||
|
||||
MyGlobals.AddCachedObject(Me, Me.BookID.ToString)
|
||||
|
||||
If m_blnObjectAlreadyPersisted Then
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "upd_book"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmBookID As New SqlClient.SqlParameter
|
||||
prmBookID.ParameterName = "@book_id"
|
||||
prmBookID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmComposerID.Size = 5
|
||||
prmBookID.Value = mguidBookID
|
||||
ldbcmdCommand.Parameters.Add(prmBookID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmComposerID As New SqlClient.SqlParameter
|
||||
prmComposerID.ParameterName = "@composer_id"
|
||||
prmComposerID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmComposerID.Size = 5
|
||||
If m_objComposer Is Nothing Then
|
||||
prmComposerID.Value = DBNull.Value
|
||||
Else
|
||||
prmComposerID.Value = m_objComposer.ComposerID
|
||||
End If
|
||||
ldbcmdCommand.Parameters.Add(prmComposerID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmInstrumentationID As New SqlClient.SqlParameter
|
||||
prmInstrumentationID.ParameterName = "@instrumentation_id"
|
||||
prmInstrumentationID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmInstrumentationID.Size = 5
|
||||
If m_objInstrumentation Is Nothing Then
|
||||
prmInstrumentationID.Value = DBNull.Value
|
||||
Else
|
||||
prmInstrumentationID.Value = m_objInstrumentation.InstrumentationID
|
||||
End If
|
||||
ldbcmdCommand.Parameters.Add(prmInstrumentationID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmBookTitle As New SqlClient.SqlParameter
|
||||
prmBookTitle.ParameterName = "@book_title"
|
||||
prmBookTitle.SqlDbType = SqlDbType.VarChar
|
||||
prmBookTitle.Size = MyGlobals.BOOK_TITLE_SIZE
|
||||
prmBookTitle.Value = m_strBookTitle
|
||||
ldbcmdCommand.Parameters.Add(prmBookTitle)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmPublisherID As New SqlClient.SqlParameter
|
||||
prmPublisherID.ParameterName = "@publisher_id"
|
||||
prmPublisherID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmPublisherID.Size = 5
|
||||
If m_objPublisher Is Nothing Then
|
||||
prmPublisherID.Value = DBNull.Value
|
||||
Else
|
||||
prmPublisherID.Value = m_objPublisher.PublisherID
|
||||
End If
|
||||
ldbcmdCommand.Parameters.Add(prmPublisherID)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "ins_book"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmBookID As New SqlClient.SqlParameter
|
||||
prmBookID.ParameterName = "@book_id"
|
||||
prmBookID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmComposerID.Size = 5
|
||||
prmBookID.Value = mguidBookID
|
||||
ldbcmdCommand.Parameters.Add(prmBookID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmComposerID As New SqlClient.SqlParameter
|
||||
prmComposerID.ParameterName = "@composer_id"
|
||||
prmComposerID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmComposerID.Size = 5
|
||||
If m_objComposer Is Nothing Then
|
||||
prmComposerID.Value = DBNull.Value
|
||||
Else
|
||||
prmComposerID.Value = m_objComposer.ComposerID
|
||||
End If
|
||||
ldbcmdCommand.Parameters.Add(prmComposerID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmInstrumentationID As New SqlClient.SqlParameter
|
||||
prmInstrumentationID.ParameterName = "@instrumentation_id"
|
||||
prmInstrumentationID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmInstrumentationID.Size = 5
|
||||
If m_objInstrumentation Is Nothing Then
|
||||
prmInstrumentationID.Value = DBNull.Value
|
||||
Else
|
||||
prmInstrumentationID.Value = m_objInstrumentation.InstrumentationID
|
||||
End If
|
||||
ldbcmdCommand.Parameters.Add(prmInstrumentationID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmBookTitle As New SqlClient.SqlParameter
|
||||
prmBookTitle.ParameterName = "@book_title"
|
||||
prmBookTitle.SqlDbType = SqlDbType.VarChar
|
||||
prmBookTitle.Size = MyGlobals.BOOK_TITLE_SIZE
|
||||
prmBookTitle.Value = m_strBookTitle
|
||||
ldbcmdCommand.Parameters.Add(prmBookTitle)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmPublisherID As New SqlClient.SqlParameter
|
||||
prmPublisherID.ParameterName = "@publisher_id"
|
||||
prmPublisherID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmPublisherID.Size = 5
|
||||
If m_objPublisher Is Nothing Then
|
||||
prmPublisherID.Value = DBNull.Value
|
||||
Else
|
||||
prmPublisherID.Value = m_objPublisher.PublisherID
|
||||
End If
|
||||
ldbcmdCommand.Parameters.Add(prmPublisherID)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End If
|
||||
Catch e As SqlClient.SqlException
|
||||
MessageBox.Show(e.Message)
|
||||
Return False
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Property BookID() As Guid
|
||||
Get
|
||||
Return mguidBookID
|
||||
End Get
|
||||
Set(ByVal Value As Guid)
|
||||
mguidBookID = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property Composer() As clsComposer
|
||||
Get
|
||||
Return m_objComposer
|
||||
End Get
|
||||
Set(ByVal Value As clsComposer)
|
||||
m_objComposer = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property Instrumentation() As clsInstrumentation
|
||||
Get
|
||||
Return m_objInstrumentation
|
||||
End Get
|
||||
Set(ByVal Value As clsInstrumentation)
|
||||
m_objInstrumentation = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property BookTitle() As String
|
||||
Get
|
||||
Return m_strBookTitle
|
||||
End Get
|
||||
Set(ByVal Value As String)
|
||||
m_strBookTitle = Value.Trim
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property Publisher() As clsPublisher
|
||||
Get
|
||||
Return m_objPublisher
|
||||
End Get
|
||||
Set(ByVal Value As clsPublisher)
|
||||
m_objPublisher = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property ItemAlreadyPersisted() As Boolean
|
||||
Get
|
||||
Return m_blnObjectAlreadyPersisted
|
||||
End Get
|
||||
Set(ByVal Value As Boolean)
|
||||
m_blnObjectAlreadyPersisted = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Function Clone() As Object Implements ICloneable.Clone
|
||||
Dim lobjReturnValue As New clsBook
|
||||
lobjReturnValue.BookID = Me.BookID
|
||||
lobjReturnValue.Composer = Me.Composer
|
||||
lobjReturnValue.Instrumentation = Me.Instrumentation
|
||||
lobjReturnValue.BookTitle = Me.BookTitle
|
||||
lobjReturnValue.Publisher = Me.Publisher
|
||||
lobjReturnValue.ItemAlreadyPersisted = Me.ItemAlreadyPersisted
|
||||
|
||||
Return lobjReturnValue
|
||||
End Function
|
||||
|
||||
Public Function StateIsIdentical(ByVal lobjOtherBook As clsBook) As Boolean
|
||||
Dim blnResult As Boolean
|
||||
|
||||
If Me.BookID.Equals(lobjOtherBook.BookID) _
|
||||
AndAlso Me.BookTitle = lobjOtherBook.BookTitle Then
|
||||
blnResult = True
|
||||
|
||||
If Me.Composer Is Nothing Then
|
||||
If lobjOtherBook.Composer Is Nothing Then
|
||||
'OK
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
If lobjOtherBook.Composer Is Nothing Then
|
||||
Return False
|
||||
Else
|
||||
blnResult = Me.Composer.ComposerID.Equals(lobjOtherBook.Composer.ComposerID)
|
||||
End If
|
||||
End If
|
||||
|
||||
If Not blnResult Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Me.Instrumentation Is Nothing Then
|
||||
If lobjOtherBook.Instrumentation Is Nothing Then
|
||||
'OK
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
If lobjOtherBook.Instrumentation Is Nothing Then
|
||||
Return False
|
||||
Else
|
||||
blnResult = Me.Instrumentation.InstrumentationID.Equals(lobjOtherBook.Instrumentation.InstrumentationID)
|
||||
End If
|
||||
End If
|
||||
|
||||
If Not blnResult Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Me.Publisher Is Nothing Then
|
||||
If lobjOtherBook.Publisher Is Nothing Then
|
||||
'OK
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
If lobjOtherBook.Publisher Is Nothing Then
|
||||
Return False
|
||||
Else
|
||||
blnResult = Me.Publisher.PublisherID.Equals(lobjOtherBook.Publisher.PublisherID)
|
||||
End If
|
||||
End If
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return blnResult
|
||||
|
||||
End Function
|
||||
|
||||
Public Function Validate(ByRef lstrErrorString As String) As Boolean
|
||||
lstrErrorString = ""
|
||||
If Me.BookTitle.Length = 0 Then
|
||||
lstrErrorString = "Book Title is required"
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Me.Publisher Is Nothing Then
|
||||
lstrErrorString = "Publisher is required"
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Public Function OKToDelete(ByRef lstrReferencedByString As String) As Boolean
|
||||
Dim lblnReturnValue As Boolean
|
||||
|
||||
lblnReturnValue = True
|
||||
|
||||
lstrReferencedByString = ""
|
||||
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_book_isreferenced"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmBookID As New SqlClient.SqlParameter
|
||||
prmBookID.ParameterName = "@book_id"
|
||||
prmBookID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmBookID.Size = 5
|
||||
prmBookID.Value = mguidBookID
|
||||
ldbcmdCommand.Parameters.Add(prmBookID)
|
||||
|
||||
Dim ldbdsBooks As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsBooks.Tables(0).Rows.Count > 0 Then
|
||||
lblnReturnValue = False
|
||||
|
||||
Dim ldbrwRow As DataRow
|
||||
For Each ldbrwRow In ldbdsBooks.Tables(0).Rows
|
||||
If Not ldbrwRow.IsNull("table_referencing_instance") Then
|
||||
If lstrReferencedByString.Length = 0 Then
|
||||
lstrReferencedByString = CType(ldbrwRow.Item("table_referencing_instance"), String) + "(s)"
|
||||
Else
|
||||
lstrReferencedByString = lstrReferencedByString + " and " + CType(ldbrwRow.Item("table_referencing_instance"), String) + "(s)"
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
|
||||
End If
|
||||
ldbdsBooks.Clear()
|
||||
|
||||
Return lblnReturnValue
|
||||
|
||||
End Function
|
||||
|
||||
Public Overrides Function ToString() As String
|
||||
Dim strReturnString As New StringBuilder
|
||||
|
||||
If m_objComposer Is Nothing Then
|
||||
strReturnString.Append(MyGlobals.COLLECTION_STRING)
|
||||
Else
|
||||
strReturnString.Append(m_objComposer.ComposerName)
|
||||
End If
|
||||
|
||||
strReturnString.Append(" - ")
|
||||
strReturnString.Append(m_strBookTitle)
|
||||
|
||||
Return strReturnString.ToString
|
||||
End Function
|
||||
|
||||
Public Sub WriteXML(ByRef objXMLWriter As XmlTextWriter)
|
||||
objXMLWriter.WriteStartElement("Book")
|
||||
|
||||
objXMLWriter.WriteElementString("BookID", Me.BookID.ToString)
|
||||
objXMLWriter.WriteElementString("BookTitle", Me.BookTitle)
|
||||
If Me.Composer Is Nothing Then
|
||||
objXMLWriter.WriteElementString("ComposerID", "")
|
||||
Else
|
||||
objXMLWriter.WriteElementString("ComposerID", Me.Composer.ComposerID.ToString)
|
||||
Me.Composer.WriteXML(objXMLWriter)
|
||||
End If
|
||||
If Me.Instrumentation Is Nothing Then
|
||||
objXMLWriter.WriteElementString("InstrumentationID", "")
|
||||
Else
|
||||
objXMLWriter.WriteElementString("InstrumentationID", Me.Instrumentation.InstrumentationID.ToString)
|
||||
Me.Instrumentation.WriteXML(objXMLWriter)
|
||||
End If
|
||||
objXMLWriter.WriteElementString("BookPublisherID", Me.Publisher.PublisherID.ToString)
|
||||
Me.Publisher.WriteXML(objXMLWriter)
|
||||
|
||||
objXMLWriter.WriteEndElement()
|
||||
End Sub
|
||||
|
||||
Public Shared Function GetAllBooks() As System.Collections.Generic.List(Of clsBook)
|
||||
|
||||
'Preload to cache
|
||||
clsComposer.AddAllComposersToCache()
|
||||
clsInstrumentation.AddAllInstrumentationsToCache()
|
||||
clsPublisher.AddAllPublishersToCache()
|
||||
|
||||
Dim lguidBookID As Guid
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
Dim lobjBook As clsBook
|
||||
Dim lcolBooks As New System.Collections.Generic.List(Of clsBook)
|
||||
|
||||
ldbcmdCommand.CommandText = "sel_book_all"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
|
||||
Dim ldbdsBooks As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsBooks.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
For Each ldbrwRow In ldbdsBooks.Tables(0).Rows
|
||||
lguidBookID = CType(ldbrwRow.Item("book_id"), Guid)
|
||||
|
||||
If MyGlobals.CachedObjectExists(lguidBookID.ToString) Then
|
||||
lobjBook = CType(MyGlobals.CachedObjectRetrieve(lguidBookID.ToString), clsBook)
|
||||
Else
|
||||
'lobjBook = New clsBook(lguidBookID)
|
||||
lobjBook = New clsBook(ldbrwRow)
|
||||
End If
|
||||
lcolBooks.Add(lobjBook)
|
||||
Next
|
||||
End If
|
||||
ldbdsBooks.Clear()
|
||||
|
||||
Return lcolBooks
|
||||
End Function
|
||||
|
||||
Public Shared Sub AddAllBooksToCache()
|
||||
If MyGlobals.g_objObjectTypesCached.Contains("Books") = False Then
|
||||
GetAllBooks()
|
||||
MyGlobals.g_objObjectTypesCached.Add("Books")
|
||||
End If
|
||||
End Sub
|
||||
End Class
|
||||
371
clsComposer.vb
Normal file
371
clsComposer.vb
Normal file
@@ -0,0 +1,371 @@
|
||||
Imports System.Data
|
||||
Imports System.Xml
|
||||
|
||||
Public Class clsComposer
|
||||
Implements ICloneable
|
||||
|
||||
Private mguidComposerID As Guid
|
||||
Private mstrComposerName As String
|
||||
Private m_blnObjectAlreadyPersisted As Boolean
|
||||
|
||||
Public Sub New()
|
||||
mguidComposerID = Guid.NewGuid
|
||||
mstrComposerName = ""
|
||||
m_blnObjectAlreadyPersisted = False
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal lstrComposerName As String)
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_composer_by_name"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmComposerName As New SqlClient.SqlParameter
|
||||
prmComposerName.ParameterName = "@composer_name"
|
||||
prmComposerName.SqlDbType = SqlDbType.VarChar
|
||||
prmComposerName.Size = MyGlobals.COMPOSER_NAME_SIZE
|
||||
prmComposerName.Value = lstrComposerName
|
||||
ldbcmdCommand.Parameters.Add(prmComposerName)
|
||||
|
||||
Dim ldbdsComposers As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsComposers.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
ldbrwRow = ldbdsComposers.Tables(0).Rows(0)
|
||||
|
||||
PopulateFromDBRow(ldbrwRow)
|
||||
|
||||
ldbdsComposers.Clear()
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
Else
|
||||
ldbdsComposers.Clear()
|
||||
mguidComposerID = Guid.NewGuid
|
||||
mstrComposerName = lstrComposerName.Trim
|
||||
m_blnObjectAlreadyPersisted = False
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal lguidComposerID As Guid)
|
||||
mguidComposerID = lguidComposerID
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_composer"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmComposerID As New SqlClient.SqlParameter
|
||||
prmComposerID.ParameterName = "@composer_id"
|
||||
prmComposerID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmComposerID.Size = 5
|
||||
prmComposerID.Value = lguidComposerID
|
||||
ldbcmdCommand.Parameters.Add(prmComposerID)
|
||||
|
||||
Dim ldbdsComposers As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsComposers.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
ldbrwRow = ldbdsComposers.Tables(0).Rows(0)
|
||||
PopulateFromDBRow(ldbrwRow)
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
MyGlobals.AddCachedObject(Me, Me.ComposerID.ToString)
|
||||
End If
|
||||
ldbdsComposers.Clear()
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal ldbrwRow As DataRow)
|
||||
PopulateFromDBRow(ldbrwRow)
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
MyGlobals.AddCachedObject(Me, Me.ComposerID.ToString)
|
||||
End Sub
|
||||
|
||||
Private Sub PopulateFromDBRow(ByVal ldbrwRow As DataRow)
|
||||
mguidComposerID = CType(ldbrwRow.Item("composer_id"), Guid)
|
||||
|
||||
mstrComposerName = CType(ldbrwRow.Item("composer_name"), String)
|
||||
End Sub
|
||||
|
||||
Public Function Delete() As Boolean
|
||||
Try
|
||||
MyGlobals.RemoveCachedObject(Me.ComposerID.ToString)
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "del_composer"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmComposerID As New SqlClient.SqlParameter
|
||||
prmComposerID.ParameterName = "@composer_id"
|
||||
prmComposerID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmComposerID.Size = 5
|
||||
prmComposerID.Value = mguidComposerID
|
||||
ldbcmdCommand.Parameters.Add(prmComposerID)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
m_blnObjectAlreadyPersisted = False
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Function Save() As Boolean
|
||||
Try
|
||||
MyGlobals.AddCachedObject(Me, Me.ComposerID.ToString)
|
||||
|
||||
If m_blnObjectAlreadyPersisted Then
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "upd_composer"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmComposerID As New SqlClient.SqlParameter
|
||||
prmComposerID.ParameterName = "@composer_id"
|
||||
prmComposerID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmComposerID.Size = 5
|
||||
prmComposerID.Value = mguidComposerID
|
||||
ldbcmdCommand.Parameters.Add(prmComposerID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmComposerName As New SqlClient.SqlParameter
|
||||
prmComposerName.ParameterName = "@composer_name"
|
||||
prmComposerName.SqlDbType = SqlDbType.VarChar
|
||||
prmComposerName.Size = MyGlobals.COMPOSER_NAME_SIZE
|
||||
prmComposerName.Value = mstrComposerName
|
||||
ldbcmdCommand.Parameters.Add(prmComposerName)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "ins_composer"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmComposerID As New SqlClient.SqlParameter
|
||||
prmComposerID.ParameterName = "@composer_id"
|
||||
prmComposerID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmComposerID.Size = 5
|
||||
prmComposerID.Value = mguidComposerID
|
||||
ldbcmdCommand.Parameters.Add(prmComposerID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmComposerName As New SqlClient.SqlParameter
|
||||
prmComposerName.ParameterName = "@composer_name"
|
||||
prmComposerName.SqlDbType = SqlDbType.VarChar
|
||||
prmComposerName.Size = MyGlobals.COMPOSER_NAME_SIZE
|
||||
prmComposerName.Value = mstrComposerName
|
||||
ldbcmdCommand.Parameters.Add(prmComposerName)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End If
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Function DuplicateExists(ByVal lstrComposerNameToCheck As String) As Boolean
|
||||
Try
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_composer_by_name"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmComposerName As New SqlClient.SqlParameter
|
||||
prmComposerName.ParameterName = "@composer_name"
|
||||
prmComposerName.SqlDbType = SqlDbType.VarChar
|
||||
prmComposerName.Size = MyGlobals.COMPOSER_NAME_SIZE
|
||||
prmComposerName.Value = lstrComposerNameToCheck
|
||||
ldbcmdCommand.Parameters.Add(prmComposerName)
|
||||
|
||||
Dim ldbdsComposers As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsComposers.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
For Each ldbrwRow In ldbdsComposers.Tables(0).Rows
|
||||
If mguidComposerID.Equals(CType(ldbrwRow.Item("composer_id"), Guid)) Then
|
||||
'OK
|
||||
Else
|
||||
ldbdsComposers.Clear()
|
||||
Return True
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
ldbdsComposers.Clear()
|
||||
Return False
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Property ComposerID() As Guid
|
||||
Get
|
||||
Return mguidComposerID
|
||||
End Get
|
||||
|
||||
Set(ByVal lguidValue As Guid)
|
||||
mguidComposerID = lguidValue
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property ComposerName() As String
|
||||
Get
|
||||
Return mstrComposerName
|
||||
End Get
|
||||
|
||||
Set(ByVal sValue As String)
|
||||
mstrComposerName = sValue.Trim
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property ItemAlreadyPersisted() As Boolean
|
||||
Get
|
||||
Return m_blnObjectAlreadyPersisted
|
||||
End Get
|
||||
Set(ByVal Value As Boolean)
|
||||
m_blnObjectAlreadyPersisted = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Function Clone() As Object Implements ICloneable.Clone
|
||||
Dim lobjReturnValue As New clsComposer
|
||||
lobjReturnValue.ComposerID = Me.ComposerID
|
||||
lobjReturnValue.ComposerName = Me.ComposerName
|
||||
lobjReturnValue.ItemAlreadyPersisted = Me.ItemAlreadyPersisted
|
||||
|
||||
Return lobjReturnValue
|
||||
End Function
|
||||
|
||||
Public Function StateIsIdentical(ByVal lobjOtherComposer As clsComposer) As Boolean
|
||||
If Me.ComposerID.Equals(lobjOtherComposer.ComposerID) _
|
||||
AndAlso Me.ComposerName = lobjOtherComposer.ComposerName Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End Function
|
||||
|
||||
Public Function Validate(ByRef lstrErrorString As String) As Boolean
|
||||
lstrErrorString = ""
|
||||
If Me.ComposerName.Length = 0 Then
|
||||
lstrErrorString = "Composer Name is required"
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Me.DuplicateExists(Me.ComposerName) Then
|
||||
lstrErrorString = "Given Composer Name already exists"
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Public Function OKToDelete(ByRef lstrReferencedByString As String) As Boolean
|
||||
Dim lblnReturnValue As Boolean
|
||||
|
||||
lblnReturnValue = True
|
||||
|
||||
lstrReferencedByString = ""
|
||||
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_composer_isreferenced"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmComposerID As New SqlClient.SqlParameter
|
||||
prmComposerID.ParameterName = "@composer_id"
|
||||
prmComposerID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmComposerID.Size = 5
|
||||
prmComposerID.Value = mguidComposerID
|
||||
ldbcmdCommand.Parameters.Add(prmComposerID)
|
||||
|
||||
Dim ldbdsComposers As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsComposers.Tables(0).Rows.Count > 0 Then
|
||||
lblnReturnValue = False
|
||||
|
||||
Dim ldbrwRow As DataRow
|
||||
For Each ldbrwRow In ldbdsComposers.Tables(0).Rows
|
||||
If Not ldbrwRow.IsNull("table_referencing_instance") Then
|
||||
If lstrReferencedByString.Length = 0 Then
|
||||
lstrReferencedByString = CType(ldbrwRow.Item("table_referencing_instance"), String) + "(s)"
|
||||
Else
|
||||
lstrReferencedByString = lstrReferencedByString + " and " + CType(ldbrwRow.Item("table_referencing_instance"), String) + "(s)"
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
|
||||
End If
|
||||
ldbdsComposers.Clear()
|
||||
|
||||
Return lblnReturnValue
|
||||
|
||||
End Function
|
||||
|
||||
Public Overrides Function ToString() As String
|
||||
Return mstrComposerName
|
||||
End Function
|
||||
|
||||
Public Sub WriteXML(ByRef objXMLWriter As XmlTextWriter)
|
||||
objXMLWriter.WriteStartElement("Composer")
|
||||
|
||||
objXMLWriter.WriteElementString("ComposerID", Me.ComposerID.ToString)
|
||||
objXMLWriter.WriteElementString("ComposerName", Me.ComposerName)
|
||||
|
||||
objXMLWriter.WriteEndElement()
|
||||
End Sub
|
||||
|
||||
Public Shared Function GetAllComposers() As System.Collections.Generic.List(Of clsComposer)
|
||||
Dim lguidComposerID As Guid
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
Dim lobjComposer As clsComposer
|
||||
Dim lcolComposers As New System.Collections.Generic.List(Of clsComposer)
|
||||
|
||||
ldbcmdCommand.CommandText = "sel_composer_all"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
Dim ldbdsComposers As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsComposers.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
For Each ldbrwRow In ldbdsComposers.Tables(0).Rows
|
||||
lguidComposerID = CType(ldbrwRow.Item("composer_id"), Guid)
|
||||
|
||||
If MyGlobals.CachedObjectExists(lguidComposerID.ToString) Then
|
||||
lobjComposer = CType(MyGlobals.CachedObjectRetrieve(lguidComposerID.ToString), clsComposer)
|
||||
Else
|
||||
'lobjComposer = New clsComposer(lguidComposerID)
|
||||
lobjComposer = New clsComposer(ldbrwRow)
|
||||
End If
|
||||
lcolComposers.Add(lobjComposer)
|
||||
Next
|
||||
End If
|
||||
ldbdsComposers.Clear()
|
||||
|
||||
Return lcolComposers
|
||||
End Function
|
||||
|
||||
Public Shared Sub AddAllComposersToCache()
|
||||
If MyGlobals.g_objObjectTypesCached.Contains("Composers") = False Then
|
||||
GetAllComposers()
|
||||
MyGlobals.g_objObjectTypesCached.Add("Composers")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
75
clsDatabaseLayer.vb
Normal file
75
clsDatabaseLayer.vb
Normal file
@@ -0,0 +1,75 @@
|
||||
Imports System.Data
|
||||
Imports System.Windows.Forms
|
||||
|
||||
Public Class clsDatabaseLayer
|
||||
Private m_dbcnctConnection As SqlClient.SqlConnection
|
||||
|
||||
Public Function OpenDatabaseConnection() As Boolean
|
||||
Try
|
||||
m_dbcnctConnection = New SqlClient.SqlConnection
|
||||
'm_dbcnctConnection.ConnectionString = "Persist Security Info=False;Integrated Security=SSPI;database=OrganLit;server=REUSS\SQLEXPRESS;Connect Timeout=30"
|
||||
'm_dbcnctConnection.ConnectionString = "Persist Security Info=False;Integrated Security=False;User ID=OrganLitDBLogin;Password=OrganLitDBL0gin7;database=OrganLit;server=REUSS\SQLEXPRESS;Connect Timeout=30"
|
||||
'm_dbcnctConnection.ConnectionString = "Persist Security Info=False;Integrated Security=False;User ID=OrganLitDBLogin;Password=OrganLitDBL0gin7;database=OrganLit;server=SIRJON\REUSSSQL;Connect Timeout=30"
|
||||
'm_dbcnctConnection.ConnectionString = "Persist Security Info=False;Integrated Security=False;User ID=OrganLitDBLogin;Password=OrganLitDBL0gin7;database=OrganLit;server=SIRJ\REUSSSQL;Connect Timeout=30"
|
||||
m_dbcnctConnection.ConnectionString = "Persist Security Info=False;Integrated Security=True;database=OrganLit;server=SIRJ\REUSSSQL;Connect Timeout=30"
|
||||
m_dbcnctConnection.Open()
|
||||
Return True
|
||||
Catch e As SqlClient.SqlException
|
||||
MessageBox.Show("Error in OpenDatabaseConnection: " + e.Message)
|
||||
Return False
|
||||
Catch e As Exception
|
||||
MessageBox.Show("Error in OpenDatabaseConnection: " + e.Message)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Function CloseDatabaseConnection() As Boolean
|
||||
Try
|
||||
m_dbcnctConnection.Close()
|
||||
Catch e As SqlClient.SqlException
|
||||
MessageBox.Show("Error in CloseDatabaseConnection: " + e.Message)
|
||||
Return False
|
||||
Catch e As Exception
|
||||
MessageBox.Show("Error in CloseDatabaseConnection: " + e.Message)
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Function ExecuteDataSet(ByVal objSQLCommand As SqlClient.SqlCommand) As DataSet
|
||||
Try
|
||||
objSQLCommand.Connection = m_dbcnctConnection
|
||||
Dim ldbdaDataAdapter As New SqlClient.SqlDataAdapter
|
||||
ldbdaDataAdapter.SelectCommand = objSQLCommand
|
||||
Dim ldbdsDataSet As New DataSet
|
||||
ldbdaDataAdapter.Fill(ldbdsDataSet)
|
||||
|
||||
Return ldbdsDataSet
|
||||
Catch e As SqlClient.SqlException
|
||||
MessageBox.Show("Error in ExecuteDataSet: Procedure=" + e.Procedure + ControlChars.CrLf + "Error=" + e.Message)
|
||||
Return Nothing
|
||||
Catch e As Exception
|
||||
MessageBox.Show("Error in ExecuteDataSet: " + e.Message)
|
||||
Return Nothing
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Function ExecuteNonQuery(ByVal objSQLCommand As SqlClient.SqlCommand) As Integer
|
||||
'Returns rows affected
|
||||
|
||||
Try
|
||||
objSQLCommand.Connection = m_dbcnctConnection
|
||||
Dim lintRowsAffected As Integer = objSQLCommand.ExecuteNonQuery
|
||||
|
||||
Return lintRowsAffected
|
||||
|
||||
Catch e As SqlClient.SqlException
|
||||
MessageBox.Show("Error in ExecuteNonQuery: Procedure=" + e.Procedure + ControlChars.CrLf + "Error=" + e.Message)
|
||||
Return 0
|
||||
Catch e As Exception
|
||||
MessageBox.Show("Error in ExecuteNonQuery: " + e.Message)
|
||||
Return 0
|
||||
End Try
|
||||
End Function
|
||||
|
||||
End Class
|
||||
217
clsGridSorter.vb
Normal file
217
clsGridSorter.vb
Normal file
@@ -0,0 +1,217 @@
|
||||
Imports System.Windows.Forms
|
||||
|
||||
Public Class clsGridSorter : Implements IComparer
|
||||
Dim mintColumnIndexToSort As Integer
|
||||
Dim mobjGridColumnSortRules() As clsGridColumnSortRule
|
||||
|
||||
Public Sub New()
|
||||
mintColumnIndexToSort = 0
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal lintInputColumnToSort As Integer)
|
||||
mintColumnIndexToSort = lintInputColumnToSort
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal lintInputColumnToSort As Integer, ByVal lobjGridColumnSortRules As clsGridColumnSortRule())
|
||||
mintColumnIndexToSort = lintInputColumnToSort
|
||||
mobjGridColumnSortRules = lobjGridColumnSortRules
|
||||
End Sub
|
||||
|
||||
Public Property ColumnIndexToSort() As Integer
|
||||
Get
|
||||
Return mintColumnIndexToSort
|
||||
End Get
|
||||
Set(ByVal iValue As Integer)
|
||||
mintColumnIndexToSort = iValue
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property ColumnSortRules() As clsGridColumnSortRule()
|
||||
Get
|
||||
Return mobjGridColumnSortRules
|
||||
End Get
|
||||
Set(ByVal iValue As clsGridColumnSortRule())
|
||||
mobjGridColumnSortRules = iValue
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
|
||||
Dim row1 As ListViewItem
|
||||
Dim row2 As ListViewItem
|
||||
Dim lintReturnValue As Integer
|
||||
|
||||
row1 = CType(x, ListViewItem)
|
||||
row2 = CType(y, ListViewItem)
|
||||
|
||||
If mintColumnIndexToSort > row1.SubItems.Count Then
|
||||
Return -1
|
||||
End If
|
||||
If mobjGridColumnSortRules Is Nothing _
|
||||
OrElse mintColumnIndexToSort >= mobjGridColumnSortRules.Length Then
|
||||
'Default to string comparison
|
||||
Dim s1 As String = row1.SubItems(0).Text
|
||||
Dim s2 As String = row2.SubItems(0).Text
|
||||
Return String.Compare(s1, s2)
|
||||
End If
|
||||
Select Case mobjGridColumnSortRules(mintColumnIndexToSort).SortType
|
||||
Case clsGridColumnSortRule.enumSortType.SortAsNumber
|
||||
Dim ldblValue1 As Double = Val(row1.SubItems(mintColumnIndexToSort).Text)
|
||||
Dim ldblValue2 As Double = Val(row2.SubItems(mintColumnIndexToSort).Text)
|
||||
lintReturnValue = CompareDouble(ldblValue1, ldblValue2)
|
||||
If lintReturnValue = 0 Then
|
||||
lintReturnValue = CompareSubColumns(row1, row2, Me.mobjGridColumnSortRules(mintColumnIndexToSort).SubColumnSort)
|
||||
End If
|
||||
Return lintReturnValue
|
||||
Case clsGridColumnSortRule.enumSortType.SortAsString
|
||||
Dim lstrValue1 As String = row1.SubItems(mintColumnIndexToSort).Text
|
||||
Dim lstrValue2 As String = row2.SubItems(mintColumnIndexToSort).Text
|
||||
lintReturnValue = CompareString(lstrValue1, lstrValue2)
|
||||
If lintReturnValue = 0 Then
|
||||
lintReturnValue = CompareSubColumns(row1, row2, Me.mobjGridColumnSortRules(mintColumnIndexToSort).SubColumnSort)
|
||||
End If
|
||||
Return lintReturnValue
|
||||
Case Else 'No Sort here - go to subcolumn sorts, if any
|
||||
lintReturnValue = CompareSubColumns(row1, row2, Me.mobjGridColumnSortRules(mintColumnIndexToSort).SubColumnSort)
|
||||
Return lintReturnValue
|
||||
End Select
|
||||
|
||||
Return 0
|
||||
End Function
|
||||
|
||||
Private Function CompareString(ByVal lstrString1 As String, ByVal lstrString2 As String) As Integer
|
||||
Return String.Compare(lstrString1, lstrString2)
|
||||
End Function
|
||||
|
||||
Private Function CompareDouble(ByVal ldblDouble1 As Double, ByVal ldblDouble2 As Double) As Integer
|
||||
If ldblDouble1 < ldblDouble2 Then
|
||||
Return -1
|
||||
Else
|
||||
If ldblDouble2 < ldblDouble1 Then
|
||||
Return 1
|
||||
Else
|
||||
Return 0
|
||||
End If
|
||||
End If
|
||||
End Function
|
||||
|
||||
Private Function CompareSubColumns(ByVal row1 As ListViewItem, ByVal row2 As ListViewItem, ByVal lobjSubColumnSort As clsGridSubColumnSortRule) As Integer
|
||||
Dim lintReturnValue As Integer
|
||||
|
||||
If lobjSubColumnSort Is Nothing Then
|
||||
Return 0
|
||||
Else
|
||||
If lobjSubColumnSort.ColumnIndex > row1.SubItems.Count Then
|
||||
Return -1
|
||||
End If
|
||||
Select Case lobjSubColumnSort.SortType
|
||||
Case clsGridSubColumnSortRule.enumSortType.SortAsNumber
|
||||
Dim ldblValue1 As Double = Val(row1.SubItems(lobjSubColumnSort.ColumnIndex).Text)
|
||||
Dim ldblValue2 As Double = Val(row2.SubItems(lobjSubColumnSort.ColumnIndex).Text)
|
||||
lintReturnValue = CompareDouble(ldblValue1, ldblValue2)
|
||||
If lintReturnValue = 0 Then
|
||||
lintReturnValue = CompareSubColumns(row1, row2, lobjSubColumnSort.SubColumnSortRule)
|
||||
End If
|
||||
Return lintReturnValue
|
||||
Case clsGridSubColumnSortRule.enumSortType.SortAsString
|
||||
Dim lstrValue1 As String = row1.SubItems(lobjSubColumnSort.ColumnIndex).Text
|
||||
Dim lstrValue2 As String = row2.SubItems(lobjSubColumnSort.ColumnIndex).Text
|
||||
lintReturnValue = CompareString(lstrValue1, lstrValue2)
|
||||
If lintReturnValue = 0 Then
|
||||
lintReturnValue = CompareSubColumns(row1, row2, lobjSubColumnSort.SubColumnSortRule)
|
||||
End If
|
||||
Return lintReturnValue
|
||||
Case Else 'No Sort here - go to subcolumn sorts, if any
|
||||
lintReturnValue = CompareSubColumns(row1, row2, lobjSubColumnSort.SubColumnSortRule)
|
||||
Return lintReturnValue
|
||||
End Select
|
||||
End If
|
||||
End Function
|
||||
End Class
|
||||
Public Class clsGridColumnSortRule
|
||||
Public Enum enumSortType
|
||||
SortAsString
|
||||
SortAsNumber
|
||||
SortNone
|
||||
End Enum
|
||||
Private menumSortType As enumSortType
|
||||
Private mobjSubColumnSort As clsGridSubColumnSortRule
|
||||
|
||||
Public Sub New()
|
||||
menumSortType = enumSortType.SortAsString
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal lenumSortType As enumSortType)
|
||||
menumSortType = lenumSortType
|
||||
End Sub
|
||||
|
||||
Public Property SortType() As enumSortType
|
||||
Get
|
||||
Return menumSortType
|
||||
End Get
|
||||
Set(ByVal iValue As enumSortType)
|
||||
menumSortType = iValue
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property SubColumnSort() As clsGridSubColumnSortRule
|
||||
Get
|
||||
Return mobjSubColumnSort
|
||||
End Get
|
||||
Set(ByVal iValue As clsGridSubColumnSortRule)
|
||||
mobjSubColumnSort = iValue
|
||||
End Set
|
||||
End Property
|
||||
End Class
|
||||
|
||||
Public Class clsGridSubColumnSortRule
|
||||
Public Enum enumSortType
|
||||
SortAsString
|
||||
SortAsNumber
|
||||
End Enum
|
||||
|
||||
Private menumSortType As enumSortType
|
||||
Private mintColumnIndex As Integer
|
||||
Private mobjSubColumnSortRule As clsGridSubColumnSortRule
|
||||
|
||||
Public Sub New(ByVal lintColumnIndex As Integer)
|
||||
mintColumnIndex = lintColumnIndex
|
||||
menumSortType = enumSortType.SortAsString
|
||||
End Sub
|
||||
Public Sub New(ByVal lintColumnIndex As Integer, ByVal lobjSubColumnSortRule As clsGridSubColumnSortRule)
|
||||
mintColumnIndex = lintColumnIndex
|
||||
mobjSubColumnSortRule = lobjSubColumnSortRule
|
||||
menumSortType = enumSortType.SortAsString
|
||||
End Sub
|
||||
Public Sub New(ByVal lintColumnIndex As Integer, ByVal lenumSortType As enumSortType, ByVal lobjSubColumnSortRule As clsGridSubColumnSortRule)
|
||||
mintColumnIndex = lintColumnIndex
|
||||
mobjSubColumnSortRule = lobjSubColumnSortRule
|
||||
menumSortType = lenumSortType
|
||||
End Sub
|
||||
|
||||
Public Property ColumnIndex() As Integer
|
||||
Get
|
||||
Return mintColumnIndex
|
||||
End Get
|
||||
Set(ByVal iValue As Integer)
|
||||
mintColumnIndex = iValue
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property SortType() As enumSortType
|
||||
Get
|
||||
Return menumSortType
|
||||
End Get
|
||||
Set(ByVal iValue As enumSortType)
|
||||
menumSortType = iValue
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property SubColumnSortRule() As clsGridSubColumnSortRule
|
||||
Get
|
||||
Return mobjSubColumnSortRule
|
||||
End Get
|
||||
Set(ByVal iValue As clsGridSubColumnSortRule)
|
||||
mobjSubColumnSortRule = iValue
|
||||
End Set
|
||||
End Property
|
||||
End Class
|
||||
487
clsHymn.vb
Normal file
487
clsHymn.vb
Normal file
@@ -0,0 +1,487 @@
|
||||
Imports System.Data
|
||||
Imports System.Text
|
||||
Imports System.Windows.Forms
|
||||
Imports System.Xml
|
||||
|
||||
Public Class clsHymn
|
||||
Implements ICloneable
|
||||
|
||||
Private mguidHymnID As Guid
|
||||
Private m_objHymnal As clsHymnal
|
||||
Private m_intHymnNumber As Integer
|
||||
Private m_strHymnName As String
|
||||
Private m_objHymnTuneName As clsHymnTuneName
|
||||
Private m_blnObjectAlreadyPersisted As Boolean
|
||||
|
||||
Public Sub New()
|
||||
mguidHymnID = Guid.NewGuid
|
||||
m_objHymnal = Nothing
|
||||
m_intHymnNumber = 0
|
||||
m_strHymnName = ""
|
||||
m_objHymnTuneName = Nothing
|
||||
m_blnObjectAlreadyPersisted = False
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal objHymnal As clsHymnal, ByVal intHymnNumber As Integer, ByVal strHymnName As String, ByVal objHymnTuneName As clsHymnTuneName)
|
||||
mguidHymnID = Guid.NewGuid
|
||||
m_objHymnal = objHymnal
|
||||
m_intHymnNumber = intHymnNumber
|
||||
m_strHymnName = strHymnName
|
||||
m_objHymnTuneName = objHymnTuneName
|
||||
m_blnObjectAlreadyPersisted = False
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal guidHymnID As Guid)
|
||||
mguidHymnID = guidHymnID
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_hymn"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnID As New SqlClient.SqlParameter
|
||||
prmHymnID.ParameterName = "@hymn_id"
|
||||
prmHymnID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnID.Size = 5
|
||||
prmHymnID.Value = guidHymnID
|
||||
ldbcmdCommand.Parameters.Add(prmHymnID)
|
||||
|
||||
Dim ldbdsHymns As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsHymns.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
ldbrwRow = ldbdsHymns.Tables(0).Rows(0)
|
||||
PopulateFromDBRow(ldbrwRow)
|
||||
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
MyGlobals.AddCachedObject(Me, Me.HymnID.ToString)
|
||||
End If
|
||||
ldbdsHymns.Clear()
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal ldbrwRow As DataRow)
|
||||
PopulateFromDBRow(ldbrwRow)
|
||||
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
MyGlobals.AddCachedObject(Me, Me.HymnID.ToString)
|
||||
End Sub
|
||||
|
||||
Private Sub PopulateFromDBRow(ByVal ldbrwRow As DataRow)
|
||||
mguidHymnID = CType(ldbrwRow.Item("hymn_id"), Guid)
|
||||
|
||||
If ldbrwRow.IsNull("hymnal_id") Then
|
||||
m_objHymnal = Nothing
|
||||
Else
|
||||
Dim guidHymnalID As Guid = CType(ldbrwRow.Item("hymnal_id"), Guid)
|
||||
If MyGlobals.CachedObjectExists(guidHymnalID.ToString) Then
|
||||
m_objHymnal = CType(MyGlobals.CachedObjectRetrieve(guidHymnalID.ToString), clsHymnal)
|
||||
Else
|
||||
m_objHymnal = New clsHymnal(guidHymnalID)
|
||||
End If
|
||||
End If
|
||||
|
||||
m_intHymnNumber = CType(ldbrwRow.Item("hymn_number"), Integer)
|
||||
m_strHymnName = CType(ldbrwRow.Item("hymn_name"), String)
|
||||
|
||||
If ldbrwRow.IsNull("hymn_tune_name_id") Then
|
||||
m_objHymnTuneName = Nothing
|
||||
Else
|
||||
Dim guidHymnTuneNameID As Guid = CType(ldbrwRow.Item("hymn_tune_name_id"), Guid)
|
||||
If MyGlobals.CachedObjectExists(guidHymnTuneNameID.ToString) Then
|
||||
m_objHymnTuneName = CType(MyGlobals.CachedObjectRetrieve(guidHymnTuneNameID.ToString), clsHymnTuneName)
|
||||
Else
|
||||
m_objHymnTuneName = New clsHymnTuneName(guidHymnTuneNameID)
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Function Delete() As Boolean
|
||||
Try
|
||||
MyGlobals.RemoveCachedObject(Me.HymnID.ToString)
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "del_hymn"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnID As New SqlClient.SqlParameter
|
||||
prmHymnID.ParameterName = "@hymn_id"
|
||||
prmHymnID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnID.Size = 5
|
||||
prmHymnID.Value = mguidHymnID
|
||||
ldbcmdCommand.Parameters.Add(prmHymnID)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Function Save() As Boolean
|
||||
Try
|
||||
If Not m_objHymnal Is Nothing Then
|
||||
If Not m_objHymnal.ItemAlreadyPersisted Then
|
||||
m_objHymnal.Save()
|
||||
End If
|
||||
End If
|
||||
If Not m_objHymnTuneName Is Nothing Then
|
||||
If Not m_objHymnTuneName.ItemAlreadyPersisted Then
|
||||
m_objHymnTuneName.Save()
|
||||
End If
|
||||
End If
|
||||
|
||||
MyGlobals.AddCachedObject(Me, Me.HymnID.ToString)
|
||||
|
||||
If m_blnObjectAlreadyPersisted Then
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "upd_hymn"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnID As New SqlClient.SqlParameter
|
||||
prmHymnID.ParameterName = "@hymn_id"
|
||||
prmHymnID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnalID.Size = 5
|
||||
prmHymnID.Value = mguidHymnID
|
||||
ldbcmdCommand.Parameters.Add(prmHymnID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnalID As New SqlClient.SqlParameter
|
||||
prmHymnalID.ParameterName = "@hymnal_id"
|
||||
prmHymnalID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnalID.Size = 5
|
||||
If m_objHymnal Is Nothing Then
|
||||
prmHymnalID.Value = DBNull.Value
|
||||
Else
|
||||
prmHymnalID.Value = m_objHymnal.HymnalID
|
||||
End If
|
||||
ldbcmdCommand.Parameters.Add(prmHymnalID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnNumber As New SqlClient.SqlParameter
|
||||
prmHymnNumber.ParameterName = "@hymn_number"
|
||||
prmHymnNumber.SqlDbType = SqlDbType.Int
|
||||
'prmHymnNumber.Size = 5
|
||||
prmHymnNumber.Value = m_intHymnNumber
|
||||
ldbcmdCommand.Parameters.Add(prmHymnNumber)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnName As New SqlClient.SqlParameter
|
||||
prmHymnName.ParameterName = "@hymn_name"
|
||||
prmHymnName.SqlDbType = SqlDbType.VarChar
|
||||
prmHymnName.Size = MyGlobals.HYMN_NAME_SIZE
|
||||
prmHymnName.Value = m_strHymnName
|
||||
ldbcmdCommand.Parameters.Add(prmHymnName)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneNameID As New SqlClient.SqlParameter
|
||||
prmHymnTuneNameID.ParameterName = "@hymn_tune_name_id"
|
||||
prmHymnTuneNameID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnTuneNameID.Size = 5
|
||||
If m_objHymnTuneName Is Nothing Then
|
||||
prmHymnTuneNameID.Value = DBNull.Value
|
||||
Else
|
||||
prmHymnTuneNameID.Value = m_objHymnTuneName.HymnTuneNameID
|
||||
End If
|
||||
ldbcmdCommand.Parameters.Add(prmHymnTuneNameID)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "ins_hymn"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnID As New SqlClient.SqlParameter
|
||||
prmHymnID.ParameterName = "@hymn_id"
|
||||
prmHymnID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnalID.Size = 5
|
||||
prmHymnID.Value = mguidHymnID
|
||||
ldbcmdCommand.Parameters.Add(prmHymnID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnalID As New SqlClient.SqlParameter
|
||||
prmHymnalID.ParameterName = "@hymnal_id"
|
||||
prmHymnalID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnalID.Size = 5
|
||||
If m_objHymnal Is Nothing Then
|
||||
prmHymnalID.Value = DBNull.Value
|
||||
Else
|
||||
prmHymnalID.Value = m_objHymnal.HymnalID
|
||||
End If
|
||||
ldbcmdCommand.Parameters.Add(prmHymnalID)
|
||||
Dim prmHymnNumber As New SqlClient.SqlParameter
|
||||
prmHymnNumber.ParameterName = "@hymn_number"
|
||||
prmHymnNumber.SqlDbType = SqlDbType.Int
|
||||
'prmHymnNumber.Size = 5
|
||||
prmHymnNumber.Value = m_intHymnNumber
|
||||
ldbcmdCommand.Parameters.Add(prmHymnNumber)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnName As New SqlClient.SqlParameter
|
||||
prmHymnName.ParameterName = "@hymn_name"
|
||||
prmHymnName.SqlDbType = SqlDbType.VarChar
|
||||
prmHymnName.Size = MyGlobals.HYMN_NAME_SIZE
|
||||
prmHymnName.Value = m_strHymnName
|
||||
ldbcmdCommand.Parameters.Add(prmHymnName)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneNameID As New SqlClient.SqlParameter
|
||||
prmHymnTuneNameID.ParameterName = "@hymn_tune_name_id"
|
||||
prmHymnTuneNameID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnTuneNameID.Size = 5
|
||||
If m_objHymnTuneName Is Nothing Then
|
||||
prmHymnTuneNameID.Value = DBNull.Value
|
||||
Else
|
||||
prmHymnTuneNameID.Value = m_objHymnTuneName.HymnTuneNameID
|
||||
End If
|
||||
ldbcmdCommand.Parameters.Add(prmHymnTuneNameID)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End If
|
||||
Catch e As SqlClient.SqlException
|
||||
MessageBox.Show(e.Message)
|
||||
Return False
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Property HymnID() As Guid
|
||||
Get
|
||||
Return mguidHymnID
|
||||
End Get
|
||||
Set(ByVal Value As Guid)
|
||||
mguidHymnID = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property Hymnal() As clsHymnal
|
||||
Get
|
||||
Return m_objHymnal
|
||||
End Get
|
||||
Set(ByVal Value As clsHymnal)
|
||||
m_objHymnal = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property HymnNumber() As Integer
|
||||
Get
|
||||
Return m_intHymnNumber
|
||||
End Get
|
||||
Set(ByVal Value As Integer)
|
||||
m_intHymnNumber = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property HymnNumberAsString() As String
|
||||
Get
|
||||
Return m_intHymnNumber.ToString
|
||||
End Get
|
||||
Set(ByVal Value As String)
|
||||
If Val(Value) > 0 Then
|
||||
m_intHymnNumber = CType(Value, Integer)
|
||||
Else
|
||||
m_intHymnNumber = 0
|
||||
End If
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property HymnName() As String
|
||||
Get
|
||||
Return m_strHymnName
|
||||
End Get
|
||||
Set(ByVal Value As String)
|
||||
m_strHymnName = Value.Trim
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property HymnTuneName() As clsHymnTuneName
|
||||
Get
|
||||
Return m_objHymnTuneName
|
||||
End Get
|
||||
Set(ByVal Value As clsHymnTuneName)
|
||||
m_objHymnTuneName = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property ItemAlreadyPersisted() As Boolean
|
||||
Get
|
||||
Return m_blnObjectAlreadyPersisted
|
||||
End Get
|
||||
Set(ByVal Value As Boolean)
|
||||
m_blnObjectAlreadyPersisted = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Function Clone() As Object Implements ICloneable.Clone
|
||||
Dim lobjReturnValue As New clsHymn
|
||||
lobjReturnValue.HymnID = Me.HymnID
|
||||
lobjReturnValue.Hymnal = Me.Hymnal
|
||||
lobjReturnValue.HymnNumber = Me.HymnNumber
|
||||
lobjReturnValue.HymnName = Me.HymnName
|
||||
lobjReturnValue.HymnTuneName = Me.HymnTuneName
|
||||
lobjReturnValue.ItemAlreadyPersisted = Me.ItemAlreadyPersisted
|
||||
|
||||
Return lobjReturnValue
|
||||
End Function
|
||||
|
||||
Public Function StateIsIdentical(ByVal lobjOtherHymn As clsHymn) As Boolean
|
||||
Dim blnResult As Boolean
|
||||
|
||||
If Me.HymnID.Equals(lobjOtherHymn.HymnID) _
|
||||
AndAlso Me.HymnNumber = lobjOtherHymn.HymnNumber _
|
||||
AndAlso Me.HymnName = lobjOtherHymn.HymnName Then
|
||||
blnResult = True
|
||||
|
||||
If Me.Hymnal Is Nothing Then
|
||||
If lobjOtherHymn.Hymnal Is Nothing Then
|
||||
'OK
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
If lobjOtherHymn.Hymnal Is Nothing Then
|
||||
Return False
|
||||
Else
|
||||
blnResult = Me.Hymnal.HymnalID.Equals(lobjOtherHymn.Hymnal.HymnalID)
|
||||
End If
|
||||
End If
|
||||
|
||||
If Not blnResult Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Me.HymnTuneName Is Nothing Then
|
||||
If lobjOtherHymn.HymnTuneName Is Nothing Then
|
||||
'OK
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
If lobjOtherHymn.HymnTuneName Is Nothing Then
|
||||
Return False
|
||||
Else
|
||||
blnResult = Me.HymnTuneName.HymnTuneNameID.Equals(lobjOtherHymn.HymnTuneName.HymnTuneNameID)
|
||||
End If
|
||||
End If
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return blnResult
|
||||
|
||||
End Function
|
||||
|
||||
Public Function Validate(ByRef lstrErrorString As String) As Boolean
|
||||
lstrErrorString = ""
|
||||
|
||||
If Me.Hymnal Is Nothing Then
|
||||
lstrErrorString = "Hymnal is required"
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Me.HymnNumber = 0 Then
|
||||
lstrErrorString = "Hymn Number is required and must be numeric"
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Me.HymnName.Length = 0 Then
|
||||
lstrErrorString = "Hymn Name is required"
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Me.HymnTuneName Is Nothing Then
|
||||
lstrErrorString = "HymnTuneName is required"
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Public Function OKToDelete(ByRef lstrReferencedByString As String) As Boolean
|
||||
lstrReferencedByString = ""
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Public Overrides Function ToString() As String
|
||||
Dim strReturnString As New StringBuilder
|
||||
|
||||
If m_objHymnal Is Nothing Then
|
||||
'strReturnString.Append(MyGlobals.COLLECTION_STRING)
|
||||
Else
|
||||
strReturnString.Append(m_objHymnal.HymnalAbbreviation)
|
||||
End If
|
||||
|
||||
strReturnString.Append(m_intHymnNumber)
|
||||
strReturnString.Append(" - ")
|
||||
strReturnString.Append(m_strHymnName)
|
||||
|
||||
Return strReturnString.ToString
|
||||
End Function
|
||||
|
||||
Public Sub WriteXML(ByRef objXMLWriter As XmlTextWriter)
|
||||
objXMLWriter.WriteStartElement("Hymn")
|
||||
|
||||
objXMLWriter.WriteElementString("HymnID", Me.HymnID.ToString)
|
||||
objXMLWriter.WriteElementString("HymnName", Me.HymnName)
|
||||
objXMLWriter.WriteElementString("HymnNumber", Me.HymnNumberAsString)
|
||||
objXMLWriter.WriteElementString("HymnalID", Me.Hymnal.HymnalID.ToString)
|
||||
Me.Hymnal.WriteXML(objXMLWriter)
|
||||
If Me.HymnTuneName Is Nothing Then
|
||||
objXMLWriter.WriteElementString("HymnTuneNameID", "")
|
||||
Else
|
||||
objXMLWriter.WriteElementString("HymnTuneNameID", Me.HymnTuneName.HymnTuneNameID.ToString)
|
||||
Me.HymnTuneName.WriteXML(objXMLWriter)
|
||||
End If
|
||||
|
||||
objXMLWriter.WriteEndElement()
|
||||
End Sub
|
||||
|
||||
Public Shared Function GetAllHymns() As System.Collections.Generic.List(Of clsHymn)
|
||||
'Preload to cache
|
||||
clsHymnTuneName.AddAllHymnTuneNamesToCache()
|
||||
clsHymnal.AddAllHymnalsToCache()
|
||||
|
||||
Dim lguidHymnID As Guid
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
Dim lobjHymn As clsHymn
|
||||
Dim lcolHymns As New System.Collections.Generic.List(Of clsHymn)
|
||||
|
||||
ldbcmdCommand.CommandText = "sel_hymn_all"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
|
||||
Dim ldbdsHymns As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsHymns.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
For Each ldbrwRow In ldbdsHymns.Tables(0).Rows
|
||||
lguidHymnID = CType(ldbrwRow.Item("hymn_id"), Guid)
|
||||
|
||||
If MyGlobals.CachedObjectExists(lguidHymnID.ToString) Then
|
||||
lobjHymn = CType(MyGlobals.CachedObjectRetrieve(lguidHymnID.ToString), clsHymn)
|
||||
Else
|
||||
'lobjHymn = New clsHymn(lguidHymnID)
|
||||
lobjHymn = New clsHymn(ldbrwRow)
|
||||
End If
|
||||
lcolHymns.Add(lobjHymn)
|
||||
Next
|
||||
End If
|
||||
ldbdsHymns.Clear()
|
||||
|
||||
Return lcolHymns
|
||||
End Function
|
||||
|
||||
End Class
|
||||
686
clsHymnTuneName.vb
Normal file
686
clsHymnTuneName.vb
Normal file
@@ -0,0 +1,686 @@
|
||||
Imports System.Data
|
||||
Imports System.Xml
|
||||
|
||||
Public Class clsHymnTuneName
|
||||
Implements ICloneable
|
||||
|
||||
Private mguidHymnTuneNameID As Guid
|
||||
Private mstrHymnTuneName As String
|
||||
Private mguidHymnTuneID As Guid
|
||||
Private m_OtherHymnTuneNamesForTune As SortedList
|
||||
Private m_blnObjectAlreadyPersisted As Boolean
|
||||
|
||||
Public Sub New()
|
||||
mguidHymnTuneNameID = Guid.NewGuid
|
||||
mstrHymnTuneName = ""
|
||||
mguidHymnTuneID = Guid.NewGuid
|
||||
m_OtherHymnTuneNamesForTune = New SortedList
|
||||
m_blnObjectAlreadyPersisted = False
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal lstrHymnTuneName As String)
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_hymn_tune_name_by_name"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneName As New SqlClient.SqlParameter
|
||||
prmHymnTuneName.ParameterName = "@hymn_tune_name"
|
||||
prmHymnTuneName.SqlDbType = SqlDbType.VarChar
|
||||
prmHymnTuneName.Size = MyGlobals.HYMN_TUNE_NAME_SIZE
|
||||
prmHymnTuneName.Value = lstrHymnTuneName
|
||||
ldbcmdCommand.Parameters.Add(prmHymnTuneName)
|
||||
|
||||
Dim ldbdsHymnTuneNames As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsHymnTuneNames.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
ldbrwRow = ldbdsHymnTuneNames.Tables(0).Rows(0)
|
||||
|
||||
mguidHymnTuneNameID = CType(ldbrwRow.Item("hymn_tune_name_id"), Guid)
|
||||
mstrHymnTuneName = CType(ldbrwRow.Item("hymn_tune_name"), String)
|
||||
mguidHymnTuneID = CType(ldbrwRow.Item("hymn_tune_id"), Guid)
|
||||
|
||||
m_OtherHymnTuneNamesForTune = GetOtherTuneNamesForTune(mguidHymnTuneNameID)
|
||||
|
||||
ldbdsHymnTuneNames.Clear()
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
Else
|
||||
ldbdsHymnTuneNames.Clear()
|
||||
mguidHymnTuneNameID = Guid.NewGuid
|
||||
mstrHymnTuneName = lstrHymnTuneName.Trim
|
||||
mguidHymnTuneID = Guid.NewGuid
|
||||
m_OtherHymnTuneNamesForTune = New SortedList
|
||||
m_blnObjectAlreadyPersisted = False
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal lguidHymnTuneNameID As Guid)
|
||||
LoadByHymnTuneNameId(lguidHymnTuneNameID, True)
|
||||
End Sub
|
||||
|
||||
Protected Sub New(ByVal lguidHymnTuneNameID As Guid, ByVal lblnLoadOtherTuneNamesForTune As Boolean)
|
||||
LoadByHymnTuneNameId(lguidHymnTuneNameID, lblnLoadOtherTuneNamesForTune)
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal ldbrwRow As DataRow)
|
||||
PopulateFromDBRow(ldbrwRow, True)
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
End Sub
|
||||
|
||||
Protected Sub New(ByVal ldbrwRow As DataRow, ByVal lblnLoadOtherTuneNamesForTune As Boolean)
|
||||
PopulateFromDBRow(ldbrwRow, lblnLoadOtherTuneNamesForTune)
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
End Sub
|
||||
|
||||
Private Sub LoadByHymnTuneNameId(ByVal lguidHymnTuneNameID As Guid, ByVal lblnLoadOtherTuneNamesForTune As Boolean)
|
||||
mguidHymnTuneNameID = lguidHymnTuneNameID
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_hymn_tune_name"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneNameID As New SqlClient.SqlParameter
|
||||
prmHymnTuneNameID.ParameterName = "@hymn_tune_name_id"
|
||||
prmHymnTuneNameID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnTuneNameID.Size = 5
|
||||
prmHymnTuneNameID.Value = lguidHymnTuneNameID
|
||||
ldbcmdCommand.Parameters.Add(prmHymnTuneNameID)
|
||||
|
||||
Dim ldbdsHymnTuneNames As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsHymnTuneNames.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
ldbrwRow = ldbdsHymnTuneNames.Tables(0).Rows(0)
|
||||
PopulateFromDBRow(ldbrwRow, lblnLoadOtherTuneNamesForTune)
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
If lblnLoadOtherTuneNamesForTune Then
|
||||
MyGlobals.AddCachedObject(Me, Me.HymnTuneID.ToString)
|
||||
End If
|
||||
End If
|
||||
ldbdsHymnTuneNames.Clear()
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub PopulateFromDBRow(ByVal ldbrwRow As DataRow, ByVal lblnLoadOtherTuneNamesForTune As Boolean)
|
||||
mguidHymnTuneNameID = CType(ldbrwRow.Item("hymn_tune_name_id"), Guid)
|
||||
|
||||
mstrHymnTuneName = CType(ldbrwRow.Item("hymn_tune_name"), String)
|
||||
mguidHymnTuneID = CType(ldbrwRow.Item("hymn_tune_id"), Guid)
|
||||
If lblnLoadOtherTuneNamesForTune Then
|
||||
m_OtherHymnTuneNamesForTune = GetOtherTuneNamesForTune(mguidHymnTuneNameID)
|
||||
Else
|
||||
m_OtherHymnTuneNamesForTune = New SortedList
|
||||
End If
|
||||
If lblnLoadOtherTuneNamesForTune Then
|
||||
MyGlobals.AddCachedObject(Me, Me.HymnTuneID.ToString)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Sub Refresh()
|
||||
LoadByHymnTuneNameId(mguidHymnTuneNameID, True)
|
||||
End Sub
|
||||
|
||||
Public Function Delete() As Boolean
|
||||
MyGlobals.RemoveCachedObject(Me.HymnTuneNameID.ToString)
|
||||
|
||||
Try
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "del_hymn_tune_name"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneNameID As New SqlClient.SqlParameter
|
||||
prmHymnTuneNameID.ParameterName = "@hymn_tune_name_id"
|
||||
prmHymnTuneNameID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnTuneNameID.Size = 5
|
||||
prmHymnTuneNameID.Value = mguidHymnTuneNameID
|
||||
ldbcmdCommand.Parameters.Add(prmHymnTuneNameID)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
m_blnObjectAlreadyPersisted = False
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Function Save() As Boolean
|
||||
Try
|
||||
MyGlobals.AddCachedObject(Me, Me.HymnTuneNameID.ToString)
|
||||
|
||||
If m_blnObjectAlreadyPersisted Then
|
||||
|
||||
Dim objPersisted_OtherHymnTuneNamesForTune As SortedList = GetOtherTuneNamesForTune(mguidHymnTuneNameID)
|
||||
|
||||
Dim objAddedOtherHymnTuneNamesForTune As SortedList = Nothing
|
||||
Dim objDroppedOtherHymnTuneNamesForTune As SortedList = Nothing
|
||||
Dim objRemainingOtherHymnTuneNamesForTune As SortedList = Nothing
|
||||
|
||||
GetAddedDroppedRemainingOtherHymnTuneNamesForTune(objPersisted_OtherHymnTuneNamesForTune, m_OtherHymnTuneNamesForTune, objAddedOtherHymnTuneNamesForTune, objDroppedOtherHymnTuneNamesForTune, objRemainingOtherHymnTuneNamesForTune)
|
||||
|
||||
'If alternate tune names were droped from the list, then we need to change
|
||||
'the current hymn tune name and all alternate hymn tune names that remained
|
||||
'on the list to a new hymn tune ID
|
||||
If objDroppedOtherHymnTuneNamesForTune.Count > 0 Then
|
||||
'Get a new Hymn Tune ID for THIS hymn tune name
|
||||
mguidHymnTuneID = Guid.NewGuid
|
||||
|
||||
Dim objDictionaryEntry As DictionaryEntry
|
||||
Dim objOtherHymnTuneName As clsHymnTuneName
|
||||
|
||||
'Update the hymn tune ID for all hymn tune names which should REMAIN
|
||||
'matched with THIS hymn tune name
|
||||
For Each objDictionaryEntry In objRemainingOtherHymnTuneNamesForTune
|
||||
objOtherHymnTuneName = CType(objDictionaryEntry.Value, clsHymnTuneName)
|
||||
objOtherHymnTuneName.HymnTuneID = mguidHymnTuneID
|
||||
|
||||
Dim ldbcmdCommandSaveOtherRemaining As New SqlClient.SqlCommand
|
||||
ldbcmdCommandSaveOtherRemaining.CommandText = "upd_hymn_tune_name_with_tune_id"
|
||||
|
||||
ldbcmdCommandSaveOtherRemaining.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneNameIDSaveOtherRemaining As New SqlClient.SqlParameter
|
||||
prmHymnTuneNameIDSaveOtherRemaining.ParameterName = "@hymn_tune_name_id"
|
||||
prmHymnTuneNameIDSaveOtherRemaining.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnTuneNameIDSaveOtherRemaining.Size = 5
|
||||
prmHymnTuneNameIDSaveOtherRemaining.Value = objOtherHymnTuneName.HymnTuneNameID
|
||||
ldbcmdCommandSaveOtherRemaining.Parameters.Add(prmHymnTuneNameIDSaveOtherRemaining)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneIDSaveOtherRemaining As New SqlClient.SqlParameter
|
||||
prmHymnTuneIDSaveOtherRemaining.ParameterName = "@hymn_tune_id"
|
||||
prmHymnTuneIDSaveOtherRemaining.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnTuneIDSaveOtherRemaining.Size = 5
|
||||
prmHymnTuneIDSaveOtherRemaining.Value = mguidHymnTuneID
|
||||
ldbcmdCommandSaveOtherRemaining.Parameters.Add(prmHymnTuneIDSaveOtherRemaining)
|
||||
|
||||
Dim lintRowsAffectedSaveOtherRemaining As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommandSaveOtherRemaining)
|
||||
Next
|
||||
End If
|
||||
|
||||
'If alternate hymn tune names were added, we need to change the hymn tune ID for all
|
||||
'hymn tune names that were added (along with THEIR matches) to the hymn tune ID of
|
||||
'the current hymn tune name
|
||||
If objAddedOtherHymnTuneNamesForTune.Count > 0 Then
|
||||
Dim objDictionaryEntry As DictionaryEntry
|
||||
Dim objOtherHymnTuneName As clsHymnTuneName
|
||||
For Each objDictionaryEntry In objAddedOtherHymnTuneNamesForTune
|
||||
objOtherHymnTuneName = CType(objDictionaryEntry.Value, clsHymnTuneName)
|
||||
objOtherHymnTuneName.HymnTuneID = mguidHymnTuneID
|
||||
|
||||
Dim ldbcmdCommandSaveOtherAdded As New SqlClient.SqlCommand
|
||||
ldbcmdCommandSaveOtherAdded.CommandText = "upd_hymn_tune_name_with_tune_id_with_matches"
|
||||
|
||||
ldbcmdCommandSaveOtherAdded.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneNameIDSaveOtherAdded As New SqlClient.SqlParameter
|
||||
prmHymnTuneNameIDSaveOtherAdded.ParameterName = "@hymn_tune_name_id"
|
||||
prmHymnTuneNameIDSaveOtherAdded.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnTuneNameID.Size = 5
|
||||
prmHymnTuneNameIDSaveOtherAdded.Value = objOtherHymnTuneName.HymnTuneNameID
|
||||
ldbcmdCommandSaveOtherAdded.Parameters.Add(prmHymnTuneNameIDSaveOtherAdded)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneIDSaveOtherAdded As New SqlClient.SqlParameter
|
||||
prmHymnTuneIDSaveOtherAdded.ParameterName = "@hymn_tune_id"
|
||||
prmHymnTuneIDSaveOtherAdded.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnTuneID.Size = 5
|
||||
prmHymnTuneIDSaveOtherAdded.Value = mguidHymnTuneID
|
||||
ldbcmdCommandSaveOtherAdded.Parameters.Add(prmHymnTuneIDSaveOtherAdded)
|
||||
|
||||
Dim lintRowsAffectedSaveOtherAdded As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommandSaveOtherAdded)
|
||||
Next
|
||||
End If
|
||||
|
||||
|
||||
Dim ldbcmdCommandUpdateThis As New SqlClient.SqlCommand
|
||||
ldbcmdCommandUpdateThis.CommandText = "upd_hymn_tune_name"
|
||||
|
||||
ldbcmdCommandUpdateThis.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneNameIDUpdateThis As New SqlClient.SqlParameter
|
||||
prmHymnTuneNameIDUpdateThis.ParameterName = "@hymn_tune_name_id"
|
||||
prmHymnTuneNameIDUpdateThis.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnTuneNameIDUpdateThis.Size = 5
|
||||
prmHymnTuneNameIDUpdateThis.Value = mguidHymnTuneNameID
|
||||
ldbcmdCommandUpdateThis.Parameters.Add(prmHymnTuneNameIDUpdateThis)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneNameUpdateThis As New SqlClient.SqlParameter
|
||||
prmHymnTuneNameUpdateThis.ParameterName = "@hymn_tune_name"
|
||||
prmHymnTuneNameUpdateThis.SqlDbType = SqlDbType.VarChar
|
||||
prmHymnTuneNameUpdateThis.Size = MyGlobals.HYMN_TUNE_NAME_SIZE
|
||||
prmHymnTuneNameUpdateThis.Value = mstrHymnTuneName
|
||||
ldbcmdCommandUpdateThis.Parameters.Add(prmHymnTuneNameUpdateThis)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneIDUpdateThis As New SqlClient.SqlParameter
|
||||
prmHymnTuneIDUpdateThis.ParameterName = "@hymn_tune_id"
|
||||
prmHymnTuneIDUpdateThis.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnTuneIDUpdateThis.Size = 5
|
||||
prmHymnTuneIDUpdateThis.Value = mguidHymnTuneID
|
||||
ldbcmdCommandUpdateThis.Parameters.Add(prmHymnTuneIDUpdateThis)
|
||||
|
||||
Dim lintRowsAffectedUpdateThis As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommandUpdateThis)
|
||||
If lintRowsAffectedUpdateThis > 0 Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
'If alternate tune names listed, grab hymn tune ID from first one listed,
|
||||
'and update tune ID for all others, including THIS object
|
||||
If m_OtherHymnTuneNamesForTune.Count > 0 Then
|
||||
Dim objguidFirstTuneID As Guid
|
||||
Dim blnFirstAlternameTuneName As Boolean = True
|
||||
|
||||
Dim objDictionaryEntry As DictionaryEntry
|
||||
Dim objOtherHymnTuneName As clsHymnTuneName
|
||||
For Each objDictionaryEntry In m_OtherHymnTuneNamesForTune
|
||||
objOtherHymnTuneName = CType(objDictionaryEntry.Value, clsHymnTuneName)
|
||||
If blnFirstAlternameTuneName Then
|
||||
blnFirstAlternameTuneName = False
|
||||
objguidFirstTuneID = objOtherHymnTuneName.HymnTuneID
|
||||
mguidHymnTuneID = objguidFirstTuneID
|
||||
Else
|
||||
objOtherHymnTuneName.HymnTuneID = objguidFirstTuneID
|
||||
|
||||
Dim ldbcmdCommandUpdateOtherAdding As New SqlClient.SqlCommand
|
||||
ldbcmdCommandUpdateOtherAdding.CommandText = "upd_hymn_tune_name_with_tune_id_with_matches"
|
||||
|
||||
ldbcmdCommandUpdateOtherAdding.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneNameIDUpdateOtherAdding As New SqlClient.SqlParameter
|
||||
prmHymnTuneNameIDUpdateOtherAdding.ParameterName = "@hymn_tune_name_id"
|
||||
prmHymnTuneNameIDUpdateOtherAdding.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnTuneNameIDUpdateOtherAdding.Size = 5
|
||||
prmHymnTuneNameIDUpdateOtherAdding.Value = objOtherHymnTuneName.HymnTuneNameID
|
||||
ldbcmdCommandUpdateOtherAdding.Parameters.Add(prmHymnTuneNameIDUpdateOtherAdding)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneIDUpdateOtherAdding As New SqlClient.SqlParameter
|
||||
prmHymnTuneIDUpdateOtherAdding.ParameterName = "@hymn_tune_id"
|
||||
prmHymnTuneIDUpdateOtherAdding.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnTuneIDUpdateOtherAdding.Size = 5
|
||||
prmHymnTuneIDUpdateOtherAdding.Value = objguidFirstTuneID
|
||||
ldbcmdCommandUpdateOtherAdding.Parameters.Add(prmHymnTuneIDUpdateOtherAdding)
|
||||
|
||||
Dim lintRowsAffectedUpdateOtherAdding As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommandUpdateOtherAdding)
|
||||
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
|
||||
Dim ldbcmdCommandAddThis As New SqlClient.SqlCommand
|
||||
ldbcmdCommandAddThis.CommandText = "ins_hymn_tune_name"
|
||||
|
||||
ldbcmdCommandAddThis.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneNameIDAddThis As New SqlClient.SqlParameter
|
||||
prmHymnTuneNameIDAddThis.ParameterName = "@hymn_tune_name_id"
|
||||
prmHymnTuneNameIDAddThis.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnTuneNameID.Size = 5
|
||||
prmHymnTuneNameIDAddThis.Value = mguidHymnTuneNameID
|
||||
ldbcmdCommandAddThis.Parameters.Add(prmHymnTuneNameIDAddThis)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneNameAddThis As New SqlClient.SqlParameter
|
||||
prmHymnTuneNameAddThis.ParameterName = "@hymn_tune_name"
|
||||
prmHymnTuneNameAddThis.SqlDbType = SqlDbType.VarChar
|
||||
prmHymnTuneNameAddThis.Size = MyGlobals.HYMN_TUNE_NAME_SIZE
|
||||
prmHymnTuneNameAddThis.Value = mstrHymnTuneName
|
||||
ldbcmdCommandAddThis.Parameters.Add(prmHymnTuneNameAddThis)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneIDAddThis As New SqlClient.SqlParameter
|
||||
prmHymnTuneIDAddThis.ParameterName = "@hymn_tune_id"
|
||||
prmHymnTuneIDAddThis.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnTuneIDAddThis.Size = 5
|
||||
prmHymnTuneIDAddThis.Value = mguidHymnTuneID
|
||||
ldbcmdCommandAddThis.Parameters.Add(prmHymnTuneIDAddThis)
|
||||
|
||||
Dim lintRowsAffectedAddThis As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommandAddThis)
|
||||
If lintRowsAffectedAddThis > 0 Then
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End If
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Function DuplicateExists(ByVal lstrHymnTuneNameToCheck As String) As Boolean
|
||||
Try
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_hymn_tune_name_by_name"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneName As New SqlClient.SqlParameter
|
||||
prmHymnTuneName.ParameterName = "@hymn_tune_name"
|
||||
prmHymnTuneName.SqlDbType = SqlDbType.VarChar
|
||||
prmHymnTuneName.Size = MyGlobals.HYMN_TUNE_NAME_SIZE
|
||||
prmHymnTuneName.Value = lstrHymnTuneNameToCheck
|
||||
ldbcmdCommand.Parameters.Add(prmHymnTuneName)
|
||||
|
||||
Dim ldbdsHymnTuneNames As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsHymnTuneNames.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
For Each ldbrwRow In ldbdsHymnTuneNames.Tables(0).Rows
|
||||
If mguidHymnTuneNameID.Equals(CType(ldbrwRow.Item("hymn_tune_name_id"), Guid)) Then
|
||||
'OK
|
||||
Else
|
||||
ldbdsHymnTuneNames.Clear()
|
||||
Return True
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
ldbdsHymnTuneNames.Clear()
|
||||
Return False
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Property HymnTuneNameID() As Guid
|
||||
Get
|
||||
Return mguidHymnTuneNameID
|
||||
End Get
|
||||
|
||||
Set(ByVal lguidValue As Guid)
|
||||
mguidHymnTuneNameID = lguidValue
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property HymnTuneName() As String
|
||||
Get
|
||||
Return mstrHymnTuneName
|
||||
End Get
|
||||
|
||||
Set(ByVal sValue As String)
|
||||
mstrHymnTuneName = sValue.Trim
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property HymnTuneID() As Guid
|
||||
Get
|
||||
Return mguidHymnTuneID
|
||||
End Get
|
||||
|
||||
Set(ByVal lguidValue As Guid)
|
||||
mguidHymnTuneID = lguidValue
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property OtherHymnTuneNamesForTune() As SortedList
|
||||
Get
|
||||
Return m_OtherHymnTuneNamesForTune
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Protected WriteOnly Property OtherHymnTuneNamesForTuneForCloning() As SortedList
|
||||
Set(ByVal Value As SortedList)
|
||||
m_OtherHymnTuneNamesForTune = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Sub AddAlternateHymnTuneName(ByVal lobjHymnTuneName As clsHymnTuneName)
|
||||
AddAlternateTuneNameToList(lobjHymnTuneName, m_OtherHymnTuneNamesForTune)
|
||||
End Sub
|
||||
|
||||
Public Sub RemoveAlternateHymnTuneName(ByVal lobjHymnTuneName As clsHymnTuneName)
|
||||
RemoveAlternateTuneNameFromList(lobjHymnTuneName, m_OtherHymnTuneNamesForTune)
|
||||
End Sub
|
||||
|
||||
Public Sub RemoveAlternateHymnTuneName(ByVal lstrHymnTuneName As String)
|
||||
RemoveAlternateTuneNameFromList(lstrHymnTuneName, m_OtherHymnTuneNamesForTune)
|
||||
End Sub
|
||||
|
||||
Public Property ItemAlreadyPersisted() As Boolean
|
||||
Get
|
||||
Return m_blnObjectAlreadyPersisted
|
||||
End Get
|
||||
Set(ByVal Value As Boolean)
|
||||
m_blnObjectAlreadyPersisted = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Function Clone() As Object Implements ICloneable.Clone
|
||||
Dim lobjReturnValue As New clsHymnTuneName
|
||||
lobjReturnValue.HymnTuneNameID = Me.HymnTuneNameID
|
||||
lobjReturnValue.HymnTuneName = Me.HymnTuneName
|
||||
lobjReturnValue.HymnTuneID = Me.HymnTuneID
|
||||
lobjReturnValue.OtherHymnTuneNamesForTuneForCloning = CType(Me.OtherHymnTuneNamesForTune.Clone, SortedList)
|
||||
|
||||
lobjReturnValue.ItemAlreadyPersisted = Me.ItemAlreadyPersisted
|
||||
|
||||
Return lobjReturnValue
|
||||
End Function
|
||||
|
||||
Public Function StateIsIdentical(ByVal lobjOtherHymnTuneName As clsHymnTuneName) As Boolean
|
||||
If Me.HymnTuneNameID.Equals(lobjOtherHymnTuneName.HymnTuneNameID) _
|
||||
AndAlso Me.HymnTuneName = lobjOtherHymnTuneName.HymnTuneName _
|
||||
AndAlso Me.HymnTuneID.Equals(lobjOtherHymnTuneName.HymnTuneID) Then
|
||||
If Me.OtherHymnTuneNamesForTune.Count <> lobjOtherHymnTuneName.OtherHymnTuneNamesForTune.Count Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
'We have the same number of alternate tune names.
|
||||
'Just need to check from one side to see if all are on the other
|
||||
' - If none were added, and the number is the same, then none could have been deleted
|
||||
Dim objDictionaryEntry As DictionaryEntry
|
||||
Dim objMeOtherHymnTuneNameForTune As clsHymnTuneName
|
||||
For Each objDictionaryEntry In Me.OtherHymnTuneNamesForTune
|
||||
objMeOtherHymnTuneNameForTune = CType(objDictionaryEntry.Value, clsHymnTuneName)
|
||||
If Not lobjOtherHymnTuneName.OtherHymnTuneNamesForTune.ContainsKey(objMeOtherHymnTuneNameForTune.HymnTuneName) Then
|
||||
Return False
|
||||
End If
|
||||
Next
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End Function
|
||||
|
||||
Public Function Validate(ByRef lstrErrorString As String) As Boolean
|
||||
lstrErrorString = ""
|
||||
If Me.HymnTuneName.Length = 0 Then
|
||||
lstrErrorString = "Hymn Tune Name is required"
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Me.DuplicateExists(Me.HymnTuneName) Then
|
||||
lstrErrorString = "Given Hymn Tune Name already exists"
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Public Function OKToDelete(ByRef lstrReferencedByString As String) As Boolean
|
||||
Dim lblnReturnValue As Boolean
|
||||
|
||||
lblnReturnValue = True
|
||||
|
||||
lstrReferencedByString = ""
|
||||
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_hymn_tune_name_isreferenced"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneNameID As New SqlClient.SqlParameter
|
||||
prmHymnTuneNameID.ParameterName = "@hymn_tune_name_id"
|
||||
prmHymnTuneNameID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnTuneNameID.Size = 5
|
||||
prmHymnTuneNameID.Value = mguidHymnTuneNameID
|
||||
ldbcmdCommand.Parameters.Add(prmHymnTuneNameID)
|
||||
|
||||
Dim ldbdsHymnTuneNames As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsHymnTuneNames.Tables(0).Rows.Count > 0 Then
|
||||
lblnReturnValue = False
|
||||
|
||||
Dim ldbrwRow As DataRow
|
||||
For Each ldbrwRow In ldbdsHymnTuneNames.Tables(0).Rows
|
||||
If Not ldbrwRow.IsNull("table_referencing_instance") Then
|
||||
If lstrReferencedByString.Length = 0 Then
|
||||
lstrReferencedByString = CType(ldbrwRow.Item("table_referencing_instance"), String) + "(s)"
|
||||
Else
|
||||
lstrReferencedByString = lstrReferencedByString + " and " + CType(ldbrwRow.Item("table_referencing_instance"), String) + "(s)"
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
|
||||
End If
|
||||
ldbdsHymnTuneNames.Clear()
|
||||
|
||||
Return lblnReturnValue
|
||||
|
||||
End Function
|
||||
|
||||
Public Overrides Function ToString() As String
|
||||
Return mstrHymnTuneName
|
||||
End Function
|
||||
|
||||
Public Function GetOtherTuneNamesForTune(ByVal lguidHymnTuneNameId As Guid) As SortedList
|
||||
Dim objSortedListToReturn As New SortedList
|
||||
|
||||
Try
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_hymn_tune_name_others_by_hymn_tune_name_id"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneNameID As New SqlClient.SqlParameter
|
||||
prmHymnTuneNameID.ParameterName = "@hymn_tune_name_id"
|
||||
prmHymnTuneNameID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnTuneNameID.Size = 5
|
||||
prmHymnTuneNameID.Value = lguidHymnTuneNameId
|
||||
ldbcmdCommand.Parameters.Add(prmHymnTuneNameID)
|
||||
|
||||
Dim ldbdsHymnTuneNames As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsHymnTuneNames.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
Dim lobjHymnTuneName As clsHymnTuneName
|
||||
For Each ldbrwRow In ldbdsHymnTuneNames.Tables(0).Rows
|
||||
lguidHymnTuneNameId = CType(ldbrwRow.Item("hymn_tune_name_id"), Guid)
|
||||
|
||||
lobjHymnTuneName = New clsHymnTuneName(lguidHymnTuneNameId, False)
|
||||
AddAlternateTuneNameToList(lobjHymnTuneName, objSortedListToReturn)
|
||||
Next
|
||||
End If
|
||||
ldbdsHymnTuneNames.Clear()
|
||||
Return objSortedListToReturn
|
||||
Catch
|
||||
Return objSortedListToReturn
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Sub AddAlternateTuneNameToList(ByVal lobjHymnTuneName As clsHymnTuneName, ByRef lobjSortedListToReturn As SortedList)
|
||||
If lobjSortedListToReturn.ContainsKey(lobjHymnTuneName.HymnTuneName) Then
|
||||
Return
|
||||
End If
|
||||
lobjSortedListToReturn.Add(lobjHymnTuneName.HymnTuneName, lobjHymnTuneName)
|
||||
End Sub
|
||||
|
||||
Private Sub RemoveAlternateTuneNameFromList(ByVal lobjHymnTuneName As clsHymnTuneName, ByRef lobjSortedListToReturn As SortedList)
|
||||
If lobjSortedListToReturn.ContainsKey(lobjHymnTuneName.HymnTuneName) Then
|
||||
lobjSortedListToReturn.Remove(lobjHymnTuneName.HymnTuneName)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub RemoveAlternateTuneNameFromList(ByVal lstrHymnTuneName As String, ByRef lobjSortedListToReturn As SortedList)
|
||||
If lobjSortedListToReturn.ContainsKey(lstrHymnTuneName) Then
|
||||
lobjSortedListToReturn.Remove(lstrHymnTuneName)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub GetAddedDroppedRemainingOtherHymnTuneNamesForTune(ByVal objPersisted_OtherHymnTuneNamesForTune As SortedList, ByVal objCurrentOtherHymnTuneNamesForTune As SortedList, ByRef objAddedOtherHymnTuneNamesForTune As SortedList, ByRef objDroppedOtherHymnTuneNamesForTune As SortedList, ByRef objRemainingOtherHymnTuneNamesForTune As SortedList)
|
||||
Dim objDictionaryEntry As DictionaryEntry
|
||||
Dim objHymnTuneNameToCheck As clsHymnTuneName
|
||||
Dim strHymnTuneNameToCheck As String
|
||||
|
||||
objAddedOtherHymnTuneNamesForTune = New SortedList
|
||||
objDroppedOtherHymnTuneNamesForTune = New SortedList
|
||||
objRemainingOtherHymnTuneNamesForTune = New SortedList
|
||||
|
||||
For Each objDictionaryEntry In objPersisted_OtherHymnTuneNamesForTune
|
||||
objHymnTuneNameToCheck = CType(objDictionaryEntry.Value, clsHymnTuneName)
|
||||
strHymnTuneNameToCheck = objHymnTuneNameToCheck.HymnTuneName
|
||||
If objCurrentOtherHymnTuneNamesForTune.ContainsKey(strHymnTuneNameToCheck) Then
|
||||
objRemainingOtherHymnTuneNamesForTune.Add(strHymnTuneNameToCheck, objHymnTuneNameToCheck)
|
||||
Else
|
||||
objDroppedOtherHymnTuneNamesForTune.Add(strHymnTuneNameToCheck, objHymnTuneNameToCheck)
|
||||
End If
|
||||
Next
|
||||
|
||||
For Each objDictionaryEntry In objCurrentOtherHymnTuneNamesForTune
|
||||
objHymnTuneNameToCheck = CType(objDictionaryEntry.Value, clsHymnTuneName)
|
||||
strHymnTuneNameToCheck = objHymnTuneNameToCheck.HymnTuneName
|
||||
If objPersisted_OtherHymnTuneNamesForTune.ContainsKey(strHymnTuneNameToCheck) Then
|
||||
'Not necessary to save to REMAINING list, as it should already be there from above
|
||||
'objRemainingOtherHymnTuneNamesForTune.Add(strHymnTuneNameToCheck, objHymnTuneNameToCheck)
|
||||
Else
|
||||
objAddedOtherHymnTuneNamesForTune.Add(strHymnTuneNameToCheck, objHymnTuneNameToCheck)
|
||||
End If
|
||||
Next
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub WriteXML(ByRef objXMLWriter As XmlTextWriter)
|
||||
objXMLWriter.WriteStartElement("HymnTuneName")
|
||||
|
||||
objXMLWriter.WriteElementString("HymnTuneNameID", Me.HymnTuneNameID.ToString)
|
||||
objXMLWriter.WriteElementString("HymnTuneID", Me.HymnTuneID.ToString)
|
||||
objXMLWriter.WriteElementString("HymnTuneName", Me.HymnTuneName)
|
||||
|
||||
objXMLWriter.WriteEndElement()
|
||||
End Sub
|
||||
|
||||
Public Shared Function GetAllHymnTuneNames() As System.Collections.Generic.List(Of clsHymnTuneName)
|
||||
Dim lguidHymnTuneNameID As Guid
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
Dim lobjHymnTuneName As clsHymnTuneName
|
||||
Dim lcolHymnTuneNames As New System.Collections.Generic.List(Of clsHymnTuneName)
|
||||
|
||||
ldbcmdCommand.CommandText = "sel_hymn_tune_name_all"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
Dim ldbdsHymnTuneNames As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsHymnTuneNames.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
For Each ldbrwRow In ldbdsHymnTuneNames.Tables(0).Rows
|
||||
lguidHymnTuneNameID = CType(ldbrwRow.Item("hymn_tune_name_id"), Guid)
|
||||
|
||||
If MyGlobals.CachedObjectExists(lguidHymnTuneNameID.ToString) Then
|
||||
lobjHymnTuneName = CType(MyGlobals.CachedObjectRetrieve(lguidHymnTuneNameID.ToString), clsHymnTuneName)
|
||||
Else
|
||||
'lobjHymnTuneName = New clsHymnTuneName(lguidHymnTuneNameID)
|
||||
lobjHymnTuneName = New clsHymnTuneName(ldbrwRow)
|
||||
End If
|
||||
lcolHymnTuneNames.Add(lobjHymnTuneName)
|
||||
Next
|
||||
End If
|
||||
ldbdsHymnTuneNames.Clear()
|
||||
|
||||
Return lcolHymnTuneNames
|
||||
End Function
|
||||
|
||||
Public Shared Sub AddAllHymnTuneNamesToCache()
|
||||
If MyGlobals.g_objObjectTypesCached.Contains("HymnTuneNames") = False Then
|
||||
GetAllHymnTuneNames()
|
||||
MyGlobals.g_objObjectTypesCached.Add("HymnTuneNames")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
437
clsHymnal.vb
Normal file
437
clsHymnal.vb
Normal file
@@ -0,0 +1,437 @@
|
||||
Imports System.Data
|
||||
Imports System.Xml
|
||||
|
||||
Public Class clsHymnal
|
||||
Implements ICloneable
|
||||
|
||||
Private mguidHymnalID As Guid
|
||||
Private mstrHymnalName As String
|
||||
Private mstrHymnalAbbreviation As String
|
||||
Private m_blnObjectAlreadyPersisted As Boolean
|
||||
|
||||
Public Sub New()
|
||||
mguidHymnalID = Guid.NewGuid
|
||||
mstrHymnalName = ""
|
||||
mstrHymnalAbbreviation = ""
|
||||
m_blnObjectAlreadyPersisted = False
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal lstrHymnalName As String)
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_hymnal_by_name"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnalName As New SqlClient.SqlParameter
|
||||
prmHymnalName.ParameterName = "@hymnal_name"
|
||||
prmHymnalName.SqlDbType = SqlDbType.VarChar
|
||||
prmHymnalName.Size = MyGlobals.HYMNAL_NAME_SIZE
|
||||
prmHymnalName.Value = lstrHymnalName
|
||||
ldbcmdCommand.Parameters.Add(prmHymnalName)
|
||||
|
||||
Dim ldbdsHymnals As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsHymnals.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
ldbrwRow = ldbdsHymnals.Tables(0).Rows(0)
|
||||
PopulateFromDBRow(ldbrwRow)
|
||||
|
||||
ldbdsHymnals.Clear()
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
Else
|
||||
ldbdsHymnals.Clear()
|
||||
mguidHymnalID = Guid.NewGuid
|
||||
mstrHymnalName = lstrHymnalName.Trim
|
||||
m_blnObjectAlreadyPersisted = False
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal lguidHymnalID As Guid)
|
||||
mguidHymnalID = lguidHymnalID
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_hymnal"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnalID As New SqlClient.SqlParameter
|
||||
prmHymnalID.ParameterName = "@hymnal_id"
|
||||
prmHymnalID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnalID.Size = 5
|
||||
prmHymnalID.Value = lguidHymnalID
|
||||
ldbcmdCommand.Parameters.Add(prmHymnalID)
|
||||
|
||||
Dim ldbdsHymnals As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsHymnals.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
ldbrwRow = ldbdsHymnals.Tables(0).Rows(0)
|
||||
PopulateFromDBRow(ldbrwRow)
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
MyGlobals.AddCachedObject(Me, Me.HymnalID.ToString)
|
||||
End If
|
||||
ldbdsHymnals.Clear()
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal ldbrwRow As DataRow)
|
||||
PopulateFromDBRow(ldbrwRow)
|
||||
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
MyGlobals.AddCachedObject(Me, Me.HymnalID.ToString)
|
||||
End Sub
|
||||
|
||||
Private Sub PopulateFromDBRow(ByVal ldbrwRow As DataRow)
|
||||
mguidHymnalID = CType(ldbrwRow.Item("hymnal_id"), Guid)
|
||||
|
||||
mstrHymnalName = CType(ldbrwRow.Item("hymnal_name"), String)
|
||||
mstrHymnalAbbreviation = CType(ldbrwRow.Item("hymnal_abbreviation"), String)
|
||||
End Sub
|
||||
|
||||
Public Function Delete() As Boolean
|
||||
Try
|
||||
MyGlobals.RemoveCachedObject(Me.HymnalID.ToString)
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "del_hymnal"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnalID As New SqlClient.SqlParameter
|
||||
prmHymnalID.ParameterName = "@hymnal_id"
|
||||
prmHymnalID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnalID.Size = 5
|
||||
prmHymnalID.Value = mguidHymnalID
|
||||
ldbcmdCommand.Parameters.Add(prmHymnalID)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
m_blnObjectAlreadyPersisted = False
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Function Save() As Boolean
|
||||
Try
|
||||
MyGlobals.AddCachedObject(Me, Me.HymnalID.ToString)
|
||||
|
||||
If m_blnObjectAlreadyPersisted Then
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "upd_hymnal"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnalID As New SqlClient.SqlParameter
|
||||
prmHymnalID.ParameterName = "@hymnal_id"
|
||||
prmHymnalID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnalID.Size = 5
|
||||
prmHymnalID.Value = mguidHymnalID
|
||||
ldbcmdCommand.Parameters.Add(prmHymnalID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnalName As New SqlClient.SqlParameter
|
||||
prmHymnalName.ParameterName = "@hymnal_name"
|
||||
prmHymnalName.SqlDbType = SqlDbType.VarChar
|
||||
prmHymnalName.Size = MyGlobals.HYMNAL_NAME_SIZE
|
||||
prmHymnalName.Value = mstrHymnalName
|
||||
Dim prmHymnalAbbreviation As New SqlClient.SqlParameter
|
||||
prmHymnalAbbreviation.ParameterName = "@hymnal_abbreviation"
|
||||
prmHymnalAbbreviation.SqlDbType = SqlDbType.VarChar
|
||||
prmHymnalAbbreviation.Size = MyGlobals.HYMNAL_ABBREVIATION_SIZE
|
||||
prmHymnalAbbreviation.Value = mstrHymnalAbbreviation
|
||||
ldbcmdCommand.Parameters.Add(prmHymnalAbbreviation)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "ins_hymnal"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnalID As New SqlClient.SqlParameter
|
||||
prmHymnalID.ParameterName = "@hymnal_id"
|
||||
prmHymnalID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnalID.Size = 5
|
||||
prmHymnalID.Value = mguidHymnalID
|
||||
ldbcmdCommand.Parameters.Add(prmHymnalID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnalName As New SqlClient.SqlParameter
|
||||
prmHymnalName.ParameterName = "@hymnal_name"
|
||||
prmHymnalName.SqlDbType = SqlDbType.VarChar
|
||||
prmHymnalName.Size = MyGlobals.HYMNAL_NAME_SIZE
|
||||
prmHymnalName.Value = mstrHymnalName
|
||||
ldbcmdCommand.Parameters.Add(prmHymnalName)
|
||||
Dim prmHymnalAbbreviation As New SqlClient.SqlParameter
|
||||
prmHymnalAbbreviation.ParameterName = "@hymnal_abbreviation"
|
||||
prmHymnalAbbreviation.SqlDbType = SqlDbType.VarChar
|
||||
prmHymnalAbbreviation.Size = MyGlobals.HYMNAL_ABBREVIATION_SIZE
|
||||
prmHymnalAbbreviation.Value = mstrHymnalAbbreviation
|
||||
ldbcmdCommand.Parameters.Add(prmHymnalAbbreviation)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End If
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Function DuplicateHymnalNameExists(ByVal lstrHymnalNameToCheck As String) As Boolean
|
||||
Try
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_hymnal_by_name"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnalName As New SqlClient.SqlParameter
|
||||
prmHymnalName.ParameterName = "@hymnal_name"
|
||||
prmHymnalName.SqlDbType = SqlDbType.VarChar
|
||||
prmHymnalName.Size = MyGlobals.HYMNAL_NAME_SIZE
|
||||
prmHymnalName.Value = lstrHymnalNameToCheck
|
||||
ldbcmdCommand.Parameters.Add(prmHymnalName)
|
||||
|
||||
Dim ldbdsHymnals As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsHymnals.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
For Each ldbrwRow In ldbdsHymnals.Tables(0).Rows
|
||||
If mguidHymnalID.Equals(CType(ldbrwRow.Item("hymnal_id"), Guid)) Then
|
||||
'OK
|
||||
Else
|
||||
ldbdsHymnals.Clear()
|
||||
Return True
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
ldbdsHymnals.Clear()
|
||||
Return False
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Function DuplicateHymnalAbbreviationExists(ByVal lstrHymnalAbbreviationToCheck As String) As Boolean
|
||||
Try
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_hymnal_by_abbreviation"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnalAbbreviation As New SqlClient.SqlParameter
|
||||
prmHymnalAbbreviation.ParameterName = "@hymnal_abbreviation"
|
||||
prmHymnalAbbreviation.SqlDbType = SqlDbType.VarChar
|
||||
prmHymnalAbbreviation.Size = MyGlobals.HYMNAL_ABBREVIATION_SIZE
|
||||
prmHymnalAbbreviation.Value = mstrHymnalAbbreviation
|
||||
ldbcmdCommand.Parameters.Add(prmHymnalAbbreviation)
|
||||
|
||||
Dim ldbdsHymnals As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsHymnals.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
For Each ldbrwRow In ldbdsHymnals.Tables(0).Rows
|
||||
If mguidHymnalID.Equals(CType(ldbrwRow.Item("hymnal_id"), Guid)) Then
|
||||
'OK
|
||||
Else
|
||||
ldbdsHymnals.Clear()
|
||||
Return True
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
ldbdsHymnals.Clear()
|
||||
Return False
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Property HymnalID() As Guid
|
||||
Get
|
||||
Return mguidHymnalID
|
||||
End Get
|
||||
|
||||
Set(ByVal lguidValue As Guid)
|
||||
mguidHymnalID = lguidValue
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property HymnalName() As String
|
||||
Get
|
||||
Return mstrHymnalName
|
||||
End Get
|
||||
|
||||
Set(ByVal sValue As String)
|
||||
mstrHymnalName = sValue.Trim
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property HymnalAbbreviation() As String
|
||||
Get
|
||||
Return mstrHymnalAbbreviation
|
||||
End Get
|
||||
|
||||
Set(ByVal sValue As String)
|
||||
mstrHymnalAbbreviation = sValue.Trim
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property ItemAlreadyPersisted() As Boolean
|
||||
Get
|
||||
Return m_blnObjectAlreadyPersisted
|
||||
End Get
|
||||
Set(ByVal Value As Boolean)
|
||||
m_blnObjectAlreadyPersisted = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Function Clone() As Object Implements ICloneable.Clone
|
||||
Dim lobjReturnValue As New clsHymnal
|
||||
lobjReturnValue.HymnalID = Me.HymnalID
|
||||
lobjReturnValue.HymnalName = Me.HymnalName
|
||||
lobjReturnValue.HymnalAbbreviation = Me.HymnalAbbreviation
|
||||
lobjReturnValue.ItemAlreadyPersisted = Me.ItemAlreadyPersisted
|
||||
|
||||
Return lobjReturnValue
|
||||
End Function
|
||||
|
||||
Public Function StateIsIdentical(ByVal lobjOtherHymnal As clsHymnal) As Boolean
|
||||
If Me.HymnalID.Equals(lobjOtherHymnal.HymnalID) _
|
||||
AndAlso Me.HymnalName = lobjOtherHymnal.HymnalName _
|
||||
AndAlso Me.HymnalAbbreviation = lobjOtherHymnal.HymnalAbbreviation Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End Function
|
||||
|
||||
Public Function Validate(ByRef lstrErrorString As String) As Boolean
|
||||
lstrErrorString = ""
|
||||
If Me.HymnalName.Length = 0 Then
|
||||
lstrErrorString = "Hymnal Name is required"
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Me.DuplicateHymnalNameExists(Me.HymnalName) Then
|
||||
lstrErrorString = "Given Hymnal Name already exists"
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Me.DuplicateHymnalAbbreviationExists(Me.HymnalAbbreviation) Then
|
||||
lstrErrorString = "Given Hymnal Abbreviation already exists"
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Public Function OKToDelete(ByRef lstrReferencedByString As String) As Boolean
|
||||
Dim lblnReturnValue As Boolean
|
||||
|
||||
lblnReturnValue = True
|
||||
|
||||
lstrReferencedByString = ""
|
||||
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_hymnal_isreferenced"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnalID As New SqlClient.SqlParameter
|
||||
prmHymnalID.ParameterName = "@hymnal_id"
|
||||
prmHymnalID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnalID.Size = 5
|
||||
prmHymnalID.Value = mguidHymnalID
|
||||
ldbcmdCommand.Parameters.Add(prmHymnalID)
|
||||
|
||||
Dim ldbdsHymnals As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsHymnals.Tables(0).Rows.Count > 0 Then
|
||||
lblnReturnValue = False
|
||||
|
||||
Dim ldbrwRow As DataRow
|
||||
For Each ldbrwRow In ldbdsHymnals.Tables(0).Rows
|
||||
If Not ldbrwRow.IsNull("table_referencing_instance") Then
|
||||
If lstrReferencedByString.Length = 0 Then
|
||||
lstrReferencedByString = CType(ldbrwRow.Item("table_referencing_instance"), String) + "(s)"
|
||||
Else
|
||||
lstrReferencedByString = lstrReferencedByString + " and " + CType(ldbrwRow.Item("table_referencing_instance"), String) + "(s)"
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
|
||||
End If
|
||||
ldbdsHymnals.Clear()
|
||||
|
||||
Return lblnReturnValue
|
||||
|
||||
End Function
|
||||
|
||||
Public Overrides Function ToString() As String
|
||||
Return mstrHymnalName
|
||||
End Function
|
||||
|
||||
Public Sub WriteXML(ByRef objXMLWriter As XmlTextWriter)
|
||||
objXMLWriter.WriteStartElement("Hymnal")
|
||||
|
||||
objXMLWriter.WriteElementString("HymnalID", Me.HymnalID.ToString)
|
||||
objXMLWriter.WriteElementString("HymnalName", Me.HymnalName)
|
||||
objXMLWriter.WriteElementString("HymnalAbbreviation", Me.HymnalAbbreviation)
|
||||
|
||||
objXMLWriter.WriteEndElement()
|
||||
End Sub
|
||||
|
||||
Public Shared Function GetAllHymnals() As System.Collections.Generic.List(Of clsHymnal)
|
||||
Dim lguidHymnalID As Guid
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
Dim lobjHymnal As clsHymnal
|
||||
Dim lcolHymnals As New System.Collections.Generic.List(Of clsHymnal)
|
||||
|
||||
ldbcmdCommand.CommandText = "sel_hymnal_all"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
Dim ldbdsHymnals As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsHymnals.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
For Each ldbrwRow In ldbdsHymnals.Tables(0).Rows
|
||||
lguidHymnalID = CType(ldbrwRow.Item("hymnal_id"), Guid)
|
||||
|
||||
If MyGlobals.CachedObjectExists(lguidHymnalID.ToString) Then
|
||||
lobjHymnal = CType(MyGlobals.CachedObjectRetrieve(lguidHymnalID.ToString), clsHymnal)
|
||||
Else
|
||||
'lobjHymnal = New clsHymnal(lguidHymnalID)
|
||||
lobjHymnal = New clsHymnal(ldbrwRow)
|
||||
End If
|
||||
lcolHymnals.Add(lobjHymnal)
|
||||
Next
|
||||
End If
|
||||
ldbdsHymnals.Clear()
|
||||
|
||||
Return lcolHymnals
|
||||
End Function
|
||||
|
||||
Public Shared Sub AddAllHymnalsToCache()
|
||||
If MyGlobals.g_objObjectTypesCached.Contains("Hymnals") = False Then
|
||||
GetAllHymnals()
|
||||
MyGlobals.g_objObjectTypesCached.Add("Hymnals")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
370
clsInstrumentation.vb
Normal file
370
clsInstrumentation.vb
Normal file
@@ -0,0 +1,370 @@
|
||||
Imports System.Data
|
||||
Imports System.Xml
|
||||
|
||||
Public Class clsInstrumentation
|
||||
Implements ICloneable
|
||||
|
||||
Private mguidInstrumentationID As Guid
|
||||
Private mstrInstrumentationName As String
|
||||
Private m_blnObjectAlreadyPersisted As Boolean
|
||||
|
||||
Public Sub New()
|
||||
mguidInstrumentationID = Guid.NewGuid
|
||||
mstrInstrumentationName = ""
|
||||
m_blnObjectAlreadyPersisted = False
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal lstrInstrumentationName As String)
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_instrumentation_by_name"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmInstrumentationName As New SqlClient.SqlParameter
|
||||
prmInstrumentationName.ParameterName = "@instrumentation_name"
|
||||
prmInstrumentationName.SqlDbType = SqlDbType.VarChar
|
||||
prmInstrumentationName.Size = MyGlobals.INSTRUMENTATION_NAME_SIZE
|
||||
prmInstrumentationName.Value = lstrInstrumentationName
|
||||
ldbcmdCommand.Parameters.Add(prmInstrumentationName)
|
||||
|
||||
Dim ldbdsInstrumentations As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsInstrumentations.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
ldbrwRow = ldbdsInstrumentations.Tables(0).Rows(0)
|
||||
|
||||
PopulateFromDBRow(ldbrwRow)
|
||||
|
||||
ldbdsInstrumentations.Clear()
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
Else
|
||||
ldbdsInstrumentations.Clear()
|
||||
mguidInstrumentationID = Guid.NewGuid
|
||||
mstrInstrumentationName = lstrInstrumentationName.Trim
|
||||
m_blnObjectAlreadyPersisted = False
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal lguidInstrumentationID As Guid)
|
||||
mguidInstrumentationID = lguidInstrumentationID
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_instrumentation"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmInstrumentationID As New SqlClient.SqlParameter
|
||||
prmInstrumentationID.ParameterName = "@instrumentation_id"
|
||||
prmInstrumentationID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmInstrumentationID.Size = 5
|
||||
prmInstrumentationID.Value = lguidInstrumentationID
|
||||
ldbcmdCommand.Parameters.Add(prmInstrumentationID)
|
||||
|
||||
Dim ldbdsInstrumentations As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsInstrumentations.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
ldbrwRow = ldbdsInstrumentations.Tables(0).Rows(0)
|
||||
PopulateFromDBRow(ldbrwRow)
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
MyGlobals.AddCachedObject(Me, Me.InstrumentationID.ToString)
|
||||
End If
|
||||
ldbdsInstrumentations.Clear()
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal ldbrwRow As DataRow)
|
||||
PopulateFromDBRow(ldbrwRow)
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
MyGlobals.AddCachedObject(Me, Me.InstrumentationID.ToString)
|
||||
End Sub
|
||||
|
||||
Private Sub PopulateFromDBRow(ByVal ldbrwRow As DataRow)
|
||||
mguidInstrumentationID = CType(ldbrwRow.Item("instrumentation_id"), Guid)
|
||||
|
||||
mstrInstrumentationName = CType(ldbrwRow.Item("instrumentation_name"), String)
|
||||
End Sub
|
||||
|
||||
Public Function Delete() As Boolean
|
||||
Try
|
||||
MyGlobals.RemoveCachedObject(Me.InstrumentationID.ToString)
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "del_instrumentation"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmInstrumentationID As New SqlClient.SqlParameter
|
||||
prmInstrumentationID.ParameterName = "@instrumentation_id"
|
||||
prmInstrumentationID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmInstrumentationID.Size = 5
|
||||
prmInstrumentationID.Value = mguidInstrumentationID
|
||||
ldbcmdCommand.Parameters.Add(prmInstrumentationID)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
m_blnObjectAlreadyPersisted = False
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Function Save() As Boolean
|
||||
Try
|
||||
MyGlobals.AddCachedObject(Me, Me.InstrumentationID.ToString)
|
||||
|
||||
If m_blnObjectAlreadyPersisted Then
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "upd_instrumentation"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmInstrumentationID As New SqlClient.SqlParameter
|
||||
prmInstrumentationID.ParameterName = "@instrumentation_id"
|
||||
prmInstrumentationID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmInstrumentationID.Size = 5
|
||||
prmInstrumentationID.Value = mguidInstrumentationID
|
||||
ldbcmdCommand.Parameters.Add(prmInstrumentationID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmInstrumentationName As New SqlClient.SqlParameter
|
||||
prmInstrumentationName.ParameterName = "@instrumentation_name"
|
||||
prmInstrumentationName.SqlDbType = SqlDbType.VarChar
|
||||
prmInstrumentationName.Size = MyGlobals.INSTRUMENTATION_NAME_SIZE
|
||||
prmInstrumentationName.Value = mstrInstrumentationName
|
||||
ldbcmdCommand.Parameters.Add(prmInstrumentationName)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "ins_instrumentation"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmInstrumentationID As New SqlClient.SqlParameter
|
||||
prmInstrumentationID.ParameterName = "@instrumentation_id"
|
||||
prmInstrumentationID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmInstrumentationID.Size = 5
|
||||
prmInstrumentationID.Value = mguidInstrumentationID
|
||||
ldbcmdCommand.Parameters.Add(prmInstrumentationID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmInstrumentationName As New SqlClient.SqlParameter
|
||||
prmInstrumentationName.ParameterName = "@instrumentation_name"
|
||||
prmInstrumentationName.SqlDbType = SqlDbType.VarChar
|
||||
prmInstrumentationName.Size = MyGlobals.INSTRUMENTATION_NAME_SIZE
|
||||
prmInstrumentationName.Value = mstrInstrumentationName
|
||||
ldbcmdCommand.Parameters.Add(prmInstrumentationName)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End If
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Function DuplicateExists(ByVal lstrInstrumentationNameToCheck As String) As Boolean
|
||||
Try
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_instrumentation_by_name"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmInstrumentationName As New SqlClient.SqlParameter
|
||||
prmInstrumentationName.ParameterName = "@instrumentation_name"
|
||||
prmInstrumentationName.SqlDbType = SqlDbType.VarChar
|
||||
prmInstrumentationName.Size = MyGlobals.INSTRUMENTATION_NAME_SIZE
|
||||
prmInstrumentationName.Value = lstrInstrumentationNameToCheck
|
||||
ldbcmdCommand.Parameters.Add(prmInstrumentationName)
|
||||
|
||||
Dim ldbdsInstrumentations As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsInstrumentations.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
For Each ldbrwRow In ldbdsInstrumentations.Tables(0).Rows
|
||||
If mguidInstrumentationID.Equals(CType(ldbrwRow.Item("instrumentation_id"), Guid)) Then
|
||||
'OK
|
||||
Else
|
||||
ldbdsInstrumentations.Clear()
|
||||
Return True
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
ldbdsInstrumentations.Clear()
|
||||
Return False
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Property InstrumentationID() As Guid
|
||||
Get
|
||||
Return mguidInstrumentationID
|
||||
End Get
|
||||
|
||||
Set(ByVal lguidValue As Guid)
|
||||
mguidInstrumentationID = lguidValue
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property InstrumentationName() As String
|
||||
Get
|
||||
Return mstrInstrumentationName
|
||||
End Get
|
||||
|
||||
Set(ByVal sValue As String)
|
||||
mstrInstrumentationName = sValue.Trim
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property ItemAlreadyPersisted() As Boolean
|
||||
Get
|
||||
Return m_blnObjectAlreadyPersisted
|
||||
End Get
|
||||
Set(ByVal Value As Boolean)
|
||||
m_blnObjectAlreadyPersisted = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Function Clone() As Object Implements ICloneable.Clone
|
||||
Dim lobjReturnValue As New clsInstrumentation
|
||||
lobjReturnValue.InstrumentationID = Me.InstrumentationID
|
||||
lobjReturnValue.InstrumentationName = Me.InstrumentationName
|
||||
lobjReturnValue.ItemAlreadyPersisted = Me.ItemAlreadyPersisted
|
||||
|
||||
Return lobjReturnValue
|
||||
End Function
|
||||
|
||||
Public Function StateIsIdentical(ByVal lobjOtherInstrumentation As clsInstrumentation) As Boolean
|
||||
If Me.InstrumentationID.Equals(lobjOtherInstrumentation.InstrumentationID) _
|
||||
AndAlso Me.InstrumentationName = lobjOtherInstrumentation.InstrumentationName Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End Function
|
||||
|
||||
Public Function Validate(ByRef lstrErrorString As String) As Boolean
|
||||
lstrErrorString = ""
|
||||
If Me.InstrumentationName.Length = 0 Then
|
||||
lstrErrorString = "Instrumentation Name is required"
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Me.DuplicateExists(Me.InstrumentationName) Then
|
||||
lstrErrorString = "Given Instrumentation Name already exists"
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Public Function OKToDelete(ByRef lstrReferencedByString As String) As Boolean
|
||||
Dim lblnReturnValue As Boolean
|
||||
|
||||
lblnReturnValue = True
|
||||
|
||||
lstrReferencedByString = ""
|
||||
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_instrumentation_isreferenced"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmInstrumentationID As New SqlClient.SqlParameter
|
||||
prmInstrumentationID.ParameterName = "@instrumentation_id"
|
||||
prmInstrumentationID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmInstrumentationID.Size = 5
|
||||
prmInstrumentationID.Value = mguidInstrumentationID
|
||||
ldbcmdCommand.Parameters.Add(prmInstrumentationID)
|
||||
|
||||
Dim ldbdsInstrumentations As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsInstrumentations.Tables(0).Rows.Count > 0 Then
|
||||
lblnReturnValue = False
|
||||
|
||||
Dim ldbrwRow As DataRow
|
||||
For Each ldbrwRow In ldbdsInstrumentations.Tables(0).Rows
|
||||
If Not ldbrwRow.IsNull("table_referencing_instance") Then
|
||||
If lstrReferencedByString.Length = 0 Then
|
||||
lstrReferencedByString = CType(ldbrwRow.Item("table_referencing_instance"), String) + "(s)"
|
||||
Else
|
||||
lstrReferencedByString = lstrReferencedByString + " and " + CType(ldbrwRow.Item("table_referencing_instance"), String) + "(s)"
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
|
||||
End If
|
||||
ldbdsInstrumentations.Clear()
|
||||
|
||||
Return lblnReturnValue
|
||||
|
||||
End Function
|
||||
|
||||
Public Overrides Function ToString() As String
|
||||
Return mstrInstrumentationName
|
||||
End Function
|
||||
|
||||
Public Sub WriteXML(ByRef objXMLWriter As XmlTextWriter)
|
||||
objXMLWriter.WriteStartElement("Instrumentation")
|
||||
|
||||
objXMLWriter.WriteElementString("InstrumentationID", Me.InstrumentationID.ToString)
|
||||
objXMLWriter.WriteElementString("InstrumentationName", Me.InstrumentationName)
|
||||
|
||||
objXMLWriter.WriteEndElement()
|
||||
End Sub
|
||||
|
||||
Public Shared Function GetAllInstrumentations() As System.Collections.Generic.List(Of clsInstrumentation)
|
||||
Dim lguidInstrumentationID As Guid
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
Dim lobjInstrumentation As clsInstrumentation
|
||||
Dim lcolInstrumentations As New System.Collections.Generic.List(Of clsInstrumentation)
|
||||
|
||||
ldbcmdCommand.CommandText = "sel_instrumentation_all"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
Dim ldbdsInstrumentations As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsInstrumentations.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
For Each ldbrwRow In ldbdsInstrumentations.Tables(0).Rows
|
||||
lguidInstrumentationID = CType(ldbrwRow.Item("instrumentation_id"), Guid)
|
||||
|
||||
If MyGlobals.CachedObjectExists(lguidInstrumentationID.ToString) Then
|
||||
lobjInstrumentation = CType(MyGlobals.CachedObjectRetrieve(lguidInstrumentationID.ToString), clsInstrumentation)
|
||||
Else
|
||||
'lobjInstrumentation = New clsInstrumentation(lguidInstrumentationID)
|
||||
lobjInstrumentation = New clsInstrumentation(ldbrwRow)
|
||||
End If
|
||||
lcolInstrumentations.Add(lobjInstrumentation)
|
||||
Next
|
||||
End If
|
||||
ldbdsInstrumentations.Clear()
|
||||
|
||||
Return lcolInstrumentations
|
||||
End Function
|
||||
|
||||
Public Shared Sub AddAllInstrumentationsToCache()
|
||||
If MyGlobals.g_objObjectTypesCached.Contains("Instrumentations") = False Then
|
||||
GetAllInstrumentations()
|
||||
MyGlobals.g_objObjectTypesCached.Add("Instrumentations")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
398
clsPublisher.vb
Normal file
398
clsPublisher.vb
Normal file
@@ -0,0 +1,398 @@
|
||||
Imports System.Data
|
||||
Imports System.Xml
|
||||
|
||||
Public Class clsPublisher
|
||||
Implements ICloneable
|
||||
|
||||
Private mguidPublisherID As Guid
|
||||
Private mstrPublisherName As String
|
||||
Private mstrPublisherStreamingAllowed As String
|
||||
Private m_blnObjectAlreadyPersisted As Boolean
|
||||
|
||||
Public Sub New()
|
||||
mguidPublisherID = Guid.NewGuid
|
||||
mstrPublisherName = String.Empty
|
||||
mstrPublisherStreamingAllowed = "Unknown"
|
||||
m_blnObjectAlreadyPersisted = False
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal lstrPublisherName As String, ByVal lstrPublisherStreamingAllowed As String)
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_publisher_by_name"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmPublisherName As New SqlClient.SqlParameter
|
||||
prmPublisherName.ParameterName = "@publisher_name"
|
||||
prmPublisherName.SqlDbType = SqlDbType.VarChar
|
||||
prmPublisherName.Size = MyGlobals.PUBLISHER_NAME_SIZE
|
||||
prmPublisherName.Value = lstrPublisherName
|
||||
ldbcmdCommand.Parameters.Add(prmPublisherName)
|
||||
|
||||
Dim ldbdsPublishers As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsPublishers.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
ldbrwRow = ldbdsPublishers.Tables(0).Rows(0)
|
||||
PopulateFromDBRow(ldbrwRow)
|
||||
|
||||
ldbdsPublishers.Clear()
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
Else
|
||||
ldbdsPublishers.Clear()
|
||||
mguidPublisherID = Guid.NewGuid
|
||||
mstrPublisherName = lstrPublisherName
|
||||
mstrPublisherStreamingAllowed = lstrPublisherStreamingAllowed
|
||||
m_blnObjectAlreadyPersisted = False
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal lguidPublisherID As Guid)
|
||||
mguidPublisherID = lguidPublisherID
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_publisher"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmPublisherID As New SqlClient.SqlParameter
|
||||
prmPublisherID.ParameterName = "@publisher_id"
|
||||
prmPublisherID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmPublisherID.Size = 5
|
||||
prmPublisherID.Value = lguidPublisherID
|
||||
ldbcmdCommand.Parameters.Add(prmPublisherID)
|
||||
|
||||
Dim ldbdsPublishers As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsPublishers.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
ldbrwRow = ldbdsPublishers.Tables(0).Rows(0)
|
||||
PopulateFromDBRow(ldbrwRow)
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
MyGlobals.AddCachedObject(Me, Me.PublisherID.ToString)
|
||||
End If
|
||||
ldbdsPublishers.Clear()
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal ldbrwRow As DataRow)
|
||||
PopulateFromDBRow(ldbrwRow)
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
MyGlobals.AddCachedObject(Me, Me.PublisherID.ToString)
|
||||
End Sub
|
||||
|
||||
Private Sub PopulateFromDBRow(ByVal ldbrwRow As DataRow)
|
||||
mguidPublisherID = CType(ldbrwRow.Item("publisher_id"), Guid)
|
||||
|
||||
mstrPublisherName = CType(ldbrwRow.Item("publisher_name"), String)
|
||||
mstrPublisherStreamingAllowed = CType(ldbrwRow.Item("publisher_streaming_allowed"), String)
|
||||
End Sub
|
||||
|
||||
Public Function Delete() As Boolean
|
||||
Try
|
||||
MyGlobals.RemoveCachedObject(Me.PublisherID.ToString)
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "del_publisher"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmPublisherID As New SqlClient.SqlParameter
|
||||
prmPublisherID.ParameterName = "@publisher_id"
|
||||
prmPublisherID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmPublisherID.Size = 5
|
||||
prmPublisherID.Value = mguidPublisherID
|
||||
ldbcmdCommand.Parameters.Add(prmPublisherID)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Function Save() As Boolean
|
||||
Try
|
||||
MyGlobals.AddCachedObject(Me, Me.PublisherID.ToString)
|
||||
|
||||
If m_blnObjectAlreadyPersisted Then
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "upd_publisher"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmPublisherID As New SqlClient.SqlParameter
|
||||
prmPublisherID.ParameterName = "@publisher_id"
|
||||
prmPublisherID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmPublisherID.Size = 5
|
||||
prmPublisherID.Value = mguidPublisherID
|
||||
ldbcmdCommand.Parameters.Add(prmPublisherID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmPublisherName As New SqlClient.SqlParameter
|
||||
prmPublisherName.ParameterName = "@publisher_name"
|
||||
prmPublisherName.SqlDbType = SqlDbType.VarChar
|
||||
prmPublisherName.Size = MyGlobals.PUBLISHER_NAME_SIZE
|
||||
prmPublisherName.Value = mstrPublisherName
|
||||
ldbcmdCommand.Parameters.Add(prmPublisherName)
|
||||
|
||||
Dim prmPublisherStreamingAllowed As New SqlClient.SqlParameter
|
||||
prmPublisherStreamingAllowed.ParameterName = "@publisher_streaming_allowed"
|
||||
prmPublisherStreamingAllowed.SqlDbType = SqlDbType.VarChar
|
||||
prmPublisherStreamingAllowed.Size = MyGlobals.PUBLISHER_STREAMING_ALLOWED_SIZE
|
||||
prmPublisherStreamingAllowed.Value = mstrPublisherStreamingAllowed
|
||||
ldbcmdCommand.Parameters.Add(prmPublisherStreamingAllowed)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "ins_publisher"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmPublisherID As New SqlClient.SqlParameter
|
||||
prmPublisherID.ParameterName = "@publisher_id"
|
||||
prmPublisherID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmPublisherID.Size = 5
|
||||
prmPublisherID.Value = mguidPublisherID
|
||||
ldbcmdCommand.Parameters.Add(prmPublisherID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmPublisherName As New SqlClient.SqlParameter
|
||||
prmPublisherName.ParameterName = "@publisher_name"
|
||||
prmPublisherName.SqlDbType = SqlDbType.VarChar
|
||||
prmPublisherName.Size = MyGlobals.PUBLISHER_NAME_SIZE
|
||||
prmPublisherName.Value = mstrPublisherName
|
||||
ldbcmdCommand.Parameters.Add(prmPublisherName)
|
||||
|
||||
Dim prmPublisherStreamingAllowed As New SqlClient.SqlParameter
|
||||
prmPublisherStreamingAllowed.ParameterName = "@publisher_streaming_allowed"
|
||||
prmPublisherStreamingAllowed.SqlDbType = SqlDbType.VarChar
|
||||
prmPublisherStreamingAllowed.Size = MyGlobals.PUBLISHER_STREAMING_ALLOWED_SIZE
|
||||
prmPublisherStreamingAllowed.Value = mstrPublisherStreamingAllowed
|
||||
ldbcmdCommand.Parameters.Add(prmPublisherStreamingAllowed)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End If
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Function DuplicateExists(ByVal lstrPublisherNameToCheck As String) As Boolean
|
||||
Try
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_publisher_by_name"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmPublisherName As New SqlClient.SqlParameter
|
||||
prmPublisherName.ParameterName = "@publisher_name"
|
||||
prmPublisherName.SqlDbType = SqlDbType.VarChar
|
||||
prmPublisherName.Size = MyGlobals.PUBLISHER_NAME_SIZE
|
||||
prmPublisherName.Value = lstrPublisherNameToCheck
|
||||
ldbcmdCommand.Parameters.Add(prmPublisherName)
|
||||
|
||||
Dim ldbdsPublishers As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsPublishers.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
For Each ldbrwRow In ldbdsPublishers.Tables(0).Rows
|
||||
If mguidPublisherID.Equals(CType(ldbrwRow.Item("publisher_id"), Guid)) Then
|
||||
'OK
|
||||
Else
|
||||
ldbdsPublishers.Clear()
|
||||
Return True
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
ldbdsPublishers.Clear()
|
||||
Return False
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Property PublisherID() As Guid
|
||||
Get
|
||||
Return mguidPublisherID
|
||||
End Get
|
||||
|
||||
Set(ByVal lguidValue As Guid)
|
||||
mguidPublisherID = lguidValue
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property PublisherName() As String
|
||||
Get
|
||||
Return mstrPublisherName
|
||||
End Get
|
||||
|
||||
Set(ByVal sValue As String)
|
||||
mstrPublisherName = sValue.Trim
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property PublisherStreamingAllowed() As String
|
||||
Get
|
||||
Return mstrPublisherStreamingAllowed
|
||||
End Get
|
||||
|
||||
Set(ByVal sValue As String)
|
||||
mstrPublisherStreamingAllowed = sValue.Trim
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property ItemAlreadyPersisted() As Boolean
|
||||
Get
|
||||
Return m_blnObjectAlreadyPersisted
|
||||
End Get
|
||||
Set(ByVal Value As Boolean)
|
||||
m_blnObjectAlreadyPersisted = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Function Clone() As Object Implements ICloneable.Clone
|
||||
Dim lobjReturnValue As New clsPublisher
|
||||
lobjReturnValue.PublisherID = Me.PublisherID
|
||||
lobjReturnValue.PublisherName = Me.PublisherName
|
||||
lobjReturnValue.PublisherStreamingAllowed = Me.PublisherStreamingAllowed
|
||||
lobjReturnValue.ItemAlreadyPersisted = Me.ItemAlreadyPersisted
|
||||
|
||||
Return lobjReturnValue
|
||||
End Function
|
||||
|
||||
Public Function StateIsIdentical(ByVal lobjOtherPublisher As clsPublisher) As Boolean
|
||||
If Me.PublisherID.Equals(lobjOtherPublisher.PublisherID) _
|
||||
AndAlso Me.PublisherName = lobjOtherPublisher.PublisherName _
|
||||
AndAlso Me.PublisherStreamingAllowed = lobjOtherPublisher.PublisherStreamingAllowed Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End Function
|
||||
|
||||
Public Function Validate(ByRef lstrErrorString As String) As Boolean
|
||||
lstrErrorString = ""
|
||||
If Me.PublisherName.Length = 0 Then
|
||||
lstrErrorString = "Publisher Name is required"
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Me.DuplicateExists(Me.PublisherName) Then
|
||||
lstrErrorString = "Given Publisher Name already exists"
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Public Function OKToDelete(ByRef lstrReferencedByString As String) As Boolean
|
||||
Dim lblnReturnValue As Boolean
|
||||
|
||||
lblnReturnValue = True
|
||||
|
||||
lstrReferencedByString = ""
|
||||
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_publisher_isreferenced"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmPublisherID As New SqlClient.SqlParameter
|
||||
prmPublisherID.ParameterName = "@publisher_id"
|
||||
prmPublisherID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmPublisherID.Size = 5
|
||||
prmPublisherID.Value = mguidPublisherID
|
||||
ldbcmdCommand.Parameters.Add(prmPublisherID)
|
||||
|
||||
Dim ldbdsPublishers As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsPublishers.Tables(0).Rows.Count > 0 Then
|
||||
lblnReturnValue = False
|
||||
|
||||
Dim ldbrwRow As DataRow
|
||||
For Each ldbrwRow In ldbdsPublishers.Tables(0).Rows
|
||||
If Not ldbrwRow.IsNull("table_referencing_instance") Then
|
||||
If lstrReferencedByString.Length = 0 Then
|
||||
lstrReferencedByString = CType(ldbrwRow.Item("table_referencing_instance"), String) + "(s)"
|
||||
Else
|
||||
lstrReferencedByString = lstrReferencedByString + " and " + CType(ldbrwRow.Item("table_referencing_instance"), String) + "(s)"
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
|
||||
End If
|
||||
ldbdsPublishers.Clear()
|
||||
|
||||
Return lblnReturnValue
|
||||
|
||||
End Function
|
||||
|
||||
Public Overrides Function ToString() As String
|
||||
Return mstrPublisherName
|
||||
End Function
|
||||
|
||||
Public Sub WriteXML(ByRef objXMLWriter As XmlTextWriter)
|
||||
objXMLWriter.WriteStartElement("Publisher")
|
||||
|
||||
objXMLWriter.WriteElementString("PublisherID", Me.PublisherID.ToString)
|
||||
objXMLWriter.WriteElementString("PublisherName", Me.PublisherName)
|
||||
objXMLWriter.WriteElementString("PublisherStreamingAllowed", Me.PublisherStreamingAllowed)
|
||||
objXMLWriter.WriteEndElement()
|
||||
End Sub
|
||||
|
||||
Public Shared Function GetAllPublishers() As System.Collections.Generic.List(Of clsPublisher)
|
||||
Dim lguidPublisherID As Guid
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
Dim lobjPublisher As clsPublisher
|
||||
Dim lcolPublishers As New System.Collections.Generic.List(Of clsPublisher)
|
||||
|
||||
ldbcmdCommand.CommandText = "sel_publisher_all"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
Dim ldbdsPublishers As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsPublishers.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
For Each ldbrwRow In ldbdsPublishers.Tables(0).Rows
|
||||
lguidPublisherID = CType(ldbrwRow.Item("publisher_id"), Guid)
|
||||
|
||||
If MyGlobals.CachedObjectExists(lguidPublisherID.ToString) Then
|
||||
lobjPublisher = CType(MyGlobals.CachedObjectRetrieve(lguidPublisherID.ToString), clsPublisher)
|
||||
Else
|
||||
'lobjPublisher = New clsPublisher(lguidPublisherID)
|
||||
lobjPublisher = New clsPublisher(ldbrwRow)
|
||||
End If
|
||||
lcolPublishers.Add(lobjPublisher)
|
||||
Next
|
||||
End If
|
||||
ldbdsPublishers.Clear()
|
||||
|
||||
Return lcolPublishers
|
||||
End Function
|
||||
|
||||
Public Shared Sub AddAllPublishersToCache()
|
||||
If MyGlobals.g_objObjectTypesCached.Contains("Publishers") = False Then
|
||||
GetAllPublishers()
|
||||
MyGlobals.g_objObjectTypesCached.Add("Publishers")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
672
clsWork.vb
Normal file
672
clsWork.vb
Normal file
@@ -0,0 +1,672 @@
|
||||
Imports System.Data
|
||||
Imports System.Text
|
||||
Imports System.Windows.Forms
|
||||
Imports System.Xml
|
||||
|
||||
Public Class clsWork
|
||||
Implements ICloneable
|
||||
|
||||
Private m_guidWorkID As Guid
|
||||
Private m_objComposer As clsComposer
|
||||
Private m_objBook As clsBook
|
||||
Private m_intPageNumber As Integer
|
||||
Private m_strWorkName As String
|
||||
Private m_strOpusInfo As String
|
||||
Private m_objInstrumentation As clsInstrumentation
|
||||
Private m_objHymnTuneName As clsHymnTuneName
|
||||
Private m_blnObjectAlreadyPersisted As Boolean
|
||||
|
||||
Public Sub New()
|
||||
m_guidWorkID = Guid.NewGuid
|
||||
m_objComposer = Nothing
|
||||
m_objBook = Nothing
|
||||
m_intPageNumber = 0
|
||||
m_strWorkName = ""
|
||||
m_strOpusInfo = ""
|
||||
m_objInstrumentation = Nothing
|
||||
m_objHymnTuneName = Nothing
|
||||
m_blnObjectAlreadyPersisted = False
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal objComposer As clsComposer, ByVal objInstrumentation As clsInstrumentation, ByVal objBook As clsBook, ByVal intPageNumber As Integer, ByVal strWorkName As String, ByVal strOpusInfo As String, ByVal objHymnTuneName As clsHymnTuneName)
|
||||
m_guidWorkID = Guid.NewGuid
|
||||
m_objComposer = objComposer
|
||||
m_objInstrumentation = objInstrumentation
|
||||
m_objBook = objBook
|
||||
m_intPageNumber = intPageNumber
|
||||
m_strWorkName = strWorkName
|
||||
m_strOpusInfo = strOpusInfo
|
||||
m_objHymnTuneName = objHymnTuneName
|
||||
m_blnObjectAlreadyPersisted = False
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal guidWorkID As Guid)
|
||||
'm_guidWorkID = guidWorkID
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "sel_work"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmWorkID As New SqlClient.SqlParameter
|
||||
prmWorkID.ParameterName = "@work_id"
|
||||
prmWorkID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmWorkID.Size = 5
|
||||
prmWorkID.Value = guidWorkID
|
||||
ldbcmdCommand.Parameters.Add(prmWorkID)
|
||||
|
||||
Dim ldbdsWorks As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsWorks.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
ldbrwRow = ldbdsWorks.Tables(0).Rows(0)
|
||||
|
||||
PopulateFromDBRow(ldbrwRow)
|
||||
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
MyGlobals.AddCachedObject(Me, Me.WorkID.ToString)
|
||||
Else
|
||||
m_guidWorkID = Guid.NewGuid
|
||||
End If
|
||||
ldbdsWorks.Clear()
|
||||
End Sub
|
||||
|
||||
Public Sub New(ByVal ldbrwRow As DataRow)
|
||||
PopulateFromDBRow(ldbrwRow)
|
||||
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
MyGlobals.AddCachedObject(Me, Me.WorkID.ToString)
|
||||
End Sub
|
||||
|
||||
Private Sub PopulateFromDBRow(ByVal ldbrwRow As DataRow)
|
||||
m_guidWorkID = CType(ldbrwRow.Item("work_id"), Guid)
|
||||
|
||||
If ldbrwRow.IsNull("composer_id") Then
|
||||
m_objComposer = Nothing
|
||||
Else
|
||||
Dim guidComposerID As Guid = CType(ldbrwRow.Item("composer_id"), Guid)
|
||||
If MyGlobals.CachedObjectExists(guidComposerID.ToString) Then
|
||||
m_objComposer = CType(MyGlobals.CachedObjectRetrieve(guidComposerID.ToString), clsComposer)
|
||||
Else
|
||||
m_objComposer = New clsComposer(guidComposerID)
|
||||
End If
|
||||
End If
|
||||
|
||||
If ldbrwRow.IsNull("book_id") Then
|
||||
m_objBook = Nothing
|
||||
Else
|
||||
Dim guidBookID As Guid = CType(ldbrwRow.Item("book_id"), Guid)
|
||||
If MyGlobals.CachedObjectExists(guidBookID.ToString) Then
|
||||
m_objBook = CType(MyGlobals.CachedObjectRetrieve(guidBookID.ToString), clsBook)
|
||||
Else
|
||||
m_objBook = New clsBook(guidBookID)
|
||||
End If
|
||||
End If
|
||||
|
||||
m_intPageNumber = CType(ldbrwRow.Item("page_number"), Integer)
|
||||
m_strWorkName = CType(ldbrwRow.Item("work_name"), String)
|
||||
m_strOpusInfo = CType(ldbrwRow.Item("opus_info"), String)
|
||||
|
||||
If ldbrwRow.IsNull("instrumentation_id") Then
|
||||
m_objInstrumentation = Nothing
|
||||
Else
|
||||
Dim guidInstrumentationID As Guid = CType(ldbrwRow.Item("instrumentation_id"), Guid)
|
||||
If MyGlobals.CachedObjectExists(guidInstrumentationID.ToString) Then
|
||||
m_objInstrumentation = CType(MyGlobals.CachedObjectRetrieve(guidInstrumentationID.ToString), clsInstrumentation)
|
||||
Else
|
||||
m_objInstrumentation = New clsInstrumentation(guidInstrumentationID)
|
||||
End If
|
||||
End If
|
||||
|
||||
If ldbrwRow.IsNull("hymn_tune_name_id") Then
|
||||
m_objHymnTuneName = Nothing
|
||||
Else
|
||||
Dim guidHymnTuneNameID As Guid = CType(ldbrwRow.Item("hymn_tune_name_id"), Guid)
|
||||
If MyGlobals.CachedObjectExists(guidHymnTuneNameID.ToString) Then
|
||||
m_objHymnTuneName = CType(MyGlobals.CachedObjectRetrieve(guidHymnTuneNameID.ToString), clsHymnTuneName)
|
||||
Else
|
||||
m_objHymnTuneName = New clsHymnTuneName(guidHymnTuneNameID)
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Function Delete() As Boolean
|
||||
Try
|
||||
MyGlobals.RemoveCachedObject(Me.WorkID.ToString)
|
||||
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "del_work"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmWorkID As New SqlClient.SqlParameter
|
||||
prmWorkID.ParameterName = "@work_id"
|
||||
prmWorkID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmWorkID.Size = 5
|
||||
prmWorkID.Value = m_guidWorkID
|
||||
ldbcmdCommand.Parameters.Add(prmWorkID)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Function Save() As Boolean
|
||||
Try
|
||||
If Not m_objComposer Is Nothing Then
|
||||
If Not m_objComposer.ItemAlreadyPersisted Then
|
||||
m_objComposer.Save()
|
||||
End If
|
||||
End If
|
||||
If Not m_objBook Is Nothing Then
|
||||
If Not m_objBook.ItemAlreadyPersisted Then
|
||||
m_objBook.Save()
|
||||
End If
|
||||
End If
|
||||
If Not m_objHymnTuneName Is Nothing Then
|
||||
If Not m_objHymnTuneName.ItemAlreadyPersisted Then
|
||||
m_objHymnTuneName.Save()
|
||||
End If
|
||||
End If
|
||||
If Not m_objInstrumentation Is Nothing Then
|
||||
If Not m_objInstrumentation.ItemAlreadyPersisted Then
|
||||
m_objInstrumentation.Save()
|
||||
End If
|
||||
End If
|
||||
|
||||
MyGlobals.AddCachedObject(Me, Me.WorkID.ToString)
|
||||
|
||||
If m_blnObjectAlreadyPersisted Then
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "upd_work"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmWorkID As New SqlClient.SqlParameter
|
||||
prmWorkID.ParameterName = "@work_id"
|
||||
prmWorkID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmWorkID.Size = 5
|
||||
prmWorkID.Value = m_guidWorkID
|
||||
ldbcmdCommand.Parameters.Add(prmWorkID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmComposerID As New SqlClient.SqlParameter
|
||||
prmComposerID.ParameterName = "@composer_id"
|
||||
prmComposerID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmComposerID.Size = 5
|
||||
If m_objComposer Is Nothing Then
|
||||
prmComposerID.Value = DBNull.Value
|
||||
Else
|
||||
prmComposerID.Value = m_objComposer.ComposerID
|
||||
End If
|
||||
ldbcmdCommand.Parameters.Add(prmComposerID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmBookID As New SqlClient.SqlParameter
|
||||
prmBookID.ParameterName = "@book_id"
|
||||
prmBookID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmBookID.Size = 5
|
||||
If m_objBook Is Nothing Then
|
||||
prmBookID.Value = DBNull.Value
|
||||
Else
|
||||
prmBookID.Value = m_objBook.BookID
|
||||
End If
|
||||
ldbcmdCommand.Parameters.Add(prmBookID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmPageNumber As New SqlClient.SqlParameter
|
||||
prmPageNumber.ParameterName = "@page_number"
|
||||
prmPageNumber.SqlDbType = SqlDbType.Int
|
||||
'prmPageNumber.Size = 5
|
||||
prmPageNumber.Value = m_intPageNumber
|
||||
ldbcmdCommand.Parameters.Add(prmPageNumber)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmWorkName As New SqlClient.SqlParameter
|
||||
prmWorkName.ParameterName = "@work_name"
|
||||
prmWorkName.SqlDbType = SqlDbType.VarChar
|
||||
prmWorkName.Size = MyGlobals.WORK_NAME_SIZE
|
||||
prmWorkName.Value = m_strWorkName
|
||||
ldbcmdCommand.Parameters.Add(prmWorkName)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmOpusInfo As New SqlClient.SqlParameter
|
||||
prmOpusInfo.ParameterName = "@opus_info"
|
||||
prmOpusInfo.SqlDbType = SqlDbType.VarChar
|
||||
prmOpusInfo.Size = MyGlobals.OPUS_INFO_SIZE
|
||||
prmOpusInfo.Value = m_strOpusInfo
|
||||
ldbcmdCommand.Parameters.Add(prmOpusInfo)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmInstrumentationID As New SqlClient.SqlParameter
|
||||
prmInstrumentationID.ParameterName = "@instrumentation_id"
|
||||
prmInstrumentationID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmInstrumentationID.Size = MyGlobals.INSTRUMENTATION_SIZE
|
||||
If m_objInstrumentation Is Nothing Then
|
||||
prmInstrumentationID.Value = DBNull.Value
|
||||
Else
|
||||
prmInstrumentationID.Value = m_objInstrumentation.InstrumentationID
|
||||
End If
|
||||
ldbcmdCommand.Parameters.Add(prmInstrumentationID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneNameID As New SqlClient.SqlParameter
|
||||
prmHymnTuneNameID.ParameterName = "@hymn_tune_name_id"
|
||||
prmHymnTuneNameID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnTuneNameID.Size = 5
|
||||
If m_objHymnTuneName Is Nothing Then
|
||||
prmHymnTuneNameID.Value = DBNull.Value
|
||||
Else
|
||||
prmHymnTuneNameID.Value = m_objHymnTuneName.HymnTuneNameID
|
||||
End If
|
||||
ldbcmdCommand.Parameters.Add(prmHymnTuneNameID)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
ldbcmdCommand.CommandText = "ins_work"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmWorkID As New SqlClient.SqlParameter
|
||||
prmWorkID.ParameterName = "@work_id"
|
||||
prmWorkID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmWorkID.Size = 5
|
||||
prmWorkID.Value = m_guidWorkID
|
||||
ldbcmdCommand.Parameters.Add(prmWorkID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmComposerID As New SqlClient.SqlParameter
|
||||
prmComposerID.ParameterName = "@composer_id"
|
||||
prmComposerID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmComposerID.Size = 5
|
||||
If m_objComposer Is Nothing Then
|
||||
prmComposerID.Value = DBNull.Value
|
||||
Else
|
||||
prmComposerID.Value = m_objComposer.ComposerID
|
||||
End If
|
||||
ldbcmdCommand.Parameters.Add(prmComposerID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmBookID As New SqlClient.SqlParameter
|
||||
prmBookID.ParameterName = "@book_id"
|
||||
prmBookID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmBookID.Size = 5
|
||||
If m_objBook Is Nothing Then
|
||||
prmBookID.Value = DBNull.Value
|
||||
Else
|
||||
prmBookID.Value = m_objBook.BookID
|
||||
End If
|
||||
ldbcmdCommand.Parameters.Add(prmBookID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmPageNumber As New SqlClient.SqlParameter
|
||||
prmPageNumber.ParameterName = "@page_number"
|
||||
prmPageNumber.SqlDbType = SqlDbType.Int
|
||||
'prmPageNumber.Size = 5
|
||||
prmPageNumber.Value = m_intPageNumber
|
||||
ldbcmdCommand.Parameters.Add(prmPageNumber)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmWorkName As New SqlClient.SqlParameter
|
||||
prmWorkName.ParameterName = "@work_name"
|
||||
prmWorkName.SqlDbType = SqlDbType.VarChar
|
||||
prmWorkName.Size = MyGlobals.WORK_NAME_SIZE
|
||||
prmWorkName.Value = m_strWorkName
|
||||
ldbcmdCommand.Parameters.Add(prmWorkName)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmOpusInfo As New SqlClient.SqlParameter
|
||||
prmOpusInfo.ParameterName = "@opus_info"
|
||||
prmOpusInfo.SqlDbType = SqlDbType.VarChar
|
||||
prmOpusInfo.Size = MyGlobals.OPUS_INFO_SIZE
|
||||
prmOpusInfo.Value = m_strOpusInfo
|
||||
ldbcmdCommand.Parameters.Add(prmOpusInfo)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmInstrumentationID As New SqlClient.SqlParameter
|
||||
prmInstrumentationID.ParameterName = "@instrumentation_id"
|
||||
prmInstrumentationID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmInstrumentationID.Size = MyGlobals.INSTRUMENTATION_SIZE
|
||||
If m_objInstrumentation Is Nothing Then
|
||||
prmInstrumentationID.Value = DBNull.Value
|
||||
Else
|
||||
prmInstrumentationID.Value = m_objInstrumentation.InstrumentationID
|
||||
End If
|
||||
ldbcmdCommand.Parameters.Add(prmInstrumentationID)
|
||||
' Set up parameter for stored procedure
|
||||
Dim prmHymnTuneNameID As New SqlClient.SqlParameter
|
||||
prmHymnTuneNameID.ParameterName = "@hymn_tune_name_id"
|
||||
prmHymnTuneNameID.SqlDbType = SqlDbType.UniqueIdentifier
|
||||
'prmHymnTuneNameID.Size = 5
|
||||
If m_objHymnTuneName Is Nothing Then
|
||||
prmHymnTuneNameID.Value = DBNull.Value
|
||||
Else
|
||||
prmHymnTuneNameID.Value = m_objHymnTuneName.HymnTuneNameID
|
||||
End If
|
||||
ldbcmdCommand.Parameters.Add(prmHymnTuneNameID)
|
||||
|
||||
Dim lintRowsAffected As Integer = MyGlobals.g_objDatabaseLayer.ExecuteNonQuery(ldbcmdCommand)
|
||||
If lintRowsAffected > 0 Then
|
||||
m_blnObjectAlreadyPersisted = True
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End If
|
||||
Catch e As SqlClient.SqlException
|
||||
MessageBox.Show(e.Message)
|
||||
Return False
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Property WorkID() As Guid
|
||||
Get
|
||||
Return m_guidWorkID
|
||||
End Get
|
||||
Set(ByVal Value As Guid)
|
||||
m_guidWorkID = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property Composer() As clsComposer
|
||||
Get
|
||||
Return m_objComposer
|
||||
End Get
|
||||
Set(ByVal Value As clsComposer)
|
||||
m_objComposer = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property Book() As clsBook
|
||||
Get
|
||||
Return m_objBook
|
||||
End Get
|
||||
Set(ByVal Value As clsBook)
|
||||
m_objBook = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property PageNumber() As Integer
|
||||
Get
|
||||
Return m_intPageNumber
|
||||
End Get
|
||||
Set(ByVal Value As Integer)
|
||||
m_intPageNumber = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property PageNumberAsString() As String
|
||||
Get
|
||||
Return m_intPageNumber.ToString
|
||||
End Get
|
||||
Set(ByVal Value As String)
|
||||
If Val(Value) > 0 Then
|
||||
m_intPageNumber = CType(Value, Integer)
|
||||
Else
|
||||
m_intPageNumber = 0
|
||||
End If
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property WorkName() As String
|
||||
Get
|
||||
Return m_strWorkName
|
||||
End Get
|
||||
Set(ByVal Value As String)
|
||||
m_strWorkName = Value.Trim
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property OpusInfo() As String
|
||||
Get
|
||||
Return m_strOpusInfo
|
||||
End Get
|
||||
Set(ByVal Value As String)
|
||||
m_strOpusInfo = Value.Trim
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property Instrumentation() As clsInstrumentation
|
||||
Get
|
||||
Return m_objInstrumentation
|
||||
End Get
|
||||
Set(ByVal Value As clsInstrumentation)
|
||||
m_objInstrumentation = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property HymnTuneName() As clsHymnTuneName
|
||||
Get
|
||||
Return m_objHymnTuneName
|
||||
End Get
|
||||
Set(ByVal Value As clsHymnTuneName)
|
||||
m_objHymnTuneName = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property ItemAlreadyPersisted() As Boolean
|
||||
Get
|
||||
Return m_blnObjectAlreadyPersisted
|
||||
End Get
|
||||
Set(ByVal Value As Boolean)
|
||||
m_blnObjectAlreadyPersisted = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Function Clone() As Object Implements ICloneable.Clone
|
||||
Dim lobjReturnValue As New clsWork
|
||||
lobjReturnValue.WorkID = Me.WorkID
|
||||
lobjReturnValue.Composer = Me.Composer
|
||||
lobjReturnValue.Book = Me.Book
|
||||
lobjReturnValue.PageNumber = Me.PageNumber
|
||||
lobjReturnValue.WorkName = Me.WorkName
|
||||
lobjReturnValue.OpusInfo = Me.OpusInfo
|
||||
lobjReturnValue.Instrumentation = Me.Instrumentation
|
||||
lobjReturnValue.HymnTuneName = Me.HymnTuneName
|
||||
lobjReturnValue.ItemAlreadyPersisted = Me.ItemAlreadyPersisted
|
||||
|
||||
Return lobjReturnValue
|
||||
End Function
|
||||
|
||||
Public Function StateIsIdentical(ByVal lobjOtherWork As clsWork) As Boolean
|
||||
Dim blnResult As Boolean
|
||||
|
||||
If Me.WorkID.Equals(lobjOtherWork.WorkID) _
|
||||
AndAlso Me.PageNumber = lobjOtherWork.PageNumber _
|
||||
AndAlso Me.WorkName = lobjOtherWork.WorkName _
|
||||
AndAlso Me.OpusInfo = lobjOtherWork.OpusInfo Then
|
||||
blnResult = True
|
||||
|
||||
If Me.Composer Is Nothing Then
|
||||
If lobjOtherWork.Composer Is Nothing Then
|
||||
'OK
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
If lobjOtherWork.Composer Is Nothing Then
|
||||
Return False
|
||||
Else
|
||||
blnResult = Me.Composer.ComposerID.Equals(lobjOtherWork.Composer.ComposerID)
|
||||
End If
|
||||
End If
|
||||
|
||||
If Not blnResult Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Me.Book Is Nothing Then
|
||||
If lobjOtherWork.Book Is Nothing Then
|
||||
'OK
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
If lobjOtherWork.Book Is Nothing Then
|
||||
Return False
|
||||
Else
|
||||
blnResult = Me.Book.BookID.Equals(lobjOtherWork.Book.BookID)
|
||||
End If
|
||||
End If
|
||||
|
||||
If Not blnResult Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Me.Instrumentation Is Nothing Then
|
||||
If lobjOtherWork.Instrumentation Is Nothing Then
|
||||
'OK
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
If lobjOtherWork.Instrumentation Is Nothing Then
|
||||
Return False
|
||||
Else
|
||||
blnResult = Me.Instrumentation.InstrumentationID.Equals(lobjOtherWork.Instrumentation.InstrumentationID)
|
||||
End If
|
||||
End If
|
||||
|
||||
If Not blnResult Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Me.HymnTuneName Is Nothing Then
|
||||
If lobjOtherWork.HymnTuneName Is Nothing Then
|
||||
'OK
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Else
|
||||
If lobjOtherWork.HymnTuneName Is Nothing Then
|
||||
Return False
|
||||
Else
|
||||
blnResult = Me.HymnTuneName.HymnTuneNameID.Equals(lobjOtherWork.HymnTuneName.HymnTuneNameID)
|
||||
End If
|
||||
End If
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return blnResult
|
||||
|
||||
End Function
|
||||
|
||||
Public Function Validate(ByRef lstrErrorString As String) As Boolean
|
||||
lstrErrorString = ""
|
||||
|
||||
If Me.Composer Is Nothing Then
|
||||
lstrErrorString = "Composer is required"
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Me.Book Is Nothing Then
|
||||
lstrErrorString = "Book is required"
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Me.WorkName.Length = 0 Then
|
||||
lstrErrorString = "Work Name is required"
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Me.Instrumentation Is Nothing Then
|
||||
lstrErrorString = "Instrumentation is required"
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Public Function OKToDelete(ByRef lstrReferencedByString As String) As Boolean
|
||||
lstrReferencedByString = ""
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Public Overrides Function ToString() As String
|
||||
Dim strReturnString As New StringBuilder
|
||||
|
||||
If m_objBook Is Nothing Then
|
||||
'strReturnString.Append(MyGlobals.COLLECTION_STRING)
|
||||
Else
|
||||
strReturnString.Append(m_objBook.BookTitle)
|
||||
End If
|
||||
|
||||
strReturnString.Append(m_intPageNumber)
|
||||
strReturnString.Append(" - ")
|
||||
strReturnString.Append(m_strWorkName)
|
||||
|
||||
If m_objComposer Is Nothing Then
|
||||
'strReturnString.Append(MyGlobals.COLLECTION_STRING)
|
||||
Else
|
||||
strReturnString.Append(m_objComposer.ComposerName)
|
||||
End If
|
||||
|
||||
Return strReturnString.ToString
|
||||
End Function
|
||||
|
||||
Public Sub WriteXML(ByRef objXMLWriter As XmlTextWriter)
|
||||
objXMLWriter.WriteStartElement("Work")
|
||||
|
||||
objXMLWriter.WriteElementString("WorkID", Me.WorkID.ToString)
|
||||
objXMLWriter.WriteElementString("WorkName", Me.WorkName)
|
||||
objXMLWriter.WriteElementString("ComposerID", Me.Composer.ComposerID.ToString)
|
||||
Me.Composer.WriteXML(objXMLWriter)
|
||||
objXMLWriter.WriteElementString("BookID", Me.Book.BookID.ToString)
|
||||
Me.Book.WriteXML(objXMLWriter)
|
||||
If Me.HymnTuneName Is Nothing Then
|
||||
objXMLWriter.WriteElementString("HymnTuneNameID", "")
|
||||
Else
|
||||
objXMLWriter.WriteElementString("HymnTuneNameID", Me.HymnTuneName.HymnTuneNameID.ToString)
|
||||
Me.HymnTuneName.WriteXML(objXMLWriter)
|
||||
End If
|
||||
objXMLWriter.WriteElementString("OpusInfo", Me.OpusInfo)
|
||||
objXMLWriter.WriteElementString("InstrumentationID", Me.Instrumentation.InstrumentationID.ToString)
|
||||
Me.Instrumentation.WriteXML(objXMLWriter)
|
||||
objXMLWriter.WriteElementString("PageNumber", Me.PageNumberAsString)
|
||||
|
||||
objXMLWriter.WriteEndElement()
|
||||
End Sub
|
||||
|
||||
Public Shared Function GetAllWorks() As System.Collections.Generic.List(Of clsWork)
|
||||
'Preload to cache
|
||||
clsHymnTuneName.AddAllHymnTuneNamesToCache()
|
||||
clsComposer.AddAllComposersToCache()
|
||||
clsInstrumentation.AddAllInstrumentationsToCache()
|
||||
clsPublisher.AddAllPublishersToCache()
|
||||
clsBook.AddAllBooksToCache()
|
||||
|
||||
Dim lguidWorkID As Guid
|
||||
Dim ldbcmdCommand As New SqlClient.SqlCommand
|
||||
Dim lobjWork As clsWork
|
||||
Dim lcolWorks As New System.Collections.Generic.List(Of clsWork)
|
||||
|
||||
ldbcmdCommand.CommandText = "sel_work_all"
|
||||
|
||||
ldbcmdCommand.CommandType = CommandType.StoredProcedure
|
||||
|
||||
Dim ldbdsWorks As DataSet = MyGlobals.g_objDatabaseLayer.ExecuteDataSet(ldbcmdCommand)
|
||||
|
||||
If ldbdsWorks.Tables(0).Rows.Count > 0 Then
|
||||
Dim ldbrwRow As DataRow
|
||||
For Each ldbrwRow In ldbdsWorks.Tables(0).Rows
|
||||
lguidWorkID = CType(ldbrwRow.Item("work_id"), Guid)
|
||||
|
||||
If MyGlobals.CachedObjectExists(lguidWorkID.ToString) Then
|
||||
lobjWork = CType(MyGlobals.CachedObjectRetrieve(lguidWorkID.ToString), clsWork)
|
||||
Else
|
||||
'lobjWork = New clsWork(lguidWorkID)
|
||||
lobjWork = New clsWork(ldbrwRow)
|
||||
End If
|
||||
lcolWorks.Add(lobjWork)
|
||||
Next
|
||||
End If
|
||||
ldbdsWorks.Clear()
|
||||
|
||||
Return lcolWorks
|
||||
End Function
|
||||
|
||||
End Class
|
||||
166
frmAddAlternateHymnTuneName.resx
Normal file
166
frmAddAlternateHymnTuneName.resx
Normal file
@@ -0,0 +1,166 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 1.3
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">1.3</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, Windows.Forms, ...</resheader>
|
||||
<data name="Name1">this is my long string</data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
[base64 mime encoded serialized .NET Framework object]
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
[base64 mime encoded string representing a byte array form of the .NET Framework object]
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used forserialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>1.3</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="lblAlternateHymnTuneName.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="lblAlternateHymnTuneName.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>Assembly</value>
|
||||
</data>
|
||||
<data name="lblAlternateHymnTuneName.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>Assembly</value>
|
||||
</data>
|
||||
<data name="lstAlternateHymnTuneNames.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>Assembly</value>
|
||||
</data>
|
||||
<data name="lstAlternateHymnTuneNames.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="lstAlternateHymnTuneNames.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>Assembly</value>
|
||||
</data>
|
||||
<data name="btnOK.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="btnOK.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>Assembly</value>
|
||||
</data>
|
||||
<data name="btnOK.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>Assembly</value>
|
||||
</data>
|
||||
<data name="btnCancel.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="btnCancel.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>Assembly</value>
|
||||
</data>
|
||||
<data name="btnCancel.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>Assembly</value>
|
||||
</data>
|
||||
<data name="$this.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="$this.Name">
|
||||
<value>frmAddAlternateHymnTuneName</value>
|
||||
</data>
|
||||
<data name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>(Default)</value>
|
||||
</data>
|
||||
<data name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="$this.Localizable" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="$this.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>8, 8</value>
|
||||
</data>
|
||||
<data name="$this.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="$this.TrayHeight" type="System.Int32, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>80</value>
|
||||
</data>
|
||||
<data name="$this.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="$this.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>Assembly</value>
|
||||
</data>
|
||||
</root>
|
||||
158
frmAddAlternateHymnTuneName.vb
Normal file
158
frmAddAlternateHymnTuneName.vb
Normal file
@@ -0,0 +1,158 @@
|
||||
Imports System.Windows.Forms
|
||||
|
||||
Public Class frmAddAlternateHymnTuneName
|
||||
Inherits Windows.Forms.Form
|
||||
Private m_objCurrentHymnTuneName As clsHymnTuneName
|
||||
Private m_objAlternateHymnTuneNameChosen As clsHymnTuneName
|
||||
|
||||
#Region " Windows Form Designer generated code "
|
||||
|
||||
Protected Sub New()
|
||||
MyBase.New()
|
||||
|
||||
'This call is required by the Windows Form Designer.
|
||||
InitializeComponent()
|
||||
|
||||
'Add any initialization after the InitializeComponent() call
|
||||
|
||||
End Sub
|
||||
|
||||
'Form overrides dispose to clean up the component list.
|
||||
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
If disposing Then
|
||||
If Not (components Is Nothing) Then
|
||||
components.Dispose()
|
||||
End If
|
||||
End If
|
||||
MyBase.Dispose(disposing)
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
Friend WithEvents lblAlternateHymnTuneName As Windows.Forms.Label
|
||||
Friend WithEvents lstAlternateHymnTuneNames As Windows.Forms.ListBox
|
||||
Friend WithEvents btnOK As Windows.Forms.Button
|
||||
Friend WithEvents btnCancel As Windows.Forms.Button
|
||||
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
|
||||
Me.lblAlternateHymnTuneName = New Windows.Forms.Label
|
||||
Me.lstAlternateHymnTuneNames = New Windows.Forms.ListBox
|
||||
Me.btnOK = New Windows.Forms.Button
|
||||
Me.btnCancel = New Windows.Forms.Button
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'lblAlternateHymnTuneName
|
||||
'
|
||||
Me.lblAlternateHymnTuneName.Location = New System.Drawing.Point(8, 8)
|
||||
Me.lblAlternateHymnTuneName.Name = "lblAlternateHymnTuneName"
|
||||
Me.lblAlternateHymnTuneName.Size = New System.Drawing.Size(448, 16)
|
||||
Me.lblAlternateHymnTuneName.TabIndex = 0
|
||||
'
|
||||
'lstAlternateHymnTuneNames
|
||||
'
|
||||
Me.lstAlternateHymnTuneNames.Location = New System.Drawing.Point(8, 24)
|
||||
Me.lstAlternateHymnTuneNames.Name = "lstAlternateHymnTuneNames"
|
||||
Me.lstAlternateHymnTuneNames.Size = New System.Drawing.Size(456, 433)
|
||||
Me.lstAlternateHymnTuneNames.Sorted = True
|
||||
Me.lstAlternateHymnTuneNames.TabIndex = 1
|
||||
'
|
||||
'btnOK
|
||||
'
|
||||
Me.btnOK.DialogResult = Windows.Forms.DialogResult.OK
|
||||
Me.btnOK.Location = New System.Drawing.Point(480, 8)
|
||||
Me.btnOK.Name = "btnOK"
|
||||
Me.btnOK.Size = New System.Drawing.Size(112, 24)
|
||||
Me.btnOK.TabIndex = 2
|
||||
Me.btnOK.Text = "&OK"
|
||||
'
|
||||
'btnCancel
|
||||
'
|
||||
Me.btnCancel.DialogResult = Windows.Forms.DialogResult.Cancel
|
||||
Me.btnCancel.Location = New System.Drawing.Point(480, 40)
|
||||
Me.btnCancel.Name = "btnCancel"
|
||||
Me.btnCancel.Size = New System.Drawing.Size(112, 24)
|
||||
Me.btnCancel.TabIndex = 3
|
||||
Me.btnCancel.Text = "&Cancel"
|
||||
'
|
||||
'frmAddAlternateHymnTuneName
|
||||
'
|
||||
Me.AcceptButton = Me.btnOK
|
||||
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
|
||||
Me.CancelButton = Me.btnCancel
|
||||
Me.ClientSize = New System.Drawing.Size(600, 462)
|
||||
Me.ControlBox = False
|
||||
Me.Controls.Add(Me.btnCancel)
|
||||
Me.Controls.Add(Me.btnOK)
|
||||
Me.Controls.Add(Me.lstAlternateHymnTuneNames)
|
||||
Me.Controls.Add(Me.lblAlternateHymnTuneName)
|
||||
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedDialog
|
||||
Me.MaximizeBox = False
|
||||
Me.MinimizeBox = False
|
||||
Me.Name = "frmAddAlternateHymnTuneName"
|
||||
Me.Text = "Add Alternate Hymn Tune Name"
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
|
||||
#End Region
|
||||
|
||||
Public Property CurrentHymnTuneName() As clsHymnTuneName
|
||||
Get
|
||||
Return m_objCurrentHymnTuneName
|
||||
End Get
|
||||
Set(ByVal Value As clsHymnTuneName)
|
||||
m_objCurrentHymnTuneName = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property AlternateHymnTuneNameChosen() As clsHymnTuneName
|
||||
Get
|
||||
Return m_objAlternateHymnTuneNameChosen
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Sub LoadGUI(ByVal objCurrentHymnTuneName As clsHymnTuneName)
|
||||
CurrentHymnTuneName = objCurrentHymnTuneName
|
||||
|
||||
lblAlternateHymnTuneName.Text = "Select Alternate Hymn Tune Name for: " + objCurrentHymnTuneName.HymnTuneName
|
||||
Dim objHymnTuneNames As System.Collections.Generic.List(Of clsHymnTuneName) = clsHymnTuneName.GetAllHymnTuneNames()
|
||||
Dim objHymnTuneName As clsHymnTuneName
|
||||
For Each objHymnTuneName In objHymnTuneNames
|
||||
If objHymnTuneName.HymnTuneName = objCurrentHymnTuneName.HymnTuneName Then
|
||||
'Do not load this one - it is the one we are comparing to
|
||||
Else
|
||||
If objHymnTuneName.OtherHymnTuneNamesForTune.ContainsKey(objHymnTuneName.HymnTuneName) Then
|
||||
'Do not load this one - it already matches
|
||||
Else
|
||||
lstAlternateHymnTuneNames.Items.Add(objHymnTuneName)
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
|
||||
m_objAlternateHymnTuneNameChosen = Nothing
|
||||
End Sub
|
||||
|
||||
Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
|
||||
If lstAlternateHymnTuneNames.SelectedItems.Count = 0 Then
|
||||
MessageBox.Show("Must select an alternate hymn tune name")
|
||||
Me.DialogResult = Windows.Forms.DialogResult.None
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
m_objAlternateHymnTuneNameChosen = CType(lstAlternateHymnTuneNames.SelectedItem, clsHymnTuneName)
|
||||
|
||||
'This button will close the form with Dialog Result OK
|
||||
End Sub
|
||||
|
||||
Public Shared Function GetAlternateHymnTuneNameChosen(ByVal objCurrentHymnTuneName As clsHymnTuneName) As clsHymnTuneName
|
||||
Dim objFrmAddAlternateHymnTuneName As New frmAddAlternateHymnTuneName
|
||||
objFrmAddAlternateHymnTuneName.LoadGUI(objCurrentHymnTuneName)
|
||||
objFrmAddAlternateHymnTuneName.ShowDialog()
|
||||
Dim lobjReturnValue As clsHymnTuneName = objFrmAddAlternateHymnTuneName.AlternateHymnTuneNameChosen
|
||||
objFrmAddAlternateHymnTuneName.Dispose()
|
||||
Return lobjReturnValue
|
||||
End Function
|
||||
End Class
|
||||
120
frmEditBook.resx
Normal file
120
frmEditBook.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
588
frmEditBook.vb
Normal file
588
frmEditBook.vb
Normal file
@@ -0,0 +1,588 @@
|
||||
Imports System.Windows.Forms
|
||||
|
||||
Public Class frmEditBook
|
||||
Inherits OrganLit.BaseEditForm
|
||||
|
||||
Private mobjDetailBook As New clsBook
|
||||
Private m_objComposersHash As Hashtable
|
||||
Private m_objInstrumentationsHash As Hashtable
|
||||
Private m_objPublishersHash As Hashtable
|
||||
|
||||
#Region " Windows Form Designer generated code "
|
||||
|
||||
Public Sub New()
|
||||
MyBase.New()
|
||||
|
||||
'This call is required by the Windows Form Designer.
|
||||
InitializeComponent()
|
||||
|
||||
'Add any initialization after the InitializeComponent() call
|
||||
|
||||
End Sub
|
||||
|
||||
'Form overrides dispose to clean up the component list.
|
||||
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
If disposing Then
|
||||
If Not (components Is Nothing) Then
|
||||
components.Dispose()
|
||||
End If
|
||||
End If
|
||||
MyBase.Dispose(disposing)
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
Friend WithEvents lblBookTitle As Windows.Forms.Label
|
||||
Friend WithEvents txtBookTitle As Windows.Forms.TextBox
|
||||
Friend WithEvents lblComposer As Windows.Forms.Label
|
||||
Friend WithEvents cboComposer As ComboTypeAhead.ComboTypeAhead
|
||||
Friend WithEvents lblPublisher As Windows.Forms.Label
|
||||
Friend WithEvents cboPublisher As ComboTypeAhead.ComboTypeAhead
|
||||
Friend WithEvents cboInstrumentation As ComboTypeAhead.ComboTypeAhead
|
||||
Friend WithEvents lblInstrumentation As Windows.Forms.Label
|
||||
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
|
||||
Me.lblBookTitle = New Windows.Forms.Label
|
||||
Me.txtBookTitle = New Windows.Forms.TextBox
|
||||
Me.lblComposer = New Windows.Forms.Label
|
||||
Me.cboComposer = New ComboTypeAhead.ComboTypeAhead
|
||||
Me.lblPublisher = New Windows.Forms.Label
|
||||
Me.cboPublisher = New ComboTypeAhead.ComboTypeAhead
|
||||
Me.cboInstrumentation = New ComboTypeAhead.ComboTypeAhead
|
||||
Me.lblInstrumentation = New Windows.Forms.Label
|
||||
Me.fraAddEdit.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'fraAddEdit
|
||||
'
|
||||
Me.fraAddEdit.Controls.Add(Me.cboInstrumentation)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblInstrumentation)
|
||||
Me.fraAddEdit.Controls.Add(Me.cboPublisher)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblPublisher)
|
||||
Me.fraAddEdit.Controls.Add(Me.cboComposer)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblComposer)
|
||||
Me.fraAddEdit.Controls.Add(Me.txtBookTitle)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblBookTitle)
|
||||
Me.fraAddEdit.Location = New System.Drawing.Point(10, 438)
|
||||
Me.fraAddEdit.Size = New System.Drawing.Size(1064, 142)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblBookTitle, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.txtBookTitle, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblComposer, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.cboComposer, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblPublisher, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.cboPublisher, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblInstrumentation, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.cboInstrumentation, 0)
|
||||
'
|
||||
'lblBookTitle
|
||||
'
|
||||
Me.lblBookTitle.Location = New System.Drawing.Point(16, 24)
|
||||
Me.lblBookTitle.Name = "lblBookTitle"
|
||||
Me.lblBookTitle.Size = New System.Drawing.Size(96, 16)
|
||||
Me.lblBookTitle.TabIndex = 3
|
||||
Me.lblBookTitle.Text = "Book Title"
|
||||
'
|
||||
'txtBookTitle
|
||||
'
|
||||
Me.txtBookTitle.Location = New System.Drawing.Point(109, 24)
|
||||
Me.txtBookTitle.Name = "txtBookTitle"
|
||||
Me.txtBookTitle.Size = New System.Drawing.Size(424, 20)
|
||||
Me.txtBookTitle.TabIndex = 4
|
||||
'
|
||||
'lblComposer
|
||||
'
|
||||
Me.lblComposer.Location = New System.Drawing.Point(16, 48)
|
||||
Me.lblComposer.Name = "lblComposer"
|
||||
Me.lblComposer.Size = New System.Drawing.Size(80, 16)
|
||||
Me.lblComposer.TabIndex = 5
|
||||
Me.lblComposer.Text = "Composer"
|
||||
'
|
||||
'cboComposer
|
||||
'
|
||||
Me.cboComposer.Location = New System.Drawing.Point(109, 48)
|
||||
Me.cboComposer.Name = "cboComposer"
|
||||
Me.cboComposer.Size = New System.Drawing.Size(288, 21)
|
||||
Me.cboComposer.Sorted = True
|
||||
Me.cboComposer.TabIndex = 6
|
||||
'
|
||||
'lblPublisher
|
||||
'
|
||||
Me.lblPublisher.Location = New System.Drawing.Point(16, 107)
|
||||
Me.lblPublisher.Name = "lblPublisher"
|
||||
Me.lblPublisher.Size = New System.Drawing.Size(80, 16)
|
||||
Me.lblPublisher.TabIndex = 9
|
||||
Me.lblPublisher.Text = "Publisher"
|
||||
'
|
||||
'cboPublisher
|
||||
'
|
||||
Me.cboPublisher.Location = New System.Drawing.Point(109, 107)
|
||||
Me.cboPublisher.Name = "cboPublisher"
|
||||
Me.cboPublisher.Size = New System.Drawing.Size(288, 21)
|
||||
Me.cboPublisher.Sorted = True
|
||||
Me.cboPublisher.TabIndex = 10
|
||||
'
|
||||
'cboInstrumentation
|
||||
'
|
||||
Me.cboInstrumentation.Location = New System.Drawing.Point(109, 80)
|
||||
Me.cboInstrumentation.Name = "cboInstrumentation"
|
||||
Me.cboInstrumentation.Size = New System.Drawing.Size(288, 21)
|
||||
Me.cboInstrumentation.Sorted = True
|
||||
Me.cboInstrumentation.TabIndex = 8
|
||||
'
|
||||
'lblInstrumentation
|
||||
'
|
||||
Me.lblInstrumentation.Location = New System.Drawing.Point(16, 80)
|
||||
Me.lblInstrumentation.Name = "lblInstrumentation"
|
||||
Me.lblInstrumentation.Size = New System.Drawing.Size(96, 16)
|
||||
Me.lblInstrumentation.TabIndex = 7
|
||||
Me.lblInstrumentation.Text = "Instrumentation"
|
||||
'
|
||||
'frmEditBook
|
||||
'
|
||||
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
|
||||
Me.ClientSize = New System.Drawing.Size(1080, 586)
|
||||
Me.Name = "frmEditBook"
|
||||
Me.StartPosition = Windows.Forms.FormStartPosition.Manual
|
||||
Me.Text = "Edit Book"
|
||||
Me.fraAddEdit.ResumeLayout(False)
|
||||
Me.fraAddEdit.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
|
||||
#End Region
|
||||
|
||||
Protected Overrides Sub LoadExistingItemsList()
|
||||
Dim lobjBook As clsBook
|
||||
Dim lobjBooks As System.Collections.Generic.List(Of clsBook)
|
||||
|
||||
SetUpExistingItemsHeaders()
|
||||
|
||||
lobjBooks = clsBook.GetAllBooks
|
||||
|
||||
Me.ExistingItemsListSuspendLayout()
|
||||
|
||||
For Each lobjBook In lobjBooks
|
||||
Me.ExistingObjectsListItems.Add(ConvertBookToListViewItem(lobjBook))
|
||||
Next
|
||||
|
||||
Me.ExistingItemsListResumeLayout()
|
||||
End Sub
|
||||
|
||||
Private Sub SetUpExistingItemsHeaders()
|
||||
Me.ExistingObjectsListColumns.Add("Composer", 300, HorizontalAlignment.Left)
|
||||
Me.ExistingObjectsListColumns.Add("Book Title", 400, HorizontalAlignment.Left)
|
||||
Me.ExistingObjectsListColumns.Add("Publisher", 200, HorizontalAlignment.Left)
|
||||
|
||||
'Set up sorting rules
|
||||
Dim lobjBaseEditFormColumnSortRules(2) As clsGridColumnSortRule
|
||||
lobjBaseEditFormColumnSortRules(0) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
||||
lobjBaseEditFormColumnSortRules(0).SubColumnSort = New clsGridSubColumnSortRule(1, clsGridSubColumnSortRule.enumSortType.SortAsString, Nothing)
|
||||
lobjBaseEditFormColumnSortRules(1) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
||||
lobjBaseEditFormColumnSortRules(1).SubColumnSort = New clsGridSubColumnSortRule(0, clsGridSubColumnSortRule.enumSortType.SortAsString, Nothing)
|
||||
lobjBaseEditFormColumnSortRules(2) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
||||
lobjBaseEditFormColumnSortRules(2).SubColumnSort = New clsGridSubColumnSortRule(0, clsGridSubColumnSortRule.enumSortType.SortAsString, New clsGridSubColumnSortRule(0, clsGridSubColumnSortRule.enumSortType.SortAsString, Nothing))
|
||||
|
||||
MyBaseEditFormColumnSortRules = lobjBaseEditFormColumnSortRules
|
||||
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub InitializeDetailControls()
|
||||
'Load data to detail controls here at form load time
|
||||
txtBookTitle.MaxLength = MyGlobals.BOOK_TITLE_SIZE
|
||||
cboComposer.MaxLength = MyGlobals.COMPOSER_NAME_SIZE
|
||||
cboInstrumentation.MaxLength = MyGlobals.INSTRUMENTATION_NAME_SIZE
|
||||
cboPublisher.MaxLength = MyGlobals.PUBLISHER_NAME_SIZE
|
||||
|
||||
txtBookTitle.Text = ""
|
||||
|
||||
Dim objComposer As clsComposer
|
||||
Dim objComposers As System.Collections.Generic.List(Of clsComposer)
|
||||
|
||||
If cboComposer.Items.Count = 0 Then
|
||||
Me.cboComposer.Items.Clear()
|
||||
m_objComposersHash = New Hashtable
|
||||
|
||||
objComposers = clsComposer.GetAllComposers
|
||||
For Each objComposer In objComposers
|
||||
AddComposerToForm(objComposer)
|
||||
Next
|
||||
|
||||
Me.cboComposer.Items.Add(MyGlobals.COLLECTION_STRING)
|
||||
End If
|
||||
|
||||
Dim objInstrumentation As clsInstrumentation
|
||||
Dim objInstrumentations As System.Collections.Generic.List(Of clsInstrumentation)
|
||||
|
||||
If cboInstrumentation.Items.Count = 0 Then
|
||||
Me.cboInstrumentation.Items.Clear()
|
||||
m_objInstrumentationsHash = New Hashtable
|
||||
|
||||
objInstrumentations = clsInstrumentation.GetAllInstrumentations
|
||||
For Each objInstrumentation In objInstrumentations
|
||||
AddInstrumentationToForm(objInstrumentation)
|
||||
Next
|
||||
End If
|
||||
|
||||
If cboPublisher.Items.Count = 0 Then
|
||||
Dim objPublisher As clsPublisher
|
||||
Dim objPublishers As System.Collections.Generic.List(Of clsPublisher)
|
||||
|
||||
Me.cboPublisher.Items.Clear()
|
||||
m_objPublishersHash = New Hashtable
|
||||
|
||||
objPublishers = clsPublisher.GetAllPublishers
|
||||
For Each objPublisher In objPublishers
|
||||
AddPublisherToForm(objPublisher)
|
||||
Next
|
||||
|
||||
Me.cboPublisher.Items.Add(MyGlobals.NONE_STRING)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub SetFocusToFirstDetailControlForEdit()
|
||||
txtBookTitle.Focus()
|
||||
End Sub
|
||||
|
||||
Protected Overrides Function DetailControlsHaveDifferentDataThanExistingData(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjSavedBook As clsBook
|
||||
Dim lblnReturnValue As Boolean = False
|
||||
|
||||
lobjSavedBook = CType(lstvwExistingItem.Tag, clsBook)
|
||||
|
||||
Dim objComposer As clsComposer
|
||||
Select Case cboComposer.Text.ToUpper.Trim
|
||||
Case MyGlobals.COLLECTION_STRING.ToUpper, ""
|
||||
objComposer = Nothing
|
||||
Case Else
|
||||
objComposer = CType(MyGlobals.GetItemFromHashWithStringKey(cboComposer.Text.ToUpper.Trim, m_objComposersHash), clsComposer)
|
||||
If objComposer Is Nothing Then
|
||||
objComposer = New clsComposer(cboComposer.Text.Trim)
|
||||
End If
|
||||
End Select
|
||||
|
||||
Dim objInstrumentation As clsInstrumentation
|
||||
Select Case cboInstrumentation.Text.ToUpper.Trim
|
||||
Case ""
|
||||
objInstrumentation = Nothing
|
||||
Case Else
|
||||
objInstrumentation = CType(MyGlobals.GetItemFromHashWithStringKey(cboInstrumentation.Text.ToUpper.Trim, m_objInstrumentationsHash), clsInstrumentation)
|
||||
If objInstrumentation Is Nothing Then
|
||||
objInstrumentation = New clsInstrumentation(cboInstrumentation.Text.Trim)
|
||||
End If
|
||||
End Select
|
||||
|
||||
Dim objPublisher As clsPublisher
|
||||
Select Case cboPublisher.Text.ToUpper.Trim
|
||||
Case MyGlobals.NONE_STRING.ToUpper, ""
|
||||
objPublisher = Nothing
|
||||
Case Else
|
||||
objPublisher = CType(MyGlobals.GetItemFromHashWithStringKey(cboPublisher.Text.ToUpper.Trim, m_objPublishersHash), clsPublisher)
|
||||
If objPublisher Is Nothing Then
|
||||
objPublisher = New clsPublisher(cboPublisher.Text.Trim, MyGlobals.PUBLISHER_STREAMING_ALLOWED_UNKNOWN)
|
||||
End If
|
||||
End Select
|
||||
|
||||
mobjDetailBook.BookTitle = txtBookTitle.Text
|
||||
mobjDetailBook.Composer = objComposer
|
||||
mobjDetailBook.Instrumentation = objInstrumentation
|
||||
mobjDetailBook.Publisher = objPublisher
|
||||
|
||||
If lobjSavedBook.StateIsIdentical(mobjDetailBook) Then
|
||||
Return False
|
||||
Else
|
||||
Return True
|
||||
End If
|
||||
End Function
|
||||
|
||||
Protected Overrides Function DetailControlsHaveSignificantData() As Boolean
|
||||
If txtBookTitle.Text.Trim.Length > 0 Then
|
||||
Return True
|
||||
End If
|
||||
|
||||
Return False
|
||||
End Function
|
||||
|
||||
Protected Overrides Sub EmptyOutDetailControls()
|
||||
InitializeDetailControls()
|
||||
txtBookTitle.Text = ""
|
||||
mobjDetailBook = New clsBook
|
||||
End Sub
|
||||
|
||||
Protected Overrides Function LoadExistingDataToDetailControls(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjBook As clsBook
|
||||
Dim lblnReturnValue As Boolean = False
|
||||
lobjBook = CType(lstvwExistingItem.Tag, clsBook)
|
||||
txtBookTitle.Text = lobjBook.BookTitle
|
||||
|
||||
If lobjBook.Composer Is Nothing Then
|
||||
cboComposer.Text = MyGlobals.COLLECTION_STRING
|
||||
Else
|
||||
cboComposer.Text = lobjBook.Composer.ComposerName
|
||||
End If
|
||||
|
||||
If lobjBook.Instrumentation Is Nothing Then
|
||||
cboInstrumentation.Text = ""
|
||||
Else
|
||||
cboInstrumentation.Text = lobjBook.Instrumentation.InstrumentationName
|
||||
End If
|
||||
|
||||
If lobjBook.Publisher Is Nothing Then
|
||||
cboPublisher.Text = MyGlobals.NONE_STRING
|
||||
Else
|
||||
cboPublisher.Text = lobjBook.Publisher.PublisherName
|
||||
End If
|
||||
|
||||
mobjDetailBook = CType(lobjBook.Clone(), clsBook)
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Function ConfirmOKToDeleteExistingItem(ByVal lstvwItemToDelete As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjBook As clsBook
|
||||
Dim lstrReferencedBy As String = ""
|
||||
|
||||
lobjBook = CType(lstvwItemToDelete.Tag, clsBook)
|
||||
|
||||
If Not lobjBook.OKToDelete(lstrReferencedBy) Then
|
||||
MessageBox.Show("Can't delete book: " + lobjBook.ToString + ". Currently used by " + lstrReferencedBy + ".", "Unable to delete", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
|
||||
Return False
|
||||
End If
|
||||
|
||||
Dim ldrDialogResult As DialogResult = MessageBox.Show("Are you sure you want to delete book: " + lobjBook.ToString + "?", "Delete confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
|
||||
If ldrDialogResult = Windows.Forms.DialogResult.No Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Function DeleteExistingItem(ByVal lstvwItemToDelete As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjBook As clsBook
|
||||
lobjBook = CType(lstvwItemToDelete.Tag, clsBook)
|
||||
|
||||
Return lobjBook.Delete()
|
||||
End Function
|
||||
|
||||
Protected Overrides Function SaveNewItem() As Boolean
|
||||
Dim lstrErrorString As String = ""
|
||||
Dim lblnAddedComposer As Boolean
|
||||
Dim lblnAddedInstrumentation As Boolean
|
||||
Dim lblnAddedPublisher As Boolean
|
||||
|
||||
lblnAddedComposer = False
|
||||
lblnAddedInstrumentation = False
|
||||
lblnAddedPublisher = False
|
||||
|
||||
Dim objComposer As clsComposer
|
||||
Select Case cboComposer.Text.ToUpper.Trim
|
||||
Case MyGlobals.COLLECTION_STRING.ToUpper, ""
|
||||
objComposer = Nothing
|
||||
Case Else
|
||||
objComposer = CType(MyGlobals.GetItemFromHashWithStringKey(cboComposer.Text.ToUpper.Trim, m_objComposersHash), clsComposer)
|
||||
If objComposer Is Nothing Then
|
||||
objComposer = New clsComposer(cboComposer.Text.Trim)
|
||||
lblnAddedComposer = True
|
||||
End If
|
||||
End Select
|
||||
|
||||
Dim objInstrumentation As clsInstrumentation
|
||||
Select Case cboInstrumentation.Text.ToUpper.Trim
|
||||
Case ""
|
||||
objInstrumentation = Nothing
|
||||
Case Else
|
||||
objInstrumentation = CType(MyGlobals.GetItemFromHashWithStringKey(cboInstrumentation.Text.ToUpper.Trim, m_objInstrumentationsHash), clsInstrumentation)
|
||||
If objInstrumentation Is Nothing Then
|
||||
objInstrumentation = New clsInstrumentation(cboInstrumentation.Text.Trim)
|
||||
lblnAddedInstrumentation = True
|
||||
End If
|
||||
End Select
|
||||
|
||||
Dim objPublisher As clsPublisher
|
||||
Select Case cboPublisher.Text.ToUpper.Trim
|
||||
Case MyGlobals.NONE_STRING.ToUpper, ""
|
||||
objPublisher = Nothing
|
||||
Case Else
|
||||
objPublisher = CType(MyGlobals.GetItemFromHashWithStringKey(cboPublisher.Text.ToUpper.Trim, m_objPublishersHash), clsPublisher)
|
||||
If objPublisher Is Nothing Then
|
||||
objPublisher = New clsPublisher(cboPublisher.Text.Trim, MyGlobals.PUBLISHER_STREAMING_ALLOWED_UNKNOWN)
|
||||
lblnAddedPublisher = True
|
||||
End If
|
||||
End Select
|
||||
|
||||
mobjDetailBook.BookTitle = txtBookTitle.Text
|
||||
mobjDetailBook.Composer = objComposer
|
||||
mobjDetailBook.Instrumentation = objInstrumentation
|
||||
mobjDetailBook.Publisher = objPublisher
|
||||
|
||||
If Not mobjDetailBook.Validate(lstrErrorString) Then
|
||||
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Not mobjDetailBook.Save() Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Me.ExistingObjectsListItems.Add(ConvertBookToListViewItem(mobjDetailBook))
|
||||
|
||||
If lblnAddedComposer Then
|
||||
AddComposerToForm(objComposer)
|
||||
End If
|
||||
|
||||
If lblnAddedInstrumentation Then
|
||||
AddInstrumentationToForm(objInstrumentation)
|
||||
End If
|
||||
|
||||
If lblnAddedPublisher Then
|
||||
AddPublisherToForm(objPublisher)
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Sub UserRequestedToExit()
|
||||
Me.Close()
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub EditOrAddStarting()
|
||||
CType(Me.ParentForm, frmMain).DisableMenus()
|
||||
End Sub
|
||||
Protected Overrides Sub EditOrAddCompleted()
|
||||
CType(Me.ParentForm, frmMain).EnableMenus()
|
||||
End Sub
|
||||
|
||||
Private Function ConvertBookToListViewItem(ByVal lobjBook As clsBook) As ListViewItem
|
||||
Dim lobjItem As ListViewItem
|
||||
If lobjBook.Composer Is Nothing Then
|
||||
lobjItem = New ListViewItem(MyGlobals.COLLECTION_STRING)
|
||||
Else
|
||||
lobjItem = New ListViewItem(lobjBook.Composer.ComposerName)
|
||||
End If
|
||||
|
||||
lobjItem.SubItems.Add(lobjBook.BookTitle)
|
||||
|
||||
If lobjBook.Publisher Is Nothing Then
|
||||
lobjItem.SubItems.Add(MyGlobals.NONE_STRING)
|
||||
Else
|
||||
lobjItem.SubItems.Add(lobjBook.Publisher.PublisherName)
|
||||
End If
|
||||
|
||||
lobjItem.Tag = lobjBook
|
||||
|
||||
Return lobjItem
|
||||
|
||||
End Function
|
||||
|
||||
Protected Overrides Function SaveNewDataForExistingItem(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lstrErrorString As String = ""
|
||||
Dim lblnAddedComposer As Boolean
|
||||
Dim lblnAddedInstrumentation As Boolean
|
||||
Dim lblnAddedPublisher As Boolean
|
||||
|
||||
lblnAddedComposer = False
|
||||
lblnAddedInstrumentation = False
|
||||
lblnAddedPublisher = False
|
||||
|
||||
Dim objComposer As clsComposer
|
||||
Select Case cboComposer.Text.ToUpper.Trim
|
||||
Case MyGlobals.COLLECTION_STRING.ToUpper, ""
|
||||
objComposer = Nothing
|
||||
Case Else
|
||||
objComposer = CType(MyGlobals.GetItemFromHashWithStringKey(cboComposer.Text.ToUpper.Trim, m_objComposersHash), clsComposer)
|
||||
If objComposer Is Nothing Then
|
||||
objComposer = New clsComposer(cboComposer.Text.Trim)
|
||||
lblnAddedComposer = True
|
||||
End If
|
||||
End Select
|
||||
|
||||
Dim objInstrumentation As clsInstrumentation
|
||||
Select Case cboInstrumentation.Text.ToUpper.Trim
|
||||
Case ""
|
||||
objInstrumentation = Nothing
|
||||
Case Else
|
||||
objInstrumentation = CType(MyGlobals.GetItemFromHashWithStringKey(cboInstrumentation.Text.ToUpper.Trim, m_objInstrumentationsHash), clsInstrumentation)
|
||||
If objInstrumentation Is Nothing Then
|
||||
objInstrumentation = New clsInstrumentation(cboInstrumentation.Text.Trim)
|
||||
lblnAddedInstrumentation = True
|
||||
End If
|
||||
End Select
|
||||
|
||||
Dim objPublisher As clsPublisher
|
||||
Select Case cboPublisher.Text.ToUpper.Trim
|
||||
Case MyGlobals.NONE_STRING.ToUpper, ""
|
||||
objPublisher = Nothing
|
||||
Case Else
|
||||
objPublisher = CType(MyGlobals.GetItemFromHashWithStringKey(cboPublisher.Text.ToUpper.Trim, m_objPublishersHash), clsPublisher)
|
||||
If objPublisher Is Nothing Then
|
||||
objPublisher = New clsPublisher(cboPublisher.Text.Trim, MyGlobals.PUBLISHER_STREAMING_ALLOWED_UNKNOWN)
|
||||
lblnAddedPublisher = True
|
||||
End If
|
||||
End Select
|
||||
|
||||
mobjDetailBook.BookTitle = txtBookTitle.Text
|
||||
mobjDetailBook.Composer = objComposer
|
||||
mobjDetailBook.Instrumentation = objInstrumentation
|
||||
mobjDetailBook.Publisher = objPublisher
|
||||
|
||||
If Not mobjDetailBook.Validate(lstrErrorString) Then
|
||||
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Not mobjDetailBook.Save() Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Me.ExistingObjectsListItems.Remove(lstvwExistingItem)
|
||||
Me.ExistingObjectsListItems.Add(ConvertBookToListViewItem(mobjDetailBook))
|
||||
|
||||
If lblnAddedComposer Then
|
||||
AddComposerToForm(objComposer)
|
||||
End If
|
||||
|
||||
If lblnAddedInstrumentation Then
|
||||
AddInstrumentationToForm(objInstrumentation)
|
||||
End If
|
||||
|
||||
If lblnAddedPublisher Then
|
||||
AddPublisherToForm(objPublisher)
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Private Sub txtBookTitle_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtBookTitle.TextChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
Private Sub cboComposer_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboComposer.TextChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
Private Sub cboInstrumentation_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboInstrumentation.TextChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
Private Sub cboPublisher_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboPublisher.TextChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
Protected Sub AddComposerToForm(ByVal objComposer As clsComposer)
|
||||
Me.cboComposer.Items.Add(objComposer.ComposerName)
|
||||
m_objComposersHash.Add(objComposer.ComposerName.ToUpper, objComposer)
|
||||
End Sub
|
||||
|
||||
Protected Sub AddInstrumentationToForm(ByVal objInstrumentation As clsInstrumentation)
|
||||
Me.cboInstrumentation.Items.Add(objInstrumentation.InstrumentationName)
|
||||
m_objInstrumentationsHash.Add(objInstrumentation.InstrumentationName.ToUpper, objInstrumentation)
|
||||
End Sub
|
||||
|
||||
Protected Sub AddPublisherToForm(ByVal objPublisher As clsPublisher)
|
||||
Me.cboPublisher.Items.Add(objPublisher.PublisherName)
|
||||
m_objPublishersHash.Add(objPublisher.PublisherName.ToUpper, objPublisher)
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
120
frmEditComposer.resx
Normal file
120
frmEditComposer.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
250
frmEditComposer.vb
Normal file
250
frmEditComposer.vb
Normal file
@@ -0,0 +1,250 @@
|
||||
Imports System.Windows.Forms
|
||||
|
||||
Public Class frmEditComposer
|
||||
Inherits BaseEditForm
|
||||
|
||||
Private mobjDetailComposer As New clsComposer
|
||||
|
||||
#Region " Windows Form Designer generated code "
|
||||
|
||||
Public Sub New()
|
||||
MyBase.New()
|
||||
|
||||
'This call is required by the Windows Form Designer.
|
||||
InitializeComponent()
|
||||
|
||||
'Add any initialization after the InitializeComponent() call
|
||||
End Sub
|
||||
|
||||
'Form overrides dispose to clean up the component list.
|
||||
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
If disposing Then
|
||||
If Not (components Is Nothing) Then
|
||||
components.Dispose()
|
||||
End If
|
||||
End If
|
||||
MyBase.Dispose(disposing)
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
Friend WithEvents lblComposerName As Windows.Forms.Label
|
||||
Friend WithEvents txtComposerName As Windows.Forms.TextBox
|
||||
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
|
||||
Me.lblComposerName = New Windows.Forms.Label
|
||||
Me.txtComposerName = New Windows.Forms.TextBox
|
||||
Me.fraAddEdit.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'fraAddEdit
|
||||
'
|
||||
Me.fraAddEdit.Controls.Add(Me.txtComposerName)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblComposerName)
|
||||
Me.fraAddEdit.Location = New System.Drawing.Point(8, 412)
|
||||
Me.fraAddEdit.Size = New System.Drawing.Size(1072, 116)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblComposerName, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.txtComposerName, 0)
|
||||
'
|
||||
'lblComposerName
|
||||
'
|
||||
Me.lblComposerName.Location = New System.Drawing.Point(16, 24)
|
||||
Me.lblComposerName.Name = "lblComposerName"
|
||||
Me.lblComposerName.Size = New System.Drawing.Size(96, 16)
|
||||
Me.lblComposerName.TabIndex = 3
|
||||
Me.lblComposerName.Text = "Composer Name"
|
||||
'
|
||||
'txtComposerName
|
||||
'
|
||||
Me.txtComposerName.Location = New System.Drawing.Point(112, 24)
|
||||
Me.txtComposerName.Name = "txtComposerName"
|
||||
Me.txtComposerName.Size = New System.Drawing.Size(448, 20)
|
||||
Me.txtComposerName.TabIndex = 4
|
||||
'
|
||||
'frmEditComposer
|
||||
'
|
||||
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
|
||||
Me.ClientSize = New System.Drawing.Size(1088, 534)
|
||||
Me.Name = "frmEditComposer"
|
||||
Me.StartPosition = Windows.Forms.FormStartPosition.Manual
|
||||
Me.Text = "Edit Composer"
|
||||
Me.fraAddEdit.ResumeLayout(False)
|
||||
Me.fraAddEdit.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
|
||||
#End Region
|
||||
|
||||
Protected Overrides Sub LoadExistingItemsList()
|
||||
Dim lobjComposer As clsComposer
|
||||
Dim lobjComposers As System.Collections.Generic.List(Of clsComposer)
|
||||
|
||||
SetUpExistingItemsHeaders()
|
||||
|
||||
lobjComposers = clsComposer.GetAllComposers
|
||||
|
||||
Me.ExistingItemsListSuspendLayout()
|
||||
|
||||
For Each lobjComposer In lobjComposers
|
||||
Me.ExistingObjectsListItems.Add(ConvertComposerToListViewItem(lobjComposer))
|
||||
Next
|
||||
|
||||
Me.ExistingItemsListResumeLayout()
|
||||
End Sub
|
||||
|
||||
Private Sub SetUpExistingItemsHeaders()
|
||||
Me.ExistingObjectsListColumns.Add("Composer Name", 800, HorizontalAlignment.Left)
|
||||
'Me.ExistingObjectsListColumns.Add("Column2", 0, HorizontalAlignment.Left)
|
||||
'Me.ExistingObjectsListColumns.Add("Column3", 200, HorizontalAlignment.Left)
|
||||
|
||||
'Set up sorting rules
|
||||
Dim lobjBaseEditFormColumnSortRules(0) As clsGridColumnSortRule
|
||||
lobjBaseEditFormColumnSortRules(0) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
||||
MyBaseEditFormColumnSortRules = lobjBaseEditFormColumnSortRules
|
||||
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub InitializeDetailControls()
|
||||
'Load data to detail controls here at form load time
|
||||
txtComposerName.MaxLength = MyGlobals.COMPOSER_NAME_SIZE
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub SetFocusToFirstDetailControlForEdit()
|
||||
txtComposerName.Focus()
|
||||
End Sub
|
||||
|
||||
Protected Overrides Function DetailControlsHaveDifferentDataThanExistingData(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjSavedComposer As clsComposer
|
||||
Dim lblnReturnValue As Boolean = False
|
||||
|
||||
lobjSavedComposer = CType(lstvwExistingItem.Tag, clsComposer)
|
||||
|
||||
mobjDetailComposer.ComposerName = txtComposerName.Text
|
||||
|
||||
If lobjSavedComposer.StateIsIdentical(mobjDetailComposer) Then
|
||||
Return False
|
||||
Else
|
||||
Return True
|
||||
End If
|
||||
End Function
|
||||
|
||||
Protected Overrides Function DetailControlsHaveSignificantData() As Boolean
|
||||
If txtComposerName.Text.Trim.Length > 0 Then
|
||||
Return True
|
||||
End If
|
||||
|
||||
Return False
|
||||
End Function
|
||||
|
||||
Protected Overrides Sub EmptyOutDetailControls()
|
||||
txtComposerName.Text = ""
|
||||
mobjDetailComposer = New clsComposer
|
||||
End Sub
|
||||
|
||||
Protected Overrides Function LoadExistingDataToDetailControls(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjComposer As clsComposer
|
||||
Dim lblnReturnValue As Boolean = False
|
||||
lobjComposer = CType(lstvwExistingItem.Tag, clsComposer)
|
||||
txtComposerName.Text = lobjComposer.ComposerName
|
||||
|
||||
mobjDetailComposer = CType(lobjComposer.Clone(), clsComposer)
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Function ConfirmOKToDeleteExistingItem(ByVal lstvwItemToDelete As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjComposer As clsComposer
|
||||
Dim lstrReferencedBy As String = ""
|
||||
|
||||
lobjComposer = CType(lstvwItemToDelete.Tag, clsComposer)
|
||||
|
||||
If Not lobjComposer.OKToDelete(lstrReferencedBy) Then
|
||||
MessageBox.Show("Can't delete composer: " + lobjComposer.ComposerName + ". Currently used by " + lstrReferencedBy + ".", "Unable to delete", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
|
||||
Return False
|
||||
End If
|
||||
|
||||
|
||||
Dim ldrDialogResult As DialogResult = MessageBox.Show("Are you sure you want to delete composer: " + lobjComposer.ComposerName + "?", "Delete confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
|
||||
If ldrDialogResult = Windows.Forms.DialogResult.No Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Function DeleteExistingItem(ByVal lstvwItemToDelete As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjComposer As clsComposer
|
||||
lobjComposer = CType(lstvwItemToDelete.Tag, clsComposer)
|
||||
|
||||
Return lobjComposer.Delete()
|
||||
End Function
|
||||
|
||||
Protected Overrides Function SaveNewItem() As Boolean
|
||||
Dim lstrErrorString As String = ""
|
||||
|
||||
mobjDetailComposer.ComposerName = txtComposerName.Text
|
||||
|
||||
If Not mobjDetailComposer.Validate(lstrErrorString) Then
|
||||
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Not mobjDetailComposer.Save() Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Me.ExistingObjectsListItems.Add(ConvertComposerToListViewItem(mobjDetailComposer))
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Sub UserRequestedToExit()
|
||||
Me.Close()
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub EditOrAddStarting()
|
||||
CType(Me.ParentForm, frmMain).DisableMenus()
|
||||
End Sub
|
||||
Protected Overrides Sub EditOrAddCompleted()
|
||||
CType(Me.ParentForm, frmMain).EnableMenus()
|
||||
End Sub
|
||||
|
||||
Private Function ConvertComposerToListViewItem(ByVal lobjComposer As clsComposer) As ListViewItem
|
||||
Dim lobjItem As ListViewItem
|
||||
lobjItem = New ListViewItem(lobjComposer.ComposerName)
|
||||
'lobjItem.SubItems.Add("Item1Col2")
|
||||
'lobjItem.SubItems.Add("Item1Col3")
|
||||
lobjItem.Tag = lobjComposer
|
||||
|
||||
Return lobjItem
|
||||
|
||||
End Function
|
||||
|
||||
Protected Overrides Function SaveNewDataForExistingItem(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lstrErrorString As String = ""
|
||||
|
||||
mobjDetailComposer.ComposerName = txtComposerName.Text
|
||||
|
||||
If Not mobjDetailComposer.Validate(lstrErrorString) Then
|
||||
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Not mobjDetailComposer.Save() Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Me.ExistingObjectsListItems.Remove(lstvwExistingItem)
|
||||
Me.ExistingObjectsListItems.Add(ConvertComposerToListViewItem(mobjDetailComposer))
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Private Sub txtComposerName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtComposerName.TextChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
120
frmEditHymn.resx
Normal file
120
frmEditHymn.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
481
frmEditHymn.vb
Normal file
481
frmEditHymn.vb
Normal file
@@ -0,0 +1,481 @@
|
||||
Imports System.Windows.Forms
|
||||
|
||||
Public Class frmEditHymn
|
||||
Inherits OrganLit.BaseEditForm
|
||||
|
||||
Private mobjDetailHymn As New clsHymn
|
||||
Private m_objHymnTuneNamesHash As Hashtable
|
||||
|
||||
#Region " Windows Form Designer generated code "
|
||||
|
||||
Public Sub New()
|
||||
MyBase.New()
|
||||
|
||||
'This call is required by the Windows Form Designer.
|
||||
InitializeComponent()
|
||||
|
||||
'Add any initialization after the InitializeComponent() call
|
||||
|
||||
End Sub
|
||||
|
||||
'Form overrides dispose to clean up the component list.
|
||||
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
If disposing Then
|
||||
If Not (components Is Nothing) Then
|
||||
components.Dispose()
|
||||
End If
|
||||
End If
|
||||
MyBase.Dispose(disposing)
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
Friend WithEvents lblHymnName As Windows.Forms.Label
|
||||
Friend WithEvents txtHymnName As Windows.Forms.TextBox
|
||||
Friend WithEvents lblHymnTuneName As Windows.Forms.Label
|
||||
Friend WithEvents cboHymnTuneName As ComboTypeAhead.ComboTypeAhead
|
||||
Friend WithEvents lblHymnal As Windows.Forms.Label
|
||||
Friend WithEvents lblHymnNumber As Windows.Forms.Label
|
||||
Friend WithEvents txtHymnNumber As Windows.Forms.TextBox
|
||||
Friend WithEvents cboHymnal As Windows.Forms.ComboBox
|
||||
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
|
||||
Me.lblHymnName = New Windows.Forms.Label
|
||||
Me.txtHymnName = New Windows.Forms.TextBox
|
||||
Me.lblHymnal = New Windows.Forms.Label
|
||||
Me.lblHymnTuneName = New Windows.Forms.Label
|
||||
Me.cboHymnTuneName = New ComboTypeAhead.ComboTypeAhead
|
||||
Me.lblHymnNumber = New Windows.Forms.Label
|
||||
Me.txtHymnNumber = New Windows.Forms.TextBox
|
||||
Me.cboHymnal = New Windows.Forms.ComboBox
|
||||
Me.fraAddEdit.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'fraAddEdit
|
||||
'
|
||||
Me.fraAddEdit.Controls.Add(Me.cboHymnal)
|
||||
Me.fraAddEdit.Controls.Add(Me.txtHymnNumber)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblHymnNumber)
|
||||
Me.fraAddEdit.Controls.Add(Me.cboHymnTuneName)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblHymnTuneName)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblHymnal)
|
||||
Me.fraAddEdit.Controls.Add(Me.txtHymnName)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblHymnName)
|
||||
Me.fraAddEdit.Location = New System.Drawing.Point(10, 475)
|
||||
Me.fraAddEdit.Size = New System.Drawing.Size(1064, 117)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblHymnName, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.txtHymnName, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblHymnal, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblHymnTuneName, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.cboHymnTuneName, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblHymnNumber, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.txtHymnNumber, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.cboHymnal, 0)
|
||||
'
|
||||
'lblHymnName
|
||||
'
|
||||
Me.lblHymnName.Location = New System.Drawing.Point(16, 64)
|
||||
Me.lblHymnName.Name = "lblHymnName"
|
||||
Me.lblHymnName.Size = New System.Drawing.Size(96, 16)
|
||||
Me.lblHymnName.TabIndex = 4
|
||||
Me.lblHymnName.Text = "Hymn Name"
|
||||
'
|
||||
'txtHymnName
|
||||
'
|
||||
Me.txtHymnName.Location = New System.Drawing.Point(112, 64)
|
||||
Me.txtHymnName.Name = "txtHymnName"
|
||||
Me.txtHymnName.Size = New System.Drawing.Size(424, 20)
|
||||
Me.txtHymnName.TabIndex = 5
|
||||
'
|
||||
'lblHymnal
|
||||
'
|
||||
Me.lblHymnal.Location = New System.Drawing.Point(16, 16)
|
||||
Me.lblHymnal.Name = "lblHymnal"
|
||||
Me.lblHymnal.Size = New System.Drawing.Size(80, 16)
|
||||
Me.lblHymnal.TabIndex = 0
|
||||
Me.lblHymnal.Text = "Hymnal"
|
||||
'
|
||||
'lblHymnTuneName
|
||||
'
|
||||
Me.lblHymnTuneName.Location = New System.Drawing.Point(16, 88)
|
||||
Me.lblHymnTuneName.Name = "lblHymnTuneName"
|
||||
Me.lblHymnTuneName.Size = New System.Drawing.Size(96, 16)
|
||||
Me.lblHymnTuneName.TabIndex = 6
|
||||
Me.lblHymnTuneName.Text = "Hymn Tune Name"
|
||||
'
|
||||
'cboHymnTuneName
|
||||
'
|
||||
Me.cboHymnTuneName.Location = New System.Drawing.Point(112, 88)
|
||||
Me.cboHymnTuneName.Name = "cboHymnTuneName"
|
||||
Me.cboHymnTuneName.Size = New System.Drawing.Size(288, 21)
|
||||
Me.cboHymnTuneName.Sorted = True
|
||||
Me.cboHymnTuneName.TabIndex = 7
|
||||
'
|
||||
'lblHymnNumber
|
||||
'
|
||||
Me.lblHymnNumber.Location = New System.Drawing.Point(16, 40)
|
||||
Me.lblHymnNumber.Name = "lblHymnNumber"
|
||||
Me.lblHymnNumber.Size = New System.Drawing.Size(80, 16)
|
||||
Me.lblHymnNumber.TabIndex = 2
|
||||
Me.lblHymnNumber.Text = "Hymn Number"
|
||||
'
|
||||
'txtHymnNumber
|
||||
'
|
||||
Me.txtHymnNumber.Location = New System.Drawing.Point(112, 40)
|
||||
Me.txtHymnNumber.Name = "txtHymnNumber"
|
||||
Me.txtHymnNumber.Size = New System.Drawing.Size(64, 20)
|
||||
Me.txtHymnNumber.TabIndex = 3
|
||||
'
|
||||
'cboHymnal
|
||||
'
|
||||
Me.cboHymnal.DropDownStyle = Windows.Forms.ComboBoxStyle.DropDownList
|
||||
Me.cboHymnal.Location = New System.Drawing.Point(112, 16)
|
||||
Me.cboHymnal.Name = "cboHymnal"
|
||||
Me.cboHymnal.Size = New System.Drawing.Size(424, 21)
|
||||
Me.cboHymnal.Sorted = True
|
||||
Me.cboHymnal.TabIndex = 1
|
||||
'
|
||||
'frmEditHymn
|
||||
'
|
||||
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
|
||||
Me.ClientSize = New System.Drawing.Size(1080, 598)
|
||||
Me.Name = "frmEditHymn"
|
||||
Me.StartPosition = Windows.Forms.FormStartPosition.Manual
|
||||
Me.Text = "Edit Hymn"
|
||||
Me.fraAddEdit.ResumeLayout(False)
|
||||
Me.fraAddEdit.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
|
||||
#End Region
|
||||
|
||||
Protected Overrides Sub LoadExistingItemsList()
|
||||
Dim lobjHymn As clsHymn
|
||||
Dim lobjHymns As System.Collections.Generic.List(Of clsHymn)
|
||||
|
||||
SetUpExistingItemsHeaders()
|
||||
|
||||
lobjHymns = clsHymn.GetAllHymns
|
||||
|
||||
Me.ExistingItemsListSuspendLayout()
|
||||
For Each lobjHymn In lobjHymns
|
||||
Me.ExistingObjectsListItems.Add(ConvertHymnToListViewItem(lobjHymn))
|
||||
Next
|
||||
|
||||
Me.ExistingItemsListResumeLayout()
|
||||
End Sub
|
||||
|
||||
Private Sub SetUpExistingItemsHeaders()
|
||||
Me.ExistingObjectsListColumns.Add("Hymnal", 100, HorizontalAlignment.Left)
|
||||
Me.ExistingObjectsListColumns.Add("Hymn Number", 100, HorizontalAlignment.Left)
|
||||
Me.ExistingObjectsListColumns.Add("Hymn Name", 400, HorizontalAlignment.Left)
|
||||
Me.ExistingObjectsListColumns.Add("Hymn Tune Name", 200, HorizontalAlignment.Left)
|
||||
|
||||
'Set up sorting rules
|
||||
Dim lobjBaseEditFormColumnSortRules(3) As clsGridColumnSortRule
|
||||
|
||||
'First column, sort by Hymnal, then Hymn Number
|
||||
lobjBaseEditFormColumnSortRules(0) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
||||
lobjBaseEditFormColumnSortRules(0).SubColumnSort = New clsGridSubColumnSortRule(1, clsGridSubColumnSortRule.enumSortType.SortAsNumber, Nothing)
|
||||
'Second column, sort by Hymnal, then Hymn Number
|
||||
lobjBaseEditFormColumnSortRules(1) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortNone)
|
||||
lobjBaseEditFormColumnSortRules(1).SubColumnSort = New clsGridSubColumnSortRule(0, clsGridSubColumnSortRule.enumSortType.SortAsString, New clsGridSubColumnSortRule(1, clsGridSubColumnSortRule.enumSortType.SortAsNumber, Nothing))
|
||||
'Third column, sort by Hymn name, then Hymnal and Hymn Number
|
||||
lobjBaseEditFormColumnSortRules(2) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
||||
lobjBaseEditFormColumnSortRules(2).SubColumnSort = New clsGridSubColumnSortRule(0, clsGridSubColumnSortRule.enumSortType.SortAsString, New clsGridSubColumnSortRule(1, clsGridSubColumnSortRule.enumSortType.SortAsNumber, Nothing))
|
||||
'Fourth column, sort by Hymn Tune name, then Hymn Name, Hymnal and Hymn Number
|
||||
lobjBaseEditFormColumnSortRules(3) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
||||
lobjBaseEditFormColumnSortRules(3).SubColumnSort = New clsGridSubColumnSortRule(2, clsGridSubColumnSortRule.enumSortType.SortAsString, New clsGridSubColumnSortRule(0, clsGridSubColumnSortRule.enumSortType.SortAsString, New clsGridSubColumnSortRule(1, clsGridSubColumnSortRule.enumSortType.SortAsNumber, Nothing)))
|
||||
|
||||
MyBaseEditFormColumnSortRules = lobjBaseEditFormColumnSortRules
|
||||
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub InitializeDetailControls()
|
||||
'Load data to detail controls here at form load time
|
||||
txtHymnName.MaxLength = MyGlobals.HYMN_NAME_SIZE
|
||||
cboHymnTuneName.MaxLength = MyGlobals.HYMN_TUNE_NAME_SIZE
|
||||
|
||||
txtHymnNumber.Text = ""
|
||||
txtHymnName.Text = ""
|
||||
|
||||
'Only set up hymnal if first time in
|
||||
If cboHymnal.Items.Count = 0 Then
|
||||
Dim objHymnal As clsHymnal
|
||||
Dim objHymnals As System.Collections.Generic.List(Of clsHymnal)
|
||||
|
||||
Me.cboHymnal.Items.Clear()
|
||||
|
||||
objHymnals = clsHymnal.GetAllHymnals
|
||||
For Each objHymnal In objHymnals
|
||||
Me.cboHymnal.Items.Add(objHymnal)
|
||||
Next
|
||||
|
||||
'Select first hymnal if there is one
|
||||
If Me.cboHymnal.Items.Count > 0 Then
|
||||
Me.cboHymnal.SelectedIndex = 0
|
||||
End If
|
||||
End If
|
||||
|
||||
If cboHymnTuneName.Items.Count = 0 Then
|
||||
Dim objHymnTuneName As clsHymnTuneName
|
||||
Dim objHymnTuneNames As System.Collections.Generic.List(Of clsHymnTuneName)
|
||||
'Dim objObject As Object
|
||||
|
||||
Me.cboHymnTuneName.Items.Clear()
|
||||
m_objHymnTuneNamesHash = New Hashtable
|
||||
|
||||
objHymnTuneNames = clsHymnTuneName.GetAllHymnTuneNames
|
||||
For Each objHymnTuneName In objHymnTuneNames
|
||||
AddHymnTuneNameToForm(objHymnTuneName)
|
||||
Next
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub SetFocusToFirstDetailControlForEdit()
|
||||
cboHymnal.Focus()
|
||||
End Sub
|
||||
|
||||
Protected Overrides Function DetailControlsHaveDifferentDataThanExistingData(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjSavedHymn As clsHymn
|
||||
Dim lblnReturnValue As Boolean = False
|
||||
|
||||
lobjSavedHymn = CType(lstvwExistingItem.Tag, clsHymn)
|
||||
|
||||
Dim objHymnTuneName As clsHymnTuneName
|
||||
Select Case cboHymnTuneName.Text.ToUpper.Trim
|
||||
Case MyGlobals.NONE_STRING.ToUpper, ""
|
||||
objHymnTuneName = Nothing
|
||||
Case Else
|
||||
objHymnTuneName = CType(MyGlobals.GetItemFromHashWithStringKey(cboHymnTuneName.Text.ToUpper.Trim, m_objHymnTuneNamesHash), clsHymnTuneName)
|
||||
If objHymnTuneName Is Nothing Then
|
||||
objHymnTuneName = New clsHymnTuneName(cboHymnTuneName.Text.Trim)
|
||||
End If
|
||||
End Select
|
||||
|
||||
mobjDetailHymn.HymnNumberAsString = txtHymnNumber.Text
|
||||
mobjDetailHymn.HymnName = txtHymnName.Text
|
||||
mobjDetailHymn.Hymnal = CType(cboHymnal.SelectedItem, clsHymnal)
|
||||
mobjDetailHymn.HymnTuneName = objHymnTuneName
|
||||
|
||||
If lobjSavedHymn.StateIsIdentical(mobjDetailHymn) Then
|
||||
Return False
|
||||
Else
|
||||
Return True
|
||||
End If
|
||||
End Function
|
||||
|
||||
Protected Overrides Function DetailControlsHaveSignificantData() As Boolean
|
||||
If txtHymnName.Text.Trim.Length > 0 _
|
||||
OrElse txtHymnNumber.Text.Trim.Length > 0 Then
|
||||
Return True
|
||||
End If
|
||||
|
||||
Return False
|
||||
End Function
|
||||
|
||||
Protected Overrides Sub EmptyOutDetailControls()
|
||||
InitializeDetailControls()
|
||||
txtHymnNumber.Text = ""
|
||||
txtHymnName.Text = ""
|
||||
cboHymnTuneName.Text = ""
|
||||
|
||||
mobjDetailHymn = New clsHymn
|
||||
End Sub
|
||||
|
||||
Protected Overrides Function LoadExistingDataToDetailControls(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjHymn As clsHymn
|
||||
Dim lblnReturnValue As Boolean = False
|
||||
lobjHymn = CType(lstvwExistingItem.Tag, clsHymn)
|
||||
txtHymnNumber.Text = lobjHymn.HymnNumberAsString
|
||||
txtHymnName.Text = lobjHymn.HymnName
|
||||
|
||||
cboHymnal.Text = lobjHymn.Hymnal.ToString
|
||||
|
||||
If lobjHymn.HymnTuneName Is Nothing Then
|
||||
cboHymnTuneName.Text = MyGlobals.NONE_STRING
|
||||
Else
|
||||
cboHymnTuneName.Text = lobjHymn.HymnTuneName.HymnTuneName
|
||||
End If
|
||||
|
||||
mobjDetailHymn = CType(lobjHymn.Clone(), clsHymn)
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Function ConfirmOKToDeleteExistingItem(ByVal lstvwItemToDelete As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjHymn As clsHymn
|
||||
Dim lstrReferencedBy As String = ""
|
||||
|
||||
lobjHymn = CType(lstvwItemToDelete.Tag, clsHymn)
|
||||
|
||||
If Not lobjHymn.OKToDelete(lstrReferencedBy) Then
|
||||
MessageBox.Show("Can't delete hymn: " + lobjHymn.ToString + ". Currently used by " + lstrReferencedBy + ".", "Unable to delete", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
|
||||
Return False
|
||||
End If
|
||||
|
||||
Dim ldrDialogResult As DialogResult = MessageBox.Show("Are you sure you want to delete hymn: " + lobjHymn.ToString + "?", "Delete confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
|
||||
If ldrDialogResult = Windows.Forms.DialogResult.No Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Function DeleteExistingItem(ByVal lstvwItemToDelete As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjHymn As clsHymn
|
||||
lobjHymn = CType(lstvwItemToDelete.Tag, clsHymn)
|
||||
|
||||
Return lobjHymn.Delete()
|
||||
End Function
|
||||
|
||||
Protected Overrides Function SaveNewItem() As Boolean
|
||||
Dim lstrErrorString As String = ""
|
||||
Dim lblnAddedNewHymnTuneName As Boolean
|
||||
|
||||
lblnAddedNewHymnTuneName = False
|
||||
|
||||
Dim objHymnTuneName As clsHymnTuneName
|
||||
Select Case cboHymnTuneName.Text.ToUpper.Trim
|
||||
Case MyGlobals.NONE_STRING.ToUpper, ""
|
||||
objHymnTuneName = Nothing
|
||||
Case Else
|
||||
objHymnTuneName = CType(MyGlobals.GetItemFromHashWithStringKey(cboHymnTuneName.Text.ToUpper.Trim, m_objHymnTuneNamesHash), clsHymnTuneName)
|
||||
If objHymnTuneName Is Nothing Then
|
||||
objHymnTuneName = New clsHymnTuneName(cboHymnTuneName.Text.Trim)
|
||||
lblnAddedNewHymnTuneName = True
|
||||
End If
|
||||
End Select
|
||||
|
||||
mobjDetailHymn.HymnNumberAsString = txtHymnNumber.Text
|
||||
mobjDetailHymn.HymnName = txtHymnName.Text
|
||||
mobjDetailHymn.Hymnal = CType(cboHymnal.SelectedItem, clsHymnal)
|
||||
mobjDetailHymn.HymnTuneName = objHymnTuneName
|
||||
|
||||
If Not mobjDetailHymn.Validate(lstrErrorString) Then
|
||||
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Not mobjDetailHymn.Save() Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Me.ExistingObjectsListItems.Add(ConvertHymnToListViewItem(mobjDetailHymn))
|
||||
|
||||
If lblnAddedNewHymnTuneName Then
|
||||
AddHymnTuneNameToForm(objHymnTuneName)
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Sub UserRequestedToExit()
|
||||
Me.Close()
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub EditOrAddStarting()
|
||||
CType(Me.ParentForm, frmMain).DisableMenus()
|
||||
End Sub
|
||||
Protected Overrides Sub EditOrAddCompleted()
|
||||
CType(Me.ParentForm, frmMain).EnableMenus()
|
||||
End Sub
|
||||
|
||||
Private Function ConvertHymnToListViewItem(ByVal lobjHymn As clsHymn) As ListViewItem
|
||||
Dim lobjItem As ListViewItem
|
||||
|
||||
If lobjHymn.Hymnal Is Nothing Then
|
||||
lobjItem = New ListViewItem("")
|
||||
Else
|
||||
lobjItem = New ListViewItem(lobjHymn.Hymnal.HymnalAbbreviation)
|
||||
End If
|
||||
|
||||
lobjItem.SubItems.Add(lobjHymn.HymnNumberAsString)
|
||||
lobjItem.SubItems.Add(lobjHymn.HymnName)
|
||||
|
||||
If lobjHymn.HymnTuneName Is Nothing Then
|
||||
lobjItem.SubItems.Add(MyGlobals.NONE_STRING)
|
||||
Else
|
||||
lobjItem.SubItems.Add(lobjHymn.HymnTuneName.HymnTuneName)
|
||||
End If
|
||||
|
||||
lobjItem.Tag = lobjHymn
|
||||
|
||||
Return lobjItem
|
||||
|
||||
End Function
|
||||
|
||||
Protected Overrides Function SaveNewDataForExistingItem(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lstrErrorString As String = ""
|
||||
Dim lblnAddedNewHymnTuneName As Boolean
|
||||
|
||||
lblnAddedNewHymnTuneName = False
|
||||
|
||||
Dim objHymnTuneName As clsHymnTuneName
|
||||
Select Case cboHymnTuneName.Text.ToUpper.Trim
|
||||
Case MyGlobals.NONE_STRING.ToUpper, ""
|
||||
objHymnTuneName = Nothing
|
||||
Case Else
|
||||
objHymnTuneName = CType(MyGlobals.GetItemFromHashWithStringKey(cboHymnTuneName.Text.ToUpper.Trim, m_objHymnTuneNamesHash), clsHymnTuneName)
|
||||
If objHymnTuneName Is Nothing Then
|
||||
objHymnTuneName = New clsHymnTuneName(cboHymnTuneName.Text.Trim)
|
||||
lblnAddedNewHymnTuneName = True
|
||||
End If
|
||||
End Select
|
||||
|
||||
mobjDetailHymn.HymnNumberAsString = txtHymnNumber.Text
|
||||
mobjDetailHymn.HymnName = txtHymnName.Text
|
||||
mobjDetailHymn.Hymnal = CType(cboHymnal.SelectedItem, clsHymnal)
|
||||
mobjDetailHymn.HymnTuneName = objHymnTuneName
|
||||
|
||||
If Not mobjDetailHymn.Validate(lstrErrorString) Then
|
||||
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Not mobjDetailHymn.Save() Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Me.ExistingObjectsListItems.Remove(lstvwExistingItem)
|
||||
Me.ExistingObjectsListItems.Add(ConvertHymnToListViewItem(mobjDetailHymn))
|
||||
|
||||
If lblnAddedNewHymnTuneName Then
|
||||
AddHymnTuneNameToForm(objHymnTuneName)
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Private Sub txtHymnName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtHymnName.TextChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
Private Sub cboHymnTuneName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboHymnTuneName.TextChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
Private Sub txtHymnNumber_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtHymnNumber.TextChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
Private Sub cboHymnal_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboHymnal.SelectedIndexChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
Private Sub txtHymnNumber_KeyPress(ByVal sender As Object, ByVal e As Windows.Forms.KeyPressEventArgs) Handles txtHymnNumber.KeyPress
|
||||
If Not MyGlobals.AllowKeypressInNumericTextBox(e.KeyChar) Then
|
||||
e.Handled = True
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Protected Sub AddHymnTuneNameToForm(ByVal objHymnTuneName As clsHymnTuneName)
|
||||
Me.cboHymnTuneName.Items.Add(objHymnTuneName.HymnTuneName)
|
||||
m_objHymnTuneNamesHash.Add(objHymnTuneName.HymnTuneName.ToUpper, objHymnTuneName)
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
120
frmEditHymnTuneName.resx
Normal file
120
frmEditHymnTuneName.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
354
frmEditHymnTuneName.vb
Normal file
354
frmEditHymnTuneName.vb
Normal file
@@ -0,0 +1,354 @@
|
||||
Imports System.Windows.Forms
|
||||
|
||||
Public Class frmEditHymnTuneName
|
||||
Inherits BaseEditForm
|
||||
|
||||
Private mobjDetailHymnTuneName As New clsHymnTuneName
|
||||
|
||||
#Region " Windows Form Designer generated code "
|
||||
|
||||
Public Sub New()
|
||||
MyBase.New()
|
||||
|
||||
'This call is required by the Windows Form Designer.
|
||||
InitializeComponent()
|
||||
|
||||
'Add any initialization after the InitializeComponent() call
|
||||
End Sub
|
||||
|
||||
'Form overrides dispose to clean up the component list.
|
||||
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
If disposing Then
|
||||
If Not (components Is Nothing) Then
|
||||
components.Dispose()
|
||||
End If
|
||||
End If
|
||||
MyBase.Dispose(disposing)
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
Friend WithEvents lblHymnTuneName As Windows.Forms.Label
|
||||
Friend WithEvents txtHymnTuneName As Windows.Forms.TextBox
|
||||
Friend WithEvents grpAlternateTuneNames As Windows.Forms.GroupBox
|
||||
Friend WithEvents lstAlternateTuneNames As Windows.Forms.ListBox
|
||||
Friend WithEvents btnAddAlternateHymnTuneName As Windows.Forms.Button
|
||||
Friend WithEvents btnRemoveAlternateHymnTuneName As Windows.Forms.Button
|
||||
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
|
||||
Me.lblHymnTuneName = New Windows.Forms.Label
|
||||
Me.txtHymnTuneName = New Windows.Forms.TextBox
|
||||
Me.grpAlternateTuneNames = New Windows.Forms.GroupBox
|
||||
Me.btnRemoveAlternateHymnTuneName = New Windows.Forms.Button
|
||||
Me.btnAddAlternateHymnTuneName = New Windows.Forms.Button
|
||||
Me.lstAlternateTuneNames = New Windows.Forms.ListBox
|
||||
Me.fraAddEdit.SuspendLayout()
|
||||
Me.grpAlternateTuneNames.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'fraAddEdit
|
||||
'
|
||||
Me.fraAddEdit.Controls.Add(Me.grpAlternateTuneNames)
|
||||
Me.fraAddEdit.Controls.Add(Me.txtHymnTuneName)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblHymnTuneName)
|
||||
Me.fraAddEdit.Location = New System.Drawing.Point(8, 300)
|
||||
Me.fraAddEdit.Size = New System.Drawing.Size(1072, 228)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblHymnTuneName, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.txtHymnTuneName, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.grpAlternateTuneNames, 0)
|
||||
'
|
||||
'lblHymnTuneName
|
||||
'
|
||||
Me.lblHymnTuneName.Location = New System.Drawing.Point(16, 24)
|
||||
Me.lblHymnTuneName.Name = "lblHymnTuneName"
|
||||
Me.lblHymnTuneName.Size = New System.Drawing.Size(96, 16)
|
||||
Me.lblHymnTuneName.TabIndex = 3
|
||||
Me.lblHymnTuneName.Text = "Hymn Tune Name"
|
||||
'
|
||||
'txtHymnTuneName
|
||||
'
|
||||
Me.txtHymnTuneName.Location = New System.Drawing.Point(112, 24)
|
||||
Me.txtHymnTuneName.Name = "txtHymnTuneName"
|
||||
Me.txtHymnTuneName.Size = New System.Drawing.Size(448, 20)
|
||||
Me.txtHymnTuneName.TabIndex = 4
|
||||
'
|
||||
'grpAlternateTuneNames
|
||||
'
|
||||
Me.grpAlternateTuneNames.Controls.Add(Me.btnRemoveAlternateHymnTuneName)
|
||||
Me.grpAlternateTuneNames.Controls.Add(Me.btnAddAlternateHymnTuneName)
|
||||
Me.grpAlternateTuneNames.Controls.Add(Me.lstAlternateTuneNames)
|
||||
Me.grpAlternateTuneNames.Location = New System.Drawing.Point(8, 48)
|
||||
Me.grpAlternateTuneNames.Name = "grpAlternateTuneNames"
|
||||
Me.grpAlternateTuneNames.Size = New System.Drawing.Size(552, 168)
|
||||
Me.grpAlternateTuneNames.TabIndex = 5
|
||||
Me.grpAlternateTuneNames.TabStop = False
|
||||
Me.grpAlternateTuneNames.Text = "Alternate Tune Names for this Tune"
|
||||
'
|
||||
'btnRemoveAlternateHymnTuneName
|
||||
'
|
||||
Me.btnRemoveAlternateHymnTuneName.Location = New System.Drawing.Point(464, 48)
|
||||
Me.btnRemoveAlternateHymnTuneName.Name = "btnRemoveAlternateHymnTuneName"
|
||||
Me.btnRemoveAlternateHymnTuneName.Size = New System.Drawing.Size(80, 24)
|
||||
Me.btnRemoveAlternateHymnTuneName.TabIndex = 2
|
||||
Me.btnRemoveAlternateHymnTuneName.Text = "Remove"
|
||||
'
|
||||
'btnAddAlternateHymnTuneName
|
||||
'
|
||||
Me.btnAddAlternateHymnTuneName.Location = New System.Drawing.Point(464, 16)
|
||||
Me.btnAddAlternateHymnTuneName.Name = "btnAddAlternateHymnTuneName"
|
||||
Me.btnAddAlternateHymnTuneName.Size = New System.Drawing.Size(80, 24)
|
||||
Me.btnAddAlternateHymnTuneName.TabIndex = 1
|
||||
Me.btnAddAlternateHymnTuneName.Text = "Add..."
|
||||
'
|
||||
'lstAlternateTuneNames
|
||||
'
|
||||
Me.lstAlternateTuneNames.Location = New System.Drawing.Point(8, 16)
|
||||
Me.lstAlternateTuneNames.Name = "lstAlternateTuneNames"
|
||||
Me.lstAlternateTuneNames.Size = New System.Drawing.Size(440, 147)
|
||||
Me.lstAlternateTuneNames.TabIndex = 0
|
||||
'
|
||||
'frmEditHymnTuneName
|
||||
'
|
||||
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
|
||||
Me.ClientSize = New System.Drawing.Size(1088, 534)
|
||||
Me.Name = "frmEditHymnTuneName"
|
||||
Me.StartPosition = Windows.Forms.FormStartPosition.Manual
|
||||
Me.Text = "Edit Hymn Tune Name"
|
||||
Me.fraAddEdit.ResumeLayout(False)
|
||||
Me.fraAddEdit.PerformLayout()
|
||||
Me.grpAlternateTuneNames.ResumeLayout(False)
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
|
||||
#End Region
|
||||
|
||||
Protected Overrides Sub LoadExistingItemsList()
|
||||
Dim lobjHymnTuneName As clsHymnTuneName
|
||||
Dim lobjHymnTuneNames As System.Collections.Generic.List(Of clsHymnTuneName)
|
||||
|
||||
SetUpExistingItemsHeaders()
|
||||
|
||||
lobjHymnTuneNames = clsHymnTuneName.GetAllHymnTuneNames
|
||||
|
||||
Me.ExistingItemsListSuspendLayout()
|
||||
|
||||
For Each lobjHymnTuneName In lobjHymnTuneNames
|
||||
Me.ExistingObjectsListItems.Add(ConvertHymnTuneNameToListViewItem(lobjHymnTuneName))
|
||||
Next
|
||||
|
||||
Me.ExistingItemsListResumeLayout()
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub SetUpExistingItemsHeaders()
|
||||
Me.ExistingObjectsListColumns.Add("Hymn Tune Name", 800, HorizontalAlignment.Left)
|
||||
'Me.ExistingObjectsListColumns.Add("Column2", 0, HorizontalAlignment.Left)
|
||||
'Me.ExistingObjectsListColumns.Add("Column3", 200, HorizontalAlignment.Left)
|
||||
|
||||
'Set up sorting rules
|
||||
Dim lobjBaseEditFormColumnSortRules(0) As clsGridColumnSortRule
|
||||
lobjBaseEditFormColumnSortRules(0) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
||||
MyBaseEditFormColumnSortRules = lobjBaseEditFormColumnSortRules
|
||||
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub InitializeDetailControls()
|
||||
'Load data to detail controls here at form load time
|
||||
txtHymnTuneName.MaxLength = MyGlobals.HYMN_TUNE_NAME_SIZE
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub SetFocusToFirstDetailControlForEdit()
|
||||
txtHymnTuneName.Focus()
|
||||
End Sub
|
||||
|
||||
Protected Overrides Function DetailControlsHaveDifferentDataThanExistingData(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjSavedHymnTuneName As clsHymnTuneName
|
||||
Dim lblnReturnValue As Boolean = False
|
||||
|
||||
lobjSavedHymnTuneName = CType(lstvwExistingItem.Tag, clsHymnTuneName)
|
||||
|
||||
mobjDetailHymnTuneName.HymnTuneName = txtHymnTuneName.Text
|
||||
'Alternate tune names should already be in mobjDetailHymnTuneName
|
||||
|
||||
If lobjSavedHymnTuneName.StateIsIdentical(mobjDetailHymnTuneName) Then
|
||||
Return False
|
||||
Else
|
||||
Return True
|
||||
End If
|
||||
End Function
|
||||
|
||||
Protected Overrides Function DetailControlsHaveSignificantData() As Boolean
|
||||
If txtHymnTuneName.Text.Trim.Length > 0 Then
|
||||
Return True
|
||||
End If
|
||||
|
||||
Return False
|
||||
End Function
|
||||
|
||||
Protected Overrides Sub EmptyOutDetailControls()
|
||||
txtHymnTuneName.Text = ""
|
||||
lstAlternateTuneNames.Items.Clear()
|
||||
mobjDetailHymnTuneName = New clsHymnTuneName
|
||||
End Sub
|
||||
|
||||
Protected Overrides Function LoadExistingDataToDetailControls(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjHymnTuneName As clsHymnTuneName
|
||||
Dim lblnReturnValue As Boolean = False
|
||||
|
||||
lobjHymnTuneName = CType(lstvwExistingItem.Tag, clsHymnTuneName)
|
||||
lobjHymnTuneName.Refresh()
|
||||
txtHymnTuneName.Text = lobjHymnTuneName.HymnTuneName
|
||||
|
||||
Dim objDictionaryEntry As DictionaryEntry
|
||||
Dim objOtherHymnTuneName As clsHymnTuneName
|
||||
For Each objDictionaryEntry In lobjHymnTuneName.OtherHymnTuneNamesForTune
|
||||
objOtherHymnTuneName = CType(objDictionaryEntry.Value, clsHymnTuneName)
|
||||
lstAlternateTuneNames.Items.Add(objOtherHymnTuneName)
|
||||
Next
|
||||
|
||||
mobjDetailHymnTuneName = CType(lobjHymnTuneName.Clone(), clsHymnTuneName)
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Function ConfirmOKToDeleteExistingItem(ByVal lstvwItemToDelete As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjHymnTuneName As clsHymnTuneName
|
||||
Dim lstrReferencedBy As String = ""
|
||||
|
||||
lobjHymnTuneName = CType(lstvwItemToDelete.Tag, clsHymnTuneName)
|
||||
|
||||
If Not lobjHymnTuneName.OKToDelete(lstrReferencedBy) Then
|
||||
MessageBox.Show("Can't delete hymn tune name: " + lobjHymnTuneName.HymnTuneName + ". Currently used by " + lstrReferencedBy + ".", "Unable to delete", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
|
||||
Return False
|
||||
End If
|
||||
|
||||
|
||||
Dim ldrDialogResult As DialogResult = MessageBox.Show("Are you sure you want to delete hymn tune name: " + lobjHymnTuneName.HymnTuneName + "?", "Delete confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
|
||||
If ldrDialogResult = Windows.Forms.DialogResult.No Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Function DeleteExistingItem(ByVal lstvwItemToDelete As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjHymnTuneName As clsHymnTuneName
|
||||
lobjHymnTuneName = CType(lstvwItemToDelete.Tag, clsHymnTuneName)
|
||||
|
||||
Return lobjHymnTuneName.Delete()
|
||||
End Function
|
||||
|
||||
Protected Overrides Function SaveNewItem() As Boolean
|
||||
Dim lstrErrorString As String = ""
|
||||
|
||||
mobjDetailHymnTuneName.HymnTuneName = txtHymnTuneName.Text
|
||||
'Alternate tune names should already be in mobjDetailHymnTuneName
|
||||
|
||||
If Not mobjDetailHymnTuneName.Validate(lstrErrorString) Then
|
||||
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Not mobjDetailHymnTuneName.Save() Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
'Refresh to pick up any other alternate hymn tune names that
|
||||
'may have gotten added by adding an entry
|
||||
mobjDetailHymnTuneName.Refresh()
|
||||
|
||||
Me.ExistingObjectsListItems.Add(ConvertHymnTuneNameToListViewItem(mobjDetailHymnTuneName))
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Sub UserRequestedToExit()
|
||||
Me.Close()
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub EditOrAddStarting()
|
||||
CType(Me.ParentForm, frmMain).DisableMenus()
|
||||
End Sub
|
||||
Protected Overrides Sub EditOrAddCompleted()
|
||||
CType(Me.ParentForm, frmMain).EnableMenus()
|
||||
End Sub
|
||||
|
||||
Private Function ConvertHymnTuneNameToListViewItem(ByVal lobjHymnTuneName As clsHymnTuneName) As ListViewItem
|
||||
Dim lobjItem As ListViewItem
|
||||
lobjItem = New ListViewItem(lobjHymnTuneName.HymnTuneName)
|
||||
'lobjItem.SubItems.Add("Item1Col2")
|
||||
'lobjItem.SubItems.Add("Item1Col3")
|
||||
lobjItem.Tag = lobjHymnTuneName
|
||||
|
||||
Return lobjItem
|
||||
|
||||
End Function
|
||||
|
||||
Protected Overrides Function SaveNewDataForExistingItem(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lstrErrorString As String = ""
|
||||
|
||||
mobjDetailHymnTuneName.HymnTuneName = txtHymnTuneName.Text
|
||||
|
||||
If Not mobjDetailHymnTuneName.Validate(lstrErrorString) Then
|
||||
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Not mobjDetailHymnTuneName.Save() Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
mobjDetailHymnTuneName.Refresh()
|
||||
|
||||
Me.ExistingObjectsListItems.Remove(lstvwExistingItem)
|
||||
Me.ExistingObjectsListItems.Add(ConvertHymnTuneNameToListViewItem(mobjDetailHymnTuneName))
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Private Sub txtHymnTuneName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtHymnTuneName.TextChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
Private Sub btnAddAlternateHymnTuneName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddAlternateHymnTuneName.Click
|
||||
If txtHymnTuneName.Text.Trim.Length = 0 Then
|
||||
MessageBox.Show("Cannot add alternate hymn tune name when no hymn tune name has been entered")
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
Dim objNewAlternateHymnTuneName As clsHymnTuneName
|
||||
mobjDetailHymnTuneName.HymnTuneName = txtHymnTuneName.Text.Trim
|
||||
objNewAlternateHymnTuneName = frmAddAlternateHymnTuneName.GetAlternateHymnTuneNameChosen(mobjDetailHymnTuneName)
|
||||
If objNewAlternateHymnTuneName Is Nothing Then
|
||||
'User cancelled
|
||||
Else
|
||||
lstAlternateTuneNames.Items.Add(objNewAlternateHymnTuneName)
|
||||
mobjDetailHymnTuneName.AddAlternateHymnTuneName(objNewAlternateHymnTuneName)
|
||||
MyBase.DetailDataHasChanged()
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub btnRemoveAlternateHymnTuneName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRemoveAlternateHymnTuneName.Click
|
||||
If txtHymnTuneName.Text.Trim.Length = 0 Then
|
||||
MessageBox.Show("Cannot remove alternate hymn tune name when no hymn tune name has been entered")
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
If lstAlternateTuneNames.SelectedItems.Count = 0 Then
|
||||
MessageBox.Show("Must select an alternate hymn tune name to remove")
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
Dim objHymnTuneNameToRemove As clsHymnTuneName
|
||||
objHymnTuneNameToRemove = CType(lstAlternateTuneNames.SelectedItem, clsHymnTuneName)
|
||||
|
||||
mobjDetailHymnTuneName.RemoveAlternateHymnTuneName(objHymnTuneNameToRemove)
|
||||
lstAlternateTuneNames.Items.RemoveAt(lstAlternateTuneNames.SelectedIndex)
|
||||
MyBase.DetailDataHasChanged()
|
||||
|
||||
End Sub
|
||||
End Class
|
||||
120
frmEditHymnal.resx
Normal file
120
frmEditHymnal.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
286
frmEditHymnal.vb
Normal file
286
frmEditHymnal.vb
Normal file
@@ -0,0 +1,286 @@
|
||||
Imports System.Windows.Forms
|
||||
|
||||
Public Class frmEditHymnal
|
||||
Inherits OrganLit.BaseEditForm
|
||||
|
||||
Private mobjDetailHymnal As New clsHymnal
|
||||
|
||||
#Region " Windows Form Designer generated code "
|
||||
|
||||
Public Sub New()
|
||||
MyBase.New()
|
||||
|
||||
'This call is required by the Windows Form Designer.
|
||||
InitializeComponent()
|
||||
|
||||
'Add any initialization after the InitializeComponent() call
|
||||
|
||||
End Sub
|
||||
|
||||
'Form overrides dispose to clean up the component list.
|
||||
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
If disposing Then
|
||||
If Not (components Is Nothing) Then
|
||||
components.Dispose()
|
||||
End If
|
||||
End If
|
||||
MyBase.Dispose(disposing)
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
Friend WithEvents lblHymnalName As Windows.Forms.Label
|
||||
Friend WithEvents txtHymnalName As Windows.Forms.TextBox
|
||||
Friend WithEvents Label1 As Windows.Forms.Label
|
||||
Friend WithEvents txtHymnalAbbreviation As Windows.Forms.TextBox
|
||||
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
|
||||
Me.lblHymnalName = New Windows.Forms.Label
|
||||
Me.txtHymnalName = New Windows.Forms.TextBox
|
||||
Me.Label1 = New Windows.Forms.Label
|
||||
Me.txtHymnalAbbreviation = New Windows.Forms.TextBox
|
||||
Me.fraAddEdit.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'fraAddEdit
|
||||
'
|
||||
Me.fraAddEdit.Controls.Add(Me.txtHymnalAbbreviation)
|
||||
Me.fraAddEdit.Controls.Add(Me.Label1)
|
||||
Me.fraAddEdit.Controls.Add(Me.txtHymnalName)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblHymnalName)
|
||||
Me.fraAddEdit.Location = New System.Drawing.Point(10, 481)
|
||||
Me.fraAddEdit.Size = New System.Drawing.Size(1064, 111)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblHymnalName, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.txtHymnalName, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.Label1, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.txtHymnalAbbreviation, 0)
|
||||
'
|
||||
'lblHymnalName
|
||||
'
|
||||
Me.lblHymnalName.Location = New System.Drawing.Point(8, 24)
|
||||
Me.lblHymnalName.Name = "lblHymnalName"
|
||||
Me.lblHymnalName.Size = New System.Drawing.Size(80, 16)
|
||||
Me.lblHymnalName.TabIndex = 3
|
||||
Me.lblHymnalName.Text = "Hymnal Name"
|
||||
'
|
||||
'txtHymnalName
|
||||
'
|
||||
Me.txtHymnalName.Location = New System.Drawing.Point(128, 24)
|
||||
Me.txtHymnalName.Name = "txtHymnalName"
|
||||
Me.txtHymnalName.Size = New System.Drawing.Size(360, 20)
|
||||
Me.txtHymnalName.TabIndex = 4
|
||||
'
|
||||
'Label1
|
||||
'
|
||||
Me.Label1.Location = New System.Drawing.Point(8, 56)
|
||||
Me.Label1.Name = "Label1"
|
||||
Me.Label1.Size = New System.Drawing.Size(112, 16)
|
||||
Me.Label1.TabIndex = 5
|
||||
Me.Label1.Text = "Hymnal Abbreviation"
|
||||
'
|
||||
'txtHymnalAbbreviation
|
||||
'
|
||||
Me.txtHymnalAbbreviation.Location = New System.Drawing.Point(128, 56)
|
||||
Me.txtHymnalAbbreviation.Name = "txtHymnalAbbreviation"
|
||||
Me.txtHymnalAbbreviation.Size = New System.Drawing.Size(88, 20)
|
||||
Me.txtHymnalAbbreviation.TabIndex = 6
|
||||
'
|
||||
'frmEditHymnal
|
||||
'
|
||||
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
|
||||
Me.ClientSize = New System.Drawing.Size(1080, 598)
|
||||
Me.Name = "frmEditHymnal"
|
||||
Me.StartPosition = Windows.Forms.FormStartPosition.Manual
|
||||
Me.Text = "Edit Hymnal"
|
||||
Me.fraAddEdit.ResumeLayout(False)
|
||||
Me.fraAddEdit.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
|
||||
#End Region
|
||||
|
||||
Protected Overrides Sub LoadExistingItemsList()
|
||||
Dim lobjHymnal As clsHymnal
|
||||
Dim lcolHymnals As System.Collections.Generic.List(Of clsHymnal)
|
||||
|
||||
SetUpExistingItemsHeaders()
|
||||
|
||||
lcolHymnals = clsHymnal.GetAllHymnals
|
||||
|
||||
Me.ExistingItemsListSuspendLayout()
|
||||
|
||||
For Each lobjHymnal In lcolHymnals
|
||||
Me.ExistingObjectsListItems.Add(ConvertHymnalToListViewItem(lobjHymnal))
|
||||
Next
|
||||
|
||||
Me.ExistingItemsListResumeLayout()
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub SetUpExistingItemsHeaders()
|
||||
Me.ExistingObjectsListColumns.Add("Hymnal Name", 400, HorizontalAlignment.Left)
|
||||
Me.ExistingObjectsListColumns.Add("Hymnal Abbreviation", 150, HorizontalAlignment.Left)
|
||||
'Me.ExistingObjectsListColumns.Add("Column3", 200, HorizontalAlignment.Left)
|
||||
|
||||
'Set up sorting rules
|
||||
Dim lobjBaseEditFormColumnSortRules(1) As clsGridColumnSortRule
|
||||
lobjBaseEditFormColumnSortRules(0) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
||||
lobjBaseEditFormColumnSortRules(1) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
||||
MyBaseEditFormColumnSortRules = lobjBaseEditFormColumnSortRules
|
||||
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub InitializeDetailControls()
|
||||
'Load data to detail controls here at form load time
|
||||
txtHymnalName.MaxLength = MyGlobals.HYMNAL_NAME_SIZE
|
||||
txtHymnalAbbreviation.MaxLength = MyGlobals.HYMNAL_ABBREVIATION_SIZE
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub SetFocusToFirstDetailControlForEdit()
|
||||
txtHymnalName.Focus()
|
||||
End Sub
|
||||
|
||||
Protected Overrides Function DetailControlsHaveDifferentDataThanExistingData(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjSavedHymnal As clsHymnal
|
||||
|
||||
lobjSavedHymnal = CType(lstvwExistingItem.Tag, clsHymnal)
|
||||
|
||||
mobjDetailHymnal.HymnalName = txtHymnalName.Text
|
||||
mobjDetailHymnal.HymnalAbbreviation = txtHymnalAbbreviation.Text
|
||||
|
||||
If lobjSavedHymnal.StateIsIdentical(mobjDetailHymnal) Then
|
||||
Return False
|
||||
Else
|
||||
Return True
|
||||
End If
|
||||
End Function
|
||||
|
||||
Protected Overrides Function DetailControlsHaveSignificantData() As Boolean
|
||||
If txtHymnalName.Text.Trim.Length > 0 Then
|
||||
Return True
|
||||
End If
|
||||
If txtHymnalAbbreviation.Text.Trim.Length > 0 Then
|
||||
Return True
|
||||
End If
|
||||
|
||||
Return False
|
||||
End Function
|
||||
|
||||
Protected Overrides Sub EmptyOutDetailControls()
|
||||
txtHymnalName.Text = ""
|
||||
txtHymnalAbbreviation.Text = ""
|
||||
mobjDetailHymnal = New clsHymnal
|
||||
End Sub
|
||||
|
||||
Protected Overrides Function LoadExistingDataToDetailControls(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjHymnal As clsHymnal
|
||||
Dim lblnReturnValue As Boolean = False
|
||||
lobjHymnal = CType(lstvwExistingItem.Tag, clsHymnal)
|
||||
txtHymnalName.Text = lobjHymnal.HymnalName
|
||||
|
||||
mobjDetailHymnal = CType(lobjHymnal.Clone(), clsHymnal)
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Function ConfirmOKToDeleteExistingItem(ByVal lstvwItemToDelete As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjHymnal As clsHymnal
|
||||
Dim lstrReferencedBy As String = ""
|
||||
|
||||
lobjHymnal = CType(lstvwItemToDelete.Tag, clsHymnal)
|
||||
|
||||
If Not lobjHymnal.OKToDelete(lstrReferencedBy) Then
|
||||
MessageBox.Show("Can't delete hymnal: " + lobjHymnal.HymnalName + ". Currently used by " + lstrReferencedBy + ".", "Unable to delete", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
|
||||
Return False
|
||||
End If
|
||||
|
||||
|
||||
Dim ldrDialogResult As DialogResult = MessageBox.Show("Are you sure you want to delete hymnal: " + lobjHymnal.HymnalName + "?", "Delete confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
|
||||
If ldrDialogResult = Windows.Forms.DialogResult.No Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Function DeleteExistingItem(ByVal lstvwItemToDelete As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjHymnal As clsHymnal
|
||||
lobjHymnal = CType(lstvwItemToDelete.Tag, clsHymnal)
|
||||
|
||||
Return lobjHymnal.Delete()
|
||||
End Function
|
||||
|
||||
Protected Overrides Function SaveNewItem() As Boolean
|
||||
Dim lstrErrorString As String = ""
|
||||
|
||||
mobjDetailHymnal.HymnalName = txtHymnalName.Text
|
||||
mobjDetailHymnal.HymnalAbbreviation = txtHymnalAbbreviation.Text
|
||||
|
||||
If Not mobjDetailHymnal.Validate(lstrErrorString) Then
|
||||
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Not mobjDetailHymnal.Save() Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Me.ExistingObjectsListItems.Add(ConvertHymnalToListViewItem(mobjDetailHymnal))
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Sub UserRequestedToExit()
|
||||
Me.Close()
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub EditOrAddStarting()
|
||||
CType(Me.ParentForm, frmMain).DisableMenus()
|
||||
End Sub
|
||||
Protected Overrides Sub EditOrAddCompleted()
|
||||
CType(Me.ParentForm, frmMain).EnableMenus()
|
||||
End Sub
|
||||
|
||||
Private Function ConvertHymnalToListViewItem(ByVal lobjHymnal As clsHymnal) As ListViewItem
|
||||
Dim lobjItem As ListViewItem
|
||||
lobjItem = New ListViewItem(lobjHymnal.HymnalName)
|
||||
lobjItem.SubItems.Add(lobjHymnal.HymnalAbbreviation)
|
||||
'lobjItem.SubItems.Add("Item1Col3")
|
||||
lobjItem.Tag = lobjHymnal
|
||||
|
||||
Return lobjItem
|
||||
|
||||
End Function
|
||||
|
||||
Protected Overrides Function SaveNewDataForExistingItem(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lstrErrorString As String = ""
|
||||
|
||||
mobjDetailHymnal.HymnalName = txtHymnalName.Text
|
||||
mobjDetailHymnal.HymnalAbbreviation = txtHymnalAbbreviation.Text
|
||||
|
||||
If Not mobjDetailHymnal.Validate(lstrErrorString) Then
|
||||
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Not mobjDetailHymnal.Save() Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Me.ExistingObjectsListItems.Remove(lstvwExistingItem)
|
||||
Me.ExistingObjectsListItems.Add(ConvertHymnalToListViewItem(mobjDetailHymnal))
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Private Sub txtHymnalName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtHymnalName.TextChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
Private Sub txtHymnalAbbreviation_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtHymnalAbbreviation.TextChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
End Class
|
||||
120
frmEditInstrumentation.resx
Normal file
120
frmEditInstrumentation.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
251
frmEditInstrumentation.vb
Normal file
251
frmEditInstrumentation.vb
Normal file
@@ -0,0 +1,251 @@
|
||||
Imports System.Windows.Forms
|
||||
|
||||
Public Class frmEditInstrumentation
|
||||
Inherits BaseEditForm
|
||||
|
||||
Private mobjDetailInstrumentation As New clsInstrumentation
|
||||
|
||||
#Region " Windows Form Designer generated code "
|
||||
|
||||
Public Sub New()
|
||||
MyBase.New()
|
||||
|
||||
'This call is required by the Windows Form Designer.
|
||||
InitializeComponent()
|
||||
|
||||
'Add any initialization after the InitializeComponent() call
|
||||
End Sub
|
||||
|
||||
'Form overrides dispose to clean up the component list.
|
||||
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
If disposing Then
|
||||
If Not (components Is Nothing) Then
|
||||
components.Dispose()
|
||||
End If
|
||||
End If
|
||||
MyBase.Dispose(disposing)
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
Friend WithEvents lblInstrumentationName As Windows.Forms.Label
|
||||
Friend WithEvents txtInstrumentationName As Windows.Forms.TextBox
|
||||
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
|
||||
Me.lblInstrumentationName = New Windows.Forms.Label
|
||||
Me.txtInstrumentationName = New Windows.Forms.TextBox
|
||||
Me.fraAddEdit.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'fraAddEdit
|
||||
'
|
||||
Me.fraAddEdit.Controls.Add(Me.txtInstrumentationName)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblInstrumentationName)
|
||||
Me.fraAddEdit.Location = New System.Drawing.Point(8, 417)
|
||||
Me.fraAddEdit.Size = New System.Drawing.Size(1072, 111)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblInstrumentationName, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.txtInstrumentationName, 0)
|
||||
'
|
||||
'lblInstrumentationName
|
||||
'
|
||||
Me.lblInstrumentationName.Location = New System.Drawing.Point(16, 24)
|
||||
Me.lblInstrumentationName.Name = "lblInstrumentationName"
|
||||
Me.lblInstrumentationName.Size = New System.Drawing.Size(96, 16)
|
||||
Me.lblInstrumentationName.TabIndex = 3
|
||||
Me.lblInstrumentationName.Text = "Instrumentation"
|
||||
'
|
||||
'txtInstrumentationName
|
||||
'
|
||||
Me.txtInstrumentationName.Location = New System.Drawing.Point(112, 24)
|
||||
Me.txtInstrumentationName.Name = "txtInstrumentationName"
|
||||
Me.txtInstrumentationName.Size = New System.Drawing.Size(448, 20)
|
||||
Me.txtInstrumentationName.TabIndex = 4
|
||||
'
|
||||
'frmEditInstrumentation
|
||||
'
|
||||
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
|
||||
Me.ClientSize = New System.Drawing.Size(1088, 534)
|
||||
Me.Name = "frmEditInstrumentation"
|
||||
Me.StartPosition = Windows.Forms.FormStartPosition.Manual
|
||||
Me.Text = "Edit Instrumentation"
|
||||
Me.fraAddEdit.ResumeLayout(False)
|
||||
Me.fraAddEdit.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
|
||||
#End Region
|
||||
|
||||
Protected Overrides Sub LoadExistingItemsList()
|
||||
Dim lobjInstrumentation As clsInstrumentation
|
||||
Dim lobjInstrumentations As System.Collections.Generic.List(Of clsInstrumentation)
|
||||
|
||||
SetUpExistingItemsHeaders()
|
||||
|
||||
lobjInstrumentations = clsInstrumentation.GetAllInstrumentations
|
||||
|
||||
Me.ExistingItemsListSuspendLayout()
|
||||
|
||||
For Each lobjInstrumentation In lobjInstrumentations
|
||||
Me.ExistingObjectsListItems.Add(ConvertInstrumentationToListViewItem(lobjInstrumentation))
|
||||
Next
|
||||
|
||||
Me.ExistingItemsListResumeLayout()
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub SetUpExistingItemsHeaders()
|
||||
Me.ExistingObjectsListColumns.Add("Instrumentation Name", 800, HorizontalAlignment.Left)
|
||||
'Me.ExistingObjectsListColumns.Add("Column2", 0, HorizontalAlignment.Left)
|
||||
'Me.ExistingObjectsListColumns.Add("Column3", 200, HorizontalAlignment.Left)
|
||||
|
||||
'Set up sorting rules
|
||||
Dim lobjBaseEditFormColumnSortRules(0) As clsGridColumnSortRule
|
||||
lobjBaseEditFormColumnSortRules(0) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
||||
MyBaseEditFormColumnSortRules = lobjBaseEditFormColumnSortRules
|
||||
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub InitializeDetailControls()
|
||||
'Load data to detail controls here at form load time
|
||||
txtInstrumentationName.MaxLength = MyGlobals.INSTRUMENTATION_NAME_SIZE
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub SetFocusToFirstDetailControlForEdit()
|
||||
txtInstrumentationName.Focus()
|
||||
End Sub
|
||||
|
||||
Protected Overrides Function DetailControlsHaveDifferentDataThanExistingData(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjSavedInstrumentation As clsInstrumentation
|
||||
Dim lblnReturnValue As Boolean = False
|
||||
|
||||
lobjSavedInstrumentation = CType(lstvwExistingItem.Tag, clsInstrumentation)
|
||||
|
||||
mobjDetailInstrumentation.InstrumentationName = txtInstrumentationName.Text
|
||||
|
||||
If lobjSavedInstrumentation.StateIsIdentical(mobjDetailInstrumentation) Then
|
||||
Return False
|
||||
Else
|
||||
Return True
|
||||
End If
|
||||
End Function
|
||||
|
||||
Protected Overrides Function DetailControlsHaveSignificantData() As Boolean
|
||||
If txtInstrumentationName.Text.Trim.Length > 0 Then
|
||||
Return True
|
||||
End If
|
||||
|
||||
Return False
|
||||
End Function
|
||||
|
||||
Protected Overrides Sub EmptyOutDetailControls()
|
||||
txtInstrumentationName.Text = ""
|
||||
mobjDetailInstrumentation = New clsInstrumentation
|
||||
End Sub
|
||||
|
||||
Protected Overrides Function LoadExistingDataToDetailControls(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjInstrumentation As clsInstrumentation
|
||||
Dim lblnReturnValue As Boolean = False
|
||||
lobjInstrumentation = CType(lstvwExistingItem.Tag, clsInstrumentation)
|
||||
txtInstrumentationName.Text = lobjInstrumentation.InstrumentationName
|
||||
|
||||
mobjDetailInstrumentation = CType(lobjInstrumentation.Clone(), clsInstrumentation)
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Function ConfirmOKToDeleteExistingItem(ByVal lstvwItemToDelete As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjInstrumentation As clsInstrumentation
|
||||
Dim lstrReferencedBy As String = ""
|
||||
|
||||
lobjInstrumentation = CType(lstvwItemToDelete.Tag, clsInstrumentation)
|
||||
|
||||
If Not lobjInstrumentation.OKToDelete(lstrReferencedBy) Then
|
||||
MessageBox.Show("Can't delete Instrumentation: " + lobjInstrumentation.InstrumentationName + ". Currently used by " + lstrReferencedBy + ".", "Unable to delete", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
|
||||
Return False
|
||||
End If
|
||||
|
||||
|
||||
Dim ldrDialogResult As DialogResult = MessageBox.Show("Are you sure you want to delete Instrumentation: " + lobjInstrumentation.InstrumentationName + "?", "Delete confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
|
||||
If ldrDialogResult = Windows.Forms.DialogResult.No Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Function DeleteExistingItem(ByVal lstvwItemToDelete As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjInstrumentation As clsInstrumentation
|
||||
lobjInstrumentation = CType(lstvwItemToDelete.Tag, clsInstrumentation)
|
||||
|
||||
Return lobjInstrumentation.Delete()
|
||||
End Function
|
||||
|
||||
Protected Overrides Function SaveNewItem() As Boolean
|
||||
Dim lstrErrorString As String = ""
|
||||
|
||||
mobjDetailInstrumentation.InstrumentationName = txtInstrumentationName.Text
|
||||
|
||||
If Not mobjDetailInstrumentation.Validate(lstrErrorString) Then
|
||||
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Not mobjDetailInstrumentation.Save() Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Me.ExistingObjectsListItems.Add(ConvertInstrumentationToListViewItem(mobjDetailInstrumentation))
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Sub UserRequestedToExit()
|
||||
Me.Close()
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub EditOrAddStarting()
|
||||
CType(Me.ParentForm, frmMain).DisableMenus()
|
||||
End Sub
|
||||
Protected Overrides Sub EditOrAddCompleted()
|
||||
CType(Me.ParentForm, frmMain).EnableMenus()
|
||||
End Sub
|
||||
|
||||
Private Function ConvertInstrumentationToListViewItem(ByVal lobjInstrumentation As clsInstrumentation) As ListViewItem
|
||||
Dim lobjItem As ListViewItem
|
||||
lobjItem = New ListViewItem(lobjInstrumentation.InstrumentationName)
|
||||
'lobjItem.SubItems.Add("Item1Col2")
|
||||
'lobjItem.SubItems.Add("Item1Col3")
|
||||
lobjItem.Tag = lobjInstrumentation
|
||||
|
||||
Return lobjItem
|
||||
|
||||
End Function
|
||||
|
||||
Protected Overrides Function SaveNewDataForExistingItem(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lstrErrorString As String = ""
|
||||
|
||||
mobjDetailInstrumentation.InstrumentationName = txtInstrumentationName.Text
|
||||
|
||||
If Not mobjDetailInstrumentation.Validate(lstrErrorString) Then
|
||||
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Not mobjDetailInstrumentation.Save() Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Me.ExistingObjectsListItems.Remove(lstvwExistingItem)
|
||||
Me.ExistingObjectsListItems.Add(ConvertInstrumentationToListViewItem(mobjDetailInstrumentation))
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Private Sub txtInstrumentationName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtInstrumentationName.TextChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
60
frmEditPublisher.resx
Normal file
60
frmEditPublisher.resx
Normal file
@@ -0,0 +1,60 @@
|
||||
<root>
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
302
frmEditPublisher.vb
Normal file
302
frmEditPublisher.vb
Normal file
@@ -0,0 +1,302 @@
|
||||
Imports System.Windows.Forms
|
||||
|
||||
Public Class frmEditPublisher
|
||||
Inherits BaseEditForm
|
||||
|
||||
Private mobjDetailPublisher As New clsPublisher
|
||||
|
||||
#Region " Windows Form Designer generated code "
|
||||
|
||||
Public Sub New()
|
||||
MyBase.New()
|
||||
|
||||
'This call is required by the Windows Form Designer.
|
||||
InitializeComponent()
|
||||
|
||||
'Add any initialization after the InitializeComponent() call
|
||||
End Sub
|
||||
|
||||
'Form overrides dispose to clean up the component list.
|
||||
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
If disposing Then
|
||||
If Not (components Is Nothing) Then
|
||||
components.Dispose()
|
||||
End If
|
||||
End If
|
||||
MyBase.Dispose(disposing)
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
Friend WithEvents lblPublisherName As Windows.Forms.Label
|
||||
Friend WithEvents cboStreamingAllowed As ComboBox
|
||||
Friend WithEvents lblPublisherStreamingAllowed As Label
|
||||
Friend WithEvents txtPublisherName As Windows.Forms.TextBox
|
||||
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
|
||||
Me.lblPublisherName = New System.Windows.Forms.Label()
|
||||
Me.txtPublisherName = New System.Windows.Forms.TextBox()
|
||||
Me.lblPublisherStreamingAllowed = New System.Windows.Forms.Label()
|
||||
Me.cboStreamingAllowed = New System.Windows.Forms.ComboBox()
|
||||
Me.fraAddEdit.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'fraAddEdit
|
||||
'
|
||||
Me.fraAddEdit.Controls.Add(Me.cboStreamingAllowed)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblPublisherStreamingAllowed)
|
||||
Me.fraAddEdit.Controls.Add(Me.txtPublisherName)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblPublisherName)
|
||||
|
||||
Me.fraAddEdit.Location = New System.Drawing.Point(8, 412)
|
||||
Me.fraAddEdit.Size = New System.Drawing.Size(1072, 116)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblPublisherName, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.txtPublisherName, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblPublisherStreamingAllowed, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.cboStreamingAllowed, 0)
|
||||
'
|
||||
'lblPublisherName
|
||||
'
|
||||
Me.lblPublisherName.Location = New System.Drawing.Point(16, 24)
|
||||
Me.lblPublisherName.Name = "lblPublisherName"
|
||||
Me.lblPublisherName.Size = New System.Drawing.Size(96, 16)
|
||||
Me.lblPublisherName.TabIndex = 3
|
||||
Me.lblPublisherName.Text = "Publisher Name"
|
||||
'
|
||||
'txtPublisherName
|
||||
'
|
||||
Me.txtPublisherName.Location = New System.Drawing.Point(135, 24)
|
||||
Me.txtPublisherName.Name = "txtPublisherName"
|
||||
Me.txtPublisherName.Size = New System.Drawing.Size(448, 20)
|
||||
Me.txtPublisherName.TabIndex = 4
|
||||
'
|
||||
'lblPublisherStreamingAllowed
|
||||
'
|
||||
Me.lblPublisherStreamingAllowed.Location = New System.Drawing.Point(16, 46)
|
||||
Me.lblPublisherStreamingAllowed.Name = "lblPublisherStreamingAllowed"
|
||||
Me.lblPublisherStreamingAllowed.Size = New System.Drawing.Size(130, 16)
|
||||
Me.lblPublisherStreamingAllowed.TabIndex = 5
|
||||
Me.lblPublisherStreamingAllowed.Text = "Publisher Streaming Allowed"
|
||||
'
|
||||
'cboPublisherStreamingAllowed
|
||||
'
|
||||
Me.cboStreamingAllowed.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
|
||||
Me.cboStreamingAllowed.FormattingEnabled = True
|
||||
Me.cboStreamingAllowed.Location = New System.Drawing.Point(135, 46)
|
||||
Me.cboStreamingAllowed.Name = "cboStreamingAllowed"
|
||||
Me.cboStreamingAllowed.Size = New System.Drawing.Size(120, 16)
|
||||
Me.cboStreamingAllowed.TabIndex = 6
|
||||
'
|
||||
'frmEditComposer
|
||||
'
|
||||
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
|
||||
Me.ClientSize = New System.Drawing.Size(1088, 534)
|
||||
Me.Name = "frmEditComposer"
|
||||
Me.StartPosition = Windows.Forms.FormStartPosition.Manual
|
||||
Me.Text = "Edit Composer"
|
||||
Me.fraAddEdit.ResumeLayout(False)
|
||||
Me.fraAddEdit.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
|
||||
#End Region
|
||||
|
||||
Protected Overrides Sub LoadExistingItemsList()
|
||||
Dim lobjPublisher As clsPublisher
|
||||
Dim lobjPublishers As System.Collections.Generic.List(Of clsPublisher)
|
||||
|
||||
SetUpExistingItemsHeaders()
|
||||
|
||||
lobjPublishers = clsPublisher.GetAllPublishers
|
||||
|
||||
Me.ExistingItemsListSuspendLayout()
|
||||
|
||||
For Each lobjPublisher In lobjPublishers
|
||||
Me.ExistingObjectsListItems.Add(ConvertPublisherToListViewItem(lobjPublisher))
|
||||
Next
|
||||
|
||||
Me.ExistingItemsListResumeLayout()
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub SetUpExistingItemsHeaders()
|
||||
Me.ExistingObjectsListColumns.Add("Publisher Name", 800, HorizontalAlignment.Left)
|
||||
'Me.ExistingObjectsListColumns.Add("Column2", 0, HorizontalAlignment.Left)
|
||||
'Me.ExistingObjectsListColumns.Add("Column3", 200, HorizontalAlignment.Left)
|
||||
|
||||
'Set up sorting rules
|
||||
Dim lobjBaseEditFormColumnSortRules(0) As clsGridColumnSortRule
|
||||
lobjBaseEditFormColumnSortRules(0) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
||||
MyBaseEditFormColumnSortRules = lobjBaseEditFormColumnSortRules
|
||||
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub InitializeDetailControls()
|
||||
'Load data to detail controls here at form load time
|
||||
txtPublisherName.MaxLength = MyGlobals.PUBLISHER_NAME_SIZE
|
||||
|
||||
cboStreamingAllowed.Items.Clear()
|
||||
cboStreamingAllowed.Items.Add(MyGlobals.PUBLISHER_STREAMING_ALLOWED_UNKNOWN)
|
||||
cboStreamingAllowed.Items.Add("No")
|
||||
cboStreamingAllowed.Items.Add("Yes")
|
||||
cboStreamingAllowed.SelectedIndex = 0
|
||||
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub SetFocusToFirstDetailControlForEdit()
|
||||
txtPublisherName.Focus()
|
||||
End Sub
|
||||
|
||||
Protected Overrides Function DetailControlsHaveDifferentDataThanExistingData(ByVal lstvwExistingItem As System.Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjSavedPublisher As clsPublisher
|
||||
Dim lblnReturnValue As Boolean = False
|
||||
|
||||
lobjSavedPublisher = CType(lstvwExistingItem.Tag, clsPublisher)
|
||||
|
||||
mobjDetailPublisher.PublisherName = txtPublisherName.Text
|
||||
mobjDetailPublisher.PublisherStreamingAllowed = cboStreamingAllowed.SelectedItem.ToString()
|
||||
|
||||
If lobjSavedPublisher.StateIsIdentical(mobjDetailPublisher) Then
|
||||
Return False
|
||||
Else
|
||||
Return True
|
||||
End If
|
||||
End Function
|
||||
|
||||
Protected Overrides Function DetailControlsHaveSignificantData() As Boolean
|
||||
If txtPublisherName.Text.Trim.Length > 0 Then
|
||||
Return True
|
||||
End If
|
||||
|
||||
Return False
|
||||
End Function
|
||||
|
||||
Protected Overrides Sub EmptyOutDetailControls()
|
||||
txtPublisherName.Text = String.Empty
|
||||
cboStreamingAllowed.SelectedIndex = 0
|
||||
mobjDetailPublisher = New clsPublisher
|
||||
End Sub
|
||||
|
||||
Protected Overrides Function LoadExistingDataToDetailControls(ByVal lstvwExistingItem As System.Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjPublisher As clsPublisher
|
||||
Dim lblnReturnValue As Boolean = False
|
||||
lobjPublisher = CType(lstvwExistingItem.Tag, clsPublisher)
|
||||
txtPublisherName.Text = lobjPublisher.PublisherName
|
||||
|
||||
Dim intSelectedIndex As Int32 = 0
|
||||
Dim intIndex As Int32
|
||||
For intIndex = 0 To cboStreamingAllowed.Items.Count
|
||||
If String.Compare(cboStreamingAllowed.Items(intIndex).ToString, lobjPublisher.PublisherStreamingAllowed, True) = 0 Then
|
||||
intSelectedIndex = intIndex
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
|
||||
cboStreamingAllowed.SelectedIndex = intSelectedIndex
|
||||
|
||||
mobjDetailPublisher = CType(lobjPublisher.Clone(), clsPublisher)
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Function ConfirmOKToDeleteExistingItem(ByVal lstvwItemToDelete As System.Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjPublisher As clsPublisher
|
||||
Dim lstrReferencedBy As String = ""
|
||||
|
||||
lobjPublisher = CType(lstvwItemToDelete.Tag, clsPublisher)
|
||||
|
||||
If Not lobjPublisher.OKToDelete(lstrReferencedBy) Then
|
||||
MessageBox.Show("Can't delete publisher: " + lobjPublisher.PublisherName + ". Currently used by " + lstrReferencedBy + ".", "Unable to delete", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
|
||||
Return False
|
||||
End If
|
||||
|
||||
Dim ldrDialogResult As DialogResult = MessageBox.Show("Are you sure you want to delete publisher: " + lobjPublisher.PublisherName + "?", "Delete confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
|
||||
If ldrDialogResult = Windows.Forms.DialogResult.No Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Function DeleteExistingItem(ByVal lstvwItemToDelete As System.Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjPublisher As clsPublisher
|
||||
lobjPublisher = CType(lstvwItemToDelete.Tag, clsPublisher)
|
||||
|
||||
Return lobjPublisher.Delete()
|
||||
End Function
|
||||
|
||||
Protected Overrides Function SaveNewItem() As Boolean
|
||||
Dim lstrErrorString As String = ""
|
||||
|
||||
mobjDetailPublisher.PublisherName = txtPublisherName.Text
|
||||
mobjDetailPublisher.PublisherStreamingAllowed = cboStreamingAllowed.SelectedItem.ToString
|
||||
|
||||
If Not mobjDetailPublisher.Validate(lstrErrorString) Then
|
||||
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Not mobjDetailPublisher.Save() Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Me.ExistingObjectsListItems.Add(ConvertPublisherToListViewItem(mobjDetailPublisher))
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Sub UserRequestedToExit()
|
||||
Me.Close()
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub EditOrAddStarting()
|
||||
CType(Me.ParentForm, frmMain).DisableMenus()
|
||||
End Sub
|
||||
Protected Overrides Sub EditOrAddCompleted()
|
||||
CType(Me.ParentForm, frmMain).EnableMenus()
|
||||
End Sub
|
||||
|
||||
Private Function ConvertPublisherToListViewItem(ByVal lobjPublisher As clsPublisher) As ListViewItem
|
||||
Dim lobjItem As ListViewItem
|
||||
lobjItem = New ListViewItem(lobjPublisher.PublisherName)
|
||||
'lobjItem.SubItems.Add("Item1Col2")
|
||||
'lobjItem.SubItems.Add("Item1Col3")
|
||||
lobjItem.Tag = lobjPublisher
|
||||
|
||||
Return lobjItem
|
||||
|
||||
End Function
|
||||
|
||||
Protected Overrides Function SaveNewDataForExistingItem(ByVal lstvwExistingItem As System.Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lstrErrorString As String = ""
|
||||
|
||||
mobjDetailPublisher.PublisherName = txtPublisherName.Text
|
||||
mobjDetailPublisher.PublisherStreamingAllowed = cboStreamingAllowed.SelectedItem.ToString
|
||||
|
||||
If Not mobjDetailPublisher.Validate(lstrErrorString) Then
|
||||
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Not mobjDetailPublisher.Save() Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Me.ExistingObjectsListItems.Remove(lstvwExistingItem)
|
||||
Me.ExistingObjectsListItems.Add(ConvertPublisherToListViewItem(mobjDetailPublisher))
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Private Sub txtPublisherName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtPublisherName.TextChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
Private Sub cboStreamingAllowed_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboStreamingAllowed.SelectedIndexChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
120
frmEditWork.resx
Normal file
120
frmEditWork.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
779
frmEditWork.vb
Normal file
779
frmEditWork.vb
Normal file
@@ -0,0 +1,779 @@
|
||||
Imports System.Windows.Forms
|
||||
|
||||
Public Class frmEditWork
|
||||
Inherits OrganLit.BaseEditForm
|
||||
|
||||
Private mobjDetailWork As New clsWork
|
||||
Private m_objHymnTuneNamesHash As Hashtable
|
||||
Private m_objComposersHash As Hashtable
|
||||
Private m_objInstrumentationsHash As Hashtable
|
||||
|
||||
#Region " Windows Form Designer generated code "
|
||||
|
||||
Public Sub New()
|
||||
MyBase.New()
|
||||
|
||||
'This call is required by the Windows Form Designer.
|
||||
InitializeComponent()
|
||||
|
||||
'Add any initialization after the InitializeComponent() call
|
||||
|
||||
End Sub
|
||||
|
||||
'Form overrides dispose to clean up the component list.
|
||||
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
If disposing Then
|
||||
If Not (components Is Nothing) Then
|
||||
components.Dispose()
|
||||
End If
|
||||
End If
|
||||
MyBase.Dispose(disposing)
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
Friend WithEvents lblHymnTuneName As Windows.Forms.Label
|
||||
Friend WithEvents cboHymnTuneName As ComboTypeAhead.ComboTypeAhead
|
||||
Friend WithEvents lblWorkName As Windows.Forms.Label
|
||||
Friend WithEvents txtWorkName As Windows.Forms.TextBox
|
||||
Friend WithEvents lblBook As Windows.Forms.Label
|
||||
Friend WithEvents lblPageNumber As Windows.Forms.Label
|
||||
Friend WithEvents txtPageNumber As Windows.Forms.TextBox
|
||||
Friend WithEvents cboBook As Windows.Forms.ComboBox
|
||||
Friend WithEvents cboComposerName As ComboTypeAhead.ComboTypeAhead
|
||||
Friend WithEvents lblComposerName As Windows.Forms.Label
|
||||
Friend WithEvents cboInstrumentationName As ComboTypeAhead.ComboTypeAhead
|
||||
Friend WithEvents lblInstrumentation As Windows.Forms.Label
|
||||
Friend WithEvents txtOpusInfo As Windows.Forms.TextBox
|
||||
Friend WithEvents lblOpusInfo As Windows.Forms.Label
|
||||
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
|
||||
Me.lblWorkName = New Windows.Forms.Label()
|
||||
Me.txtWorkName = New Windows.Forms.TextBox()
|
||||
Me.lblBook = New Windows.Forms.Label()
|
||||
Me.lblHymnTuneName = New Windows.Forms.Label()
|
||||
Me.cboHymnTuneName = New ComboTypeAhead.ComboTypeAhead()
|
||||
Me.lblPageNumber = New Windows.Forms.Label()
|
||||
Me.txtPageNumber = New Windows.Forms.TextBox()
|
||||
Me.cboBook = New Windows.Forms.ComboBox()
|
||||
Me.cboComposerName = New ComboTypeAhead.ComboTypeAhead()
|
||||
Me.lblComposerName = New Windows.Forms.Label()
|
||||
Me.txtOpusInfo = New Windows.Forms.TextBox()
|
||||
Me.lblOpusInfo = New Windows.Forms.Label()
|
||||
Me.cboInstrumentationName = New ComboTypeAhead.ComboTypeAhead()
|
||||
Me.lblInstrumentation = New Windows.Forms.Label()
|
||||
Me.fraAddEdit.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'fraAddEdit
|
||||
'
|
||||
Me.fraAddEdit.Controls.Add(Me.cboInstrumentationName)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblInstrumentation)
|
||||
Me.fraAddEdit.Controls.Add(Me.txtOpusInfo)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblOpusInfo)
|
||||
Me.fraAddEdit.Controls.Add(Me.cboComposerName)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblComposerName)
|
||||
Me.fraAddEdit.Controls.Add(Me.cboBook)
|
||||
Me.fraAddEdit.Controls.Add(Me.txtPageNumber)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblPageNumber)
|
||||
Me.fraAddEdit.Controls.Add(Me.cboHymnTuneName)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblHymnTuneName)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblBook)
|
||||
Me.fraAddEdit.Controls.Add(Me.txtWorkName)
|
||||
Me.fraAddEdit.Controls.Add(Me.lblWorkName)
|
||||
Me.fraAddEdit.Location = New System.Drawing.Point(12, 381)
|
||||
Me.fraAddEdit.Size = New System.Drawing.Size(1123, 220)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblWorkName, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.txtWorkName, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblBook, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblHymnTuneName, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.cboHymnTuneName, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblPageNumber, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.txtPageNumber, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.cboBook, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblComposerName, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.cboComposerName, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblOpusInfo, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.txtOpusInfo, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.lblInstrumentation, 0)
|
||||
Me.fraAddEdit.Controls.SetChildIndex(Me.cboInstrumentationName, 0)
|
||||
'
|
||||
'lblWorkName
|
||||
'
|
||||
Me.lblWorkName.Location = New System.Drawing.Point(19, 127)
|
||||
Me.lblWorkName.Name = "lblWorkName"
|
||||
Me.lblWorkName.Size = New System.Drawing.Size(115, 18)
|
||||
Me.lblWorkName.TabIndex = 8
|
||||
Me.lblWorkName.Text = "Work Name"
|
||||
'
|
||||
'txtWorkName
|
||||
'
|
||||
Me.txtWorkName.Location = New System.Drawing.Point(134, 127)
|
||||
Me.txtWorkName.Name = "txtWorkName"
|
||||
Me.txtWorkName.Size = New System.Drawing.Size(701, 22)
|
||||
Me.txtWorkName.TabIndex = 9
|
||||
'
|
||||
'lblBook
|
||||
'
|
||||
Me.lblBook.Location = New System.Drawing.Point(19, 18)
|
||||
Me.lblBook.Name = "lblBook"
|
||||
Me.lblBook.Size = New System.Drawing.Size(96, 19)
|
||||
Me.lblBook.TabIndex = 0
|
||||
Me.lblBook.Text = "Book"
|
||||
'
|
||||
'lblHymnTuneName
|
||||
'
|
||||
Me.lblHymnTuneName.Location = New System.Drawing.Point(19, 182)
|
||||
Me.lblHymnTuneName.Name = "lblHymnTuneName"
|
||||
Me.lblHymnTuneName.Size = New System.Drawing.Size(115, 19)
|
||||
Me.lblHymnTuneName.TabIndex = 12
|
||||
Me.lblHymnTuneName.Text = "Hymn Tune Name"
|
||||
'
|
||||
'cboHymnTuneName
|
||||
'
|
||||
Me.cboHymnTuneName.Location = New System.Drawing.Point(134, 182)
|
||||
Me.cboHymnTuneName.Name = "cboHymnTuneName"
|
||||
Me.cboHymnTuneName.Size = New System.Drawing.Size(346, 24)
|
||||
Me.cboHymnTuneName.Sorted = True
|
||||
Me.cboHymnTuneName.TabIndex = 13
|
||||
'
|
||||
'lblPageNumber
|
||||
'
|
||||
Me.lblPageNumber.Location = New System.Drawing.Point(19, 46)
|
||||
Me.lblPageNumber.Name = "lblPageNumber"
|
||||
Me.lblPageNumber.Size = New System.Drawing.Size(96, 19)
|
||||
Me.lblPageNumber.TabIndex = 2
|
||||
Me.lblPageNumber.Text = "Page Number"
|
||||
'
|
||||
'txtPageNumber
|
||||
'
|
||||
Me.txtPageNumber.Location = New System.Drawing.Point(134, 46)
|
||||
Me.txtPageNumber.Name = "txtPageNumber"
|
||||
Me.txtPageNumber.Size = New System.Drawing.Size(77, 22)
|
||||
Me.txtPageNumber.TabIndex = 3
|
||||
'
|
||||
'cboBook
|
||||
'
|
||||
Me.cboBook.DropDownStyle = Windows.Forms.ComboBoxStyle.DropDownList
|
||||
Me.cboBook.Location = New System.Drawing.Point(134, 18)
|
||||
Me.cboBook.Name = "cboBook"
|
||||
Me.cboBook.Size = New System.Drawing.Size(509, 24)
|
||||
Me.cboBook.Sorted = True
|
||||
Me.cboBook.TabIndex = 1
|
||||
'
|
||||
'cboComposerName
|
||||
'
|
||||
Me.cboComposerName.Location = New System.Drawing.Point(134, 99)
|
||||
Me.cboComposerName.Name = "cboComposerName"
|
||||
Me.cboComposerName.Size = New System.Drawing.Size(509, 24)
|
||||
Me.cboComposerName.Sorted = True
|
||||
Me.cboComposerName.TabIndex = 7
|
||||
'
|
||||
'lblComposerName
|
||||
'
|
||||
Me.lblComposerName.Location = New System.Drawing.Point(19, 99)
|
||||
Me.lblComposerName.Name = "lblComposerName"
|
||||
Me.lblComposerName.Size = New System.Drawing.Size(115, 19)
|
||||
Me.lblComposerName.TabIndex = 6
|
||||
Me.lblComposerName.Text = "Composer Name"
|
||||
'
|
||||
'txtOpusInfo
|
||||
'
|
||||
Me.txtOpusInfo.Location = New System.Drawing.Point(134, 155)
|
||||
Me.txtOpusInfo.Name = "txtOpusInfo"
|
||||
Me.txtOpusInfo.Size = New System.Drawing.Size(250, 22)
|
||||
Me.txtOpusInfo.TabIndex = 11
|
||||
'
|
||||
'lblOpusInfo
|
||||
'
|
||||
Me.lblOpusInfo.Location = New System.Drawing.Point(19, 155)
|
||||
Me.lblOpusInfo.Name = "lblOpusInfo"
|
||||
Me.lblOpusInfo.Size = New System.Drawing.Size(115, 18)
|
||||
Me.lblOpusInfo.TabIndex = 10
|
||||
Me.lblOpusInfo.Text = "Opus Info"
|
||||
'
|
||||
'cboInstrumentationName
|
||||
'
|
||||
Me.cboInstrumentationName.Location = New System.Drawing.Point(134, 73)
|
||||
Me.cboInstrumentationName.Name = "cboInstrumentationName"
|
||||
Me.cboInstrumentationName.Size = New System.Drawing.Size(509, 24)
|
||||
Me.cboInstrumentationName.Sorted = True
|
||||
Me.cboInstrumentationName.TabIndex = 5
|
||||
'
|
||||
'lblInstrumentation
|
||||
'
|
||||
Me.lblInstrumentation.Location = New System.Drawing.Point(19, 73)
|
||||
Me.lblInstrumentation.Name = "lblInstrumentation"
|
||||
Me.lblInstrumentation.Size = New System.Drawing.Size(115, 18)
|
||||
Me.lblInstrumentation.TabIndex = 4
|
||||
Me.lblInstrumentation.Text = "Instrumentation"
|
||||
'
|
||||
'frmEditWork
|
||||
'
|
||||
Me.AutoScaleBaseSize = New System.Drawing.Size(6, 15)
|
||||
Me.ClientSize = New System.Drawing.Size(1143, 608)
|
||||
Me.MinimumSize = New System.Drawing.Size(1018, 655)
|
||||
Me.Name = "frmEditWork"
|
||||
Me.StartPosition = Windows.Forms.FormStartPosition.Manual
|
||||
Me.Text = "Edit Work"
|
||||
Me.fraAddEdit.ResumeLayout(False)
|
||||
Me.fraAddEdit.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
|
||||
#End Region
|
||||
|
||||
Protected Overrides Sub LoadExistingItemsList()
|
||||
Dim lobjWork As clsWork
|
||||
Dim lobjWorks As System.Collections.Generic.List(Of clsWork)
|
||||
|
||||
SetUpExistingItemsHeaders()
|
||||
|
||||
lobjWorks = clsWork.GetAllWorks
|
||||
|
||||
Me.ExistingItemsListSuspendLayout()
|
||||
|
||||
For Each lobjWork In lobjWorks
|
||||
Me.ExistingObjectsListItems.Add(ConvertWorkToListViewItem(lobjWork))
|
||||
Next
|
||||
|
||||
Me.ExistingItemsListResumeLayout()
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub SetUpExistingItemsHeaders()
|
||||
Me.ExistingObjectsListColumns.Add("Composer", 200, HorizontalAlignment.Left)
|
||||
Me.ExistingObjectsListColumns.Add("Work Name", 300, HorizontalAlignment.Left)
|
||||
Me.ExistingObjectsListColumns.Add("Book", 300, HorizontalAlignment.Left)
|
||||
Me.ExistingObjectsListColumns.Add("Page", 100, HorizontalAlignment.Right)
|
||||
Me.ExistingObjectsListColumns.Add("Hymn Tune Name", 200, HorizontalAlignment.Left)
|
||||
Me.ExistingObjectsListColumns.Add("Instrumentation", 200, HorizontalAlignment.Left)
|
||||
|
||||
'Set up sorting rules
|
||||
Dim lobjBaseEditFormColumnSortRules(5) As clsGridColumnSortRule
|
||||
|
||||
'First column, sort by Composer, then Work Name
|
||||
lobjBaseEditFormColumnSortRules(0) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
||||
lobjBaseEditFormColumnSortRules(0).SubColumnSort = New clsGridSubColumnSortRule(1, clsGridSubColumnSortRule.enumSortType.SortAsNumber, Nothing)
|
||||
'Second column, sort by Work Name, then Composer
|
||||
lobjBaseEditFormColumnSortRules(1) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
||||
lobjBaseEditFormColumnSortRules(1).SubColumnSort = New clsGridSubColumnSortRule(0, clsGridSubColumnSortRule.enumSortType.SortAsString, Nothing)
|
||||
'Third column, sort by Book, then Page
|
||||
lobjBaseEditFormColumnSortRules(2) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
||||
lobjBaseEditFormColumnSortRules(2).SubColumnSort = New clsGridSubColumnSortRule(3, clsGridSubColumnSortRule.enumSortType.SortAsNumber, Nothing)
|
||||
'Fourth column, sort by Book, then Page
|
||||
lobjBaseEditFormColumnSortRules(3) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortNone)
|
||||
lobjBaseEditFormColumnSortRules(3).SubColumnSort = New clsGridSubColumnSortRule(2, clsGridSubColumnSortRule.enumSortType.SortAsString, New clsGridSubColumnSortRule(3, clsGridSubColumnSortRule.enumSortType.SortAsNumber, Nothing))
|
||||
'Fifth column, sort by Hymn Tune Name, then Composer
|
||||
lobjBaseEditFormColumnSortRules(4) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
||||
lobjBaseEditFormColumnSortRules(4).SubColumnSort = New clsGridSubColumnSortRule(0, clsGridSubColumnSortRule.enumSortType.SortAsString, Nothing)
|
||||
'Sixth column, sort by Instrumentation, then Book, then Page
|
||||
lobjBaseEditFormColumnSortRules(5) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
||||
lobjBaseEditFormColumnSortRules(5).SubColumnSort = New clsGridSubColumnSortRule(2, clsGridSubColumnSortRule.enumSortType.SortAsString, New clsGridSubColumnSortRule(3, clsGridSubColumnSortRule.enumSortType.SortAsNumber, Nothing))
|
||||
|
||||
MyBaseEditFormColumnSortRules = lobjBaseEditFormColumnSortRules
|
||||
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub InitializeDetailControls()
|
||||
|
||||
'Load data to detail controls here at form load time
|
||||
txtWorkName.MaxLength = MyGlobals.WORK_NAME_SIZE
|
||||
txtOpusInfo.MaxLength = MyGlobals.OPUS_INFO_SIZE
|
||||
cboComposerName.MaxLength = MyGlobals.COMPOSER_NAME_SIZE
|
||||
cboInstrumentationName.MaxLength = MyGlobals.INSTRUMENTATION_NAME_SIZE
|
||||
cboHymnTuneName.MaxLength = MyGlobals.HYMN_TUNE_NAME_SIZE
|
||||
|
||||
txtPageNumber.Text = ""
|
||||
txtWorkName.Text = ""
|
||||
txtOpusInfo.Text = ""
|
||||
|
||||
'Only set up book if first time in
|
||||
If cboBook.Items.Count = 0 Then
|
||||
Dim objBook As clsBook
|
||||
Dim objBooks As System.Collections.Generic.List(Of clsBook)
|
||||
|
||||
Me.cboBook.Items.Clear()
|
||||
|
||||
objBooks = clsBook.GetAllBooks
|
||||
For Each objBook In objBooks
|
||||
Me.cboBook.Items.Add(objBook)
|
||||
Next
|
||||
|
||||
'Select first book if there is one
|
||||
If Me.cboBook.Items.Count > 0 Then
|
||||
Me.cboBook.SelectedIndex = 0
|
||||
End If
|
||||
End If
|
||||
|
||||
If m_objComposersHash Is Nothing Then
|
||||
m_objComposersHash = New Hashtable
|
||||
End If
|
||||
|
||||
If cboComposerName.Items.Count = 0 Then
|
||||
Dim objComposer As clsComposer
|
||||
Dim objComposers As System.Collections.Generic.List(Of clsComposer)
|
||||
|
||||
Me.cboComposerName.Items.Clear()
|
||||
m_objComposersHash = New Hashtable
|
||||
|
||||
objComposers = clsComposer.GetAllComposers
|
||||
For Each objComposer In objComposers
|
||||
AddComposerToForm(objComposer)
|
||||
Next
|
||||
End If
|
||||
|
||||
If m_objInstrumentationsHash Is Nothing Then
|
||||
m_objInstrumentationsHash = New Hashtable
|
||||
End If
|
||||
|
||||
If cboInstrumentationName.Items.Count = 0 Then
|
||||
Dim objInstrumentation As clsInstrumentation
|
||||
Dim objInstrumentations As System.Collections.Generic.List(Of clsInstrumentation)
|
||||
|
||||
Me.cboInstrumentationName.Items.Clear()
|
||||
m_objInstrumentationsHash = New Hashtable
|
||||
|
||||
objInstrumentations = clsInstrumentation.GetAllInstrumentations
|
||||
For Each objInstrumentation In objInstrumentations
|
||||
AddInstrumentationToForm(objInstrumentation)
|
||||
Next
|
||||
End If
|
||||
|
||||
If cboHymnTuneName.Items.Count = 0 Then
|
||||
Dim objHymnTuneName As clsHymnTuneName
|
||||
Dim objHymnTuneNames As System.Collections.Generic.List(Of clsHymnTuneName)
|
||||
|
||||
Me.cboHymnTuneName.Items.Clear()
|
||||
m_objHymnTuneNamesHash = New Hashtable
|
||||
|
||||
objHymnTuneNames = clsHymnTuneName.GetAllHymnTuneNames
|
||||
For Each objHymnTuneName In objHymnTuneNames
|
||||
AddHymnTuneNameToForm(objHymnTuneName)
|
||||
Next
|
||||
|
||||
Me.cboHymnTuneName.Items.Add(MyGlobals.NONE_STRING)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub SetFocusToFirstDetailControlForEdit()
|
||||
cboBook.Focus()
|
||||
End Sub
|
||||
|
||||
Protected Overrides Function DetailControlsHaveDifferentDataThanExistingData(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjSavedWork As clsWork
|
||||
Dim lblnReturnValue As Boolean = False
|
||||
|
||||
lobjSavedWork = CType(lstvwExistingItem.Tag, clsWork)
|
||||
|
||||
Dim objComposer As clsComposer
|
||||
Select Case cboComposerName.Text.ToUpper.Trim
|
||||
Case ""
|
||||
objComposer = Nothing
|
||||
Case Else
|
||||
objComposer = CType(MyGlobals.GetItemFromHashWithStringKey(cboComposerName.Text.ToUpper.Trim, m_objComposersHash), clsComposer)
|
||||
If objComposer Is Nothing Then
|
||||
objComposer = New clsComposer(cboComposerName.Text.Trim)
|
||||
End If
|
||||
End Select
|
||||
|
||||
Dim objInstrumentation As clsInstrumentation
|
||||
Select Case cboInstrumentationName.Text.ToUpper.Trim
|
||||
Case ""
|
||||
objInstrumentation = Nothing
|
||||
Case Else
|
||||
objInstrumentation = CType(MyGlobals.GetItemFromHashWithStringKey(cboInstrumentationName.Text.ToUpper.Trim, m_objInstrumentationsHash), clsInstrumentation)
|
||||
If objInstrumentation Is Nothing Then
|
||||
objInstrumentation = New clsInstrumentation(cboInstrumentationName.Text.Trim)
|
||||
End If
|
||||
End Select
|
||||
|
||||
Dim objHymnTuneName As clsHymnTuneName
|
||||
Select Case cboHymnTuneName.Text.ToUpper.Trim
|
||||
Case MyGlobals.NONE_STRING.ToUpper, ""
|
||||
objHymnTuneName = Nothing
|
||||
Case Else
|
||||
objHymnTuneName = CType(MyGlobals.GetItemFromHashWithStringKey(cboHymnTuneName.Text.ToUpper.Trim, m_objHymnTuneNamesHash), clsHymnTuneName)
|
||||
If objHymnTuneName Is Nothing Then
|
||||
objHymnTuneName = New clsHymnTuneName(cboHymnTuneName.Text.Trim)
|
||||
End If
|
||||
End Select
|
||||
|
||||
mobjDetailWork.Book = CType(cboBook.SelectedItem, clsBook)
|
||||
mobjDetailWork.PageNumberAsString = txtPageNumber.Text
|
||||
mobjDetailWork.WorkName = txtWorkName.Text
|
||||
mobjDetailWork.Composer = objComposer
|
||||
mobjDetailWork.Instrumentation = objInstrumentation
|
||||
mobjDetailWork.OpusInfo = txtOpusInfo.Text
|
||||
mobjDetailWork.HymnTuneName = objHymnTuneName
|
||||
|
||||
If lobjSavedWork.StateIsIdentical(mobjDetailWork) Then
|
||||
Return False
|
||||
Else
|
||||
Return True
|
||||
End If
|
||||
End Function
|
||||
|
||||
Protected Overrides Function DetailControlsHaveSignificantData() As Boolean
|
||||
If txtWorkName.Text.Trim.Length > 0 _
|
||||
OrElse txtPageNumber.Text.Trim.Length > 0 _
|
||||
OrElse txtOpusInfo.Text.Trim.Length > 0 Then
|
||||
'Pre-load composer from book, if composer hasn't already been set
|
||||
If cboComposerName.Text.Trim.Length = 0 Then
|
||||
Dim objBook As clsBook
|
||||
objBook = CType(cboBook.SelectedItem, clsBook)
|
||||
If objBook.Composer Is Nothing Then
|
||||
'Do nothing - this is collection
|
||||
Else
|
||||
cboComposerName.Text = objBook.Composer.ComposerName
|
||||
End If
|
||||
End If
|
||||
|
||||
'Pre-load instrumentation from book, if instrumentation hasn't already been set
|
||||
If cboInstrumentationName.Text.Trim.Length = 0 Then
|
||||
Dim objBook As clsBook
|
||||
objBook = CType(cboBook.SelectedItem, clsBook)
|
||||
If objBook.Instrumentation Is Nothing Then
|
||||
'Do nothing - this is collection
|
||||
Else
|
||||
cboInstrumentationName.Text = objBook.Instrumentation.InstrumentationName
|
||||
End If
|
||||
End If
|
||||
|
||||
Return True
|
||||
End If
|
||||
|
||||
Return False
|
||||
End Function
|
||||
|
||||
Protected Overrides Sub EmptyOutDetailControls()
|
||||
InitializeDetailControls()
|
||||
txtWorkName.Text = ""
|
||||
txtPageNumber.Text = ""
|
||||
cboComposerName.Text = ""
|
||||
cboInstrumentationName.Text = ""
|
||||
txtOpusInfo.Text = ""
|
||||
cboHymnTuneName.Text = ""
|
||||
|
||||
mobjDetailWork = New clsWork
|
||||
End Sub
|
||||
|
||||
Protected Overrides Function LoadExistingDataToDetailControls(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjWork As clsWork
|
||||
Dim lblnReturnValue As Boolean = False
|
||||
lobjWork = CType(lstvwExistingItem.Tag, clsWork)
|
||||
|
||||
'MessageBox.Show(lobjWork.Book.ToString)
|
||||
'cboBook.SelectedText = lobjWork.Book.ToString
|
||||
cboBook.Text = lobjWork.Book.ToString
|
||||
txtPageNumber.Text = lobjWork.PageNumberAsString
|
||||
txtWorkName.Text = lobjWork.WorkName
|
||||
|
||||
If lobjWork.Composer Is Nothing Then
|
||||
cboComposerName.Text = ""
|
||||
Else
|
||||
cboComposerName.Text = lobjWork.Composer.ComposerName
|
||||
End If
|
||||
|
||||
If lobjWork.Instrumentation Is Nothing Then
|
||||
cboInstrumentationName.Text = ""
|
||||
Else
|
||||
cboInstrumentationName.Text = lobjWork.Instrumentation.InstrumentationName
|
||||
End If
|
||||
|
||||
txtOpusInfo.Text = lobjWork.OpusInfo
|
||||
|
||||
If lobjWork.HymnTuneName Is Nothing Then
|
||||
cboHymnTuneName.Text = MyGlobals.NONE_STRING
|
||||
Else
|
||||
cboHymnTuneName.Text = lobjWork.HymnTuneName.HymnTuneName
|
||||
End If
|
||||
|
||||
mobjDetailWork = CType(lobjWork.Clone(), clsWork)
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Function ConfirmOKToDeleteExistingItem(ByVal lstvwItemToDelete As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjWork As clsWork
|
||||
Dim lstrReferencedBy As String = ""
|
||||
|
||||
lobjWork = CType(lstvwItemToDelete.Tag, clsWork)
|
||||
|
||||
If Not lobjWork.OKToDelete(lstrReferencedBy) Then
|
||||
MessageBox.Show("Can't delete work: " + lobjWork.ToString + ". Currently used by " + lstrReferencedBy + ".", "Unable to delete", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
|
||||
Return False
|
||||
End If
|
||||
|
||||
Dim ldrDialogResult As DialogResult = MessageBox.Show("Are you sure you want to delete work: " + lobjWork.ToString + "?", "Delete confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
|
||||
If ldrDialogResult = Windows.Forms.DialogResult.No Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Function DeleteExistingItem(ByVal lstvwItemToDelete As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lobjWork As clsWork
|
||||
lobjWork = CType(lstvwItemToDelete.Tag, clsWork)
|
||||
|
||||
Return lobjWork.Delete()
|
||||
End Function
|
||||
|
||||
Protected Overrides Function SaveNewItem() As Boolean
|
||||
Dim lstrErrorString As String = ""
|
||||
Dim lblnAddedNewComposer As Boolean
|
||||
Dim lblnAddedNewInstrumentation As Boolean
|
||||
Dim lblnAddedNewHymnTuneName As Boolean
|
||||
|
||||
lblnAddedNewComposer = False
|
||||
lblnAddedNewInstrumentation = False
|
||||
lblnAddedNewHymnTuneName = False
|
||||
|
||||
Dim objComposer As clsComposer
|
||||
Select Case cboComposerName.Text.ToUpper.Trim
|
||||
Case ""
|
||||
objComposer = Nothing
|
||||
Case Else
|
||||
objComposer = CType(MyGlobals.GetItemFromHashWithStringKey(cboComposerName.Text.ToUpper.Trim, m_objComposersHash), clsComposer)
|
||||
If objComposer Is Nothing Then
|
||||
objComposer = New clsComposer(cboComposerName.Text.Trim)
|
||||
lblnAddedNewComposer = True
|
||||
End If
|
||||
End Select
|
||||
|
||||
Dim objInstrumentation As clsInstrumentation
|
||||
Select Case cboInstrumentationName.Text.ToUpper.Trim
|
||||
Case ""
|
||||
objInstrumentation = Nothing
|
||||
Case Else
|
||||
objInstrumentation = CType(MyGlobals.GetItemFromHashWithStringKey(cboInstrumentationName.Text.ToUpper.Trim, m_objInstrumentationsHash), clsInstrumentation)
|
||||
If objInstrumentation Is Nothing Then
|
||||
objInstrumentation = New clsInstrumentation(cboInstrumentationName.Text.Trim)
|
||||
lblnAddedNewInstrumentation = True
|
||||
End If
|
||||
End Select
|
||||
|
||||
Dim objHymnTuneName As clsHymnTuneName
|
||||
Select Case cboHymnTuneName.Text.ToUpper.Trim
|
||||
Case MyGlobals.NONE_STRING.ToUpper, ""
|
||||
objHymnTuneName = Nothing
|
||||
Case Else
|
||||
objHymnTuneName = CType(MyGlobals.GetItemFromHashWithStringKey(cboHymnTuneName.Text.ToUpper.Trim, m_objHymnTuneNamesHash), clsHymnTuneName)
|
||||
If objHymnTuneName Is Nothing Then
|
||||
objHymnTuneName = New clsHymnTuneName(cboHymnTuneName.Text.Trim)
|
||||
lblnAddedNewHymnTuneName = True
|
||||
End If
|
||||
End Select
|
||||
|
||||
mobjDetailWork.Book = CType(cboBook.SelectedItem, clsBook)
|
||||
mobjDetailWork.PageNumberAsString = txtPageNumber.Text
|
||||
mobjDetailWork.WorkName = txtWorkName.Text
|
||||
mobjDetailWork.Composer = objComposer
|
||||
mobjDetailWork.Instrumentation = objInstrumentation
|
||||
mobjDetailWork.OpusInfo = txtOpusInfo.Text
|
||||
mobjDetailWork.HymnTuneName = objHymnTuneName
|
||||
|
||||
If Not mobjDetailWork.Validate(lstrErrorString) Then
|
||||
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Not mobjDetailWork.Save() Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
If lblnAddedNewComposer Then
|
||||
AddComposerToForm(objComposer)
|
||||
End If
|
||||
|
||||
If lblnAddedNewInstrumentation Then
|
||||
AddInstrumentationToForm(objInstrumentation)
|
||||
End If
|
||||
|
||||
If lblnAddedNewHymnTuneName Then
|
||||
AddHymnTuneNameToForm(objHymnTuneName)
|
||||
End If
|
||||
|
||||
Me.ExistingObjectsListItems.Add(ConvertWorkToListViewItem(mobjDetailWork))
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Protected Overrides Sub UserRequestedToExit()
|
||||
Me.Close()
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub EditOrAddStarting()
|
||||
CType(Me.ParentForm, frmMain).DisableMenus()
|
||||
End Sub
|
||||
Protected Overrides Sub EditOrAddCompleted()
|
||||
CType(Me.ParentForm, frmMain).EnableMenus()
|
||||
End Sub
|
||||
|
||||
Private Function ConvertWorkToListViewItem(ByVal lobjWork As clsWork) As ListViewItem
|
||||
Dim lobjItem As ListViewItem
|
||||
|
||||
If lobjWork.Composer Is Nothing Then
|
||||
lobjItem = New ListViewItem("")
|
||||
Else
|
||||
lobjItem = New ListViewItem(lobjWork.Composer.ComposerName)
|
||||
End If
|
||||
|
||||
lobjItem.SubItems.Add(lobjWork.WorkName)
|
||||
lobjItem.SubItems.Add(lobjWork.Book.ToString)
|
||||
lobjItem.SubItems.Add(lobjWork.PageNumberAsString)
|
||||
If lobjWork.HymnTuneName Is Nothing Then
|
||||
lobjItem.SubItems.Add(MyGlobals.NONE_STRING)
|
||||
Else
|
||||
lobjItem.SubItems.Add(lobjWork.HymnTuneName.HymnTuneName)
|
||||
End If
|
||||
lobjItem.SubItems.Add(lobjWork.Instrumentation.InstrumentationName)
|
||||
|
||||
'If lobjWork.HymnTuneName Is Nothing Then
|
||||
' lobjItem.SubItems.Add(MyGlobals.NONE_STRING)
|
||||
'Else
|
||||
' lobjItem.SubItems.Add(lobjWork.HymnTuneName.HymnTuneName)
|
||||
'End If
|
||||
|
||||
lobjItem.Tag = lobjWork
|
||||
|
||||
Return lobjItem
|
||||
|
||||
End Function
|
||||
|
||||
Protected Overrides Function SaveNewDataForExistingItem(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
|
||||
Dim lstrErrorString As String = ""
|
||||
Dim lblnAddedNewComposer As Boolean
|
||||
Dim lblnAddedNewInstrumentation As Boolean
|
||||
Dim lblnAddedNewHymnTuneName As Boolean
|
||||
|
||||
lblnAddedNewComposer = False
|
||||
lblnAddedNewInstrumentation = False
|
||||
lblnAddedNewHymnTuneName = False
|
||||
|
||||
Dim objComposer As clsComposer
|
||||
Select Case cboComposerName.Text.ToUpper.Trim
|
||||
Case ""
|
||||
objComposer = Nothing
|
||||
Case Else
|
||||
objComposer = CType(MyGlobals.GetItemFromHashWithStringKey(cboComposerName.Text.ToUpper.Trim, m_objComposersHash), clsComposer)
|
||||
If objComposer Is Nothing Then
|
||||
objComposer = New clsComposer(cboComposerName.Text.Trim)
|
||||
lblnAddedNewComposer = True
|
||||
End If
|
||||
End Select
|
||||
|
||||
Dim objInstrumentation As clsInstrumentation
|
||||
Select Case cboInstrumentationName.Text.ToUpper.Trim
|
||||
Case ""
|
||||
objInstrumentation = Nothing
|
||||
Case Else
|
||||
objInstrumentation = CType(MyGlobals.GetItemFromHashWithStringKey(cboInstrumentationName.Text.ToUpper.Trim, m_objInstrumentationsHash), clsInstrumentation)
|
||||
If objInstrumentation Is Nothing Then
|
||||
objInstrumentation = New clsInstrumentation(cboInstrumentationName.Text.Trim)
|
||||
lblnAddedNewInstrumentation = True
|
||||
End If
|
||||
End Select
|
||||
|
||||
Dim objHymnTuneName As clsHymnTuneName
|
||||
Select Case cboHymnTuneName.Text.ToUpper.Trim
|
||||
Case MyGlobals.NONE_STRING.ToUpper, ""
|
||||
objHymnTuneName = Nothing
|
||||
Case Else
|
||||
objHymnTuneName = CType(MyGlobals.GetItemFromHashWithStringKey(cboHymnTuneName.Text.ToUpper.Trim, m_objHymnTuneNamesHash), clsHymnTuneName)
|
||||
If objHymnTuneName Is Nothing Then
|
||||
objHymnTuneName = New clsHymnTuneName(cboHymnTuneName.Text.Trim)
|
||||
lblnAddedNewHymnTuneName = True
|
||||
End If
|
||||
End Select
|
||||
|
||||
|
||||
mobjDetailWork.Book = CType(cboBook.SelectedItem, clsBook)
|
||||
mobjDetailWork.PageNumberAsString = txtPageNumber.Text
|
||||
mobjDetailWork.WorkName = txtWorkName.Text
|
||||
mobjDetailWork.Composer = objComposer
|
||||
mobjDetailWork.Instrumentation = objInstrumentation
|
||||
mobjDetailWork.OpusInfo = txtOpusInfo.Text
|
||||
mobjDetailWork.HymnTuneName = objHymnTuneName
|
||||
|
||||
If Not mobjDetailWork.Validate(lstrErrorString) Then
|
||||
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
|
||||
Return False
|
||||
End If
|
||||
|
||||
If Not mobjDetailWork.Save() Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
If lblnAddedNewComposer Then
|
||||
AddComposerToForm(objComposer)
|
||||
End If
|
||||
|
||||
If lblnAddedNewInstrumentation Then
|
||||
AddInstrumentationToForm(objInstrumentation)
|
||||
End If
|
||||
|
||||
If lblnAddedNewHymnTuneName Then
|
||||
AddHymnTuneNameToForm(objHymnTuneName)
|
||||
End If
|
||||
|
||||
Me.ExistingObjectsListItems.Remove(lstvwExistingItem)
|
||||
Me.ExistingObjectsListItems.Add(ConvertWorkToListViewItem(mobjDetailWork))
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Private Sub txtWorkName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtWorkName.TextChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
Private Sub cboComposerName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboComposerName.TextChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
Private Sub cboInstrumentationName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboInstrumentationName.TextChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
Private Sub cboHymnTuneName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboHymnTuneName.TextChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
Private Sub txtPageNumber_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtPageNumber.TextChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
Private Sub txtOpusInfo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtOpusInfo.TextChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
Private Sub cboBook_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboBook.SelectedIndexChanged
|
||||
MyBase.DetailDataHasChanged()
|
||||
End Sub
|
||||
|
||||
Private Sub txtPageNumber_KeyPress(ByVal sender As System.Object, ByVal e As Windows.Forms.KeyPressEventArgs) Handles txtPageNumber.KeyPress
|
||||
If Not MyGlobals.AllowKeypressInNumericTextBox(e.KeyChar) Then
|
||||
e.Handled = True
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Protected Sub AddComposerToForm(ByVal objComposer As clsComposer)
|
||||
Me.cboComposerName.Items.Add(objComposer.ComposerName)
|
||||
m_objComposersHash.Add(objComposer.ComposerName.ToUpper, objComposer)
|
||||
End Sub
|
||||
|
||||
Protected Sub AddInstrumentationToForm(ByVal objInstrumentation As clsInstrumentation)
|
||||
Me.cboInstrumentationName.Items.Add(objInstrumentation.InstrumentationName)
|
||||
m_objInstrumentationsHash.Add(objInstrumentation.InstrumentationName.ToUpper, objInstrumentation)
|
||||
End Sub
|
||||
|
||||
Protected Sub AddHymnTuneNameToForm(ByVal objHymnTuneName As clsHymnTuneName)
|
||||
Me.cboHymnTuneName.Items.Add(objHymnTuneName.HymnTuneName)
|
||||
m_objHymnTuneNamesHash.Add(objHymnTuneName.HymnTuneName.ToUpper, objHymnTuneName)
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
81
frmMain.resx
Normal file
81
frmMain.resx
Normal file
@@ -0,0 +1,81 @@
|
||||
<root>
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="MenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAICAQAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
|
||||
AAD///8A7gDu4A7uAO7gDu4A7uAO7uD4Dg+A4PgOD4Dg+A4PgO4P+HD/hw/4cP+HD/hw/4cODwBw8AcP
|
||||
AHDwBw8AcPAHDg/4cP+HD/hw/4cP+HD/hw4P+HD/hw/4cP+HD/hw/4cOD/hw/4cP+HD/hw/4cP+HDg/4
|
||||
cP+HD/hw/4cP+HD/hw4P+HD/hw/4cP+HD/hw/4cOD/hw/4cP+HD/hw/4cP+HDg/4cP+HD/hw/4cP+HD/
|
||||
hw4P+HD/hw/4cP+HD/hw/4cOD/hw/4cP+HD/hw/4cP+HDg/4cP+HD/hw/4cP+HD/hw4P+HD/hw/4cP+H
|
||||
D/hw/4cOD/hw/4cP+HD/hw/4cP+HDg/4cP+HD/hw/4cP+HD/hw4P+HD/hw/4cP+HD/hw/4cOD/hw/4cP
|
||||
+HD/hw/4cP+HDg8AcP+HD/hw/4cP+HDwBw7g/wD/hw/4cP+HD/hwD/Du4P8A8AcP+HD/hw8AcA/w7u4A
|
||||
7g/wD/hw/4cA/w7gDu7u7u4P8A8AcPAHAP8O7u7u6Znp4A7g/w4P8O4A7u7u7umZ7u7u4P8OD/Du7u6Z
|
||||
nu7u6e7umZ4A6eAO6ZnumZ7u7unu7pme7unu7umZ7u6e7u7p7u7unu7p7u7u6e7unu7u6e7u7p7u6e7u
|
||||
7unu7p7u7u7u7u6enumZ7u7p7pme7u7u7u7ume7pme7u6Znu7u4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
351
frmMain.vb
Normal file
351
frmMain.vb
Normal file
@@ -0,0 +1,351 @@
|
||||
Imports System.Windows.Forms
|
||||
|
||||
Public Class frmMain
|
||||
Inherits Windows.Forms.Form
|
||||
|
||||
Private m_frmEditComposer As frmEditComposer
|
||||
Private m_frmEditInstrumentation As frmEditInstrumentation
|
||||
Private m_frmEditPublisher As frmEditPublisher
|
||||
Private m_frmEditHymnal As frmEditHymnal
|
||||
Private m_frmEditBook As frmEditBook
|
||||
Private m_frmEditHymnTuneName As frmEditHymnTuneName
|
||||
Private m_frmEditHymn As frmEditHymn
|
||||
Friend WithEvents mnuEditInstrumentations As Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents MenuItem1 As Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents ToolStripSeparator2 As ToolStripSeparator
|
||||
Private m_frmEditWork As frmEditWork
|
||||
|
||||
#Region " Windows Form Designer generated code "
|
||||
|
||||
Public Sub New()
|
||||
MyBase.New()
|
||||
|
||||
'This call is required by the Windows Form Designer.
|
||||
InitializeComponent()
|
||||
|
||||
'Add any initialization after the InitializeComponent() call
|
||||
|
||||
End Sub
|
||||
|
||||
'Form overrides dispose to clean up the component list.
|
||||
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
If disposing Then
|
||||
If Not (components Is Nothing) Then
|
||||
components.Dispose()
|
||||
End If
|
||||
End If
|
||||
MyBase.Dispose(disposing)
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
Friend WithEvents MenuStrip1 As Windows.Forms.MenuStrip
|
||||
Friend WithEvents mnuFile As Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mnuFileExit As Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mnuEdit As Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mnuEditComposer As Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mnuEditPublisher As Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mnuEditHymnal As Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mnuEditBook As Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mnuEditHymnTuneNames As Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mnuEditHymn As Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mnuEditWork As Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mnuGenerate As Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents mnuGenerateWebSite As Windows.Forms.ToolStripMenuItem
|
||||
|
||||
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMain))
|
||||
Me.MenuStrip1 = New System.Windows.Forms.MenuStrip()
|
||||
Me.mnuFile = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mnuFileExit = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mnuEdit = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mnuEditBook = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mnuEditHymn = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mnuEditHymnTuneNames = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mnuEditHymnal = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mnuEditWork = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mnuEditComposer = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mnuEditInstrumentations = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mnuEditPublisher = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mnuGenerate = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.mnuGenerateWebSite = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.MenuStrip1.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'MenuStrip1
|
||||
'
|
||||
Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuFile, Me.mnuEdit, Me.mnuGenerate})
|
||||
Me.MenuStrip1.Location = New System.Drawing.Point(0, 0)
|
||||
Me.MenuStrip1.Name = "MenuStrip1"
|
||||
Me.MenuStrip1.TabIndex = 1
|
||||
'
|
||||
'mnuFile
|
||||
'
|
||||
Me.mnuFile.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuFileExit})
|
||||
Me.mnuFile.Name = "mnuFile"
|
||||
Me.mnuFile.Text = "&File"
|
||||
'
|
||||
'mnuFileExit
|
||||
'
|
||||
Me.mnuFileExit.Name = "mnuFileExit"
|
||||
Me.mnuFileExit.Size = New System.Drawing.Size(180, 22)
|
||||
Me.mnuFileExit.Text = "E&xit"
|
||||
'
|
||||
'mnuEdit
|
||||
'
|
||||
Me.mnuEdit.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuEditBook, Me.mnuEditHymn, Me.mnuEditHymnTuneNames, Me.mnuEditHymnal, Me.mnuEditWork, Me.ToolStripSeparator2, Me.mnuEditComposer, Me.mnuEditInstrumentations, Me.mnuEditPublisher})
|
||||
Me.mnuEdit.Name = "mnuEdit"
|
||||
Me.mnuEdit.Size = New System.Drawing.Size(39, 20)
|
||||
Me.mnuEdit.Text = "&Edit"
|
||||
'
|
||||
'mnuEditBook
|
||||
'
|
||||
Me.mnuEditBook.Name = "mnuEditBook"
|
||||
Me.mnuEditBook.Size = New System.Drawing.Size(185, 22)
|
||||
Me.mnuEditBook.Text = "Books..."
|
||||
'
|
||||
'mnuEditHymn
|
||||
'
|
||||
Me.mnuEditHymn.Name = "mnuEditHymn"
|
||||
Me.mnuEditHymn.Size = New System.Drawing.Size(185, 22)
|
||||
Me.mnuEditHymn.Text = "Hymns..."
|
||||
'
|
||||
'mnuEditHymnTuneNames
|
||||
'
|
||||
Me.mnuEditHymnTuneNames.Name = "mnuEditHymnTuneNames"
|
||||
Me.mnuEditHymnTuneNames.Size = New System.Drawing.Size(185, 22)
|
||||
Me.mnuEditHymnTuneNames.Text = "Hymn Tune Names..."
|
||||
'
|
||||
'mnuEditHymnal
|
||||
'
|
||||
Me.mnuEditHymnal.Name = "mnuEditHymnal"
|
||||
Me.mnuEditHymnal.Size = New System.Drawing.Size(185, 22)
|
||||
Me.mnuEditHymnal.Text = "Hymnals..."
|
||||
'
|
||||
'mnuEditWork
|
||||
'
|
||||
Me.mnuEditWork.Name = "mnuEditWork"
|
||||
Me.mnuEditWork.Size = New System.Drawing.Size(185, 22)
|
||||
Me.mnuEditWork.Text = "Works..."
|
||||
'
|
||||
'mnuEditComposer
|
||||
'
|
||||
Me.mnuEditComposer.Name = "mnuEditComposer"
|
||||
Me.mnuEditComposer.Size = New System.Drawing.Size(185, 22)
|
||||
Me.mnuEditComposer.Text = "&Composers..."
|
||||
'
|
||||
'mnuEditInstrumentations
|
||||
'
|
||||
Me.mnuEditInstrumentations.Name = "mnuEditInstrumentations"
|
||||
Me.mnuEditInstrumentations.Size = New System.Drawing.Size(185, 22)
|
||||
Me.mnuEditInstrumentations.Text = "Instrumentations..."
|
||||
'
|
||||
'mnuEditPublisher
|
||||
'
|
||||
Me.mnuEditPublisher.Name = "mnuEditPublisher"
|
||||
Me.mnuEditPublisher.Size = New System.Drawing.Size(185, 22)
|
||||
Me.mnuEditPublisher.Text = "Publishers..."
|
||||
'
|
||||
'mnuGenerate
|
||||
'
|
||||
Me.mnuGenerate.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuGenerateWebSite})
|
||||
Me.mnuGenerate.Name = "mnuGenerate"
|
||||
Me.mnuGenerate.Size = New System.Drawing.Size(66, 20)
|
||||
Me.mnuGenerate.Text = "&Generate"
|
||||
'
|
||||
'mnuGenerateWebSite
|
||||
'
|
||||
Me.mnuGenerateWebSite.Name = "mnuGenerateWebSite"
|
||||
Me.mnuGenerateWebSite.Size = New System.Drawing.Size(180, 22)
|
||||
Me.mnuGenerateWebSite.Text = "&Web Site"
|
||||
'
|
||||
'ToolStripSeparator2
|
||||
'
|
||||
Me.ToolStripSeparator2.Name = "ToolStripSeparator2"
|
||||
Me.ToolStripSeparator2.Size = New System.Drawing.Size(182, 6)
|
||||
'
|
||||
'frmMain
|
||||
'
|
||||
Me.AutoScaleBaseSize = New System.Drawing.Size(6, 16)
|
||||
Me.ClientSize = New System.Drawing.Size(960, 574)
|
||||
Me.Controls.Add(Me.MenuStrip1)
|
||||
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
|
||||
Me.IsMdiContainer = True
|
||||
Me.MainMenuStrip = Me.MenuStrip1
|
||||
Me.Name = "frmMain"
|
||||
Me.Text = "OrganLit"
|
||||
Me.WindowState = System.Windows.Forms.FormWindowState.Maximized
|
||||
Me.MenuStrip1.ResumeLayout(False)
|
||||
Me.MenuStrip1.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
|
||||
#End Region
|
||||
|
||||
Private Function OpenDatabaseConnection() As Boolean
|
||||
Try
|
||||
MyGlobals.g_objDatabaseLayer = New clsDatabaseLayer
|
||||
Return MyGlobals.g_objDatabaseLayer.OpenDatabaseConnection()
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function CloseDatabaseConnection() As Boolean
|
||||
Try
|
||||
Return MyGlobals.g_objDatabaseLayer.CloseDatabaseConnection()
|
||||
Catch
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Sub frmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
|
||||
If Not OpenDatabaseConnection() Then
|
||||
MessageBox.Show("Error connecting to database", "Database error", MessageBoxButtons.OK, MessageBoxIcon.Error)
|
||||
Me.Close()
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub DisableMenus()
|
||||
mnuFile.Enabled = False
|
||||
mnuEdit.Enabled = False
|
||||
End Sub
|
||||
|
||||
Public Sub EnableMenus()
|
||||
mnuFile.Enabled = True
|
||||
mnuEdit.Enabled = True
|
||||
End Sub
|
||||
|
||||
Private Sub mnuEditComposer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuEditComposer.Click
|
||||
Me.Cursor = Windows.Forms.Cursors.WaitCursor
|
||||
CloseAllEditWindows()
|
||||
m_frmEditComposer = New frmEditComposer
|
||||
m_frmEditComposer.MdiParent = Me
|
||||
m_frmEditComposer.Show()
|
||||
Me.Cursor = Windows.Forms.Cursors.Default
|
||||
End Sub
|
||||
|
||||
Private Sub mnuEditPublisher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuEditPublisher.Click
|
||||
Me.Cursor = Windows.Forms.Cursors.WaitCursor
|
||||
CloseAllEditWindows()
|
||||
If m_frmEditPublisher Is Nothing OrElse m_frmEditPublisher.IsDisposed Then
|
||||
m_frmEditPublisher = New frmEditPublisher
|
||||
m_frmEditPublisher.MdiParent = Me
|
||||
m_frmEditPublisher.Show()
|
||||
Else
|
||||
m_frmEditPublisher.Activate()
|
||||
End If
|
||||
Me.Cursor = Windows.Forms.Cursors.Default
|
||||
End Sub
|
||||
|
||||
Private Sub mnuEditHymnal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuEditHymnal.Click
|
||||
Me.Cursor = Windows.Forms.Cursors.WaitCursor
|
||||
CloseAllEditWindows()
|
||||
If m_frmEditHymnal Is Nothing OrElse m_frmEditHymnal.IsDisposed Then
|
||||
m_frmEditHymnal = New frmEditHymnal
|
||||
m_frmEditHymnal.MdiParent = Me
|
||||
m_frmEditHymnal.Show()
|
||||
Else
|
||||
m_frmEditHymnal.Activate()
|
||||
End If
|
||||
Me.Cursor = Windows.Forms.Cursors.Default
|
||||
End Sub
|
||||
|
||||
Private Sub mnuEditBook_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuEditBook.Click
|
||||
Me.Cursor = Windows.Forms.Cursors.WaitCursor
|
||||
CloseAllEditWindows()
|
||||
If m_frmEditBook Is Nothing OrElse m_frmEditBook.IsDisposed Then
|
||||
m_frmEditBook = New frmEditBook
|
||||
m_frmEditBook.MdiParent = Me
|
||||
m_frmEditBook.Show()
|
||||
Else
|
||||
m_frmEditBook.Activate()
|
||||
End If
|
||||
Me.Cursor = Windows.Forms.Cursors.Default
|
||||
End Sub
|
||||
|
||||
Private Sub mnuEditHymnTuneNames_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuEditHymnTuneNames.Click
|
||||
Me.Cursor = Windows.Forms.Cursors.WaitCursor
|
||||
CloseAllEditWindows()
|
||||
If m_frmEditHymnTuneName Is Nothing OrElse m_frmEditHymnTuneName.IsDisposed Then
|
||||
m_frmEditHymnTuneName = New frmEditHymnTuneName
|
||||
m_frmEditHymnTuneName.MdiParent = Me
|
||||
m_frmEditHymnTuneName.Show()
|
||||
Else
|
||||
m_frmEditHymnTuneName.Activate()
|
||||
End If
|
||||
Me.Cursor = Windows.Forms.Cursors.Default
|
||||
End Sub
|
||||
|
||||
Private Sub mnuEditHymn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuEditHymn.Click
|
||||
Me.Cursor = Windows.Forms.Cursors.WaitCursor
|
||||
CloseAllEditWindows()
|
||||
If m_frmEditHymn Is Nothing OrElse m_frmEditHymn.IsDisposed Then
|
||||
m_frmEditHymn = New frmEditHymn
|
||||
m_frmEditHymn.MdiParent = Me
|
||||
m_frmEditHymn.Show()
|
||||
Else
|
||||
m_frmEditHymn.Activate()
|
||||
End If
|
||||
Me.Cursor = Windows.Forms.Cursors.Default
|
||||
End Sub
|
||||
|
||||
Private Sub mnuEditWork_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuEditWork.Click
|
||||
Me.Cursor = Windows.Forms.Cursors.WaitCursor
|
||||
CloseAllEditWindows()
|
||||
If m_frmEditWork Is Nothing OrElse m_frmEditWork.IsDisposed Then
|
||||
m_frmEditWork = New frmEditWork
|
||||
m_frmEditWork.MdiParent = Me
|
||||
m_frmEditWork.Show()
|
||||
Else
|
||||
m_frmEditWork.Activate()
|
||||
End If
|
||||
Me.Cursor = Windows.Forms.Cursors.Default
|
||||
End Sub
|
||||
|
||||
Private Sub mnuFileExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuFileExit.Click
|
||||
Me.Close()
|
||||
End Sub
|
||||
|
||||
Private Sub mnuGenerateWebSite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuGenerateWebSite.Click
|
||||
Me.Cursor = Windows.Forms.Cursors.WaitCursor
|
||||
CloseAllEditWindows()
|
||||
modGenerateWebSite.GenerateWebSite()
|
||||
Me.Cursor = Windows.Forms.Cursors.Default
|
||||
End Sub
|
||||
|
||||
Private Sub mnuEditInstrumentations_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuEditInstrumentations.Click
|
||||
Me.Cursor = Windows.Forms.Cursors.WaitCursor
|
||||
CloseAllEditWindows()
|
||||
m_frmEditInstrumentation = New frmEditInstrumentation
|
||||
m_frmEditInstrumentation.MdiParent = Me
|
||||
m_frmEditInstrumentation.Show()
|
||||
Me.Cursor = Windows.Forms.Cursors.Default
|
||||
End Sub
|
||||
|
||||
Private Sub CloseAllEditWindows()
|
||||
CloseWindow(m_frmEditBook)
|
||||
CloseWindow(m_frmEditComposer)
|
||||
CloseWindow(m_frmEditHymn)
|
||||
CloseWindow(m_frmEditHymnal)
|
||||
CloseWindow(m_frmEditHymnTuneName)
|
||||
CloseWindow(m_frmEditInstrumentation)
|
||||
CloseWindow(m_frmEditPublisher)
|
||||
CloseWindow(m_frmEditWork)
|
||||
End Sub
|
||||
|
||||
Private Sub CloseWindow(ByVal objWindow As Windows.Forms.Form)
|
||||
If objWindow Is Nothing OrElse objWindow.IsDisposed Then
|
||||
Else
|
||||
objWindow.Close()
|
||||
End If
|
||||
End Sub
|
||||
End Class
|
||||
14
index.htm
Normal file
14
index.htm
Normal file
@@ -0,0 +1,14 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Organ Literature Index</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Organ Literature Index</h1>
|
||||
<p><a href="indexbyhymn.htm">Index by Hymn</a></p>
|
||||
<p><a href="indexbyhymntunename.htm">Index by Hymn Tune Name</a></p>
|
||||
<p><a href="nonhymntuneworks.htm">Organ Works Not Based on Hymn Tunes</a></p>
|
||||
<p><a href="indexbycomposer.htm">Index by Composer</a></p>
|
||||
<p><a href="indexbybook.htm">Index by Book</a></p>
|
||||
</body>
|
||||
</html>
|
||||
12
log.txt
Normal file
12
log.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
2021-08-08 13:59:13.435 -05:00 [INF] Loaded 5 extensions
|
||||
2021-08-08 13:59:14.125 -05:00 [INF] MSBuild registered from C:\Program Files\dotnet\sdk\5.0.302\
|
||||
2021-08-08 13:59:14.798 -05:00 [INF] Found Visual Studio v16.10.31410.357 [C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional]
|
||||
2021-08-08 13:59:17.893 -05:00 [INF] Initializing upgrade step Select an entrypoint
|
||||
2021-08-08 13:59:17.903 -05:00 [INF] Setting entrypoint to only project in solution: Z:\VBDOTNETPROJECTS\OrganLit\OrganLit.vbproj
|
||||
2021-08-08 13:59:17.973 -05:00 [INF] Recommending Windows TFM net5.0-windows because the project either has Windows-specific dependencies or builds to a WinExe
|
||||
2021-08-08 13:59:18.004 -05:00 [INF] Initializing upgrade step Finalize upgrade
|
||||
2021-08-08 13:59:18.055 -05:00 [INF] Recommending Windows TFM net5.0-windows because the project either has Windows-specific dependencies or builds to a WinExe
|
||||
2021-08-08 13:59:31.830 -05:00 [INF] Applying upgrade step Finalize upgrade
|
||||
2021-08-08 13:59:31.837 -05:00 [INF] Upgrade step Finalize upgrade applied successfully
|
||||
2021-08-08 13:59:37.577 -05:00 [INF] Upgrade has completed. Please review any changes.
|
||||
2021-08-08 13:59:37.590 -05:00 [INF] No state to save
|
||||
1025
modGenerateWebSite.vb
Normal file
1025
modGenerateWebSite.vb
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user