Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* Copyright 2012 SIB Visions GmbH
*
* 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.
*
*
* History
*
* 17.10.2012 - [CB] - creation
* 24.09.2013 - [JR] - support images with byte[]
* 27.11.2013 - [JR] - support push for standard Threads
* 08.03.2014 - [LT] - included method to create a gridlayout
* 18.03.2014 - [JR] - #980: ensure that push/access have an UI factory
* 03.12.2014 - [JR] - PushThread, UIRunnable: check launcher because of automated GUI test
* 03.01.2015 - [JR] - changed push thread UI handling because the UI wasn't the right one
* 15.07.2015 - [JR] - #1437: changed invokeLater handling and push notification
* 10.12.2015 - [JR] - #1542: cache invokeLater queue for current UI if push mode is disabled
* 31.05.2016 - [JR] - style property support
* 24.06.2016 - [JR] - performInvokeLater now checks both possible cache keys (in a loop)
* 21.03.2018 - [JR] - IPopupMenuButton support
*/
package com.sibvisions.rad.ui.vaadin.impl;
import java.awt.GraphicsEnvironment;
import java.util.ArrayList;
import java.util.Map;
import java.util.WeakHashMap;
import jvx.rad.genui.UIFactoryManager;
import jvx.rad.model.ui.ICellEditor;
import jvx.rad.ui.IColor;
import jvx.rad.ui.IComponent;
import jvx.rad.ui.IContainer;
import jvx.rad.ui.ICursor;
import jvx.rad.ui.IDimension;
import jvx.rad.ui.IFont;
import jvx.rad.ui.IImage;
import jvx.rad.ui.IInsets;
import jvx.rad.ui.IPoint;
import jvx.rad.ui.IRectangle;
import jvx.rad.ui.Style;
import jvx.rad.ui.celleditor.ICheckBoxCellEditor;
import jvx.rad.ui.celleditor.IChoiceCellEditor;
import jvx.rad.ui.celleditor.IDateCellEditor;
import jvx.rad.ui.celleditor.IImageViewer;
import jvx.rad.ui.celleditor.ILinkedCellEditor;
import jvx.rad.ui.celleditor.INumberCellEditor;
import jvx.rad.ui.celleditor.ITextCellEditor;
import jvx.rad.ui.component.IButton;
import jvx.rad.ui.component.ICheckBox;
import jvx.rad.ui.component.IIcon;
import jvx.rad.ui.component.ILabel;
import jvx.rad.ui.component.IMap;
import jvx.rad.ui.component.IPasswordField;
import jvx.rad.ui.component.IPopupMenuButton;
import jvx.rad.ui.component.IRadioButton;
import jvx.rad.ui.component.ITextArea;
import jvx.rad.ui.component.ITextField;
import jvx.rad.ui.component.IToggleButton;
import jvx.rad.ui.container.IDesktopPanel;
import jvx.rad.ui.container.IFrame;
import jvx.rad.ui.container.IGroupPanel;
import jvx.rad.ui.container.IInternalFrame;
import jvx.rad.ui.container.IPanel;
import jvx.rad.ui.container.IScrollPanel;
import jvx.rad.ui.container.ISplitPanel;
import jvx.rad.ui.container.ITabsetPanel;
import jvx.rad.ui.container.IToolBar;
import jvx.rad.ui.container.IToolBarPanel;
import jvx.rad.ui.container.IWindow;
import jvx.rad.ui.control.ICellFormat;
import jvx.rad.ui.control.IChart;
import jvx.rad.ui.control.IEditor;
import jvx.rad.ui.control.IGauge;
import jvx.rad.ui.control.ITable;
import jvx.rad.ui.control.ITree;
import jvx.rad.ui.layout.IBorderLayout;
import jvx.rad.ui.layout.IFlowLayout;
import jvx.rad.ui.layout.IFormLayout;
import jvx.rad.ui.layout.IGridLayout;
import jvx.rad.ui.menu.ICheckBoxMenuItem;
import jvx.rad.ui.menu.IMenu;
import jvx.rad.ui.menu.IMenuBar;
import jvx.rad.ui.menu.IMenuItem;
import jvx.rad.ui.menu.IPopupMenu;
import jvx.rad.ui.menu.ISeparator;
import jvx.rad.util.ExceptionHandler;
import jvx.rad.util.RuntimeEventHandler;
import jvx.rad.util.SilentAbortException;
import com.sibvisions.rad.ui.AbstractFactory;
import com.sibvisions.rad.ui.vaadin.ext.VaadinUtil;
import com.sibvisions.rad.ui.vaadin.impl.celleditor.VaadinCheckBoxCellEditor;
import com.sibvisions.rad.ui.vaadin.impl.celleditor.VaadinChoiceCellEditor;
import com.sibvisions.rad.ui.vaadin.impl.celleditor.VaadinDateCellEditor;
import com.sibvisions.rad.ui.vaadin.impl.celleditor.VaadinImageViewer;
import com.sibvisions.rad.ui.vaadin.impl.celleditor.VaadinLinkedCellEditor;
import com.sibvisions.rad.ui.vaadin.impl.celleditor.VaadinNumberCellEditor;
import com.sibvisions.rad.ui.vaadin.impl.celleditor.VaadinTextCellEditor;
import com.sibvisions.rad.ui.vaadin.impl.component.VaadinButton;
import com.sibvisions.rad.ui.vaadin.impl.component.VaadinCheckBox;
import com.sibvisions.rad.ui.vaadin.impl.component.VaadinCustomComponent;
import com.sibvisions.rad.ui.vaadin.impl.component.VaadinIcon;
import com.sibvisions.rad.ui.vaadin.impl.component.VaadinLabel;
import com.sibvisions.rad.ui.vaadin.impl.component.VaadinPasswordField;
import com.sibvisions.rad.ui.vaadin.impl.component.VaadinPopupMenuButton;
import com.sibvisions.rad.ui.vaadin.impl.component.VaadinRadioButton;
import com.sibvisions.rad.ui.vaadin.impl.component.VaadinTextArea;
import com.sibvisions.rad.ui.vaadin.impl.component.VaadinTextField;
import com.sibvisions.rad.ui.vaadin.impl.component.VaadinToggleButton;
import com.sibvisions.rad.ui.vaadin.impl.component.chart.VaadinGaugeJs;
import com.sibvisions.rad.ui.vaadin.impl.component.chart.v3.VaadinChartJs;
import com.sibvisions.rad.ui.vaadin.impl.component.map.google.VaadinGoogleMap;
import com.sibvisions.rad.ui.vaadin.impl.component.map.openstreet.VaadinOpenStreetMap;
import com.sibvisions.rad.ui.vaadin.impl.container.VaadinCustomContainer;
import com.sibvisions.rad.ui.vaadin.impl.container.VaadinCustomSingleContainer;
import com.sibvisions.rad.ui.vaadin.impl.container.VaadinDesktopPanel;
import com.sibvisions.rad.ui.vaadin.impl.container.VaadinFrame;
import com.sibvisions.rad.ui.vaadin.impl.container.VaadinGroupPanel;
import com.sibvisions.rad.ui.vaadin.impl.container.VaadinInternalFrame;
import com.sibvisions.rad.ui.vaadin.impl.container.VaadinPanel;
import com.sibvisions.rad.ui.vaadin.impl.container.VaadinScrollPanel;
import com.sibvisions.rad.ui.vaadin.impl.container.VaadinSplitPanel;
import com.sibvisions.rad.ui.vaadin.impl.container.VaadinTabsetPanel;
import com.sibvisions.rad.ui.vaadin.impl.container.VaadinToolBar;
import com.sibvisions.rad.ui.vaadin.impl.container.VaadinToolBarPanel;
import com.sibvisions.rad.ui.vaadin.impl.container.VaadinWindow;
import com.sibvisions.rad.ui.vaadin.impl.control.VaadinCellFormat;
import com.sibvisions.rad.ui.vaadin.impl.control.VaadinEditor;
import com.sibvisions.rad.ui.vaadin.impl.control.VaadinGrid;
import com.sibvisions.rad.ui.vaadin.impl.control.VaadinTable;
import com.sibvisions.rad.ui.vaadin.impl.control.VaadinTree;
import com.sibvisions.rad.ui.vaadin.impl.control.VaadinTreeGrid;
import com.sibvisions.rad.ui.vaadin.impl.feature.IAutoCompleteFeature;
import com.sibvisions.rad.ui.vaadin.impl.layout.VaadinBorderLayout;
import com.sibvisions.rad.ui.vaadin.impl.layout.VaadinClientBorderLayout;
import com.sibvisions.rad.ui.vaadin.impl.layout.VaadinClientFlowLayout;
import com.sibvisions.rad.ui.vaadin.impl.layout.VaadinClientFormLayout;
import com.sibvisions.rad.ui.vaadin.impl.layout.VaadinClientGridLayout;
import com.sibvisions.rad.ui.vaadin.impl.layout.VaadinFlowLayout;
import com.sibvisions.rad.ui.vaadin.impl.layout.VaadinFormLayout;
import com.sibvisions.rad.ui.vaadin.impl.layout.VaadinGridLayout;
import com.sibvisions.rad.ui.vaadin.impl.menu.VaadinCheckBoxMenuItem;
import com.sibvisions.rad.ui.vaadin.impl.menu.VaadinMenu;
import com.sibvisions.rad.ui.vaadin.impl.menu.VaadinMenuBar;
import com.sibvisions.rad.ui.vaadin.impl.menu.VaadinMenuItem;
import com.sibvisions.rad.ui.vaadin.impl.menu.VaadinPopupMenu;
import com.sibvisions.rad.ui.vaadin.impl.menu.VaadinSeparator;
import com.sibvisions.rad.ui.vaadin.server.VaadinContext;
import com.sibvisions.util.ThreadManager;
import com.sibvisions.util.log.LoggerFactory;
import com.sibvisions.util.type.ExceptionUtil;
import com.vaadin.server.ErrorHandlingRunnable;
import com.vaadin.server.Sizeable.Unit;
import com.vaadin.server.VaadinSession;
import com.vaadin.shared.communication.PushMode;
import com.vaadin.shared.ui.ContentMode;
import com.vaadin.ui.AbstractComponent;
import com.vaadin.ui.ComponentContainer;
import com.vaadin.ui.Label;
import com.vaadin.ui.PushConfiguration;
import com.vaadin.ui.SingleComponentContainer;
import com.vaadin.ui.UI;
import com.vaadin.ui.UIDetachedException;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;
import com.vaadin.util.CurrentInstance;
/**
* The VaadinFactory class encapsulates methods to create and
* access vaadin components.
*
* @author Benedikt Cermak
* @author Stefan Wurm
*/
public class VaadinFactory extends AbstractFactory
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Constants
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/**
* Defines that {@link #createTable()} should create an {@link ITable}
* containing the old Vaadin Table instead of the new Grid. The value of
* the property is expected to be either {@link Boolean#FALSE} or
* {@link Boolean#TRUE}.
*/
public static final String PROPERTY_COMPONENT_LEGACY_TABLE = "vaadin.component.legacy_table";
/**
* Defines that {@link #createTree()} should create an {@link ITree}
* containing the old Vaadin Tree instead of the new TreeGrid. The value of
* the property is expected to be either {@link Boolean#FALSE} or
* {@link Boolean#TRUE}.
*/
public static final String PROPERTY_COMPONENT_LEGACY_TREE = "vaadin.component.legacy_tree";
/**
* Defines that {@link #createChart()} should create an {@link IChart}
* using chart.js implementation instead of the commercial Vaadin Charts. The value of
* the property is expected to be either {@link Boolean#FALSE} or
* {@link Boolean#TRUE}.
*/
public static final String PROPERTY_COMPONENT_CHARTJS = "vaadin.component.chartjs";
/**
* Defines that the client-side layouts should be used, that means that
* {@link #createBorderLayout()}, {@link #createFlowLayout()},
* {@link #createGridLayout(int, int)} and {@link #createFormLayout()} are returning
* client-side layouts. The value of the property is expected to be either
* {@link Boolean#FALSE} or {@link Boolean#TRUE}.
*/
public static final String PROPERTY_COMPONENT_CLIENT_LAYOUTS = "vaadin.component.client_layouts";
/**
* Defines whether the autocomplete attribute for input elements should be set.
*/
public static final String PROPERTY_BROWSER_AUTOCOMPLETE = "vaadin.browser.autocomplete";
/**
* Defines that {@linkplain #createMap()} should create an {@linkplain IMap}
* containing a google map instead of a open street map. The value of the
* property is expected to be either {@linkplain Boolean#FALSE}
* or {@linkplain Boolean#TRUE}.
*/
public static final String PROPERTY_COMPONENT_MAP_GOOGLE = "vaadin.component.map.google";
/** The Key needed to access the Google API in order to have a functioning google map. */
public static final String PROPERTY_COMPONENT_MAP_GOOGLE_KEY = "vaadin.component.map.google.key";
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class members
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/** the invoke later queue, per Thread. */
private WeakHashMap