From 63215f9a92692b010d1675d7d99849fa1a7dc676 Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Mon, 8 Aug 2011 10:53:18 +0000 Subject: [PATCH] #7178 related: Removed test version of FeatureBrowser (two feature browser applications existed in project, probably since #3298 was fixed) svn changeset:20152/svn branch:6.7 --- .../themes/tests-featurebrowser/favicon.ico | Bin 1150 -> 0 bytes .../layouts/featurebrowser-mainlayout.html | 252 --------- .../layouts/img/header.png | Bin 2389 -> 0 bytes .../layouts/img/hide_properties.png | Bin 360 -> 0 bytes .../tests-featurebrowser/layouts/img/m_bg.png | Bin 4071 -> 0 bytes .../layouts/img/show_properties.png | Bin 829 -> 0 bytes .../layouts/img/tab_handle.png | Bin 308 -> 0 bytes .../themes/tests-featurebrowser/styles.css | 8 - WebContent/WEB-INF/web.xml | 14 - build/build.xml | 2 - .../vaadin/tests/featurebrowser/Feature.java | 197 ------- .../tests/featurebrowser/FeatureBrowser.java | 355 ------------- .../featurebrowser/FeatureBuffering.java | 93 ---- .../tests/featurebrowser/FeatureButton.java | 73 --- .../featurebrowser/FeatureContainers.java | 96 ---- .../featurebrowser/FeatureCustomLayout.java | 84 --- .../featurebrowser/FeatureDateField.java | 107 ---- .../tests/featurebrowser/FeatureEmbedded.java | 95 ---- .../tests/featurebrowser/FeatureForm.java | 179 ------- .../featurebrowser/FeatureGridLayout.java | 79 --- .../tests/featurebrowser/FeatureItems.java | 89 ---- .../tests/featurebrowser/FeatureLabel.java | 77 --- .../tests/featurebrowser/FeatureLink.java | 68 --- .../featurebrowser/FeatureOrderedLayout.java | 81 --- .../tests/featurebrowser/FeaturePanel.java | 74 --- .../featurebrowser/FeatureParameters.java | 170 ------ .../featurebrowser/FeatureProperties.java | 94 ---- .../tests/featurebrowser/FeatureSelect.java | 91 ---- .../tests/featurebrowser/FeatureTabSheet.java | 72 --- .../tests/featurebrowser/FeatureTable.java | 196 ------- .../featurebrowser/FeatureTextField.java | 71 --- .../tests/featurebrowser/FeatureTree.java | 175 ------ .../tests/featurebrowser/FeatureUpload.java | 148 ------ .../tests/featurebrowser/FeatureUtil.java | 37 -- .../featurebrowser/FeatureValidators.java | 89 ---- .../tests/featurebrowser/FeatureWindow.java | 146 ----- .../featurebrowser/FeaturesApplication.java | 34 -- .../tests/featurebrowser/IntroBasic.java | 81 --- .../tests/featurebrowser/IntroComponents.java | 85 --- .../featurebrowser/IntroDataHandling.java | 80 --- .../tests/featurebrowser/IntroDataModel.java | 82 --- .../featurebrowser/IntroItemContainers.java | 81 --- .../tests/featurebrowser/IntroLayouts.java | 83 --- .../tests/featurebrowser/IntroTerminal.java | 55 -- .../tests/featurebrowser/IntroWelcome.java | 176 ------ .../tests/featurebrowser/PropertyPanel.java | 501 ------------------ .../tests/featurebrowser/components.png | Bin 184749 -> 0 bytes .../vaadin/tests/featurebrowser/icon_demo.png | Bin 2428 -> 0 bytes .../tests/featurebrowser/icon_intro.png | Bin 2465 -> 0 bytes .../vaadin/tests/featurebrowser/itmill.gif | Bin 6110 -> 0 bytes .../tests/featurebrowser/m-bullet-blue.gif | Bin 8417 -> 0 bytes .../src/com/vaadin/tests/featurebrowser/m.gif | Bin 1036 -> 0 bytes .../tests/featurebrowser/vaadin_spin.swf | Bin 2991 -> 0 bytes 53 files changed, 4570 deletions(-) delete mode 100644 WebContent/VAADIN/themes/tests-featurebrowser/favicon.ico delete mode 100644 WebContent/VAADIN/themes/tests-featurebrowser/layouts/featurebrowser-mainlayout.html delete mode 100644 WebContent/VAADIN/themes/tests-featurebrowser/layouts/img/header.png delete mode 100644 WebContent/VAADIN/themes/tests-featurebrowser/layouts/img/hide_properties.png delete mode 100644 WebContent/VAADIN/themes/tests-featurebrowser/layouts/img/m_bg.png delete mode 100644 WebContent/VAADIN/themes/tests-featurebrowser/layouts/img/show_properties.png delete mode 100644 WebContent/VAADIN/themes/tests-featurebrowser/layouts/img/tab_handle.png delete mode 100644 WebContent/VAADIN/themes/tests-featurebrowser/styles.css delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/Feature.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureBrowser.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureBuffering.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureButton.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureContainers.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureCustomLayout.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureDateField.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureEmbedded.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureForm.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureGridLayout.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureItems.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureLabel.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureLink.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureOrderedLayout.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeaturePanel.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureParameters.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureProperties.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureSelect.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureTabSheet.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureTable.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureTextField.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureTree.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureUpload.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureUtil.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureValidators.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeatureWindow.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/FeaturesApplication.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/IntroBasic.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/IntroComponents.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/IntroDataHandling.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/IntroDataModel.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/IntroItemContainers.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/IntroLayouts.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/IntroTerminal.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/IntroWelcome.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/PropertyPanel.java delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/components.png delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/icon_demo.png delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/icon_intro.png delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/itmill.gif delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/m-bullet-blue.gif delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/m.gif delete mode 100644 tests/src/com/vaadin/tests/featurebrowser/vaadin_spin.swf diff --git a/WebContent/VAADIN/themes/tests-featurebrowser/favicon.ico b/WebContent/VAADIN/themes/tests-featurebrowser/favicon.ico deleted file mode 100644 index e58158c02c46f37dc315a8f1c79fd46dfdae952a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmbu8ze>YU6o-G(qDTchIS8U-cLhOFTm*dzM}3AaiueZy2cN;w)xkH&?jQ&Xii(1$ z1s@=OKhgskZfn{me7T2n&v$ZjlSpHn&8E06Xs<5KNNNEoGDV&td33II2s!-19jt%` zV2j#I_yqU4fkFJJJ@5LrL;A-({PBwYQvMq52W(d8k@9!(yeDsP2Fp-~c;@ohChyu; znCjNdF - - - - - - - - - - - \ No newline at end of file diff --git a/WebContent/VAADIN/themes/tests-featurebrowser/layouts/img/header.png b/WebContent/VAADIN/themes/tests-featurebrowser/layouts/img/header.png deleted file mode 100644 index bf64ac4e176699b155720e847d1b596d6147d278..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2389 zcmV-b399yqP)iRI<) zJUf9-qw=cG@YvYq?@%FqeXEDQ@j*g?v9QhZ^7rM)!*Fn;R#lSga7^t_ApF|T=DoC@ zp}>27sP&I+;!jg000M^NklQL=uQq)$s*0d|r7NG~*2;G0#>lVquOJLjkgFZJG z2WRB8DBQBPs&osxQ8Q&`W{f zGT^@BpqsEd3z$XH+Ye+=#jzWV-}jEjP zZfms~yWt)m-TtcPm6bGqv3MpC4HU)+W}++3s-IW}I{GAG+3nrp+yC+$LhRrVgmjDu zmDZfuf-<TnSkFD#AwQW$fF4ZFFau(J})k?uS)~lF6>u1^Md1efztBF<6U019%mFh{MX3Ta9 zv#=Tk*YBypb*v_){{`#Ed_Hf@GN@SpdRJHr3RPSbwJD~~D5V#khxMVjLRhaih*+t+ zgNUy0lG;}@s967I2ge5o&-m-$;E7{BAbMKM*-b~5x?7m&i70#d(!)Zm5B4fyWg^EP z5Zb|n@fo9R8dR*mvH9yE`l6RiRBJce=_C^wN^)W~3%6>0ybRU{d!?|R=JTwh-9S66 zL;i*L%%(xbN-tb+stVR)qG#m+vCC9`Q@fYHN08ZK@I-#f!f7-$#hHoq!Coz_Vr)H< zho8|-n!&_+agP36IKlB9CNK5zakLyMk4Nd1e<0S(V@FbLUMijNVyqALiek-4CXC;d z!Nhuw&M%h0I$zTd0h_HMO?zTYB=>N+jYYj7v}*>hU{FqFPJR>ZkzlxSg~Gt3y7ixlPGUnc{64ro)G9AZu z@Lf9Le-y5Bv3gYHvO{}8zar)=bFiAeI0I>rmLD1}+fLc4dn7ZYZ>@ z33V6pMed7QR>fz=mQ(k)LoLWctj#p4&2}=MT^+20bgV^N+ctW`1m{9>U8WOu#nh8D zeB`^~T&#(&jx{8yXksP*dP9=5G(zZmJqM4dN|1$EjdZlyMBwe=U^`zNBJ}D!7CRw_Qx69$I*U z;U*UdY}19L;SoPh64*4{k$t)& zwd;PuTnXN9Y~SYTkh-6zVhtlY)R75gg$#KfnQ2CBxp+vfw8{xq>8q^?_o7(3P@5Oh za+pxWLpDj>a!=T0kY%tM`8rJ%XR9hDTUD9as$ZIWTAT``ho0fc)z=?I5?Ny|D$NAP@)y0)arF_on{<#<9JRWP>X@00000NkvXX Hu0mjfDgfJh diff --git a/WebContent/VAADIN/themes/tests-featurebrowser/layouts/img/hide_properties.png b/WebContent/VAADIN/themes/tests-featurebrowser/layouts/img/hide_properties.png deleted file mode 100644 index 0069db75d9d1c68d0f015fb52152cb8ff06ec40e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 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 P&p2n|vBMP(z6t*aZ~o@T diff --git a/WebContent/VAADIN/themes/tests-featurebrowser/layouts/img/show_properties.png b/WebContent/VAADIN/themes/tests-featurebrowser/layouts/img/show_properties.png deleted file mode 100644 index 64274524191e8e56d26428562a956dbdd1d7007e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 829 zcmV-D1H$}?P)*5dHa-R{!g@5|ck$l2>! zb&FDNgh^(6QEr2ot-!X(+Tx60g%qPJpwlCQ$myv^TpjG@QW z;+3kum8-wN&)~Yt-D`xJQf`B!x5w8LC?jGDymV||i!j-qw6@vpzlvBcKF(BMIx z^S0CRh`sP$sqvx6?aSTp!qeq$hMS_b$jaE~y43H@+US#~xss>3!PxLsM`!Rpesg!v*|W`Nwlh*R%HIM)(P!5~8d_2$H4iOCuu&40X{ezP^5%spTHWVCUZ@_H+b{+?v$AX~ z3A0c=naL%-PwBo>eHuqflIpQI^Vv_*nwgd8z50&O2JY zpj+%wSYKh`BF4~?!$~yOQh$c5NZtk35()~dVC^WxyApJC9ZT&%fTbc<*v=vrQBV}N zUtidi0$T?^vZUc&EwxkPT}(3VsRM$;Dp2rJ_QaxGV}Wg;O{bSr%!{kp}pGB z-tLXA(4V{7l(f>U#oocx=d{V<%G&Kj>MVl*003-BL_t(|+RW594!|%BLs6#}_w?NV zqTy!GQU<<(^9KaT7#=eRl=K`>GIBsk!vQ5N2b8Q*J_KKl5=yMp_Uz|f#_FKNNxer( zR~e^+l1?ngn5)r2$-)680|(W0eua{W1J!5a`SvV60R{kmZ!R9+SD?%Q0000 - - FeaturesApplication - com.vaadin.terminal.gwt.server.ApplicationServlet - - application - com.vaadin.tests.featurebrowser.FeaturesApplication - - - Parameters com.vaadin.terminal.gwt.server.ApplicationServlet @@ -320,11 +311,6 @@ /FeatureBrowser/* - - FeaturesApplication - /FeaturesApplication/* - - Parameters /Parameters/* diff --git a/build/build.xml b/build/build.xml index 7090e3a198..f4e5a9ea1b 100644 --- a/build/build.xml +++ b/build/build.xml @@ -550,8 +550,6 @@ - - diff --git a/tests/src/com/vaadin/tests/featurebrowser/Feature.java b/tests/src/com/vaadin/tests/featurebrowser/Feature.java deleted file mode 100644 index 01ad8934fc..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/Feature.java +++ /dev/null @@ -1,197 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.terminal.ClassResource; -import com.vaadin.terminal.Resource; -import com.vaadin.ui.Component; -import com.vaadin.ui.CustomComponent; -import com.vaadin.ui.Embedded; -import com.vaadin.ui.HorizontalLayout; -import com.vaadin.ui.Label; -import com.vaadin.ui.TabSheet; -import com.vaadin.ui.VerticalLayout; - -public abstract class Feature extends CustomComponent { - - private static final String PROP_REMINDER_TEXT = "" - + "

Note: Use Properties panel located at the top" - + " right corner to try out how different properties affect" - + " the presentation or functionality of currently selected component."; - - private boolean propsReminder = true; - - private final VerticalLayout layout; - - private TabSheet ts; - - private boolean initialized = false; - - private static Resource sampleIcon; - - protected PropertyPanel propertyPanel; - - private Label javadoc; - - private Label description; - - /** Constuctor for the feature component */ - public Feature() { - layout = new VerticalLayout(); - setCompositionRoot(layout); - } - - /** - * Actual URL consists of "http://www.vaadin.com/api/com/vaadin/"+url - * - * @param url - */ - public void setJavadocURL(String url) { - javadoc.setValue(""); - } - - /** - * Feature component initialization is lazily done when the feature is - * attached to application - */ - @Override - public void attach() { - super.attach(); - - // Check if the feature is already initialized - if (initialized) { - return; - } - initialized = true; - - // Javadoc - javadoc = new Label(); - javadoc.setContentMode(Label.CONTENT_XHTML); - - // Demo - final Component demo = getDemoComponent(); - if (demo != null) { - layout.addComponent(demo); - } - - ts = new TabSheet(); - - ts.setSizeFull(); - - // Description tab - final String title = getTitle(); - if (getDescriptionXHTML() != null) { - final VerticalLayout mainLayout = new VerticalLayout(); - final HorizontalLayout layout = new HorizontalLayout(); - mainLayout.addComponent(layout); - if (getImage() != null) { - layout.addComponent(new Embedded("", new ClassResource( - getImage(), getApplication()))); - } - String label = ""; - label += getDescriptionXHTML(); - if (propsReminder) { - label += PROP_REMINDER_TEXT; - } - if (title != null) { - layout.addComponent(new Label("

" + title + "

", - Label.CONTENT_XHTML)); - } - description = new Label(label, Label.CONTENT_XHTML); - mainLayout.addComponent(description); - mainLayout.setMargin(true); - - ts.addTab(mainLayout, "Description", null); - } - - // Properties table tab - ts.addTab(getPropertyPanel().getAllProperties(), "Properties", null); - - // Javadoc tab - if (!javadoc.getValue().equals("")) { - ts.addTab(javadoc, "Javadoc", null); - } - - // Code Sample tab - final String example = getExampleSrc(); - if (example != null) { - final VerticalLayout l = new VerticalLayout(); - if (getTitle() != null) { - l.addComponent(new Label( - "// " + getTitle() + " example", - Label.CONTENT_XHTML)); - } - l.addComponent(new Label(example, Label.CONTENT_PREFORMATTED)); - ts.addTab(l, "Code Sample", null); - } - - } - - /** Get the desctiption of the feature as XHTML fragment */ - protected String getDescriptionXHTML() { - return "

Feature description is under construction

