aboutsummaryrefslogtreecommitdiffstats
path: root/documentation/components/components-button.asciidoc
blob: 59ab380348491c664e6d052ecbc76eadde74864a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
---
title: Button
order: 14
layout: page
---

[[components.button]]
= [classname]#Button#

ifdef::web[]
[.sampler]
image:{live-demo-image}[alt="Live Demo", link="http://demo.vaadin.com/sampler/#ui/interaction/button"]
endif::web[]


The [classname]#Button# component is normally used for initiating some action,
such as finalizing input in forms. When the user clicks a button, a
[classname]#Button.ClickEvent# is fired, which can be handled with a
[interfacename]#Button.ClickListener# in the [methodname]#buttonClick()# method.

You can handle button clicks with an anonymous class as follows:


[source, java]
----
Button button = new Button("Do not press this button");

button.addClickListener(new Button.ClickListener() {
    public void buttonClick(ClickEvent event) {
        Notification.show("Do not press this button again");
    }
});
----
See the http://demo.vaadin.com/book-examples-vaadin7/book#component.button.basic[on-line example, window="_blank"].

The result is shown in <<figure.component.button.basic>>. The listener can also
be given in the constructor, which is often perhaps simpler.

[[figure.component.button.basic]]
.Button in Different Styles of Valo Theme
image::img/button-example1.png[]

If you handle several buttons in the same listener, you can differentiate
between them either by comparing the [classname]#Button# object reference
returned by the [methodname]#getButton()# method of
[classname]#Button.ClickEvent# to a kept reference. For a detailed description
of these patterns together with some examples, please see
<<dummy/../../../framework/architecture/architecture-events#architecture.events,"Events
and Listeners">>.

== CSS Style Rules


[source, css]
----
.v-button { }
  .v-button-wrap { }
    .v-button-caption { }
----

A button has an overall [literal]#++v-button++# style. The caption has
[literal]#++v-button-caption++# style. There is also an intermediate wrap
element, which may help in styling in some cases.

Some built-in themes contain a small style, which you can enable by adding
[parameter]#Reindeer.BUTTON_SMALL#, etc. The [classname]#BaseTheme# also has a
[parameter]#BUTTON_LINK# style, which makes the button look like a hyperlink.
e Widgetset] Click run and the widget set will compile. You should do this whenever you add new addons or client side classes to the project. To run the project we will need to create a similar launch script. So, start by creating another Maven Build launch configuration just like we did above but instead of using the `vaadin:compile` target we will use the `jetty:run` target. Here is my ready made configuration for that: image:img/maven-run-project.png[Maven run configuration] Now, click Run and your project should be running on http://localhost:8080 [[using-the-vaadin-plug-in-to-create-an-ivy-project-in-eclipse]] Using the Vaadin plug-in to create an Ivy project in Eclipse ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The Vaadin Plug-in is based on a Dynamic Web Project and therefore uses Ivy instead of Maven for handling the dependencies. So lets start by adding the update sites to our eclipse installation. This can be done by selecting "Help->Install New Software" in eclipse. In the dialog which opens we need to add the Vaadin update site. Click "Add..." and add the following and click OK. .... Name: Vaadin Eclipse Plugin Location: http://vaadin.com/eclipse .... Once that is done select the Vaadin plugin like have been done below. image:img/eclipse-plugin-install.png[Eclipse Vaadin plugin installation] Select "Next->Next->Finish" and the plugin will be installed. You will need to restart eclipse for the plugin to take effect. Once the plugin is installed you can create a new project by selecting File -> New -> Project... -> Vaadin 7 Project. In the dialog you will be presented you will need to provide a name for the project at least. You can also select which version of Vaadin should be used. By default the latest version is automatically selected. Click finish and the project is created. Once the project has been created you will still need to configure the project to use Ivy. To do this right click on the ivy.xml file in the newly created project and select "Add Ivy Library...". In the dialog that appears select Finish. One final thing needs to be done to ensure that the Ivy managed jars are deployed to your server and that is to add the project properties to the deployment assembly. This can be done by right clicking on the project and selecting Properties. In the properties dialog find the tab named "Deployment Assembly" and select "Add.." -> "Java Build Path Entries" and choose `ivy.xml[*]`. Click OK and your are done. Congratulations, you have just created a new Vaadin project!