USING Progress.Lang.*.
USING Progress.Windows.Form.
USING System.Windows.Forms.DialogResult FROM ASSEMBLY.

BLOCK-LEVEL ON ERROR UNDO, THROW.

CLASS Form1 INHERITS Form: 
    DEFINE PRIVATE VARIABLE label1 AS System.Windows.Forms.Label NO-UNDO.
    DEFINE PRIVATE VARIABLE m_VirtualUI AS CLASS Cybele.Thinfinity.VirtualUI NO-UNDO.

    DEFINE PRIVATE VARIABLE BtnDownload AS System.Windows.Forms.Button NO-UNDO.
    DEFINE PRIVATE VARIABLE BtnUpload AS System.Windows.Forms.Button NO-UNDO.
    DEFINE PRIVATE VARIABLE BtnSaveFile AS System.Windows.Forms.Button NO-UNDO.
    DEFINE PRIVATE VARIABLE BtnOpenFile AS System.Windows.Forms.Button NO-UNDO.
    DEFINE PRIVATE VARIABLE CheckStdDialogs AS System.Windows.Forms.CheckBox NO-UNDO.
	DEFINE PRIVATE VARIABLE components AS System.ComponentModel.IContainer NO-UNDO.
    DEFINE PRIVATE VARIABLE OpenFileDlg AS System.Windows.Forms.OpenFileDialog NO-UNDO.
    DEFINE PRIVATE VARIABLE SaveFileDlg AS System.Windows.Forms.SaveFileDialog NO-UNDO.
    DEFINE PRIVATE VARIABLE TxtUploadDir AS System.Windows.Forms.TextBox NO-UNDO.
	
    METHOD PRIVATE VOID StartVirtualUI():
        // Create VirtualUI instance:
        m_VirtualUI = NEW Cybele.Thinfinity.VirtualUI().
        m_VirtualUI:Enabled = TRUE.
        
        // To run in dev mode, under Progress Developer Studio, uncomment these lines:
        //m_VirtualUI:DevMode = TRUE.
        //m_VirtualUI:DevServer:Enabled = TRUE.
        
        // Start VirtualUI:
        m_VirtualUI:Start(30).
        
        // Attach event handlers:
        m_VirtualUI:OnUploadEnd:Subscribe(THIS-OBJECT:VirtualUI_UploadEnd).
    END METHOD.

    // OnUploadEnd event handler
    METHOD PRIVATE VOID VirtualUI_UploadEnd( INPUT sender AS System.Object, INPUT e AS Cybele.Thinfinity.UploadEndArgs ):
        MESSAGE e:Filename VIEW-AS ALERT-BOX INFORMATION BUTTONS OK TITLE "UploadEnd".
    END METHOD.

    CONSTRUCTOR PUBLIC Form1 ( ):
        InitializeComponent().
        
        // Start VirtualUI
        StartVirtualUI().

        THIS-OBJECT:ComponentsCollection:Add(THIS-OBJECT:components).
        CATCH e AS Progress.Lang.Error:
            UNDO, THROW e.
        END CATCH.
    END CONSTRUCTOR.
    
    @VisualDesigner.
    METHOD PRIVATE VOID Form1_FormClosed( INPUT sender AS System.Object, INPUT e AS System.Windows.Forms.FormClosedEventArgs ):
       QUIT.
    END METHOD.

	@VisualDesigner.
	METHOD PRIVATE VOID BtnDownload_Click( INPUT sender AS System.Object, INPUT e AS System.EventArgs ):
        // Save current StdDialogs setting:
		DEFINE VARIABLE oldStdDialogs AS LOGICAL NO-UNDO.
		oldStdDialogs = m_VirtualUI:StdDialogs.
		
		// Set StdDialogs to TRUE to select a file from Server:
		m_VirtualUI:StdDialogs = TRUE.
		
		// Call OpenFileDialog to select file to download:
        DEFINE VARIABLE dlgResult AS CLASS DialogResult NO-UNDO.
        WAIT-FOR OpenFileDlg:ShowDialog() SET dlgResult.
        IF dlgResult = DialogResult:Ok THEN
           // Download selected file:
           m_VirtualUI:DownloadFile(OpenFileDlg:FileName).
		
		// Restore StdDialogs previous setting:
		m_VirtualUI:StdDialogs = oldStdDialogs.
	END METHOD.

	@VisualDesigner.
	METHOD PRIVATE VOID BtnUpload_Click( INPUT sender AS System.Object, INPUT e AS System.EventArgs ):		
		m_VirtualUI:UploadFile(TxtUploadDir:Text).
	END METHOD.

	@VisualDesigner.
	METHOD PRIVATE VOID BtnOpenFile_Click( INPUT sender AS System.Object, INPUT e AS System.EventArgs ):
	    DEFINE VARIABLE dlgResult AS CLASS DialogResult NO-UNDO.
	    WAIT-FOR OpenFileDlg:ShowDialog() SET dlgResult.
	    IF dlgResult = DialogResult:Ok THEN
	       MESSAGE OpenFileDlg:FileName VIEW-AS ALERT-BOX INFORMATION BUTTONS OK TITLE "OpenDialog Filename".
	END METHOD.

	@VisualDesigner.
	METHOD PRIVATE VOID BtnSaveFile_Click( INPUT sender AS System.Object, INPUT e AS System.EventArgs ):
        DEFINE VARIABLE dlgResult AS CLASS DialogResult NO-UNDO.
        WAIT-FOR SaveFileDlg:ShowDialog() SET dlgResult.
        IF dlgResult = DialogResult:Ok THEN
           MESSAGE SaveFileDlg:FileName VIEW-AS ALERT-BOX INFORMATION BUTTONS OK TITLE "SaveDialog Filename".
	END METHOD.

	@VisualDesigner.
	METHOD PRIVATE VOID CheckStdDialogs_CheckedChanged( INPUT sender AS System.Object, INPUT e AS System.EventArgs ):
		m_VirtualUI:StdDialogs = CheckStdDialogs:Checked.
	END METHOD.

    METHOD PRIVATE VOID InitializeComponent(  ):
        
        /* NOTE: The following method is automatically generated.
        
        We strongly suggest that the contents of this method only be modified using the
        Visual Designer to avoid any incompatible modifications.
        
        Modifying the contents of this method using a code editor will invalidate any support for this file. */
        THIS-OBJECT:BtnDownload = NEW System.Windows.Forms.Button().
        THIS-OBJECT:BtnUpload = NEW System.Windows.Forms.Button().
        THIS-OBJECT:BtnSaveFile = NEW System.Windows.Forms.Button().
        THIS-OBJECT:BtnOpenFile = NEW System.Windows.Forms.Button().
        THIS-OBJECT:CheckStdDialogs = NEW System.Windows.Forms.CheckBox().
        THIS-OBJECT:OpenFileDlg = NEW System.Windows.Forms.OpenFileDialog().
        THIS-OBJECT:SaveFileDlg = NEW System.Windows.Forms.SaveFileDialog().
        THIS-OBJECT:label1 = NEW System.Windows.Forms.Label().
        THIS-OBJECT:TxtUploadDir = NEW System.Windows.Forms.TextBox().
        THIS-OBJECT:SuspendLayout().
        /*  */
        /* BtnDownload */
        /*  */
        THIS-OBJECT:BtnDownload:Location = NEW System.Drawing.Point(12, 186).
        THIS-OBJECT:BtnDownload:Name = "BtnDownload".
        THIS-OBJECT:BtnDownload:Size = NEW System.Drawing.Size(87, 23).
        THIS-OBJECT:BtnDownload:TabIndex = 4.
        THIS-OBJECT:BtnDownload:Text = "DownloadFile".
        THIS-OBJECT:BtnDownload:UseCompatibleTextRendering = TRUE.
        THIS-OBJECT:BtnDownload:UseVisualStyleBackColor = TRUE.
        THIS-OBJECT:BtnDownload:Click:Subscribe(THIS-OBJECT:BtnDownload_Click).
        /*  */
        /* BtnUpload */
        /*  */
        THIS-OBJECT:BtnUpload:Location = NEW System.Drawing.Point(12, 135).
        THIS-OBJECT:BtnUpload:Name = "BtnUpload".
        THIS-OBJECT:BtnUpload:Size = NEW System.Drawing.Size(87, 23).
        THIS-OBJECT:BtnUpload:TabIndex = 3.
        THIS-OBJECT:BtnUpload:Text = "UploadFile".
        THIS-OBJECT:BtnUpload:UseCompatibleTextRendering = TRUE.
        THIS-OBJECT:BtnUpload:UseVisualStyleBackColor = TRUE.
        THIS-OBJECT:BtnUpload:Click:Subscribe(THIS-OBJECT:BtnUpload_Click).
        /*  */
        /* BtnSaveFile */
        /*  */
        THIS-OBJECT:BtnSaveFile:Location = NEW System.Drawing.Point(105, 36).
        THIS-OBJECT:BtnSaveFile:Name = "BtnSaveFile".
        THIS-OBJECT:BtnSaveFile:Size = NEW System.Drawing.Size(87, 23).
        THIS-OBJECT:BtnSaveFile:TabIndex = 2.
        THIS-OBJECT:BtnSaveFile:Text = "Save File".
        THIS-OBJECT:BtnSaveFile:UseCompatibleTextRendering = TRUE.
        THIS-OBJECT:BtnSaveFile:UseVisualStyleBackColor = TRUE.
        THIS-OBJECT:BtnSaveFile:Click:Subscribe(THIS-OBJECT:BtnSaveFile_Click).
        /*  */
        /* BtnOpenFile */
        /*  */
        THIS-OBJECT:BtnOpenFile:Location = NEW System.Drawing.Point(12, 36).
        THIS-OBJECT:BtnOpenFile:Name = "BtnOpenFile".
        THIS-OBJECT:BtnOpenFile:Size = NEW System.Drawing.Size(87, 23).
        THIS-OBJECT:BtnOpenFile:TabIndex = 1.
        THIS-OBJECT:BtnOpenFile:Text = "Open File".
        THIS-OBJECT:BtnOpenFile:UseCompatibleTextRendering = TRUE.
        THIS-OBJECT:BtnOpenFile:UseVisualStyleBackColor = TRUE.
        THIS-OBJECT:BtnOpenFile:Click:Subscribe(THIS-OBJECT:BtnOpenFile_Click).
        /*  */
        /* CheckStdDialogs */
        /*  */
        THIS-OBJECT:CheckStdDialogs:Location = NEW System.Drawing.Point(12, 12).
        THIS-OBJECT:CheckStdDialogs:Name = "CheckStdDialogs".
        THIS-OBJECT:CheckStdDialogs:Size = NEW System.Drawing.Size(154, 18).
        THIS-OBJECT:CheckStdDialogs:TabIndex = 0.
        THIS-OBJECT:CheckStdDialogs:Text = "Standard dialogs".
        THIS-OBJECT:CheckStdDialogs:UseCompatibleTextRendering = TRUE.
        THIS-OBJECT:CheckStdDialogs:UseVisualStyleBackColor = TRUE.
        THIS-OBJECT:CheckStdDialogs:CheckedChanged:Subscribe(THIS-OBJECT:CheckStdDialogs_CheckedChanged).
        /*  */
        /* label1 */
        /*  */
        THIS-OBJECT:label1:Location = NEW System.Drawing.Point(12, 91).
        THIS-OBJECT:label1:Name = "label1".
        THIS-OBJECT:label1:Size = NEW System.Drawing.Size(310, 15).
        THIS-OBJECT:label1:TabIndex = 5.
        THIS-OBJECT:label1:Text = "Server directory for Upload (leave empty to use default):".
        THIS-OBJECT:label1:UseCompatibleTextRendering = TRUE.
        /*  */
        /* TxtUploadDir */
        /*  */
        THIS-OBJECT:TxtUploadDir:Location = NEW System.Drawing.Point(12, 109).
        THIS-OBJECT:TxtUploadDir:Name = "TxtUploadDir".
        THIS-OBJECT:TxtUploadDir:Size = NEW System.Drawing.Size(291, 20).
        THIS-OBJECT:TxtUploadDir:TabIndex = 6.
        /*  */
        /* Form1 */
        /*  */
        THIS-OBJECT:ClientSize = NEW System.Drawing.Size(334, 248).
        THIS-OBJECT:Controls:Add(THIS-OBJECT:TxtUploadDir).
        THIS-OBJECT:Controls:Add(THIS-OBJECT:label1).
        THIS-OBJECT:Controls:Add(THIS-OBJECT:BtnDownload).
        THIS-OBJECT:Controls:Add(THIS-OBJECT:BtnUpload).
        THIS-OBJECT:Controls:Add(THIS-OBJECT:CheckStdDialogs).
        THIS-OBJECT:Controls:Add(THIS-OBJECT:BtnSaveFile).
        THIS-OBJECT:Controls:Add(THIS-OBJECT:BtnOpenFile).
        THIS-OBJECT:FormBorderStyle = System.Windows.Forms.FormBorderStyle:FixedSingle.
        THIS-OBJECT:MaximizeBox = FALSE.
        THIS-OBJECT:Name = "Form1".
        THIS-OBJECT:Text = "VirtualUI demo".
        THIS-OBJECT:FormClosed:Subscribe(THIS-OBJECT:Form1_FormClosed).
        THIS-OBJECT:ResumeLayout(FALSE).
        THIS-OBJECT:PerformLayout().
        CATCH e AS Progress.Lang.Error:
            UNDO, THROW e.
        END CATCH.
    END METHOD.
END CLASS.