Revision: 9496
Author: [email protected]
Date: Wed Jan 5 10:24:15 2011
Log: Limit SplitLayoutPanel dragging by available container space.
Review at http://gwt-code-reviews.appspot.com/1256801
http://code.google.com/p/google-web-toolkit/source/detail?r=9496
Modified:
/trunk/user/src/com/google/gwt/user/client/ui/DockLayoutPanel.java
/trunk/user/src/com/google/gwt/user/client/ui/SplitLayoutPanel.java
=======================================
--- /trunk/user/src/com/google/gwt/user/client/ui/DockLayoutPanel.java Fri
Sep 3 06:47:32 2010
+++ /trunk/user/src/com/google/gwt/user/client/ui/DockLayoutPanel.java Wed
Jan 5 10:24:15 2011
@@ -124,6 +124,7 @@
private Widget center;
private final Layout layout;
private final LayoutCommand layoutCmd;
+ private double filledWidth, filledHeight;
/**
* Creates an empty dock panel.
@@ -379,6 +380,16 @@
protected Widget getCenter() {
return center;
}
+
+ protected double getCenterHeight() {
+ return getElement().getClientHeight() / layout.getUnitSize(unit, true)
-
+ filledHeight;
+ }
+
+ protected double getCenterWidth() {
+ return getElement().getClientWidth() / layout.getUnitSize(unit, false)
-
+ filledWidth;
+ }
/**
* Resolve the specified direction based on the current locale. If the
@@ -510,5 +521,8 @@
break;
}
}
+
+ filledWidth = left + right;
+ filledHeight = top + bottom;
}
}
=======================================
--- /trunk/user/src/com/google/gwt/user/client/ui/SplitLayoutPanel.java Fri
Dec 10 10:51:39 2010
+++ /trunk/user/src/com/google/gwt/user/client/ui/SplitLayoutPanel.java Wed
Jan 5 10:24:15 2011
@@ -68,6 +68,11 @@
protected int getAbsolutePosition() {
return getAbsoluteLeft();
}
+
+ @Override
+ protected double getCenterSize() {
+ return getCenterWidth();
+ }
@Override
protected int getEventPosition(Event event) {
@@ -163,13 +168,15 @@
protected abstract int getAbsolutePosition();
+ protected abstract double getCenterSize();
+
protected abstract int getEventPosition(Event event);
protected abstract int getTargetPosition();
protected abstract int getTargetSize();
- private void setAssociatedWidgetSize(int size) {
+ private void setAssociatedWidgetSize(double size) {
if (size < minSize) {
size = minSize;
}
@@ -178,6 +185,12 @@
if (size == layout.size) {
return;
}
+
+ // Don't grow beyond remaining space
+ double centerSize = getCenterSize();
+ if (size - layout.size > centerSize) {
+ size = layout.size + centerSize;
+ }
layout.size = size;
@@ -206,6 +219,11 @@
protected int getAbsolutePosition() {
return getAbsoluteTop();
}
+
+ @Override
+ protected double getCenterSize() {
+ return getCenterHeight();
+ }
@Override
protected int getEventPosition(Event event) {
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors