From 2c6500cb56de6abfa60a3823b1c88ff9dff25924 Mon Sep 17 00:00:00 2001 From: Jani Laakso Date: Wed, 7 Nov 2007 19:02:52 +0000 Subject: [PATCH] Added test application for most components and layouts. Modify test methods when inspecting how components work within various layouts. svn changeset:2743/svn branch:trunk --- .../tests/TestComponentsAndLayouts.java | 279 ++++++++++++++++++ src/com/itmill/toolkit/tests/itmill_spin.swf | Bin 0 -> 2991 bytes 2 files changed, 279 insertions(+) create mode 100644 src/com/itmill/toolkit/tests/TestComponentsAndLayouts.java create mode 100644 src/com/itmill/toolkit/tests/itmill_spin.swf diff --git a/src/com/itmill/toolkit/tests/TestComponentsAndLayouts.java b/src/com/itmill/toolkit/tests/TestComponentsAndLayouts.java new file mode 100644 index 0000000000..3f7156ca41 --- /dev/null +++ b/src/com/itmill/toolkit/tests/TestComponentsAndLayouts.java @@ -0,0 +1,279 @@ +package com.itmill.toolkit.tests; + +import java.io.File; +import java.sql.SQLException; + +import com.itmill.toolkit.Application; +import com.itmill.toolkit.data.Container; +import com.itmill.toolkit.data.util.FilesystemContainer; +import com.itmill.toolkit.data.util.QueryContainer; +import com.itmill.toolkit.demo.util.SampleDatabase; +import com.itmill.toolkit.demo.util.SampleDirectory; +import com.itmill.toolkit.event.Action; +import com.itmill.toolkit.terminal.ClassResource; +import com.itmill.toolkit.terminal.ErrorMessage; +import com.itmill.toolkit.terminal.ExternalResource; +import com.itmill.toolkit.terminal.UserError; + +import com.itmill.toolkit.ui.*; +import com.itmill.toolkit.ui.Component.Event; +import com.itmill.toolkit.ui.Component.Listener; + +public class TestComponentsAndLayouts extends Application implements Listener, + Action.Handler { + + OrderedLayout main = new OrderedLayout(); + + // event listener feedback (see console) + Label eventListenerFeedback = new Label( + "See console for event listener log."); + int eventCount = 0; + + // component counter + int count = 0; + + SampleDatabase sampleDatabase; + + // Example Actions for table + private Action ACTION1 = new Action("Upload"); + private Action ACTION2 = new Action("Download"); + private Action ACTION3 = new Action("Show history"); + private Action[] actions = new Action[] { ACTION1, ACTION2, ACTION3 }; + + public void init() { + sampleDatabase = new SampleDatabase(); + createNewView(); + } + + public void createNewView() { + Window main = new Window("Main window"); + setMainWindow(main); + + main + .addComponent(new Label( + "Each Layout and their contained components should " + + "have icon, caption, description, user error defined. " + + "Eeach layout should contain similar components. " + + "All components are in immmediate mode.")); + main.addComponent(eventListenerFeedback); + + main.addComponent(new Label("OrderedLayout")); + test(main); + populateLayout(main); + + Panel panel = new Panel("Panel"); + test(panel); + populateLayout(panel); + main.addComponent(panel); + + TabSheet tabsheet = new TabSheet(); + test(tabsheet); + OrderedLayout tab1 = new OrderedLayout(); + tab1.addComponent(new Label("try tab2")); + OrderedLayout tab2 = new OrderedLayout(); + test(tab2); + populateLayout(tab2); + tabsheet + .addTab(tab1, "TabSheet tab1", new ClassResource("m.gif", this)); + tabsheet + .addTab(tab2, "TabSheet tab2", new ClassResource("m.gif", this)); + main.addComponent(tabsheet); + + ExpandLayout expandLayout = new ExpandLayout(); + test(expandLayout); + populateLayout(expandLayout); + main.addComponent(expandLayout); + + GridLayout gridLayout = new GridLayout(); + test(gridLayout); + populateLayout(gridLayout); + main.addComponent(gridLayout); + + Window window = new Window("TEST: Window"); + test(window); + populateLayout(window); + getMainWindow().addWindow(window); + } + + void populateLayout(Layout layout) { + Button button = new Button("Button " + count++); + test(layout, button); + + DateField df = new DateField("DateField " + count++); + test(layout, df); + + CheckBox cb = new CheckBox("Checkbox " + count++); + test(layout, cb); + + ClassResource flashResource = new ClassResource("itmill_spin.swf", this); + Embedded emb = new Embedded("Embedded " + count++, flashResource); + test(layout, emb); + emb.setType(Embedded.TYPE_OBJECT); + emb.setMimeType("application/x-shockwave-flash"); + emb.setWidth(250); + emb.setHeight(100); + + Panel panel = new Panel("Panel " + count++); + test(layout, panel); + + Label label = new Label("Label " + count++); + test(layout, label); + + Link link = new Link("Link " + count++, new ExternalResource( + "www.itmill.com")); + test(layout, link); + + NativeSelect nativeSelect = new NativeSelect("NativeSelect " + count++); + test(layout, nativeSelect); + nativeSelect.setContainerDataSource(getContainer()); + + OptionGroup optionGroup = new OptionGroup("OptionGroup " + count++); + optionGroup.setContainerDataSource(getSmallContainer()); + test(layout, optionGroup); + + ProgressIndicator pi = new ProgressIndicator(50.0f); + test(layout, pi); + + RichTextArea rta = new RichTextArea(); + test(layout, rta); + + Select select = new Select("Select " + count++); + test(layout, select); + select.setContainerDataSource(getSmallContainer()); + + Slider slider = new Slider("Slider " + count++); + test(layout, slider); + + Table table = new Table("Table " + count++); + test(layout, table); + table.setPageLength(10); + table.setSelectable(true); + table.setRowHeaderMode(Table.ROW_HEADER_MODE_INDEX); + table.setColumnCollapsingAllowed(true); + table.setColumnReorderingAllowed(true); + table.setSelectable(true); + table.addActionHandler(this); + table.setContainerDataSource(getContainer()); + table.setVisibleColumns(new Object[] { "FIRSTNAME", "LASTNAME", + "TITLE", "UNIT" }); + table.setItemCaptionPropertyId("ID"); + + TabSheet tabsheet = new TabSheet(); + OrderedLayout tab1 = new OrderedLayout(); + tab1.addComponent(new Label("tab1 " + count++)); + OrderedLayout tab2 = new OrderedLayout(); + tab2.addComponent(new Label("tab2")); + tabsheet + .addTab(tab1, "TabSheet tab1", new ClassResource("m.gif", this)); + tabsheet + .addTab(tab2, "TabSheet tab2", new ClassResource("m.gif", this)); + + TextField tf = new TextField("Textfield " + count++); + test(layout, tf); + + Tree tree = new Tree("Tree " + count++); + test(layout, tree); + File sampleDir = SampleDirectory.getDirectory(this); + FilesystemContainer fsc = new FilesystemContainer(sampleDir, true); + tree.setContainerDataSource(fsc); + + TwinColSelect twinColSelect = new TwinColSelect("TwinColSelect " + + count++); + test(layout, twinColSelect); + twinColSelect.setContainerDataSource(getSmallContainer()); + + Upload upload = new Upload("Upload (non-functional)", null); + test(layout, upload); + + // Custom components + layout.addComponent(new Label("Below are few custom components", + Label.CONTENT_XHTML)); + TestForUpload tfu = new TestForUpload(); + layout.addComponent(tfu); + + } + + Container getContainer() { + // populate container with test SQL table rows + try { + return new QueryContainer("SELECT * FROM employee", sampleDatabase + .getConnection()); + } catch (SQLException e) { + e.printStackTrace(); + } + return null; + } + + Container getSmallContainer() { + // populate container with test SQL table rows + try { + return new QueryContainer("SELECT * FROM unit ", sampleDatabase + .getConnection()); + } catch (SQLException e) { + e.printStackTrace(); + } + return null; + } + + /** + * Stresses component by configuring it + * + * @param c + */ + void test(AbstractComponent c) { + ClassResource res = new ClassResource("m.gif", this); + ErrorMessage errorMsg = new UserError("User error " + c); + + if ((c.getCaption() == null) || (c.getCaption().length() <= 0)) + c.setCaption("Caption " + c); + c.setDescription("Description " + c); + c.setComponentError(errorMsg); + c.setIcon(res); + c.setImmediate(true); + // c.setEnabled(false); + // c.setVisible(false); + // c.setStyle("testStyle"); + // c.setStyleName("testStyleName"); + // c.setReadOnly(true); + + // try to add listener + try { + c.addListener(this); + } catch (Exception e) { + System.err.println("Could not add listener for component " + c + + ", count was " + count); + } + } + + /** + * Stresses component by configuring it in a given layout + * + * @param c + */ + void test(Layout layout, AbstractComponent c) { + test(c); + layout.addComponent(c); + layout.addComponent(new Label("
", Label.CONTENT_XHTML)); + } + + public void componentEvent(Event event) { + eventCount++; + String feedback = "eventCount=" + eventCount + ", class=" + + event.getClass() + ", source=" + event.getSource() + + ", toString()=" + event.toString(); + System.out.println("eventListenerFeedback: " + feedback); + eventListenerFeedback.setValue("Events: " + eventCount); + } + + // For sample actions + public Action[] getActions(Object target, Object sender) { + return actions; + } + + // For sample actions + public void handleAction(Action action, Object sender, Object target) { + System.out.println("ACTION: " + action.getCaption() + " on item " + + target); + } + +} diff --git a/src/com/itmill/toolkit/tests/itmill_spin.swf b/src/com/itmill/toolkit/tests/itmill_spin.swf new file mode 100644 index 0000000000000000000000000000000000000000..9e58ce29c6ec416af38432c91dbe0585833b47b9 GIT binary patch literal 2991 zcmV;g3sCe!S5pT%5dZ*qoV}QPJXGr%$KSaa#+X966lyAR+mRBgUB)IA63o3-#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