Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/WPF/VB/GridDemo.Wpf/Controls/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/WPF/VB/GridDemo.Wpf/Controls/DemoModuleControl.vb

Imports Microsoft.VisualBasic
Imports System
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Controls.Primitives
Imports DevExpress.Utils
Imports DevExpress.Xpf.Core
Imports DevExpress.Xpf.DemoBase
Imports DevExpress.Xpf.Grid
Imports DevExpress.Xpf.Printing
Imports DevExpress.Xpf.Utils.Themes
Imports DevExpress.Xpf.Editors
Imports DevExpress.Xpf.Core.Native
Imports DevExpress.Xpf.Themes

Namespace GridDemo
	Public Class GridDemoModule
		Inherits DemoModule
		Public Shared ReadOnly GridControlProperty As DependencyProperty

		Shared Sub New()
			GridControlProperty = DependencyProperty.Register("GridControl", GetType(GridControl), GetType(GridDemoModule), New PropertyMetadata(Nothing))
		End Sub

		Public Sub New()
		End Sub

		Protected Overridable ReadOnly Property IsGridBorderVisible() As Boolean
			Get
				Return False
			End Get
		End Property
		Private privateUseGridControlWrapperAsDataContext As Boolean
		Public Property UseGridControlWrapperAsDataContext() As Boolean
			Get
				Return privateUseGridControlWrapperAsDataContext
			End Get
			Set(ByVal value As Boolean)
				privateUseGridControlWrapperAsDataContext = value
			End Set
		End Property
		Public Property GridControl() As GridControl
			Get
				Return CType(GetValue(GridControlProperty), GridControl)
			End Get
			Set(ByVal value As GridControl)
				SetValue(GridControlProperty, value)
			End Set
		End Property
		Public Overrides Sub OnApplyTemplate()
			MyBase.OnApplyTemplate()
		End Sub
		Protected Overrides Function GetModuleDataContext() As Object
			If GridControl Is Nothing Then
				GridControl = FindGrid()
				If GridControl IsNot Nothing Then
					GridControl.ShowBorder = IsGridBorderVisible
				End If
			End If
			If UseGridControlWrapperAsDataContext Then
				Return New GridControlWrapper(GridControl)
			End If
			Return GridControl
		End Function
		Protected Overridable Function FindGrid() As GridControl
			Return CType(DemoModuleControl.FindDemoContent(GetType(GridControl), CType(DemoModuleControl.Content, DependencyObject)), GridControl)
		End Function
		Protected Overrides Sub RaiseIsPopupContentInvisibleChanged(ByVal e As DependencyPropertyChangedEventArgs)
			MyBase.RaiseIsPopupContentInvisibleChanged(e)
			If IsPopupContentInvisible AndAlso GridControl IsNot Nothing Then
				GridControl.View.HideColumnChooser()
			End If
		End Sub
		Protected Overrides Function CanLeave() As Boolean
			If GridControl Is Nothing Then
				Return True
			End If
			Return GridControl.View.CommitEditing()
		End Function

	End Class
	Public Class GridControlWrapper
		Implements System.ComponentModel.INotifyPropertyChanged
		Private grid As GridControl
		Public Property GridControl() As GridControl
			Get
				Return grid
			End Get
			Set(ByVal value As GridControl)
				If grid Is value Then
					Return
				End If
				grid = value
				OnPropertyChanged("GridControl")
			End Set
		End Property
		Public Sub New(ByVal gridControl As GridControl)
			Me.GridControl = gridControl
		End Sub

		Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
		Private Sub OnPropertyChanged(ByVal propertyName As String)
			If (Me.PropertyChangedEvent IsNot Nothing) Then
				RaiseEvent PropertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName))
			End If
		End Sub
	End Class
	Public Class PrintViewGridDemoModule
		Inherits GridDemoModule
		Public Shared Function CreateLinkPreviewModel(ByVal printableControl As IPrintableControl) As LinkPreviewModel
			Dim link As New PrintableControlLink(TryCast(printableControl, IPrintableControl))
			Return New LinkPreviewModel(link)
		End Function
		Protected Overridable ReadOnly Property DXTabControl() As DXTabControl
			Get
				Return Nothing
			End Get
		End Property
		Protected Overrides Function FindGrid() As GridControl
			Return If(DXTabControl IsNot Nothing, CType((CType(DXTabControl.Items(0), DXTabItem)).Content, GridControl), Nothing)
		End Function
		Public Sub ShowPrintPreview()
			Dim owner As Window = LayoutHelper.FindParentObject(Of Window)(Me)
			PrintHelper.ShowPrintPreviewDialog(owner, CType(GridControl.View, IPrintableControl), "Grid Document")
		End Sub
		Public Sub ShowPrintPreviewInNewTab(ByVal grid As GridControl, ByVal tabControl As DXTabControl, ByVal tabName As String)
			Dim preview As New DocumentPreview()
			Dim model As LinkPreviewModel = CreateLinkPreviewModel(TryCast(grid.View, IPrintableControl))
			preview.Model = model

			Dim tabHeaderPrintInfoControl As New TabHeaderPrintInfoControl() With {.TabName = tabName, .LinkPreviewModel = model}
			Dim tabItem As New DXTabItem() With {.AllowHide = DefaultBoolean.True, .Content = preview, .Header = tabHeaderPrintInfoControl}
			tabControl.Items.Add(tabItem)
			tabControl.SelectedItem = tabItem

			model.Link.CreateDocument(True)
		End Sub
		Protected Sub DisposePrintPreviewTabContent(ByVal tabItem As DXTabItem)
			DXTabControl.Items.Remove(tabItem)
			Dim tabHeaderPrintInfoControl As TabHeaderPrintInfoControl = CType(tabItem.Header, TabHeaderPrintInfoControl)
			tabHeaderPrintInfoControl.LinkPreviewModel.Link.Dispose()
		End Sub
		Protected Overrides Sub Clear()
			MyBase.Clear()
			For i As Integer = DXTabControl.Items.Count - 1 To 1 Step -1
				DisposePrintPreviewTabContent(CType(DXTabControl.Items(i), DXTabItem))
			Next i
		End Sub
		Protected Sub newWindowButton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
			ShowPrintPreview()
		End Sub
		Protected Overridable Sub ShowPreviewInNewTab()
		End Sub
	End Class
	Public Class CountryToFlagImageConverter
		Inherits BytesToImageSourceConverter
		Public Overrides Function Convert(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object
			For Each item As Country In CountriesData.DataSource
				If item.Name = CStr(value) Then
					Return MyBase.Convert(item.Flag, targetType, parameter, culture)
				End If
			Next item
			Return Nothing
		End Function
	End Class
End Namespace
Namespace CommonDemo
	Public Class CommonDemoModule
		Inherits GridDemo.GridDemoModule
	End Class
End Namespace