TwoColumnTextView.st
author Claus Gittinger <cg@exept.de>
Sat, 18 Nov 1995 18:03:34 +0100
changeset 91 ef89e1292812
parent 86 4d7dbb5f1719
child 92 ca6389321c2a
permissions -rw-r--r--
fixes for different text sizes
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12
30f48431927b Initial revision
claus
parents:
diff changeset
     1
"
30f48431927b Initial revision
claus
parents:
diff changeset
     2
 COPYRIGHT (c) 1994 by Claus Gittinger
24
6704fad5eb7d *** empty log message ***
claus
parents: 14
diff changeset
     3
	      All Rights Reserved
12
30f48431927b Initial revision
claus
parents:
diff changeset
     4
30f48431927b Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
30f48431927b Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
30f48431927b Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
30f48431927b Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
30f48431927b Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
30f48431927b Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
30f48431927b Initial revision
claus
parents:
diff changeset
    11
"
30f48431927b Initial revision
claus
parents:
diff changeset
    12
49
claus
parents: 34
diff changeset
    13
SimpleView subclass:#TwoColumnTextView
24
6704fad5eb7d *** empty log message ***
claus
parents: 14
diff changeset
    14
	 instanceVariableNames:'textView1 textView2'
6704fad5eb7d *** empty log message ***
claus
parents: 14
diff changeset
    15
	 classVariableNames:''
6704fad5eb7d *** empty log message ***
claus
parents: 14
diff changeset
    16
	 poolDictionaries:''
6704fad5eb7d *** empty log message ***
claus
parents: 14
diff changeset
    17
	 category:'Views-Text'
12
30f48431927b Initial revision
claus
parents:
diff changeset
    18
!
30f48431927b Initial revision
claus
parents:
diff changeset
    19
30f48431927b Initial revision
claus
parents:
diff changeset
    20
!TwoColumnTextView class methodsFor:'documentation'!
30f48431927b Initial revision
claus
parents:
diff changeset
    21
30f48431927b Initial revision
claus
parents:
diff changeset
    22
documentation
30f48431927b Initial revision
claus
parents:
diff changeset
    23
"
30f48431927b Initial revision
claus
parents:
diff changeset
    24
    a view showing two texts side-by-side.
30f48431927b Initial revision
claus
parents:
diff changeset
    25
    Scrolling is synced, by always scrolling both views.
30f48431927b Initial revision
claus
parents:
diff changeset
    26
    This type of view is especially useful to show diff-lists,
91
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    27
    code-versions, or other one-by-one viewable texts.
12
30f48431927b Initial revision
claus
parents:
diff changeset
    28
30f48431927b Initial revision
claus
parents:
diff changeset
    29
    Usually, it does not make much sense, to put totally different
24
6704fad5eb7d *** empty log message ***
claus
parents: 14
diff changeset
    30
    or unrelated texts into this kind of view.
6704fad5eb7d *** empty log message ***
claus
parents: 14
diff changeset
    31
6704fad5eb7d *** empty log message ***
claus
parents: 14
diff changeset
    32
    See subclass DiffTextView for a real class;
6704fad5eb7d *** empty log message ***
claus
parents: 14
diff changeset
    33
    see ChangesBrowsers compare operation for a real application
6704fad5eb7d *** empty log message ***
claus
parents: 14
diff changeset
    34
    of this kind of views.
12
30f48431927b Initial revision
claus
parents:
diff changeset
    35
"
34
159147b254e1 *** empty log message ***
claus
parents: 24
diff changeset
    36
!
159147b254e1 *** empty log message ***
claus
parents: 24
diff changeset
    37
159147b254e1 *** empty log message ***
claus
parents: 24
diff changeset
    38
copyright
159147b254e1 *** empty log message ***
claus
parents: 24
diff changeset
    39
"
159147b254e1 *** empty log message ***
claus
parents: 24
diff changeset
    40
 COPYRIGHT (c) 1994 by Claus Gittinger
159147b254e1 *** empty log message ***
claus
parents: 24
diff changeset
    41
	      All Rights Reserved
159147b254e1 *** empty log message ***
claus
parents: 24
diff changeset
    42
159147b254e1 *** empty log message ***
claus
parents: 24
diff changeset
    43
 This software is furnished under a license and may be used
159147b254e1 *** empty log message ***
claus
parents: 24
diff changeset
    44
 only in accordance with the terms of that license and with the
159147b254e1 *** empty log message ***
claus
parents: 24
diff changeset
    45
 inclusion of the above copyright notice.   This software may not
