/* * Copyright 2000-2016 Vaadin Ltd. * * 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.vaadin.shared.ui.ui; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.vaadin.shared.annotations.NoLayout; import com.vaadin.shared.communication.PushMode; import com.vaadin.shared.ui.AbstractSingleComponentContainerState; public class UIState extends AbstractSingleComponentContainerState { /** * The <i>tabulator index</i> of the field. */ @NoLayout public int tabIndex = 0; public TooltipConfigurationState tooltipConfiguration = new TooltipConfigurationState(); public LoadingIndicatorConfigurationState loadingIndicatorConfiguration = new LoadingIndicatorConfigurationState(); public int pollInterval = -1; // Informing users of assistive devices, that the content of this container // is announced automatically and does not need to be navigated into public String overlayContainerLabel = "This content is announced automatically and does not need to be navigated into."; public Map<String, NotificationTypeConfiguration> notificationConfigurations = new HashMap<>(); { notificationConfigurations.put("error", new NotificationTypeConfiguration("Error: ", " - close with ESC-key", NotificationRole.ALERT)); notificationConfigurations.put("warning", new NotificationTypeConfiguration("Warning: ", null, NotificationRole.ALERT)); notificationConfigurations.put("humanized", new NotificationTypeConfiguration("Info: ", null, NotificationRole.ALERT)); // We use alert instead of status for all notifications because // (at least) Jaws 16 and earlier fail to announce any role=status // message in Chrome/Firefox notificationConfigurations.put("tray", new NotificationTypeConfiguration("Status: ", null, NotificationRole.ALERT)); notificationConfigurations.put("assistive", new NotificationTypeConfiguration("Note: ", null, NotificationRole.ALERT)); } /** * State related to the Page class. */ public PageState pageState = new PageState(); /** * State related to the LocaleService class. */ public LocaleServiceState localeServiceState = new LocaleServiceState(); /** * Configuration for the push channel */ public PushConfigurationState pushConfiguration = new PushConfigurationState(); /** * Currently used theme. * * @since 7.3 */ public String theme; public ReconnectDialogConfigurationState reconnectDialogConfiguration = new ReconnectDialogConfigurationState(); { primaryStyleName = "v-ui"; // Default is 1 for legacy reasons tabIndex = 1; } /** * Enable Mobile HTML5 DnD support. */ public boolean enableMobileHTML5DnD = false; public static class LoadingIndicatorConfigurationState implements Serializable { public int firstDelay = 300; public int secondDelay = 1500; public int thirdDelay = 5000; } public static class TooltipConfigurationState implements Serializable { public int openDelay = 750; public int quickOpenDelay = 100; public int quickOpenTimeout = 1000; public int closeTimeout = 300; public int maxWidth = 500; } public static class NotificationTypeConfiguration implements Serializable { public String prefix; public String postfix; public NotificationRole notificationRole = NotificationRole.ALERT; public NotificationTypeConfiguration() { } public NotificationTypeConfiguration(String prefix, String postfix, NotificationRole role) { this.prefix = prefix; this.postfix = postfix; notificationRole = role; } } public static class PushConfigurationState implements Serializable { public static final String TRANSPORT_PARAM = "transport"; public static final String FALLBACK_TRANSPORT_PARAM = "fallbackTransport"; public boolean alwaysUseXhrForServerRequests = false; public PushMode mode = PushMode.DISABLED; public String pushUrl = null; public Map<String, String> parameters = new HashMap<>(); { parameters.put(TRANSPORT_PARAM, Transport.WEBSOCKET.getIdentifier()); parameters.put(FALLBACK_TRANSPORT_PARAM, Transport.LONG_POLLING.getIdentifier()); } } public static class ReconnectDialogConfigurationState implements Serializable { public String dialogText = "Server connection lost, trying to reconnect..."; public String dialogTextGaveUp = "Server connection lost."; public int reconnectAttempts = 10000; public int reconnectInterval = 5000; public int dialogGracePeriod = 400; public boolean dialogModal = false; } public static class LocaleServiceState implements Serializable { public List<LocaleData> localeData = new ArrayList<>(); } public static class LocaleData implements Serializable { public String name; public String[] monthNames; public String[] shortMonthNames; public String[] shortDayNames; public String[] dayNames; public int firstDayOfWeek; public String dateFormat; public boolean twelveHourClock; public String hourMinuteDelimiter; public String am; public String pm; } }