-
-
Notifications
You must be signed in to change notification settings - Fork 353
/
SpMorphicPanedAdapter.class.st
108 lines (84 loc) · 2.24 KB
/
SpMorphicPanedAdapter.class.st
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
"
I'm an adapter for Paned Layouts.
A paned layout will split (horizontally or vertically) a panel and allow its resize.
"
Class {
#name : #SpMorphicPanedAdapter,
#superclass : #SpMorphicLayoutAdapter,
#instVars : [
'layout'
],
#category : #'Spec2-Adapters-Morphic-Layout'
}
{ #category : #private }
SpMorphicPanedAdapter >> addConstraits: constraints toChild: childMorph [
"adds constraits by child"
| theMorph |
theMorph := childMorph.
"keep constraints to layout usage"
theMorph setProperty: #constraints toValue: constraints.
^ theMorph
]
{ #category : #private }
SpMorphicPanedAdapter >> addSplitterIn: aPanel for: childMorph [
aPanel submorphs size = 1 ifFalse: [ ^ self ].
aPanel addMorphBack: (SpPanedResizerMorph perform: self selector)
]
{ #category : #private }
SpMorphicPanedAdapter >> basicAdd: aPresenter constraints: constraints to: aPanel [
| childMorph |
childMorph := self buildMorph: aPresenter constraints: constraints.
aPanel addMorphBack: childMorph.
self addSplitterIn: aPanel for: childMorph.
^ childMorph
]
{ #category : #accessing }
SpMorphicPanedAdapter >> direction [
^ self layout direction
]
{ #category : #accessing }
SpMorphicPanedAdapter >> layout [
^ layout
]
{ #category : #factory }
SpMorphicPanedAdapter >> layout: aLayout [
layout := aLayout.
widget
ifNil: [ widget := aLayout direction newWidgetOn: self.
widget layoutPolicy position: aLayout position.
self selector: self splitterNewSelector ].
super layout: aLayout
]
{ #category : #factory }
SpMorphicPanedAdapter >> newHorizontal [
^ self newPanel
listDirection: #leftToRight;
yourself
]
{ #category : #factory }
SpMorphicPanedAdapter >> newPanel [
^ PanelMorph new
layoutPolicy: SpMorphicPanedLayout new;
hResizing: #spaceFill;
vResizing: #spaceFill;
color: Color transparent;
yourself
]
{ #category : #factory }
SpMorphicPanedAdapter >> newVertical [
^ self newPanel
listDirection: #topToBottom;
yourself
]
{ #category : #private }
SpMorphicPanedAdapter >> resizingSetSelector [
^ layout isHorizontal
ifTrue: [ #hResizing: ]
ifFalse: [ #vResizing: ]
]
{ #category : #private }
SpMorphicPanedAdapter >> splitterNewSelector [
^ layout isHorizontal
ifTrue: [ #newHorizontal ]
ifFalse: [ #newVertical ]
]