159147b254e1 *** empty log message ***
claus
parents: 24
diff changeset
    46
 be provided or otherwise made available to, or used by, any
159147b254e1 *** empty log message ***
claus
parents: 24
diff changeset
    47
 other person.  No title to or ownership of the software is
159147b254e1 *** empty log message ***
claus
parents: 24
diff changeset
    48
 hereby transferred.
159147b254e1 *** empty log message ***
claus
parents: 24
diff changeset
    49
"
159147b254e1 *** empty log message ***
claus
parents: 24
diff changeset
    50
!
159147b254e1 *** empty log message ***
claus
parents: 24
diff changeset
    51
159147b254e1 *** empty log message ***
claus
parents: 24
diff changeset
    52
version
91
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    53
    ^ '$Header: /cvs/stx/stx/libwidg2/TwoColumnTextView.st,v 1.9 1995-11-18 17:03:34 cg Exp $'
12
30f48431927b Initial revision
claus
parents:
diff changeset
    54
! !
30f48431927b Initial revision
claus
parents:
diff changeset
    55
30f48431927b Initial revision
claus
parents:
diff changeset
    56
!TwoColumnTextView class methodsFor:'instance creation'!
30f48431927b Initial revision
claus
parents:
diff changeset
    57
30f48431927b Initial revision
claus
parents:
diff changeset
    58
openOn:firstText and:secondText
24
6704fad5eb7d *** empty log message ***
claus
parents: 14
diff changeset
    59
    "open up a view showing firstText and secondText side-by-side"
12
30f48431927b Initial revision
claus
parents:
diff changeset
    60
91
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    61
    |top v|
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    62
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    63
    top := StandardSystemView label:'differences'.
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    64
    v := HVScrollableView 
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    65
	       for:self 
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    66
	       miniScrollerH:true miniScrollerV:false
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    67
	       in:top.
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    68
    v origin:0.0 @ 0.0 corner:1.0 @ 1.0.
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    69
    v scrolledView text1:firstText text2:secondText.
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    70
    ^ top open
12
30f48431927b Initial revision
claus
parents:
diff changeset
    71
91
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    72
    "
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    73
     TwoColumnTextView
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    74
	openOn:('smalltalk.rc' asFilename contentsOfEntireFile)
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    75
	and:('display.rc' asFilename contentsOfEntireFile)
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    76
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    77
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    78
     TwoColumnTextView
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    79
	openOn:('display.rc' asFilename contentsOfEntireFile)
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    80
	and:('smalltalk.rc' asFilename contentsOfEntireFile)
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    81
    "
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    82
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    83
    "Modified: 18.11.1995 / 15:27:25 / cg"
12
30f48431927b Initial revision
claus
parents:
diff changeset
    84
! !
30f48431927b Initial revision
claus
parents:
diff changeset
    85
30f48431927b Initial revision
claus
parents:
diff changeset
    86
!TwoColumnTextView methodsFor:'queries'!
30f48431927b Initial revision
claus
parents:
diff changeset
    87
30f48431927b Initial revision
claus
parents:
diff changeset
    88
heightOfContents
91
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    89
    ^ textView1 heightOfContents max:textView2 heightOfContents
12
30f48431927b Initial revision
claus
parents:
diff changeset
    90
!
30f48431927b Initial revision
claus
parents:
diff changeset
    91
30f48431927b Initial revision
claus
parents:
diff changeset
    92
widthOfContents
91
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    93
    ^ textView1 widthOfContents max:textView2 widthOfContents
12
30f48431927b Initial revision
claus
parents:
diff changeset
    94
!
30f48431927b Initial revision
claus
parents:
diff changeset
    95
30f48431927b Initial revision
claus
parents:
diff changeset
    96
xOriginOfContents
91
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    97
    ^ textView1 xOriginOfContents max:textView2 xOriginOfContents
12
30f48431927b Initial revision
claus
parents:
diff changeset
    98
!
30f48431927b Initial revision
claus
parents:
diff changeset
    99
30f48431927b Initial revision
claus
parents:
diff changeset
   100
yOriginOfContents
91
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   101
    ^ textView1 yOriginOfContents max:textView2 yOriginOfContents
12
30f48431927b Initial revision
claus
parents:
diff changeset
   102
!
30f48431927b Initial revision
claus
parents:
diff changeset
   103
30f48431927b Initial revision
claus
parents:
diff changeset
   104
innerWidth
30f48431927b Initial revision
claus
parents:
diff changeset
   105
    ^ textView1 innerWidth
