FileSelectionItem.st
author Claus Gittinger <cg@exept.de>
Thu, 07 Aug 1997 15:29:28 +0200
changeset 489 45b03c9e0277
parent 486 d981d312947d
child 493 babd683808e3
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
486
d981d312947d intitial checkin
ca
parents:
diff changeset
     1
"
489
45b03c9e0277 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
     2
 COPYRIGHT (c) 1997 by eXept Software AG
486
d981d312947d intitial checkin
ca
parents:
diff changeset
     3
              All Rights Reserved
d981d312947d intitial checkin
ca
parents:
diff changeset
     4
d981d312947d intitial checkin
ca
parents:
diff changeset
     5
 This software is furnished under a license and may be used
d981d312947d intitial checkin
ca
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
d981d312947d intitial checkin
ca
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
d981d312947d intitial checkin
ca
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
d981d312947d intitial checkin
ca
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
d981d312947d intitial checkin
ca
parents:
diff changeset
    10
 hereby transferred.
d981d312947d intitial checkin
ca
parents:
diff changeset
    11
"
d981d312947d intitial checkin
ca
parents:
diff changeset
    12
d981d312947d intitial checkin
ca
parents:
diff changeset
    13
d981d312947d intitial checkin
ca
parents:
diff changeset
    14
d981d312947d intitial checkin
ca
parents:
diff changeset
    15
TreeItem subclass:#FileSelectionItem
d981d312947d intitial checkin
ca
parents:
diff changeset
    16
	instanceVariableNames:'isDirectory imageType invalidate'
d981d312947d intitial checkin
ca
parents:
diff changeset
    17
	classVariableNames:''
d981d312947d intitial checkin
ca
parents:
diff changeset
    18
	poolDictionaries:''
d981d312947d intitial checkin
ca
parents:
diff changeset
    19
	category:'Interface-Support'
d981d312947d intitial checkin
ca
parents:
diff changeset
    20
!
d981d312947d intitial checkin
ca
parents:
diff changeset
    21
d981d312947d intitial checkin
ca
parents:
diff changeset
    22
FileSelectionItem subclass:#Directory
d981d312947d intitial checkin
ca
parents:
diff changeset
    23
	instanceVariableNames:''
d981d312947d intitial checkin
ca
parents:
diff changeset
    24
	classVariableNames:''
d981d312947d intitial checkin
ca
parents:
diff changeset
    25
	poolDictionaries:''
d981d312947d intitial checkin
ca
parents:
diff changeset
    26
	privateIn:FileSelectionItem
d981d312947d intitial checkin
ca
parents:
diff changeset
    27
!
d981d312947d intitial checkin
ca
parents:
diff changeset
    28
d981d312947d intitial checkin
ca
parents:
diff changeset
    29
FileSelectionItem subclass:#File
d981d312947d intitial checkin
ca
parents:
diff changeset
    30
	instanceVariableNames:''
d981d312947d intitial checkin
ca
parents:
diff changeset
    31
	classVariableNames:''
d981d312947d intitial checkin
ca
parents:
diff changeset
    32
	poolDictionaries:''
d981d312947d intitial checkin
ca
parents:
diff changeset
    33
	privateIn:FileSelectionItem
d981d312947d intitial checkin
ca
parents:
diff changeset
    34
!
d981d312947d intitial checkin
ca
parents:
diff changeset
    35
d981d312947d intitial checkin
ca
parents:
diff changeset
    36
!FileSelectionItem class methodsFor:'documentation'!
d981d312947d intitial checkin
ca
parents:
diff changeset
    37
d981d312947d intitial checkin
ca
parents:
diff changeset
    38
copyright
d981d312947d intitial checkin
ca
parents:
diff changeset
    39
"
489
45b03c9e0277 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
    40
 COPYRIGHT (c) 1997 by eXept Software AG
486
d981d312947d intitial checkin
ca
parents:
diff changeset
    41
              All Rights Reserved
d981d312947d intitial checkin
ca
parents:
diff changeset
    42
d981d312947d intitial checkin
ca
parents:
diff changeset
    43
 This software is furnished under a license and may be used
d981d312947d intitial checkin
ca
parents:
diff changeset
    44
 only in accordance with the terms of that license and with the
d981d312947d intitial checkin
ca
parents:
diff changeset
    45
 inclusion of the above copyright notice.   This software may not
d981d312947d intitial checkin
ca
parents:
diff changeset
    46
 be provided or otherwise made available to, or used by, any
d981d312947d intitial checkin
ca
parents:
diff changeset
    47
 other person.  No title to or ownership of the software is