"; - } - - /** Get the title of the feature */ - protected String getTitle() { - return getClass().getName(); - } - - public TabSheet getTabSheet() { - return ts; - } - - /** Get the name of the image file that will be put on description page */ - protected String getImage() { - return null; - } - - /** Get the example application source code */ - protected String getExampleSrc() { - return null; - } - - /** Get the feature demo component */ - protected Component getDemoComponent() { - return null; - } - - /** Get sample icon resource */ - protected Resource getSampleIcon() { - if (sampleIcon == null) { - sampleIcon = new ClassResource("m.gif", getApplication()); - } - return sampleIcon; - } - - public PropertyPanel getPropertyPanel() { - return propertyPanel; - } - - public void setPropsReminder(boolean propsReminder) { - this.propsReminder = propsReminder; - } - - public void updateDescription() { - String label = ""; - label += getDescriptionXHTML(); - if (propsReminder) { - label += PROP_REMINDER_TEXT; - } - description.setValue(label); - } - - // Fix for #512 - @Override - public String getDescription() { - if (description != null && description.getValue() != null) { - return description.getValue().toString(); - } else { - return null; - } - } - -} \ No newline at end of file diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureBrowser.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureBrowser.java deleted file mode 100644 index 2f1e111b99..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureBrowser.java +++ /dev/null @@ -1,355 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import java.util.Iterator; -import java.util.StringTokenizer; - -import com.vaadin.data.Property; -import com.vaadin.ui.Button; -import com.vaadin.ui.Button.ClickEvent; -import com.vaadin.ui.Button.ClickListener; -import com.vaadin.ui.Component; -import com.vaadin.ui.ComponentContainer; -import com.vaadin.ui.CustomComponent; -import com.vaadin.ui.CustomLayout; -import com.vaadin.ui.Layout; -import com.vaadin.ui.Select; -import com.vaadin.ui.Tree; - -public class FeatureBrowser extends CustomComponent implements - Property.ValueChangeListener, ClickListener, Layout { - - private Tree features; - - private Feature currentFeature = null; - - private CustomLayout mainlayout; - - private PropertyPanel properties; - - private boolean initialized = false; - - private final Select themeSelector = new Select(); - - @Override - public void attach() { - - if (initialized) { - return; - } - initialized = true; - - // Configure tree - features = new Tree(); - features.addContainerProperty("name", String.class, ""); - features.addContainerProperty("feature", Feature.class, null); - features.setItemCaptionPropertyId("name"); - features.addListener(this); - features.setImmediate(true); - features.setStyleName("menu"); - - // Configure component layout - mainlayout = new CustomLayout("featurebrowser-mainlayout"); - setCompositionRoot(mainlayout); - mainlayout.addComponent(features, "tree"); - - // Theme selector - mainlayout.addComponent(themeSelector, "themes"); - themeSelector.addItem("tests-featurebrowser"); - - themeSelector.addListener(this); - themeSelector.select("tests-featurebrowser"); - themeSelector.setImmediate(true); - - // Restart button - final Button close = new Button("restart", getApplication(), "close"); - close.setStyleName("link"); - mainlayout.addComponent(close, "restart"); - - // Test component - registerFeature("/Welcome", new IntroWelcome()); - registerFeature("/UI Components", new IntroComponents()); - registerFeature("/UI Components/Basic", new IntroBasic()); - registerFeature("/UI Components/Basic/Text Field", - new FeatureTextField()); - registerFeature("/UI Components/Basic/Date Field", - new FeatureDateField()); - registerFeature("/UI Components/Basic/Button", new FeatureButton()); - registerFeature("/UI Components/Basic/Form", new FeatureForm()); - registerFeature("/UI Components/Basic/Label", new FeatureLabel()); - registerFeature("/UI Components/Basic/Link", new FeatureLink()); - registerFeature("/UI Components/Item Containers", - new IntroItemContainers()); - registerFeature("/UI Components/Item Containers/Select", - new FeatureSelect()); - registerFeature("/UI Components/Item Containers/Table", - new FeatureTable()); - registerFeature("/UI Components/Item Containers/Tree", - new FeatureTree()); - registerFeature("/UI Components/Layouts", new IntroLayouts()); - registerFeature("/UI Components/Layouts/Ordered Layout", - new FeatureOrderedLayout()); - registerFeature("/UI Components/Layouts/Grid Layout", - new FeatureGridLayout()); - registerFeature("/UI Components/Layouts/Custom Layout", - new FeatureCustomLayout()); - registerFeature("/UI Components/Layouts/Panel", new FeaturePanel()); - registerFeature("/UI Components/Layouts/Tab Sheet", - new FeatureTabSheet()); - registerFeature("/UI Components/Layouts/Window", new FeatureWindow()); - // Disabled for now - // registerFeature("/UI Components/Layouts/Frame Window", - // new FeatureFrameWindow()); - registerFeature("/UI Components/Data handling", new IntroDataHandling()); - registerFeature("/UI Components/Data handling/Embedded Objects", - new FeatureEmbedded()); - registerFeature("/UI Components/Data handling/Upload", - new FeatureUpload()); - registerFeature("/Data Model", new IntroDataModel()); - registerFeature("/Data Model/Properties", new FeatureProperties()); - registerFeature("/Data Model/Items", new FeatureItems()); - registerFeature("/Data Model/Containers", new FeatureContainers()); - registerFeature("/Data Model/Validators", new FeatureValidators()); - registerFeature("/Data Model/Buffering", new FeatureBuffering()); - // registerFeature("/Terminal", new IntroTerminal()); - // registerFeature("/Terminal/Parameters and URI Handling", - // new FeatureParameters()); - - // Pre-open all menus - for (final Iterator i = features.getItemIds().iterator(); i - .hasNext();) { - features.expandItem(i.next()); - } - - // Add demo component and tabs - currentFeature = new IntroWelcome(); - mainlayout.addComponent(currentFeature, "demo"); - mainlayout.addComponent(currentFeature.getTabSheet(), "tabsheet"); - - // Add properties - properties = currentFeature.getPropertyPanel(); - mainlayout.addComponent(properties, "properties"); - } - - public void registerFeature(String path, Feature feature) { - final StringTokenizer st = new StringTokenizer(path, "/"); - String id = ""; - String parentId = null; - while (st.hasMoreTokens()) { - final String token = st.nextToken(); - id += "/" + token; - if (!features.containsId(id)) { - features.addItem(id); - features.setChildrenAllowed(id, false); - } - features.getContainerProperty(id, "name").setValue(token); - if (parentId != null) { - features.setChildrenAllowed(parentId, true); - features.setParent(id, parentId); - } - if (!st.hasMoreTokens()) { - features.getContainerProperty(id, "feature").setValue(feature); - } - parentId = id; - } - } - - public void valueChange(Property.ValueChangeEvent event) { - - // FIXME: navigation statistics - try { - if ((event.getProperty().toString() == null) - && (event.getProperty() instanceof Tree)) { - // ignore tree initialization - } else { - FeatureUtil.debug( - getApplication().getUser().toString(), - "valueChange " - + event.getProperty().getClass() - .getSimpleName() + ", " - + event.getProperty()); - } - } catch (final Exception e) { - // ignored, should never happen - } - - // Change feature - if (event.getProperty() == features) { - final Object id = features.getValue(); - if (id != null) { - if (features.areChildrenAllowed(id)) { - features.expandItem(id); - } - final Property p = features.getContainerProperty(id, "feature"); - final Feature feature = p != null ? ((Feature) p.getValue()) - : null; - if (feature != null) { - mainlayout.removeComponent(currentFeature); - mainlayout.removeComponent(currentFeature.getTabSheet()); - mainlayout.addComponent(feature, "demo"); - mainlayout.addComponent(feature.getTabSheet(), "tabsheet"); - currentFeature = feature; - properties = feature.getPropertyPanel(); - if (properties != null) { - mainlayout.addComponent(properties, "properties"); - } - getWindow() - .setCaption( - "Vaadin Features / " - + features.getContainerProperty(id, - "name")); - } - } - } else if (event.getProperty() == themeSelector) { - getApplication().setTheme(themeSelector.toString()); - } - } - - public void buttonClick(ClickEvent event) { - // FIXME: navigation statistics - try { - FeatureUtil.debug(getApplication().getUser().toString(), - "buttonClick " - + event.getButton().getClass().getSimpleName() - + ", " + event.getButton().getCaption() + ", " - + event.getButton().getValue()); - } catch (final Exception e) { - // ignored, should never happen - } - - } - - @Override - public void addComponent(Component c) { - // TODO Auto-generated method stub - - } - - @Override - public void addListener(ComponentAttachListener listener) { - // TODO Auto-generated method stub - - } - - @Override - public void addListener(ComponentDetachListener listener) { - // TODO Auto-generated method stub - - } - - @Override - public Iterator getComponentIterator() { - // TODO Auto-generated method stub - return null; - } - - @Override - public void moveComponentsFrom(ComponentContainer source) { - // TODO Auto-generated method stub - - } - - @Override - public void removeAllComponents() { - // TODO Auto-generated method stub - - } - - @Override - public void removeComponent(Component c) { - // TODO Auto-generated method stub - - } - - @Override - public void removeListener(ComponentAttachListener listener) { - // TODO Auto-generated method stub - - } - - @Override - public void removeListener(ComponentDetachListener listener) { - // TODO Auto-generated method stub - - } - - @Override - public void replaceComponent(Component oldComponent, Component newComponent) { - // TODO Auto-generated method stub - - } - - public void setMargin(boolean enabled) { - // TODO Auto-generated method stub - - } - - public void setMargin(boolean top, boolean right, boolean bottom, - boolean left) { - // TODO Auto-generated method stub - - } - - @Override - public float getHeight() { - // TODO Auto-generated method stub - return 0; - } - - @Override - public int getHeightUnits() { - // TODO Auto-generated method stub - return 0; - } - - @Override - public float getWidth() { - // TODO Auto-generated method stub - return 0; - } - - @Override - public int getWidthUnits() { - // TODO Auto-generated method stub - return 0; - } - - @Override - public void setHeight(float height) { - // TODO Auto-generated method stub - - } - - @Override - public void setHeightUnits(int units) { - // TODO Auto-generated method stub - - } - - @Override - public void setSizeFull() { - // TODO Auto-generated method stub - - } - - @Override - public void setSizeUndefined() { - // TODO Auto-generated method stub - - } - - @Override - public void setWidth(float width) { - // TODO Auto-generated method stub - - } - - @Override - public void setWidthUnits(int units) { - // TODO Auto-generated method stub - - } -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureBuffering.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureBuffering.java deleted file mode 100644 index 7428f8d8d5..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureBuffering.java +++ /dev/null @@ -1,93 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.Label; -import com.vaadin.ui.Panel; -import com.vaadin.ui.Select; -import com.vaadin.ui.VerticalLayout; - -public class FeatureBuffering extends Feature { - - private static final String INTRO_TEXT = "" - + "Vaadin data model provides interface for implementing " - + "buffering in data components. The basic idea is that a component " - + "reading their state from data source can implement " - + "Buffered-interface, for storing the value internally. " - + "Buffering provides transactional access " - + "for setting data: data can be put to a component's buffer and " - + "afterwards committed to or discarded by re-reding it from the data source. " - + "The buffering can be used for creating interactive interfaces " - + "as well as caching the data for performance reasons." - + "