30f48431927b Initial revision
claus
parents:
diff changeset
   106
!
30f48431927b Initial revision
claus
parents:
diff changeset
   107
30f48431927b Initial revision
claus
parents:
diff changeset
   108
innerHeight
30f48431927b Initial revision
claus
parents:
diff changeset
   109
    ^ textView1 innerHeight
30f48431927b Initial revision
claus
parents:
diff changeset
   110
! !
30f48431927b Initial revision
claus
parents:
diff changeset
   111
30f48431927b Initial revision
claus
parents:
diff changeset
   112
!TwoColumnTextView methodsFor:'scrolling'!
30f48431927b Initial revision
claus
parents:
diff changeset
   113
30f48431927b Initial revision
claus
parents:
diff changeset
   114
scrollVerticalToPercent:p
91
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   115
    |master slave|
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   116
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   117
    textView1 heightOfContents > textView2 heightOfContents ifTrue:[
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   118
	master := textView1.
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   119
	slave := textView2.
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   120
    ] ifFalse:[
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   121
	master := textView2.
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   122
	slave := textView1.
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   123
    ].
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   124
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   125
    master scrollVerticalToPercent:p.
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   126
    slave scrollToLine:master firstLineShown.
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   127
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   128
    "Modified: 18.11.1995 / 15:25:53 / cg"
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   129
!
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   130
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   131
scrollHorizontalToPercent:p
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   132
    textView1 scrollHorizontalToPercent:p.
ef89e1292812 fixes for different text sizes
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   133
    textView2 scrollHorizontalTo:textView1 xOriginOfContents.
12
30f48431927b Initial revision
claus
parents:
diff changeset
   134
!
30f48431927b Initial revision
claus
parents:
diff changeset
   135
30f48431927b Initial revision
claus
parents:
diff changeset
   136
scrollDown:nLines
30f48431927b Initial revision
claus
parents:
diff changeset
   137
    textView1 scrollDown:nLines.
30f48431927b Initial revision
claus
parents:
diff changeset
   138
    textView2 scrollDown:nLines
30f48431927b Initial revision
claus
parents:
diff changeset
   139
!
30f48431927b Initial revision
claus
parents:
diff changeset
   140
30f48431927b Initial revision
claus
parents:
diff changeset
   141
scrollDown
30f48431927b Initial revision
claus
parents:
diff changeset
   142
    self scrollDown:1.
30f48431927b Initial revision
claus
parents:
diff changeset
   143
!
30f48431927b Initial revision
claus
parents:
diff changeset
   144
30f48431927b Initial revision
claus
parents:
diff changeset
   145
scrollUp
30f48431927b Initial revision
claus
parents:
diff changeset
   146
    self scrollUp:1.
30f48431927b Initial revision
claus
parents:
diff changeset
   147
!
30f48431927b Initial revision
claus
parents:
diff changeset
   148
30f48431927b Initial revision
claus
parents:
diff changeset
   149
scrollUp:nLines
30f48431927b Initial revision
claus
parents:
diff changeset
   150
    textView1 scrollUp:nLines.
30f48431927b Initial revision
claus
parents:
diff changeset
   151
    textView2 scrollUp:nLines
30f48431927b Initial revision
claus
parents:
diff changeset
   152
!
30f48431927b Initial revision
claus
parents:
diff changeset
   153
30f48431927b Initial revision
claus
parents:
diff changeset
   154
scrollLeft:nPixels
30f48431927b Initial revision
claus
parents:
diff changeset
   155
    textView1 scrollLeft:nPixels.
30f48431927b Initial revision
claus
parents:
diff changeset
   156
    textView2 scrollLeft:nPixels
30f48431927b Initial revision
claus
parents:
diff changeset
   157
!
30f48431927b Initial revision
claus
parents:
diff changeset
   158
30f48431927b Initial revision
claus
parents:
diff changeset
   159
scrollRight:nPixels
30f48431927b Initial revision
claus
parents:
diff changeset
   160
    textView1 scrollRight:nPixels.
30f48431927b Initial revision
claus
parents:
diff changeset
   161
    textView2 scrollRight:nPixels
30f48431927b Initial revision
claus
parents:
diff changeset
   162
!
30f48431927b Initial revision
claus
parents:
diff changeset
   163
30f48431927b Initial revision
claus
parents:
diff changeset
   164
scrollRight
30f48431927b Initial revision
claus
parents:
diff changeset
   165
    textView1 scrollRight.
30f48431927b Initial revision
claus
parents:
diff changeset
   166
    textView2 scrollRight
