"
COPYRIGHT (c) 1991 by Claus Gittinger
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.
"
"{ Package: 'penk:NewFileBrowser' }"
AbstractNewFileBrowser subclass:#NewFileBrowser
instanceVariableNames:'directoryContentsHolder fileEntryFieldHolder
variableHorizontalPanel variableVerticalPanel directoryTreePage
noteBookApplicationPage enableDirectoryUp enableForward
enableBack'
classVariableNames:'DefaultIcon Icons DefaultCommandPerMIME'
poolDictionaries:''
category:'Interface-Browsers'
!
!NewFileBrowser class methodsFor:'documentation'!
copyright
"
COPYRIGHT (c) 1991 by Claus Gittinger
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
"
NewFileBrowser is based on Filebrowser created by Claus Gittinger
WARNING: files edited with FileBrowser will have leading spaces (multiple-8)
being replaced by tabs. If tabs are to be preserved at other
positions (for example, sendmail-config files) they will be
corrupt after being written.
[instance variables]:
checkDelta <Integer> number of seconds of check interval
(looks ever so often if shown directory
has changed). You may make this number
higher, if your network-times are
incorrect and thus, the filebrowser
checks too often.
compressTabs <Boolean> if true, leading spaces will be
replaced by tabs when saving text
some of the defaults (long/short list etc.) can be set by the resource file;
see FileBrowser>>initialize for more details..
[author:]
Christian Penk
[start with:]
NewFileBrowser open
"
! !
!NewFileBrowser class methodsFor:'instance creation'!
on:aDirectoryPath
"return a new NewFileBrowser in a pathname"
| instance|
instance := self new.
instance currentFileNameHolder value:aDirectoryPath.
^ instance
"/ | instance builder|
"/
"/ builder := super open.
"/ instance := builder application.
"/ instance currentFileNameHolder value:aDirectoryPath.
"/ ^ instance
"
(NewFileBrowser on:'/usr/local/bin') open
(NewFileBrowser on:'/etc' ) open
(NewFileBrowser on:'..' ) open
(NewFileBrowser on:'.' ) open
"
!
open
"start a new NewFileBrowser"
| instance |
instance := self on:(Filename currentDirectory asAbsoluteFilename).
^ instance open.
"
NewFileBrowser openOn:'/etc' withExtent:800@600
NewFileBrowser openOn:'..' withExtent:200@300
NewFileBrowser openOn:'.' withExtent:1024@768
"
!
openOn:aDirectoryPath
"start a new NewFileBrowser in a pathname"
| instance|
instance := self on:aDirectoryPath.
^ instance open.
"
NewFileBrowser openOn:'/etc'
NewFileBrowser openOn:'..'
NewFileBrowser openOn:'.'
"
!
openOn:aDirectoryPath withExtent:extent
"start a new NewFileBrowser in a pathname"
| instance builder|
instance := self on:aDirectoryPath.
builder := instance open.
builder window extent:extent.
^ instance
"
NewFileBrowser openOn:'/etc' withExtent:800@600
NewFileBrowser openOn:'..' withExtent:200@300
NewFileBrowser openOn:'.' withExtent:1024@768
"
!
openWithAspects:someAspects withExtent:extent
"start a new NewFileBrowser in a pathname"
|dir|
dir := someAspects at:#currentFileNameHolder ifAbsent:nil.
^ self openOn:(dir value) withExtent:extent
"
NewFileBrowser openOn:'/etc' withExtent:800@600
NewFileBrowser openOn:'..' withExtent:200@300
NewFileBrowser openOn:'.' withExtent:1024@768
"
! !
!NewFileBrowser class methodsFor:'class initialization'!
clearHistoryIcon
^ Icon deleteIcon
!
icons
Icons isNil ifTrue:[
self initializeIcons
].
^ Icons
"
Icons := nil.
"
!
initializeDefaultCommands
DefaultCommandPerMIME := Dictionary new.
DefaultCommandPerMIME at:'application/x-tar-compressed' put:'gunzip < %1 | tar tvf -'.
DefaultCommandPerMIME at:'application/pdf' put:'acroread %1'.
"
self initializeDefaultCommands
"
!
initializeIcons
|resources|
resources := self classResources.
Icons := Dictionary new.
#(
"/ internal-type to icon mappings.
(#directory 'ICON_DIRECTORY' 'tiny_yellow_dir.xpm' )
(#directoryLocked 'ICON_DIRECTORY_LOCKED' 'tiny_yellow_dir_locked.xpm')
(#directoryLink 'ICON_DIRECTORY_LINK' 'tiny_yellow_dir_link.xpm' )
(#file 'ICON_FILE' 'tiny_file_plain.xpm' )
(#fileLink 'ICON_FILE_LINK' 'tiny_file_link.xpm' )
(#fileLocked 'ICON_FILE_LOCKED' 'tiny_file_lock.xpm' )
(#imageFile 'ICON_IMAGE_FILE' 'tiny_file_pix.xpm' )
(#textFile 'ICON_TEXT_FILE' 'tiny_file_text.xpm' )
(#executableFile 'ICON_EXECUTABLEFILE' 'tiny_file_exec.xpm' )
(#directoryUp 'ICON_DIRECTORYUP' 'tiny_yellow_dir_up.xpm' )
"/ mime-type to icon mappings.
('text/plain' nil 'tiny_file_text.xpm' )
('text/html' nil 'tiny_file_text.xpm' )
('application/postscript' nil 'tiny_file_st.xpm' )
('application/x-smalltalk-source' nil 'tiny_file_st.xpm' )
('application/x-java-source' nil 'tiny_file_java.xpm' )
('image' nil 'tiny_file_pix.xpm' )
('audio' nil 'tiny_file_sound.xpm' )
) do:[:entry |
|key resource defaultName nm img|
key := entry at:1.
resource := entry at:2.
defaultName := entry at:3.
resource notNil ifTrue:[
nm := resources at:resource default:nil.
].
nm isNil ifTrue:[
nm := 'xpmBitmaps/document_images/' , defaultName
].
Icons at:key put:(Smalltalk imageFromFileNamed:nm forClass:self).
]
"
self initializeIcons
"
! !
!NewFileBrowser class methodsFor:'defaults'!
defaultIcon
"return the file browsers default window icon"
<resource: #style (#FILEBROWSER_ICON #FILEBROWSER_ICON_FILE)>
|nm i res|
(i := DefaultIcon) isNil ifTrue:[
res := self classResources.
i := res at:'FILEBROWSER_ICON' default:nil.
i isNil ifTrue:[
nm := res at:'FILEBROWSER_ICON_FILE' default:'FBrowser.xbm'.
i := Smalltalk imageFromFileNamed:nm forClass:self.
i isNil ifTrue:[
i := StandardSystemView defaultIcon
]
].
i notNil ifTrue:[
DefaultIcon := i := i onDevice:Display
]
].
^ i
! !
!NewFileBrowser 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:NewFileBrowser andSelector:#windowSpec
NewFileBrowser new openInterface:#windowSpec
NewFileBrowser open
"
<resource: #canvas>
^
#(#FullSpec
#name: #windowSpec
#window:
#(#WindowSpec
#label: #NewFileBrowser
#name: #NewFileBrowser
#min: #(#Point 10 10)
#max: #(#Point 1152 864)
#bounds: #(#Rectangle 220 170 1091 971)
#menu: #mainMenu
)
#component:
#(#SpecCollection
#collection: #(
#(#MenuPanelSpec
#name: 'ToolBar'
#layout: #(#LayoutFrame 0 0 0 0 0 1 28 0)
#menu: #toolBarMainMenu
#textDefault: true
)
#(#FilenameInputFieldSpec
#name: 'FilenameEntryField'
#layout: #(#LayoutFrame 0 0 28 0 0 1 48 0)
#model: #fileEntryFieldHolder
#style: #(#FontDescription #helvetica #bold #roman 12)
#acceptOnPointerLeave: false
#postBuildCallback: #postBuildPathView:
)
#(#VariableVerticalPanelSpec
#name: 'VariableVerticalPanel'
#layout: #(#LayoutFrame 0 0.0 48 0 0 1.0 -20 1)
#showHandle: true
#snapMode: #both
#handlePosition: #left
#component:
#(#SpecCollection
#collection: #(
#(#VariableHorizontalPanelSpec
#name: 'VariableHorizontalPanel'
#showHandle: true
#snapMode: #both
#handlePosition: #left
#component:
#(#SpecCollection
#collection: #(
#(#SubCanvasSpec
#name: 'DirectoryTreeBrowser'
#hasHorizontalScrollBar: false
#hasVerticalScrollBar: false
#majorKey: #DirectoryTreeBrowser
#createNewApplication: true
#createNewBuilder: true
)
#(#SubCanvasSpec
#name: 'DirectoryContentsBrowser'
#hasHorizontalScrollBar: false
#hasVerticalScrollBar: false
#majorKey: #DirectoryContentsBrowser
#createNewApplication: true
#createNewBuilder: true
)
)
)
#handles: #(#Any 0.283375 1.0)
#postBuildCallback: #postBuildHorizontalPanel:
)
#(#SubCanvasSpec
#name: 'NoteBookApplication'
#hasHorizontalScrollBar: false
#hasVerticalScrollBar: false
#majorKey: #NoteBookApplication
#createNewApplication: true
#createNewBuilder: true
)
)
)
#handles: #(#Any 0.5 1.0)
#postBuildCallback: #postBuildVerticalPanel:
)
#(#LabelSpec
#label: 'NotifyLabel'
#name: 'NotifyLabel'
#layout: #(#LayoutFrame 0 0.0 -20 1 0 1.0 0 1.0)
#level: -1
#translateLabel: true
#labelChannel: #notifyChannel
#adjust: #left
)
)
)
)
! !
!NewFileBrowser class methodsFor:'menu specs'!
browserMenu
"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:AbstractNewFileBrowser andSelector:#browserMenu
(Menu new fromLiteralArrayEncoding:(AbstractNewFileBrowser browserMenu)) startUp
"
<resource: #menu>
^
#(#Menu
#(
#(#MenuItem
#label: 'Spawn'
#translateLabel: true
#value: #doSpawn
)
#(#MenuItem
#label: 'Add Terminal View'
#translateLabel: true
#value: #doAddTerminal
)
#(#MenuItem
#label: '-'
)
#(#MenuItem
#label: 'Exit'
#translateLabel: true
#value: #closeRequest
)
)
nil
nil
)
!
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:NewFileBrowser andSelector:#mainMenu
(Menu new fromLiteralArrayEncoding:(NewFileBrowser mainMenu)) startUp
"
<resource: #menu>
^
#(#Menu
#(
#(#MenuItem
#label: 'Browser'
#translateLabel: true
#submenuChannel: #browserMenu
)
#(#MenuItem
#label: 'Edit'
#translateLabel: true
#submenuChannel: #editMenu
)
#(#MenuItem
#label: 'View'
#translateLabel: true
#submenu:
#(#Menu
#(
#(#MenuItem
#label: 'View file list'
#translateLabel: true
#submenuChannel: #viewFileBrowserMenu
)
#(#MenuItem
#label: 'View directory tree'
#translateLabel: true
#indication: #showDirectoryTreeHolder
)
#(#MenuItem
#label: 'View directory description'
#translateLabel: true
#indication: #viewDirectoryDescription
)
#(#MenuItem
#label: '-'
)
#(#MenuItem
#label: 'Show file contents'
#translateLabel: true
#value: #doShowFileContents
)
#(#MenuItem
#label: 'Open Terminal'
#translateLabel: true
#value: #doAddTerminal
)
#(#MenuItem
#label: '-'
)
#(#MenuItem
#label: 'Encoding...'
#translateLabel: true
#value: #fileEncoding
)
#(#MenuItem
#label: 'DOS EndOfLine Mode'
#translateLabel: true
#indication: #dosEOLMode
)
#(#MenuItem
#label: '-'
)
#(#MenuItem
#label: 'Update'
#translateLabel: true
)
)
nil
nil
)
)
#(#MenuItem
#label: 'Tools'
#translateLabel: true
#submenuChannel: #toolsMenuSpec
)
#(#MenuItem
#label: 'CVS'
#translateLabel: true
#submenu:
#(#Menu
#(
#(#MenuItem
#label: 'Update selected files/directories'
#translateLabel: true
#value: #cvsUpdateSelection
#enabled: #hasSelection
)
#(#MenuItem
#label: 'Update directory local'
#value: #cvsUpdateAll
#translateLabel: true
)
#(#MenuItem
#label: 'Update directory recursive'
#value: #cvsUpdateAllRecursive
#translateLabel: true
)
#(#MenuItem
#label: '-'
)
#(#MenuItem
#label: 'Commit...'
#value: #cvsCommit
#translateLabel: true
)
#(#MenuItem
#label: 'Add && Commit...'
#value: #cvsAddAndCommit
#translateLabel: true
)
#(#MenuItem
#label: '-'
)
#(#MenuItem
#label: 'Remove file && CVS Container...'
#translateLabel: true
#value: #cvsRemoveFileAndCVSContainer
#enabled: #canRemoveCVSContainer
)
)
nil
nil
)
)
#(#MenuItem
#label: 'Help'
#translateLabel: true
#startGroup: #right
#submenu:
#(#Menu
#(
#(#MenuItem
#label: 'FileBrowser Documentation'
#translateLabel: true
#value: #':'
)
#(#MenuItem
#label: '-'
)
#(#MenuItem
#label: 'About FileBrowser...'
#translateLabel: true
)
)
nil
nil
)
)
)
nil
nil
)
!
toolBarMainMenu
"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:NewFileBrowser andSelector:#toolBarMainMenu
(Menu new fromLiteralArrayEncoding:(NewFileBrowser toolBarMainMenu)) startUp
"
<resource: #menu>
^
#(#Menu
#(
#(#MenuItem
#label: 'DirectoryUp'
#translateLabel: true
#isButton: true
#value: #doGoDirectoryUp
#enabled: #enableDirectoryUp
#labelImage: #(#ResourceRetriever #AbstractNewFileBrowser #DirectoryUpIcon)
)
#(#MenuItem
#label: ''
)
#(#MenuItem
#label: 'Back'
#translateLabel: true
#isButton: true
#value: #doBack
#enabled: #enableBack
#labelImage: #(#ResourceRetriever #ToolbarIconLibrary #undo16x16Icon)
)
#(#MenuItem
#label: 'BackHistory'
#translateLabel: true
#isButton: true
#nameKey: #BackHistory
#enabled: #enableBack
#argument: #back
#labelImage: #(#ResourceRetriever #ComboView #buttonForm)
#submenuChannel: #menuDirHistory:
)
#(#MenuItem
#label: ''
)
#(#MenuItem
#label: 'Forward'
#translateLabel: true
#isButton: true
#value: #doForward
#enabled: #enableForward
#labelImage: #(#ResourceRetriever #ToolbarIconLibrary #redo16x16Icon)
)
#(#MenuItem
#label: 'ForwardHistory'
#translateLabel: true
#isButton: true
#nameKey: #ForwardHistory
#enabled: #enableForward
#argument: #forward
#labelImage: #(#ResourceRetriever #ComboView #buttonForm)
#submenuChannel: #menuDirHistory:
)
#(#MenuItem
#label: ''
)
#(#MenuItem
#label: 'File History'
#translateLabel: true
#isButton: true
#enabled: #enableFileHistory
#labelImage: #(#ResourceRetriever nil #historyIcon)
#submenuChannel: #menuFileHistory
)
#(#MenuItem
#label: ''
)
#(#MenuItem
#label: 'Copy'
#translateLabel: true
#isButton: true
#value: #copyInDirContentsBrowser
#enabled: #hasSelection
#labelImage: #(#ResourceRetriever #ToolbarIconLibrary #copy20x20Icon)
)
#(#MenuItem
#label: 'Cut'
#translateLabel: true
#isButton: true
#value: #cutInDirContentsBrowser
#enabled: #hasSelection
#labelImage: #(#ResourceRetriever #ToolbarIconLibrary #cut20x20Icon)
)
#(#MenuItem
#label: 'Paste'
#translateLabel: true
#isButton: true
#value: #pasteInDirContentsBrowser
#enabled: #canPaste
#labelImage: #(#ResourceRetriever #ToolbarIconLibrary #paste20x20Icon)
)
#(#MenuItem
#label: 'Delete'
#translateLabel: true
#isButton: true
#value: #deleteInDirContentsBrowser
#enabled: #hasSelection
#labelImage: #(#ResourceRetriever #ToolbarIconLibrary #erase16x16Icon)
)
#(#MenuItem
#label: ''
)
#(#MenuItem
#label: 'File In'
#translateLabel: true
#isButton: true
#value: #fileFileIn
#enabled: #canFileIn
#labelImage: #(#ResourceRetriever nil #fileInIcon)
)
#(#MenuItem
#label: ''
)
#(#MenuItem
#label: 'Search file'
#translateLabel: true
#isButton: true
#value: #doOpenSearchFile
#enabled: #canFileIn
#labelImage: #(#ResourceRetriever nil #search22x22Icon)
)
#(#MenuItem
#label: 'VT100'
#translateLabel: true
#isButton: true
#value: #doAddTerminal
#labelImage: #(#ResourceRetriever nil #vt100Terminal)
)
)
nil
nil
)
!
toolsMenuSpec
"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:FileBrowser andSelector:#toolsMenuSpec
(Menu new fromLiteralArrayEncoding:(FileBrowser toolsMenuSpec)) startUp
"
<resource: #menu>
^
#(#Menu
#(
#(#MenuItem
#label: 'Shell Terminal'
#translateLabel: true
#isVisible: #canDoTerminalAndSystemIsUnix
#value: #openTerminal
#enabled: #canDoTerminal
)
#(#MenuItem
#label: 'DOS Terminal'
#translateLabel: true
#isVisible: #canDoTerminalAndSystemIsDOS
#value: #openTerminal
#enabled: #canDoTerminal
)
#(#MenuItem
#label: '-'
)
#(#MenuItem
#label: 'Changes Browser'
#translateLabel: true
#value: #openChangesBrowser
#enabled: #hasSelection
)
#(#MenuItem
#label: 'Snapshot Image Browser'
#translateLabel: true
#value: #openSnapshotImageBrowser
#enabled: #hasSnapshotSelection
)
#(#MenuItem
#label: 'Create Smalltalk Project'
#translateLabel: true
#value: #createProjectAndOpenProjectBrowser
#enabled: #canCreateNewProject
)
#(#MenuItem
#label: 'Install autoloaded'
#translateLabel: true
#value: #readAbbrevFile
#enabled: #canReadAbbrevFile
)
#(#MenuItem
#label: 'Editor'
#translateLabel: true
#value: #openEditor
#enabled: #hasSelection
)
#(#MenuItem
#label: 'HTML Reader'
#translateLabel: true
#value: #openHTMLReader
#enabled: #hasSelection
)
#(#MenuItem
#label: 'ASN1 Browser'
#translateLabel: true
#isVisible: #hasASN1
#value: #openASN1Browser
#enabled: #hasASN1AndSelection
)
#(#MenuItem
#label: 'C Browser'
#translateLabel: true
#isVisible: #hasCBrowser
#value: #openCBrowser
#enabled: #hasCBrowser
)
#(#MenuItem
#label: 'Applet Viewer'
#translateLabel: true
#isVisible: #hasJava
#value: #openAppletViewer
#enabled: #hasJavaAndSelection
)
#(#MenuItem
#label: 'Image Inspector'
#translateLabel: true
#value: #openImageInspector
#enabled: #hasSelection
)
#(#MenuItem
#label: 'Image Preview'
#translateLabel: true
#value: #openImagePreview
#enabled: #hasSelection
)
#(#MenuItem
#label: 'Image Editor'
#translateLabel: true
#value: #openImageEditor
#enabled: #hasSelection
)
#(#MenuItem
#label: 'MP3 Player'
#translateLabel: true
#isVisible: #hasMP3Player
#value: #openMP3Player
#enabled: #hasMP3PlayerAndSelection
)
#(#MenuItem
#label: 'ZipFile Tool'
#translateLabel: true
#value: #openZipTool
#enabled: #hasZipFileSelected
)
#(#MenuItem
#label: 'SlideShow'
#translateLabel: true
#value: #openSlideShow
#isVisible: #hasSlideShow
)
#(#MenuItem
#label: 'File Differences...'
#translateLabel: true
#value: #openDiffView
#enabled: #hasSelection
)
#(#MenuItem
#label: 'Find Duplicate Files'
#translateLabel: true
#value: #fileFindDuplicates
)
#(#MenuItem
#label: 'Find All Duplicate Files (recursive)'
#translateLabel: true
#value: #fileFindAllDuplicates
)
#(#MenuItem
#label: 'Find a File...'
#translateLabel: true
#value: #fileFindFile
)
#(#MenuItem
#label: 'Hex Dump'
#translateLabel: true
#value: #fileHexDump
#enabled: #hasSelection
)
)
nil
nil
)
! !
!NewFileBrowser class methodsFor:'plugIn spec'!
aspectSelectors
"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."
"Return a description of exported aspects;
these can be connected to aspects of an embedding application
(if this app is embedded in a subCanvas)."
^ #(
#notifyChannel
).
! !
!NewFileBrowser methodsFor:'actions'!
doBack
| fileName |
fileName := self dirHistory doBack.
fileName notNil ifTrue:[
self currentFileNameHolder value:fileName.
]
!
doForward
| fileName |
fileName := self dirHistory doForward.
fileName notNil ifTrue:[
self currentFileNameHolder value:fileName.
]
!
doSpawn
self class openWithAspects:aspects withExtent:self builder window extent.
! !
!NewFileBrowser methodsFor:'aspects'!
enableBack
enableBack isNil ifTrue:[
enableBack := false asValue.
].
^ enableBack.
!
enableDirectoryUp
enableDirectoryUp isNil ifTrue:[
enableDirectoryUp := false asValue.
].
^ enableDirectoryUp.
!
enableForward
enableForward isNil ifTrue:[
enableForward := false asValue.
].
^ enableForward.
!
fileEntryFieldHolder
fileEntryFieldHolder isNil ifTrue:[
fileEntryFieldHolder := ValueHolder new.
fileEntryFieldHolder addDependent:self.
].
^ fileEntryFieldHolder.
! !
!NewFileBrowser methodsFor:'change & update'!
update:something with:aParameter from:changedObject
changedObject == self fileEntryFieldHolder ifTrue:[
(fileEntryFieldHolder value asFilename exists) ifFalse:[^ self].
self currentFileNameHolder value:(fileEntryFieldHolder value).
].
changedObject == self currentFileNameHolder ifTrue:[
| fileName currDir newDir|
fileName := self currentFileNameHolder value asFilename.
self enableDirectoryUp value:(fileName isRootDirectory not).
self fileEntryFieldHolder value:fileName.
currDir := self currentDirectory value.
newDir := self getDirWithoutFileName:(self currentFileNameHolder value asFilename).
currDir ~= newDir ifTrue:[
self currentDirectory value:newDir.
self dirHistory addFile:newDir.
self enableForward value:self dirHistory canForward.
self enableBack value:self dirHistory canBack.
].
^ self
].
changedObject == self treeSelectionHolder ifTrue:[
| treeValue filename|
treeValue := self treeSelectionHolder value.
filename := treeValue fileName.
treeValue ifTrue:[
self currentFileNameHolder value:filename.
].
^ self
].
changedObject == self showDirectoryTreeHolder ifTrue:[ |first|
first := variableHorizontalPanel subViews first.
directoryTreePage isNil ifTrue:[
directoryTreePage := first.
variableHorizontalPanel removeComponent:directoryTreePage.
] ifFalse:[
variableHorizontalPanel addComponent:directoryTreePage.
variableHorizontalPanel changeSequenceOrderFor:directoryTreePage to:1.
directoryTreePage := nil
].
^ self
].
changedObject == self viewNoteBookApplicationHolder ifTrue:[ | isPart lastPage|
noteBookApplicationPage isNil ifTrue:[
noteBookApplicationPage := variableVerticalPanel subViews last.
].
lastPage := (self builder namedComponents at:#VariableVerticalPanel) subViews last.
isPart := ((lastPage isKindOf:SubCanvas) and:[lastPage client isKindOf:NoteBookApplication]).
changedObject value ifTrue:[
isPart ifFalse:[
variableVerticalPanel addComponent:noteBookApplicationPage.
]
] ifFalse:[
isPart ifTrue:[
variableVerticalPanel removeComponent:noteBookApplicationPage.
]
].
^ self
].
super update:something with:aParameter from:changedObject.
! !
!NewFileBrowser methodsFor:'image specs'!
clearHistoryIcon
^ Icon deleteIcon
! !
!NewFileBrowser methodsFor:'menu'!
canBack
^ self dirHistory canBack.
!
canForward
^ self dirHistory canForward.
!
menuDirHistory:backOrForward
"initialize the directory menu
"
<resource: #programMenu >
|menu histCopy index text removeItem|
menu := Menu new.
menu receiver:self.
self dirHistory isEmpty ifTrue:[^ nil].
index := self dirHistory indexOf:self currentFileNameHolder value.
index = 0 ifTrue:[^ self].
text := LabelAndIcon icon:(self class clearHistoryIcon) string:'Clear History'.
backOrForward == #back ifTrue:[
histCopy := self dirHistory copyTo:index - 1.
removeItem := MenuItem label:text value:[
self dirHistory removeBack.
self enableBack value:self dirHistory canBack.
].
] ifFalse:[
histCopy := self dirHistory copyFrom:index + 1.
removeItem := MenuItem label:text value:[
self dirHistory removeForward.
self enableForward value:self dirHistory canForward.
].
].
histCopy do:[:aFile|
menu addItem:(MenuItem label:aFile asString value:[
self dirHistory setIndexTo:aFile.
self currentFileNameHolder value:aFile.
]).
].
menu addItem:(MenuItem label:'-').
menu addItem:removeItem.
^ menu
!
menuFileHistory
"initialize the file history menu
"
<resource: #programMenu >
|menu hist text removeItem|
menu := Menu new.
menu receiver:self.
hist := self fileHistory.
hist isEmpty ifTrue:[^ nil].
text := LabelAndIcon icon:(self class clearHistoryIcon) string:'Clear File History'.
hist do:[:aFileItem|
menu addItem:(MenuItem label: aFileItem fileName asString value:[
self selectOrOpenApplByFileItem:aFileItem
]).
].
removeItem := MenuItem label:text value:[
self fileHistory removeAll.
self enableFileHistory value:false.
].
menu addItem:(MenuItem label:'-').
menu addItem:removeItem.
^ menu
! !
!NewFileBrowser methodsFor:'startup & release'!
initialize
self masterApplication:nil.
self fileEncodingHolder value:#iso8859. "/ native ST/X encoding
!
makeDependent
self currentFileNameHolder addDependent:self.
self notifyChannel addDependent:self.
self treeSelectionHolder addDependent:self.
self showDirectoryTreeHolder addDependent:self.
self viewNoteBookApplicationHolder addDependent:self.
!
postBuildHorizontalPanel:aPanel
variableHorizontalPanel := aPanel.
!
postBuildPathView:aWidget
"
set the pramters that not can be changed in the window spec
"
aWidget level:-1.
aWidget backgroundColor:(aWidget superView viewBackground).
!
postBuildVerticalPanel:aPanel
variableVerticalPanel := aPanel.
!
postOpenWith:aBuilder
self currentFileNameHolder changed.
self currentDirectory changed.
self viewNoteBookApplicationHolder changed.
^ super postOpenWith:aBuilder
!
preBuildWith:aBuilder
^ super preBuildWith:aBuilder.
! !
!NewFileBrowser class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libtool/Attic/NewFileBrowser.st,v 1.7 2002-07-11 20:19:24 cg Exp $'
! !