--- /dev/null
+[[finding-the-current-root-and-application]]
+Finding the current root and application
+----------------------------------------
+
+There are many cases where you need a reference to the active
+`Application` or `Root`, for instance for showing notifications in a click
+listener. It is possible to get a reference to the component from the
+event and then a reference from the component to the `Root` but Vaadin
+also offers an easier way through two static methods:
+
+[source,java]
+....
+Root.getCurrent()
+Application.getCurrent()
+....
+
+For example when you want to show the name of the current Root class:
+
+[source,java]
+....
+Button helloButton = new Button("Say Hello");
+helloButton.addListener(new ClickListener() {
+ public void buttonClick(ClickEvent event) {
+ Notification.show("This Root is " + Root.getCurrent().getClass().getSimpleName());
+ }
+});
+....
+
+Similarly for `Application`, for instance to find out if the application
+is running in production mode:
+
+[source,java]
+....
+public void buttonClick(ClickEvent event) {
+ String msg = "Running in ";
+ msg += Application.getCurrent().isProductionMode() ?
+ "production" : "debug";
+ msg += " mode";
+ Notification.show(msg);
+}
+....
+
+*Note* that these are based on `ThreadLocal` so they won't work in a
+background thread (or otherwise outside the standard request scope).
- link:ChangingTheDefaultConvertersForAnApplication.asciidoc[Changing the default converters for an application]
- link:CreatingAnApplicationWithDifferentFeaturesForDifferentClients.asciidoc[Creating an application with different features for different clients]
- link:VAccessControl.asciidoc[V - Access control]
+- link:FindingTheCurrentRootAndApplication.asciidoc[Finding the current root and application]