Buffered interface contains methods for committing and discarding " - + "changes to an object and support for controlling buffering mode " - + "with read-through and write-through modes. " - + "Read-through mode means that the value read from the buffered " - + "object is constantly up to date with the data source. " - + "Respectively the write-through mode means that all changes to the object are " - + "immediately updated to the data source."; - - public FeatureBuffering() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - final Panel panel = new Panel(); - panel.setCaption("Buffering"); - l.addComponent(panel); - - final Label label = new Label(); - panel.addComponent(label); - - label.setContentMode(Label.CONTENT_XHTML); - label.setValue(INTRO_TEXT); - - // Properties - propertyPanel = new PropertyPanel(panel); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "width", "height" }); - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("light") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("light"); - themes.addItem("strong") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("strong"); - propertyPanel.addProperties("Panel Properties", ap); - - setJavadocURL("data/Buffered.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return null; - } - - /** - * @see com.vaadin.tests.featurebrowser.Feature#getDescriptionXHTML() - */ - @Override - protected String getDescriptionXHTML() { - return null; - } - - @Override - protected String getImage() { - return null; - } - - @Override - protected String getTitle() { - return null; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureButton.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureButton.java deleted file mode 100644 index 7dc3be661a..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureButton.java +++ /dev/null @@ -1,73 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Button; -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.Select; -import com.vaadin.ui.VerticalLayout; - -public class FeatureButton extends Feature { - - public FeatureButton() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final Button b = new Button("Caption"); - l.addComponent(b); - - // Properties - propertyPanel = new PropertyPanel(b); - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("link") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("link"); - final Form ap = propertyPanel - .createBeanPropertySet(new String[] { "switchMode" }); - propertyPanel.addProperties("Button Properties", ap); - - setJavadocURL("ui/Button.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return "Button b = new Button(\"Caption\");\n"; - - } - - /** - * @see com.vaadin.tests.featurebrowser.Feature#getDescriptionXHTML() - */ - @Override - protected String getDescriptionXHTML() { - return "In Vaadin, boolean input values are represented by buttons. " - + "Buttons may function either as a push buttons or switches. (checkboxes)

" - + "Button can be directly connected to any method of an object, which " - + "is an easy way to trigger events: new Button(\"Play\", myPiano \"playIt\"). " - + "Or in checkbox-mode they can be bound to a boolean proterties and create " - + " simple selectors.

" - + "See the demo and try out how the different properties affect " - + "the presentation of the component."; - } - - @Override - protected String getImage() { - return "icon_demo.png"; - } - - @Override - protected String getTitle() { - return "Button"; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureContainers.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureContainers.java deleted file mode 100644 index 5d4b09e722..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureContainers.java +++ /dev/null @@ -1,96 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.Label; -import com.vaadin.ui.Panel; -import com.vaadin.ui.Select; -import com.vaadin.ui.VerticalLayout; - -public class FeatureContainers extends Feature { - - private static final String INTRO_TEXT = "" - + "Container is the most advanced of the data " - + "model supported by Vaadin. It provides a very flexible " - + "way of managing set of items that share common properties. Each " - + "item is identified by an item id. " - + "Properties can be requested from container with item " - + "and property ids. Other way of accessing properties is to first " - + "request an item from container and then request its properties " - + "from it." - + "

Container interface was designed with flexibility and " - + "efficiency in mind. It contains inner interfaces for ordering " - + "the items sequentially, indexing the items and accessing them " - + "hierarchically. Those ordering models provide basis for " - + "Table, Tree and Select UI components. As with other data " - + "models, the containers support events for notifying about the " - + "changes." - + "

Set of utilities for converting between container models by " - + "adding external indexing or hierarchy into existing containers. " - + "In memory containers implementing indexed and hierarchical " - + "models provide easy to use tools for setting up in memory data " - + "storages. There is even a hierarchical container for direct " - + "file system access."; - - public FeatureContainers() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final Panel panel = new Panel(); - panel.setCaption("Containers"); - l.addComponent(panel); - - final Label label = new Label(); - panel.addComponent(label); - - label.setContentMode(Label.CONTENT_XHTML); - label.setValue(INTRO_TEXT); - - // Properties - propertyPanel = new PropertyPanel(panel); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "width", "height" }); - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("light") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("light"); - themes.addItem("strong") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("strong"); - propertyPanel.addProperties("Panel Properties", ap); - - setJavadocURL("data/Container.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return null; - } - - @Override - protected String getDescriptionXHTML() { - return null; - } - - @Override - protected String getImage() { - return null; - } - - @Override - protected String getTitle() { - return null; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureCustomLayout.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureCustomLayout.java deleted file mode 100644 index 02e29f8ee3..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureCustomLayout.java +++ /dev/null @@ -1,84 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.Label; -import com.vaadin.ui.Panel; -import com.vaadin.ui.Select; -import com.vaadin.ui.VerticalLayout; - -public class FeatureCustomLayout extends Feature { - - private static final String INTRO_TEXT = "" - + "A container component with freely designed layout and style. The " - + "container consists of items with textually represented locations. Each " - + "item contains one sub-component. The adapter and theme are resposible " - + "for rendering the layout with given style by placing the items on the " - + "screen in defined locations." - + "

The definition of locations is not fixed - the each style can define its " - + "locations in a way that is suitable for it. One typical example would be " - + "to create visual design for a website as a custom layout: the visual design " - + "could define locations for \"menu\", \"body\" and \"title\" for example. " - + "The layout would then be implemented e.g. as plain HTML file." - + "

The default theme handles the styles that are not defined by just drawing " - + "the subcomponents with flowlayout."; - - @Override - protected Component getDemoComponent() { - final VerticalLayout l = new VerticalLayout(); - - final Panel panel = new Panel(); - panel.setCaption("Custom Layout"); - l.addComponent(panel); - - final Label label = new Label(); - panel.addComponent(label); - - label.setContentMode(Label.CONTENT_XHTML); - label.setValue(INTRO_TEXT); - - // Properties - propertyPanel = new PropertyPanel(panel); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "width", "height" }); - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("light") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("light"); - themes.addItem("strong") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("strong"); - propertyPanel.addProperties("Panel Properties", ap); - - setJavadocURL("ui/CustomLayout.html"); - - return l; - } - - @Override - protected String getDescriptionXHTML() { - return null; - } - - @Override - protected String getExampleSrc() { - return "CustomLayout c = new CustomLayout(\"mystyle\");\n" - + "c.addComponent(new Label(\"Example description\"),\"label1-location\");\n" - + "c.addComponent(new Button(\"Example action\"),\"example-action-location\");\n"; - } - - @Override - protected String getImage() { - return null; - } - - @Override - protected String getTitle() { - return "Custom Layout"; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureDateField.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureDateField.java deleted file mode 100644 index ca81581153..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureDateField.java +++ /dev/null @@ -1,107 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import java.util.Locale; - -import com.vaadin.ui.Component; -import com.vaadin.ui.DateField; -import com.vaadin.ui.Form; -import com.vaadin.ui.Label; -import com.vaadin.ui.Select; -import com.vaadin.ui.VerticalLayout; - -public class FeatureDateField extends Feature { - - static private String[] localeNames; - static { - final Locale[] locales = Locale.getAvailableLocales(); - localeNames = new String[locales.length]; - for (int i = 0; i < locales.length; i++) { - localeNames[i] = locales[i].getDisplayName(); - } - } - - public FeatureDateField() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - l.addComponent(new Label("Your default locale is: " - + getApplication().getLocale().toString().replace('_', '-'))); - - final DateField df = new DateField(); - df.setValue(new java.util.Date()); - l.addComponent(df); - - // Properties - propertyPanel = new PropertyPanel(df); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "resolution", "locale" }); - ap.replaceWithSelect("resolution", new Object[] { - new Integer(DateField.RESOLUTION_YEAR), - new Integer(DateField.RESOLUTION_MONTH), - new Integer(DateField.RESOLUTION_DAY), - new Integer(DateField.RESOLUTION_HOUR), - new Integer(DateField.RESOLUTION_MIN), - new Integer(DateField.RESOLUTION_SEC), - new Integer(DateField.RESOLUTION_MSEC) }, new Object[] { - "Year", "Month", "Day", "Hour", "Minute", "Second", - "Millisecond" }); - ap.replaceWithSelect("locale", Locale.getAvailableLocales(), - localeNames); - ap.getField("resolution").setValue( - new Integer(DateField.RESOLUTION_DAY)); - ap.getField("locale").setValue(Locale.getDefault()); - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("text") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("text"); - themes.addItem("calendar") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("calendar"); - propertyPanel.addProperties("DateField Properties", ap); - - setJavadocURL("ui/DateField.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return "DateField df = new DateField(\"Caption\");\n" - + "df.setValue(new java.util.Date());\n"; - } - - @Override - protected String getDescriptionXHTML() { - return "Representing Dates and times and providing a way to select " - + "or enter some specific date and/or time is an typical need in " - + "data-entry user interfaces (UI). Vaadin provides a DateField " - + "component that is intuitive to use and yet controllable through " - + "its properties." - + "

The calendar-style allows point-and-click selection " - + "of dates while text-style shows only minimalistic user interface." - + " Validators may be bound to the component to check and " - + "validate the given input." - + "

On the demo tab you can try out how the different properties affect the " - + "presentation of the component."; - } - - @Override - protected String getImage() { - return "icon_demo.png"; - } - - @Override - protected String getTitle() { - return "DateField"; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureEmbedded.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureEmbedded.java deleted file mode 100644 index 8edaecee6d..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureEmbedded.java +++ /dev/null @@ -1,95 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.terminal.ClassResource; -import com.vaadin.ui.Component; -import com.vaadin.ui.Embedded; -import com.vaadin.ui.Form; -import com.vaadin.ui.VerticalLayout; - -public class FeatureEmbedded extends Feature { - - public FeatureEmbedded() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final ClassResource flashResource = new ClassResource( - "vaadin_spin.swf", getApplication()); - final Embedded emb = new Embedded("Embedded Caption", flashResource); - emb.setType(Embedded.TYPE_OBJECT); - emb.setMimeType("application/x-shockwave-flash"); - emb.setWidth("250px"); - emb.setHeight("100px"); - l.addComponent(emb); - - // Properties - propertyPanel = new PropertyPanel(emb); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "type", "source", "width", "height", "widthUnits", - "heightUnits", "codebase", "codetype", "archive", "mimeType", - "standby", "classId" }); - ap.replaceWithSelect("type", new Object[] { - new Integer(Embedded.TYPE_IMAGE), - new Integer(Embedded.TYPE_OBJECT) }, new Object[] { "Image", - "Object" }); - final Object[] units = new Object[Embedded.UNIT_SYMBOLS.length]; - final Object[] symbols = new Object[Embedded.UNIT_SYMBOLS.length]; - for (int i = 0; i < units.length; i++) { - units[i] = new Integer(i); - symbols[i] = Embedded.UNIT_SYMBOLS[i]; - } - ap.replaceWithSelect("heightUnits", units, symbols); - ap.replaceWithSelect("widthUnits", units, symbols); - ap.replaceWithSelect("source", new Object[] { flashResource }, - new Object[] { "vaadin_spin.swf" }); - propertyPanel.addProperties("Embedded Properties", ap); - propertyPanel.getField("standby").setDescription( - "The text to display while loading the object."); - propertyPanel.getField("codebase").setDescription( - "root-path used to access resources with relative paths."); - propertyPanel.getField("codetype").setDescription( - "MIME-type of the code."); - propertyPanel - .getField("classId") - .setDescription( - "Unique object id. This can be used for example to identify windows components."); - - setJavadocURL("ui/Embedded.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return "// Load image from jpg-file, that is in the same package with the application\n" - + "Embedded e = new Embedded(\"Image title\",\n" - + " new ClassResource(\"image.jpg\", getApplication()));"; - } - - @Override - protected String getDescriptionXHTML() { - return "The embedding feature allows for adding images, multimedia and other non-specified " - + "content to your application. " - + "The feature has provisions for embedding both applets and Active X controls. " - + "Actual support for embedded media types is left to the terminal."; - } - - @Override - protected String getImage() { - return "icon_demo.png"; - } - - @Override - protected String getTitle() { - return "Embedded"; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureForm.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureForm.java deleted file mode 100644 index 0bb0a02530..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureForm.java +++ /dev/null @@ -1,179 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import java.util.Date; - -import com.vaadin.data.Property; -import com.vaadin.ui.Component; -import com.vaadin.ui.DateField; -import com.vaadin.ui.Form; -import com.vaadin.ui.GridLayout; -import com.vaadin.ui.HorizontalLayout; -import com.vaadin.ui.Layout; -import com.vaadin.ui.Select; -import com.vaadin.ui.TextField; -import com.vaadin.ui.VerticalLayout; - -public class FeatureForm extends Feature implements - Property.ValueChangeListener { - - VerticalLayout demo = null; - - Form test; - - Layout formLayout = null; - - Select addField = new Select("Add field"); - - Select resetLayout = new Select("Restart"); - - @Override - protected Component getDemoComponent() { - - if (demo == null) { - demo = new VerticalLayout(); - createDemo(); - } - - setJavadocURL("ui/Form.html"); - - return demo; - } - - private void createDemo() { - - demo.removeAllComponents(); - - // Test form - if (formLayout == null) { - test = new Form(); - } else { - test = new Form(formLayout); - } - - demo.addComponent(test); - final HorizontalLayout actions = new HorizontalLayout(); - demo.addComponent(actions); - - // form adder - addField.setImmediate(true); - addField.addItem("Add field"); - addField.setNullSelectionItemId("Add field"); - addField.addItem("Text field"); - addField.addItem("Time"); - addField.addItem("Option group"); - addField.addItem("Calendar"); - addField.addListener(this); - actions.addComponent(addField); - - // Layout reset - resetLayout.setImmediate(true); - resetLayout.addItem("Select layout example"); - resetLayout.setNullSelectionItemId("Select layout example"); - resetLayout.addItem("Vertical form (OrderedLayout form-style)"); - resetLayout.addItem("Two columns (2x1 GridLayout)"); - resetLayout.addItem("Flow (OrderedLayout flow-orientation)"); - resetLayout.addListener(this); - actions.addComponent(resetLayout); - - // Properties - propertyPanel = new PropertyPanel(test); - propertyPanel.addProperties("Form special properties", new Form()); - } - - public void valueChange(Property.ValueChangeEvent event) { - - if (event.getProperty() == resetLayout) { - - final String value = (String) resetLayout.getValue(); - - if (value != null) { - formLayout = null; - - if (value.equals("Two columns (2x1 GridLayout)")) { - formLayout = new GridLayout(2, 1); - } - if (value.equals("Horizontal (OrderedLayout)")) { - formLayout = new HorizontalLayout(); - } - - createDemo(); - resetLayout.setValue(null); - } - } - - if (event.getProperty() == addField) { - - final String value = (String) addField.getValue(); - - if (value != null) { - if (value.equals("Text field")) { - test.addField(new Object(), new TextField("Test field")); - } - if (value.equals("Time")) { - final DateField d = new DateField("Time", new Date()); - d.setDescription("This is a DateField-component with text-style"); - d.setResolution(DateField.RESOLUTION_MIN); - d.setStyleName("text"); - test.addField(new Object(), d); - } - if (value.equals("Calendar")) { - final DateField c = new DateField("Calendar", new Date()); - c.setDescription("DateField-component with calendar-style and day-resolution"); - c.setStyleName("calendar"); - c.setResolution(DateField.RESOLUTION_DAY); - test.addField(new Object(), c); - } - if (value.equals("Option group")) { - final Select s = new Select("Options"); - s.setDescription("Select-component with optiongroup-style"); - s.addItem("Linux"); - s.addItem("Windows"); - s.addItem("Solaris"); - s.addItem("Symbian"); - s.setStyleName("optiongroup"); - - test.addField(new Object(), s); - } - - addField.setValue(null); - } - } - } - - @Override - protected String getDescriptionXHTML() { - return "Form is a flexible, yet simple container for fields. " - + " It provides support for any layouts and provides buffering interface for" - + " easy connection of commit- and discard buttons. All the form" - + " fields can be customized by adding validators, setting captions and icons, " - + " setting immediateness, etc. Also direct mechanism for replacing existing" - + " fields with selections is given." - + "

Form provides customizable editor for classes implementing" - + " Item-interface. Also the form itself" - + " implements this interface for easier connectivity to other items." - + " To use the form as editor for an item, just connect the item to" - + " form.After the item has been connected to the form," - + " the automatically created fields can be customized and new fields can" - + " be added. If you need to connect a class that does not implement" - + " Item-interface, most properties of any" - + " class following bean pattern, can be accessed trough" - + " BeanItem." - + "

The best example of Form usage is the this feature browser itself; " - + " all the Property-panels in demos are composed of Form-components."; - } - - @Override - protected String getTitle() { - return "Form"; - } - - @Override - protected String getImage() { - return "icon_demo.png"; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureGridLayout.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureGridLayout.java deleted file mode 100644 index 4573b13248..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureGridLayout.java +++ /dev/null @@ -1,79 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import java.util.Date; - -import com.vaadin.ui.Button; -import com.vaadin.ui.Component; -import com.vaadin.ui.DateField; -import com.vaadin.ui.Form; -import com.vaadin.ui.GridLayout; -import com.vaadin.ui.TextField; -import com.vaadin.ui.VerticalLayout; - -public class FeatureGridLayout extends Feature { - - public FeatureGridLayout() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final GridLayout gl = new GridLayout(3, 3); - final DateField cal = new DateField("Test component 1", new Date()); - cal.setStyleName("calendar"); - gl.addComponent(cal, 1, 0, 2, 1); - for (int i = 2; i < 7; i++) { - gl.addComponent(new TextField("Test component " + i)); - } - l.addComponent(gl); - - // Properties - propertyPanel = new PropertyPanel(gl); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "width", "height" }); - ap.addField("new line", new Button("New Line", gl, "newLine")); - ap.addField("space", new Button("Space", gl, "space")); - propertyPanel.addProperties("GridLayout Features", ap); - - setJavadocURL("ui/GridLayout.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return "GridLayout gl = new GridLayout(2,2);\n" - + "gl.addComponent(new Label(\"Label 1 in GridLayout\"));\n" - + "gl.addComponent(new Label(\"Label 2 in GridLayout\"));\n" - + "gl.addComponent(new Label(\"Label 3 in GridLayout\"));\n" - + "gl.addComponent(new Label(\"Label 4 in GridLayout\"));\n"; - } - - /** - * @see com.vaadin.tests.featurebrowser.Feature#getDescriptionXHTML() - */ - @Override - protected String getDescriptionXHTML() { - return "This feature provides a container that lays out components " - + "into a grid of given width and height." - + "

On the demo tab you can try out how the different " - + "properties affect the presentation of the component."; - } - - @Override - protected String getImage() { - return "icon_demo.png"; - } - - @Override - protected String getTitle() { - return "GridLayout"; - } -} \ No newline at end of file diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureItems.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureItems.java deleted file mode 100644 index e577861a49..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureItems.java +++ /dev/null @@ -1,89 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.Label; -import com.vaadin.ui.Panel; -import com.vaadin.ui.Select; -import com.vaadin.ui.VerticalLayout; - -public class FeatureItems extends Feature { - - private static final String INTRO_TEXT = "" - + "Item is an object, which contains a set of named " - + "properties. Each property is identified by an " - + "id and a reference to the property can be queried from the Item. " - + "Item defines inner-interfaces for maintaining the item property " - + "set and listening the item property set changes." - + "

Items generally represent objects in the object-oriented " - + "model, but with the exception that they are configurable " - + "and provide an event mechanism. The simplest way of utilizing " - + "Item interface is to use existing Item implementations. " - + "Provided utility classes include configurable property set," - + " bean to item adapter and Form UI component."; - - public FeatureItems() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final Panel panel = new Panel(); - panel.setCaption("Items"); - l.addComponent(panel); - - final Label label = new Label(); - panel.addComponent(label); - - label.setContentMode(Label.CONTENT_XHTML); - label.setValue(INTRO_TEXT); - - // Properties - propertyPanel = new PropertyPanel(panel); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "width", "height" }); - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("light") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("light"); - themes.addItem("strong") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("strong"); - propertyPanel.addProperties("Panel Properties", ap); - - setJavadocURL("data/Item.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return null; - } - - /** - * @see com.vaadin.tests.featurebrowser.Feature#getDescriptionXHTML() - */ - @Override - protected String getDescriptionXHTML() { - return null; - } - - @Override - protected String getImage() { - return "icon_demo.png"; - } - - @Override - protected String getTitle() { - return "Introduction of Data Model Item"; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureLabel.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureLabel.java deleted file mode 100644 index 01d30f74e9..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureLabel.java +++ /dev/null @@ -1,77 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.Label; -import com.vaadin.ui.VerticalLayout; - -public class FeatureLabel extends Feature { - - public FeatureLabel() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final Label lab = new Label("Label text"); - l.addComponent(lab); - - // Properties - propertyPanel = new PropertyPanel(lab); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "contentMode", "value" }); - ap.replaceWithSelect("contentMode", new Object[] { - new Integer(Label.CONTENT_PREFORMATTED), - new Integer(Label.CONTENT_TEXT), - new Integer(Label.CONTENT_XHTML), - new Integer(Label.CONTENT_XML) }, new Object[] { - "Preformatted", "Text", "XHTML Fragment(Must be valid)", - "XML (Subtree with namespace)" }); - propertyPanel.addProperties("Label Properties", ap); - - setJavadocURL("ui/Label.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return "Label l = new Label(\"Caption\");\n"; - } - - /** - * @see com.vaadin.tests.featurebrowser.Feature#getDescriptionXHTML() - */ - @Override - protected String getDescriptionXHTML() { - return "Labels components are for captions and plain text. " - + "By default, it is a light-weight component for presenting " - + "text content in application, but it can be also used to present " - + "formatted information and even XML." - + "

" - + "Label can also be directly associated with data property to display " - + "information from different data sources automatically. This makes it " - + "trivial to present the current user in the corner of applications main window. " - + "

" - + "On the demo tab you can try out how the different properties affect " - + "the presentation of the component."; - } - - @Override - protected String getImage() { - return "icon_demo.png"; - } - - @Override - protected String getTitle() { - return "Label"; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureLink.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureLink.java deleted file mode 100644 index 74e7eed7cf..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureLink.java +++ /dev/null @@ -1,68 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.terminal.ExternalResource; -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.Link; -import com.vaadin.ui.VerticalLayout; - -public class FeatureLink extends Feature { - - public FeatureLink() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final Link lnk = new Link("Link caption", new ExternalResource( - "http://www.vaadin.com")); - l.addComponent(lnk); - - // Properties - propertyPanel = new PropertyPanel(lnk); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "targetName", "targetWidth", "targetHeight", "targetBorder" }); - ap.replaceWithSelect("targetBorder", new Object[] { - new Integer(Link.TARGET_BORDER_DEFAULT), - new Integer(Link.TARGET_BORDER_MINIMAL), - new Integer(Link.TARGET_BORDER_NONE) }, new Object[] { - "Default", "Minimal", "None" }); - propertyPanel.addProperties("Link Properties", ap); - - setJavadocURL("ui/Link.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return "Link link = new Link(\"Link caption\",new ExternalResource(\"http://www.vaadin.com\"));\n"; - } - - @Override - protected String getDescriptionXHTML() { - return "The link feature allows for making refences to both internal and external resources. " - + "The link can open the new resource in a new window, allowing for control of the newly " - + "opened windows attributes, such as size and border. " - + "

" - + " For example you can create an application pop-up or create link to external resources."; - - } - - @Override - protected String getImage() { - return "icon_demo.png"; - } - - @Override - protected String getTitle() { - return "Link"; - } -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureOrderedLayout.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureOrderedLayout.java deleted file mode 100644 index 06ab57f6ec..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureOrderedLayout.java +++ /dev/null @@ -1,81 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Component; -import com.vaadin.ui.Select; -import com.vaadin.ui.TextField; -import com.vaadin.ui.VerticalLayout; - -public class FeatureOrderedLayout extends Feature { - - public FeatureOrderedLayout() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final VerticalLayout ol = new VerticalLayout(); - for (int i = 1; i < 5; i++) { - ol.addComponent(new TextField("Test component " + i)); - } - l.addComponent(ol); - - // Properties - propertyPanel = new PropertyPanel(ol); - // final Form ap = propertyPanel.createBeanPropertySet(new String[] { - // "orientation" }); - // ap.replaceWithSelect("orientation", new Object[] { new - // Integer(AbstractOrderedLayout.ORIENTATION_HORIZONTAL), new - // Integer(AbstractOrderedLayout.ORIENTATION_VERTICAL) }, new Object[] { - // "Horizontal", "Vertical" }); - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("form") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("form"); - // propertyPanel.addProperties("OrderedLayout Properties", ap); - - setJavadocURL("ui/OrderedLayout.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return "OrderedLayout ol = new OrderedLayout(AbstractOrderedLayout.ORIENTATION_FLOW);\n" - + "ol.addComponent(new TextField(\"Textfield caption\"));\n" - + "ol.addComponent(new Label(\"Label\"));\n"; - - } - - /** - * @see com.vaadin.tests.featurebrowser.Feature#getDescriptionXHTML() - */ - @Override - protected String getDescriptionXHTML() { - return "This feature provides a container for laying out components either " - + "vertically, horizontally or flowingly. The orientation may be changed " - + "during runtime. It also defines a special style for themes to implement called \"form\"" - + "that is used for input forms where the components are laid-out side-by-side " - + "with their captions." - + "

" - + "On the demo tab you can try out how the different properties " - + "affect the presentation of the component."; - } - - @Override - protected String getImage() { - return "icon_demo.png"; - } - - @Override - protected String getTitle() { - return "OrderedLayout"; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeaturePanel.java b/tests/src/com/vaadin/tests/featurebrowser/FeaturePanel.java deleted file mode 100644 index d1e1258e27..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeaturePanel.java +++ /dev/null @@ -1,74 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.Label; -import com.vaadin.ui.Panel; -import com.vaadin.ui.Select; -import com.vaadin.ui.VerticalLayout; - -public class FeaturePanel extends Feature { - - public FeaturePanel() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - // Example panel - final Panel show = new Panel("Panel caption"); - show.addComponent(new Label( - "This is an example Label component that is added into Panel.")); - l.addComponent(show); - - // Properties - propertyPanel = new PropertyPanel(show); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "width", "height" }); - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("light") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("light"); - themes.addItem("strong") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("strong"); - propertyPanel.addProperties("Panel Properties", ap); - - setJavadocURL("ui/Panel.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return "Panel show = new Panel(\"Panel caption\");\n" - + "show.addComponent(new Label(\"This is an example Label component that is added into Panel.\"));"; - - } - - @Override - protected String getDescriptionXHTML() { - return "Panel is a container for other components, by default it draws a frame around it's " - + "extremities and may have a caption to clarify the nature of the contained components' purpose." - + " Panel contains an layout where the actual contained components are added, " - + "this layout may be switched on the fly."; - } - - @Override - protected String getImage() { - return "icon_demo.png"; - } - - @Override - protected String getTitle() { - return "Panel"; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureParameters.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureParameters.java deleted file mode 100644 index f37be2c372..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureParameters.java +++ /dev/null @@ -1,170 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import java.net.URL; -import java.util.Iterator; -import java.util.Map; - -import com.vaadin.terminal.DownloadStream; -import com.vaadin.terminal.ExternalResource; -import com.vaadin.terminal.ParameterHandler; -import com.vaadin.terminal.URIHandler; -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.Label; -import com.vaadin.ui.Link; -import com.vaadin.ui.Panel; -import com.vaadin.ui.Select; -import com.vaadin.ui.Table; -import com.vaadin.ui.VerticalLayout; - -public class FeatureParameters extends Feature implements URIHandler, - ParameterHandler { - - private final Label context = new Label(); - - private final Label relative = new Label(); - - private final Table params = new Table(); - - public FeatureParameters() { - super(); - params.addContainerProperty("Values", String.class, ""); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final Label info = new Label("To test this feature, try to " - + "add some get parameters to URL. For example if you have " - + "the feature browser installed in your local host, try url: "); - info.setCaption("Usage info"); - l.addComponent(info); - try { - final URL u1 = new URL(getApplication().getURL(), - "test/uri?test=1&test=2"); - final URL u2 = new URL(getApplication().getURL(), - "foo/bar?mary=john&count=3"); - - l.addComponent(new Link(u1.toString(), new ExternalResource(u1))); - l.addComponent(new Label("Or this: ")); - l.addComponent(new Link(u2.toString(), new ExternalResource(u2))); - } catch (final Exception e) { - System.out.println("Couldn't get hostname for this machine: " - + e.toString()); - e.printStackTrace(); - } - - // URI - final Panel p1 = new Panel("URI Handler"); - context.setCaption("Last URI handler context"); - p1.addComponent(context); - relative.setCaption("Last relative URI"); - p1.addComponent(relative); - l.addComponent(p1); - - // Parameters - final Panel p2 = new Panel("Parameter Handler"); - params.setCaption("Last parameters"); - params.setColumnHeaderMode(Table.COLUMN_HEADER_MODE_ID); - params.setRowHeaderMode(Table.ROW_HEADER_MODE_ID); - p2.addComponent(params); - l.addComponent(p2); - - // Properties - propertyPanel = new PropertyPanel(p1); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "width", "height" }); - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("light") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("light"); - themes.addItem("strong") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("strong"); - propertyPanel.addProperties("Panel Properties", ap); - - setJavadocURL("ui/Panel.html"); - - return l; - } - - @Override - protected String getDescriptionXHTML() { - return "This is a demonstration of how URL parameters can be recieved and handled." - + "Parameters and URL:s can be received trough the windows by registering " - + "URIHandler and ParameterHandler classes window."; - } - - @Override - protected String getImage() { - return "parameters.jpg"; - } - - @Override - protected String getTitle() { - return "Parameters"; - } - - /** - * Add URI and parametes handlers to window. - * - * @see com.vaadin.ui.Component#attach() - */ - @Override - public void attach() { - super.attach(); - getWindow().addURIHandler(this); - getWindow().addParameterHandler(this); - } - - /** - * Remove all handlers from window - * - * @see com.vaadin.ui.Component#detach() - */ - @Override - public void detach() { - super.detach(); - getWindow().removeURIHandler(this); - getWindow().removeParameterHandler(this); - } - - /** - * Update URI - * - * @see com.vaadin.terminal.URIHandler#handleURI(URL, String) - */ - public DownloadStream handleURI(URL context, String relativeUri) { - this.context.setValue(context.toString()); - relative.setValue(relativeUri); - return null; - } - - /** - * Update parameters table - * - * @see com.vaadin.terminal.ParameterHandler#handleParameters(Map) - */ - public void handleParameters(Map parameters) { - params.removeAllItems(); - for (final Iterator i = parameters.keySet().iterator(); i - .hasNext();) { - final String name = i.next(); - final String[] values = parameters.get(name); - String v = ""; - for (int j = 0; j < values.length; j++) { - if (v.length() > 0) { - v += ", "; - } - v += "'" + values[j] + "'"; - } - params.addItem(new Object[] { v }, name); - } - } -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureProperties.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureProperties.java deleted file mode 100644 index e314c574f6..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureProperties.java +++ /dev/null @@ -1,94 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.Label; -import com.vaadin.ui.Panel; -import com.vaadin.ui.Select; -import com.vaadin.ui.VerticalLayout; - -public class FeatureProperties extends Feature { - - private static final String INTRO_TEXT = "" - + "Vaadin data model is one of the core concepts " - + "in the library and Property-interface is the base of that " - + "model. Property provides standardized API for a single data object " - + "that can be read (get) and written (set). A property is always typed, but can optionally " - + "support data type conversions. Optionally properties can provide " - + "value change events for following the state changes." - + "

The most important function of the Property as well as other " - + "data models is to connect classes implementing the interface directly to " - + "editor and viewer classes. Typically this is used to connect different " - + "data sources to UI components for editing and viewing their contents." - + "

Properties can be utilized either by implementing the interface " - + "or by using some of the existing property implementations. Vaadin " - + "includes Property interface implementations for " - + "arbitrary function pairs or Bean-properties as well as simple object " - + "properties." - + "

Many of the UI components also implement Property interface and allow " - + "setting of other components as their data-source. These UI-components " - + "include TextField, DateField, Select, Table, Button, " - + "Label and Tree."; - - public FeatureProperties() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final Panel panel = new Panel(); - panel.setCaption("Data Model"); - l.addComponent(panel); - - final Label label = new Label(); - panel.addComponent(label); - - label.setContentMode(Label.CONTENT_XHTML); - label.setValue(INTRO_TEXT); - - // Properties - propertyPanel = new PropertyPanel(panel); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "width", "height" }); - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("light") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("light"); - themes.addItem("strong") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("strong"); - propertyPanel.addProperties("Panel Properties", ap); - - setJavadocURL("data/Property.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return null; - } - - @Override - protected String getDescriptionXHTML() { - return null; - } - - @Override - protected String getImage() { - return null; - } - - @Override - protected String getTitle() { - return null; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureSelect.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureSelect.java deleted file mode 100644 index 2ea564476b..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureSelect.java +++ /dev/null @@ -1,91 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Component; -import com.vaadin.ui.Select; -import com.vaadin.ui.VerticalLayout; - -public class FeatureSelect extends Feature { - - private static final String[] firstnames = new String[] { "John", "Mary", - "Joe", "Sarah", "Jeff", "Jane", "Peter", "Marc", "Robert", "Paula", - "Lenny", "Kenny", "Nathan", "Nicole", "Laura", "Jos", "Josie", - "Linus" }; - - private static final String[] lastnames = new String[] { "Torvalds", - "Smith", "Adams", "Black", "Wilson", "Richards", "Thompson", - "McGoff", "Halas", "Jones", "Beck", "Sheridan", "Picard", "Hill", - "Fielding", "Einstein" }; - - public FeatureSelect() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final Select s = new Select("Select employee"); - for (int i = 0; i < 50; i++) { - s.addItem(firstnames[(int) (Math.random() * (firstnames.length - 1))] - + " " - + lastnames[(int) (Math.random() * (lastnames.length - 1))]); - } - l.addComponent(s); - - // Properties - propertyPanel = new PropertyPanel(s); - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("optiongroup") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("optiongroup"); - themes.addItem("twincol") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("twincol"); - - setJavadocURL("ui/Select.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return "Select s = new Select(\"Select Car\");\n" - + "s.addItem(\"Audi\");\n" + "s.addItem(\"BMW\");\n" - + "s.addItem(\"Chrysler\");\n" + "s.addItem(\"Volvo\");\n"; - - } - - /** - * @see com.vaadin.tests.featurebrowser.Feature#getDescriptionXHTML() - */ - @Override - protected String getDescriptionXHTML() { - return "The select component combines two different modes of item selection. " - + "Firstly it presents the single selection mode, which is usually represented as " - + "either a drop-down menu or a radio-group of switches, secondly it " - + "allows for multiple item selection, this is usually represented as either a " - + "listbox of selectable items or as a group of checkboxes." - + "

" - + "Data source can be associated both with selected item and the list of selections. " - + "This way you can easily present a selection based on items specified elsewhere in application. " - + "

" - + "On the demo tab you can try out how the different properties affect the" - + " presentation of the component."; - } - - @Override - protected String getImage() { - return "icon_demo.png"; - } - - @Override - protected String getTitle() { - return "Select"; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureTabSheet.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureTabSheet.java deleted file mode 100644 index 46d8e0f974..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureTabSheet.java +++ /dev/null @@ -1,72 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Component; -import com.vaadin.ui.Label; -import com.vaadin.ui.TabSheet; -import com.vaadin.ui.VerticalLayout; - -public class FeatureTabSheet extends Feature { - - public FeatureTabSheet() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final TabSheet ts = new TabSheet(); - ts.addTab( - new Label( - "This is an example Label component that is added into Tab 1."), - "Tab 1 caption", null); - ts.addTab( - new Label( - "This is an example Label component that is added into Tab 2."), - "Tab 2 caption", null); - ts.addTab( - new Label( - "This is an example Label component that is added into Tab 3."), - "Tab 3 caption", null); - l.addComponent(ts); - - // Properties - propertyPanel = new PropertyPanel(ts); - - setJavadocURL("ui/TabSheet.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return "TabSheet ts = new TabSheet();\n" - + "ts.addTab(new Label(\"This is an example Label component that is added into Tab 1.\"),\"Tab 1 caption\",null);\n" - + "ts.addTab(new Label(\"This is an example Label component that is added into Tab 2.\"),\"Tab 2 caption\",null);\n" - + "ts.addTab(new Label(\"This is an example Label component that is added into Tab 3.\"),\"Tab 3 caption\",null);"; - } - - @Override - protected String getDescriptionXHTML() { - return "A multicomponent container with tabs for switching between them.
" - + "In the normal case, one would place a layout component on each tab.

" - + "On the demo tab you can try out how the different properties affect " - + "the presentation of the component."; - } - - @Override - protected String getImage() { - return "icon_demo.png"; - } - - @Override - protected String getTitle() { - return "TabSheet"; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureTable.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureTable.java deleted file mode 100644 index 928b7e3f88..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureTable.java +++ /dev/null @@ -1,196 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.event.Action; -import com.vaadin.ui.Button; -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.Select; -import com.vaadin.ui.Table; -import com.vaadin.ui.VerticalLayout; - -public class FeatureTable extends Feature implements Action.Handler { - - private static final String[] firstnames = new String[] { "John", "Mary", - "Joe", "Sarah", "Jeff", "Jane", "Peter", "Marc", "Josie", "Linus" }; - - private static final String[] lastnames = new String[] { "Torvalds", - "Smith", "Jones", "Beck", "Sheridan", "Picard", "Hill", "Fielding", - "Einstein" }; - - private static final String[] title = new String[] { "Project Manager", - "Marketing Manager", "Sales Manager", "Trainer", "IT Support", - "Account Manager", "Customer Support", "Testing Engineer", - "Software Designer", "Programmer", "Consultant" }; - - private static final String[] unit = new String[] { "Tokyo", "Mexico City", - "Seoul", "New York", "Sao Paulo", "Bombay", "Delhi", "Shanghai", - "Los Angeles", "London", "Bangalore", "Hong Kong", "Madrid", - "Milano", "Beijing", "Paris", "Moscow", "Helsinki" }; - - private Table t; - - private boolean actionsActive = false; - - private final Button actionHandlerSwitch = new Button("Activate actions", - this, "toggleActions"); - - public void toggleActions() { - if (actionsActive) { - t.removeActionHandler(this); - actionsActive = false; - actionHandlerSwitch.setCaption("Activate Actions"); - } else { - t.addActionHandler(this); - actionsActive = true; - actionHandlerSwitch.setCaption("Deactivate Actions"); - } - } - - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - // Sample table - t = new Table("Corporate Employees"); - t.setPageLength(10); - l.addComponent(t); - - // Add columns to table - t.addContainerProperty("Firstname", String.class, ""); - t.addContainerProperty("Lastname", String.class, ""); - t.addContainerProperty("Title", String.class, ""); - t.addContainerProperty("Unit", String.class, ""); - - // set alignments to demonstrate features - t.setColumnAlignment("Title", Table.ALIGN_CENTER); - t.setColumnAlignment("Unit", Table.ALIGN_RIGHT); - - // Add random rows to table - for (int j = 0; j < 300; j++) { - t.addItem( - new Object[] { - firstnames[(int) (Math.random() * (firstnames.length - 1))], - lastnames[(int) (Math.random() * (lastnames.length - 1))], - title[(int) (Math.random() * title.length)], - unit[(int) (Math.random() * unit.length)] }, - new Integer(j)); - } - - // Actions - l.addComponent(actionHandlerSwitch); - - // Properties - propertyPanel = new PropertyPanel(t); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "pageLength", "rowHeaderMode", "selectable", - "columnHeaderMode", "columnCollapsingAllowed", - "columnReorderingAllowed", "width", "height" }); - ap.replaceWithSelect("columnHeaderMode", new Object[] { - new Integer(Table.COLUMN_HEADER_MODE_EXPLICIT), - new Integer(Table.COLUMN_HEADER_MODE_EXPLICIT_DEFAULTS_ID), - new Integer(Table.COLUMN_HEADER_MODE_HIDDEN), - new Integer(Table.COLUMN_HEADER_MODE_ID) }, new Object[] { - "Explicit", "Explicit defaults ID", "Hidden", "ID" }); - ap.replaceWithSelect("rowHeaderMode", new Object[] { - new Integer(Table.ROW_HEADER_MODE_EXPLICIT), - new Integer(Table.ROW_HEADER_MODE_EXPLICIT_DEFAULTS_ID), - new Integer(Table.ROW_HEADER_MODE_HIDDEN), - new Integer(Table.ROW_HEADER_MODE_ICON_ONLY), - new Integer(Table.ROW_HEADER_MODE_ID), - new Integer(Table.ROW_HEADER_MODE_INDEX), - new Integer(Table.ROW_HEADER_MODE_ITEM), - new Integer(Table.ROW_HEADER_MODE_PROPERTY) }, new Object[] { - "Explicit", "Explicit defaults ID", "Hidden", "Icon only", - "ID", "Index", "Item", "Property" }); - - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("list") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("list"); - themes.addItem("paging") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("paging"); - - propertyPanel.addProperties("Table Properties", ap); - - // Set first name as item caption propertyId in cas somebody - // selecs it - t.setItemCaptionPropertyId("Firstname"); - - // this overrides previous - t.setRowHeaderMode(Table.ROW_HEADER_MODE_INDEX); - t.setColumnHeaderMode(Table.COLUMN_HEADER_MODE_EXPLICIT_DEFAULTS_ID); - - t.setColumnCollapsingAllowed(true); - t.setColumnReorderingAllowed(true); - t.setSelectable(true); - - setJavadocURL("ui/Table.html"); - - return l; - } - - protected String getExampleSrc() { - return "// Sample table\n" - + "t = new Table(\"Corporate Employees\");\n" - + "t.setPageLength(10);\n\n" - + "// Add columns to table\n" - + "t.addContainerProperty(\"Firstname\", String.class, \"\");\n" - + "t.addContainerProperty(\"Lastname\", String.class, \"\");\n" - + "t.addContainerProperty(\"Age\", String.class, \"\");\n" - + "t.addContainerProperty(\"Title\", String.class, \"\");\n" - + "t.addContainerProperty(\"Unit\", String.class, \"\");\n\n" - + "// Add random rows to table\n" - + "for (int j = 0; j < 50; j++) {\n" + " t.addItem(\n" - + " new Object[] {\n" - + " firstnames[(int) (Math.random() * 9)],\n" - + " lastnames[(int) (Math.random() * 9)],\n" - + " title[(int) (Math.random() * title.length)],\n" - + " unit[(int) (Math.random() * unit.length)] },\n" - + " new Integer(j));\n" + "}\n"; - } - - protected String getDescriptionXHTML() { - - return "The Table component is designed for displaying large volumes of tabular data, " - + "in multiple pages whenever needed." - + "

Selection of the displayed data is supported both in selecting exclusively one row " - + "or multiple rows at the same time. For each row, there may be a set of actions associated, " - + "depending on the theme these actions may be displayed either as a drop-down " - + "menu for each row or a set of command buttons." - + "

Table may be connected to any datasource implementing the Container interface." - + "This way data found in external datasources can be directly presented in the table component." - + "

" - + "Table implements a number of features and you can test most of them in the table demo tab."; - } - - protected String getImage() { - return "icon_demo.png"; - } - - protected String getTitle() { - return "Table"; - } - - private final Action ACTION1 = new Action("Action 1"); - - private final Action ACTION2 = new Action("Action 2"); - - private final Action ACTION3 = new Action("Action 3"); - - private final Action[] actions = new Action[] { ACTION1, ACTION2, ACTION3 }; - - public Action[] getActions(Object target, Object sender) { - return actions; - } - - public void handleAction(Action action, Object sender, Object target) { - t.setDescription("Last action clicked was '" + action.getCaption() - + "' on item '" + t.getItem(target).toString() + "'"); - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureTextField.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureTextField.java deleted file mode 100644 index eef09b23d0..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureTextField.java +++ /dev/null @@ -1,71 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.HorizontalLayout; -import com.vaadin.ui.TextField; - -public class FeatureTextField extends Feature { - - public FeatureTextField() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final HorizontalLayout l = new HorizontalLayout(); - // Test component - final TextField tf = new TextField("Caption"); - l.addComponent(tf); - - // Properties - propertyPanel = new PropertyPanel(tf); - final Form f = propertyPanel.createBeanPropertySet(new String[] { - "columns", "rows", "wordwrap", "writeThrough", "readThrough", - "nullRepresentation", "nullSettingAllowed", "secret" }); - propertyPanel.addProperties("Text field properties", f); - - setJavadocURL("ui/TextField.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return "TextField tf = new TextField(\"Caption\");\n" - + "tf.setValue(\"Contents\");"; - } - - /** - * @see com.vaadin.tests.featurebrowser.Feature#getDescriptionXHTML() - */ - @Override - protected String getDescriptionXHTML() { - return "TextField combines the logic of both the single line text-entry field and the multi-line " - + "text-area into one component. " - + "As with all Data-components of Vaadin, the TextField can also be bound to an " - + "underlying data source, both directly or in a buffered (asynchronous) " - + "mode. In buffered mode its background color will change to indicate " - + "that the value has changed but is not committed." - + "

Furthermore a validators may be bound to the component to " - + "check and validate the given input before it is actually committed." - + "

On the demo tab you can try out how the different properties affect the " - + "presentation of the component."; - } - - @Override - protected String getImage() { - return "icon_demo.png"; - } - - @Override - protected String getTitle() { - return "TextField"; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureTree.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureTree.java deleted file mode 100644 index 82a8b77b65..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureTree.java +++ /dev/null @@ -1,175 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import java.util.Iterator; - -import com.vaadin.event.Action; -import com.vaadin.ui.Button; -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.Select; -import com.vaadin.ui.Tree; -import com.vaadin.ui.VerticalLayout; - -public class FeatureTree extends Feature implements Action.Handler { - - private static final String[] firstnames = new String[] { "John", "Mary", - "Joe", "Sarah", "Jeff", "Jane", "Peter", "Marc", "Josie", "Linus" }; - - private static final String[] lastnames = new String[] { "Torvalds", - "Smith", "Jones", "Beck", "Sheridan", "Picard", "Hill", "Fielding", - "Einstein" }; - - private Tree t; - - private boolean actionsActive = false; - - private final Button actionHandlerSwitch = new Button("Activate actions", - this, "toggleActions"); - - public FeatureTree() { - super(); - } - - public void toggleActions() { - if (actionsActive) { - t.removeActionHandler(this); - actionsActive = false; - actionHandlerSwitch.setCaption("Activate Actions"); - } else { - t.addActionHandler(this); - actionsActive = true; - actionHandlerSwitch.setCaption("Deactivate Actions"); - } - } - - public void expandAll() { - for (final Iterator i = t.rootItemIds().iterator(); i.hasNext();) { - t.expandItemsRecursively(i.next()); - } - } - - public void collapseAll() { - for (final Iterator i = t.rootItemIds().iterator(); i.hasNext();) { - t.collapseItemsRecursively(i.next()); - } - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final String[] names = new String[100]; - for (int i = 0; i < names.length; i++) { - names[i] = firstnames[(int) (Math.random() * (firstnames.length - 1))] - + " " - + lastnames[(int) (Math.random() * (lastnames.length - 1))]; - } - - // Create tree - t = new Tree("Organization Structure"); - for (int i = 0; i < 100; i++) { - t.addItem(names[i]); - final String parent = names[(int) (Math.random() * (names.length - 1))]; - if (t.containsId(parent)) { - t.setParent(names[i], parent); - } - } - - // Forbid childless people to have children (makes them leaves) - for (int i = 0; i < 100; i++) { - if (!t.hasChildren(names[i])) { - t.setChildrenAllowed(names[i], false); - } - } - - l.addComponent(t); - - // Actions - l.addComponent(actionHandlerSwitch); - - // Expand and Collapse buttons - l.addComponent(new Button("Expand All", this, "expandAll")); - l.addComponent(new Button("Collapse All", this, "collapseAll")); - - // Properties - propertyPanel = new PropertyPanel(t); - final Form ap = propertyPanel - .createBeanPropertySet(new String[] { "selectable" }); - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("menu") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("menu"); - propertyPanel.addProperties("Tree Properties", ap); - - setJavadocURL("ui/Tree.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return "// Create tree\n" - + "t = new Tree(\"Organization Structure\");\n" - + "for (int i = 0; i < 100; i++) {\n" - + " t.addItem(names[i]);\n" - + " String parent = names[(int) (Math.random() * (names.length - 1))];\n" - + " if (t.containsId(parent)) \n" - + " t.setParent(names[i],parent);\n" - + "}\n\n" - + "// Forbid childless people to have children (makes them leaves)\n" - + "for (int i = 0; i < 100; i++)\n" - + " if (!t.hasChildren(names[i]))\n" - + " t.setChildrenAllowed(names[i], false);\n"; - } - - @Override - protected String getDescriptionXHTML() { - return "A tree is a natural way to represent datasets that have" - + " hierarchical relationships, such as filesystems, message " - + "threads or, as in this example, organization structure. Vaadin features a versatile " - + "and powerful Tree component that works much like the tree components " - + "of most modern operating systems." - + "

The most prominent use of the Tree component is to " - + "use it for displaying a hierachical menu, like the " - + "menu on the left side of the screen for instance " - + "or to display filesystems or other hierarchical datasets." - + "

The tree component uses Container " - + "datasources much like the Table component, " - + "with the addition that it also utilizes the hierarchy " - + "information maintained by the container." - + "

On the demo tab you can try out how the different properties " - + "affect the presentation of the tree component."; - } - - @Override - protected String getImage() { - return "icon_demo.png"; - } - - @Override - protected String getTitle() { - return "Tree"; - } - - private final Action ACTION1 = new Action("Action 1"); - - private final Action ACTION2 = new Action("Action 2"); - - private final Action ACTION3 = new Action("Action 3"); - - private final Action[] actions = new Action[] { ACTION1, ACTION2, ACTION3 }; - - public Action[] getActions(Object target, Object sender) { - return actions; - } - - public void handleAction(Action action, Object sender, Object target) { - t.setDescription("Last action clicked was '" + action.getCaption() - + "' on item '" + target + "'"); - } -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureUpload.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureUpload.java deleted file mode 100644 index fdd51e7efd..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureUpload.java +++ /dev/null @@ -1,148 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.InputStream; -import java.io.OutputStream; - -import com.vaadin.terminal.StreamResource; -import com.vaadin.ui.Component; -import com.vaadin.ui.Label; -import com.vaadin.ui.Link; -import com.vaadin.ui.Panel; -import com.vaadin.ui.Upload; -import com.vaadin.ui.Upload.FinishedEvent; -import com.vaadin.ui.VerticalLayout; - -public class FeatureUpload extends Feature implements Upload.FinishedListener { - Buffer buffer = new Buffer(); - - Panel status = new Panel("Uploaded file:"); - - public FeatureUpload() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final Upload up = new Upload("Upload", buffer); - up.setImmediate(true); - up.addListener(this); - - status.setVisible(false); - - l.addComponent(up); - l.addComponent(status); - - // Properties - propertyPanel = new PropertyPanel(up); - - setJavadocURL("ui/Upload.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return "Upload u = new Upload(\"Upload a file:\", uploadReceiver);\n\n" - + "public class uploadReceiver \n" - + "implements Upload.receiver, Upload.FinishedListener { \n" - + "\n" + " java.io.File file;\n" - + " java.io.FileOutputStream fos;\n" - + " public uploadReceiver() {\n" + " }"; - - } - - @Override - protected String getDescriptionXHTML() { - return "This demonstrates the use of the Upload component together with the Link component. " - + "This implementation does not actually store the file to disk, it only keeps it in a buffer. " - + "The example given on the Code Sample-tab on the other hand stores the file to disk and binds the link to that file."; - } - - @Override - protected String getImage() { - return "icon_demo.png"; - } - - @Override - protected String getTitle() { - return "Upload"; - } - - public void uploadFinished(FinishedEvent event) { - status.removeAllComponents(); - if (buffer.getStream() == null) { - status.addComponent(new Label( - "Upload finished, but output buffer is null!!")); - } else { - status.addComponent(new Label( - "Name: " + event.getFilename(), Label.CONTENT_XHTML)); - status.addComponent(new Label("Mimetype: " - + event.getMIMEType(), Label.CONTENT_XHTML)); - status.addComponent(new Label("Size: " + event.getLength() - + " bytes.", Label.CONTENT_XHTML)); - - status.addComponent(new Link("Download " + buffer.getFileName(), - new StreamResource(buffer, buffer.getFileName(), - getApplication()))); - - status.setVisible(true); - } - } - - public class Buffer implements StreamResource.StreamSource, Upload.Receiver { - ByteArrayOutputStream outputBuffer = null; - - String mimeType; - - String fileName; - - public Buffer() { - - } - - public InputStream getStream() { - if (outputBuffer == null) { - return null; - } - return new ByteArrayInputStream(outputBuffer.toByteArray()); - } - - /** - * @see com.vaadin.ui.Upload.Receiver#receiveUpload(String, String) - */ - public OutputStream receiveUpload(String filename, String MIMEType) { - fileName = filename; - mimeType = MIMEType; - outputBuffer = new ByteArrayOutputStream(); - return outputBuffer; - } - - /** - * Returns the fileName. - * - * @return String - */ - public String getFileName() { - return fileName; - } - - /** - * Returns the mimeType. - * - * @return String - */ - public String getMimeType() { - return mimeType; - } - - } -} \ No newline at end of file diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureUtil.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureUtil.java deleted file mode 100644 index 077ee4fbe5..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureUtil.java +++ /dev/null @@ -1,37 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import java.text.SimpleDateFormat; -import java.util.Date; - -public class FeatureUtil { - - private static boolean statistics = false; - - public static final SimpleDateFormat format = new SimpleDateFormat( - "yyyyMMdd HHmmss"); - - public static void debug(String userIdentity, String msg) { - if (statistics) { - System.out.println("[" + userIdentity + "] " + msg); - } - } - - public static String getTimestamp() { - if (statistics) { - try { - return format.format(new Date()); - } catch (final Exception e) { - // ignored, should never happen - } - } - return ""; - } - - public static void setStatistics(boolean statistics) { - FeatureUtil.statistics = statistics; - } -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureValidators.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureValidators.java deleted file mode 100644 index 6d28163c12..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureValidators.java +++ /dev/null @@ -1,89 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.Label; -import com.vaadin.ui.Panel; -import com.vaadin.ui.Select; -import com.vaadin.ui.VerticalLayout; - -public class FeatureValidators extends Feature { - - private static final String INTRO_TEXT = "" - + "Vaadin contains simple, yet powerful validation interface, " - + "that consists of two parts: Validator and Validatable. Validator is " - + "any class that can check validity of an Object. Validatable is " - + "a class with configurable validation. " - + "Validation errors are passed as special exceptions that implement " - + "ErrorMessage interface. This way the validation errors can be " - + "automatically added to components." - + "

Utilities for simple string and null validation are provided, as " - + "well as combinative validators. The validation interface can also " - + "be easily implemented by the applications for more complex " - + "validation needs."; - - public FeatureValidators() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final Panel panel = new Panel(); - panel.setCaption("Validators"); - l.addComponent(panel); - - final Label label = new Label(); - panel.addComponent(label); - - label.setContentMode(Label.CONTENT_XHTML); - label.setValue(INTRO_TEXT); - - // Properties - propertyPanel = new PropertyPanel(panel); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "width", "height" }); - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("light") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("light"); - themes.addItem("strong") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("strong"); - propertyPanel.addProperties("Panel Properties", ap); - - setJavadocURL("data/Validator.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return null; - } - - /** - * @see com.vaadin.tests.featurebrowser.Feature#getDescriptionXHTML() - */ - @Override - protected String getDescriptionXHTML() { - return null; - } - - @Override - protected String getImage() { - return null; - } - - @Override - protected String getTitle() { - return null; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeatureWindow.java b/tests/src/com/vaadin/tests/featurebrowser/FeatureWindow.java deleted file mode 100644 index 760ca5211a..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeatureWindow.java +++ /dev/null @@ -1,146 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Button; -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.Label; -import com.vaadin.ui.VerticalLayout; -import com.vaadin.ui.Window; -import com.vaadin.ui.Window.CloseEvent; - -public class FeatureWindow extends Feature implements Window.CloseListener { - - private final Button addButton = new Button("Add window", this, "addWin"); - - private final Button removeButton = new Button("Remove window", this, - "delWin"); - - private Window demoWindow; - - private Form windowProperties; - - public FeatureWindow() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout layoutRoot = new VerticalLayout(); - final VerticalLayout layoutUpper = new VerticalLayout(); - final VerticalLayout layoutLower = new VerticalLayout(); - - demoWindow = new Window("Feature Test Window"); - demoWindow.addListener(this); - demoWindow.setWidth("400px"); - demoWindow.setHeight("200px"); - demoWindow.setTheme("runo"); - - layoutUpper.addComponent(addButton); - layoutUpper.addComponent(removeButton); - - updateWinStatus(); - - // Properties - propertyPanel = new PropertyPanel(demoWindow); - windowProperties = propertyPanel.createBeanPropertySet(new String[] { - "width", "height", "name", "theme", "border", "scrollable", }); - windowProperties.replaceWithSelect("border", new Object[] { - new Integer(Window.BORDER_DEFAULT), - new Integer(Window.BORDER_NONE), - new Integer(Window.BORDER_MINIMAL) }, new Object[] { "Default", - "None", "Minimal" }); - // Disabled, not applicable for default theme - windowProperties.getField("border").setEnabled(false); - windowProperties.getField("scrollable").setEnabled(false); - - propertyPanel.addProperties("Window Properties", windowProperties); - windowProperties.getField("width").setDescription( - "Minimum width is 100"); - windowProperties.getField("height").setDescription( - "Minimum height is 100"); - - setJavadocURL("ui/Window.html"); - - layoutRoot.addComponent(layoutUpper); - layoutRoot.addComponent(layoutLower); - return layoutRoot; - } - - @Override - protected String getExampleSrc() { - return "Window win = new Window();\n" - + "getApplication().addWindow(win);\n"; - - } - - @Override - protected String getDescriptionXHTML() { - return "The window support in Vaadin allows for opening and closing windows, " - + "refreshing one window from another (for asynchronous terminals), " - + "resizing windows and scrolling window content. " - + "There are also a number of preset window border styles defined by " - + "this feature."; - } - - @Override - protected String getImage() { - return "icon_demo.png"; - } - - @Override - protected String getTitle() { - return "Window"; - } - - public void addWin() { - - propertyPanel.commit(); - - getApplication().getMainWindow().addWindow(demoWindow); - - demoWindow.removeAllComponents(); - - demoWindow - .addComponent(new Label( - "

This is a new window created by " - + "Add window" - + " button's event.

You may simply" - + " close this window or select " - + "Remove window from the Feature Browser window.", - Label.CONTENT_XHTML)); - // prevent user to change window name tag (after window is - // created) - windowProperties.getField("name").setEnabled(false); - windowProperties.getField("name").setReadOnly(true); - demoWindow.setVisible(true); - updateWinStatus(); - } - - public void delWin() { - getApplication().getMainWindow().removeWindow(demoWindow); - // allow user to change window name tag (before window is - // created) - windowProperties.getField("name").setEnabled(true); - windowProperties.getField("name").setReadOnly(false); - updateWinStatus(); - } - - private void updateWinStatus() { - if (demoWindow.getApplication() == null) { - addButton.setEnabled(true); - removeButton.setEnabled(false); - } else { - addButton.setEnabled(false); - removeButton.setEnabled(true); - } - } - - public void windowClose(CloseEvent e) { - delWin(); - } -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/FeaturesApplication.java b/tests/src/com/vaadin/tests/featurebrowser/FeaturesApplication.java deleted file mode 100644 index 8bbbad5d31..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/FeaturesApplication.java +++ /dev/null @@ -1,34 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Window; - -public class FeaturesApplication extends com.vaadin.Application { - - @Override - public void init() { - if (getProperty("statistics") != null) { - FeatureUtil.setStatistics(true); - } - setUser(new Long(System.currentTimeMillis()).toString()); - final Window main = new Window("Vaadin Features Tour"); - setMainWindow(main); - - main.setContent(new FeatureBrowser()); - } - - /** - * ErrorEvents are printed to default error stream and not in GUI. - */ - @Override - public void terminalError(com.vaadin.terminal.Terminal.ErrorEvent event) { - final Throwable e = event.getThrowable(); - FeatureUtil.debug(getUser().toString(), - "terminalError: " + e.toString()); - e.printStackTrace(); - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/IntroBasic.java b/tests/src/com/vaadin/tests/featurebrowser/IntroBasic.java deleted file mode 100644 index ae16c5c0cc..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/IntroBasic.java +++ /dev/null @@ -1,81 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.Label; -import com.vaadin.ui.Panel; -import com.vaadin.ui.Select; -import com.vaadin.ui.VerticalLayout; - -public class IntroBasic extends Feature { - - private static final String INTRO_TEXT = "" - + "Text Field, Date Field, Button, Form, Label and Link components are provided as samples" - + " for basic UI components." - + "

See the API documentation of respective components for more information."; - - public IntroBasic() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final Panel panel = new Panel(); - panel.setCaption("Basic UI components"); - l.addComponent(panel); - - final Label label = new Label(); - panel.addComponent(label); - - label.setContentMode(Label.CONTENT_XHTML); - label.setValue(INTRO_TEXT); - - // Properties - propertyPanel = new PropertyPanel(panel); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "width", "height" }); - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("light") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("light"); - themes.addItem("strong") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("strong"); - propertyPanel.addProperties("Panel Properties", ap); - - setJavadocURL("ui/package-summary.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return null; - } - - /** - * @see com.vaadin.tests.featurebrowser.Feature#getDescriptionXHTML() - */ - @Override - protected String getDescriptionXHTML() { - return null; - } - - @Override - protected String getImage() { - return null; - } - - @Override - protected String getTitle() { - return "Introduction of basic UI components"; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/IntroComponents.java b/tests/src/com/vaadin/tests/featurebrowser/IntroComponents.java deleted file mode 100644 index 46dad74ad7..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/IntroComponents.java +++ /dev/null @@ -1,85 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.terminal.ClassResource; -import com.vaadin.ui.Component; -import com.vaadin.ui.Embedded; -import com.vaadin.ui.Form; -import com.vaadin.ui.Label; -import com.vaadin.ui.Panel; -import com.vaadin.ui.Select; -import com.vaadin.ui.VerticalLayout; - -public class IntroComponents extends Feature { - - private static final String INTRO_TEXT = "" - + "This picture summarizes the relations between different user interface (UI) components." - + "

See API documentation below for more information."; - - public IntroComponents() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final Panel panel = new Panel(); - panel.setCaption("UI component diagram"); - l.addComponent(panel); - - final Label label = new Label(); - panel.addComponent(label); - - label.setContentMode(Label.CONTENT_XHTML); - label.setValue(INTRO_TEXT); - - panel.addComponent(new Embedded("", new ClassResource("components.png", - getApplication()))); - - // Properties - propertyPanel = new PropertyPanel(panel); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "width", "height" }); - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("light") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("light"); - themes.addItem("strong") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("strong"); - propertyPanel.addProperties("Panel Properties", ap); - - setJavadocURL("ui/package-summary.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return null; - } - - /** - * @see com.vaadin.tests.featurebrowser.Feature#getDescriptionXHTML() - */ - @Override - protected String getDescriptionXHTML() { - return null; - } - - @Override - protected String getImage() { - return null; - } - - @Override - protected String getTitle() { - return null; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/IntroDataHandling.java b/tests/src/com/vaadin/tests/featurebrowser/IntroDataHandling.java deleted file mode 100644 index 384404a75a..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/IntroDataHandling.java +++ /dev/null @@ -1,80 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.Label; -import com.vaadin.ui.Panel; -import com.vaadin.ui.Select; -import com.vaadin.ui.VerticalLayout; - -public class IntroDataHandling extends Feature { - - private static final String INTRO_TEXT = "" - + "Embedded Objects and Upload components are provided as samples" - + " for data handling section." - + "

See the API documentation of respective components for more information."; - - public IntroDataHandling() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final Panel panel = new Panel(); - panel.setCaption("Data Handling"); - l.addComponent(panel); - - final Label label = new Label(); - panel.addComponent(label); - - label.setContentMode(Label.CONTENT_XHTML); - label.setValue(INTRO_TEXT); - - // Properties - propertyPanel = new PropertyPanel(panel); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "width", "height" }); - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("light") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("light"); - themes.addItem("strong") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("strong"); - propertyPanel.addProperties("Panel Properties", ap); - - return l; - } - - @Override - protected String getExampleSrc() { - return null; - } - - /** - * @see com.vaadin.tests.featurebrowser.Feature#getDescriptionXHTML() - */ - @Override - protected String getDescriptionXHTML() { - return "Please select Embedded Objects or Upload" - + " from the menu for more information."; - } - - @Override - protected String getImage() { - return null; - } - - @Override - protected String getTitle() { - return null; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/IntroDataModel.java b/tests/src/com/vaadin/tests/featurebrowser/IntroDataModel.java deleted file mode 100644 index 4b9d208d7e..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/IntroDataModel.java +++ /dev/null @@ -1,82 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.Label; -import com.vaadin.ui.Panel; -import com.vaadin.ui.Select; -import com.vaadin.ui.VerticalLayout; - -public class IntroDataModel extends Feature { - - private static final String INTRO_TEXT = "" - + "This section introduces main concepts of data model in Vaadin." - + " It contains brief introduction to Properties, Items, Containers, Validators and" - + " Buffering classes." - + "

See the API documentation of respective area for more information."; - - public IntroDataModel() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final Panel panel = new Panel(); - panel.setCaption("Data Model"); - l.addComponent(panel); - - final Label label = new Label(); - panel.addComponent(label); - - label.setContentMode(Label.CONTENT_XHTML); - label.setValue(INTRO_TEXT); - - // Properties - propertyPanel = new PropertyPanel(panel); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "width", "height" }); - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("light") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("light"); - themes.addItem("strong") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("strong"); - propertyPanel.addProperties("Panel Properties", ap); - - setJavadocURL("data/package-summary.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return null; - } - - /** - * @see com.vaadin.tests.featurebrowser.Feature#getDescriptionXHTML() - */ - @Override - protected String getDescriptionXHTML() { - return null; - } - - @Override - protected String getImage() { - return null; - } - - @Override - protected String getTitle() { - return null; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/IntroItemContainers.java b/tests/src/com/vaadin/tests/featurebrowser/IntroItemContainers.java deleted file mode 100644 index 024f05fabd..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/IntroItemContainers.java +++ /dev/null @@ -1,81 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.Label; -import com.vaadin.ui.Panel; -import com.vaadin.ui.Select; -import com.vaadin.ui.VerticalLayout; - -public class IntroItemContainers extends Feature { - - private static final String INTRO_TEXT = "" - + "Select, Table and Tree components are provided as samples" - + " for item containers section." - + "

See the API documentation of respective components for more information."; - - public IntroItemContainers() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final Panel panel = new Panel(); - panel.setCaption("Item Containers"); - l.addComponent(panel); - - final Label label = new Label(); - panel.addComponent(label); - - label.setContentMode(Label.CONTENT_XHTML); - label.setValue(INTRO_TEXT); - - // Properties - propertyPanel = new PropertyPanel(panel); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "width", "height" }); - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("light") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("light"); - themes.addItem("strong") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("strong"); - propertyPanel.addProperties("Panel Properties", ap); - - setJavadocURL("data/Container.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return null; - } - - /** - * @see com.vaadin.tests.featurebrowser.Feature#getDescriptionXHTML() - */ - @Override - protected String getDescriptionXHTML() { - return null; - } - - @Override - protected String getImage() { - return null; - } - - @Override - protected String getTitle() { - return null; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/IntroLayouts.java b/tests/src/com/vaadin/tests/featurebrowser/IntroLayouts.java deleted file mode 100644 index 724d2c2ee2..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/IntroLayouts.java +++ /dev/null @@ -1,83 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.Label; -import com.vaadin.ui.Panel; -import com.vaadin.ui.Select; -import com.vaadin.ui.VerticalLayout; - -public class IntroLayouts extends Feature { - - private static final String INTRO_TEXT = "" - + "Layouts are required to place components to specific place in the UI." - + " You can use plain Java to accomplish sophisticated component layouting." - + " Other option is to use Custom Layout and let the web page designers" - + " to take responsibility of component layouting using their own set of tools." - + "

See API documentation below for more information."; - - public IntroLayouts() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final Panel panel = new Panel(); - panel.setCaption("Layouts"); - l.addComponent(panel); - - final Label label = new Label(); - panel.addComponent(label); - - label.setContentMode(Label.CONTENT_XHTML); - label.setValue(INTRO_TEXT); - - // Properties - propertyPanel = new PropertyPanel(panel); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "width", "height" }); - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("light") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("light"); - themes.addItem("strong") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("strong"); - propertyPanel.addProperties("Panel Properties", ap); - - setJavadocURL("ui/Layout.html"); - - return l; - } - - @Override - protected String getExampleSrc() { - return null; - } - - /** - * @see com.vaadin.tests.featurebrowser.Feature#getDescriptionXHTML() - */ - @Override - protected String getDescriptionXHTML() { - return null; - } - - @Override - protected String getImage() { - return null; - } - - @Override - protected String getTitle() { - return null; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/IntroTerminal.java b/tests/src/com/vaadin/tests/featurebrowser/IntroTerminal.java deleted file mode 100644 index 177f8bcb53..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/IntroTerminal.java +++ /dev/null @@ -1,55 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import com.vaadin.ui.Component; -import com.vaadin.ui.Label; -import com.vaadin.ui.VerticalLayout; - -public class IntroTerminal extends Feature { - - public IntroTerminal() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - final Label lab = new Label(); - lab.setStyleName("featurebrowser-none"); - l.addComponent(lab); - - // Properties - propertyPanel = null; - - return l; - } - - @Override - protected String getExampleSrc() { - return null; - } - - /** - * @see com.vaadin.tests.featurebrowser.Feature#getDescriptionXHTML() - */ - @Override - protected String getDescriptionXHTML() { - return ""; - } - - @Override - protected String getImage() { - return null; - } - - @Override - protected String getTitle() { - return "Introduction for terminals (TODO)"; - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/IntroWelcome.java b/tests/src/com/vaadin/tests/featurebrowser/IntroWelcome.java deleted file mode 100644 index b0dbc22232..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/IntroWelcome.java +++ /dev/null @@ -1,176 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import java.net.URL; -import java.util.Date; -import java.util.Iterator; -import java.util.Map; - -import com.vaadin.terminal.DownloadStream; -import com.vaadin.terminal.ParameterHandler; -import com.vaadin.terminal.URIHandler; -import com.vaadin.terminal.gwt.server.ApplicationServlet; -import com.vaadin.ui.Component; -import com.vaadin.ui.Form; -import com.vaadin.ui.Label; -import com.vaadin.ui.Panel; -import com.vaadin.ui.Select; -import com.vaadin.ui.VerticalLayout; - -public class IntroWelcome extends Feature implements URIHandler, - ParameterHandler { - - Panel panel = new Panel(); - - private static final String WELCOME_TEXT_UPPER = "" - + "This application lets you view and play with some features of " - + "Vaadin. Use menu on the left to select component." - + "

Note the Properties selection on the top " - + "right corner. Click it open to access component properties and" - + " feel free to edit properties at any time." - + "

The area that you are now reading is the component" - + " demo area. Lower area from here contains component description, API" - + " documentation and optional code sample. Note that not all selections" - + " contain demo, only description and API documentation is shown." - + "

You may also change application's theme from below the menu." - + " This example application is designed to work best with" - + " Demo theme, other themes are for demonstration purposes only." - + "

Vaadin enables you to construct complex Web" - + " applications using plain Java, no knowledge of other Web technologies" - + " such as XML, HTML, DOM, JavaScript or browser differences is required." - + "

For more information, point your browser to" - + " www.vaadin.com."; - - private static final String WELCOME_TEXT_LOWER = "" - + "This area contains the selected component's description, list of properties, javadoc" - + " and optional code sample. " - + "Start your tour now by selecting features from the list" - + " on the left and remember to experiment with the Properties panel" - + " located at the top right corner area."; - - // TODO Add browser agent string - private final String description = WELCOME_TEXT_LOWER - + "

Vaadin version: " + ApplicationServlet.VERSION; - - public IntroWelcome() { - super(); - } - - @Override - protected Component getDemoComponent() { - - final VerticalLayout l = new VerticalLayout(); - - panel.setCaption("Welcome to the Vaadin feature tour!"); - l.addComponent(panel); - - final Label label = new Label(); - panel.addComponent(label); - - label.setContentMode(Label.CONTENT_XHTML); - label.setValue(WELCOME_TEXT_UPPER); - - propertyPanel = new PropertyPanel(panel); - final Form ap = propertyPanel.createBeanPropertySet(new String[] { - "width", "height" }); - final Select themes = (Select) propertyPanel.getField("style"); - themes.addItem("light") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("light"); - themes.addItem("strong") - .getItemProperty(themes.getItemCaptionPropertyId()) - .setValue("strong"); - propertyPanel.addProperties("Panel Properties", ap); - - setJavadocURL("package-summary.html"); - - setPropsReminder(false); - - return l; - } - - @Override - protected String getExampleSrc() { - return "" + "package com.vaadin.demo;\n" - + "import com.vaadin.ui.*;\n\n" - + "public class HelloWorld extends com.vaadin.Application {\n" - + " public void init() {\n" - + " Window main = new Window(\"Hello window\");\n" - + " setMainWindow(main);\n" - + " main.addComponent(new Label(\"Hello World!\"));\n" - + " }\n" + "}\n"; - } - - // not ready yet to give description, see paint instead - @Override - protected String getDescriptionXHTML() { - return description; - } - - @Override - protected String getImage() { - return "icon_intro.png"; - } - - @Override - protected String getTitle() { - return "Welcome"; - } - - /** - * Add URI and parametes handlers to window. - * - * @see com.vaadin.ui.Component#attach() - */ - @Override - public void attach() { - super.attach(); - getWindow().addURIHandler(this); - getWindow().addParameterHandler(this); - } - - /** - * Remove all handlers from window - * - * @see com.vaadin.ui.Component#detach() - */ - @Override - public void detach() { - super.detach(); - getWindow().removeURIHandler(this); - getWindow().removeParameterHandler(this); - } - - /** - * Update URI - * - * @see com.vaadin.terminal.URIHandler#handleURI(URL, String) - */ - public DownloadStream handleURI(URL context, String relativeUri) { - return null; - } - - /** - * Show system status if systemStatus is given on URL - * - * @see com.vaadin.terminal.ParameterHandler#handleParameters(Map) - */ - public void handleParameters(Map parameters) { - for (final Iterator i = parameters.keySet().iterator(); i - .hasNext();) { - final String name = i.next(); - if (name.equals("systemStatus")) { - String status = ""; - status += "timestamp=" + new Date() + " "; - status += "free=" + Runtime.getRuntime().freeMemory() + ", "; - status += "total=" + Runtime.getRuntime().totalMemory() + ", "; - status += "max=" + Runtime.getRuntime().maxMemory() + "\n"; - System.out.println(status); - } - } - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/PropertyPanel.java b/tests/src/com/vaadin/tests/featurebrowser/PropertyPanel.java deleted file mode 100644 index 32cef16e22..0000000000 --- a/tests/src/com/vaadin/tests/featurebrowser/PropertyPanel.java +++ /dev/null @@ -1,501 +0,0 @@ -/* -@ITMillApache2LicenseForJavaFiles@ - */ - -package com.vaadin.tests.featurebrowser; - -import java.beans.BeanInfo; -import java.beans.IntrospectionException; -import java.beans.Introspector; -import java.beans.PropertyDescriptor; -import java.util.Date; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedList; - -import com.vaadin.data.Property; -import com.vaadin.data.util.BeanItem; -import com.vaadin.terminal.ErrorMessage; -import com.vaadin.terminal.SystemError; -import com.vaadin.terminal.ThemeResource; -import com.vaadin.terminal.UserError; -import com.vaadin.ui.AbstractComponentContainer; -import com.vaadin.ui.AbstractField; -import com.vaadin.ui.Button; -import com.vaadin.ui.Component; -import com.vaadin.ui.DateField; -import com.vaadin.ui.Field; -import com.vaadin.ui.Form; -import com.vaadin.ui.HorizontalLayout; -import com.vaadin.ui.Layout; -import com.vaadin.ui.OptionGroup; -import com.vaadin.ui.Panel; -import com.vaadin.ui.Select; -import com.vaadin.ui.Table; -import com.vaadin.ui.TextField; -import com.vaadin.ui.Tree; -import com.vaadin.ui.VerticalLayout; -import com.vaadin.ui.Window; -import com.vaadin.ui.themes.Reindeer; - -public class PropertyPanel extends Panel implements Button.ClickListener, - Property.ValueChangeListener { - - private Select addComponent; - - private final VerticalLayout formsLayout = new VerticalLayout(); - - private final LinkedList
forms = new LinkedList(); - - private final Button setButton = new Button("Set", this); - - private final Button discardButton = new Button("Discard changes", this); - - private final Table allProperties = new Table(); - - private final Object objectToConfigure; - - private final BeanItem config; - - protected static final int COLUMNS = 3; - - /** Contruct new property panel for configuring given object. */ - public PropertyPanel(Object objectToConfigure) { - super(); - ((Layout) getContent()).setMargin(false); - - // Layout - setCaption("Properties"); - addComponent(formsLayout); - - setSizeFull(); - - // Target object - this.objectToConfigure = objectToConfigure; - config = new BeanItem(objectToConfigure); - - // Control buttons - final HorizontalLayout buttons = new HorizontalLayout(); - buttons.setMargin(false, true, true, true); - buttons.addComponent(setButton); - buttons.addComponent(discardButton); - addComponent(buttons); - - // Add default properties - addBasicComponentProperties(); - if (objectToConfigure instanceof Select) { - addSelectProperties(); - } - if (objectToConfigure instanceof AbstractField - && !(objectToConfigure instanceof Table || objectToConfigure instanceof Tree)) { - addFieldProperties(); - } - if ((objectToConfigure instanceof AbstractComponentContainer)) { - addComponentContainerProperties(); - } - - // The list of all properties - allProperties.addContainerProperty("Name", String.class, ""); - allProperties.addContainerProperty("Type", String.class, ""); - allProperties.addContainerProperty("R/W", String.class, ""); - allProperties.addContainerProperty("Demo", String.class, ""); - allProperties.setColumnAlignments(new String[] { Table.ALIGN_LEFT, - Table.ALIGN_LEFT, Table.ALIGN_CENTER, Table.ALIGN_CENTER }); - allProperties.setColumnHeaderMode(Table.COLUMN_HEADER_MODE_ID); - allProperties.setPageLength(0); - allProperties.setSizeFull(); - updatePropertyList(); - - } - - /** Add a formful of properties to property panel */ - public void addProperties(String propertySetCaption, Form properties) { - - // Create new panel containing the form - final Panel p = new Panel(); - p.setCaption(propertySetCaption); - p.setStyleName(Reindeer.PANEL_LIGHT); - p.addComponent(properties); - formsLayout.addComponent(p); - - // Setup buffering - properties.setWriteThrough(false); - // TODO change this to false, and test it is suitable for FeatureBrowser - // demo - properties.setReadThrough(true); - - // Maintain property lists - forms.add(properties); - updatePropertyList(); - } - - /** Recreate property list contents */ - public void updatePropertyList() { - - allProperties.removeAllItems(); - - // Collect demoed properties - final HashSet listed = new HashSet(); - for (final Iterator i = forms.iterator(); i.hasNext();) { - listed.addAll(i.next().getItemPropertyIds()); - } - - // Resolve all properties - BeanInfo info; - try { - info = Introspector.getBeanInfo(objectToConfigure.getClass()); - } catch (final IntrospectionException e) { - throw new RuntimeException(e.toString()); - } - final PropertyDescriptor[] pd = info.getPropertyDescriptors(); - - // Fill the table - for (int i = 0; i < pd.length; i++) { - allProperties.addItem( - new Object[] { pd[i].getName(), - pd[i].getPropertyType().getName(), - (pd[i].getWriteMethod() == null ? "R" : "R/W"), - (listed.contains(pd[i].getName()) ? "x" : "") }, - pd[i]); - } - } - - /** Add basic properties implemented most often by abstract component */ - private void addBasicComponentProperties() { - - // Set of properties - final Form set = createBeanPropertySet(new String[] { "caption", - "icon", "componentError", "description", "enabled", "visible", - "style", "readOnly", "immediate" }); - - // Icon - set.replaceWithSelect("icon", new Object[] { null, - new ThemeResource("icon/files/file.gif") }, new Object[] { - "No icon", "Sample icon" }); - - // Component error - Throwable sampleException; - try { - throw new NullPointerException("sample exception"); - } catch (final NullPointerException e) { - sampleException = e; - } - set.replaceWithSelect( - "componentError", - new Object[] { - null, - new UserError("Sample text error message."), - new UserError( - "

Error message formatting

Error messages can " - + "contain any UIDL formatting, like:

  • Bold" - + "
  • Italic

", - UserError.CONTENT_UIDL, - ErrorMessage.INFORMATION), - new SystemError( - "This is an example of exception error reposting", - sampleException) }, new Object[] { "No error", - "Sample text error", "Sample Formatted error", - "Sample System Error" }); - - // Style - final String currentStyle = ((Component) objectToConfigure) - .getStyleName(); - if (currentStyle == null) { - set.replaceWithSelect("style", new Object[] { null }, - new Object[] { "Default" }).setNewItemsAllowed(true); - } else { - set.replaceWithSelect("style", new Object[] { null, currentStyle }, - new Object[] { "Default", currentStyle }) - .setNewItemsAllowed(true); - } - - // Set up descriptions - set.getField("caption") - .setDescription( - "Component caption is the title of the component. Usage of the caption is optional and the " - + "exact behavior of the propery is defined by the component. Setting caption null " - + "or empty disables the caption."); - set.getField("enabled") - .setDescription( - "Enabled property controls the usage of the component. If the component is disabled (enabled=false)," - + " it can not receive any events from the terminal. In most cases it makes the usage" - + " of the component easier, if the component visually looks disbled (for example is grayed), " - + "when it can not be used."); - set.getField("icon") - .setDescription( - "Icon of the component selects the main icon of the component. The usage of the icon is identical " - + "to caption and in most components caption and icon are kept together. Icons can be " - + "loaded from any resources (see Terminal/Resources for more information). Some components " - + "contain more than just the captions icon. Those icons are controlled through their " - + "own properties."); - set.getField("visible") - .setDescription( - "Visibility property says if the component is renreded or not. Invisible components are implicitly " - + "disabled, as there is no visible user interface to send event."); - set.getField("description") - .setDescription( - "Description is designed to allow easy addition of short tooltips, like this. Like the caption," - + " setting description null or empty disables the description."); - set.getField("readOnly") - .setDescription( - "Those components that have internal state that can be written are settable to readOnly-mode," - + " where the object can only be read, not written."); - set.getField("componentError") - .setDescription( - "Vaadin supports extensive error reporting. One part of the error reporting are component" - + " errors that can be controlled by the programmer. This example only contains couple of " - + "sample errors; to get the full picture, read browse ErrorMessage-interface implementors " - + "API documentation."); - set.getField("immediate") - .setDescription( - "Not all terminals can send the events immediately to server from all action. Web is the most " - + "typical environment where many events (like textfield changed) are not sent to server, " - + "before they are explicitly submitted. Setting immediate property true (by default this " - + "is false for most components), the programmer can assure that the application is" - + " notified as soon as possible about the value change in this component."); - set.getField("style") - .setDescription( - "Themes specify the overall looks of the user interface. In addition component can have a set of " - + "styles, that can be visually very different (like datefield calendar- and text-styles), " - + "but contain the same logical functionality. As a rule of thumb, theme specifies if a " - + "component is blue or yellow and style determines how the component is used."); - - // Add created fields to property panel - addProperties("Component Basics", set); - - // Customization for Window component - if (objectToConfigure instanceof Window) { - disableField(set.getField("enabled"), Boolean.TRUE); - disableField(set.getField("visible"), Boolean.TRUE); - disableField(set.getField("componentError")); - disableField(set.getField("icon")); - } - } - - /** Add properties for selecting */ - private void addSelectProperties() { - final Form set = createBeanPropertySet(new String[] { - "newItemsAllowed", "lazyLoading", "multiSelect" }); - addProperties("Select Properties", set); - - set.getField("multiSelect").setDescription( - "Specified if multiple items can be selected at once."); - set.getField("newItemsAllowed") - .setDescription( - "Select component (but not Tree or Table) can allow the user to directly " - + "add new items to set of options. The new items are constrained to be " - + "strings and thus feature only applies to simple lists."); - /* - * Button ll = (Button) set.getField("lazyLoading"); ll - * .setDescription("In Ajax rendering mode select supports lazy loading - * and filtering of options."); ll.addListener((ValueChangeListener) - * this); ll.setImmediate(true); if (((Boolean) - * ll.getValue()).booleanValue()) { - * set.getField("multiSelect").setVisible(false); - * set.getField("newItemsAllowed").setVisible(false); } - */ - if (objectToConfigure instanceof Tree - || objectToConfigure instanceof Table) { - set.removeItemProperty("newItemsAllowed"); - set.removeItemProperty("lazyLoading"); - } - } - - /** Field special properties */ - private void addFieldProperties() { - // Set of properties - final Form set = createBeanPropertySet(new String[] { "required" }); - - set.addField("focus", new Button("Focus", objectToConfigure, "focus")); - set.getField("focus").setDescription( - "Focus the cursor to this field. Not all " - + "components and/or terminals support this feature."); - - addProperties("Field Features", set); - - } - - /** - * Add and remove some miscellaneous example component to/from component - * container - */ - private void addComponentContainerProperties() { - final Form set = new Form(new VerticalLayout()); - - addComponent = new Select(); - addComponent.setImmediate(true); - addComponent.addItem("Add component to container"); - addComponent.setNullSelectionItemId("Add component to container"); - addComponent.addItem("Text field"); - addComponent.addItem("Option group"); - addComponent.addListener(this); - - set.addField("component adder", addComponent); - set.addField("remove all components", new Button( - "Remove all components", objectToConfigure, - "removeAllComponents")); - - addProperties("ComponentContainer Features", set); - } - - /** Value change listener for listening selections */ - public void valueChange(Property.ValueChangeEvent event) { - - // FIXME: navigation statistics - try { - FeatureUtil.debug(getApplication().getUser().toString(), - "valueChange " - + event.getProperty().getClass().getSimpleName() - + ", " + event.getProperty()); - } catch (final Exception e) { - // ignored, should never happen - } - - // Adding components to component container - if (event.getProperty() == addComponent) { - final String value = (String) addComponent.getValue(); - - if (value != null) { - // TextField component - if (value.equals("Text field")) { - ((AbstractComponentContainer) objectToConfigure) - .addComponent(new TextField("Test field")); - } - - // DateField time style - if (value.equals("Time")) { - final DateField d = new DateField("Time", new Date()); - d.setDescription("This is a DateField-component with text-style"); - d.setResolution(DateField.RESOLUTION_MIN); - d.setStyleName("text"); - ((AbstractComponentContainer) objectToConfigure) - .addComponent(d); - } - - // Date field calendar style - if (value.equals("Calendar")) { - final DateField c = new DateField("Calendar", new Date()); - c.setDescription("DateField-component with calendar-style and day-resolution"); - c.setStyleName("calendar"); - c.setResolution(DateField.RESOLUTION_DAY); - ((AbstractComponentContainer) objectToConfigure) - .addComponent(c); - } - - // Select option group style - if (value.equals("Option group")) { - final OptionGroup s = new OptionGroup("Options"); - s.setDescription("Select-component with optiongroup-style"); - s.addItem("Linux"); - s.addItem("Windows"); - s.addItem("Solaris"); - s.addItem("Symbian"); - - ((AbstractComponentContainer) objectToConfigure) - .addComponent(s); - } - - addComponent.setValue(null); - } - } else if (event.getProperty() == getField("lazyLoading")) { - final boolean newValue = ((Boolean) event.getProperty().getValue()) - .booleanValue(); - final Field multiselect = getField("multiSelect"); - final Field newitems = getField("newItemsAllowed"); - if (newValue) { - newitems.setValue(Boolean.FALSE); - newitems.setVisible(false); - multiselect.setValue(Boolean.FALSE); - multiselect.setVisible(false); - } else { - newitems.setVisible(true); - multiselect.setVisible(true); - } - } - } - - /** Handle all button clicks for this panel */ - public void buttonClick(Button.ClickEvent event) { - // FIXME: navigation statistics - try { - FeatureUtil.debug(getApplication().getUser().toString(), - "buttonClick " - + event.getButton().getClass().getSimpleName() - + ", " + event.getButton().getCaption() + ", " - + event.getButton().getValue()); - } catch (final Exception e) { - // ignored, should never happen - } - // Commit all changed on all forms - if (event.getButton() == setButton) { - commit(); - } - - // Discard all changed on all forms - if (event.getButton() == discardButton) { - for (final Iterator i = forms.iterator(); i.hasNext();) { - i.next().discard(); - } - } - - } - - /** - * Helper function for creating forms from array of propety names. - */ - protected Form createBeanPropertySet(String names[]) { - - final Form set = new Form(new VerticalLayout()); - - for (int i = 0; i < names.length; i++) { - final Property p = config.getItemProperty(names[i]); - if (p != null) { - set.addItemProperty(names[i], p); - final Field f = set.getField(names[i]); - if (f instanceof TextField) { - if (Integer.class.equals(p.getType())) { - ((TextField) f).setColumns(4); - } else { - ((TextField) f).setNullSettingAllowed(true); - ((TextField) f).setColumns(17); - } - } - } - } - - return set; - } - - /** Find a field from all forms */ - public Field getField(Object propertyId) { - for (final Iterator i = forms.iterator(); i.hasNext();) { - final Form f = i.next(); - final Field af = f.getField(propertyId); - if (af != null) { - return af; - } - } - return null; - } - - public Table getAllProperties() { - return allProperties; - } - - protected void commit() { - for (final Iterator i = forms.iterator(); i.hasNext();) { - i.next().commit(); - } - } - - private void disableField(Field field) { - field.setEnabled(false); - field.setReadOnly(true); - } - - private void disableField(Field field, Object value) { - field.setValue(value); - disableField(field); - } - -} diff --git a/tests/src/com/vaadin/tests/featurebrowser/components.png b/tests/src/com/vaadin/tests/featurebrowser/components.png deleted file mode 100644 index e5681d4d37ec1fc58e25fd28fffa5eca1eb0efb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184749 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

b^L0B|job_W?ZVWawP@;5O5yFq%et-&^RqM?R@ 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≈iG)^`4PCjzUZn`A-{V6A6g)CQHuW7$Bz&*u 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 D@9y1( diff --git a/tests/src/com/vaadin/tests/featurebrowser/icon_demo.png b/tests/src/com/vaadin/tests/featurebrowser/icon_demo.png deleted file mode 100644 index 6a5c295d6a11784a40d0eb128dffd6294bce28b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2428 zcmdT``#TegAD*I{)aiJVDW{80xtB|IicUl_Ipvt#bKOiyZVRa-jB*LFVOp4}TsHSy zbJ=XOWs@;`sg<-}iam_kEuC=lAn`-nTY)Zz~*7IRF3v6hM~dwmYt| zL(P4=cNC}@{b0sv(lSL70={};n=Il{pKKJYNlU?{*865s_r1@iZVL2aR) zkY_$EdW7m#HN(;deipa!t0)tmZ^)M*buFx! zwGC-KbK2=O(G5ZB=FJr}@D$V#i8bSz_X(0UDT6z=y}kVm&8%k30FBW68Ofw*rH?OW zjf&ml$Pt(y6LV`Xiuuu>*v~$5js2UUiBzBDj;`VP@5AEEZ$t8z(U2Q+6k_jB6CoQY%n>{1*cS9N; zrP2bigMrx5*5293-0s*iEBYZF{{T z_lz%>k;mQ^_lFj8tX|TN8lrf@<>$rR%&)_t`P^aA8Z4DQw=Bg|CJM;YdLFgz@s#kK zuGd&Lb3~k4Hx`IuB$f{T8_#%!8%VDl@=Bmi&8@cgiH=`>zrL{DIre~h(=gW3_tVM?@9~Cw|MmB0xqawruKOF> zv(KYTtDDQKQl%?dXRf_-i6t+uZ!T?Y+a-2k+Xd=i!t}ygVi}JC0FCS%Oby)jE_kPn z|91f7pV(av0LYnw%uVgWIbH+N2XfKX=Ri!KRx+%{u zQta5*OtR@kS87qIOA^oTQ=<`y_NK%rLw7B|$Tipu^sfukd2Y-9vx4F;wPYYZV@Q5> z#7zjLc{sl-4F<)shB115^>;!}$`3R5X3u;hvFI9vMfJ;MXWQFLIuF0LTCFD8(GxX+`&axZC$3^)c^Y9Szpy&jqH~h00v-o5a#yZge!-z0OcD6iUC46F^aJTSwdvR#VSY!S_CZg0*#G zl(CmXVR~+okw7l!eWL%&xWal-t8Z=?J!&?QZ>^R`Cxge(hY}rW`wZ+vItDBHx}cic z!(jrrl54eZBt*8cHYb0{Zq{NxRimN;*2C5@|J3mT<^c<;sBStX$enCqnCBYQ;<%kz zJijvW)%2nRZEbiYzKubJUXc%iJoc(v(A9G6e*fzc2!x{6hos-Atm;}C_FK*Z&mSXM zv5{I1#eLdFaOE#71fO^)zRoIa-idOA5-r@29Ha}JR2Yhe)56Y|^|nX%=wH3&syqOF z0wJV?z=W3s-#A5K9Fp2MJwTfN#u%!a!JSm|+*6hh&{ zoiZ9L>&e`zU$QJ!%z`3PKCZhm?XHwpR*}UIhvSl$rQ*ncX*gCs$ed?YVBlPJyQWZ zl9$m$M*Ml!Q)VO}((dAe^AGW=sY+v;Iv-D0seDNJ8lfQ`UY6(_y0xc<1_Jf`oVht0 z8~f3TZeDdWxS~9X75__07AU5^UWamHKkncElw2bRbo={= z-F8!Z_`_+ETdY&War5ux%BrJ|5_)x0lXU5afFJ<+!{<&aTX=&iEbqw9E6t%O4j^~YNt$>hg QJKq2Rx^>r_aML6DKmNIY_5c6? diff --git a/tests/src/com/vaadin/tests/featurebrowser/icon_intro.png b/tests/src/com/vaadin/tests/featurebrowser/icon_intro.png deleted file mode 100644 index 032712985c2592d3636ba671602ddda4fa00132b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2465 zcmdT__ct4gAC0P3@jRt!w7#8At-N}z)oQhAX?Y0^(xKxK61)=Bs#U8s60?XI1VvFA zt7v0JBw{6z8X-mqm7t=;e!jkc#`m6c?>+a|dp@6Y(NL@Vze%Y|0RVvCEX+-94qWqp zloUVE{Far@13T;jvIGGDpQ(ltn1zF^;%oNA*Vfb7_ch!b2>>BH9g$}(P;eKd4HAwB zeASJ-0RV^tpb(hZeN-do$2uyP?OQaK+c5|8BholRzHobge}9zstDu?t5<3Wqq-mRF zzava#)N`D&Se|&ceROA5JtwwoNK7HX@L}l?R~VE_&u*Lu!!v`+rxPkiUtxR6BTHJa z%Hrl}*Q9Q{$c{$|1Cx9aJeEAOwDCHtuZ6MTl1RP!qPBZve0*pX%9pU6CiXp)L?wrNn;tyk^qTYEasY8|6GxA*=fPyABQ zi6eerwhAUA<0YdBEV@Uuxf4>(;R-~tHIo-1WiBbqlC~Lq z zPW?6)_KDNRa}MN7W)yiF4SdSuBwYcKS>j7gEMn&~>xu`q}4E zBxQpP`*##Iqx1mW!0P7C>gKLMxVf{t8(hG85lwQy4#Ja|##2cBgNJGNwXw22xcUEU z0AlrE2>^h^QwviNEP(Bcb$f1$JRLreNmb5BxX__|%Kfd93dDeXE~ZB{qv;4lO@{6u zCXd&MECNkQK)JGs5D6P=YmhSLe2x;#<2*+BpM-b~+XBKB&tkZpi}-JsZ|3LuOw4bD zUZ3BOxn831+@MXqVyab9*Y=+>lO39hUf-T%9|3pnF(ZZy!QOjIFaD+OsomfgMOFFp z!$Y%qlS0LT?Ys_arhfS8b?2sPr7A`HJ~j|scrlrMIDUNG*iin5HxSNnL;n7vs)^74 z>TH_OAS56(?@sY}_LJX)N;2TL_L|^_^{DDUaH3erO9sIm40ip4C#HC>?7J{mb~DAjY*Ynko~@-x z5Ty%ZGPOdDjG0E<62iy0JC87a>h$tmmyCRCUE_6Lm&cJx$G#^f#<+oe!VvZ_t$-N_&zLz+O+`VH)EJ;n9>W-3UY`5d!OrwSjnEV>vgsQ4>ts;TB2qa(q5)zUw#7{ix=u| z52DHVjrmcE`Wds2a-h5ECaTMo8?NU@#z)-AoLzkl7?sy{;fm5K1a znA%GQ0_r1@^-<+Nu+~Tm0-r>pQ=KkG%h=g9hjAEGHZ5!iANN*F4zIqIyUN37b#f61 zFRBhdIk%|V_Q%a-caK*ZTDLgO#z{Ly56*^5O4Y#K1Fgms7!JF~_6t_kBvpwea zCI_XTucQ_R8|Rs9c>5P0ty?-abz4G2Y)m_mCwWHA!6l<>2Au-6!*zi{=$X-^&kw|J zLSte|40AH%=VvZRoqiDr)S}H2H3+^oA#0sYxcy7_i1Pd=rI>4f1LXsAf^zbK($dD( zxr@z&tB}jrA*p7Co9-V#hy2XVS0}PxdfFa6+He8>t6C`garcV)bx1{Ol7GdVpk?by zxK7A`-oMuv37djH8sbdPYsFlW;5iZ(67}9)WMETdj1X}-Bp+#M@i--ABCL=ktMDP1 zGux^nS2!AmHt+PX^9pW1aT(F0$eq{EYMUV=j1KGVpny95S*^!Ty5aAv-9>n_WdI*0 zMWUr70YBZcba}c8d?btNH6P~lkG_O!O|^D!#v9$-3o(5tH^7zC`fr9T=+CaYxu0RF z9h6%zGg9qTl&=pTl*7vepqQfAi1WgCOQd|i<20E%?ZZ-M*MpscUOzo#`u<4(mxd`h zYH9i9N$O_@30LE~ZQv$NwRz7-YCxGTk|zWo7ME3mCW u?KdFTl=l5CAHm9(M^DJ@vb$Rk$pCcgd7Ay;K&^wx09cq=nO5C#i2N_K3wIO% diff --git a/tests/src/com/vaadin/tests/featurebrowser/itmill.gif b/tests/src/com/vaadin/tests/featurebrowser/itmill.gif deleted file mode 100644 index b1c3e053f00b38708d1ddefb257b60de473fece1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6110 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 B9Blvq diff --git a/tests/src/com/vaadin/tests/featurebrowser/m-bullet-blue.gif b/tests/src/com/vaadin/tests/featurebrowser/m-bullet-blue.gif deleted file mode 100644 index fa6b38b4c91fa17cdf59fdef2fc0ef46160bd2cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8417 zcmV<7ARgaGNk%w1VZQ;s0r&j?9~faE8Db$CVj>%3BOGKT9b_dQWhNhGCLm@fA!jHd zXDK3RDkEttBxx)qYAq&eEhlR(C~Pk&Y%nTqF)MB|D{eC^Z!|4$G%j#8FL5?7aW^q? zI5KiMGjlpLbUQS3J2iDYHg-KXc0M?FKRI_mI(R`lc|tsSLp^#!K6^wydqqEdMnHT= zL48OnTOoUQRg;P$3R8NLgP={7g zh*wdFSW<~tQ;Atridt2RTULu)SBza)j9yudUs{e}TaI8`k6~PpVqK79UXf&9k!4_# zW?_?OVv}cMlxSp?X=RmaWtMAZmTYI2ZD^QoX_#(mnQv>FaBP}!ZJTm#n{#fQbZ?z? zaGiB=o_2DccXOY3bf9^4pn7(pdv~IIc%poGqkVa!etM*Td!>MUrGb5>f_|rif2V|i zsDy#2g@LJtf~tpus)&TEiG{0*hOCQ+t&51QjESy|im#4~uaAqckc_aAjj@uBvXYOo zlaRBNk+hYPw3d^#mz1@bmA09cx0#l=nwPknn7Evoxt*H2o}0R#oV%c%yrG`Fp`N{> zpS`1?zNDeQrJ}#4qrj)6!KkIdsHVcHr^2eJ!>g#otf|DUs>QCW#jmW!udT&bqkHySdN2y3f74(7n6SzP!=Dz0$zG)4{*f z!obwS!PLaU)y2cs#l+Ue#n;Eh*T}}$$;a8s$l1%u+RVz^%*)%&%-qh++|SP4(9Yh` z&)(9|-_z0H)6(G7)8WEYn%;^FGz;_Kt$>*V9?<>c+=FDq2>G106@ayaG?CbIE?DFpI^Y8BS z@bC2S@b&TW_44xe^Yixf^!N4k`1bYq_xAbs_xkww`uX|$`uh9(`~3X;{r&y@{{H^| z|NqR)%m4rYA^8LW008~~EC2ui0KWmg0RRa80R0IZNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7^V2AVZ2AnNi)fVX#JVvh*m?AU<~9q!H6)Od2?L_zX$}$x^3Lv4~+? zN3y8Vqezn~UCOj6yJf2u%>mOShY1M*0BGIHwX4^!TLVlmp`%F{I*nL0YuB``+qZDz z%8e`U*{eryoVaKJwy)p6fVVz)0R>JZSkdOqUCg+#({WmDzHIDlCO8BbL-yCd*ilHW>&-=PP}-47HCFw>&?8m z^WDc9Nx4wGy7l53sz6fqyu0`BN|pWz@`2#G`SZjT1S!-Ey!-d?C8{gMr2_i<_=jKk za*AF2{{X&c%pW#nmEVB~x+Xvlf+Q2*gAkT>4=h|vkl=+Fx>ms#v_$CPhi}pHg##Iu zXd-42h=B`;EVdXDE@DJ*;*2x`Hh~$txTxcf67gb&g*65#Bv=-x0Su2wCOHr}gn%&Q zlTdm^0wU)qX(foVI59w!Ty_Zn0aDm<<(Tn#!^Z|*rs<^zfrLZmo6fCbgn??-$)x~F zyaMN*rN#5e2X+Rk<_MH1#^<4PjdRBXf;OtA1bmo-=%h_S<3$0EW~!zEV^Blsr$ymn zgr=n0sYEZJrrOafFO=%4o&Gd*sOqc~)iT4YxY~(>F0}UA&@MUTDy*G89O>(^1O@ZM zu*}*?gfYnadQ1_`R%_}q(Wc6c6xMcY=M~^&i)cJ}7~t)>Y9io=q2iM12?prKtL6rz zw0q?+x5}$;nm8b1FOT40vG2fYdO^;=Ee28^!3=k~03rx`Sd0n{SM22r*hc(cJZ;cv z@yAaJFb6#vzeh_4Ag9b_2)vfu9XeU4EHjs25alv+p-3?E&QMx#%FVl(lLXI1LkWdC zK$j+qeML7dWCpn;4H-RZIBoTiaoi&{W6q>-_18hVFwNF-F@h=BXwQhiBxJia&JbzG zO`{T3wyo4GI?JuM{)rZ}Y`0N>c)a)E2?_x5-y^lN1mTRACLM5UIVBWj}R#YC@;Nr2B_k^L5@tXeRTm?a{WMeY%hLsfP4?e_~;LZM)CA8 zk^cLzO<|Af?C1dh{jLRpTjb(UjQ{_bfq|s{Rt=N^@PL8Qo!yR+Hv~G+FBTx4)M|me z2U@T%4d8{;MiIRWdhjdN1DYm2NW!lKU=%KMg#b#(Laq=%Oc4Xd0a{2yttj9a2!jTr zf>!|_RDlitg1E#Y;&6o?*sg}InSeFy)r}0`E&w(FL^Al%k1AU6irR2Q5ITs&z<59$ z;zCCWZpQ#VpyP^YOk)+@fe8+DF)%Ce53=HsuhShs4(U*%9@A(KM*QxLV9^1|jzxsm zSz#P|Ok^72p@$U$5-dzOmcULIfJ7+rl4-QX4j<_iF!ZVou6sZ&FiFZQUgHFu{K_3> zMF`iO;2Ncj49;)X&x-#rZ?01&2PC8<(_i3bnaLZwkfDn6!~$^iTVLg}E+PNACBqz1DC zYza^ko?6znZZ()z2#_V%+E%x6m6M?OPc=H%xTDrJt8Yyu19tbGd%$3X$bd7gNuaoYh>-3$^!`XJ2$ADW;e@OPX6FKkPt0dNn6@SYN9*eSpGm? zSIgSgzVQL&cn&QYH`?0%6(4JTq!gS(irM=1xWMIPE107W3hvk(E_7>$L&CSeMDc)>`FD`ar7 zw+?&w!y6`{Fd*ZoKmw6VF(IR-Ng8vz%0K)}jF#xs%Yp#d6JfWS=Y1E2+s=eg4G5N=rql-C?+ zMiaRm4rQSPAlH;YaJbTzCNdCexQM3MW4}(jbEt{Th#GRBDI=uxss)XW`!WTUR_pJq zPkh7{!eA+}koB$w-MSj)C@ITIHK>P8WGf&M2}w~#u9wa19K)fDV>`+flwEB`>$!$u zIEpti%`;th+ru?Rq5*PSlxr7F)#oO%Al|5lqSWKhL_-0!;|*gryzv4>8AZ|b&2L6m z0g$X9i4XFLsv$)9H z?CD3o8YHUNnaWo_=FoCdRvsCZ%-~J)6Q^U#NQA;iyaDuv&AjJL_CqZPz;2E_R%J&= zdXCjGX--zQBa{PK)TIvNj|Yu;wpL9K~`jT~d_d2ezq94U8bXe17IcYEM{s||e19RPdKh#M=0_rHsH5oJsy)BwVF<@xh5%_GM`G2#er9r7BE_{Y@^^0hFbNv>8VEoK^3YcN z*MD2FToZv^`Z9psCJ#|i9WH==QPqGBs1;>E5h&*^6j*KCKzhY70lk1!9N2*X&;b*X z3=^1qyCw{9RviQI2{W~VEC>ME1`+cXFC)lo!5~}cK>)unQaZSUr4|t(buK|TY(tnI z6z~lZr4GWkgI+NN5z!8W7k@H1Yf*S0FE9`Ogbxshg4fG$tCYhj2Wdf-oF zfQEh1JPwfuPWXkZ7KaG30B7_~OJ;{(F$fTGhW^#^hG0m97y<|16b@)dh+H9Y4#8K= zqKJLSh!}DJ;xJ8KAc68p`b2?3z5HU3@0Wb^u_#|B*OT`u>VQ>!`#R(8*Io7ifDJ3k0@Q_bJ z1hQmzG$H_wFjK>DfR!@`46y^l@&q9H{v<3AOZZ!mYGIN_EMUV|$fkeGFHgt5d6TnU(@C7Fc7R0v@Y;7BTEKy!L2 zBoB}evXl?7m>-Z?TcWu)2#^rXAS|x1a;qsMR)9=(h#<4+TeYb-*MJb95R~yCa=j@e zqJT``08RKYoX2GkN3b_Hbr9kHgPF{!m{Gz3_ApHbHl3g;UiQ!fdJ_l;;cU2)l@8aO zLZS)Zv<_-!9n>ja=+J9u<4FhMeYnDw1qYu&G6JsoO}~(g#c`kOsHb8(7A*d;Q z$!`K0B&Xm{m|z|XN?)lEHy>~iNtr8nK%w5rC1(&(a$p@FP@X5225B<@2Qdx8q6YC+ zp*7M2_@Ggb(1owj19{YB=Fp&Dvm6D{j=3TQ=Vqfc(gA^}QMVAAnL!3QI%ay1Hh4G? zlOQZQ&}~XOBNQMFJ=G1oco`sI3WDZmXwwM>F`l?G0@c=~CsF~38CA<51eZ|(k}#!$ z)=FU0UJ539xvXd{jVAp^q_3~*SeP;#h| z1rO3-3!6|0s~`+4x@s+EH9TMt5lSi}nu(1<0dx9${t1n_`NM!MfA@fSF{)Bj6 zlbr%Vi`9|`P4=%BBBuhYQF{P3-ZKz-SS8tYpp{=Gr3t+xz};In5#(8u!=mh0R#cI%mTVSCA!u@ zx}}>)lXW!}KoB;mFI5npQN;_a8zizjyL$9@apM34VKFzLe?3(R2%09rE4*oR5B`}p zwvacGe(2GoBpf>_=ydQG_prBFZkgmMyz27TKk+3%~IuI)31HwR0 z?w|)kYA4UzzE-pgSbH@JKoHUiGDxrt$V3l_;JMw)zsLj)HJCOKKoHjmGDGkPOnFK2 z&w-3C_T3TE=JwOolQ+iJvYU>aRRv-fzutE@!0!2^=VER{OTscHQ5QU_9Ys_f= zvfu+e>J=g|2;v%5+YrQr;{*g@uh#U(cxDWU2pAV&2?aV+@sPHjQ<(zMk;??hW2O&I z?ULQcveP+~*JP>&jf04R#wF1uzO41q`^e z2?S9Jp9~GX9Aw2o0KO1WY5Y2_KoGYOOcbEZQkMH4yT^N#>l*+k74nzz*Lu1;JwwG>k<5 zjCA#UAagKH_rL(a6Tt-$&@HskJ=f3&;s6%eOC$z7oL3OhOhXt=a~h2xqtyOO{sugI zTo7?rLnXa(*}%gWlA66_g0Djc1`)9&jm->A(-*P<$Yg)7QwRo;OBe0aJ*N#8ognIr zN%fFCrC<=dkknkq)H9+DvUHEZQw#>d)g%>_C0M*FxgWv2+f>Lx~0Pi5K()1ewu& zT_T4}O8bDijk7)n0SFf~0q-DnWE~_hfK03EIf{S~F=s(1iFBhKBnsP0Ja#)cR}d8E zK;Y@xm2D!mEK837JYa+n&Wb;rpxaOa0)|^kx9vI+pb%b+K*&wmQT}qi)3mLx;{ys2 zz6c}-(hVgkun*t#2Difo3NeTP^vp87+b0qW>C_FmYdM*q5T1EJ5OB#3_u4}e+v((@ zt^+Lzp$-U?1uKW&Lc#>#O;2a%I`Xg(vxh&IAaW-?BrQO*2jz92GXe~ubN?d?7f0Yh z!U8{fQ0))`rXzF^NNZwQY@CB74xD6q<_!HXQHsvQ$(URGqzI8)sa)c`>C%jPUzB4Q5b{$;*58RifVj6SP?=e_vm ze--C?qq+~_KKP^GtJdavZs>`H=y4-r4si(oqpPz9=^3);kwxif6A2I@3;<-Tmd5EA z;^~_O>R*#F4q*?&JwBTdYN&o8s!m$0?lhtp5lZksFv)1Oo*=i*TKjN;Uqb~FAqoEz z0MsC8!HyuqUR&~j(?!Dx5}^$Mgrsfu><1F=7IB>b#H1bu@#rD(;sp=k{xK#_5x;%@Ks=zQ>&5Zs;qmK5@iP$v? zqyFzb_Bk z5tL9u60i#+r4IxfCAm*w*PAk);1TW+i5C7e0DIu&^wbQ=X8fu@Yoh-#4X}n80of%K z0ftceu|y5?*d@pBVWbW+ob3_m-$E6z2;mS*`%nyApxI%5{kv9YAmi#Dk$FhO0svv> zSH6A)4H{HOO3MTQ4IMs&7*XOxiWLE{NOw@{zl9mqJCGR;|WUW!>IP@NVnexmMoZ#hX{J)w65;{$*Na?_h{v=pN3hi|}H` zjrH~g99i&haUYaapToN2D2=kC!gl5!Qs{(UOYtNdRH+*OSPKF{2XiB^K;TO%>0OEpShSY<7V zSBacu*4k=?atd5ovxb0OZ`{FG+JIg1fNq9m?Tuq&3`SYfm|ZdtXjyBAp=mn|!rIBi zo7Z#$$!+{mz9@)LA^y| zQg1rbKwMu?hS)(9<7d@L)B*PeuTfxk&kO+P{nn@gfGFv1x+>!T>ou z7^GZeM}&7Fp$Th8Dgp#!g-$xe3-uC1B%M$|k+@-&qM*aP@DM~k4A2&Wm?e7TfQTb3 zA%2j!A0XIciCJPtik|ouBN}Rkq=JE5u9&58sAr3A=_0DWm?;sMV~ldDh6K)t#wZrY z7i(;k1-9`tADFobb)eA#yBL9jk{hy#Q<V7+UZw4)P8AT<37poCC>nAgXSi8?ef1lg8u07vLV zJCHr?xuD|`O!%YY81Mv5keb@xrprBYA%}HRjRke6B)HYRnQz-*;t320m;UM z-mK|`9)192C@CNaeYn-V1@0eYIARK4jgkhc010Ib+~GmmMkvg%f@VKx04_)aDZKG; zj?1YY%IE|fgm9DqS%3&~_yjYo*m0J#${e^@L>FKHZ|F2Y2484|F3{0(o>NR6%1DJG z(vSoc@Y^j4P=ONGu!vPG1l*H0ifP$hK%3|rNKye^fEJIZ+Lq$AORXjsgJX1|PLmfy;WT{JJt4U^R zNM>nBWob$SQMRUZj+S(`hD?r@Opdl(j*eWej$EFeLcX42zCH*Q=qnW%fKZ{na)F^z zp^ApYV@?!n5k(%6gxFLVMcc1%%ZHhMOpKTa^{xh zEhx`lR9n2PzI=Io#qx&A6)jb(dz#nxw{M!*wPi~Gws}+c%%8Py(VYD&79U={{P?=% z$2P1vxpl+otsBm6+jw@{rZc;@UD&hz;=z4aj~%*x_SD^rXYXIV{OH=1$M^5PczEyC zv#0M~JbVA*`TIAoKE8eZ>Ft}(@7{g>^7;GMFF$_#`1SM0@1H+^|M~?)e}4b|^M4dj z5CV!nSs1w({xj$>00AgZFmSwN_|N%AytS*7L3Npf;8Ws|OrntMr^ju6 z{H(f#G8z*OxXXLi^sU**?DD!_TS!jDqcDw6*q~RWw@`uc^nS?-*`5g#Qw5gVI;va{ zc(Js(k(HNiLE@L?Ct3K-*uqXecyNG8BDRF%M#9siZgH6`?;iq-j~;DI-6nA{=~3o3-#9UF?bB zmK7gL9o#*t;uX)iJ^aea;b5L&6nGLNyjKKtqZS*E`;cmu_*$Rc&S-NA8y|`MGE&z~ ziuvJ1n}4o3&`|7AKYcquT>SFz=xZkFD?89I1oQRfi3VjPPt_=tr-4z_!oq$`Ag<8yksjRDkRGbuope?0s>j|nj|*=kgyMUlb@;*?Zw7B4T3T*;a>h>>vv_Cw^(@=R7qfzo zQxzs@;Z|7g)ko{m8TezO+#(d~bZ=3fkkSxm;d*Q#>vfjZp|YymuaEz-{oIdvmn_P_ z(p2!UC-2k?Ks$C|UpFcA1lKCEF?F2LHn4MoHTpY`ut{G@zLB`i^~MMl34HlAYoYJ@ zFrd3;VUFDrpu5^d(v43|++dw#6NP6K4H#_Ao>#Db^@#r9QK0^Uw%H2XsnyrKs`2yZ zn|tqjFO*L0y>ef6`*q2+Z-!s2@#Hhxbd;H@p2dEl*zE#Jo`6z^{jWvmN`U+5bkUJq zt0Rqxh{Vn9CMH9(dI(a~8gs zIbU3#XOQS6zrlaZLWpNNSZoB?tZJeB-}NvsJVk%-uyNSSGh7@1@Hfp<;Gxw{^*zm=`kV8Za@+pF`KldqIX(011JiBF4cYjN`^f>RLdK(zflFgSCPRZQ zE@RGlnWB=3(JhjxVDGO3 zJ^zSQ;vA;omX*7w1YPENZ27bGLbTqOp=)`DC3(G~ug@6W*AgZjK&6K6+JJj49sQ)j zI-J>$DM=f3CxU9N9r|C~d1rZ0Ph+saZerWxUrtnX;^tDJd*~Dn00LO?{T{-@_fQH! z4g>goHN&0tqaT%)qe>IDJGSZl0(A+h9An;UU0>1%j^9vxX{6 zL`vPWv0RY*@w%c^x-Z`Mry%f_Xt4^Cj;H!a_3=D#KBfi<&dZ3%IHDQ2W+`hF+jE2LMGx}LherW2_x z3W?mrJjgt(nQ{Imn!QQVE9ui5&W<-nhQ?ozm})0*D}7vyj)TA9L*bAh;-@<=rBcA} z6;6V*=F0g}>7?+sub}G8r5dS}SMi`j@GOZ{E0rpQ9lnCEKJgFG%K3M7-<;!_tZu!B zRKkHY zR$x$NWNbXTp$f~AD&I0Dnj6NA2SI{Dpjk^$Lk|kx0$}lrT z=2L62%zWN8fXA@39$}g?{lo@vK3$Z}mYJ7F%JBLv(LtDkOf65}z~fu=6k#}-vA5;G zF)7G8=)^RjyR*H+8jeXp)>h~E1(+e{YQ{$d*GpN2`k25z@Jag>deSR^E#No!!6y&2 zCUyv+sr);C2?Qbru6w68v7H695FVfg;dOY#5zkfB&BE<2koJ33<(Pe+)LRWwvVz2x~OM?O&}0NgC}4s<|sy)>_01PcuCG^q(&z# zMD3BK`g6W0ng4Qq&>9;T5a?24nNr8FF8%Uhpu^0VH2NF!2o_<3Y8 z+c~U!)-$Kg9${W7JK9o28ApB~R5`1LKTP-1a?`tc+*D^c^+H>yS4C`8$#S(+VJ|ym zRl$TYT|Pw^^^P#WJP@r^{jdpFur0fxD-{a6jjfhux};ri?V04v%^n#0kgU8gK&q|a;4w25fi1+_|`A&IMhnDD>>3{@a=r?Qc)8x`_nQjhKWAjiL(~ifDO>;b_OoM9ZX@NXAV#V zZe-`i5*icW6jF$wxw*LlQ~*NChU98?e;*CZxRL(qmYJFPAKjGx>b7#_zq@gP4&+7# zI}Y9GjbDy|^FiMgjwbD|>^Vk7WbwVLfU95(xy%CaKMWM1PdqiRzHU60gjjeb#8M!` zAAoppj<5g+`7dCX*wq9ADs*t1zaMNIm~Pg{G%$48#)wP<%am=%5}a%w925;JkAteT lfC`)qfWiM*C48~Q!pDOEy~n8Ipsv#eyG