Tools__NavigationHistory.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Fri, 30 Nov 2012 17:23:39 +0000
branchjv
changeset 12308 5d9291c0fc27
parent 12287 400a99059170
child 12401 4714b9640528
permissions -rw-r--r--
Merged with /trunk
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9989
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
     1
"
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
     2
 COPYRIGHT (c) 2006 by eXept Software AG
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
     3
              All Rights Reserved
9989
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
     4
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
     5
 This software is furnished under a license and may be used
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
     6
 only in accordance with the terms of that license and with the
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
     8
 be provided or otherwise made available to, or used by, any
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
     9
 other person.  No title to or ownership of the software is
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
    10
 hereby transferred.
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
    11
"
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
    12
"{ Package: 'stx:libtool' }"
8778
32f043901469 initial checkin
fm
parents:
diff changeset
    13
32f043901469 initial checkin
fm
parents:
diff changeset
    14
"{ NameSpace: Tools }"
32f043901469 initial checkin
fm
parents:
diff changeset
    15
32f043901469 initial checkin
fm
parents:
diff changeset
    16
Object subclass:#NavigationHistory
10121
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
    17
	instanceVariableNames:'items position isGlobalHistory'
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
    18
	classVariableNames:''
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
    19
	poolDictionaries:''
12287
400a99059170 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
    20
	category:'Interface-Browsers-New-History'
8778
32f043901469 initial checkin
fm
parents:
diff changeset
    21
!
32f043901469 initial checkin
fm
parents:
diff changeset
    22
9989
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
    23
!NavigationHistory class methodsFor:'documentation'!
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
    24
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
    25
copyright
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
    26
"
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
    27
 COPYRIGHT (c) 2006 by eXept Software AG
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    28
              All Rights Reserved
9989
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
    29
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
    30
 This software is furnished under a license and may be used
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
    31
 only in accordance with the terms of that license and with the
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
    32
 inclusion of the above copyright notice.   This software may not
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
    33
 be provided or otherwise made available to, or used by, any
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
    34
 other person.  No title to or ownership of the software is
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
    35
 hereby transferred.
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
    36
