+++ /dev/null
-@import url(../runo/styles.css);
-
-
-/******************************************************************************
- * For ToolkitTunesLayout.java
- ******************************************************************************/
-
-.tTunes, .tTunes select, .tTunes button {
- font-size: 11px;
- line-height: 14px;
- color: #000;
- font-family: "Lucida Grande", Helvetica, Arial, sans-serif;
-}
-
-.tTunes .top {
- background: transparent url(images/top-bg.png) repeat-x;
-}
-
-/* Hide all button captions */
-.tTunes .top .v-button span {
- display: none;
-}
-
-.tTunes .playback .v-button {
- width: 31px;
- height: 32px;
- overflow: hidden;
- padding: 0;
- border: none;
-}
-
-.tTunes .playback .play {
- width: 37px;
- height: 38px;
- background: transparent url(images/play.png);
-}
-
-.tTunes .playback .prev {
- background: transparent url(images/prev.png);
-}
-
-.tTunes .playback .next {
- background: transparent url(images/next.png);
-}
-
-.tTunes .volume .mute {
- width: 13px;
- height: 14px;
- background: transparent url(images/mute.png) no-repeat left bottom;
- border: none;
- padding: 0;
- overflow: hidden;
-}
-
-.tTunes .volume .max {
- width: 17px;
- height: 14px;
- background: transparent url(images/max.png) no-repeat right bottom;
- border: none;
- padding: 0;
- overflow: hidden;
-}
-
-.tTunes .volume .v-slider {
- border: none;
-}
-
-.tTunes .volume .v-slider-base {
- background: transparent url(images/volume-bar.png) no-repeat 0 50%;
- height: 6px;
- border: none;
- border-top: 1px solid #aaa;
-}
-
-.tTunes .volume .v-slider-handle {
- background: transparent url(images/volume-knob.png) no-repeat;
- margin-top: -3px;
-}
-
-.tTunes .status {
- background: transparent url(images/status-bg.png) repeat-x;
- line-height: 12px;
- border-right: 1px solid #959985;
- border-left: 1px solid #959985;
- border-radius: 5px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
-}
-
-.tTunes .status .v-horizontallayout-margin-top {
- padding-top: 3px;
-}
-.tTunes .status .v-horizontallayout-margin-bottom {
- padding-bottom: 3px;
-}
-.tTunes .status .v-horizontallayout-margin-left {
- padding-left: 9px;
-}
-.tTunes .status .v-horizontallayout-margin-right {
- padding-right: 9px;
-}
-
-.tTunes .status .v-label {
- white-space: nowrap;
-}
-
-.tTunes .status .v-slider {
- border: 1px solid #000;
- border-left: none;
- border-right: none;
- height: 7px;
- margin: 0;
-}
-
-.tTunes .status .v-slider-base {
- border: none;
- height: 7px;
- border-left: 1px solid #000;
- border-right: 1px solid #000;
- background: transparent;
-}
-
-.tTunes .status .v-slider-handle {
- margin: 0;
- width: 7px;
- height: 7px;
- background: transparent url(images/progress-knob.png);
-}
-
-.tTunes .toggle-vis,
-.tTunes .jump {
- width: 11px;
- height: 11px;
- overflow: hidden;
- border: none;
- background: transparent url(images/toggle-visualization.png);
- padding: 0;
-}
-
-.tTunes .jump {en;
- border: none;
- background: transparent url(images/jump-to.png);
-}
-
-
-.tTunes .viewmode-table,
-.tTunes .viewmode-grid,
-.tTunes .viewmode-coverflow {
- border: none;
- width: 27px;
- height: 22px;
- overflow: hidden;
-}
-
-.tTunes .viewmode-table {
- background: transparent url(images/table-view.png) no-repeat right top;
-}
-
-.tTunes .viewmode-grid {
- background: transparent url(images/grid-view.png) no-repeat;
-}
-
-.tTunes .viewmode-coverflow {
- background: transparent url(images/coverflow-view.png) no-repeat;
-}
-
-
-
-.tTunes .v-splitpanel-horizontal .v-splitpanel-hsplitter {
- width: 1px;
- background: #404040;
-}
-
-.tTunes .v-splitpanel-horizontal .v-splitpanel-hsplitter div {
- width: 3px;
- border: none;
- background: transparent;
-}
-
-
-
-.tTunes .sidebar {
- background: #d1d7e2;
-}
-
-.tTunes .sidebar .v-label {
- padding: 7px 0 3px 10px;
- font-weight: bold;
- text-transform: uppercase;
- color: #505d6d;
- text-shadow: #fff 0 1px 0;
-}
-
-.tTunes .sidebar .v-button {
- text-align: left;
- border: none;
- background: transparent;
- line-height: 15px;
- padding: 2px 0;
-}
-
-.tTunes .sidebar .v-button span {
- padding-left: 25px;
-}
-
-.tTunes .sidebar .selected {
- background: transparent url(images/selected-bg.png) repeat-x;
- color: #fff;
- font-weight: bold;
- text-shadow: #384359 0 1px 0;
- padding: 0;
-}
-
-.tTunes .sidebar .selected span {
- display: block;
- background: transparent url(images/icon-music.png) no-repeat 25px 1px;
- padding: 2px 0 2px 45px;
-}
-
-.tTunes .sidebar .v-caption {
- background: transparent url(images/table-header-bg.png) repeat-x;
- padding: 1px 0;
- font-weight: bold;
- text-shadow: #eee 0 1px 0;
- text-align: center;
- color: #202020;
- border-top: 1px solid #404040;
- border-bottom: 1px solid #555;
-}
-
-.tTunes .sidebar .v-captiontext {
- float: none;
-}
-
-
-.tTunes .v-table-header-wrap {
- height: 16px;
- border: none;
- border-bottom: 1px solid #555;
- background: transparent url(images/table-header-bg.png) repeat-x;
-}
-
-.tTunes .v-table-caption-container {
- font-size: 11px;
- color: #000;
- font-weight: bold;
- text-shadow: #fff 0 1px 0;
- padding-top: 1px;
-}
-
-.tTunes .v-table-body {
- border: none;
-}
-
-.tTunes .v-table-row-odd {
- background: #f1f5fa;
-}
-
-.tTunes .v-table-row:hover {
- background: #fff;
-}
-
-.tTunes .v-table-row-odd:hover {
- background: #f1f5fa;
-}
-
-.tTunes .v-table .v-selected {
- background: #3d80df;
-}
-
-.tTunes .v-table-cell-content {
- padding: 0 0 0 3px;
- line-height: normal;
-}
-
-.tTunes .v-table select {
- padding: 0 2px;
-}
\ No newline at end of file
--- /dev/null
+@import url(../runo/styles.css);
+
+
+/******************************************************************************
+ * For VaadinTunesLayout.java
+ ******************************************************************************/
+
+.tTunes, .tTunes select, .tTunes button {
+ font-size: 11px;
+ line-height: 14px;
+ color: #000;
+ font-family: "Lucida Grande", Helvetica, Arial, sans-serif;
+}
+
+.tTunes .top {
+ background: transparent url(images/top-bg.png) repeat-x;
+}
+
+/* Hide all button captions */
+.tTunes .top .v-button span {
+ display: none;
+}
+
+.tTunes .playback .v-button {
+ width: 31px;
+ height: 32px;
+ overflow: hidden;
+ padding: 0;
+ border: none;
+}
+
+.tTunes .playback .play {
+ width: 37px;
+ height: 38px;
+ background: transparent url(images/play.png);
+}
+
+.tTunes .playback .prev {
+ background: transparent url(images/prev.png);
+}
+
+.tTunes .playback .next {
+ background: transparent url(images/next.png);
+}
+
+.tTunes .volume .mute {
+ width: 13px;
+ height: 14px;
+ background: transparent url(images/mute.png) no-repeat left bottom;
+ border: none;
+ padding: 0;
+ overflow: hidden;
+}
+
+.tTunes .volume .max {
+ width: 17px;
+ height: 14px;
+ background: transparent url(images/max.png) no-repeat right bottom;
+ border: none;
+ padding: 0;
+ overflow: hidden;
+}
+
+.tTunes .volume .v-slider {
+ border: none;
+}
+
+.tTunes .volume .v-slider-base {
+ background: transparent url(images/volume-bar.png) no-repeat 0 50%;
+ height: 6px;
+ border: none;
+ border-top: 1px solid #aaa;
+}
+
+.tTunes .volume .v-slider-handle {
+ background: transparent url(images/volume-knob.png) no-repeat;
+ margin-top: -3px;
+}
+
+.tTunes .status {
+ background: transparent url(images/status-bg.png) repeat-x;
+ line-height: 12px;
+ border-right: 1px solid #959985;
+ border-left: 1px solid #959985;
+ border-radius: 5px;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+}
+
+.tTunes .status .v-horizontallayout-margin-top {
+ padding-top: 3px;
+}
+.tTunes .status .v-horizontallayout-margin-bottom {
+ padding-bottom: 3px;
+}
+.tTunes .status .v-horizontallayout-margin-left {
+ padding-left: 9px;
+}
+.tTunes .status .v-horizontallayout-margin-right {
+ padding-right: 9px;
+}
+
+.tTunes .status .v-label {
+ white-space: nowrap;
+}
+
+.tTunes .status .v-slider {
+ border: 1px solid #000;
+ border-left: none;
+ border-right: none;
+ height: 7px;
+ margin: 0;
+}
+
+.tTunes .status .v-slider-base {
+ border: none;
+ height: 7px;
+ border-left: 1px solid #000;
+ border-right: 1px solid #000;
+ background: transparent;
+}
+
+.tTunes .status .v-slider-handle {
+ margin: 0;
+ width: 7px;
+ height: 7px;
+ background: transparent url(images/progress-knob.png);
+}
+
+.tTunes .toggle-vis,
+.tTunes .jump {
+ width: 11px;
+ height: 11px;
+ overflow: hidden;
+ border: none;
+ background: transparent url(images/toggle-visualization.png);
+ padding: 0;
+}
+
+.tTunes .jump {en;
+ border: none;
+ background: transparent url(images/jump-to.png);
+}
+
+
+.tTunes .viewmode-table,
+.tTunes .viewmode-grid,
+.tTunes .viewmode-coverflow {
+ border: none;
+ width: 27px;
+ height: 22px;
+ overflow: hidden;
+}
+
+.tTunes .viewmode-table {
+ background: transparent url(images/table-view.png) no-repeat right top;
+}
+
+.tTunes .viewmode-grid {
+ background: transparent url(images/grid-view.png) no-repeat;
+}
+
+.tTunes .viewmode-coverflow {
+ background: transparent url(images/coverflow-view.png) no-repeat;
+}
+
+
+
+.tTunes .v-splitpanel-horizontal .v-splitpanel-hsplitter {
+ width: 1px;
+ background: #404040;
+}
+
+.tTunes .v-splitpanel-horizontal .v-splitpanel-hsplitter div {
+ width: 3px;
+ border: none;
+ background: transparent;
+}
+
+
+
+.tTunes .sidebar {
+ background: #d1d7e2;
+}
+
+.tTunes .sidebar .v-label {
+ padding: 7px 0 3px 10px;
+ font-weight: bold;
+ text-transform: uppercase;
+ color: #505d6d;
+ text-shadow: #fff 0 1px 0;
+}
+
+.tTunes .sidebar .v-button {
+ text-align: left;
+ border: none;
+ background: transparent;
+ line-height: 15px;
+ padding: 2px 0;
+}
+
+.tTunes .sidebar .v-button span {
+ padding-left: 25px;
+}
+
+.tTunes .sidebar .selected {
+ background: transparent url(images/selected-bg.png) repeat-x;
+ color: #fff;
+ font-weight: bold;
+ text-shadow: #384359 0 1px 0;
+ padding: 0;
+}
+
+.tTunes .sidebar .selected span {
+ display: block;
+ background: transparent url(images/icon-music.png) no-repeat 25px 1px;
+ padding: 2px 0 2px 45px;
+}
+
+.tTunes .sidebar .v-caption {
+ background: transparent url(images/table-header-bg.png) repeat-x;
+ padding: 1px 0;
+ font-weight: bold;
+ text-shadow: #eee 0 1px 0;
+ text-align: center;
+ color: #202020;
+ border-top: 1px solid #404040;
+ border-bottom: 1px solid #555;
+}
+
+.tTunes .sidebar .v-captiontext {
+ float: none;
+}
+
+
+.tTunes .v-table-header-wrap {
+ height: 16px;
+ border: none;
+ border-bottom: 1px solid #555;
+ background: transparent url(images/table-header-bg.png) repeat-x;
+}
+
+.tTunes .v-table-caption-container {
+ font-size: 11px;
+ color: #000;
+ font-weight: bold;
+ text-shadow: #fff 0 1px 0;
+ padding-top: 1px;
+}
+
+.tTunes .v-table-body {
+ border: none;
+}
+
+.tTunes .v-table-row-odd {
+ background: #f1f5fa;
+}
+
+.tTunes .v-table-row:hover {
+ background: #fff;
+}
+
+.tTunes .v-table-row-odd:hover {
+ background: #f1f5fa;
+}
+
+.tTunes .v-table .v-selected {
+ background: #3d80df;
+}
+
+.tTunes .v-table-cell-content {
+ padding: 0 0 0 3px;
+ line-height: normal;
+}
+
+.tTunes .v-table select {
+ padding: 0 2px;
+}
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!DOCTYPE deployments PUBLIC\r
- "-//JBoss Portal//DTD Portal Object 2.6//EN"\r
- "http://www.jboss.org/portal/dtd/portal-object_2_6.dtd">\r
-<deployments>\r
- <deployment>\r
- <parent-ref>default.default</parent-ref>\r
- <if-exists>overwrite</if-exists> <window>\r
- <window-name>PortletDemoPortletWindow</window-name>\r
- <content>\r
- <content-type>portlet</content-type>\r
- <content-uri>PortletDemoPortletInstance</content-uri>\r
- </content>\r
- <region>center</region>\r
- <height>1</height>\r
- </window>\r
- </deployment>\r
- <deployment>\r
- <parent-ref>default.default</parent-ref>\r
- <if-exists>overwrite</if-exists> <window>\r
- <window-name>SimpleReserverPortletWindow</window-name>\r
- <content>\r
- <content-type>portlet</content-type>\r
- <content-uri>SimpleReserverPortletInstance</content-uri>\r
- </content>\r
- <region>center</region>\r
- <height>1</height>\r
- </window>\r
- </deployment>\r
- <deployment>\r
- <parent-ref>default.default</parent-ref>\r
- <if-exists>overwrite</if-exists> <window>\r
- <window-name>SelectDemoPortletWindow</window-name>\r
- <content>\r
- <content-type>portlet</content-type>\r
- <content-uri>SelectDemoPortletInstance</content-uri>\r
- </content>\r
- <region>center</region>\r
- <height>1</height>\r
- </window>\r
- </deployment>\r
- <deployment>\r
- <parent-ref>default.default</parent-ref>\r
- <if-exists>overwrite</if-exists> <window>\r
- <window-name>TableDemoPortletWindow</window-name>\r
- <content>\r
- <content-type>portlet</content-type>\r
- <content-uri>TableDemoPortletInstance</content-uri>\r
- </content>\r
- <region>center</region>\r
- <height>1</height>\r
- </window>\r
- </deployment>\r
- <deployment>\r
- <parent-ref>default.default</parent-ref>\r
- <if-exists>overwrite</if-exists> <window>\r
- <window-name>FilterSelectPortletWindow</window-name>\r
- <content>\r
- <content-type>portlet</content-type>\r
- <content-uri>FilterSelectPortletInstance</content-uri>\r
- </content>\r
- <region>center</region>\r
- <height>1</height>\r
- </window>\r
- </deployment>\r
- <deployment>\r
- <parent-ref>default.default</parent-ref>\r
- <if-exists>overwrite</if-exists> <window>\r
- <window-name>FeatureBrowserPortletWindow</window-name>\r
- <content>\r
- <content-type>portlet</content-type>\r
- <content-uri>FeatureBrowserPortletInstance</content-uri>\r
- </content>\r
- <region>center</region>\r
- <height>1</height>\r
- </window>\r
- </deployment>\r
- <deployment>\r
- <parent-ref>default.default</parent-ref>\r
- <if-exists>overwrite</if-exists> <window>\r
- <window-name>ModalWindowPortletWindow</window-name>\r
- <content>\r
- <content-type>portlet</content-type>\r
- <content-uri>ModalWindowPortletInstance</content-uri>\r
- </content>\r
- <region>center</region>\r
- <height>1</height>\r
- </window>\r
- </deployment>\r
- <deployment>\r
- <parent-ref>default.default</parent-ref>\r
- <if-exists>overwrite</if-exists> <window>\r
- <window-name>CalcPortletWindow</window-name>\r
- <content>\r
- <content-type>portlet</content-type>\r
- <content-uri>CalcPortletInstance</content-uri>\r
- </content>\r
- <region>center</region>\r
- <height>1</height>\r
- </window>\r
- </deployment>\r
- <deployment>\r
- <parent-ref>default.default</parent-ref>\r
- <if-exists>overwrite</if-exists> <window>\r
- <window-name>NotificationDemoPortletWindow</window-name>\r
- <content>\r
- <content-type>portlet</content-type>\r
- <content-uri>NotificationDemoPortletInstance</content-uri>\r
- </content>\r
- <region>center</region>\r
- <height>1</height>\r
- </window>\r
- </deployment>\r
- <deployment>\r
- <parent-ref>default.default</parent-ref>\r
- <if-exists>overwrite</if-exists> <window>\r
- <window-name>ChatServletPortletWindow</window-name>\r
- <content>\r
- <content-type>portlet</content-type>\r
- <content-uri>ChatServletPortletInstance</content-uri>\r
- </content>\r
- <region>center</region>\r
- <height>1</height>\r
- </window>\r
- </deployment>\r
- <deployment>\r
- <parent-ref>default.default</parent-ref>\r
- <if-exists>overwrite</if-exists> <window>\r
- <window-name>BrowserDemoPortletWindow</window-name>\r
- <content>\r
- <content-type>portlet</content-type>\r
- <content-uri>BrowserDemoPortletInstance</content-uri>\r
- </content>\r
- <region>center</region>\r
- <height>1</height>\r
- </window>\r
- </deployment>\r
-</deployments>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!DOCTYPE deployments PUBLIC\r
+ "-//JBoss Portal//DTD Portal Object 2.6//EN"\r
+ "http://www.jboss.org/portal/dtd/portal-object_2_6.dtd">\r
+<deployments>\r
+ <deployment>\r
+ <parent-ref>default.default</parent-ref>\r
+ <if-exists>overwrite</if-exists> <window>\r
+ <window-name>PortletDemoPortletWindow</window-name>\r
+ <content>\r
+ <content-type>portlet</content-type>\r
+ <content-uri>PortletDemoPortletInstance</content-uri>\r
+ </content>\r
+ <region>center</region>\r
+ <height>1</height>\r
+ </window>\r
+ </deployment>\r
+ <deployment>\r
+ <parent-ref>default.default</parent-ref>\r
+ <if-exists>overwrite</if-exists> <window>\r
+ <window-name>SimpleReserverPortletWindow</window-name>\r
+ <content>\r
+ <content-type>portlet</content-type>\r
+ <content-uri>SimpleReserverPortletInstance</content-uri>\r
+ </content>\r
+ <region>center</region>\r
+ <height>1</height>\r
+ </window>\r
+ </deployment>\r
+ <deployment>\r
+ <parent-ref>default.default</parent-ref>\r
+ <if-exists>overwrite</if-exists> <window>\r
+ <window-name>SelectDemoPortletWindow</window-name>\r
+ <content>\r
+ <content-type>portlet</content-type>\r
+ <content-uri>SelectDemoPortletInstance</content-uri>\r
+ </content>\r
+ <region>center</region>\r
+ <height>1</height>\r
+ </window>\r
+ </deployment>\r
+ <deployment>\r
+ <parent-ref>default.default</parent-ref>\r
+ <if-exists>overwrite</if-exists> <window>\r
+ <window-name>TableDemoPortletWindow</window-name>\r
+ <content>\r
+ <content-type>portlet</content-type>\r
+ <content-uri>TableDemoPortletInstance</content-uri>\r
+ </content>\r
+ <region>center</region>\r
+ <height>1</height>\r
+ </window>\r
+ </deployment>\r
+ <deployment>\r
+ <parent-ref>default.default</parent-ref>\r
+ <if-exists>overwrite</if-exists> <window>\r
+ <window-name>FilterSelectPortletWindow</window-name>\r
+ <content>\r
+ <content-type>portlet</content-type>\r
+ <content-uri>FilterSelectPortletInstance</content-uri>\r
+ </content>\r
+ <region>center</region>\r
+ <height>1</height>\r
+ </window>\r
+ </deployment>\r
+ <deployment>\r
+ <parent-ref>default.default</parent-ref>\r
+ <if-exists>overwrite</if-exists> <window>\r
+ <window-name>FeatureBrowserPortletWindow</window-name>\r
+ <content>\r
+ <content-type>portlet</content-type>\r
+ <content-uri>FeatureBrowserPortletInstance</content-uri>\r
+ </content>\r
+ <region>center</region>\r
+ <height>1</height>\r
+ </window>\r
+ </deployment>\r
+ <deployment>\r
+ <parent-ref>default.default</parent-ref>\r
+ <if-exists>overwrite</if-exists> <window>\r
+ <window-name>ModalWindowPortletWindow</window-name>\r
+ <content>\r
+ <content-type>portlet</content-type>\r
+ <content-uri>ModalWindowPortletInstance</content-uri>\r
+ </content>\r
+ <region>center</region>\r
+ <height>1</height>\r
+ </window>\r
+ </deployment>\r
+ <deployment>\r
+ <parent-ref>default.default</parent-ref>\r
+ <if-exists>overwrite</if-exists> <window>\r
+ <window-name>CalcPortletWindow</window-name>\r
+ <content>\r
+ <content-type>portlet</content-type>\r
+ <content-uri>CalcPortletInstance</content-uri>\r
+ </content>\r
+ <region>center</region>\r
+ <height>1</height>\r
+ </window>\r
+ </deployment>\r
+ <deployment>\r
+ <parent-ref>default.default</parent-ref>\r
+ <if-exists>overwrite</if-exists> <window>\r
+ <window-name>NotificationDemoPortletWindow</window-name>\r
+ <content>\r
+ <content-type>portlet</content-type>\r
+ <content-uri>NotificationDemoPortletInstance</content-uri>\r
+ </content>\r
+ <region>center</region>\r
+ <height>1</height>\r
+ </window>\r
+ </deployment>\r
+ <deployment>\r
+ <parent-ref>default.default</parent-ref>\r
+ <if-exists>overwrite</if-exists> <window>\r
+ <window-name>ChatServletPortletWindow</window-name>\r
+ <content>\r
+ <content-type>portlet</content-type>\r
+ <content-uri>ChatServletPortletInstance</content-uri>\r
+ </content>\r
+ <region>center</region>\r
+ <height>1</height>\r
+ </window>\r
+ </deployment>\r
+ <deployment>\r
+ <parent-ref>default.default</parent-ref>\r
+ <if-exists>overwrite</if-exists> <window>\r
+ <window-name>BrowserDemoPortletWindow</window-name>\r
+ <content>\r
+ <content-type>portlet</content-type>\r
+ <content-uri>BrowserDemoPortletInstance</content-uri>\r
+ </content>\r
+ <region>center</region>\r
+ <height>1</height>\r
+ </window>\r
+ </deployment>\r
+</deployments>
\ No newline at end of file
</servlet>\r
\r
<servlet>\r
- <servlet-name>ToolkitTunesLayout</servlet-name>\r
+ <servlet-name>VaadinTunesLayout</servlet-name>\r
<servlet-class>com.vaadin.terminal.gwt.server.ApplicationServlet</servlet-class>\r
<init-param>\r
<param-name>application</param-name>\r
- <param-value>com.vaadin.demo.ToolkitTunesLayout</param-value>\r
+ <param-value>com.vaadin.demo.VaadinTunesLayout</param-value>\r
</init-param>\r
</servlet>\r
\r
</servlet-mapping>\r
\r
<servlet-mapping>\r
- <servlet-name>ToolkitTunesLayout</servlet-name>\r
- <url-pattern>/ToolkitTunesLayout/*</url-pattern>\r
+ <servlet-name>VaadinTunesLayout</servlet-name>\r
+ <url-pattern>/VaadinTunesLayout/*</url-pattern>\r
</servlet-mapping>\r
\r
<servlet-mapping>\r
<h4>Additional demos</h4>
<ul><li><a class="demoapp" href="Reservr">Reservr – reservation application</a> (<a href="docs/example-source/com/vaadin/demo/reservation">sources</a>)</li>
- <li><a class="demoapp" href="ToolkitTunesLayout/">ToolkitTunes – advanced layout & theme</a> (<a href="docs/example-source/com/vaadin/demo/ToolkitTunesLayout.java.html">sources</a>)</li>
+ <li><a class="demoapp" href="VaadinTunesLayout/">VaadinTunes – advanced layout & theme</a> (<a href="docs/example-source/com/vaadin/demo/VaadinTunesLayout.java.html">sources</a>)</li>
<li><a class="demoapp" href="Coverflow/">Coverflow – Flex integration</a> (<a href="docs/example-source/com/vaadin/demo/coverflow">sources</a>)</li>
</ul>
private static final String PORTLET_XML_FILE = "portlet.xml";\r
private static final String LIFERAY_PORTLET_XML_FILE = "liferay-portlet.xml";\r
private static final String LIFERAY_DISPLAY_XML_FILE = "liferay-display.xml";\r
- private static final String JBOSS_OBJECT_FILE = "itmill-object.xml";\r
+ private static final String JBOSS_OBJECT_FILE = "vaadin-object.xml";\r
private static final String JBOSS_INSTANCE_FILE = "portlet-instances.xml";\r
\r
// "templates" follow;\r
</init-param>
</servlet>
- <!-- Layout demo (ToolkitTunes) -->
+ <!-- Layout demo (VaadinTunes) -->
<servlet>
- <servlet-name>ToolkitTunesLayout</servlet-name>
+ <servlet-name>VaadinTunesLayout</servlet-name>
<servlet-class>com.vaadin.terminal.gwt.server.ApplicationServlet</servlet-class>
<init-param>
<param-name>application</param-name>
- <param-value>com.vaadin.demo.ToolkitTunesLayout</param-value>
+ <param-value>com.vaadin.demo.VaadinTunesLayout</param-value>
</init-param>
</servlet>
<url-pattern>/colorpicker/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
- <servlet-name>ToolkitTunesLayout</servlet-name>
- <url-pattern>/ToolkitTunesLayout/*</url-pattern>
+ <servlet-name>VaadinTunesLayout</servlet-name>
+ <url-pattern>/VaadinTunesLayout/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Coverflow</servlet-name>
+++ /dev/null
-package com.vaadin.demo;
-
-import java.util.Random;
-
-import com.vaadin.Application;
-import com.vaadin.terminal.ThemeResource;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.ComboBox;
-import com.vaadin.ui.Embedded;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Label;
-import com.vaadin.ui.NativeSelect;
-import com.vaadin.ui.Slider;
-import com.vaadin.ui.SplitPanel;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-import com.vaadin.ui.Window.Notification;
-
-/**
- * Sample application layout, similar (almost identical) to Apple iTunes.
- *
- * @author IT Mill Ltd.
- *
- */
-@SuppressWarnings("serial")
-public class ToolkitTunesLayout extends Application {
-
- @Override
- public void init() {
-
- /*
- * We'll build the whole UI here, since the application will not contain
- * any logic. Otherwise it would be more practical to separate parts of
- * the UI into different classes and methods.
- */
-
- // Main (browser) window, needed in all Toolkit applications
- final Window root = new Window("ToolkitTunes");
-
- /*
- * We'll attach the window to the browser view already here, so we won't
- * forget it later.
- */
- setMainWindow(root);
-
- root
- .showNotification(
- "This is an example of how you can do layouts in Vaadin.<br/>It is not a working sound player.",
- Notification.TYPE_HUMANIZED_MESSAGE);
-
- // Our root window contains one VerticalLayout by default, let's make
- // sure it's 100% sized, and remove unwanted margins
- root.getLayout().setSizeFull();
- root.getLayout().setMargin(false);
-
- // Top area, containing playback and volume controls, play status, view
- // modes and search
- HorizontalLayout top = new HorizontalLayout();
- top.setWidth("100%");
- top.setMargin(false, true, false, true); // Enable horizontal margins
- top.setSpacing(true);
-
- // Let's attach that one straight away too
- root.addComponent(top);
-
- // Create the placeholders for all the components in the top area
- HorizontalLayout playback = new HorizontalLayout();
- HorizontalLayout volume = new HorizontalLayout();
- HorizontalLayout status = new HorizontalLayout();
- HorizontalLayout viewmodes = new HorizontalLayout();
- ComboBox search = new ComboBox();
-
- // Add the components and align them properly
- top.addComponent(playback);
- top.addComponent(volume);
- top.addComponent(status);
- top.addComponent(viewmodes);
- top.addComponent(search);
- top.setComponentAlignment(playback, "middle");
- top.setComponentAlignment(volume, "middle");
- top.setComponentAlignment(status, "middle center");
- top.setComponentAlignment(viewmodes, "middle");
- top.setComponentAlignment(search, "middle");
-
- /*
- * We want our status area to expand if the user resizes the root
- * window, and we want it to accommodate as much space as there is
- * available. All other components in the top layout should stay fixed
- * sized, so we don't need to specify any expand ratios for them (they
- * will automatically revert to zero after the following line).
- */
- top.setExpandRatio(status, 1.0F);
-
- // Playback controls
- Button prev = new Button("Previous");
- Button play = new Button("Play/pause");
- Button next = new Button("Next");
- playback.addComponent(prev);
- playback.addComponent(play);
- playback.addComponent(next);
- // Set spacing between the buttons
- playback.setSpacing(true);
-
- // Volume controls
- Button mute = new Button("mute");
- Slider vol = new Slider();
- vol.setOrientation(Slider.ORIENTATION_HORIZONTAL);
- vol.setWidth("100px");
- Button max = new Button("max");
- volume.addComponent(mute);
- volume.addComponent(vol);
- volume.addComponent(max);
-
- // Status area
- status.setWidth("80%");
- status.setSpacing(true);
-
- Button toggleVisualization = new Button("Mode");
- Label timeFromStart = new Label("0:00");
-
- // We'll need another layout to show currently playing track and
- // progress
- VerticalLayout trackDetails = new VerticalLayout();
- trackDetails.setWidth("100%");
- Label track = new Label("Track Name");
- Label album = new Label("Album Name - Artist");
- track.setWidth(null);
- album.setWidth(null);
- Slider progress = new Slider();
- progress.setOrientation(Slider.ORIENTATION_HORIZONTAL);
- progress.setWidth("100%");
- trackDetails.addComponent(track);
- trackDetails.addComponent(album);
- trackDetails.addComponent(progress);
- trackDetails.setComponentAlignment(track, "center");
- trackDetails.setComponentAlignment(album, "center");
-
- Label timeToEnd = new Label("-4:46");
- Button jumpToTrack = new Button("Show");
-
- // Place all components to the status layout and align them properly
- status.addComponent(toggleVisualization);
- status.setComponentAlignment(toggleVisualization, "middle");
- status.addComponent(timeFromStart);
- status.setComponentAlignment(timeFromStart, "bottom");
- status.addComponent(trackDetails);
- status.addComponent(timeToEnd);
- status.setComponentAlignment(timeToEnd, "bottom");
- status.addComponent(jumpToTrack);
- status.setComponentAlignment(jumpToTrack, "middle");
-
- // Then remember to specify the expand ratio
- status.setExpandRatio(trackDetails, 1.0F);
-
- // View mode buttons
- Button viewAsTable = new Button("Table");
- Button viewAsGrid = new Button("Grid");
- Button coverflow = new Button("Coverflow");
- viewmodes.addComponent(viewAsTable);
- viewmodes.addComponent(viewAsGrid);
- viewmodes.addComponent(coverflow);
-
- /*
- * That covers the top bar. Now let's move on to the sidebar and track
- * listing
- */
-
- // We'll need one splitpanel to separate the sidebar and track listing
- SplitPanel bottom = new SplitPanel(SplitPanel.ORIENTATION_HORIZONTAL);
- root.addComponent(bottom);
-
- // The splitpanel is by default 100% x 100%, but we'll need to adjust
- // our main window layout to accomodate the height
- ((VerticalLayout) root.getLayout()).setExpandRatio(bottom, 1.0F);
-
- // Give the sidebar less space than the listing
- bottom.setSplitPosition(200, SplitPanel.UNITS_PIXELS);
-
- // Let's add some content to the sidebar
- // First, we need a layout to but all components in
- VerticalLayout sidebar = new VerticalLayout();
- sidebar.setSizeFull();
- bottom.setFirstComponent(sidebar);
-
- /*
- * Then we need some labels and buttons, and an album cover image The
- * labels and buttons go into their own vertical layout, since we want
- * the 'sidebar' layout to be expanding (cover image in the bottom).
- * VerticalLayout is by default 100% wide.
- */
- VerticalLayout selections = new VerticalLayout();
- Label library = new Label("Library");
- Button music = new Button("Music");
- music.setWidth("100%");
-
- Label store = new Label("Store");
- Button toolkitTunesStore = new Button("ToolkitTunes Store");
- toolkitTunesStore.setWidth("100%");
- Button purchased = new Button("Purchased");
- purchased.setWidth("100%");
-
- Label playlists = new Label("Playlists");
- Button genius = new Button("Geniues");
- genius.setWidth("100%");
- Button recent = new Button("Recently Added");
- recent.setWidth("100%");
-
- // Lets add them to the 'selections' layout
- selections.addComponent(library);
- selections.addComponent(music);
- selections.addComponent(store);
- selections.addComponent(toolkitTunesStore);
- selections.addComponent(purchased);
- selections.addComponent(playlists);
- selections.addComponent(genius);
- selections.addComponent(recent);
-
- // Then add the selections to the sidebar, and set it expanding
- sidebar.addComponent(selections);
- sidebar.setExpandRatio(selections, 1.0F);
-
- // Then comes the cover artwork (we'll add the actual image in the
- // themeing section)
- Embedded cover = new Embedded("Currently Playing");
- sidebar.addComponent(cover);
-
- /*
- * And lastly, we need the track listing table It should fill the whole
- * left side of our bottom layout
- */
- Table listing = new Table();
- listing.setSizeFull();
- listing.setSelectable(true);
- bottom.setSecondComponent(listing);
-
- // Add the table headers
- listing.addContainerProperty("Name", String.class, "");
- listing.addContainerProperty("Time", String.class, "0:00");
- listing.addContainerProperty("Artist", String.class, "");
- listing.addContainerProperty("Album", String.class, "");
- listing.addContainerProperty("Genre", String.class, "");
- listing.addContainerProperty("Rating", NativeSelect.class,
- new NativeSelect());
-
- // Lets populate the table with random data
- String[] tracks = new String[] { "Red Flag", "Millstone",
- "Not The Sun", "Breath", "Here We Are", "Deep Heaven",
- "Her Voice Resides", "Natural Tan", "End It All", "Kings",
- "Daylight Slaving", "Mad Man", "Resolve", "Teargas",
- "African Air", "Passing Bird" };
- String[] times = new String[] { "4:12", "6:03", "5:43", "4:32", "3:42",
- "4:45", "2:56", "9:34", "2:10", "3:44", "5:49", "6:30", "5:18",
- "7:42", "3:13", "2:52" };
- String[] artists = new String[] { "Billy Talent", "Brand New",
- "Breaking Benjamin", "Becoming The Archetype",
- "Bullet For My Valentine", "Chasing Victory", "Chimaira",
- "Danko Jones", "Deadlock", "Deftones", "From Autumn To Ashes",
- "Haste The Day", "Four Year Strong", "In Flames", "Kemopetrol",
- "John Legend" };
- String[] albums = new String[] { "Once Again", "The Caitiff Choir",
- "The Devil And God", "Light Grenades", "Dicthonomy",
- "Back In Black", "Dreamer", "Come Clarity", "Year Zero",
- "Frames", "Fortress", "Phobia", "The Poison", "Manifesto",
- "White Pony", "The Big Dirty" };
- String[] genres = new String[] { "Rock", "Metal", "Hardcore", "Indie",
- "Pop", "Alternative", "Blues", "Jazz", "Hip Hop", "Electronica" };
- for (int i = 0; i < 1000; i++) {
- NativeSelect s = new NativeSelect();
- s.addItem("1 star");
- s.addItem("2 stars");
- s.addItem("3 stars");
- s.addItem("4 stars");
- s.addItem("5 stars");
- s.select(new Random().nextInt(5) + " stars");
- listing.addItem(new Object[] {
- tracks[new Random().nextInt(tracks.length - 1)],
- times[new Random().nextInt(times.length - 1)],
- artists[new Random().nextInt(artists.length - 1)],
- albums[new Random().nextInt(albums.length - 1)],
- genres[new Random().nextInt(genres.length - 1)], s }, i);
- }
-
- // We'll align the track time column to right as well
- listing.setColumnAlignment("Time", Table.ALIGN_RIGHT);
-
- // TODO the footer
-
- // Now what's left to do? Themeing of course.
- setTheme("toolkittunes");
-
- /*
- * Let's give a namespace to our application window. This way, if
- * someone uses the same theme for different applications, we don't get
- * unwanted style conflicts.
- */
- root.setStyleName("tTunes");
-
- top.setStyleName("top");
- top.setHeight("75px"); // Same as the background image height
-
- playback.setStyleName("playback");
- playback.setMargin(false, true, false, false); // Add right-side margin
- play.setStyleName("play");
- next.setStyleName("next");
- prev.setStyleName("prev");
- playback.setComponentAlignment(prev, "middle");
- playback.setComponentAlignment(next, "middle");
-
- volume.setStyleName("volume");
- mute.setStyleName("mute");
- max.setStyleName("max");
- vol.setWidth("78px");
-
- status.setStyleName("status");
- status.setMargin(true);
- status.setHeight("46px"); // Height of the background image
-
- toggleVisualization.setStyleName("toggle-vis");
- jumpToTrack.setStyleName("jump");
-
- viewAsTable.setStyleName("viewmode-table");
- viewAsGrid.setStyleName("viewmode-grid");
- coverflow.setStyleName("viewmode-coverflow");
-
- sidebar.setStyleName("sidebar");
-
- music.setStyleName("selected");
-
- cover.setSource(new ThemeResource("images/album-cover.jpg"));
- // Because this is an image, it will retain it's aspect ratio
- cover.setWidth("100%");
- }
-
-}
--- /dev/null
+package com.vaadin.demo;
+
+import java.util.Random;
+
+import com.vaadin.Application;
+import com.vaadin.terminal.ThemeResource;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.ComboBox;
+import com.vaadin.ui.Embedded;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.NativeSelect;
+import com.vaadin.ui.Slider;
+import com.vaadin.ui.SplitPanel;
+import com.vaadin.ui.Table;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Window;
+import com.vaadin.ui.Window.Notification;
+
+/**
+ * Sample application layout, similar (almost identical) to Apple iTunes.
+ *
+ * @author IT Mill Ltd.
+ *
+ */
+@SuppressWarnings("serial")
+public class VaadinTunesLayout extends Application {
+
+ @Override
+ public void init() {
+
+ /*
+ * We'll build the whole UI here, since the application will not contain
+ * any logic. Otherwise it would be more practical to separate parts of
+ * the UI into different classes and methods.
+ */
+
+ // Main (browser) window, needed in all Vaadin applications
+ final Window root = new Window("VaadinTunes");
+
+ /*
+ * We'll attach the window to the browser view already here, so we won't
+ * forget it later.
+ */
+ setMainWindow(root);
+
+ root
+ .showNotification(
+ "This is an example of how you can do layouts in Vaadin.<br/>It is not a working sound player.",
+ Notification.TYPE_HUMANIZED_MESSAGE);
+
+ // Our root window contains one VerticalLayout by default, let's make
+ // sure it's 100% sized, and remove unwanted margins
+ root.getLayout().setSizeFull();
+ root.getLayout().setMargin(false);
+
+ // Top area, containing playback and volume controls, play status, view
+ // modes and search
+ HorizontalLayout top = new HorizontalLayout();
+ top.setWidth("100%");
+ top.setMargin(false, true, false, true); // Enable horizontal margins
+ top.setSpacing(true);
+
+ // Let's attach that one straight away too
+ root.addComponent(top);
+
+ // Create the placeholders for all the components in the top area
+ HorizontalLayout playback = new HorizontalLayout();
+ HorizontalLayout volume = new HorizontalLayout();
+ HorizontalLayout status = new HorizontalLayout();
+ HorizontalLayout viewmodes = new HorizontalLayout();
+ ComboBox search = new ComboBox();
+
+ // Add the components and align them properly
+ top.addComponent(playback);
+ top.addComponent(volume);
+ top.addComponent(status);
+ top.addComponent(viewmodes);
+ top.addComponent(search);
+ top.setComponentAlignment(playback, "middle");
+ top.setComponentAlignment(volume, "middle");
+ top.setComponentAlignment(status, "middle center");
+ top.setComponentAlignment(viewmodes, "middle");
+ top.setComponentAlignment(search, "middle");
+
+ /*
+ * We want our status area to expand if the user resizes the root
+ * window, and we want it to accommodate as much space as there is
+ * available. All other components in the top layout should stay fixed
+ * sized, so we don't need to specify any expand ratios for them (they
+ * will automatically revert to zero after the following line).
+ */
+ top.setExpandRatio(status, 1.0F);
+
+ // Playback controls
+ Button prev = new Button("Previous");
+ Button play = new Button("Play/pause");
+ Button next = new Button("Next");
+ playback.addComponent(prev);
+ playback.addComponent(play);
+ playback.addComponent(next);
+ // Set spacing between the buttons
+ playback.setSpacing(true);
+
+ // Volume controls
+ Button mute = new Button("mute");
+ Slider vol = new Slider();
+ vol.setOrientation(Slider.ORIENTATION_HORIZONTAL);
+ vol.setWidth("100px");
+ Button max = new Button("max");
+ volume.addComponent(mute);
+ volume.addComponent(vol);
+ volume.addComponent(max);
+
+ // Status area
+ status.setWidth("80%");
+ status.setSpacing(true);
+
+ Button toggleVisualization = new Button("Mode");
+ Label timeFromStart = new Label("0:00");
+
+ // We'll need another layout to show currently playing track and
+ // progress
+ VerticalLayout trackDetails = new VerticalLayout();
+ trackDetails.setWidth("100%");
+ Label track = new Label("Track Name");
+ Label album = new Label("Album Name - Artist");
+ track.setWidth(null);
+ album.setWidth(null);
+ Slider progress = new Slider();
+ progress.setOrientation(Slider.ORIENTATION_HORIZONTAL);
+ progress.setWidth("100%");
+ trackDetails.addComponent(track);
+ trackDetails.addComponent(album);
+ trackDetails.addComponent(progress);
+ trackDetails.setComponentAlignment(track, "center");
+ trackDetails.setComponentAlignment(album, "center");
+
+ Label timeToEnd = new Label("-4:46");
+ Button jumpToTrack = new Button("Show");
+
+ // Place all components to the status layout and align them properly
+ status.addComponent(toggleVisualization);
+ status.setComponentAlignment(toggleVisualization, "middle");
+ status.addComponent(timeFromStart);
+ status.setComponentAlignment(timeFromStart, "bottom");
+ status.addComponent(trackDetails);
+ status.addComponent(timeToEnd);
+ status.setComponentAlignment(timeToEnd, "bottom");
+ status.addComponent(jumpToTrack);
+ status.setComponentAlignment(jumpToTrack, "middle");
+
+ // Then remember to specify the expand ratio
+ status.setExpandRatio(trackDetails, 1.0F);
+
+ // View mode buttons
+ Button viewAsTable = new Button("Table");
+ Button viewAsGrid = new Button("Grid");
+ Button coverflow = new Button("Coverflow");
+ viewmodes.addComponent(viewAsTable);
+ viewmodes.addComponent(viewAsGrid);
+ viewmodes.addComponent(coverflow);
+
+ /*
+ * That covers the top bar. Now let's move on to the sidebar and track
+ * listing
+ */
+
+ // We'll need one splitpanel to separate the sidebar and track listing
+ SplitPanel bottom = new SplitPanel(SplitPanel.ORIENTATION_HORIZONTAL);
+ root.addComponent(bottom);
+
+ // The splitpanel is by default 100% x 100%, but we'll need to adjust
+ // our main window layout to accomodate the height
+ ((VerticalLayout) root.getLayout()).setExpandRatio(bottom, 1.0F);
+
+ // Give the sidebar less space than the listing
+ bottom.setSplitPosition(200, SplitPanel.UNITS_PIXELS);
+
+ // Let's add some content to the sidebar
+ // First, we need a layout to but all components in
+ VerticalLayout sidebar = new VerticalLayout();
+ sidebar.setSizeFull();
+ bottom.setFirstComponent(sidebar);
+
+ /*
+ * Then we need some labels and buttons, and an album cover image The
+ * labels and buttons go into their own vertical layout, since we want
+ * the 'sidebar' layout to be expanding (cover image in the bottom).
+ * VerticalLayout is by default 100% wide.
+ */
+ VerticalLayout selections = new VerticalLayout();
+ Label library = new Label("Library");
+ Button music = new Button("Music");
+ music.setWidth("100%");
+
+ Label store = new Label("Store");
+ Button vaadinTunesStore = new Button("VaadinTunes Store");
+ vaadinTunesStore.setWidth("100%");
+ Button purchased = new Button("Purchased");
+ purchased.setWidth("100%");
+
+ Label playlists = new Label("Playlists");
+ Button genius = new Button("Geniues");
+ genius.setWidth("100%");
+ Button recent = new Button("Recently Added");
+ recent.setWidth("100%");
+
+ // Lets add them to the 'selections' layout
+ selections.addComponent(library);
+ selections.addComponent(music);
+ selections.addComponent(store);
+ selections.addComponent(vaadinTunesStore);
+ selections.addComponent(purchased);
+ selections.addComponent(playlists);
+ selections.addComponent(genius);
+ selections.addComponent(recent);
+
+ // Then add the selections to the sidebar, and set it expanding
+ sidebar.addComponent(selections);
+ sidebar.setExpandRatio(selections, 1.0F);
+
+ // Then comes the cover artwork (we'll add the actual image in the
+ // themeing section)
+ Embedded cover = new Embedded("Currently Playing");
+ sidebar.addComponent(cover);
+
+ /*
+ * And lastly, we need the track listing table It should fill the whole
+ * left side of our bottom layout
+ */
+ Table listing = new Table();
+ listing.setSizeFull();
+ listing.setSelectable(true);
+ bottom.setSecondComponent(listing);
+
+ // Add the table headers
+ listing.addContainerProperty("Name", String.class, "");
+ listing.addContainerProperty("Time", String.class, "0:00");
+ listing.addContainerProperty("Artist", String.class, "");
+ listing.addContainerProperty("Album", String.class, "");
+ listing.addContainerProperty("Genre", String.class, "");
+ listing.addContainerProperty("Rating", NativeSelect.class,
+ new NativeSelect());
+
+ // Lets populate the table with random data
+ String[] tracks = new String[] { "Red Flag", "Millstone",
+ "Not The Sun", "Breath", "Here We Are", "Deep Heaven",
+ "Her Voice Resides", "Natural Tan", "End It All", "Kings",
+ "Daylight Slaving", "Mad Man", "Resolve", "Teargas",
+ "African Air", "Passing Bird" };
+ String[] times = new String[] { "4:12", "6:03", "5:43", "4:32", "3:42",
+ "4:45", "2:56", "9:34", "2:10", "3:44", "5:49", "6:30", "5:18",
+ "7:42", "3:13", "2:52" };
+ String[] artists = new String[] { "Billy Talent", "Brand New",
+ "Breaking Benjamin", "Becoming The Archetype",
+ "Bullet For My Valentine", "Chasing Victory", "Chimaira",
+ "Danko Jones", "Deadlock", "Deftones", "From Autumn To Ashes",
+ "Haste The Day", "Four Year Strong", "In Flames", "Kemopetrol",
+ "John Legend" };
+ String[] albums = new String[] { "Once Again", "The Caitiff Choir",
+ "The Devil And God", "Light Grenades", "Dicthonomy",
+ "Back In Black", "Dreamer", "Come Clarity", "Year Zero",
+ "Frames", "Fortress", "Phobia", "The Poison", "Manifesto",
+ "White Pony", "The Big Dirty" };
+ String[] genres = new String[] { "Rock", "Metal", "Hardcore", "Indie",
+ "Pop", "Alternative", "Blues", "Jazz", "Hip Hop", "Electronica" };
+ for (int i = 0; i < 1000; i++) {
+ NativeSelect s = new NativeSelect();
+ s.addItem("1 star");
+ s.addItem("2 stars");
+ s.addItem("3 stars");
+ s.addItem("4 stars");
+ s.addItem("5 stars");
+ s.select(new Random().nextInt(5) + " stars");
+ listing.addItem(new Object[] {
+ tracks[new Random().nextInt(tracks.length - 1)],
+ times[new Random().nextInt(times.length - 1)],
+ artists[new Random().nextInt(artists.length - 1)],
+ albums[new Random().nextInt(albums.length - 1)],
+ genres[new Random().nextInt(genres.length - 1)], s }, i);
+ }
+
+ // We'll align the track time column to right as well
+ listing.setColumnAlignment("Time", Table.ALIGN_RIGHT);
+
+ // TODO the footer
+
+ // Now what's left to do? Themeing of course.
+ setTheme("vaadintunes");
+
+ /*
+ * Let's give a namespace to our application window. This way, if
+ * someone uses the same theme for different applications, we don't get
+ * unwanted style conflicts.
+ */
+ root.setStyleName("tTunes");
+
+ top.setStyleName("top");
+ top.setHeight("75px"); // Same as the background image height
+
+ playback.setStyleName("playback");
+ playback.setMargin(false, true, false, false); // Add right-side margin
+ play.setStyleName("play");
+ next.setStyleName("next");
+ prev.setStyleName("prev");
+ playback.setComponentAlignment(prev, "middle");
+ playback.setComponentAlignment(next, "middle");
+
+ volume.setStyleName("volume");
+ mute.setStyleName("mute");
+ max.setStyleName("max");
+ vol.setWidth("78px");
+
+ status.setStyleName("status");
+ status.setMargin(true);
+ status.setHeight("46px"); // Height of the background image
+
+ toggleVisualization.setStyleName("toggle-vis");
+ jumpToTrack.setStyleName("jump");
+
+ viewAsTable.setStyleName("viewmode-table");
+ viewAsGrid.setStyleName("viewmode-grid");
+ coverflow.setStyleName("viewmode-coverflow");
+
+ sidebar.setStyleName("sidebar");
+
+ music.setStyleName("selected");
+
+ cover.setSource(new ThemeResource("images/album-cover.jpg"));
+ // Because this is an image, it will retain it's aspect ratio
+ cover.setWidth("100%");
+ }
+
+}
@Override
public void init() {
- final Window root = new Window("ToolkitTunes");
+ final Window root = new Window("VaadinTunes");
root.setWidth("90%");
root.setHeight("90%");
root.center();