67 |
{ |
{ |
68 |
JViewport vp = (JViewport)parent; |
JViewport vp = (JViewport)parent; |
69 |
Component view = vp.getView(); |
Component view = vp.getView(); |
|
if (view instanceof Scrollable) |
|
|
{ |
|
|
Scrollable sc = (Scrollable) view; |
|
|
Dimension d = sc.getPreferredScrollableViewportSize(); |
|
|
return d; |
|
|
} |
|
|
else |
|
70 |
return view.getPreferredSize(); |
return view.getPreferredSize(); |
71 |
} |
} |
72 |
public Dimension minimumLayoutSize(Container parent) |
public Dimension minimumLayoutSize(Container parent) |
119 |
// the viewport require inputs in view space. |
// the viewport require inputs in view space. |
120 |
|
|
121 |
Rectangle portBounds = port.getViewRect(); |
Rectangle portBounds = port.getViewRect(); |
122 |
Dimension viewSize = port.getViewSize(); |
Dimension viewPref = view.getPreferredSize(); |
123 |
Dimension viewMinimum = view.getMinimumSize(); |
Dimension viewMinimum = view.getMinimumSize(); |
124 |
Point portLowerRight = new Point(portBounds.x + portBounds.width, |
Point portLowerRight = new Point(portBounds.x + portBounds.width, |
125 |
portBounds.y + portBounds.height); |
portBounds.y + portBounds.height); |
128 |
if (portBounds.height >= viewMinimum.height) |
if (portBounds.height >= viewMinimum.height) |
129 |
{ |
{ |
130 |
portBounds.y = 0; |
portBounds.y = 0; |
131 |
viewSize.height = portBounds.height; |
viewPref.height = portBounds.height; |
132 |
} |
} |
133 |
else |
else |
134 |
{ |
{ |
135 |
viewSize.height = viewMinimum.height; |
viewPref.height = viewMinimum.height; |
136 |
int overextension = portLowerRight.y - viewSize.height; |
int overextension = portLowerRight.y - viewPref.height; |
137 |
if (overextension > 0) |
if (overextension > 0) |
138 |
portBounds.y -= overextension; |
portBounds.y -= overextension; |
139 |
} |
} |
142 |
if (portBounds.width >= viewMinimum.width) |
if (portBounds.width >= viewMinimum.width) |
143 |
{ |
{ |
144 |
portBounds.x = 0; |
portBounds.x = 0; |
145 |
viewSize.width = portBounds.width; |
viewPref.width = portBounds.width; |
146 |
} |
} |
147 |
else |
else |
148 |
{ |
{ |
149 |
viewSize.width = viewMinimum.width; |
viewPref.width = viewMinimum.width; |
150 |
int overextension = portLowerRight.x - viewSize.width; |
int overextension = portLowerRight.x - viewPref.width; |
151 |
if (overextension > 0) |
if (overextension > 0) |
152 |
portBounds.x -= overextension; |
portBounds.x -= overextension; |
153 |
} |
} |
154 |
|
|
155 |
port.setViewPosition(portBounds.getLocation()); |
port.setViewPosition(portBounds.getLocation()); |
156 |
port.setViewSize(viewSize); |
port.setViewSize(viewPref); |
157 |
} |
} |
158 |
} |
} |