From 82fb813839420dd7b239f312afeb5f63b1087ce9 Mon Sep 17 00:00:00 2001 From: Marc Englund Date: Fri, 31 Oct 2008 14:53:03 +0000 Subject: [PATCH] Sampler updates, Notification samples added. svn changeset:5791/svn branch:trunk --- .../demo/sampler/SamplerApplication.java | 25 +++- .../ProminentPrimaryActionExample.java | 2 +- .../notifications/NotificationCustom.java | 42 ++++++ .../notifications/NotificationCustom.png | Bin 0 -> 5639 bytes .../NotificationCustomExample.java | 132 ++++++++++++++++++ .../notifications/NotificationError.java | 42 ++++++ .../notifications/NotificationError.png | Bin 0 -> 6497 bytes .../NotificationErrorExample.java | 40 ++++++ .../notifications/NotificationHumanized.java | 44 ++++++ .../notifications/NotificationHumanized.png | Bin 0 -> 4231 bytes .../NotificationHumanizedExample.java | 35 +++++ .../notifications/NotificationTray.java | 45 ++++++ .../notifications/NotificationTray.png | Bin 0 -> 5731 bytes .../NotificationTrayExample.java | 37 +++++ .../notifications/NotificationWarning.java | 44 ++++++ .../notifications/NotificationWarning.png | Bin 0 -> 5178 bytes .../NotificationWarningExample.java | 37 +++++ 17 files changed, 518 insertions(+), 7 deletions(-) create mode 100644 src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationCustom.java create mode 100644 src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationCustom.png create mode 100644 src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationCustomExample.java create mode 100644 src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationError.java create mode 100644 src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationError.png create mode 100644 src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationErrorExample.java create mode 100644 src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationHumanized.java create mode 100644 src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationHumanized.png create mode 100644 src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationHumanizedExample.java create mode 100644 src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationTray.java create mode 100644 src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationTray.png create mode 100644 src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationTrayExample.java create mode 100644 src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationWarning.java create mode 100644 src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationWarning.png create mode 100644 src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationWarningExample.java diff --git a/src/com/itmill/toolkit/demo/sampler/SamplerApplication.java b/src/com/itmill/toolkit/demo/sampler/SamplerApplication.java index 33825ad6dc..f8b0014ffa 100644 --- a/src/com/itmill/toolkit/demo/sampler/SamplerApplication.java +++ b/src/com/itmill/toolkit/demo/sampler/SamplerApplication.java @@ -23,6 +23,11 @@ import com.itmill.toolkit.demo.sampler.features.buttons.ButtonSwitch; import com.itmill.toolkit.demo.sampler.features.link.LinkCurrentWindow; import com.itmill.toolkit.demo.sampler.features.link.LinkNoDecorations; import com.itmill.toolkit.demo.sampler.features.link.LinkSizedWindow; +import com.itmill.toolkit.demo.sampler.features.notifications.NotificationCustom; +import com.itmill.toolkit.demo.sampler.features.notifications.NotificationError; +import com.itmill.toolkit.demo.sampler.features.notifications.NotificationHumanized; +import com.itmill.toolkit.demo.sampler.features.notifications.NotificationTray; +import com.itmill.toolkit.demo.sampler.features.notifications.NotificationWarning; import com.itmill.toolkit.terminal.ClassResource; import com.itmill.toolkit.terminal.DownloadStream; import com.itmill.toolkit.terminal.ExternalResource; @@ -71,6 +76,14 @@ public class SamplerApplication extends Application { }), + new FeatureSet("Notifications", new Feature[] { + new NotificationHumanized(), // humanized + new NotificationWarning(), // warning + new NotificationTray(), // tray + new NotificationError(), // error + new NotificationCustom(), // error + }), + }), new FeatureSet("Unsorted", new Feature[] { @@ -556,21 +569,21 @@ public class SamplerApplication extends Application { if (f instanceof FeatureSet) { newRow(); Label title = new Label(f.getName()); - title.setWidth("100%"); - title - .setStyleName((c.isRoot(f) ? "section" - : "subsection")); - if (c.isRoot(f)) { - // newRow(); + title.setWidth("100%"); + title.setStyleName("section"); addComponent(title, 0, getCursorY(), getColumns() - 1, getCursorY()); } else { + title.setStyleName("subsection"); addComponent(title); } setComponentAlignment(title, ALIGNMENT_LEFT, ALIGNMENT_VERTICAL_CENTER); } else { + if (getCursorX() == 0) { + space(); + } Button b = new Button(); b.setStyleName(Button.STYLE_LINK); b.addStyleName("screenshot"); diff --git a/src/com/itmill/toolkit/demo/sampler/features/blueprints/ProminentPrimaryActionExample.java b/src/com/itmill/toolkit/demo/sampler/features/blueprints/ProminentPrimaryActionExample.java index 5266ca1e9b..cd8b5ea7c9 100644 --- a/src/com/itmill/toolkit/demo/sampler/features/blueprints/ProminentPrimaryActionExample.java +++ b/src/com/itmill/toolkit/demo/sampler/features/blueprints/ProminentPrimaryActionExample.java @@ -44,6 +44,6 @@ public class ProminentPrimaryActionExample extends OrderedLayout implements */ public void buttonClick(ClickEvent event) { getWindow().showNotification( - event.getButton().getCaption() + " clicked"); + "\"" + event.getButton().getCaption() + "\" clicked"); } } diff --git a/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationCustom.java b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationCustom.java new file mode 100644 index 0000000000..f4d2afe3be --- /dev/null +++ b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationCustom.java @@ -0,0 +1,42 @@ +package com.itmill.toolkit.demo.sampler.features.notifications; + +import com.itmill.toolkit.demo.sampler.APIResource; +import com.itmill.toolkit.demo.sampler.Feature; +import com.itmill.toolkit.demo.sampler.NamedExternalResource; +import com.itmill.toolkit.ui.Window; + +public class NotificationCustom extends Feature { + + @Override + public String getDescription() { + return "Notifications are lightweight informational messages," + + " used to inform the user of various events.
" + + "The notification can have a caption, a richtext" + + " description, and an icon. Position and delay can" + + " also be customized.
Not that more often than" + + " not, less is more: try to make the messages short" + + " and to the point."; + } + + @Override + public APIResource[] getRelatedAPI() { + return new APIResource[] { new APIResource(Window.class), + new APIResource(Window.Notification.class) }; + } + + @Override + public Class[] getRelatedFeatures() { + return new Class[] { NotificationHumanized.class, + NotificationWarning.class, NotificationError.class, + NotificationTray.class }; + } + + @Override + public NamedExternalResource[] getRelatedResources() { + return new NamedExternalResource[] { new NamedExternalResource( + "Monolog Boxes and Transparent Messages", + "http://humanized.com/weblog/2006/09/11/monolog_boxes_and_transparent_messages/") }; + + } + +} diff --git a/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationCustom.png b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationCustom.png new file mode 100644 index 0000000000000000000000000000000000000000..c248516d5ddde2e4c9f0d788b3f0261323dbbf15 GIT binary patch literal 5639 zcmZ9QRa6vSw8lqz=#Z9X2r20h7^HKQ9J;$3qy?lK>28!BkPb;1x_ii>K}1UW`hU0& z_pY<{`PSKMul=}x=iAXAAPRWcRM-Fj08dF#R^y-g{ufvn|87xBp_za3!b3wr8c;j& z>hRwK!(2r{7V!MvDeS69{g(l{D(ZOv05~N7#S1`oF2%njrl*pc9Oe=>9X^QGmZ%C1 z03eN2l6|M;yKrR1b2ls2~qSXH5yT0)mbL8q{Av=~kI(yj1PDY20EpzB!&TMvm% z9n^!&`p*o?UO%?`-#y+1-ggBdW)We!WU_-(bWd^*w~Ilq^Up4UPTtLDg6E(8yIB(M z!UD*odJM#tdgM@4MPY-Ttv(@bXc; z$O4$8N5+Ok{MGC3bO=>=+Nyf^S;bxaHAY!T=xihY_(shaoj#x`Kd#=whiK?W)5i1b+Vc&l_ z=Sc5D_t4}g?sXgaCJyWvqcj(Q`O09 zDw8t)g)L_pTE6j|5SuQ|mx54$FfG0rfF~%Wyy9qEU7~a-YcR_^I*#4>rPrKPhI=7@ z&z$`=Znc)+Jb2QFn6R+z{dvL0+W~Zh9MAY>I3e`cr8$%MeICzw9V-iAC30?UKtb|C z-I+^}Vu9&)eQGqkzpbd<`=+tm)eU@Wp&TujEZh zok!TpqzBk9iHV$%LJKp8ASgTWbXYH_rG%uD53A`R^sKufwr;J<+B&3c=g4b1))N{2 zlltQcRIR$BNSF1-NumCknIK?G!PDs(?OqvA495jZUSmO8t`zU`%E+%SiFqttz&&qp zX|@rN>6ysOx1{ppZ2o)ujE-pJlP2-Q(KIxjTPodkY4&Tix2ARnFyz;@^~%bMYdr2D zZnZ#f<7I)h2WMUEf;lgw>j@h{L%!5%$Bz+~>|sMaJT_v!|H~jrJCLz4C9~%F+tq5i z@Nf$0=bFXSzEiiI3qP#CUAP1UN617e#f(jN$0-5z*tsWzRSZ=&RSvcV+#z8PBH*1 zBnA@`_ezSI<@`fqjB=n3(6Of1T^hh(Q+jWTTz@JlH>WbTu}}l|UJD2_3sQQPaHZN4 z9yLx+ILmUnwY4MuaIrB>%g+=qvET_GR;kKE6g!ls@@;vw<=ONID zs%W9WZ3BEcFlt(Sv}cbm+_sdv@x%8N9~*Z?uyNI0lE&!k(|+@&UfK!5$7WkD-MCGW zFs;}sO16u?^RMCIG>{u&D-uoYF8t@fBJ8E*w~UeD<($^;LxKHC{KjAHD7exc)(f+H z^V6h9!N%lWs;H{=8H`OLS?1}n`5cI*1h9l|A1XmW_D|0Fwa450*5j*+Deg4h4;ri& zmogCNj;j^7Nt`2F&|dEfpYs7BipGM?`bf)@0|&iz`>g0J-b+LP7~J_$zb!j)f{ld2 zx&OO2COU?jno~ppRDt8&Z};o+k73nTp6*-GWclJVBP;&k@OQJdU+doLC@5US^+K=z zP>t$sQ5ra>&pjV`dSb~!udi{C`{adGTAVu6l$2Ql!ue(8-V)UU@WnUH zT@LqY9S3@M1sR+DJr9Q|#~GxbPfiT6b0OF&uj|W2b&s<)r9DXYsUSwvBe4l($HB&- zEsh93N=9ZaZHAuuFKZ9xfQ4Fv#AQc@%^X!nrfDC)>R0R4&tE`S@nB-GynvA{etbC}4eH87$NI4$3E|dE4(o8=Uv9Al9QU&y2AyM)2?(PE7(d|a3H;a6dxAw)5 z`*q;9P>dR!k?1b5Yiz3BV5!l9WbrJB9375h{<+}V;uLwd{Bs@LmP)YkMd`jlM?AZB zsVc%Wr&rc_-VgSG+PaVZt=K}~hN|*);~*2CQa)_rKm@TxZ10Y%sHhwJ8vgs5zvwKx zt9{5+Nhe8@rgsjdwI5?d)dOvfF~(<;xhLQN*~G0G)BXO!o&Z)Z!q z{g$Srt#?a5nlw2Tm7qi^jwby27MO$#v`p?L121+m!4(TL)=iQ z3O@ark#OTy8M%n3NQC+8olU4S2#Pn|rL2?QKJUxYpW;QpJ@cP!_1ZE_=nw zw4a#qzHGuTy}InAyF@?^k8*C^6Z5+gj=qHqOH)jkD(w|Dj%(flYpdmrO@*bJBxT%$ z;Y?}`atSbGca~583e}ue-y|qvfy29v-I9AKvm{!C9SLe0E|OMj->M1rlo+({{29)2 zXJ=6w*5Iq7G%?qp{wYJE!F zD0Hjc&abuV3E&H=u;g2j^&jP-ya@!8yb0+G8a=g9s*Sj21dlZPcD8g()qC$#Gsdqa z&Jsucx?^K^!VOYW#_u0|DU!mW^}4xJ+1rt8Che{26f8Ui*9q}?+{8KfTO<=W2;`C@G48^ zh$FI`scLTQ;^TpEhuD|Yi$C+NWMa>*aI;&^JC=>$PxoR#uF%K=n|PdivkMZ)3(93u z-dHWx-`@!W!3BmD_)}inBKr!`nK(zwUCYr7{n0YN7~WJ=VNHG97ExnjsFurF(k@73 zV4~{?APN@v%vqCK@?IjZUL19K-k`EPe$ikkYHT$d5NKnd?(I|_R3aoOqDY3luvbKE z^>>XIa{ZT=)XCf@P;z?uqv?RrZ&*$?L&>ng+z%r=oY57*17aYJR}YNp%9Riij>$dbG$kt_&3*UeXW{j&jW zWJ7cqt{+aCibh^1^byaz=nLxOKN2$I=V3q+C98O4klL8*Sm7p^FF>sdIrR$~EhiSQ zm(cJgCB{kKcPVcW??C6vDe5V<9VU!jumnqpsR26fr=t&Lp9Bgxakkc+PO3fWll$qQ z+>*n}Lqvf#lj@#3)_=66&?pbw)u9DpjZYGtJwf&>yfdN{boxlPE!%*H>W*`vqZAk! zt_{NT>My&I1E}H}!?{MS6tm;tm^L3;fci_+Qqn(0aWG-dY4Jo0QJ?Ci@s@|islPG2 z%v6++vZT$9&}2*=5ijf^;}(*?MNekz2;fGOYw6x;+zFceLl6i5GmXl zBDtUP)l$7nY84bc+P*1&H=f!v4^7yZaF|9&bhVSMFPI1&m^^lN0loM35A}ViWj2KF zy<1FE;iV4mT1;sctI;c#FX?z^xc)yqkEehO|9;5-%guyA8F;C)0ZkS*{VIDM*U$Wz zcks|gzhg!S`BAG_k=o3>K$e(EIK`>m0y7NP3 z^za3?5OgO~{ZnLm>OSSoy;o?ReiVIe^Tj2m)=ccT%Ie|4+3Y1+D(d|QIN6a9`M@(c z=wv3!!EFK7@TTqUTxDV}l&4oc;1ioZ=kVVj|4j9exJ@sB88^$Jl1qoe_S9Mf)ly}9 z1y2Q-b5uc-pl=H>@ybY(^9lqdICQ>M-jfz`W*dSbPsh&*qCWnya$pd2n9Vw|Ef;Rn zGw@&vixcH1S>}gqzDAg`=bUCrld$8rzo1a$Nif;)B%O`5AC)?919Hhvro=2)(zBDn zVz3+j{=^y>$OUtAQNnZ$jG`76Rqu6uzcCGaYcZ2#>Ag-x1T_uH+g4Rm$mmmL`?FoC zp}{_{8InjY&IbgiO6!+L7jlF&i+EHNT2otLL`V5VB{Zw|@uqDxY>rK;=wMfIz=ae) zXiQ$G*u6^!X!Dh)I{kK^rZcb%#|Xy|@o%OsNbfVsY-Bgml8`{#1^V$ zm&rQPPM zP%JWvU0=l;z(jsXVD-T;DVi5q+)1gs&u426m*aYH=5M?bm?d=uD(;%{w#4PR_D7?neg^&;Nja|M+K}Q$a*_FM zR_oWMfuG~1LR-V+bG_4^OlRUNmo8|+F|vUbY4zP>QYOcCVq9ff`(khKZ-M3m$<_m# zhx^hp)MhF`>Te^z3!Gz3TFcdD5R&rNTNHR|+$sD(_!k9jBVbHbPIClVClQ`tO;r04 zv119B@7(PLLLYZL^Id*fYyy8B2_N!9V^MBj5l&OCGpjX+m4zC5(QHlYce!EyQVW}u zt>L4DFnhm*tRGXz2l56$ifF<2T^$y&3EoWiH(K?iWM&k$MdPH>fS76Q?st8R5lEl~ zyon((jtKPwjYv)ErI*ZJyQ4JuBp+3rbbVOk4tz@xFLHa!d=jg>5)cqBx7QS=&nMrJ zbx<0tPmODtmSOJEGCg(75*pfT$;8A#Be=;}%JqeSO~+AnY85Omg{t&|eY?2ICASbm zLqwYMH8CIgHy+8SZ%@Xdv0K7IR(ViW*91_=Xd|F2B`q|@e6H78znoy(BkuF^A(cfK zoR4qMlfNh$Kt;8s1ZD)IR*4UlvY3qx%g}U0L3LgA`{E|Ix?ie@?bTD8aH^Lqf8ssK z@*XkjwbumVLkPI5kxQ0Mx}eqCSWM%Fdh(kk!f`I{(3CLP?H@VA1a>}4D8b|Py& z=w&0Gp!lmZTpTzFHf0uz^v(;Ndtxa;E&=8HP8$}h8SF(3!j9oK$+HI@Hp+Sm0de@9 zC5PxC%B1OoWnV zRx>ypY_N#KH<`SnAuk8Xc~hZD@&0S_-k!OT!MJ65A|j!f*hV1UZF!zEba+^R*zFVC z@f~x13HO_9u4qP`YI!E*Y|<)51_$+GtcUEd;$rbqULFPp3jxZh&|Y7}49aZ=QZaKZ z{jW#Frvt@5dLSkv5MQRRait^(uS2QVLCAs#g~5Qm)>y&YF=+uuhC@t3n^pXx)$rfE z=A^3vz82mai<%IdXzsb4Q6Hb2G7TB|bLF^z64%B81kR4_wyc}YENa0Rga@Q9KCGcM z(f6a$@{KGsOtb$c_&zJN33{E=ki+PU(jYtVDmdS)ra?)}0F$j|ZP?*52LW!K)lE=+IkC*dTnR6JUgJ*7>76scrO- z%8ah!$B?#*A0R^_yZ%)n6~v^c_hzXDh8$uou4+!&DRh@XUx>Pull all the way to the left to get -1, which means forever (click to hide)."); + delay.setWidth("400px"); + delay.setHeight("20px"); + delay.setMin(Notification.DELAY_FOREVER); + delay.setMax(10000); + addComponent(delay); + + // TODO icon select + + Button show = new Button("Show notification", + new Button.ClickListener() { + // "Inline" click listener; this is where the + // notification is actually created and shown. + public void buttonClick(ClickEvent event) { + // create Notification instance and customize + Notification n = new Notification((String) caption + .getValue(), (String) description.getValue(), + (Integer) style.getValue()); + n.setPosition((Integer) position.getValue()); + Double d = (Double) delay.getValue(); + n.setDelayMsec(d.intValue()); // sec->msec + getWindow().showNotification(n); + } + }); + addComponent(show); + setComponentAlignment(show, ALIGNMENT_RIGHT, ALIGNMENT_VERTICAL_CENTER); + + } + + /* + * Helper to fill the position select with the various possibilities + */ + private void initPositionItems(NativeSelect position) { + position.addContainerProperty(CAPTION_PROPERTY, String.class, null); + position.setItemCaptionPropertyId(CAPTION_PROPERTY); + Item i = position.addItem(Notification.POSITION_TOP_LEFT); + Property c = i.getItemProperty(CAPTION_PROPERTY); + c.setValue("Top left"); + i = position.addItem(Notification.POSITION_CENTERED_TOP); + c = i.getItemProperty(CAPTION_PROPERTY); + c.setValue("Top centered"); + i = position.addItem(Notification.POSITION_TOP_RIGHT); + c = i.getItemProperty(CAPTION_PROPERTY); + c.setValue("Top right"); + i = position.addItem(Notification.POSITION_CENTERED); + c = i.getItemProperty(CAPTION_PROPERTY); + c.setValue("Centered"); + i = position.addItem(Notification.POSITION_BOTTOM_LEFT); + c = i.getItemProperty(CAPTION_PROPERTY); + c.setValue("Bottom left"); + i = position.addItem(Notification.POSITION_CENTERED_BOTTOM); + c = i.getItemProperty(CAPTION_PROPERTY); + c.setValue("Bottom, centered"); + i = position.addItem(Notification.POSITION_BOTTOM_RIGHT); + c = i.getItemProperty(CAPTION_PROPERTY); + c.setValue("Bottom right"); + position.setValue(Notification.POSITION_CENTERED); + } + + /* + * Helper to fill the position select with the various possibilities + */ + private void initTypeItems(NativeSelect type) { + type.addContainerProperty(CAPTION_PROPERTY, String.class, null); + type.setItemCaptionPropertyId(CAPTION_PROPERTY); + Item i = type.addItem(Notification.TYPE_HUMANIZED_MESSAGE); + Property c = i.getItemProperty(CAPTION_PROPERTY); + c.setValue("Humanized"); + i = type.addItem(Notification.TYPE_WARNING_MESSAGE); + c = i.getItemProperty(CAPTION_PROPERTY); + c.setValue("Warning"); + i = type.addItem(Notification.TYPE_ERROR_MESSAGE); + c = i.getItemProperty(CAPTION_PROPERTY); + c.setValue("Error"); + i = type.addItem(Notification.TYPE_TRAY_NOTIFICATION); + c = i.getItemProperty(CAPTION_PROPERTY); + c.setValue("Tray"); + + type.setValue(Notification.TYPE_HUMANIZED_MESSAGE); + } + +} diff --git a/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationError.java b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationError.java new file mode 100644 index 0000000000..d1de16f715 --- /dev/null +++ b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationError.java @@ -0,0 +1,42 @@ +package com.itmill.toolkit.demo.sampler.features.notifications; + +import com.itmill.toolkit.demo.sampler.APIResource; +import com.itmill.toolkit.demo.sampler.Feature; +import com.itmill.toolkit.demo.sampler.NamedExternalResource; +import com.itmill.toolkit.ui.Window; + +public class NotificationError extends Feature { + + @Override + public String getDescription() { + return "Notifications are lightweight informational messages," + + " used to inform the user of various events. The" + + " Error variant is modal, and is to be used for" + + " messages that must be seen by the user.
" + + " The Error message must be closed by clicking" + + " the notification.
Candidates for an" + + " Error notification include 'Save failed'," + + " 'Permission denied', and other situations that the" + + " user must be made aware of.
It's a good idea to" + + " provide hints about what went wrong, and how the user'" + + " can proceed to correct the situation."; + } + + @Override + public APIResource[] getRelatedAPI() { + return new APIResource[] { new APIResource(Window.class), + new APIResource(Window.Notification.class) }; + } + + @Override + public Class[] getRelatedFeatures() { + return new Class[] { NotificationHumanized.class, + NotificationWarning.class, NotificationTray.class }; + } + + @Override + public NamedExternalResource[] getRelatedResources() { + return null; + } + +} diff --git a/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationError.png b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationError.png new file mode 100644 index 0000000000000000000000000000000000000000..6c5e1d36c7a33334a4d05ebb082bca59f5d74f7c GIT binary patch literal 6497 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 Hu0mjf2>hz! literal 0 HcmV?d00001 diff --git a/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationErrorExample.java b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationErrorExample.java new file mode 100644 index 0000000000..e8442e654e --- /dev/null +++ b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationErrorExample.java @@ -0,0 +1,40 @@ +package com.itmill.toolkit.demo.sampler.features.notifications; + +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.OrderedLayout; +import com.itmill.toolkit.ui.TextField; +import com.itmill.toolkit.ui.Button.ClickEvent; +import com.itmill.toolkit.ui.Window.Notification; + +public class NotificationErrorExample extends OrderedLayout { + + public NotificationErrorExample() { + setSpacing(true); + + final TextField caption = new TextField("Caption", "Upload failed"); + caption.setWidth("200px"); + addComponent(caption); + + final TextField description = new TextField( + "Description", + "Invoices-2008.csv could not be read.
" + + "Perhaps the file is damaged, or in the wrong format?
" + + "Try re-exporting and uploading the file again."); + description.setWidth("300px"); + addComponent(description); + + Button show = new Button("Show notification", + new Button.ClickListener() { + public void buttonClick(ClickEvent event) { + getWindow().showNotification( + (String) caption.getValue(), + (String) description.getValue(), + Notification.TYPE_ERROR_MESSAGE); + + } + }); + addComponent(show); + setComponentAlignment(show, ALIGNMENT_RIGHT, ALIGNMENT_VERTICAL_CENTER); + + } +} diff --git a/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationHumanized.java b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationHumanized.java new file mode 100644 index 0000000000..1ad401f385 --- /dev/null +++ b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationHumanized.java @@ -0,0 +1,44 @@ +package com.itmill.toolkit.demo.sampler.features.notifications; + +import com.itmill.toolkit.demo.sampler.APIResource; +import com.itmill.toolkit.demo.sampler.Feature; +import com.itmill.toolkit.demo.sampler.NamedExternalResource; +import com.itmill.toolkit.ui.Window; + +public class NotificationHumanized extends Feature { + + @Override + public String getDescription() { + return "Notifications are lightweight informational messages," + + " used to inform the user of various events. The" + + " Humanized variant is an implementation of" + + " the transparent message -pattern, and is meant" + + " to indicate non-critical events while interrupting" + + " the user as little as possible.
" + + "The Humanized message quickly fades away once" + + " the user interacts with the application (e.g. moves" + + " mouse, types)
Candidates for a" + + " Humanized notification include 'XYZ saved'," + + " 'Added XYZ', and other messages that the user can" + + " safely ignore, once the application is familliar."; + } + + @Override + public APIResource[] getRelatedAPI() { + return new APIResource[] { new APIResource(Window.class), + new APIResource(Window.Notification.class) }; + } + + @Override + public Class[] getRelatedFeatures() { + return new Class[] { NotificationWarning.class }; + } + + @Override + public NamedExternalResource[] getRelatedResources() { + return new NamedExternalResource[] { new NamedExternalResource( + "Monolog Boxes and Transparent Messages", + "http://humanized.com/weblog/2006/09/11/monolog_boxes_and_transparent_messages/") }; + } + +} diff --git a/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationHumanized.png b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationHumanized.png new file mode 100644 index 0000000000000000000000000000000000000000..5153749f7d3860044b529418b15c1122c1ee654e GIT binary patch literal 4231 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 TVUoW45&%>cwG?XQtRwyl%Jmtd literal 0 HcmV?d00001 diff --git a/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationHumanizedExample.java b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationHumanizedExample.java new file mode 100644 index 0000000000..11e904391c --- /dev/null +++ b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationHumanizedExample.java @@ -0,0 +1,35 @@ +package com.itmill.toolkit.demo.sampler.features.notifications; + +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.OrderedLayout; +import com.itmill.toolkit.ui.TextField; +import com.itmill.toolkit.ui.Button.ClickEvent; + +public class NotificationHumanizedExample extends OrderedLayout { + + public NotificationHumanizedExample() { + setSpacing(true); + + final TextField caption = new TextField("Caption", "Document saved"); + caption.setWidth("200px"); + addComponent(caption); + + final TextField description = new TextField("Description", + "Invoices-2008.csv"); + description.setWidth("300px"); + addComponent(description); + + Button show = new Button("Show notification", + new Button.ClickListener() { + public void buttonClick(ClickEvent event) { + getWindow().showNotification( + (String) caption.getValue(), + (String) description.getValue()); + + } + }); + addComponent(show); + setComponentAlignment(show, ALIGNMENT_RIGHT, ALIGNMENT_VERTICAL_CENTER); + + } +} diff --git a/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationTray.java b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationTray.java new file mode 100644 index 0000000000..3227de211b --- /dev/null +++ b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationTray.java @@ -0,0 +1,45 @@ +package com.itmill.toolkit.demo.sampler.features.notifications; + +import com.itmill.toolkit.demo.sampler.APIResource; +import com.itmill.toolkit.demo.sampler.Feature; +import com.itmill.toolkit.demo.sampler.NamedExternalResource; +import com.itmill.toolkit.ui.Window; + +public class NotificationTray extends Feature { + + @Override + public String getDescription() { + return "Notifications are lightweight informational messages," + + " used to inform the user of various events. The" + + " Tray variant shows up in the lower left corner," + + " and is meant to interrupt the user as little as possible" + + " even if it's shown for a while. " + + "The Tray message fades away after a few moments" + + " once the user interacts with the application (e.g. moves" + + " mouse, types)
Candidates for a" + + " Tray notification include 'New message received'," + + " 'Job XYZ completed' - generally notifications about events" + + " that have been delayed, or occur in the background" + + " (as opposed to being a direct result of the users last action.)"; + } + + @Override + public APIResource[] getRelatedAPI() { + return new APIResource[] { new APIResource(Window.class), + new APIResource(Window.Notification.class) }; + } + + @Override + public Class[] getRelatedFeatures() { + return new Class[] { NotificationHumanized.class, + NotificationWarning.class }; + } + + @Override + public NamedExternalResource[] getRelatedResources() { + return new NamedExternalResource[] { new NamedExternalResource( + "Monolog Boxes and Transparent Messages", + "http://humanized.com/weblog/2006/09/11/monolog_boxes_and_transparent_messages/") }; + } + +} diff --git a/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationTray.png b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationTray.png new file mode 100644 index 0000000000000000000000000000000000000000..129d92b9583f6749dd2317c99b4fc7c1335f7da5 GIT binary patch literal 5731 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 VG*EP@Q#=3w002ovPDHLkV1i-04B!9& literal 0 HcmV?d00001 diff --git a/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationTrayExample.java b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationTrayExample.java new file mode 100644 index 0000000000..a22feb5cc5 --- /dev/null +++ b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationTrayExample.java @@ -0,0 +1,37 @@ +package com.itmill.toolkit.demo.sampler.features.notifications; + +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.OrderedLayout; +import com.itmill.toolkit.ui.TextField; +import com.itmill.toolkit.ui.Button.ClickEvent; +import com.itmill.toolkit.ui.Window.Notification; + +public class NotificationTrayExample extends OrderedLayout { + + public NotificationTrayExample() { + setSpacing(true); + + final TextField caption = new TextField("Caption", "New message"); + caption.setWidth("200px"); + addComponent(caption); + + final TextField description = new TextField("Description", + "John: Could you upload Invoices-2008.csv so that..."); + description.setWidth("300px"); + addComponent(description); + + Button show = new Button("Show notification", + new Button.ClickListener() { + public void buttonClick(ClickEvent event) { + getWindow().showNotification( + (String) caption.getValue(), + (String) description.getValue(), + Notification.TYPE_TRAY_NOTIFICATION); + + } + }); + addComponent(show); + setComponentAlignment(show, ALIGNMENT_RIGHT, ALIGNMENT_VERTICAL_CENTER); + + } +} diff --git a/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationWarning.java b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationWarning.java new file mode 100644 index 0000000000..06b4240395 --- /dev/null +++ b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationWarning.java @@ -0,0 +1,44 @@ +package com.itmill.toolkit.demo.sampler.features.notifications; + +import com.itmill.toolkit.demo.sampler.APIResource; +import com.itmill.toolkit.demo.sampler.Feature; +import com.itmill.toolkit.demo.sampler.NamedExternalResource; +import com.itmill.toolkit.ui.Window; + +public class NotificationWarning extends Feature { + + @Override + public String getDescription() { + return "Notifications are lightweight informational messages," + + " used to inform the user of various events. The" + + " Warning variant is an implementation of" + + " the transparent message -pattern, and is meant" + + " to interrupt the user as little as possible, while" + + " still drawing the needed attention." + + "The Warning message fades away after a few moments" + + " once the user interacts with the application (e.g. moves" + + " mouse, types)
Candidates for a" + + " Warning notification include 'You canceled XYZ'," + + " 'XYZ deleted', and other situations that the user should" + + " be made aware of, but are probably intentional."; + } + + @Override + public APIResource[] getRelatedAPI() { + return new APIResource[] { new APIResource(Window.class), + new APIResource(Window.Notification.class) }; + } + + @Override + public Class[] getRelatedFeatures() { + return new Class[] { NotificationHumanized.class }; + } + + @Override + public NamedExternalResource[] getRelatedResources() { + return new NamedExternalResource[] { new NamedExternalResource( + "Monolog Boxes and Transparent Messages", + "http://humanized.com/weblog/2006/09/11/monolog_boxes_and_transparent_messages/") }; + } + +} diff --git a/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationWarning.png b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationWarning.png new file mode 100644 index 0000000000000000000000000000000000000000..16f55564a8466c0182a362390b301608f932a435 GIT binary patch literal 5178 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 B>4yLS literal 0 HcmV?d00001 diff --git a/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationWarningExample.java b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationWarningExample.java new file mode 100644 index 0000000000..e5fd3f43d5 --- /dev/null +++ b/src/com/itmill/toolkit/demo/sampler/features/notifications/NotificationWarningExample.java @@ -0,0 +1,37 @@ +package com.itmill.toolkit.demo.sampler.features.notifications; + +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.OrderedLayout; +import com.itmill.toolkit.ui.TextField; +import com.itmill.toolkit.ui.Button.ClickEvent; +import com.itmill.toolkit.ui.Window.Notification; + +public class NotificationWarningExample extends OrderedLayout { + + public NotificationWarningExample() { + setSpacing(true); + + final TextField caption = new TextField("Caption", "Upload canceled"); + caption.setWidth("200px"); + addComponent(caption); + + final TextField description = new TextField("Description", + "Invoices-2008.csv will not be processed"); + description.setWidth("300px"); + addComponent(description); + + Button show = new Button("Show notification", + new Button.ClickListener() { + public void buttonClick(ClickEvent event) { + getWindow().showNotification( + (String) caption.getValue(), + (String) description.getValue(), + Notification.TYPE_WARNING_MESSAGE); + + } + }); + addComponent(show); + setComponentAlignment(show, ALIGNMENT_RIGHT, ALIGNMENT_VERTICAL_CENTER); + + } +} -- 2.39.5