/*
* Copyright 2011 Nicolas Frankel
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.morevaadin.vaadin7.refresh;
import static java.text.DateFormat.LONG;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.terminal.DeploymentConfiguration;
import com.vaadin.terminal.WrappedRequest;
import com.vaadin.terminal.WrappedRequest.BrowserDetails;
import com.vaadin.terminal.gwt.server.WebBrowser;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.Root;
import com.vaadin.ui.VerticalLayout;
@SuppressWarnings("serial")
public class Vaadin7Root extends Root {
private VerticalLayout mainLayout = new VerticalLayout();
private GridLayout gridLayout = new GridLayout();
public Vaadin7Root() {
addComponent(mainLayout);
final CheckBox checkBox = new CheckBox("Preserve root");
checkBox.setImmediate(true);
checkBox.addListener(new ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
getApplication().setRootPreserved(checkBox.getValue());
}
});
mainLayout.addComponent(checkBox);
gridLayout.setColumns(2);
mainLayout.addComponent(gridLayout);
}
@Override
public void init(WrappedRequest wrapped) {
BrowserDetails details = wrapped.getBrowserDetails();
addInfoLine("Window name", details.getWindowName());
addInfoLine("URI fragment", details.getUriFragment());
WebBrowser browser = details.getWebBrowser();
addInfoLine("Default theme", browser.getDefaultTheme());
addInfoLine("Client IP", browser.getAddress());
addInfoLine("User agent", browser.getBrowserApplication());
addInfoLine("User agent major version", String.valueOf(browser.getBrowserMajorVersion()));
addInfoLine("User agent minor version", String.valueOf(browser.getBrowserMinorVersion()));
addInfoLine("Window height", String.valueOf(browser.getScreenHeight()));
addInfoLine("Window width", String.valueOf(browser.getScreenWidth()));
addInfoLine("Screen height", String.valueOf(browser.getScreenHeight()));
addInfoLine("Screen width", String.valueOf(browser.getScreenWidth()));
Date date = browser.getCurrentDate();
Locale locale = browser.getLocale();
DateFormat format = DateFormat.getDateTimeInstance(LONG, LONG, locale);
addInfoLine("Init. date", format.format(date));
addInfoLine("Language", locale.getDisplayLanguage(locale));
addInfoLine("Country", locale.getDisplayCountry(locale));
DeploymentConfiguration deploy = wrapped.getDeploymentConfiguration();
addInfoLine("Configured widgetset", deploy.getConfiguredWidgetset(wrapped));
addInfoLine("Static file location", deploy.getStaticFileLocation(wrapped));
addInfoLine("Configured theme", deploy.getConfiguredTheme(wrapped));
}
private void addInfoLine(String label, String info) {
Label key = new Label(label);
Label value = new Label(info);
gridLayout.addComponent(key);
gridLayout.addComponent(value);
}
}