d981d312947d intitial checkin
ca
parents:
diff changeset
    48
 hereby transferred.
d981d312947d intitial checkin
ca
parents:
diff changeset
    49
"
d981d312947d intitial checkin
ca
parents:
diff changeset
    50
d981d312947d intitial checkin
ca
parents:
diff changeset
    51
d981d312947d intitial checkin
ca
parents:
diff changeset
    52
!
d981d312947d intitial checkin
ca
parents:
diff changeset
    53
d981d312947d intitial checkin
ca
parents:
diff changeset
    54
documentation
d981d312947d intitial checkin
ca
parents:
diff changeset
    55
"
d981d312947d intitial checkin
ca
parents:
diff changeset
    56
    class to build up file trees like structures. You can define your own
d981d312947d intitial checkin
ca
parents:
diff changeset
    57
    icons and filter. Redefinging the icons you have to look especially for
d981d312947d intitial checkin
ca
parents:
diff changeset
    58
    this methods:
d981d312947d intitial checkin
ca
parents:
diff changeset
    59
d981d312947d intitial checkin
ca
parents:
diff changeset
    60
        class method:           iconsOn:        : returns a list of icons used
d981d312947d intitial checkin
ca
parents:
diff changeset
    61
d981d312947d intitial checkin
ca
parents:
diff changeset
    62
        instance method:        updateImageType : set default key into icon list
d981d312947d intitial checkin
ca
parents:
diff changeset
    63
                                                  for the image associated with node
d981d312947d intitial checkin
ca
parents:
diff changeset
    64
d981d312947d intitial checkin
ca
parents:
diff changeset
    65
                                imageUnselected : image or key into icon list
d981d312947d intitial checkin
ca
parents:
diff changeset
    66
                                                  used for unselected mode
d981d312947d intitial checkin
ca
parents:
diff changeset
    67
d981d312947d intitial checkin
ca
parents:
diff changeset
    68
                                imageSelected   : image or key into icon directory
d981d312947d intitial checkin
ca
parents:
diff changeset
    69
                                                  used for selected mode
d981d312947d intitial checkin
ca
parents:
diff changeset
    70
d981d312947d intitial checkin
ca
parents:
diff changeset
    71
    Especially suited for use with FileSelectionTree.
d981d312947d intitial checkin
ca
parents:
diff changeset
    72
d981d312947d intitial checkin
ca
parents:
diff changeset
    73
    [Author:]
d981d312947d intitial checkin
ca
parents:
diff changeset
    74
        Claus Atzkern
d981d312947d intitial checkin
ca
parents:
diff changeset
    75
d981d312947d intitial checkin
ca
parents:
diff changeset
    76
    [See also:]
d981d312947d intitial checkin
ca
parents:
diff changeset
    77
        TreeItem
d981d312947d intitial checkin
ca
parents:
diff changeset
    78
        FileSelectionTree
d981d312947d intitial checkin
ca
parents:
diff changeset
    79
"
d981d312947d intitial checkin
ca
parents:
diff changeset
    80
! !
d981d312947d intitial checkin
ca
parents:
diff changeset
    81
d981d312947d intitial checkin
ca
parents:
diff changeset
    82
!FileSelectionItem class methodsFor:'instance creation'!
d981d312947d intitial checkin
ca
parents:
diff changeset
    83
d981d312947d intitial checkin
ca
parents:
diff changeset
    84
pathName:aPath
d981d312947d intitial checkin
ca
parents:
diff changeset
    85
    "create a new node entry associated with the full pathname, aPath
d981d312947d intitial checkin
ca
parents:
diff changeset
    86
    "
d981d312947d intitial checkin
ca
parents:
diff changeset
    87
    |node|
d981d312947d intitial checkin
ca
parents:
diff changeset
    88
d981d312947d intitial checkin
ca
parents:
diff changeset
    89
    node := self new.
d981d312947d intitial checkin
ca
parents:
diff changeset
    90
    node pathName:aPath.
d981d312947d intitial checkin
ca
parents:
diff changeset
    91
  ^ node
d981d312947d intitial checkin
ca
parents:
diff changeset
    92
d981d312947d intitial checkin
ca
parents:
diff changeset
    93
d981d312947d intitial checkin
ca
parents:
diff changeset
    94
! !
d981d312947d intitial checkin
ca
parents:
diff changeset
    95
d981d312947d intitial checkin
ca
parents:
diff changeset
    96