"
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    37
!
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    38
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    39
documentation
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    40
"
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    41
    two variants:
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    42
        a forward-backward history, as in a browser:
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    43
            navigating backward moves a pointer in a list
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    44
        a global history
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    45
            navigating moves the navigated item to the front position
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    46
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    47
    hack: configurable to behave either as a global history
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    48
          or as a local-tab navigation history.
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    49
    Also implement backward compatible list-style acccess interface,
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    50
    to support old browsers (I guess, this is temporary and the other 
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    51
    users of the global history (debugger, old systembrowser etc. should
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    52
    be changed)
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    53
"
9989
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
    54
! !
8778
32f043901469 initial checkin
fm
parents:
diff changeset
    55
32f043901469 initial checkin
fm
parents:
diff changeset
    56
!NavigationHistory class methodsFor:'instance creation'!
32f043901469 initial checkin
fm
parents:
diff changeset
    57
32f043901469 initial checkin
fm
parents:
diff changeset
    58
new
32f043901469 initial checkin
fm
parents:
diff changeset
    59
    ^ self basicNew initialize.
32f043901469 initial checkin
fm
parents:
diff changeset
    60
32f043901469 initial checkin
fm
parents:
diff changeset
    61
    "Created: / 21-02-2008 / 15:26:05 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
    62
! !
32f043901469 initial checkin
fm
parents:
diff changeset
    63
32f043901469 initial checkin
fm
parents:
diff changeset
    64
!NavigationHistory methodsFor:'accessing'!
32f043901469 initial checkin
fm
parents:
diff changeset
    65
32f043901469 initial checkin
fm
parents:
diff changeset
    66
currentItem
32f043901469 initial checkin
fm
parents:
diff changeset
    67
32f043901469 initial checkin
fm
parents:
diff changeset
    68
    ^(position between:1 and: items size) 
32f043901469 initial checkin
fm
parents:
diff changeset
    69
        ifTrue:[items at: position]
32f043901469 initial checkin
fm
parents:
diff changeset
    70
        ifFalse:[nil]
32f043901469 initial checkin
fm
parents:
diff changeset
    71
32f043901469 initial checkin
fm
parents:
diff changeset
    72
    "Created: / 27-02-2008 / 08:46:37 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
    73
!
32f043901469 initial checkin
fm
parents:
diff changeset
    74
32f043901469 initial checkin
fm
parents:
diff changeset
    75
currentItem: anObject
32f043901469 initial checkin
fm
parents:
diff changeset
    76
32f043901469 initial checkin
fm
parents:
diff changeset
    77
    self goTo: anObject
32f043901469 initial checkin
fm
parents:
diff changeset
    78
32f043901469 initial checkin
fm
parents:
diff changeset
    79
    "Created: / 27-02-2008 / 08:47:04 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
    80
!
32f043901469 initial checkin
fm
parents:
diff changeset
    81
32f043901469 initial checkin
fm
parents:
diff changeset
    82
goBackItems
10176
302187ae4a8c comment/format in: #goBack
Claus Gittinger <cg@exept.de>
parents: 10142
diff changeset
    83
    isGlobalHistory ifTrue:[^ items "isEmpty ifTrue:[items] ifFalse:[items copyFrom:2]"].
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    84
8778
32f043901469 initial checkin
fm
parents:
diff changeset
    85
    ^ (items copyTo:position - 1) reverse
32f043901469 initial checkin
fm
parents:
diff changeset
    86
32f043901469 initial checkin
fm
parents:
diff changeset
    87
    "Created: / 27-02-2008 / 11:52:12 / janfrog"
10176
302187ae4a8c comment/format in: #goBack
Claus Gittinger <cg@exept.de>
parents: 10142
diff changeset
    88
    "Modified: / 05-07-2011 / 16:53:18 / cg"
8778
32f043901469 initial checkin
fm
parents:
diff changeset
    89
!
32f043901469 initial checkin
fm
parents:
diff changeset
    90
32f043901469 initial checkin
fm
parents:
diff changeset
    91
goForwardItems
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    92
    isGlobalHistory ifTrue:[^ #()].
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    93
8778
32f043901469 initial checkin
fm
parents:
diff changeset
    94
    ^ items copyFrom:position + 1
32f043901469 initial checkin
fm
parents:
diff changeset
    95
32f043901469 initial checkin
fm
parents:
diff changeset
    96
    "Created: / 27-02-2008 / 11:52:26 / janfrog"
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    97
    "Modified: / 03-07-2011 / 16:00:45 / cg"
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    98
! !
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
    99
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   100
!NavigationHistory methodsFor:'backward list compatibility'!
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   101
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   102
addFirst:anEntry
10121
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   103
    "backward compatible list protocol"
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   104
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   105
    items addFirst:anEntry.
10122
72f78f096b3d changed:
Claus Gittinger <cg@exept.de>
parents: 10121
diff changeset
   106
    items size > 30 ifTrue:[
72f78f096b3d changed:
Claus Gittinger <cg@exept.de>
parents: 10121
diff changeset
   107
        items removeLast
72f78f096b3d changed:
Claus Gittinger <cg@exept.de>
parents: 10121
diff changeset
   108
    ].
10121
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   109
    self changed: #value with: anEntry.
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   110
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   111
    "Created: / 03-07-2011 / 13:26:48 / cg"
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   112
!
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   113
10142
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   114
collect:aBlock 
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   115
    "backward compatible list protocol"
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   116
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   117
    ^ items collect:aBlock
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   118
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   119
    "Created: / 04-07-2011 / 22:45:21 / cg"
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   120
!
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   121
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   122
collect:aBlock thenSelect:filter
10121
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   123
    "backward compatible list protocol"
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   124
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   125
    ^ items collect:aBlock thenSelect:filter
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   126
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   127
    "Created: / 03-07-2011 / 13:34:14 / cg"
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   128
!
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   129
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   130
detect:aBlock ifNone:exeptionalValue
10121
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   131
    "backward compatible list protocol"
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   132
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   133
    ^ items detect:aBlock ifNone:exeptionalValue
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   134
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   135
    "Created: / 03-07-2011 / 13:25:37 / cg"
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   136
!
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   137
12308
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   138
do:aBlock
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   139
    "backward compatible list protocol"
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   140
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   141
    ^ items do:aBlock 
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   142
!
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   143
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   144
first
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   145
    "backward compatible list protocol"
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   146
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   147
    ^ items first
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   148
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   149
    "Created: / 04-07-2011 / 22:45:21 / cg"
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   150
!
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   151
10142
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   152
isEmpty
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   153
    "backward compatible list protocol"
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   154
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   155
    ^ items isEmpty
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   156
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   157
    "Created: / 04-07-2011 / 22:44:54 / cg"
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   158
!
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   159
12308
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   160
isEmptyOrNil
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   161
    "backward compatible list protocol"
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   162
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   163
    ^ items isEmptyOrNil
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   164
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   165
    "Created: / 04-07-2011 / 22:44:54 / cg"
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   166
!
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   167
10142
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   168
notEmpty
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   169
    "backward compatible list protocol"
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   170
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   171
    ^ items notEmpty
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   172
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   173
    "Created: / 04-07-2011 / 22:45:45 / cg"
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   174
!
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   175
12308
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   176
notEmptyOrNil
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   177
    "backward compatible list protocol"
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   178
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   179
    ^ items notEmptyOrNil
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   180
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   181
    "Created: / 04-07-2011 / 22:45:45 / cg"
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   182
!
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   183
12125
0c49a3b13e43 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12123
diff changeset
   184
removeAll
0c49a3b13e43 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12123
diff changeset
   185
    items removeAll.
0c49a3b13e43 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12123
diff changeset
   186
0c49a3b13e43 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12123
diff changeset
   187
    "Created: / 21-09-2011 / 16:27:38 / cg"
0c49a3b13e43 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12123
diff changeset
   188
!
0c49a3b13e43 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12123
diff changeset
   189
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   190
removeIdentical:anEntry
10121
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   191
    "backward compatible list protocol"
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   192
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   193
    items removeIdentical:anEntry.
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   194
    self changed: #value with:nil.
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   195
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   196
    "Created: / 03-07-2011 / 13:27:34 / cg"
10142
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   197
!
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   198
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   199
reverseDo:aBlock
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   200
    "backward compatible list protocol"
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   201
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   202
    items reverseDo:aBlock
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   203
Claus Gittinger <cg@exept.de>
parents: 10122
diff changeset
   204
    "Created: / 04-07-2011 / 22:44:28 / cg"
8778
32f043901469 initial checkin
fm
parents:
diff changeset
   205
! !
32f043901469 initial checkin
fm
parents:
diff changeset
   206
32f043901469 initial checkin
fm
parents:
diff changeset
   207
!NavigationHistory methodsFor:'initialization'!
32f043901469 initial checkin
fm
parents:
diff changeset
   208
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   209
beGlobalHistory
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   210
    isGlobalHistory := true
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   211
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   212
    "Created: / 03-07-2011 / 14:42:57 / cg"
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   213
!
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   214
8778
32f043901469 initial checkin
fm
parents:
diff changeset
   215
initialize
32f043901469 initial checkin
fm
parents:
diff changeset
   216
    "Invoked when a new instance is created."
32f043901469 initial checkin
fm
parents:
diff changeset
   217
32f043901469 initial checkin
fm
parents:
diff changeset
   218
    "/ please change as required (and remove this comment)
32f043901469 initial checkin
fm
parents:
diff changeset
   219
    "/ items := nil.
32f043901469 initial checkin
fm
parents:
diff changeset
   220
    "/ position := nil.
32f043901469 initial checkin
fm
parents:
diff changeset
   221
32f043901469 initial checkin
fm
parents:
diff changeset
   222
    "/ super initialize.   -- commented since inherited method does nothing
32f043901469 initial checkin
fm
parents:
diff changeset
   223
    items := OrderedCollection new.
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   224
    position := 0.
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   225
    isGlobalHistory := false.
8778
32f043901469 initial checkin
fm
parents:
diff changeset
   226
32f043901469 initial checkin
fm
parents:
diff changeset
   227
    "Created: / 21-02-2008 / 15:26:05 / janfrog"
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   228
    "Modified: / 03-07-2011 / 14:43:08 / cg"
8778
32f043901469 initial checkin
fm
parents:
diff changeset
   229
! !
32f043901469 initial checkin
fm
parents:
diff changeset
   230
32f043901469 initial checkin
fm
parents:
diff changeset
   231
!NavigationHistory methodsFor:'menu & menu actions'!
32f043901469 initial checkin
fm
parents:
diff changeset
   232
32f043901469 initial checkin
fm
parents:
diff changeset
   233
goBackMenu
32f043901469 initial checkin
fm
parents:
diff changeset
   234
    |menu|
32f043901469 initial checkin
fm
parents:
diff changeset
   235
32f043901469 initial checkin
fm
parents:
diff changeset
   236
    menu := Menu new.
32f043901469 initial checkin
fm
parents:
diff changeset
   237
    self goBackItems do:[:item | 
32f043901469 initial checkin
fm
parents:
diff changeset
   238
        menu addItem:(MenuItem label:item displayString value:[ self goTo:item ])
32f043901469 initial checkin
fm
parents:
diff changeset
   239
    ].
32f043901469 initial checkin
fm
parents:
diff changeset
   240
    ^ menu
32f043901469 initial checkin
fm
parents:
diff changeset
   241
32f043901469 initial checkin
fm
parents:
diff changeset
   242
    "Created: / 22-02-2008 / 16:57:46 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
   243
    "Modified: / 27-02-2008 / 11:52:12 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
   244
!
32f043901469 initial checkin
fm
parents:
diff changeset
   245
32f043901469 initial checkin
fm
parents:
diff changeset
   246
goForwardMenu
32f043901469 initial checkin
fm
parents:
diff changeset
   247
    |menu|
32f043901469 initial checkin
fm
parents:
diff changeset
   248
32f043901469 initial checkin
fm
parents:
diff changeset
   249
    menu := Menu new.
32f043901469 initial checkin
fm
parents:
diff changeset
   250
    self goForwardItems do:[:item | 
32f043901469 initial checkin
fm
parents:
diff changeset
   251
        menu addItem:(MenuItem label:item displayString value:[ self goTo:item ])
32f043901469 initial checkin
fm
parents:
diff changeset
   252
    ].
32f043901469 initial checkin
fm
parents:
diff changeset
   253
    ^ menu
32f043901469 initial checkin
fm
parents:
diff changeset
   254
32f043901469 initial checkin
fm
parents:
diff changeset
   255
    "Created: / 22-02-2008 / 16:58:11 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
   256
    "Modified: / 27-02-2008 / 11:52:26 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
   257
! !
32f043901469 initial checkin
fm
parents:
diff changeset
   258
32f043901469 initial checkin
fm
parents:
diff changeset
   259
!NavigationHistory methodsFor:'navigation'!
32f043901469 initial checkin
fm
parents:
diff changeset
   260
32f043901469 initial checkin
fm
parents:
diff changeset
   261
goBack
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   262
    | value |
8778
32f043901469 initial checkin
fm
parents:
diff changeset
   263
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   264
    isGlobalHistory ifTrue:[
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   265
        items size <= 1 ifTrue:[^ nil].
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   266
        ^ self goTo:(items second).
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   267
    ].
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   268
8778
32f043901469 initial checkin
fm
parents:
diff changeset
   269
    position := (position - 1) max: 1.
32f043901469 initial checkin
fm
parents:
diff changeset
   270
    self changed: #currentItem with: (value := self currentItem).
32f043901469 initial checkin
fm
parents:
diff changeset
   271
    ^value
32f043901469 initial checkin
fm
parents:
diff changeset
   272
32f043901469 initial checkin
fm
parents:
diff changeset
   273
    "Created: / 21-02-2008 / 16:37:37 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
   274
    "Modified: / 27-02-2008 / 08:48:14 / janfrog"
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   275
    "Modified: / 03-07-2011 / 16:19:27 / cg"
8778
32f043901469 initial checkin
fm
parents:
diff changeset
   276
!
32f043901469 initial checkin
fm
parents:
diff changeset
   277
32f043901469 initial checkin
fm
parents:
diff changeset
   278
goForward
10121
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   279
    | value |
8778
32f043901469 initial checkin
fm
parents:
diff changeset
   280
32f043901469 initial checkin
fm
parents:
diff changeset
   281
    position := (position + 1) min: items size.
32f043901469 initial checkin
fm
parents:
diff changeset
   282
    self changed: #currentItem with: (value := self currentItem).
32f043901469 initial checkin
fm
parents:
diff changeset
   283
    ^value
32f043901469 initial checkin
fm
parents:
diff changeset
   284
32f043901469 initial checkin
fm
parents:
diff changeset
   285
    "Created: / 21-02-2008 / 16:37:37 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
   286
    "Modified: / 27-02-2008 / 08:48:24 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
   287
!
32f043901469 initial checkin
fm
parents:
diff changeset
   288
32f043901469 initial checkin
fm
parents:
diff changeset
   289
goTo: navigationHistoryItem
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   290
    | idx |
8778
32f043901469 initial checkin
fm
parents:
diff changeset
   291
32f043901469 initial checkin
fm
parents:
diff changeset
   292
    idx := items indexOf:navigationHistoryItem.
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   293
    isGlobalHistory ifTrue:[
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   294
        idx ~~ 0 ifTrue:[
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   295
            items removeIndex:idx.
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   296
        ].
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   297
        items addFirst:navigationHistoryItem.
10121
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   298
    ] ifFalse:[
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   299
        idx == 0 ifFalse: [
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   300
            position := idx
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   301
        ] ifTrue:[
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   302
            position < items size ifTrue:[
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   303
                items removeFromIndex: position + 1 toIndex: items size
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   304
            ].
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   305
            items addLast: navigationHistoryItem.
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   306
            position := position + 1
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   307
        ].
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   308
    ].
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   309
10121
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   310
    "/ for the canGoXXX apect.
8778
32f043901469 initial checkin
fm
parents:
diff changeset
   311
    self changed: #value with: navigationHistoryItem.
10121
9ffc433015ec comment/format in: #goForward
Claus Gittinger <cg@exept.de>
parents: 10049
diff changeset
   312
    ^ navigationHistoryItem
8778
32f043901469 initial checkin
fm
parents:
diff changeset
   313
32f043901469 initial checkin
fm
parents:
diff changeset
   314
    "Created: / 21-02-2008 / 16:40:39 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
   315
    "Modified: / 21-02-2008 / 19:12:35 / janfrog"
10049
8b6c0289ff0a hack: configurable to behave either as a global history
Claus Gittinger <cg@exept.de>
parents: 9989
diff changeset
   316
    "Modified: / 03-07-2011 / 16:03:11 / cg"
8778
32f043901469 initial checkin
fm
parents:
diff changeset
   317
! !
32f043901469 initial checkin
fm
parents:
diff changeset
   318
32f043901469 initial checkin
fm
parents:
diff changeset
   319
!NavigationHistory methodsFor:'queries'!
32f043901469 initial checkin
fm
parents:
diff changeset
   320
32f043901469 initial checkin
fm
parents:
diff changeset
   321
canGoBack
10122
72f78f096b3d changed:
Claus Gittinger <cg@exept.de>
parents: 10121
diff changeset
   322
    isGlobalHistory ifTrue:[
72f78f096b3d changed:
Claus Gittinger <cg@exept.de>
parents: 10121
diff changeset
   323
        ^ items size > 2
72f78f096b3d changed:
Claus Gittinger <cg@exept.de>
parents: 10121
diff changeset
   324
    ].
8778
32f043901469 initial checkin
fm
parents:
diff changeset
   325
10122
72f78f096b3d changed:
Claus Gittinger <cg@exept.de>
parents: 10121
diff changeset
   326
    ^ position > 1
8778
32f043901469 initial checkin
fm
parents:
diff changeset
   327
32f043901469 initial checkin
fm
parents:
diff changeset
   328
    "Created: / 21-02-2008 / 16:40:48 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
   329
!
32f043901469 initial checkin
fm
parents:
diff changeset
   330
32f043901469 initial checkin
fm
parents:
diff changeset
   331
canGoForward
32f043901469 initial checkin
fm
parents:
diff changeset
   332
32f043901469 initial checkin
fm
parents:
diff changeset
   333
    ^position < items size
32f043901469 initial checkin
fm
parents:
diff changeset
   334
32f043901469 initial checkin
fm
parents:
diff changeset
   335
    "Created: / 21-02-2008 / 16:40:48 / janfrog"
32f043901469 initial checkin
fm
parents:
diff changeset
   336
! !
32f043901469 initial checkin
fm
parents:
diff changeset
   337
32f043901469 initial checkin
fm
parents:
diff changeset
   338
!NavigationHistory class methodsFor:'documentation'!
32f043901469 initial checkin
fm
parents:
diff changeset
   339
8804
905811d4c5d7 changed: #version_SVN
fm
parents: 8778
diff changeset
   340
version_CVS
12308
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   341
    ^ '§Header: /cvs/stx/stx/libtool/Tools__NavigationHistory.st,v 1.14 2012/11/13 09:07:18 mb Exp §'
8804
905811d4c5d7 changed: #version_SVN
fm
parents: 8778
diff changeset
   342
!
905811d4c5d7 changed: #version_SVN
fm
parents: 8778
diff changeset
   343
8818
ffb1e1c2215f added: #version_CVS_jvrany
fm
parents: 8804
diff changeset
   344
version_CVS_jvrany
9989
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
   345
    ^ '§Header: /opt/data/cvs/stx/goodies/libtool3/Tools__NavigationHistory.st,v 1.2 2008-02-27 13:45:21 vranyj1 Exp §'
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
   346
!
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
   347
Claus Gittinger <cg@exept.de>
parents: 8818
diff changeset
   348
version_SVN
12308
5d9291c0fc27 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12287
diff changeset
   349
    ^ '$Id: Tools__NavigationHistory.st 8074 2012-11-30 17:23:39Z vranyj1 $'
12125
0c49a3b13e43 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12123
diff changeset
   350
! !