"{ Package: 'stx:libtool' }"
ToolApplicationModel subclass:#WorkspaceApplication
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'Interface-Smalltalk'
!
!WorkspaceApplication class methodsFor:'interface specs'!
windowSpec
"This resource specification was automatically generated
by the UIPainter of ST/X."
"Do not manually edit this!! If it is corrupted,
the UIPainter may not be able to read the specification."
"
UIPainter new openOnClass:WorkspaceApplication andSelector:#windowSpec
WorkspaceApplication new openInterface:#windowSpec
WorkspaceApplication open
"
<resource: #canvas>
^
#(#FullSpec
#name: #windowSpec
#window:
#(#WindowSpec
#label: 'Workspace'
#name: 'Workspace'
#min: #(#Point 10 10)
#max: #(#Point 1024 768)
#bounds: #(#Rectangle 170 332 602 573)
#menu: #mainMenu
)
#component:
#(#SpecCollection
#collection: #(
#(#ArbitraryComponentSpec
#name: 'WorkspaceView'
#layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
#hasHorizontalScrollBar: true
#hasVerticalScrollBar: true
#miniScrollerVertical: false
#hasBorder: false
#component: #Workspace
)
)
)
)
! !
!WorkspaceApplication class methodsFor:'menu specs'!
mainMenu
"This resource specification was automatically generated
by the MenuEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the MenuEditor may not be able to read the specification."
"
MenuEditor new openOnClass:WorkspaceApplication andSelector:#mainMenu
(Menu new fromLiteralArrayEncoding:(WorkspaceApplication mainMenu)) startUp
"
<resource: #menu>
^
#(#Menu
#(
#(#MenuItem
#label: 'File'
#translateLabel: true
#submenu:
#(#Menu
#(
#(#MenuItem
#label: 'New'
#translateLabel: true
#value: #menuNew
#isVisible: false
)
#(#MenuItem
#label: '-'
#isVisible: false
)
#(#MenuItem
#label: 'Load File...'
#translateLabel: true
#value: #menuLoad
)
#(#MenuItem
#label: '-'
)
#(#MenuItem
#label: 'Save As...'
#translateLabel: true
#value: #menuSaveAs
)
#(#MenuItem
#label: '-'
)
#(#MenuItem
#label: 'Exit'
#translateLabel: true
#value: #closeRequest
)
)
nil
nil
)
)
#(#MenuItem
#label: 'Edit'
#translateLabel: true
#submenu:
#(#Menu
#(
#(#MenuItem
#label: 'Copy'
#translateLabel: true
#value: #copySelection
)
#(#MenuItem
#label: 'Cut'
#translateLabel: true
#value: #cutSelection
)
#(#MenuItem
#label: 'Paste'
#translateLabel: true
#value: #paste
)
)
nil
nil
)
)
#(#MenuItem
#label: 'Smalltalk'
#translateLabel: true
#submenu:
#(#Menu
#(
#(#MenuItem
#label: 'DoIt'
#translateLabel: true
#value: #doIt
)
#(#MenuItem
#label: 'PrintIt'
#translateLabel: true
#value: #printIt
)
#(#MenuItem
#label: 'InspectIt'
#translateLabel: true
#value: #inspectIt
)
#(#MenuItem
#label: '-'
)
#(#MenuItem
#label: 'Browse'
#translateLabel: true
#value: #browseIt
)
)
nil
nil
)
)
#(#MenuItem
#label: 'Help'
#translateLabel: true
#startGroup: #right
#submenu:
#(#Menu
#(
#(#MenuItem
#label: 'Documentation'
#translateLabel: true
#value: #openDocumentation
)
#(#MenuItem
#label: '-'
)
#(#MenuItem
#label: 'About this Application'
#translateLabel: true
#value: #openAboutThisApplication
)
)
nil
nil
)
)
)
nil
nil
)
! !
!WorkspaceApplication methodsFor:'accessing'!
workspaceView
^ (builder componentAt:#WorkspaceView)
! !
!WorkspaceApplication methodsFor:'initialization & release'!
closeRequest
(self askIfModified:'Close without saving ?' yesButton:'Close') ifFalse:[
^ self
].
^ super closeRequest
!
postBuildWith:aBuilder
"This is a hook method generated by the Browser.
It will be invoked during the initialization of your app/dialog,
after all of the visual components have been built,
but BEFORE the top window is made visible.
Add any app-specific actions here (reading files, setting up
values etc.)"
"/ add any code here ...
^ super postBuildWith:aBuilder
! !
!WorkspaceApplication methodsFor:'menu actions'!
browseIt
self workspaceView browseIt
!
copySelection
self workspaceView copySelection
!
cutSelection
self workspaceView cutSelection
!
doIt
self workspaceView doIt
!
inspectIt
self workspaceView inspectIt
!
menuLoad
|file|
(self askIfModified:'Text was modified. Load anyway ?' yesButton:'Load').
file := Dialog requestFileName:'Load file:'.
file size > 0 ifTrue:[
self workspaceView contents:file asFilename contentsOfEntireFile.
]
!
menuSaveAs
|file|
file := Dialog
requestFileName:'Save file:'
default:'file.wsp'.
file size > 0 ifTrue:[
self workspaceView saveAs:file.
]
!
openDocumentation
"opens the documentation file"
self openHTMLDocument: 'tools/misc/TOP.html#WORKSPACE'
!
paste
self workspaceView paste
!
printIt
self workspaceView printIt
! !
!WorkspaceApplication methodsFor:'private'!
askIfModified:question yesButton:yesButtonText
"tell user, that code has been modified - let her confirm"
|textView|
textView := self workspaceView.
(textView modified not or:[textView contentsWasSaved]) ifTrue:[
^ true
].
(Dialog
confirm:(resources string:question) withCRs
yesLabel:(resources at:yesButtonText)
noLabel:(resources at:'Cancel'))
ifTrue:[
"/ reset modified flag so question is asked only once
textView modified:false.
^ true
].
^ false
"Modified: 2.10.1997 / 14:23:47 / stefan"
! !
!WorkspaceApplication class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libtool/WorkspaceApplication.st,v 1.2 2001-09-12 16:16:20 cg Exp $'
! !