!FileSelectionItem class methodsFor:'accessing class'!
d981d312947d intitial checkin
ca
parents:
diff changeset
    97
d981d312947d intitial checkin
ca
parents:
diff changeset
    98
directoriesOnly
d981d312947d intitial checkin
ca
parents:
diff changeset
    99
    ^ Directory
d981d312947d intitial checkin
ca
parents:
diff changeset
   100
!
d981d312947d intitial checkin
ca
parents:
diff changeset
   101
d981d312947d intitial checkin
ca
parents:
diff changeset
   102
filesOnly
d981d312947d intitial checkin
ca
parents:
diff changeset
   103
    ^ File
d981d312947d intitial checkin
ca
parents:
diff changeset
   104
! !
d981d312947d intitial checkin
ca
parents:
diff changeset
   105
d981d312947d intitial checkin
ca
parents:
diff changeset
   106
!FileSelectionItem class methodsFor:'converting'!
d981d312947d intitial checkin
ca
parents:
diff changeset
   107
d981d312947d intitial checkin
ca
parents:
diff changeset
   108
asFilename:aPathname
d981d312947d intitial checkin
ca
parents:
diff changeset
   109
    "convert pathname to an absolute path
d981d312947d intitial checkin
ca
parents:
diff changeset
   110
    "
d981d312947d intitial checkin
ca
parents:
diff changeset
   111
    |path|
d981d312947d intitial checkin
ca
parents:
diff changeset
   112
d981d312947d intitial checkin
ca
parents:
diff changeset
   113
    path := aPathname asString.
d981d312947d intitial checkin
ca
parents:
diff changeset
   114
d981d312947d intitial checkin
ca
parents:
diff changeset
   115
    (path size > 1 and:[path endsWith:(Filename separator)]) ifTrue:[
d981d312947d intitial checkin
ca
parents:
diff changeset
   116
        ^ (path copyWithout:1) asFilename.
d981d312947d intitial checkin
ca
parents:
diff changeset
   117
    ].
d981d312947d intitial checkin
ca
parents:
diff changeset
   118
  ^ aPathname asFilename
d981d312947d intitial checkin
ca
parents:
diff changeset
   119
! !
d981d312947d intitial checkin
ca
parents:
diff changeset
   120
d981d312947d intitial checkin
ca
parents:
diff changeset
   121
!FileSelectionItem class methodsFor:'defaults'!
d981d312947d intitial checkin
ca
parents:
diff changeset
   122
d981d312947d intitial checkin
ca
parents:
diff changeset
   123
iconsOn:aDevice
d981d312947d intitial checkin
ca
parents:
diff changeset
   124
    "returns an IdentityDictionary containing a list of images and keys used
d981d312947d intitial checkin
ca
parents:
diff changeset
   125
     by any file entry.
d981d312947d intitial checkin
ca
parents:
diff changeset
   126
    "
d981d312947d intitial checkin
ca
parents:
diff changeset
   127
    |icons image|
d981d312947d intitial checkin
ca
parents:
diff changeset
   128
d981d312947d intitial checkin
ca
parents:
diff changeset
   129
    icons := IdentityDictionary new.
d981d312947d intitial checkin
ca
parents:
diff changeset
   130
d981d312947d intitial checkin
ca
parents:
diff changeset
   131
    #(
