Imports System.Drawing.Printing Imports System.ComponentModel Imports Softelvdm.Controls Imports Softelvdm.SftTabsNET Public Class MainWindow Public Shared parentWindow As MainWindow Public Shared documentCount As Integer ' static var which keeps track of the document count Public Sub New() parentWindow = Me InitializeComponent() documentCount = 0 CreateDocument("") End Sub Private Sub MenuFileNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuFileNew.Click NewDoc() End Sub Private Sub MenuFileOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuFileOpen.Click Open() End Sub Private Sub MenuFileClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuFileClose.Click CloseView() End Sub Private Sub MenuFileSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuFileSave.Click Save() End Sub Private Sub MenuFileSaveAs_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuFileSaveAs.Click Save() End Sub Private Sub MenuFilePrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuFilePrint.Click Print() End Sub Private Sub MenuFilePrintPreview_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuFilePrintPreview.Click PrintPreview() End Sub Private Sub MenuFileExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuFileExit.Click ExitApp() End Sub Private Sub MenuEditClearAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuEditClearAll.Click Clear() End Sub Private Sub menuPenThick_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuPenThick.Click ThickPen() End Sub Private Sub MenuPenWidths_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuPenWidths.Click PenWidthsDlg() End Sub Private Sub MenuViewToolbar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuViewToolbar.Click toolBar1.Visible = MenuViewToolbar.Checked = Not toolBar1.Visible End Sub Private Sub MenuViewStatusbar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuViewStatusbar.Click statusBar1.Visible = MenuViewStatusbar.Checked = Not statusBar1.Visible End Sub Private Sub MenuWindowNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuWindowNew.Click NewDoc() End Sub Private Sub MenuWindowCascade_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuWindowCascade.Click Cascade() End Sub Private Sub MenuWindowTile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuWindowTile.Click Tile() End Sub Private Sub MenuHelpTopics_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuHelpTopics.Click ShowHelpTopics() End Sub Private Sub MenuHelpAbout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuHelpAbout.Click AboutHelp() End Sub ' About Help Private Sub AboutHelp() MessageBox.Show("Scribble Version 1.0+" + vbCrLf + vbCrLf + "Adapted to use SftTabs/NET for document selection.", "About Scribble", MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub ' Help Topics Private Sub ShowHelpTopics() Help.ShowHelp(Me, "..\..\help\scribble.chm") End Sub ' Print Private Sub Print() Try printDoc.Print() Catch e As Exception MessageBox.Show(e.ToString()) End Try End Sub ' PrintPage event handler Private Sub ScribblePrintPage(ByVal sender As Object, ByVal ev As PrintPageEventArgs) Try Dim activeView As ScribbleView = ActiveMdiChild Dim activeDoc As ScribbleDoc = activeView.GetDocument() For i As Integer = 0 To activeDoc.StrokeList.Count - 1 Dim st As Stroke = activeDoc.StrokeList(i) st.DrawStroke(ev.Graphics) Next ev.HasMorePages = False Catch ex As Exception MessageBox.Show(ex.ToString()) End Try End Sub ' PrintPreview Private Sub PrintPreview() Try Dim prevDlg As PrintPreviewDialog = New PrintPreviewDialog() prevDlg.Document = printDoc prevDlg.Size = New System.Drawing.Size(600, 329) prevDlg.ShowDialog() Catch ex As Exception MessageBox.Show(ex.ToString()) End Try End Sub ' Exit Private Sub ExitApp() Dim childForm() As Form = MdiChildren ' Make sure to ask for saving the doc before exiting the app For i As Integer = 0 To childForm.Length - 1 childForm(i).Close() Next Application.Exit() End Sub ' Close the View Private Sub CloseView() Dim activeView As ScribbleView = ActiveMdiChild activeView.Close() End Sub ' Tile Private Sub Tile() Me.LayoutMdi(MdiLayout.TileHorizontal) End Sub ' Cascade Private Sub Cascade() LayoutMdi(MdiLayout.Cascade) End Sub ' Clear the contents of the active document Private Sub Clear() Dim activeView As ScribbleView = ActiveMdiChild If Not activeView Is Nothing Then Dim activeDoc As ScribbleDoc = activeView.GetDocument() activeDoc.DeleteContents() End If End Sub ' Open an existing document Private Sub Open() Dim openDlg As OpenFileDialog = New OpenFileDialog() openDlg.Filter = "Scribble Files (*.scb)|*.scb|All Files (*.*)|*.*" openDlg.FileName = "" openDlg.DefaultExt = ".scb" openDlg.CheckFileExists = True openDlg.CheckPathExists = True Dim res As DialogResult = openDlg.ShowDialog() If res = System.Windows.Forms.DialogResult.OK Then If Not openDlg.FileName.EndsWith(".scb") And Not openDlg.FileName.EndsWith(".SCB") Then MessageBox.Show("Unexpected file format", "Scribble", MessageBoxButtons.OK) Else If ActiveMdiChild Is Nothing Then EnableItems() End If Dim newDoc As ScribbleDoc = CreateDocument(openDlg.FileName) newDoc.OpenDocument(openDlg.FileName) End If End If End Sub ' Save the document Private Sub Save() Dim selectedView As ScribbleView = ActiveMdiChild Dim saveDlg As SaveFileDialog = New SaveFileDialog() saveDlg.Filter = "Scribble Files (*.scb)|*.scb|All Files (*.*)|*.*" saveDlg.DefaultExt = ".scb" If selectedView.GetDocument().docFileName = "" Then saveDlg.FileName = "Untitled" Else saveDlg.FileName = selectedView.GetDocument().docFileName End If Dim res As DialogResult = saveDlg.ShowDialog() If res = System.Windows.Forms.DialogResult.OK Then selectedView.GetDocument().SaveDocument(saveDlg.FileName) End If End Sub ' Open new document Private Sub NewDoc() ' If this is the first child window, enable the Menu and Toolbar items If ActiveMdiChild Is Nothing Then EnableItems() End If CreateDocument("") End Sub ' NewWindow Private Sub NewWindow() Dim activeView As ScribbleView = ActiveMdiChild Dim newView As ScribbleView = New ScribbleView(activeView.GetDocument(), parentWindow) newView.GetDocument().ViewList.Add(newView) newView.SetTitle(activeView.GetDocument().docFileName) newView.Show() End Sub ' Creates a new document Private Function CreateDocument(ByVal docName As String) As ScribbleDoc Dim newDoc As ScribbleDoc = New ScribbleDoc(parentWindow, docName) documentCount = documentCount + 1 Return newDoc End Function Private Sub PenWidthsDlg() Dim f As Form = New Form() ' Get the document of active view Dim activeView As ScribbleView = ActiveMdiChild Dim activeDoc As ScribbleDoc = activeView.GetDocument() f.AutoScaleBaseSize = New System.Drawing.Size(5, 13) f.Text = "Pen Widths" f.ClientSize = New System.Drawing.Size(352, 125) Dim button1 As Button = New Button() button1.Location = New System.Drawing.Point(264, 20) button1.Size = New System.Drawing.Size(75, 23) button1.TabIndex = 1 button1.Text = "OK" button1.DialogResult = System.Windows.Forms.DialogResult.OK ' Make this "OK" button Dim button2 As Button = New Button() button2.Location = New System.Drawing.Point(264, 52) button2.Size = New System.Drawing.Size(75, 23) button2.TabIndex = 6 button2.Text = "Cancel" Dim textBox1 As TextBox = New TextBox() textBox1.Location = New System.Drawing.Point(120, 36) textBox1.Text = activeDoc.ThinWidth.ToString() textBox1.TabIndex = 1 textBox1.Size = New System.Drawing.Size(64, 20) Dim textBox2 As TextBox = New TextBox() textBox2.Location = New System.Drawing.Point(120, 76) textBox2.Text = activeDoc.ThickWidth.ToString() textBox2.TabIndex = 2 textBox2.Size = New System.Drawing.Size(64, 20) Dim label1 As Label = New Label() label1.Location = New System.Drawing.Point(16, 36) label1.Text = "Thin Pen Width:" label1.Size = New System.Drawing.Size(88, 16) label1.TabIndex = 3 Dim label2 As Label = New Label() label2.Location = New System.Drawing.Point(16, 76) label2.Text = "Thick Pen Width:" label2.Size = New System.Drawing.Size(88, 16) label2.TabIndex = 4 f.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog ' Set the MaximizeBox to false to remove the maximize box. f.MaximizeBox = False ' Set the MinimizeBox to false to remove the minimize box. f.MinimizeBox = False ' Set the accept button of the form to button1. f.AcceptButton = button1 ' Set the cancel button of the form to button2. f.CancelButton = button2 f.StartPosition = FormStartPosition.CenterScreen f.Controls.Add(button1) f.Controls.Add(button2) f.Controls.Add(label1) f.Controls.Add(label2) f.Controls.Add(textBox1) f.Controls.Add(textBox2) Dim res As DialogResult = f.ShowDialog() If res = System.Windows.Forms.DialogResult.OK Then activeDoc.ThinWidth = UInt32.Parse(textBox1.Text) activeDoc.ThickWidth = UInt32.Parse(textBox2.Text) activeDoc.ReplacePen() f.Close() End If End Sub Private Sub ThickPen() Dim activeView As ScribbleView = ActiveMdiChild Dim activeDoc As ScribbleDoc = activeView.GetDocument() activeDoc.ThickPen = Not activeDoc.ThickPen activeDoc.ReplacePen() MenuPenThick.Checked = activeDoc.ThickPen End Sub ' Disable the menu and toolbar items when there is no active child form Public Sub DisableItems() MenuItemEdit.Visible = False MenuItemPen.Visible = False MenuItemWindow.Visible = False MenuFileClose.Visible = False MenuFileSave.Visible = False MenuFileSaveAs.Visible = False MenuFilePrint.Visible = False MenuFilePrintPreview.Visible = False saveButton.Enabled = False previewButton.Enabled = False printButton.Enabled = False End Sub 'Enable the menu and toolbar items when the first child form is created Public Sub EnableItems() MenuItemEdit.Visible = True MenuItemPen.Visible = True MenuItemWindow.Visible = True MenuFileClose.Visible = True MenuFileSave.Visible = True MenuFileSaveAs.Visible = True MenuFilePrint.Visible = True MenuFilePrintPreview.Visible = True saveButton.Enabled = True previewButton.Enabled = True printButton.Enabled = True End Sub Private Sub toolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles toolBar1.ButtonClick If e.Button Is newButton Then NewDoc() ElseIf e.Button Is openButton Then Open() ElseIf e.Button Is saveButton Then Save() ElseIf e.Button Is previewButton Then PrintPreview() ElseIf e.Button Is printButton Then Print() ElseIf e.Button Is helptbButton Then ShowHelpTopics() End If End Sub ' App closing handler Public Sub ClosingMainAppHander(ByVal sender As Object, ByVal e As CancelEventArgs) ExitApp() End Sub Private Sub MainWindow_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' resize the tab control and its container (panel) to use the tab control's optimal height ' leave a small gap above the tab control sftTabs1.MakeNaturalSize() panelTabControl.Height = sftTabs1.Height + 4 panelTabControl.Top = 4 MessageBox.Show("This example is based on the ""Scribble"" sample application included with Visual Studio.NET. It has been modified to use SftTabs/NET for document selection.", "SftTabs/NET Sample", MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub Private Sub sftTabs1_Switched(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles sftTabs1.Switched ' A new tab has become active, activate the appropriate child window If sftTabs1.Current >= 0 Then Dim f As Form = sftTabs1.TabCollection(sftTabs1.Current).Tag1 If Not f Is Nothing Then f.Activate() End If End If End Sub Private Sub MainWindow_MdiChildActivate(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.MdiChildActivate ' An MDI child window is being activated, make the appropriate tab active Dim iTab As Integer = -1 For Each t As TabClass In sftTabs1.TabCollection If t.Tag1 Is ActiveMdiChild Then iTab = t.Index Exit For End If Next sftTabs1.Current = iTab End Sub End Class