Imports System.Windows.Forms

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.ApplicationServices.Application
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Windows
Imports AcAPP = Autodesk.AutoCAD.ApplicationServices.Application



Public Class ClassePrincipale

    Public PS As PaletteSet

    Private maPalette As Fen_UserControl

    ' Ma palette de présentation MaPP
    <CommandMethod("MaPP")> _
    Public Sub MaPP()

        Dim acDoc As Document = DocumentManager.MdiActiveDocument

        ' active la gestion des évènements
        AddHandler AcAPP.DocumentManager.DocumentActivated, AddressOf docDocumentActif
        AddHandler acDoc.CommandEnded, AddressOf docFinCommande


        ' si la palette n'existe pas
        If (PS = Nothing) Then

            PS = New PaletteSet("Palette des presentations")
            maPalette = New Fen_UserControl()
            PS.Add("Palette des presentations", maPalette)

        End If

        PS.Visible = True

        'rempli la liste des présentations
        maPalette.RemplissageListe()

    End Sub


    'Evènement après une commande
    Public Sub docFinCommande(ByVal senderObj As Object, _
                                    ByVal e As CommandEventArgs)

        'MsgBox(e.GlobalCommandName.ToString)
        ' si nouvelle présentation
        If e.GlobalCommandName.ToString = "LAYOUT_CONTROL" Then
            maPalette.RemplissageListe()
        End If


    End Sub


    'Evènement sur document actif
    Public Sub docDocumentActif(ByVal senderObj As Object, _
    ByVal docColDocActEvtArgs As DocumentCollectionEventArgs)

        Dim acDoc As Document = DocumentManager.MdiActiveDocument

        ' on supprime la palette pour la reconstruire après
        ' afin de mettre à jour le contenu et de reéactiver les évènements dans le document courant
        PS.Visible = False
        PS = Nothing

        RemoveHandler AcAPP.DocumentManager.DocumentActivated, AddressOf docDocumentActif
        RemoveHandler acDoc.CommandEnded, AddressOf docFinCommande

        MaPP()

    End Sub

End Class
