Required plugins for this example: MBS MacBase Plugin, MBS MacExtras Plugin, MBS MacCocoa Plugin, MBS Main Plugin
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /MacExtras/MAAttachedWindow/MAAttachedWindow Demo
Class App Inherits Application
End Class
Class Window1 Inherits Window
Control LogoCanvas Inherits Canvas
ControlInstance LogoCanvas Inherits Canvas
EventHandler Sub MouseExit()
Call CloseWindow()
End EventHandler
EventHandler Sub MouseMove(X As Integer, Y As Integer)
Call ShowWindow()
End EventHandler
EventHandler Sub Open()
Me.Backdrop = LogoMBS(256)
End EventHandler
End Control
EventHandler Sub Close()
Quit()
End EventHandler
Function CloseWindow() As Boolean
If not (MAAttachedWindow = Nil) Then
Self.NSWindowMBS.removeChildWindow(MAAttachedWindow)
Dim NSWindowAnimator as NSWindowMBS = MAAttachedWindow.animator()
If (NSWindowAnimator = Nil) Then
MAAttachedWindow.Close()
Else
NSWindowAnimator.alphaValue = 0.0
End If
MAAttachedWindow = Nil
End If
Return True
Exception
Return False
End Function
Function ShowWindow() As Boolean
If (MAAttachedWindow = Nil) Then
Dim NSWindow as NSWindowMBS = Self.NSWindowMBS
Dim MAPosition as Integer = MAAttachedWindowMBS.MAPositionBottom
Dim MADistance as Double = 10.0
Dim NSPoint as New NSPointMBS(Self.Width / 2, 10)
Dim NSTextField as New NSTextFieldMBS(10, 0, 200, 92)
NSTextField.StringValue = "This is the logo of awesome MonkeyBread Software." + EndOfLine + EndOfLine + "Many thanks to Matt Gemmell for creating MAAttachedWindow."
NSTextField.Editable = False
NSTextField.textColor = NSColorMBS.whiteColor()
NSTextField.backgroundColor = NSColorMBS.blackColor()
NSTextField.Bordered = False
Dim NSView as New NSViewMBS(0, 0, 220, 102)
NSView.addSubview(NSTextField)
MAAttachedWindow = MAAttachedWindowMBS.attachedWindow(NSView, NSPoint, NSWindow, MAPosition, MADistance)
MAAttachedWindow.borderColor = NSColorMBS.whiteColor
MAAttachedWindow.backgroundColor = NSColorMBS.blackColor
MAAttachedWindow.viewMargin = 4
MAAttachedWindow.borderWidth = 3
MAAttachedWindow.cornerRadius = 8
MAAttachedWindow.drawsRoundCornerBesideArrow = True
MAAttachedWindow.arrowBaseWidth = 20
MAAttachedWindow.arrowHeight = 15
MAAttachedWindow.hasArrow = True
MAAttachedWindow.alphaValue = 0.0
NSWindow.addChildWindow(MAAttachedWindow, NSWindowMBS.NSWindowAbove)
Dim NSWindowAnimator as NSWindowMBS = MAAttachedWindow.animator()
If (NSWindowAnimator = Nil) Then
MAAttachedWindow.alphaValue = 0.9
Else
NSWindowAnimator.alphaValue = 0.9
End If
MAAttachedWindow.Show()
Self.Show() //a 'hack' to not set the MAAttachedWindow to the front
End If
Return True
Exception
Return False
End Function
Note "About"
Property MAAttachedWindow As MAAttachedWindowMBS
End Class