From f9bd6d9b9304a4eb73fc404009e0a973818c6d1a Mon Sep 17 00:00:00 2001 From: Erik Lumme Date: Wed, 13 Sep 2017 10:27:22 +0300 Subject: [PATCH] Migrate UseTooltipsToClarifyFunctions --- .../UseTooltipsToClarifyFunctions.asciidoc | 32 ++++++++++++++++++ documentation/articles/contents.asciidoc | 1 + documentation/articles/img/tooltip.png | Bin 0 -> 13112 bytes 3 files changed, 33 insertions(+) create mode 100644 documentation/articles/UseTooltipsToClarifyFunctions.asciidoc create mode 100644 documentation/articles/img/tooltip.png diff --git a/documentation/articles/UseTooltipsToClarifyFunctions.asciidoc b/documentation/articles/UseTooltipsToClarifyFunctions.asciidoc new file mode 100644 index 0000000000..af871a6332 --- /dev/null +++ b/documentation/articles/UseTooltipsToClarifyFunctions.asciidoc @@ -0,0 +1,32 @@ +[[use-tooltips-to-clarify-functions]] +Use tooltips to clarify functions +--------------------------------- + +Even when clearly labelled, the action performed by a button might not +be clear enough to the user. This is especially common when space or +design constraints force you to keep the label very short, or use an +icon instead of a label. This is where tooltips come in handy. + +image:img/tooltip.png[A tooltip] + +Tooltips are very easy to add to Vaadin components, although the method +used to set them is the somewhat misleadingly named *setDescription()*: + +[source,java] +.... +Button btnAttach = new Button(); +btnAttach.setIcon(new ThemeResource("icons/attach.png")); +btnAttach.setDescription("Attach a file"); +.... + +Of course, tooltips can be used for all kinds of UI components, not just +buttons. An input field or even a read-only indicator can benefit from a +tooltip. While the entire point of tooltips is to convey more +information that would fit in the component’s caption or label, it’s +still a good idea of try to keep the tooltip’s text as short as +possible. Big tooltip balloons get in the way of using the UI and become +annoying distractions instead of helpful aids. + +Keep in mind, however, that tooltips cannot be seen on a touch screen, +since there is no mouse pointer to hover over the component. For input +fields, consider using an *input prompt* instead. diff --git a/documentation/articles/contents.asciidoc b/documentation/articles/contents.asciidoc index 215ade5dc2..c3d3eebd90 100644 --- a/documentation/articles/contents.asciidoc +++ b/documentation/articles/contents.asciidoc @@ -64,5 +64,6 @@ are great, too. - link:ValoExamples.asciidoc[Valo examples] - link:ReadOnlyVsDisabledFields.asciidoc[Read-only vs Disabled fields] - link:ValoThemeGettingStarted.asciidoc[Valo theme - Getting started] +- link:UseTooltipsToClarifyFunctions.asciidoc[Use tooltips to clarify functions] - link:CreatingAUIExtension.asciidoc[Creating a UI extension] - link:CreatingAThemeUsingSass.asciidoc[Creating a theme using Sass] diff --git a/documentation/articles/img/tooltip.png b/documentation/articles/img/tooltip.png new file mode 100644 index 0000000000000000000000000000000000000000..1c4b1357eca9d43baeb8f83c89d7d1f1c5285df6 GIT binary patch literal 13112 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