ExternalTopView.st
author Claus Gittinger <cg@exept.de>
Wed, 17 Feb 1999 00:25:00 +0100
changeset 1101 712810d0e8a9
parent 1099 7e51aa0a78f3
child 1102 1ee9a1bc9241
permissions -rw-r--r--
checkin from browser

"
 COPYRIGHT (c) 1999 by eXept Software AG
              All Rights Reserved

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.
"


TopView subclass:#ExternalTopView
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'Graphics-Support'
!

!ExternalTopView class methodsFor:'documentation'!

copyright
"
 COPYRIGHT (c) 1999 by eXept Software AG
              All Rights Reserved

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.
"

!

documentation
"
    Represents a view as created by some other application.
    This is a support-class to allow ST/X views to be created
    inside other applications.

    A simple demoApplication is found in goodies/stxInExternalWindow.

    [author:]
        Claus Gittinger (cg@exept.de)

    [see also:]

    [instance variables:]
        none added here

    [class variables:]
        none added here
"
! !

!ExternalTopView class methodsFor:'instance creation'!

newWithID:anAlienWindowID
    ^ self new setWindowID:anAlienWindowID
! !

!ExternalTopView methodsFor:'private'!

checkWindowStillAlive
    "check for a destroyed topView 
     (must poll, since we do not get any events from X)"

    |prevHandler ok|

"/    Transcript showCR:'check ...'.

    ok := device isValidWindowId:drawableId.

    ok ifFalse:[
"/        Transcript showCR:'no ...'.
        self destroyed.
    ] ifTrue:[
        Processor 
            addTimedBlock:[self checkWindowStillAlive]
            for:nil
            afterMilliseconds:1000
    ]
! !

!ExternalTopView methodsFor:'private accessing'!

setWindowID:aWindowID
    drawableId := aWindowID.
    realized := shown := true.
! !

!ExternalTopView methodsFor:'queries'!

isExternalTopView
    "return true, if this is an external topView - always true here"

    ^ true
! !

!ExternalTopView methodsFor:'redefined'!

destroyView
    "never destroyed by ST/X - instead, the view is under
     control of the host application ..."

    realized := false.
    drawableId := nil.
!

open
    "redefined to start a watch timeout for closed windows;
     this is required, since we wont get any closeRequest event for
     external windows (as all of its events are handled by the alien
     application)"

    super open.
    self checkWindowStillAlive
!

unmap
    "redefined as a noop;
     ExternalTopViews are never unmapped by ST/X - instead, the view is under
     control of the host application ..."


! !

!ExternalTopView class methodsFor:'documentation'!

version
    ^ '$Header: /cvs/stx/stx/libview2/ExternalTopView.st,v 1.8 1999-02-16 23:25:00 cg Exp $'
! !