Content-Type: multipart/related; start=; boundary=----------1FpriX9kF0xHLMrvh6a4WC Content-Location: http://vaadin.com/download/release/6.6/6.6.1/release-notes.html Subject: =?utf-8?Q?Vaadin=206.6.1?= MIME-Version: 1.0 ------------1FpriX9kF0xHLMrvh6a4WC Content-Disposition: inline; filename=release-notes.html Content-Type: text/html; charset=utf-8; name=release-notes.html Content-ID: Content-Location: http://vaadin.com/download/release/6.6/6.6.1/release-notes.html Content-Transfer-Encoding: 8bit Vaadin 6.6.1

Version 6.6.1 built on 2011-06-03.

Release Notes for Vaadin Framework 6.6.1

Vaadin 6.6.1 is an update release for Vaadin Framework 6. In addition to various fixes, it contains a number of significant enhancements.

Enhancements

General enhancements:

  • GWT has been updated to version 2.3
    • If using Eclipse, update the Vaadin Plugin for Eclipse to the latest version before upgrading a project to use the new Vaadin version
    • If using build scripts to compile widget sets, after upgrading GWT libraries, copy and add also the validation-api-1.0.0.GA.jar and validation-api-1.0.0.GA-sources.jar to the class path
    • In Liferay, the latest version of Vaadin Control Panel for Liferay is needed for compiling the portal widget set
    • See the General Upgrade Instructions for more information
  • An error is shown to the end user when JAR and widgetset version do not match (#5423)
  • Support for touch device interfaces: one-finger touch scrolling, drag and drop, Slider, SplitPanel, sub-window handling, notifications, etc.
  • Support for Internet Explorer 9

In the server-side API:

  • More versatile Container.Filterable API that allows complex filters in containers (#6286)
  • Support for specifying nested bean properties with addNestedContainerProperty() (#4995)
  • Abstract base class AbstractProperty for simple Property implementations (#6860)
  • A getListeners() method to return all listeners in all classes that support listeners (#1410)
  • New AbstractContainer for common functionality in containers, especially listeners (#6521)
  • New submitUpload() method in the Upload component to start the upload programmatically (#6630)
  • BrowserInfo now includes browser time and timezone (#6691)
  • New getColumnGenerator() method in Table to get a column generator (#6844)
  • New AbstractProperty class for common features in Property implementations (#6860)
  • Renamed horizontal/verticalDropLocation() to getHorizontal/VerticalDropLocation() in WrapperTargetDetails (#6823)
  • CheckBox now supports null values, displayed as false (#6918)
  • The method Button.fireClick(MouseEventDetails) is used by Button instead of Button.fireClick(). Subclasses should override the former and not the latter.

In the client-side API:

  • Server communication methods in ApplicationConnection can now be overridden (#6885)

Backward-Incompatible Changes

  • The addContainerFilter() in Container.Filterable no longer accepts a filter string as a parameter, but a Filter object. You can use addContainerFilter(new SimpleStringFilter(...)) to get the same functionality of the old method.
  • DateFields no longer sets invalidAllowed(false) by default. The new behavior is consistent with all other fields in Vaadin and with DateField in Vaadin 6.3 and earlier.
  • 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. (#6724)

Change Log, Future Releases, and Upgrading

See the following lists of closed tickets for a complete list of changes in this release:

Problem fixes and enhancements planned for upcoming releases can be found in the Vaadin Roadmap in Vaadin Trac.

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 General Upgrade Instructions for more details on upgrading.

Upgrading from Vaadin 6.0 or 6.1

The way how widget sets are defined was simplified in Vaadin 6.2. Existing projects, where custom widgets (a custom widget set) are used, must be migrated when upgrading to Vaadin 6.2 or later. Projects where the default widget set is used do not need migration. For most projects this should be a quite painless upgrade.

For applications where custom widgets are used (also applicable to widget projects):

  • Remove the getTag() method from all components and replace it with a @ClientWidget(VClientSideWidget.class) annotation. Tag names are no longer used to map the server-side and client-side part of the component. This is done automatically using the @ClientWidget annotation.
  • Remove the WidgetSet.java file. This file is no longer needed as the mapping between the server- and the client-side is done automatically using @ClientWidget.

If you are using widgets from another project (typically in a separate JAR file):

  • Acquire a new JAR which is compatible with Vaadin 6.3 and add it to WEB-INF/lib. The widget set compilation will automatically include the JAR in your .gwt.xml during compilation if you use the Eclipse Compile Widget Set button. For Ant/Maven you need to specify the location of the widget set JARs that you want to include in the application widget set.

If you package a widget set as a JAR for use in other projects:

  • Replace getTag() with @ClientWidget and remove the -WidgetSet.java as described above.
  • Add a "Vaadin-Widgetsets: <fully qualified name of widgetset>" (e.g. "Vaadin-Widgetsets: com.example.widgetset.mywidgetset") row to the META-INF/MANIFEST.MF of the JAR file. This enables the widget set builder to automatically detect and include the widget set in other projects.

General Upgrade Instructions

When upgrading from an earlier version of the Vaadin library, you should always do the following.

All Users

  • If you have extracted any built-in themes or widget sets from the Vaadin Jar to a VAADIN folder that is served statically by the application server, you need to delete the old themes and widget sets and re-extract them from the new Vaadin Jar.

Eclipse Users

  1. Upgrade the Vaadin Integration Plugin for Eclipse to the latest version
    • Use the http://vaadin.com/eclipse software site to upgrade or install the stable version of the Vaadin Integration Plugin in Eclipse. If you have installed an unstable version of the plugin (see below), you need to remove it first.
    • For using pre-release versions of Vaadin and nightly builds, it is either recommended or often necessary to use the unstable "experimental" Vaadin Plugin for Eclipse. In such case, add http://vaadin.com/eclipse/experimental as a Software Site in Eclipse and upgrade the Vaadin Plugin.
  2. Set your project to use the new Vaadin version
    1. Select the new version in the Vaadin section in project preferences1
    2. The Eclipse plugin will automatically download the required GWT libraries and update launch configurations and the project build path
  3. If you have installed Vaadin add-ons containing custom widget sets, recompile them by selecting the project or the widget set and clicking the Compile Vaadin widgets button in Eclipse toolbar
  4. Stop the development server, clean up the working directories, and restart the server.

1 The Vaadin section is enabled only if the Vaadin Facet is configured for the project

NetBeans and Build Script Users

If you build the Vaadin application or the widget sets using an Ant script, such as in NetBeans, follow the following instructions:

  1. Copy the vaadin-6.6.1.jar library to the WEB-INF/lib directory in the project and remove the old version
  2. Refresh the project (in NetBeans or Eclipse)
  3. If using any add-ons containing custom widget sets:
    1. If the GWT version has changed, copy the GWT libraries to the compilation-time library directory of the project. The GWT libraries should not be located in the WEB-INF/lib directory, as they are not deployed together with the web application.
      • gwt-user.jar
      • gwt-dev.jar
      • validation-api-1.0.0.GA.jar (a GWT dependency)
      • validation-api-1.0.0.GA-sources.jar (a GWT dependency)
    2. The build script must include all the mentioned libraries in its class path
    3. Recompile the widget set using the build script

You can use the WebContent/docs/example-source/build-widgetset.xml Ant script in the Vaadin installation package as a template for a script for compiling the widget sets.

Maven Users

  • If the Vaadin version is defined as LATEST in the pom.xml, the new version is automatically used and you simply need to recompile the project.
  • If the Vaadin version is defined explicitly in the pom.xml, edit the file to change the version.

Maven downloads the defined Vaadin version and required GWT libraries automatically.

Notice that there can sometimes be a delay between the official release of Vaadin to when it is submitted to the central repository. Once in the central repository, the replication to other repositories can take several hours.

Liferay Users

  1. You may need to install a new version of the Vaadin Control Panel for Liferay
  2. Install the new Vaadin Jar to the ROOT/WEB-INF/lib directory in the portal
  3. Extract the contents of the VAADIN folder from the Jar to the static ROOT/html/VAADIN directory in Liferay. Only the PortalDefaultWidgetSet widget set is needed.
  4. If using any add-on components or custom widget sets, use the Vaadin Control Panel to recompile the combining widget set

Similar instructions apply for other portals, except that you need to recompile the widget sets for example using the build-widgetset.xml script included in the Vaadin installation package.

Notes and Limitations for Google App Engine

The following instructions and limitations apply when you run a Vaadin application under the Google App Engine.

  • Applications must use GAEApplicationServlet instead of ApplicationServlet in web.xml.

  • Session support must be enabled in appengine-web.xml:

        <sessions-enabled>true</sessions-enabled>
  • Avoid using the session for storage, usual App Engine limitations apply (no synchronization, i.e, unreliable).

  • Vaadin uses memcache for mutex, the key is of the form _vmutex<sessionid>.

  • The Vaadin WebApplicationContext class is serialized separately into memcache and datastore; the memcache key is _vac<sessionid> and the datastore entity kind is _vac with identifiers of the type _vac<sessionid>.

  • DO NOT update application state when serving an ApplicationResource (e.g ClassResource.getStream()).

  • AVOID (or be very careful when) updating application state in a TransactionListener or a HttpServletRequestListener - they are called even when the application is not locked and won't be serialized (e.g ApplicationResource), and changes can thus go missing (it should be safe to update things that can be safely discarded later - i.e valid only for the current request)

  • The application remains locked during uploads - a progress bar is not possible

Important known problems in Vaadin 6.6.1

  • #1155: Uncompressing the installation package fails in Windows if using the default Zip uncompression. Uncompression gives (in Windows Vista) an error message about too long filenames, and a more obscure message in other versions of Windows. Workaround: use 7-Zip or some other good unzip program for Windows.

For other known problems, see open tickets at developer site dev.vaadin.com.

Requirements

Vaadin is available for the following operating systems:

  • Windows (see the Zip installation notice above)
  • Linux
  • Mac OS X Tiger (mac) or Leopard (leopard)
  • Other UNIX operating systems, such as Sun Solaris

Vaadin supports Java Servlet API 2.3 and later versions and should work with any Java application server that conforms to the standard. It supports the following application servers:

  • Apache Tomcat, version 4.1 or later
  • BEA WebLogic® Server, version 9.2 or later
  • IBM WebSphere® Application Server, version 6.1 or later
  • JBoss Application Server, version 3.2.8 or later
  • Jetty, version 5 or later
  • Glassfish, version 2 or later

Vaadin supports the following browsers for using the applications made with it:

  • Mozilla Firefox 3 and 4
  • Internet Explorer releases 6, 7, 8 and 9
  • Safari 4 and 5
  • Opera 10 and 11
  • Google Chrome (latest version)

The support for browsers follows the support by GWT. The browsers are supported on both Windows and Mac, if available. Firefox is supported also on Linux. There may be differences between the exact versions of the supported browsers that may cause incompatibility with applications made with Vaadin.

------------1FpriX9kF0xHLMrvh6a4WC Content-Disposition: inline Content-Type: image/png Content-Location: http://vaadin.com/download/release/6.6/6.6.1/demo/img/vaadin-logo.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAYgAAAAuCAMAAAAFr35TAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAwBQTFRFLy8vJb/yDbjxdHR0rKysqqqq TMr0wcHBpaWlhoaG+/7/ZmZmXFxcAbTwampqtLS0KMDya9P2LcLzUMz1CLbwd3d3 kZGRKSkpNjY2vb29mZmZxe78JiYmgYGB+P3/BrbwHx8f9vz+eXl5KysrcnJyoaGh WFhYERERCAgIlJSUSEhIUlJSidz47vr+ODg4i4uL2/T9OsXzFRUVbGxsBQUFvuz7 aGhoHLzyruf6o+T6YmJiQcf0MDAwqKioQkJCfdn3QEBAdtf3nZ2dMzMzS0tLkpKS Ozs7BLXwDw8P5/j+jY2N5ff93fX9RUVFGBgYw+37g4ODe3t7RkZGl+D5JCQke9j3 c9b3LCwsR8n0HBwcPsb0N8TzISEhVlZWEbnxPDw8VFRUGhoaIiIiCwsLAgICPz8/ v7+/f39/n5+f39/fz8/P7+/vX19f/Pz8T09Pj4+Pr6+vQsf0WM71b29v+Pj429vb NDQ0/v7++vr6+/v7yMjI/f39zc3N8fHx8PDwu7u7pqam8/PzW1tb9PT09/f319fX 6+vrNTU1w8PD9vb21NTUuLi4ycnJTU1Nl5eXj974p6en7e3t7OzsZWVlx8fH1dXV ysrK4+PjFLrxoqKi3Nzc2trabtT2t7e37u7u5ubm8vv+9fX15OTkit34/f7/Wc71 8vLy6urqXl5efX194uLiubm56Ojo4ODgsrKyWlpa+fn52NjYq+b6XtD23t7es7Oz eNf3IL3yvOv74eHhvr6+np6eMsPz09PTGbvxxcXFrq6uyu/80dHR3vX9jo6O9Pz+ 1fP9sej6zMzMQ8j0urq6UFBQYGBgSMn02fT9iYmJS8r0Tk5ObNT2gNr4cXFx1PL8 V871pOT6tra2zPD8lpaW0tLSMMLz0NDQ6enpzvH8XM/10PH8xu78NMPzy8vL2dnZ uuv7Y9H2fn5+zs7Oten7g9v45+fn1/P9hNv4H73yE7rx4fb9m+L5qOX6qeb6jd34 wOz71tbWVM31lOD5cNX3wsLCALTwAQEBAAAA////C5bkGQAACtdJREFUeNrsmwd0 FMcZgNdIhPrk0HwyCLwBLJ1FF0fAoMgQEVjH5pyAbFk2hpC7Lbd7Op0jUAFJgOm9 g+kYHFMcDLiXuMR2XGI7bjjupHenNydBM5m65W6voCicXt7Ne+hm/im7+387///P zCLAbOoQSehQd3P373tfgtJHfWZ9Nwsik2nceZ4+Gp0FkcF0tQni/K2DsiAyl66/ 0yLxYhZEBtPvNg1/eDwF8VYWRPuk6g8/ns/zB5svoOMLnQiIz2RBtEvaMzIISp8l 2adHFonHq9PvejMBcXsWRLukQoDSTJxbOQ9n+6ff9ZtZEO2YRoLWVlCB58H3AM6+ mX7Xb2RBtGOahrVfYIHYkAWRaRDnSrBpuioLItMg4OPlAX+/xjaDeLHPp+PS66ip tkJIVZLVK2qoLY+lybLuNpyqXeA4qv1ONQriTFPTWrueDnzc9OtdvFC/5/Jn3vvw rriRmpsujXY5EX+FT7p8oeti9IxzLRBoxIaYVmv03N25O5vTAYG3Pa74cVpPJwNb QQFqsnoVKG3hACRBcRsOyBc2kL2vgjsL8OhUX2trcNWTprxrVTAYLDpej/NbRtV5 kV0JVox91jHO069WBZFckvsvc8jve7MI26HA3I11FohFT4S3PUTU/3zPU4V52+GD ORW4N6japqcG8S9cGJ7iuage/vcgIkB3H64dQOQBkvJ5oL/CRwXvoXzn2YAnb85y s2fLtqApH3KvbY5twBIEgPw1QQzFZTT7qr9GegTGltB6POrAlCB64cL4KQO6XyCI VDOmTckxQjuDEKjOwGom7kfKraAfhF+h+qRlULaVtdhVZ5cHTTfcJFpyG4hPJMym fBHUGR7HqD3SAoFS72Qs/h9AFDPFM42sqWDa2ggvs2kMi8ronGgud4rBlbTnySqH 3ASx10es1HzYxUGAUxmVAsTfrH3A3jd+5253zwdEFTlf9HTRiCRGFMtZq5qhykAO h2xPH1VrmLNGf0JhQZJr2EDRiABQwenIFSwkAyiqCFSrLiEIo0YWJbk2xLyygu8p anp7SYpobiBWS9ROlBwg0oeY1chfqvv4CwysSYJSD0tMc4EVxBMUx8g5iAUEhGc+ bJltVoCiygIvvVJgj/vK+qesNGLSeVv69jUuLGRyTQX9hoEoy8QOMh8BBKRFWQCS bmpOIwXiI1RQK0myLAEaPIYBEFBbodbuP5AQD4DHVNl1UoAwBHwXIpBCpFEtvada VgVwlewCAq54nayC2Yt9G9FOz/7NcAZVbNGwfhMrqM68O1CDnUFKqvLzOVO9tMkw 3PEZRlD+6sDbJOAGAu6c66Nyb7fD1Q1re9AeQ2P1OoWovNN1rDjoN/t6O1i8/cOE pgngd1uXQMgEQRFopAF5esqBgwBhA6knQvqptEaRbMqGNUAIUaGermkKgzANB8LW PYXIPaEqwYCUaDwICLdjkw7KcPYEMehfX4S0Ruw8KF6ApEsHUgXWkrFwzvel0/iR 82kBT4kykpVy8ShnJgM3EJA6JOC7j95BDilVzI/R6g1U4S//4gXuFLq/P/z2ThaK 6bdOSACCBkrkjeYgqE4FwDTHOHAQokHMGIigvxILiaJ2EFSBWBhJF4Qk2mQypYKA 1uDr0Ouh6MsVRD2ZEr4dpD3WDY5lBpNc/hoe7bVSQ9/iJ7kPqHhlASkhOx8K4DGC zBQ2VwJXEHXA5o7gPVXkuk/Gvt/7uMLHXGcJ//Tuj/5goRjnDkKxIlcGQrIpDf3R gKBDGwjV6q8QVVNqiqWkMMuJIF0QbHEXYiBs90Ro0DpXEPAJop/jyNCT8D9wkr3h oHU/X4HNxkXvz+F2Ep+W15srHFwsRCsIMsQMPnhnVxD15cQIrrPCcly8NM7SXP3a U9OJwq9xiA/d8NtJfc+7VJggjDgQsgNEDeDajgehmQsPm49QgWbeq5J+1GQo0VqB gdCtewqbA4vuIFrmkcBmOdyOHQA4hUQNOHoC/nt4655EZ/+GS4iGB5tLB+wmwDQI PyDy17n8oAQSg1joHHRzHIgRm8ZQhfdyygcN2DeHgng4WfiaGAT23VE7CMXqr4Jo /GLPyqouIELuzhoFVyiJll/i92R1l91BkMUDAPvR6g7/dsFugZiNIeZ5Dq1ZDPsT hV/Gxd8qwvJVEMW6WL7RXPOVuIGAFMR2O4hWsCSWwwR+dN13gE06+s+fPmXapr+2 DYRg6EAy3EGYdiN9EGYzwwYCRUaCqigGdANhpABxhrzYx5aTmZG/yJwRRQd465kM xGaiu7Nc/BKZQvkQ7ibysVy+w5fOjLjDFcRz1C/f2evI+1z0uQFvszlCI6opg9oG wsAKjbiDUGiEya0QN72q/f13gAibZovq0oyzwg5nbbsny+ZJCUDAV7CGqroRxXyR SGbY8ijGDTAQ64lTmL3MNKetFMRCIp93FNoDIldnHWOa4kEcof74UV6+9v5fXmIL XzvdPOu55CvrxCCsFzkehAFYtGNIFogQW2LggCfWWWuW9sPmbLIwhuJBaJx1FCQC sZ/E9DjMB346fQYSJfl3kMKyyXSRsJhGOmbgc6mXg1gmktwGuk+b6/0vQDxA9P1Z HrreNMdGoe/L/7w+5RZHchAhSTTcQCBtqjy2VGz2R2NCNRYEAsamhA5s7qKW+ZpI PAiDRciGmBBEA4038b8cKlnroyS0rfXN6/KtDamxbBH3s+XVJ7uxFd1Ic48KlG/e tVI/yxblBdACAV1AUNOUG6PVHxCVT+IRlI3CpE3fd9+6EaUQMsrpgUC2o9YVBFp0 RRQYlYFtRmBhWMdCIX63Cr3XYbxiUQHQ7HqVNEPX0PJa1GPuCV1aUnVDEyUxEQjq bMmq9x92LSG1+UvNzTwweR3cG6CTI1hQKfG9D+nsUXi4iLWXSoK8vTf8IAcR6HHC BLHeCaJuczqbflfckogCeQvpFkdaIIhxcgEBdYHsYaiOLXKdbqCEDZdtw6hId3Qk zXloQYImRY+7J0RCInW6nBDEuSKmVPNw+TF/zF4T2WtdDUeZm6iWGMxsgFe6yUuX UhAoW4f8yioXEEiQmwTEW4TCmOHvpDjxUox2OFdUVDVqIBvlOCfRa1Qt0XFeVEUp GiMMaWoNHkF3OfIwUA8l6VFpHlOKtbxa7I3dTkX1E2H9MRAnB/jWf+UmvxzuDQKe jQVRyOBPTTUjbroYx8b8uNOQpEyeWTfRzTzPaatynd9UrbkDewzCxjwQKwfgJWze AvHyx+HBAMvey9cR653wW0FxEhDv4sKjF0MXIpsIYXNbIzMfDxSDuK8tQqfMo7iy KvpLDuSWeLi4hPYCI0lQpA9jx3tA7El/S5E9mkiznhYIt5E+5/j4C1nzrklAdL9x /CNHLoousO/V8JmDYGQURKhY8vmHxnxt0TR4mlhSVZe3GK59xePxTGMqW7qkcIjf XzD1+RPwqlUez5A7HmPt1365ML902sTdW2HnstLS0lexbb0rpxI1GYa3aLfmCZWR 1bY5N8MzxJO/MelXHPDQxfpfK9QvS+EMcHB+TnN4wRaXJktXttBMY4P9Y4zqLSvZ KfbphlQfttY3NHDA9YucVY2NjclP6C5uUhQ9I9ftaJ/lZxxExlJHBJH9CLmDpD5Z EB0iDXqEgHgtCyKTafQ7P6FbTecfyILIXDr0Rt/pfIdvVhZE5tIEa6f1j9dmQWQu 3W99pvEXmAWRuTTiFophzht/h1kQ2ZSJ9B8BBgAAFZ/EVj+hfwAAAABJRU5ErkJg gg== ------------1FpriX9kF0xHLMrvh6a4WC Content-Disposition: inline; filename=styles.css Content-Type: text/css; charset=utf-8; name=styles.css Content-Location: http://vaadin.com/download/release/6.6/6.6.1/demo/css/styles.css Content-Transfer-Encoding: 8bit html { margin: 0; padding: 0; text-align: center; } body { background-color: #fff; font: normal 14px/20px Helvetica, "Lucida Grande", Arial, Verdana, sans-serif; color: #464440; padding: 0; min-width: 980px; text-align: left; margin: 0 auto; } .clearer { height: 0; overflow: hidden; clear: both; } h1,h2,h3,h4,h5,h6 { color: #000; font-weight: normal; line-height: normal; } h1 { font-size: 48px; font-weight: bold; } h2 { font-size: 36px; font-weight: bold; } h3 { font-size: 30px; font-weight: bold; margin-bottom: 23px; } h4 { font-size: 18px; margin-bottom: .8em; } h5 { font-size: 16px; margin-bottom: .5em; } h6 { font-size: 14px; margin: .6em 0 .1em; } p { margin: 0 0 1em; } a { text-decoration: none; padding: 0 3px; margin: 0 -3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px; } a:link { color: #00a2d8; } a:visited { color: #003648; } a:hover { background: #e4e3da; color: #505048; } a:active { color: #000; background: #a09f91; } ul { list-style-type: square; } .codeblock { background: #f0efea; padding: 1em; margin: 1em 0; -webkit-border-radius: 8px; -moz-border-radius: 8px; } .codeblock h4 { margin-top: 0; } /*************************************************** * Furniture ***************************************************/ #header { height: 93px; position: relative; } #header h1 { width: 393px; height: 46px; background: transparent url(../img/vaadin-logo.png) no-repeat; position: absolute; top: 23px; left: 50%; margin: 0; margin-left: -484px; text-indent: -9999px; } #version { position: absolute; left: 50%; top: 38px; color: #000; text-align: right; width: 484px; } #version a { color: #78776d; display: inline-block; zoom: 1; padding: 1px 12px; font-size: 12px; background: #e4e3da; -moz-border-radius: 9px; -webkit-border-radius: 9px; border-radius: 9px; } #version a:hover { border: none; background: #a09f91; color: #fff; } #version .release-notes { margin-left: 10px; } #subheader { position: relative; height: 38px; line-height: 38px; background: #000; } #menu, #links { list-style: none; padding: 0; margin: 0; } #subheader li { display: inline; float: left; padding: 0; } #menu { position: absolute; left: 50%; width: 650px; margin-left: -483px; font-weight: bold; white-space: nowrap; z-index: 2; } #menu li { margin: 0 .3em; } #menu li, #menu a { color: #d9d8cb; } #links { width: 484px; position: absolute; top: 2px; left: 50%; z-index: 1; } #links li { float: right; } #links a { font-size: 12px; line-height: 34px; color: #a09f91; margin-left: 14px; white-space: nowrap; } #subheader a:hover { background: transparent; color: #fff; } ul { padding-left: 1.3em; } #footer { margin: 0 auto; width: 968px; height: 60px; color: #000; font-size: 11px; } #footer a { float: right; } #footer strong { font-size: 13px; } #footer strong em { color: #00b4f0; font-style: normal; margin: 0 0.2em 0 -0.15em; } /*************************************************** * Sampler ***************************************************/ #upfront { position: relative; height: 257px; padding: 50px 0; font-size: 18px; line-height: 24px; text-align: center; } #sampler { width: 366px; padding-right: 600px; margin: 0 auto; text-align: left; position: relative; } #sampler h2 { font-weight: bold; font-size: 48px; line-height: normal; margin: 0; } #sampler a { display: block; } #sampler a:hover { background: transparent; color: ; } #sampler p, #sampler .new { font-weight: normal; color: #464440; text-decoration: none; margin-top: 1em; } #sampler .start { display: inline-block; zoom: 1; padding: 8px 10px 6px 15px; color: #fff; line-height: normal; background: #00b4f0; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; } #sampler a:hover .start { background: #33c3f3; } #sampler .new { display: block; margin-top: 16px; font-size: 12px; line-height: 1.5; font-weight: bold; } #sampler .new em { font-style: normal; color: #959588; } #sampler-slideshow { position: absolute; right: 0; top: 0; width: 574px; height: 258px; overflow: hidden; } #sampler-slideshow .mask { position: absolute; left: 0; top: 0; width: 574px; height: 258px; background: transparent url(../img/sampler-screen-clip.png) no-repeat; z-index: 10; } #sampler-slideshow ul { position: absolute; list-style: none; top: 0; left: 0; margin: 0; padding: 0; } #sampler-slideshow li { position: absolute; width: 574px; height: 258px; margin: 0; padding: 0; top: 2px; left: 3px; } #sampler-slideshow li.active { opacity: 1; z-index: 10; } #sampler-slideshow li.last-active { z-index: 9; } /*************************************************** * Content wrapper ***************************************************/ #content { position: relative; margin: 0 0 56px -484px; left: 50%; width: 968px; overflow: hidden; } /*************************************************** * Vertical tabs ***************************************************/ #tabs { float: left; width: 196px; } #tabs .tab { font-size: 18px; cursor: pointer; padding: 8px 14px; background: #fff; color: #a09f91; -webkit-transition: linear .2s color; } #tabs .tab * { vertical-align: middle; } #tabs .tab a { margin: 0; padding: 0; color: #00a2d8; -webkit-transition: linear .2s color; } #tabs .tab:hover a, #tabs .tab a:focus { background: transparent; margin: 0; padding: 0; color: #464440; } #tabs .tab:hover { color: #464440; } #tabs .tab span { font-size: 9px; margin-left: .7em; } #tabs .selected, #tabs .selected:hover, #tabs .selected:hover a, #tabs .selected a, #tabs .selected a:hover, #tabs .selected a:focus { color: #000; cursor: default; -webkit-transition: linear .2s color; font-weight: bold; } #tabs .first { margin-top: 0; } h3.reasons { color: #78776d; margin: 0 0 40px; height: 30px; } #reasons { list-style: none; margin: 0; padding: 0; } #reasons.js { float: left; width: 769px; } #reasons .tab { display: block; margin: 0 0 1em; padding: 20px 40px; background: #efeee9; -webkit-border-radius: 9px; -moz-border-radius: 9px; border-radius: 9px; clear: left; overflow: hidden; } #reasons.js .tab { width: 689px; } #reasons .tab h4 { font-weight: bold; font-size: 24px; margin: 14px 0 24px; } #reasons .tab .col { width: 22.8%; margin-right: 2%; float: left; margin-bottom: 2em; } #reasons .tab .col2 { width: 47.8%; margin-right: 2%; float: left; margin-bottom: 2em; } #reasons .tab .col3 { width: 72.8%; margin-right: 2%; float: left; margin-bottom: 2em; } #reasons .tab .col4 { clear: left; margin-bottom: 2em; } #reasons .tab .newline { clear: left; } #reasons .tab p:last-child { margin: 0; } #reasons .tab h5 { margin-top: 0; } /*************************************************** * Thumbnail links ***************************************************/ .thumb { display: inline; display: inline-block; zoom: 1; position: relative; width: 182px; overflow: hidden; padding: 0; margin: 1em 0 0; background: transparent; } .thumb:hover { background: transparent; } .thumb img { position: absolute; top: 0; left: 0; margin: 0; border: none; } .thumb span { display: block; position: relative; top: 0; left: 0; padding: 116px 0 0; background: transparent url(../img/screen-clip.png) no-repeat; color: #464440; text-align: center; font-size: 12px; line-height: 1.3; } .thumb span strong { display: block; font-size: 13px; } .thumb:hover span { background-position: right top; } .thumb.video span { background-image: url(../img/video-screen-clip.png); } .thumb-rel, .thumb-rel:hover { font-size: 11px; background: transparent; display: block; text-align: center; } .col2 .thumb { margin-left: 22%; } /*************************************************** * Section specific styles ***************************************************/ img { border: none; } .book { overflow: hidden; } .book h5 { font-weight: bold; font-size: 18px; } .book h6 { margin: -0.7em 0 .7em; color: #464440; font-size: 13px; font-style: italic; color: #736f5e; } .book img { float: left; margin-right: 1.2em; } .dzone img, .tutorial img { float: left; margin: 0 1em 2em 0; } .tools img { margin: 0em 2em .8em 2em; float: right; } ------------1FpriX9kF0xHLMrvh6a4WC--