jj: first pass of final index redesign

This commit is contained in:
Jonathan Jenne
2018-06-21 15:26:17 +02:00
parent fc8631bad8
commit c38e20170b
12 changed files with 1373 additions and 806 deletions

View File

@@ -1,14 +1,25 @@
Imports System.ComponentModel
Imports System.Drawing.Design
Imports System.Globalization
Imports FormsUtils
Module ModuleFinalIndexProperties
Public Const INDEX_TYPE_STRING = 1
Public Const INDEX_TYPE_INTEGER = 2
Public Const INDEX_TYPE_FLOAT = 3
Public Const INDEX_TYPE_BOOLEAN = 4
Public Const INDEX_TYPE_DATE = 5
Public Const INDEX_TYPE_VECTOR_INTEGER = 4107
Public Const INDEX_TYPE_VECTOR_STRING = 4097
Public Const INDEX_TYPE_VECTOR_BOOLEAN = 4100
Public Const INDEX_TYPE_VECTOR_DATE = 4101
<TypeConverter(GetType(PropertiesDeluxeTypeConverter))>
Public Class FinalIndexProperties
<Category("Allgemein")>
<Category("Information")>
<[ReadOnly](True)>
Public Property GUID As Integer
<Category("Allgemein")>
<Category("Information")>
<[ReadOnly](True)>
Public Property ConnectionId As Integer
@@ -20,51 +31,98 @@ Module ModuleFinalIndexProperties
''' <summary>
''' Eigenschaft, die den SQL Editor anzeigt
''' </summary>
<Category("Daten")>
<Category("Daten - SQL")>
Public Property SQLCommand As SQLValue
<Category("Daten")>
Public Property StaticValue As String
''' <summary>
''' Eigenschaft, die eine Liste von Indicies anzeigt
''' </summary>
' Eigenschaften für die verschiedenen Index-Typen
<DisplayName("Value")>
<Category("Daten - Fester Wert")>
<PropertyAttributesProvider("IndexTypeStringProvider")>
Public Property StringValue As String
<DisplayName("Value")>
<Category("Daten - Fester Wert")>
<PropertyAttributesProvider("IndexTypeBooleanProvider")>
Public Property BoolValue As Boolean
<DisplayName("Value")>
<Category("Daten - Fester Wert")>
<PropertyAttributesProvider("IndexTypeFloatProvider")>
Public Property FloatValue As Double
<DisplayName("Value")>
<Category("Daten - Fester Wert")>
<PropertyAttributesProvider("IndexTypeDateProvider")>
Public Property DateValue As Date
<DisplayName("Value")>
<Category("Daten - Fester Wert")>
<PropertyAttributesProvider("IndexTypeIntegerProvider")>
Public Property IntegerValue As Integer
<Category("Index")>
<TypeConverter(GetType(IndexListConverter))>
Public Property IndexName As String
<Category("Index")>
Public Property VectorIndex As Boolean
''' <summary>
''' Diese Eigenschaft enthält die auswählbaren Indicies, die für das Control verfügbar sind. Wird nicht direkt angezeigt.
''' </summary>
' Eigenschaften für die Liste der Indicies
<Browsable(False)>
Public Property Indicies As List(Of String)
<Browsable(False)>
Public Property IndiciesType As List(Of Integer)
Public Sub MaybeSetReadOnly(attrs As PropertyAttributes)
Dim hasSQLValue As Boolean = (SQLCommand.Value <> String.Empty)
If hasSQLValue Then
attrs.IsReadOnly = True
Else
attrs.IsReadOnly = False
End If
End Sub
Public Class IndexListConverter
Inherits TypeConverter
Public Sub MaybeSetBrowsable(attrs As PropertyAttributes, indexType As Integer())
Dim i As Integer = Indicies.IndexOf(IndexName)
Public Overrides Function GetStandardValuesSupported(context As ITypeDescriptorContext) As Boolean
Return True
End Function
' IndexName wurde nicth gefunden oder ist leerer/ungültiger String
If i < 0 Then
attrs.IsBrowsable = False
Exit Sub
End If
Public Overrides Function GetStandardValues(context As ITypeDescriptorContext) As StandardValuesCollection
Dim indexList = DirectCast(context.Instance, FinalIndexProperties).Indicies
Dim values As New StandardValuesCollection(indexList)
Return values
End Function
Dim type As Integer = IndiciesType.Item(i)
Public Overrides Function ConvertTo(context As ITypeDescriptorContext, culture As CultureInfo, value As Object, destinationType As Type) As Object
If IsNothing(value) Then
Return ""
Else
Return value.ToString()
End If
End Function
End Class
If indexType.Contains(type) Then
attrs.IsBrowsable = True
Else
attrs.IsBrowsable = False
End If
End Sub
Public Sub IndexTypeBooleanProvider(attrs As PropertyAttributes)
MaybeSetBrowsable(attrs, {INDEX_TYPE_BOOLEAN, INDEX_TYPE_VECTOR_BOOLEAN})
MaybeSetReadOnly(attrs)
End Sub
Public Sub IndexTypeStringProvider(attrs As PropertyAttributes)
MaybeSetBrowsable(attrs, {INDEX_TYPE_STRING, INDEX_TYPE_VECTOR_STRING})
MaybeSetReadOnly(attrs)
End Sub
Public Sub IndexTypeFloatProvider(attrs As PropertyAttributes)
MaybeSetBrowsable(attrs, {INDEX_TYPE_FLOAT})
MaybeSetReadOnly(attrs)
End Sub
Public Sub IndexTypeIntegerProvider(attrs As PropertyAttributes)
MaybeSetBrowsable(attrs, {INDEX_TYPE_INTEGER, INDEX_TYPE_VECTOR_INTEGER})
MaybeSetReadOnly(attrs)
End Sub
Public Sub IndexTypeDateProvider(attrs As PropertyAttributes)
MaybeSetBrowsable(attrs, {INDEX_TYPE_DATE, INDEX_TYPE_VECTOR_DATE})
MaybeSetReadOnly(attrs)
End Sub
End Class
End Module