--- a/FileBrowserV2.st Tue Apr 16 16:11:00 2013 +0200
+++ b/FileBrowserV2.st Wed Apr 17 10:22:54 2013 +0200
@@ -81,6 +81,7 @@
"
! !
+
!FileBrowserV2 class methodsFor:'instance creation'!
on:aDirectoryPath
@@ -197,6 +198,7 @@
^ clone
! !
+
!FileBrowserV2 class methodsFor:'class initialization'!
initialize
@@ -296,6 +298,7 @@
].
! !
+
!FileBrowserV2 class methodsFor:'defaults'!
entryFieldEndStringForMultipleSelection
@@ -303,6 +306,7 @@
^ ('[*]')
! !
+
!FileBrowserV2 class methodsFor:'help specs'!
flyByHelpSpec
@@ -368,6 +372,7 @@
)
! !
+
!FileBrowserV2 class methodsFor:'image specs'!
applicationIcon
@@ -403,6 +408,7 @@
^ ToolbarIconLibrary hideToolbarIconH26
! !
+
!FileBrowserV2 class methodsFor:'interface specs'!
windowSpec
@@ -420,341 +426,342 @@
<resource: #canvas>
- ^
+ ^
#(FullSpec
- name: windowSpec
- window:
+ name: windowSpec
+ window:
(WindowSpec
- label: FileBrowser
- name: FileBrowser
- min: (Point 10 10)
- bounds: (Rectangle 0 0 800 600)
- menu: mainMenu
- icon: defaultIcon
- )
- component:
+ label: FileBrowser
+ name: FileBrowser
+ min: (Point 10 10)
+ bounds: (Rectangle 0 0 800 768)
+ menu: mainMenu
+ icon: defaultIcon
+ )
+ component:
(SpecCollection
- collection: (
- (ViewSpec
- name: 'ToolbarBox'
- layout: (LayoutFrame 0 0 0 0 0 1 40 0)
- level: 0
- visibilityChannel: toolBarVisibleHolder
- component:
- (SpecCollection
- collection: (
- (ActionButtonSpec
- label: 'hideToolBarIcon'
- name: 'HideToolBarButton'
- layout: (LayoutFrame 0 0 0 0 13 0 40 0)
- activeHelpKey: hideToolBar
- hasCharacterOrientedLabel: false
- translateLabel: true
- model: hideToolbar
- postBuildCallback: hideToolBarButtonCreated:
- )
- (MenuPanelSpec
- name: 'ToolBar'
- layout: (LayoutFrame 13 0 0 0 0 1 40 0)
- menu: toolBarMainMenu
- textDefault: true
- )
- )
-
- )
- )
- (ViewSpec
- name: 'FilenameEntryFieldBox'
- layout: (LayoutFrame 0 0 40 0 0 1 65 0)
- level: 0
- visibilityChannel: filenameEntryFieldVisibleHolder
- component:
- (SpecCollection
- collection: (
- (ActionButtonSpec
- label: 'hideFilenameEntryFieldIcon'
- name: 'HideFilenameEntryFieldButton'
- layout: (LayoutFrame 0 0 0 0 13 0 0 1)
- activeHelpKey: hideFilenameEntryField
- hasCharacterOrientedLabel: false
- translateLabel: true
- model: hideFilenameEntryField
- postBuildCallback: hideFilenameEntryFieldButtonCreated:
- )
- (HorizontalPanelViewSpec
- name: 'HorizontalPanel1'
- layout: (LayoutFrame 13 0.0 0 0.0 0 1.0 0 1.0)
- level: 1
- horizontalLayout: leftFit
- verticalLayout: fit
- horizontalSpace: 3
- verticalSpace: 3
- component:
- (SpecCollection
- collection: (
- (ComboListSpec
- name: 'ComboList1'
- visibilityChannel: driveSelectorVisible
- model: selectedDeviceDrive
- comboList: listOfDeviceDrives
- useIndex: false
- hidePullDownMenuButton: false
- extent: (Point 53 23)
- )
- (VariableHorizontalPanelSpec
- name: 'VariableHorizontalPanel1'
- level: 0
- showHandle: true
- component:
- (SpecCollection
- collection: (
- (NonScrollableArbitraryComponentSpec
- name: 'NonScrollableArbitraryComponent1'
- component: FilenameEditFieldV2
- postBuildCallback: postBuildEditField:
- )
- (ViewSpec
- name: 'FilterBox'
- component:
- (SpecCollection
- collection: (
- (LabelSpec
- label: 'Filter:'
- name: 'Filter'
- layout: (LayoutFrame 0 0 0 0 40 0 0 1)
- translateLabel: true
- adjust: left
- postBuildCallback: postBuildPathViewBox:
- )
- (ComboBoxSpec
- name: 'FilterSelectionBox'
- layout: (LayoutFrame 40 0 0 0 0 1 0 1)
- model: filterModel
- immediateAccept: true
- acceptOnPointerLeave: false
- comboList: filterListModel
- )
- )
-
- )
- postBuildCallback: postBuildPathViewBox:
- )
- )
-
- )
- handles: (Any 0.774936 1.0)
- postBuildCallback: postBuildPathViewBox:
- useDefaultExtent: true
- )
- )
-
- )
- postBuildCallback: postBuildPathViewBox:
- )
- )
-
- )
- )
- (#'FileBrowserV2UISpecifications::PanelSpec'
- name: 'BrowserBox'
- layout: (LayoutFrame 0 0.0 65 0.0 0 1.0 -26 1.0)
- level: 0
- showHandle: true
- snapMode: both
- whichView: last
- orientation: vertical
- visibility: viewNoteBookApplicationHolder
- component:
- (SpecCollection
- collection: (
- (#'FileBrowserV2UISpecifications::PanelSpec'
- name: 'HorizontalPanel'
- level: 0
- snapMode: both
- whichView: first
- orientation: horizontal
- visibility: showDirectoryTree
- component:
- (SpecCollection
- collection: (
- (SubCanvasSpec
- name: 'DirectoryTreeBrowser'
- hasHorizontalScrollBar: false
- hasVerticalScrollBar: false
- majorKey: DirectoryTreeBrowser
- createNewApplication: true
- createNewBuilder: true
- postBuildCallback: postBuildDirectoryTree:
- )
- (SubCanvasSpec
- name: 'DirectoryContentsBrowser'
- hasHorizontalScrollBar: false
- hasVerticalScrollBar: false
- majorKey: DirectoryContentsBrowser
- createNewApplication: true
- createNewBuilder: true
- )
- )
-
- )
- handles: (Any 0.225 1.0)
- )
- (SubCanvasSpec
- name: 'FileApplicationNoteBook'
- tabable: false
- hasHorizontalScrollBar: false
- hasVerticalScrollBar: false
- majorKey: FileApplicationNoteBook
- createNewApplication: true
- createNewBuilder: true
- )
- )
-
- )
- handles: (Any 0.5 1.0)
- )
- (ViewSpec
- name: 'InfoBox'
- layout: (LayoutFrame 0 0 -26 1 0 1 0 1)
- level: 0
- visibilityChannel: infoBarVisibleHolder
- component:
- (SpecCollection
- collection: (
- (LabelSpec
- label: 'NotifyLabel'
- name: 'NotifyLabel'
- layout: (LayoutFrame 0 0 1 0.0 -220 1 1 1.0)
- level: -1
- translateLabel: true
- labelChannel: notifyChannel
- adjust: left
- )
- (LabelSpec
- label: 'encoding'
- name: 'EncodingLabel'
- layout: (LayoutFrame -318 1 2 0.0 -235 1 0 1.0)
- activeHelpKey: encodingLabel
- level: 0
- labelChannel: fileEncodingHolder
- adjust: right
- menu: encodingMenu
- )
- (LabelSpec
- name: 'FileEncodingLockedLabel'
- layout: (LayoutFrame -235 1 2 0.0 -220 1 20 0.0)
- activeHelpKey: encodingLockedLabel
- level: 0
- labelChannel: fileEncodingLockImageHolder
- adjust: right
- menu: encodingMenu
- )
- (LabelSpec
- label: 'Shown Files'
- name: 'ShownFilesLabel'
- layout: (LayoutFrame -220 1 1 0.0 -65 1 1 1.0)
- activeHelpKey: numberOfFiles
- level: -1
- translateLabel: true
- labelChannel: shownFiles
- adjust: right
- )
- (ViewSpec
- name: 'ProgressIndicatorBox'
- layout: (LayoutFrame -220 1 1 0.0 -65 1 1 1.0)
- level: -1
- visibilityChannel: activityVisibilityChannel
- component:
- (SpecCollection
- collection: (
- (ProgressIndicatorSpec
- name: 'ProgressIndicator1'
- layout: (LayoutFrame 5 0.0 -7 0.5 -5 1.0 7 0.5)
- backgroundColor: (Color 0.0 66.6666666666667 66.6666666666667)
- isActivityIndicator: true
- )
- )
-
- )
- )
- (LabelSpec
- name: 'BusyLabel'
- layout: (LayoutFrame -220 1 1 0.0 -65 1 1 1.0)
- activeHelpKey: modeLabel
- level: -1
- visibilityChannel: busyLabelVisibleHolder
- translateLabel: true
- labelChannel: busyLabelHolder
- adjust: right
- )
- (LabelSpec
- label: 'M'
- name: 'ModeLabel'
- layout: (LayoutFrame -65 1 1 0.0 -55 1 1 1.0)
- activeHelpKey: modeLabel
- level: -1
- translateLabel: true
- labelChannel: modeLabelHolder
- adjust: right
- postBuildCallback: postBuildEditModeInfoLabel:
- )
- (LabelSpec
- label: 'L'
- name: 'LineLabel'
- layout: (LayoutFrame -55 1 1 0.0 -20 1 1 1.0)
- activeHelpKey: lineLabel
- level: -1
- translateLabel: true
- labelChannel: cursorLineLabelHolder
- adjust: right
- )
- (LabelSpec
- label: 'C'
- name: 'ColLabel'
- layout: (LayoutFrame -20 1 1 0.0 0 1 1 1.0)
- activeHelpKey: columnLabel
- level: -1
- translateLabel: true
- labelChannel: cursorColLabelHolder
- adjust: right
- )
- )
-
- )
- keepSpaceForOSXResizeHandleH: true
- )
- (LabelSpec
- label: 'Preview'
- name: 'PreviewLabel'
- layout: (LayoutFrame 0 0.5 39 0 100 0.5 61 0)
- level: 0
- borderWidth: 1
- visibilityChannel: previewVisibleHolder
- backgroundColor: (Color 86.9993133440147 86.9993133440147 86.9993133440147)
- translateLabel: true
- )
- (ArbitraryComponentSpec
- name: 'Preview'
- layout: (LayoutFrame 0 0.5 63 0 -147 1 -319 1)
- level: 1
- visibilityChannel: previewVisibleHolder
- hasBorder: false
- component: ImageView
- )
- (ActionButtonSpec
- label: 'closePreviewButtonImage'
- name: 'ClosePreviewButton'
- layout: (LayoutFrame -169 1 39 0 -147 1 61 0)
- visibilityChannel: previewVisibleHolder
- hasCharacterOrientedLabel: false
- translateLabel: true
- )
- )
-
- )
+ collection: (
+ (ViewSpec
+ name: 'ToolbarBox'
+ layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+ level: 0
+ visibilityChannel: toolBarVisibleHolder
+ component:
+ (SpecCollection
+ collection: (
+ (ActionButtonSpec
+ label: 'hideToolBarIcon'
+ name: 'HideToolBarButton'
+ layout: (LayoutFrame 0 0 0 0 13 0 40 0)
+ activeHelpKey: hideToolBar
+ hasCharacterOrientedLabel: false
+ translateLabel: true
+ model: hideToolbar
+ postBuildCallback: hideToolBarButtonCreated:
+ )
+ (MenuPanelSpec
+ name: 'ToolBar'
+ layout: (LayoutFrame 13 0 0 0 0 1 40 0)
+ menu: toolBarMainMenu
+ textDefault: true
+ )
+ )
+
+ )
+ )
+ (ViewSpec
+ name: 'FilenameEntryFieldBox'
+ layout: (LayoutFrame 0 0 40 0 0 1 65 0)
+ level: 0
+ visibilityChannel: filenameEntryFieldVisibleHolder
+ component:
+ (SpecCollection
+ collection: (
+ (ActionButtonSpec
+ label: 'hideFilenameEntryFieldIcon'
+ name: 'HideFilenameEntryFieldButton'
+ layout: (LayoutFrame 0 0 0 0 13 0 0 1)
+ activeHelpKey: hideFilenameEntryField
+ hasCharacterOrientedLabel: false
+ translateLabel: true
+ model: hideFilenameEntryField
+ postBuildCallback: hideFilenameEntryFieldButtonCreated:
+ )
+ (HorizontalPanelViewSpec
+ name: 'HorizontalPanel1'
+ layout: (LayoutFrame 13 0.0 0 0.0 0 1.0 0 1.0)
+ level: 1
+ horizontalLayout: leftFit
+ verticalLayout: fit
+ horizontalSpace: 3
+ verticalSpace: 3
+ component:
+ (SpecCollection
+ collection: (
+ (ComboListSpec
+ name: 'ComboList1'
+ visibilityChannel: driveSelectorVisible
+ model: selectedDeviceDrive
+ comboList: listOfDeviceDrives
+ useIndex: false
+ hidePullDownMenuButton: false
+ extent: (Point 53 23)
+ )
+ (VariableHorizontalPanelSpec
+ name: 'VariableHorizontalPanel1'
+ level: 0
+ showHandle: true
+ component:
+ (SpecCollection
+ collection: (
+ (NonScrollableArbitraryComponentSpec
+ name: 'NonScrollableArbitraryComponent1'
+ component: FilenameEditFieldV2
+ postBuildCallback: postBuildEditField:
+ )
+ (ViewSpec
+ name: 'FilterBox'
+ component:
+ (SpecCollection
+ collection: (
+ (LabelSpec
+ label: 'Filter:'
+ name: 'Filter'
+ layout: (LayoutFrame 0 0 0 0 40 0 0 1)
+ translateLabel: true
+ adjust: left
+ postBuildCallback: postBuildPathViewBox:
+ )
+ (ComboBoxSpec
+ name: 'FilterSelectionBox'
+ layout: (LayoutFrame 40 0 0 0 0 1 0 1)
+ model: filterModel
+ immediateAccept: true
+ acceptOnPointerLeave: false
+ comboList: filterListModel
+ )
+ )
+
+ )
+ postBuildCallback: postBuildPathViewBox:
+ )
+ )
+
+ )
+ handles: (Any 0.774936 1.0)
+ postBuildCallback: postBuildPathViewBox:
+ useDefaultExtent: true
+ )
+ )
+
+ )
+ postBuildCallback: postBuildPathViewBox:
+ )
+ )
+
+ )
+ )
+ (#'FileBrowserV2UISpecifications::PanelSpec'
+ name: 'BrowserBox'
+ layout: (LayoutFrame 0 0.0 65 0.0 0 1.0 -26 1.0)
+ level: 0
+ showHandle: true
+ snapMode: both
+ whichView: last
+ orientation: vertical
+ visibility: viewNoteBookApplicationHolder
+ component:
+ (SpecCollection
+ collection: (
+ (#'FileBrowserV2UISpecifications::PanelSpec'
+ name: 'HorizontalPanel'
+ level: 0
+ snapMode: both
+ whichView: first
+ orientation: horizontal
+ visibility: showDirectoryTree
+ component:
+ (SpecCollection
+ collection: (
+ (SubCanvasSpec
+ name: 'DirectoryTreeBrowser'
+ hasHorizontalScrollBar: false
+ hasVerticalScrollBar: false
+ majorKey: DirectoryTreeBrowser
+ createNewApplication: true
+ createNewBuilder: true
+ postBuildCallback: postBuildDirectoryTree:
+ )
+ (SubCanvasSpec
+ name: 'DirectoryContentsBrowser'
+ hasHorizontalScrollBar: false
+ hasVerticalScrollBar: false
+ majorKey: DirectoryContentsBrowser
+ createNewApplication: true
+ createNewBuilder: true
+ )
+ )
+
+ )
+ handles: (Any 0.225 1.0)
+ )
+ (SubCanvasSpec
+ name: 'FileApplicationNoteBook'
+ tabable: false
+ hasHorizontalScrollBar: false
+ hasVerticalScrollBar: false
+ majorKey: FileApplicationNoteBook
+ createNewApplication: true
+ createNewBuilder: true
+ )
+ )
+
+ )
+ handles: (Any 0.5 1.0)
+ )
+ (ViewSpec
+ name: 'InfoBox'
+ layout: (LayoutFrame 0 0 -26 1 0 1 0 1)
+ level: 0
+ visibilityChannel: infoBarVisibleHolder
+ component:
+ (SpecCollection
+ collection: (
+ (LabelSpec
+ label: 'NotifyLabel'
+ name: 'NotifyLabel'
+ layout: (LayoutFrame 0 0 1 0.0 -220 1 1 1.0)
+ level: -1
+ translateLabel: true
+ labelChannel: notifyChannel
+ adjust: left
+ )
+ (LabelSpec
+ label: 'encoding'
+ name: 'EncodingLabel'
+ layout: (LayoutFrame -318 1 2 0.0 -235 1 0 1.0)
+ activeHelpKey: encodingLabel
+ level: 0
+ labelChannel: fileEncodingHolder
+ adjust: right
+ menu: encodingMenu
+ )
+ (LabelSpec
+ name: 'FileEncodingLockedLabel'
+ layout: (LayoutFrame -235 1 2 0.0 -220 1 20 0.0)
+ activeHelpKey: encodingLockedLabel
+ level: 0
+ labelChannel: fileEncodingLockImageHolder
+ adjust: right
+ menu: encodingMenu
+ )
+ (LabelSpec
+ label: 'Shown Files'
+ name: 'ShownFilesLabel'
+ layout: (LayoutFrame -220 1 1 0.0 -65 1 1 1.0)
+ activeHelpKey: numberOfFiles
+ level: -1
+ translateLabel: true
+ labelChannel: shownFiles
+ adjust: right
+ )
+ (ViewSpec
+ name: 'ProgressIndicatorBox'
+ layout: (LayoutFrame -220 1 1 0.0 -65 1 1 1.0)
+ level: -1
+ visibilityChannel: activityVisibilityChannel
+ component:
+ (SpecCollection
+ collection: (
+ (ProgressIndicatorSpec
+ name: 'ProgressIndicator1'
+ layout: (LayoutFrame 5 0.0 -7 0.5 -5 1.0 7 0.5)
+ backgroundColor: (Color 0.0 66.6666666666667 66.6666666666667)
+ isActivityIndicator: true
+ )
+ )
+
+ )
+ )
+ (LabelSpec
+ name: 'BusyLabel'
+ layout: (LayoutFrame -220 1 1 0.0 -65 1 1 1.0)
+ activeHelpKey: modeLabel
+ level: -1
+ visibilityChannel: busyLabelVisibleHolder
+ translateLabel: true
+ labelChannel: busyLabelHolder
+ adjust: right
+ )
+ (LabelSpec
+ label: 'M'
+ name: 'ModeLabel'
+ layout: (LayoutFrame -65 1 1 0.0 -55 1 1 1.0)
+ activeHelpKey: modeLabel
+ level: -1
+ translateLabel: true
+ labelChannel: modeLabelHolder
+ adjust: right
+ postBuildCallback: postBuildEditModeInfoLabel:
+ )
+ (LabelSpec
+ label: 'L'
+ name: 'LineLabel'
+ layout: (LayoutFrame -55 1 1 0.0 -20 1 1 1.0)
+ activeHelpKey: lineLabel
+ level: -1
+ translateLabel: true
+ labelChannel: cursorLineLabelHolder
+ adjust: right
+ )
+ (LabelSpec
+ label: 'C'
+ name: 'ColLabel'
+ layout: (LayoutFrame -20 1 1 0.0 0 1 1 1.0)
+ activeHelpKey: columnLabel
+ level: -1
+ translateLabel: true
+ labelChannel: cursorColLabelHolder
+ adjust: right
+ )
+ )
+
+ )
+ keepSpaceForOSXResizeHandleH: true
+ )
+ (LabelSpec
+ label: 'Preview'
+ name: 'PreviewLabel'
+ layout: (LayoutFrame 0 0.5 39 0 100 0.5 61 0)
+ level: 0
+ borderWidth: 1
+ visibilityChannel: previewVisibleHolder
+ backgroundColor: (Color 86.9993133440147 86.9993133440147 86.9993133440147)
+ translateLabel: true
+ )
+ (ArbitraryComponentSpec
+ name: 'Preview'
+ layout: (LayoutFrame 0 0.5 63 0 -147 1 -319 1)
+ level: 1
+ visibilityChannel: previewVisibleHolder
+ hasBorder: false
+ component: ImageView
+ )
+ (ActionButtonSpec
+ label: 'closePreviewButtonImage'
+ name: 'ClosePreviewButton'
+ layout: (LayoutFrame -169 1 39 0 -147 1 61 0)
+ visibilityChannel: previewVisibleHolder
+ hasCharacterOrientedLabel: false
+ translateLabel: true
+ )
+ )
+
+ )
)
! !
+
!FileBrowserV2 class methodsFor:'menu specs'!
editModeInfoLabelMenu
@@ -1247,6 +1254,7 @@
)
! !
+
!FileBrowserV2 methodsFor:'actions'!
changeFileBrowserTitleTo:aString
@@ -1286,6 +1294,7 @@
].
! !
+
!FileBrowserV2 methodsFor:'aspects'!
busyLabelHolder
@@ -1432,6 +1441,7 @@
^ selectedDeviceDrive
! !
+
!FileBrowserV2 methodsFor:'aspects-visibility'!
busyLabelVisibleHolder
@@ -1468,6 +1478,7 @@
^ self aspectFor:#toolBarVisibleHolder ifAbsent:[true asValue]
! !
+
!FileBrowserV2 methodsFor:'change & update'!
currentFileNameHolderChanged
@@ -1733,6 +1744,7 @@
].
! !
+
!FileBrowserV2 methodsFor:'event handling'!
crPressedInPathField
@@ -1808,6 +1820,7 @@
"Modified: / 17-05-2007 / 09:12:53 / cg"
! !
+
!FileBrowserV2 methodsFor:'menu accessing'!
menuFileHistory
@@ -1856,12 +1869,24 @@
"Modified: / 09-09-2012 / 13:08:42 / cg"
! !
+
!FileBrowserV2 methodsFor:'queries'!
+defaultWindowExtent
+ "use nearly the full screen height, but at least 768px if available.
+ Keep the width as defined in the windowSpec"
+
+ |maxHeight|
+
+ maxHeight := self window device usableHeightAt:self window origin.
+ ^ Point x:nil y:(((maxHeight - 200) max:self window extent y) min:maxHeight).
+!
+
getAllFilesAsStrings
^ self directoryContentsBrowser getAllFilesAsStrings
! !
+
!FileBrowserV2 methodsFor:'startup & release'!
closeRequest
@@ -2023,10 +2048,11 @@
^ super release
! !
+
!FileBrowserV2 class methodsFor:'documentation'!
version_CVS
- ^ '$Header: /cvs/stx/stx/libtool/FileBrowserV2.st,v 1.205 2013-01-26 21:04:45 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/FileBrowserV2.st,v 1.206 2013-04-16 13:04:04 stefan Exp $'
!
version_HG