30f48431927b Initial revision
claus
parents:
diff changeset
   167
!
30f48431927b Initial revision
claus
parents:
diff changeset
   168
30f48431927b Initial revision
claus
parents:
diff changeset
   169
scrollToLine:lineNr
30f48431927b Initial revision
claus
parents:
diff changeset
   170
    textView1 scrollToLine:lineNr.
30f48431927b Initial revision
claus
parents:
diff changeset
   171
    textView2 scrollToLine:lineNr
30f48431927b Initial revision
claus
parents:
diff changeset
   172
!
30f48431927b Initial revision
claus
parents:
diff changeset
   173
30f48431927b Initial revision
claus
parents:
diff changeset
   174
scrollLeft
30f48431927b Initial revision
claus
parents:
diff changeset
   175
    textView1 scrollLeft.
30f48431927b Initial revision
claus
parents:
diff changeset
   176
    textView2 scrollLeft
30f48431927b Initial revision
claus
parents:
diff changeset
   177
! !
30f48431927b Initial revision
claus
parents:
diff changeset
   178
30f48431927b Initial revision
claus
parents:
diff changeset
   179
!TwoColumnTextView methodsFor:'initialization'!
30f48431927b Initial revision
claus
parents:
diff changeset
   180
30f48431927b Initial revision
claus
parents:
diff changeset
   181
initialize
30f48431927b Initial revision
claus
parents:
diff changeset
   182
    super initialize.
30f48431927b Initial revision
claus
parents:
diff changeset
   183
30f48431927b Initial revision
claus
parents:
diff changeset
   184
    textView1 := TextView origin:0.0 @ 0.0
24
6704fad5eb7d *** empty log message ***
claus
parents: 14
diff changeset
   185
			  corner:0.5 @ 1.0
6704fad5eb7d *** empty log message ***
claus
parents: 14
diff changeset
   186
			      in:self.
12
30f48431927b Initial revision
claus
parents:
diff changeset
   187
30f48431927b Initial revision
claus
parents:
diff changeset
   188
    textView1 borderWidth:1.
30f48431927b Initial revision
claus
parents:
diff changeset
   189
    textView1 level:0. 
30f48431927b Initial revision
claus
parents:
diff changeset
   190
30f48431927b Initial revision
claus
parents:
diff changeset
   191
    textView2 := TextView origin:0.5 @ 0.0
24
6704fad5eb7d *** empty log message ***
claus
parents: 14
diff changeset
   192
			  corner:1.0 @ 1.0
6704fad5eb7d *** empty log message ***
claus
parents: 14
diff changeset
   193
			      in:self.
12
30f48431927b Initial revision
claus
parents:
diff changeset
   194
30f48431927b Initial revision
claus
parents:
diff changeset
   195
    textView2 borderWidth:1.
30f48431927b Initial revision
claus
parents:
diff changeset
   196
    textView2 level:0. 
30f48431927b Initial revision
claus
parents:
diff changeset
   197
30f48431927b Initial revision
claus
parents:
diff changeset
   198
    "
30f48431927b Initial revision
claus
parents:
diff changeset
   199
     |v|
30f48431927b Initial revision
claus
parents:
diff changeset
   200
30f48431927b Initial revision
claus
parents:
diff changeset
   201
     v := HVScrollableView for:TwoColumnTextView.
30f48431927b Initial revision
claus
parents:
diff changeset
   202
     v scrolledView text1:('smalltalk.rc' asFilename readStream contents)
24
6704fad5eb7d *** empty log message ***
claus
parents: 14
diff changeset
   203
		    text2:('smalltalk_r.rc' asFilename readStream contents).
12
30f48431927b Initial revision
claus
parents:
diff changeset
   204
     v open
30f48431927b Initial revision
claus
parents:
diff changeset
   205
    "
30f48431927b Initial revision
claus
parents:
diff changeset
   206
! !
30f48431927b Initial revision
claus
parents:
diff changeset
   207
30f48431927b Initial revision
claus
parents:
diff changeset
   208
!TwoColumnTextView methodsFor:'accessing'!
30f48431927b Initial revision
claus
parents:
diff changeset
   209
30f48431927b Initial revision
claus
parents:
diff changeset
   210
text1:t1 text2:t2
30f48431927b Initial revision
claus
parents:
diff changeset
   211
    textView1 list:t1 asText.
30f48431927b Initial revision
claus
parents:
diff changeset
   212
    textView2 list:t2 asText.
30f48431927b Initial revision
claus
parents:
diff changeset
   213
! !