<li><a href="#requirements">Requirements</a></li>
</ul>
-<p>Vaadin @version@ is a maintenance release for Vaadin Framework 6.6. It contains several important fixes.</p>
+<p>Vaadin @version@ is an update release for Vaadin Framework 6. In addition to various fixes, it
+contains a number of significant enhancements.</p>
- <h3>Enhancements</h3>
-<!-- ====================================================================== -->
-<!-- For minor releases, this should be after the enhancement highlights, for maintenance releases in the beginning. -->
-<h3>Change Log, Future Releases, and Upgrading</h3>
-
-<p>See this <a href="http://dev.vaadin.com/query?status=closed&group=resolution&order=priority&col=id&col=summary&col=owner&col=type&col=priority&col=component&col=version&milestone=Vaadin+@version@">list of closed tickets</a> for a
-full list of tickets fixed in this release.</p>
-
-<p>Problem fixes and enhancements planned for upcoming releases can be found in the <a
-href="http://dev.vaadin.com/roadmap">Vaadin Roadmap</a> in Vaadin Trac.</p>
-
-<p>As always, when upgrading from an earlier version, you should recompile any custom
-widget sets and refresh your project in Eclipse. If you are upgrading from
-6.5.x or earlier, notice that Vaadin 6.6 uses GWT 2.3 (included in the installation
-package). See <a href="#upgrading">General Upgrade Instructions</a> for more details on upgrading.</p>
-<!-- ====================================================================== -->
-
-<h3>Enhancements in Vaadin Framework 6.6</h3>
++<h3>Enhancements in Vaadin Framework 6.7</h3>
<p>General enhancements:</p>
<li>Top level windows no more gain focus automatically when the application is loaded in embedded hosting solutions like in Portals. Thus keyboard shortcuts might not work until a Vaadin component is focused either by user or via the server side API. (<a href="http://dev.vaadin.com/ticket/6724">#6724</a>)</li>
</ul>
- <p>See the following lists of closed tickets for a complete list of changes in this release:</p>
-
- <ul>
- <li> Tickets <a href="http://dev.vaadin.com/query?status=closed&group=resolution&milestone=Vaadin+6.6.0.pre1">closed in Vaadin 6.6.0.pre1</a></li>
- <li> Tickets <a href="http://dev.vaadin.com/query?status=closed&group=resolution&milestone=Vaadin+6.6.0">closed in the final Vaadin 6.6.0</a></li>
- </ul>
++<!-- ====================================================================== -->
++<!-- For minor releases, this should be after the enhancement highlights, for maintenance releases in the beginning. -->
+<h3>Change Log, Future Releases, and Upgrading</h3>
+
++<p>See this <a href="http://dev.vaadin.com/query?status=closed&group=resolution&order=priority&col=id&col=summary&col=owner&col=type&col=priority&col=component&col=version&milestone=Vaadin+@version@">list of closed tickets</a> for a
++full list of tickets fixed in this release.</p>
+
+<p>Problem fixes and enhancements planned for upcoming releases can be found in the <a
+href="http://dev.vaadin.com/roadmap">Vaadin Roadmap</a> in Vaadin Trac.</p>
+
+<p>As always, when upgrading from an earlier version, you should recompile any custom
+widget sets and refresh your project in Eclipse. If you are upgrading from
+6.5.x or earlier, notice that Vaadin 6.6 uses GWT 2.3 (included in the installation
+package). See <a href="#upgrading">General Upgrade Instructions</a> for more details on upgrading.</p>
++<!-- ====================================================================== -->
+
<h2 id="widgetupgrade">Upgrading from Vaadin 6.0 or 6.1</h2>
<p>The way how widget sets are defined was simplified in Vaadin 6.2.
// previously sorted header, since this now has more room.
HeaderCell oldSortedHeader = tHead.getHeaderCell(oldSortColumn);
if (oldSortedHeader != null) {
- oldSortedHeader.resizeCaptionContainer();
+ tHead.resizeCaptionContainer(oldSortedHeader);
}
+ }
- rendering = false;
- headerChangedDuringUpdate = false;
+ private void updateFirstVisibleAndScrollIfNeeded(UIDL uidl) {
+ firstvisible = uidl.hasVariable("firstvisible") ? uidl
+ .getIntVariable("firstvisible") : 0;
+ if (firstvisible != lastRequestedFirstvisible && scrollBody != null) {
+ // received 'surprising' firstvisible from server: scroll there
+ firstRowInViewPort = firstvisible;
+ scrollBodyPanel.setScrollPosition((int) (firstvisible * scrollBody
+ .getRowHeight()));
+ }
+ }
+ private void updatePageLength(UIDL uidl) {
+ int oldPageLength = pageLength;
+ if (uidl.hasAttribute("pagelength")) {
+ pageLength = uidl.getIntAttribute("pagelength");
+ } else {
+ // pagelenght is "0" meaning scrolling is turned off
+ pageLength = totalRows;
+ }
+
+ if (oldPageLength != pageLength && initializedAndAttached) {
+ // page length changed, need to update size
+ sizeInit();
+ }
+ }
+
+ private void updateSelectionProperties(UIDL uidl) {
+ if (!BrowserInfo.get().isTouchDevice()) {
+ multiselectmode = uidl.hasAttribute("multiselectmode") ? uidl
+ .getIntAttribute("multiselectmode")
+ : MULTISELECT_MODE_DEFAULT;
+ }
+ nullSelectionAllowed = uidl.hasAttribute("nsa") ? uidl
+ .getBooleanAttribute("nsa") : true;
+
+ if (uidl.hasAttribute("selectmode")) {
+ if (uidl.getBooleanAttribute("readonly")) {
+ selectMode = Table.SELECT_MODE_NONE;
+ } else if (uidl.getStringAttribute("selectmode").equals("multi")) {
+ selectMode = Table.SELECT_MODE_MULTI;
+ } else if (uidl.getStringAttribute("selectmode").equals("single")) {
+ selectMode = Table.SELECT_MODE_SINGLE;
+ } else {
+ selectMode = Table.SELECT_MODE_NONE;
+ }
+ }
+ }
+
+ private void updateDragMode(UIDL uidl) {
+ dragmode = uidl.hasAttribute("dragmode") ? uidl
+ .getIntAttribute("dragmode") : 0;
+ if (BrowserInfo.get().isIE()) {
+ if (dragmode > 0) {
+ getElement().setPropertyJSO("onselectstart",
+ getPreventTextSelectionIEHack());
+ } else {
+ getElement().setPropertyJSO("onselectstart", null);
+ }
+ }
+ }
+
+ protected void updateTotalRows(UIDL uidl) {
+ int newTotalRows = uidl.getIntAttribute("totalrows");
+ if (newTotalRows != getTotalRows()) {
+ if (scrollBody != null) {
+ if (getTotalRows() == 0) {
+ tHead.clear();
+ tFoot.clear();
+ }
+ initializedAndAttached = false;
+ initialContentReceived = false;
+ isNewBody = true;
+ }
+ setTotalRows(newTotalRows);
+ }
+ }
+
+ protected void setTotalRows(int newTotalRows) {
+ totalRows = newTotalRows;
+ }
+
+ protected int getTotalRows() {
+ return totalRows;
}
private void focusRowFromBody() {