d981d312947d intitial checkin
ca
parents:
diff changeset
   132
        (#directory       'tiny_yellow_dir.xpm')
d981d312947d intitial checkin
ca
parents:
diff changeset
   133
        (#directoryOpened 'tiny_yellow_dir_open.xpm')
d981d312947d intitial checkin
ca
parents:
diff changeset
   134
        (#directoryLocked 'tiny_yellow_dir_locked.xpm')
d981d312947d intitial checkin
ca
parents:
diff changeset
   135
        (#directoryLink   'tiny_yellow_dir_link.xpm'  )
d981d312947d intitial checkin
ca
parents:
diff changeset
   136
d981d312947d intitial checkin
ca
parents:
diff changeset
   137
        (#file            'tiny_file_plain.xpm'       )
d981d312947d intitial checkin
ca
parents:
diff changeset
   138
        (#fileLink        'tiny_file_link.xpm'        )
d981d312947d intitial checkin
ca
parents:
diff changeset
   139
        (#fileLocked      'tiny_file_lock.xpm'        )
d981d312947d intitial checkin
ca
parents:
diff changeset
   140
        (#imageFile       'tiny_file_pix.xpm'         )
d981d312947d intitial checkin
ca
parents:
diff changeset
   141
d981d312947d intitial checkin
ca
parents:
diff changeset
   142
     ) do:[:el |
d981d312947d intitial checkin
ca
parents:
diff changeset
   143
        image := Image fromFile:('xpmBitmaps/document_images/', el last ).
d981d312947d intitial checkin
ca
parents:
diff changeset
   144
        icons at:(el first) put:(image onDevice:aDevice).
d981d312947d intitial checkin
ca
parents:
diff changeset
   145
    ].
d981d312947d intitial checkin
ca
parents:
diff changeset
   146
  ^ icons
d981d312947d intitial checkin
ca
parents:
diff changeset
   147
d981d312947d intitial checkin
ca
parents:
diff changeset
   148
d981d312947d intitial checkin
ca
parents:
diff changeset
   149
! !
d981d312947d intitial checkin
ca
parents:
diff changeset
   150
d981d312947d intitial checkin
ca
parents:
diff changeset
   151
!FileSelectionItem class methodsFor:'queries'!
d981d312947d intitial checkin
ca
parents:
diff changeset
   152
d981d312947d intitial checkin
ca
parents:
diff changeset
   153
isSelectableFile:aFilename
d981d312947d intitial checkin
ca
parents:
diff changeset
   154
    "checks whether file can be selected through filter
d981d312947d intitial checkin
ca
parents:
diff changeset
   155
    "
d981d312947d intitial checkin
ca
parents:
diff changeset
   156
    aFilename notNil ifTrue:[
d981d312947d intitial checkin
ca
parents:
diff changeset
   157
        ^ aFilename asFilename exists
d981d312947d intitial checkin
ca
parents:
diff changeset
   158
    ].
d981d312947d intitial checkin
ca
parents:
diff changeset
   159
  ^ false
d981d312947d intitial checkin
ca
parents:
diff changeset
   160
! !
d981d312947d intitial checkin
ca
parents:
diff changeset
   161
d981d312947d intitial checkin
ca
parents:
diff changeset
   162
!FileSelectionItem methodsFor:'accessing'!
d981d312947d intitial checkin
ca
parents:
diff changeset
   163
d981d312947d intitial checkin
ca
parents:
diff changeset
   164
children
d981d312947d intitial checkin
ca
parents:
diff changeset
   165
    "get's list of children
d981d312947d intitial checkin
ca
parents:
diff changeset
   166
    "
d981d312947d intitial checkin
ca
parents:
diff changeset
   167
    invalidate ifTrue:[
d981d312947d intitial checkin
ca
parents:
diff changeset
   168
        isDirectory ifTrue:[self updateChildren].
d981d312947d intitial checkin
ca
parents:
diff changeset
   169
        invalidate := false
d981d312947d intitial checkin
ca
parents:
diff changeset
   170
    ].
d981d312947d intitial checkin
ca
parents:
diff changeset
   171
  ^ children
d981d312947d intitial checkin
ca
parents:
diff changeset
   172
!
d981d312947d intitial checkin
ca
parents:
diff changeset
   173
d981d312947d intitial checkin
ca
parents:
diff changeset
   174
pathName
d981d312947d intitial checkin
ca
parents:
diff changeset
   175
    "returns full pathname of node
d981d312947d intitial checkin
ca
parents:
diff changeset
   176
    "
d981d312947d intitial checkin
ca
parents:
diff changeset
   177
  ^ contents asString
d981d312947d intitial checkin
ca
parents:
diff changeset
   178
d981d312947d intitial checkin
ca
parents:
diff changeset
   179
d981d312947d intitial checkin
ca
parents:
diff changeset
   180
!
d981d312947d intitial checkin
ca
parents:
diff changeset
   181
d981d312947d intitial checkin
ca
parents:
diff changeset
   182
pathName:aPathname
d981d312947d intitial checkin
ca
parents:
diff changeset
   183
    "initialze attributes associated with the full pathname, aPathname
d981d312947d intitial checkin
ca
parents:
diff changeset
   184
    "
d981d312947d intitial checkin
ca
parents:
diff changeset
   185
    contents := self class asFilename:aPathname.
d981d312947d intitial checkin
ca
parents:
diff changeset
   186
    name     := contents baseName.
d981d312947d intitial checkin
ca
parents:
diff changeset
   187
    isDirectory := contents isDirectory.
d981d312947d intitial checkin
ca
parents:
diff changeset
   188
    self updateImageType.
d981d312947d intitial checkin
ca
parents:
diff changeset
   189
d981d312947d intitial checkin
ca
parents:
diff changeset
   190
    isDirectory ifTrue:[
d981d312947d intitial checkin
ca
parents:
diff changeset
   191
        invalidate := imageType ~~ #directoryLocked
d981d312947d intitial checkin
ca
parents:
diff changeset
   192
    ] ifFalse:[
d981d312947d intitial checkin
ca
parents:
diff changeset
   193
        invalidate := false
d981d312947d intitial checkin
ca
parents:
diff changeset
   194
    ].
d981d312947d intitial checkin
ca
parents:
diff changeset
   195
! !
d981d312947d intitial checkin
ca
parents:
diff changeset
   196
d981d312947d intitial checkin
ca
parents:
diff changeset
   197
!FileSelectionItem methodsFor:'images'!
d981d312947d intitial checkin
ca
parents:
diff changeset
   198
d981d312947d intitial checkin
ca
parents:
diff changeset
   199
imageSelected
d981d312947d intitial checkin
ca
parents:
diff changeset
   200
    "returns type or an image set for node in selected mode
d981d312947d intitial checkin
ca
parents:
diff changeset
   201
    "
d981d312947d intitial checkin
ca
parents:
diff changeset
   202
    "returns type or an image set for node in selected mode
d981d312947d intitial checkin
ca
parents:
diff changeset
   203
    "
d981d312947d intitial checkin
ca
parents:
diff changeset
   204
    (isDirectory and:[imageType ~~ #directoryLocked]) ifTrue:[
d981d312947d intitial checkin
ca
parents:
diff changeset
   205
        ^ #directoryOpened
d981d312947d intitial checkin
ca
parents:
diff changeset
   206
     ].
d981d312947d intitial checkin
ca
parents:
diff changeset
   207
   ^ imageType
d981d312947d intitial checkin
ca
parents:
diff changeset
   208
d981d312947d intitial checkin
ca
parents:
diff changeset
   209
d981d312947d intitial checkin
ca
parents:
diff changeset
   210
!
d981d312947d intitial checkin
ca
parents:
diff changeset
   211
d981d312947d intitial checkin
ca
parents:
diff changeset
   212
imageUnselected
d981d312947d intitial checkin
ca
parents:
diff changeset
   213
    "returns type or an image set for node in selected mode
d981d312947d intitial checkin
ca
parents:
diff changeset
   214
    "
d981d312947d intitial checkin
ca
parents:
diff changeset
   215
   ^ imageType
d981d312947d intitial checkin
ca
parents:
diff changeset
   216
d981d312947d intitial checkin
ca
parents:
diff changeset
   217
d981d312947d intitial checkin
ca
parents:
diff changeset
   218
! !
d981d312947d intitial checkin
ca
parents:
diff changeset
   219
d981d312947d intitial checkin
ca
parents:
diff changeset
   220
!FileSelectionItem methodsFor:'initialization'!
d981d312947d intitial checkin
ca
parents:
diff changeset
   221
d981d312947d intitial checkin
ca
parents:
diff changeset
   222
initialize
d981d312947d intitial checkin
ca
parents:
diff changeset
   223
    "set default values
d981d312947d intitial checkin
ca
parents:
diff changeset
   224
    "
d981d312947d intitial checkin
ca
parents:
diff changeset
   225
    super initialize.
d981d312947d intitial checkin
ca
parents:
diff changeset
   226
    invalidate := false.
d981d312947d intitial checkin
ca
parents:
diff changeset
   227
! !
d981d312947d intitial checkin
ca
parents:
diff changeset
   228
d981d312947d intitial checkin
ca
parents:
diff changeset
   229
!FileSelectionItem methodsFor:'queries'!
d981d312947d intitial checkin
ca
parents:
diff changeset
   230
d981d312947d intitial checkin
ca
parents:
diff changeset
   231
hasChildren
d981d312947d intitial checkin
ca
parents:
diff changeset
   232
    "returns true if the pathname assigned to this node is a directory
d981d312947d intitial checkin
ca
parents:
diff changeset
   233
     otherwise false
d981d312947d intitial checkin
ca
parents:
diff changeset
   234
    "
d981d312947d intitial checkin
ca
parents:
diff changeset
   235
  ^ isDirectory
d981d312947d intitial checkin
ca
parents:
diff changeset
   236
d981d312947d intitial checkin
ca
parents:
diff changeset
   237
!
d981d312947d intitial checkin
ca
parents:
diff changeset
   238
d981d312947d intitial checkin
ca
parents:
diff changeset
   239
isDirectory
d981d312947d intitial checkin
ca
parents:
diff changeset
   240
    ^ isDirectory
d981d312947d intitial checkin
ca
parents:
diff changeset
   241
!
d981d312947d intitial checkin
ca
parents:
diff changeset
   242
d981d312947d intitial checkin
ca
parents:
diff changeset
   243
match:aFilename
d981d312947d intitial checkin
ca
parents:
diff changeset
   244
    "returns true if file matched otherwise false
d981d312947d intitial checkin
ca
parents:
diff changeset
   245
    "
d981d312947d intitial checkin
ca
parents:
diff changeset
   246
  ^ true
d981d312947d intitial checkin
ca
parents:
diff changeset
   247
d981d312947d intitial checkin
ca
parents:
diff changeset
   248
! !
d981d312947d intitial checkin
ca
parents:
diff changeset
   249
d981d312947d intitial checkin
ca
parents:
diff changeset
   250
!FileSelectionItem methodsFor:'update'!
d981d312947d intitial checkin
ca
parents:
diff changeset
   251
d981d312947d intitial checkin
ca
parents:
diff changeset
   252
updateChildren
d981d312947d intitial checkin
ca
parents:
diff changeset
   253
    "read children from directory
d981d312947d intitial checkin
ca
parents:
diff changeset
   254
    "
d981d312947d intitial checkin
ca
parents:
diff changeset
   255
    |pathName directory item aFilename|
d981d312947d intitial checkin
ca
parents:
diff changeset
   256
d981d312947d intitial checkin
ca
parents:
diff changeset
   257
    children  := OrderedCollection new.
d981d312947d intitial checkin
ca
parents:
diff changeset
   258
    pathName  := self pathName.
d981d312947d intitial checkin
ca
parents:
diff changeset
   259
    directory := FileDirectory new.
d981d312947d intitial checkin
ca
parents:
diff changeset
   260
    directory pathName:pathName.
d981d312947d intitial checkin
ca
parents:
diff changeset
   261
d981d312947d intitial checkin
ca
parents:
diff changeset
   262
    directory do:[:aName|
d981d312947d intitial checkin
ca
parents:
diff changeset
   263
        ((aName first == $.) and:[aName last == $.]) ifFalse:[
d981d312947d intitial checkin
ca
parents:
diff changeset
   264
            aFilename := contents construct:aName.
d981d312947d intitial checkin
ca
parents:
diff changeset
   265
            (self match:aFilename) ifTrue:[
d981d312947d intitial checkin
ca
parents:
diff changeset
   266
                item := self class pathName:aFilename.
d981d312947d intitial checkin
ca
parents:
diff changeset
   267
                item parent:self.
d981d312947d intitial checkin
ca
parents:
diff changeset
   268
                children add:item
d981d312947d intitial checkin
ca
parents:
diff changeset
   269
            ]
d981d312947d intitial checkin
ca
parents:
diff changeset
   270
        ]
d981d312947d intitial checkin
ca
parents:
diff changeset
   271
    ].
d981d312947d intitial checkin
ca
parents:
diff changeset
   272
    children sort:[:a :b | a name < b name].
d981d312947d intitial checkin
ca
parents:
diff changeset
   273
    invalidate := false.
d981d312947d intitial checkin
ca
parents:
diff changeset
   274
d981d312947d intitial checkin
ca
parents:
diff changeset
   275
!
d981d312947d intitial checkin
ca
parents:
diff changeset
   276
d981d312947d intitial checkin
ca
parents:
diff changeset
   277
updateImageType
d981d312947d intitial checkin
ca
parents:
diff changeset
   278
    "update image type
d981d312947d intitial checkin
ca
parents:
diff changeset
   279
    "
d981d312947d intitial checkin
ca
parents:
diff changeset
   280
    isDirectory ifTrue:[
d981d312947d intitial checkin
ca
parents:
diff changeset
   281
        contents isSymbolicLink ifTrue:[
d981d312947d intitial checkin
ca
parents:
diff changeset
   282
            imageType := #directoryLink
d981d312947d intitial checkin
ca
parents:
diff changeset
   283
        ] ifFalse:[
d981d312947d intitial checkin
ca
parents:
diff changeset
   284
            (contents isExecutable and:[contents isReadable]) ifTrue:[
d981d312947d intitial checkin
ca
parents:
diff changeset
   285
                imageType := #directory
d981d312947d intitial checkin
ca
parents:
diff changeset
   286
            ] ifFalse:[
d981d312947d intitial checkin
ca
parents:
diff changeset
   287
                imageType := #directoryLocked
d981d312947d intitial checkin
ca
parents:
diff changeset
   288
            ]
d981d312947d intitial checkin
ca
parents:
diff changeset
   289
        ].
d981d312947d intitial checkin
ca
parents:
diff changeset
   290
      ^ self
d981d312947d intitial checkin
ca
parents:
diff changeset
   291
    ].
d981d312947d intitial checkin
ca
parents:
diff changeset
   292
d981d312947d intitial checkin
ca
parents:
diff changeset
   293
    contents isSymbolicLink ifTrue:[  
d981d312947d intitial checkin
ca
parents:
diff changeset
   294
        imageType := #fileLink
d981d312947d intitial checkin
ca
parents:
diff changeset
   295
    ] ifFalse:[
d981d312947d intitial checkin
ca
parents:
diff changeset
   296
        contents isReadable ifTrue:[
d981d312947d intitial checkin
ca
parents:
diff changeset
   297
            (Image isImageFileSuffix:(contents suffix)) ifFalse:[
d981d312947d intitial checkin
ca
parents:
diff changeset
   298
                imageType := #file
d981d312947d intitial checkin
ca
parents:
diff changeset
   299
            ] ifTrue:[
d981d312947d intitial checkin
ca
parents:
diff changeset
   300
                imageType := #imageFile
d981d312947d intitial checkin
ca
parents:
diff changeset
   301
            ]
d981d312947d intitial checkin
ca
parents:
diff changeset
   302
        ] ifFalse:[
d981d312947d intitial checkin
ca
parents:
diff changeset
   303
            imageType := #fileLocked
d981d312947d intitial checkin
ca
parents:
diff changeset
   304
        ]
d981d312947d intitial checkin
ca
parents:
diff changeset
   305
    ]
d981d312947d intitial checkin
ca
parents:
diff changeset
   306
! !
d981d312947d intitial checkin
ca
parents:
diff changeset
   307
d981d312947d intitial checkin
ca
parents:
diff changeset
   308
!FileSelectionItem::Directory class methodsFor:'documentation'!
d981d312947d intitial checkin
ca
parents:
diff changeset
   309
d981d312947d intitial checkin
ca
parents:
diff changeset
   310
documentation
d981d312947d intitial checkin
ca
parents:
diff changeset
   311
"
d981d312947d intitial checkin
ca
parents:
diff changeset
   312
    subtype of FileSelectionItem only showing directories; more an example to show
d981d312947d intitial checkin
ca
parents:
diff changeset
   313
    how to implement filters
d981d312947d intitial checkin
ca
parents:
diff changeset
   314
d981d312947d intitial checkin
ca
parents:
diff changeset
   315
    [Author:]
d981d312947d intitial checkin
ca
parents:
diff changeset
   316
        Claus Atzkern
d981d312947d intitial checkin
ca
parents:
diff changeset
   317
d981d312947d intitial checkin
ca
parents:
diff changeset
   318
    [See also:]
d981d312947d intitial checkin
ca
parents:
diff changeset
   319
        FileSelectionItem
d981d312947d intitial checkin
ca
parents:
diff changeset
   320
"
d981d312947d intitial checkin
ca
parents:
diff changeset
   321
d981d312947d intitial checkin
ca
parents:
diff changeset
   322
! !
d981d312947d intitial checkin
ca
parents:
diff changeset
   323
d981d312947d intitial checkin
ca
parents:
diff changeset
   324
!FileSelectionItem::Directory class methodsFor:'queries'!
d981d312947d intitial checkin
ca
parents:
diff changeset
   325
d981d312947d intitial checkin
ca
parents:
diff changeset
   326
isSelectableFile:aFilename
d981d312947d intitial checkin
ca
parents:
diff changeset
   327
    "checks whether file can be selected through filter
d981d312947d intitial checkin
ca
parents:
diff changeset
   328
    "
d981d312947d intitial checkin
ca
parents:
diff changeset
   329
    (super isSelectableFile:aFilename) ifTrue:[
d981d312947d intitial checkin
ca
parents:
diff changeset
   330
        ^ aFilename asFilename isDirectory
d981d312947d intitial checkin
ca
parents:
diff changeset
   331
    ].
d981d312947d intitial checkin
ca
parents:
diff changeset
   332
  ^ false
d981d312947d intitial checkin
ca
parents:
diff changeset
   333
d981d312947d intitial checkin
ca
parents:
diff changeset
   334
d981d312947d intitial checkin
ca
parents:
diff changeset
   335
! !
d981d312947d intitial checkin
ca
parents:
diff changeset
   336
d981d312947d intitial checkin
ca
parents:
diff changeset
   337
!FileSelectionItem::Directory methodsFor:'queries'!
d981d312947d intitial checkin
ca
parents:
diff changeset
   338
d981d312947d intitial checkin
ca
parents:
diff changeset
   339
match:aFilename
d981d312947d intitial checkin
ca
parents:
diff changeset
   340
    ^ aFilename isDirectory
d981d312947d intitial checkin
ca
parents:
diff changeset
   341
! !
d981d312947d intitial checkin
ca
parents:
diff changeset
   342
d981d312947d intitial checkin
ca
parents:
diff changeset
   343
!FileSelectionItem::File class methodsFor:'documentation'!
d981d312947d intitial checkin
ca
parents:
diff changeset
   344
d981d312947d intitial checkin
ca
parents:
diff changeset
   345
documentation
d981d312947d intitial checkin
ca
parents:
diff changeset
   346
"
d981d312947d intitial checkin
ca
parents:
diff changeset
   347
    subtype of FileSelectionItem only showing files; more an example to show
d981d312947d intitial checkin
ca
parents:
diff changeset
   348
    how to implement filters
d981d312947d intitial checkin
ca
parents:
diff changeset
   349
d981d312947d intitial checkin
ca
parents:
diff changeset
   350
    [Author:]
d981d312947d intitial checkin
ca
parents:
diff changeset
   351
        Claus Atzkern
d981d312947d intitial checkin
ca
parents:
diff changeset
   352
d981d312947d intitial checkin
ca
parents:
diff changeset
   353
    [See also:]
d981d312947d intitial checkin
ca
parents:
diff changeset
   354
        FileSelectionItem
d981d312947d intitial checkin
ca
parents:
diff changeset
   355
"
d981d312947d intitial checkin
ca
parents:
diff changeset
   356
d981d312947d intitial checkin
ca
parents:
diff changeset
   357
d981d312947d intitial checkin
ca
parents:
diff changeset
   358
! !
d981d312947d intitial checkin
ca
parents:
diff changeset
   359
d981d312947d intitial checkin
ca
parents:
diff changeset
   360
!FileSelectionItem::File class methodsFor:'queries'!
d981d312947d intitial checkin
ca
parents:
diff changeset
   361
d981d312947d intitial checkin
ca
parents:
diff changeset
   362
isSelectableFile:aFilename
d981d312947d intitial checkin
ca
parents:
diff changeset
   363
    "checks whether file can be selected through filter
d981d312947d intitial checkin
ca
parents:
diff changeset
   364
    "
d981d312947d intitial checkin
ca
parents:
diff changeset
   365
    (super isSelectableFile:aFilename) ifTrue:[
d981d312947d intitial checkin
ca
parents:
diff changeset
   366
        ^ aFilename asFilename isDirectory not
d981d312947d intitial checkin
ca
parents:
diff changeset
   367
    ].
d981d312947d intitial checkin
ca
parents:
diff changeset
   368
  ^ false
d981d312947d intitial checkin
ca
parents:
diff changeset
   369
d981d312947d intitial checkin
ca
parents:
diff changeset
   370
d981d312947d intitial checkin
ca
parents:
diff changeset
   371
! !
d981d312947d intitial checkin
ca
parents:
diff changeset
   372
d981d312947d intitial checkin
ca
parents:
diff changeset
   373
!FileSelectionItem::File methodsFor:'queries'!
d981d312947d intitial checkin
ca
parents:
diff changeset
   374
d981d312947d intitial checkin
ca
parents:
diff changeset
   375
match:aFilename
d981d312947d intitial checkin
ca
parents:
diff changeset
   376
    ^ aFilename isDirectory not
d981d312947d intitial checkin
ca
parents:
diff changeset
   377
d981d312947d intitial checkin
ca
parents:
diff changeset
   378
d981d312947d intitial checkin
ca
parents:
diff changeset
   379
! !
d981d312947d intitial checkin
ca
parents:
diff changeset
   380
d981d312947d intitial checkin
ca
parents:
diff changeset
   381
!FileSelectionItem class methodsFor:'documentation'!
d981d312947d intitial checkin
ca
parents:
diff changeset
   382
d981d312947d intitial checkin
ca
parents:
diff changeset
   383
version
489
45b03c9e0277 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
   384
    ^ '$Header: /cvs/stx/stx/libwidg2/FileSelectionItem.st,v 1.2 1997-08-07 13:29:28 cg Exp $'
486
d981d312947d intitial checkin
ca
parents:
diff changeset
   385
! !