blob: 830481e7bfae997737505830c1d4eee7bbed9455 [file] [log] [blame]
/*
* Copyright (c) 2014-2020 BSI Business Systems Integration AG.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* BSI Business Systems Integration AG - initial API and implementation
*/
package org.eclipse.scout.rt.ui.html;
import java.text.DecimalFormat;
import java.util.Date;
import org.eclipse.scout.rt.client.IClientSession;
import org.eclipse.scout.rt.client.ui.accordion.IAccordion;
import org.eclipse.scout.rt.client.ui.action.keystroke.IKeyStroke;
import org.eclipse.scout.rt.client.ui.action.menu.IComboMenu;
import org.eclipse.scout.rt.client.ui.action.menu.IMenu;
import org.eclipse.scout.rt.client.ui.action.menu.form.fields.IFormFieldMenu;
import org.eclipse.scout.rt.client.ui.action.view.IViewButton;
import org.eclipse.scout.rt.client.ui.basic.calendar.CalendarComponent;
import org.eclipse.scout.rt.client.ui.basic.calendar.ICalendar;
import org.eclipse.scout.rt.client.ui.basic.filechooser.IFileChooser;
import org.eclipse.scout.rt.client.ui.basic.planner.IPlanner;
import org.eclipse.scout.rt.client.ui.basic.table.ITable;
import org.eclipse.scout.rt.client.ui.basic.table.ITableRowTileMapping;
import org.eclipse.scout.rt.client.ui.basic.table.ITableTileGridMediator;
import org.eclipse.scout.rt.client.ui.basic.table.columns.IAlphanumericSortingStringColumn;
import org.eclipse.scout.rt.client.ui.basic.table.columns.IBeanColumn;
import org.eclipse.scout.rt.client.ui.basic.table.columns.IBooleanColumn;
import org.eclipse.scout.rt.client.ui.basic.table.columns.IColumn;
import org.eclipse.scout.rt.client.ui.basic.table.columns.IDateColumn;
import org.eclipse.scout.rt.client.ui.basic.table.columns.IIconColumn;
import org.eclipse.scout.rt.client.ui.basic.table.columns.INumberColumn;
import org.eclipse.scout.rt.client.ui.basic.table.columns.IStringColumn;
import org.eclipse.scout.rt.client.ui.basic.table.controls.IAggregateTableControl;
import org.eclipse.scout.rt.client.ui.basic.table.controls.IFormTableControl;
import org.eclipse.scout.rt.client.ui.basic.table.controls.ITableControl;
import org.eclipse.scout.rt.client.ui.basic.table.userfilter.ColumnUserFilterState;
import org.eclipse.scout.rt.client.ui.basic.table.userfilter.DateColumnUserFilterState;
import org.eclipse.scout.rt.client.ui.basic.table.userfilter.NumberColumnUserFilterState;
import org.eclipse.scout.rt.client.ui.basic.table.userfilter.TableTextUserFilterState;
import org.eclipse.scout.rt.client.ui.basic.table.userfilter.TextColumnUserFilterState;
import org.eclipse.scout.rt.client.ui.basic.tree.ITree;
import org.eclipse.scout.rt.client.ui.desktop.IDesktop;
import org.eclipse.scout.rt.client.ui.desktop.notification.IDesktopNotification;
import org.eclipse.scout.rt.client.ui.desktop.outline.IOutline;
import org.eclipse.scout.rt.client.ui.desktop.outline.IOutlineTileField;
import org.eclipse.scout.rt.client.ui.desktop.outline.IOutlineViewButton;
import org.eclipse.scout.rt.client.ui.desktop.outline.ISearchOutline;
import org.eclipse.scout.rt.client.ui.desktop.outline.pages.IPage;
import org.eclipse.scout.rt.client.ui.desktop.outline.pages.ISearchForm;
import org.eclipse.scout.rt.client.ui.form.IForm;
import org.eclipse.scout.rt.client.ui.form.IFormMenu;
import org.eclipse.scout.rt.client.ui.form.ITileOverviewForm;
import org.eclipse.scout.rt.client.ui.form.fields.IStatusMenuMapping;
import org.eclipse.scout.rt.client.ui.form.fields.ParsingFailedStatus;
import org.eclipse.scout.rt.client.ui.form.fields.ValidationFailedStatus;
import org.eclipse.scout.rt.client.ui.form.fields.accordionfield.IAccordionField;
import org.eclipse.scout.rt.client.ui.form.fields.beanfield.IBeanField;
import org.eclipse.scout.rt.client.ui.form.fields.booleanfield.IBooleanField;
import org.eclipse.scout.rt.client.ui.form.fields.browserfield.IBrowserField;
import org.eclipse.scout.rt.client.ui.form.fields.button.IButton;
import org.eclipse.scout.rt.client.ui.form.fields.button.IRadioButton;
import org.eclipse.scout.rt.client.ui.form.fields.calendarfield.ICalendarField;
import org.eclipse.scout.rt.client.ui.form.fields.clipboardfield.IClipboardField;
import org.eclipse.scout.rt.client.ui.form.fields.colorfield.IColorField;
import org.eclipse.scout.rt.client.ui.form.fields.composer.IComposerField;
import org.eclipse.scout.rt.client.ui.form.fields.datefield.IDateField;
import org.eclipse.scout.rt.client.ui.form.fields.filechooserbutton.IFileChooserButton;
import org.eclipse.scout.rt.client.ui.form.fields.filechooserfield.IFileChooserField;
import org.eclipse.scout.rt.client.ui.form.fields.groupbox.IGroupBox;
import org.eclipse.scout.rt.client.ui.form.fields.htmlfield.IHtmlField;
import org.eclipse.scout.rt.client.ui.form.fields.imagefield.IImageField;
import org.eclipse.scout.rt.client.ui.form.fields.labelfield.ILabelField;
import org.eclipse.scout.rt.client.ui.form.fields.listbox.IListBox;
import org.eclipse.scout.rt.client.ui.form.fields.mode.IMode;
import org.eclipse.scout.rt.client.ui.form.fields.modeselector.IModeSelectorField;
import org.eclipse.scout.rt.client.ui.form.fields.numberfield.INumberField;
import org.eclipse.scout.rt.client.ui.form.fields.placeholder.IPlaceholderField;
import org.eclipse.scout.rt.client.ui.form.fields.plannerfield.IPlannerField;
import org.eclipse.scout.rt.client.ui.form.fields.radiobuttongroup.IRadioButtonGroup;
import org.eclipse.scout.rt.client.ui.form.fields.sequencebox.ISequenceBox;
import org.eclipse.scout.rt.client.ui.form.fields.smartfield.IProposalField;
import org.eclipse.scout.rt.client.ui.form.fields.smartfield.ISmartField;
import org.eclipse.scout.rt.client.ui.form.fields.splitbox.ISplitBox;
import org.eclipse.scout.rt.client.ui.form.fields.stringfield.IStringField;
import org.eclipse.scout.rt.client.ui.form.fields.tabbox.ITabBox;
import org.eclipse.scout.rt.client.ui.form.fields.tablefield.ITableField;
import org.eclipse.scout.rt.client.ui.form.fields.tagfield.ITagField;
import org.eclipse.scout.rt.client.ui.form.fields.tilefield.ITileField;
import org.eclipse.scout.rt.client.ui.form.fields.treebox.ITreeBox;
import org.eclipse.scout.rt.client.ui.form.fields.treefield.ITreeField;
import org.eclipse.scout.rt.client.ui.form.fields.wizard.IWizardProgressField;
import org.eclipse.scout.rt.client.ui.form.fields.wrappedform.IWrappedFormField;
import org.eclipse.scout.rt.client.ui.group.IGroup;
import org.eclipse.scout.rt.client.ui.label.ILabel;
import org.eclipse.scout.rt.client.ui.messagebox.IMessageBox;
import org.eclipse.scout.rt.client.ui.notification.INotification;
import org.eclipse.scout.rt.client.ui.popup.IPopup;
import org.eclipse.scout.rt.client.ui.popup.IWidgetPopup;
import org.eclipse.scout.rt.client.ui.popup.PopupManager;
import org.eclipse.scout.rt.client.ui.tile.IBeanTile;
import org.eclipse.scout.rt.client.ui.tile.IFormFieldTile;
import org.eclipse.scout.rt.client.ui.tile.IHtmlTile;
import org.eclipse.scout.rt.client.ui.tile.ITile;
import org.eclipse.scout.rt.client.ui.tile.ITileAccordion;
import org.eclipse.scout.rt.client.ui.tile.ITileGrid;
import org.eclipse.scout.rt.client.ui.tile.IWidgetTile;
import org.eclipse.scout.rt.platform.Bean;
import org.eclipse.scout.rt.platform.Order;
import org.eclipse.scout.rt.platform.status.IStatus;
import org.eclipse.scout.rt.ui.html.json.AbstractJsonObjectFactory;
import org.eclipse.scout.rt.ui.html.json.IJsonAdapter;
import org.eclipse.scout.rt.ui.html.json.IJsonObject;
import org.eclipse.scout.rt.ui.html.json.JsonByteArray;
import org.eclipse.scout.rt.ui.html.json.JsonClientSession;
import org.eclipse.scout.rt.ui.html.json.JsonDate;
import org.eclipse.scout.rt.ui.html.json.JsonDecimalFormat;
import org.eclipse.scout.rt.ui.html.json.JsonParsingFailedStatus;
import org.eclipse.scout.rt.ui.html.json.JsonStatus;
import org.eclipse.scout.rt.ui.html.json.JsonValidationFailedStatus;
import org.eclipse.scout.rt.ui.html.json.accordion.JsonAccordion;
import org.eclipse.scout.rt.ui.html.json.action.keystroke.JsonKeyStroke;
import org.eclipse.scout.rt.ui.html.json.basic.filechooser.JsonFileChooser;
import org.eclipse.scout.rt.ui.html.json.basic.planner.JsonPlanner;
import org.eclipse.scout.rt.ui.html.json.calendar.JsonCalendar;
import org.eclipse.scout.rt.ui.html.json.calendar.JsonCalendarComponent;
import org.eclipse.scout.rt.ui.html.json.desktop.JsonDesktop;
import org.eclipse.scout.rt.ui.html.json.desktop.JsonDesktopNotification;
import org.eclipse.scout.rt.ui.html.json.desktop.JsonFormMenu;
import org.eclipse.scout.rt.ui.html.json.desktop.JsonOutline;
import org.eclipse.scout.rt.ui.html.json.desktop.JsonOutlineTileField;
import org.eclipse.scout.rt.ui.html.json.desktop.JsonOutlineViewButton;
import org.eclipse.scout.rt.ui.html.json.desktop.JsonSearchForm;
import org.eclipse.scout.rt.ui.html.json.desktop.JsonSearchOutline;
import org.eclipse.scout.rt.ui.html.json.desktop.JsonViewButton;
import org.eclipse.scout.rt.ui.html.json.form.JsonForm;
import org.eclipse.scout.rt.ui.html.json.form.JsonTileOverviewForm;
import org.eclipse.scout.rt.ui.html.json.form.fields.JsonDateField;
import org.eclipse.scout.rt.ui.html.json.form.fields.JsonStatusMenuMapping;
import org.eclipse.scout.rt.ui.html.json.form.fields.accordionfield.JsonAccordionField;
import org.eclipse.scout.rt.ui.html.json.form.fields.beanfield.JsonBeanField;
import org.eclipse.scout.rt.ui.html.json.form.fields.browserfield.JsonBrowserField;
import org.eclipse.scout.rt.ui.html.json.form.fields.button.JsonButton;
import org.eclipse.scout.rt.ui.html.json.form.fields.calendar.JsonCalendarField;
import org.eclipse.scout.rt.ui.html.json.form.fields.checkbox.JsonCheckBoxField;
import org.eclipse.scout.rt.ui.html.json.form.fields.clipboardfield.JsonClipboardField;
import org.eclipse.scout.rt.ui.html.json.form.fields.colorfield.JsonColorField;
import org.eclipse.scout.rt.ui.html.json.form.fields.composer.JsonComposerField;
import org.eclipse.scout.rt.ui.html.json.form.fields.filechooserbutton.JsonFileChooserButton;
import org.eclipse.scout.rt.ui.html.json.form.fields.filechooserfield.JsonFileChooserField;
import org.eclipse.scout.rt.ui.html.json.form.fields.groupbox.JsonGroupBox;
import org.eclipse.scout.rt.ui.html.json.form.fields.htmlfield.JsonHtmlField;
import org.eclipse.scout.rt.ui.html.json.form.fields.imagefield.JsonImageField;
import org.eclipse.scout.rt.ui.html.json.form.fields.labelfield.JsonLabelField;
import org.eclipse.scout.rt.ui.html.json.form.fields.listbox.JsonListBox;
import org.eclipse.scout.rt.ui.html.json.form.fields.mode.JsonMode;
import org.eclipse.scout.rt.ui.html.json.form.fields.modeselector.JsonModeSelectorField;
import org.eclipse.scout.rt.ui.html.json.form.fields.numberfield.JsonNumberField;
import org.eclipse.scout.rt.ui.html.json.form.fields.placeholder.JsonPlaceholderField;
import org.eclipse.scout.rt.ui.html.json.form.fields.plannerfield.JsonPlannerField;
import org.eclipse.scout.rt.ui.html.json.form.fields.radiobutton.JsonRadioButton;
import org.eclipse.scout.rt.ui.html.json.form.fields.radiobutton.JsonRadioButtonGroup;
import org.eclipse.scout.rt.ui.html.json.form.fields.sequencebox.JsonSequenceBox;
import org.eclipse.scout.rt.ui.html.json.form.fields.smartfield.JsonProposalField;
import org.eclipse.scout.rt.ui.html.json.form.fields.smartfield.JsonSmartField;
import org.eclipse.scout.rt.ui.html.json.form.fields.splitbox.JsonSplitBox;
import org.eclipse.scout.rt.ui.html.json.form.fields.stringfield.JsonStringField;
import org.eclipse.scout.rt.ui.html.json.form.fields.tabbox.JsonTabBox;
import org.eclipse.scout.rt.ui.html.json.form.fields.tabbox.JsonTabItem;
import org.eclipse.scout.rt.ui.html.json.form.fields.tablefield.JsonTableField;
import org.eclipse.scout.rt.ui.html.json.form.fields.tagfield.JsonTagField;
import org.eclipse.scout.rt.ui.html.json.form.fields.tilefield.JsonTileField;
import org.eclipse.scout.rt.ui.html.json.form.fields.treebox.JsonTreeBox;
import org.eclipse.scout.rt.ui.html.json.form.fields.treefield.JsonTreeField;
import org.eclipse.scout.rt.ui.html.json.form.fields.wizard.JsonWizardProgressField;
import org.eclipse.scout.rt.ui.html.json.form.fields.wrappedform.JsonWrappedFormField;
import org.eclipse.scout.rt.ui.html.json.group.JsonGroup;
import org.eclipse.scout.rt.ui.html.json.label.JsonLabel;
import org.eclipse.scout.rt.ui.html.json.menu.JsonComboMenu;
import org.eclipse.scout.rt.ui.html.json.menu.JsonMenu;
import org.eclipse.scout.rt.ui.html.json.menu.form.field.JsonFormFieldMenu;
import org.eclipse.scout.rt.ui.html.json.messagebox.JsonMessageBox;
import org.eclipse.scout.rt.ui.html.json.notification.JsonNotification;
import org.eclipse.scout.rt.ui.html.json.popup.JsonPopup;
import org.eclipse.scout.rt.ui.html.json.popup.JsonPopupManager;
import org.eclipse.scout.rt.ui.html.json.popup.JsonWidgetPopup;
import org.eclipse.scout.rt.ui.html.json.table.JsonAlphanumericSortingStringColumn;
import org.eclipse.scout.rt.ui.html.json.table.JsonBeanColumn;
import org.eclipse.scout.rt.ui.html.json.table.JsonBooleanColumn;
import org.eclipse.scout.rt.ui.html.json.table.JsonColumn;
import org.eclipse.scout.rt.ui.html.json.table.JsonDateColumn;
import org.eclipse.scout.rt.ui.html.json.table.JsonIconColumn;
import org.eclipse.scout.rt.ui.html.json.table.JsonNumberColumn;
import org.eclipse.scout.rt.ui.html.json.table.JsonOutlineTable;
import org.eclipse.scout.rt.ui.html.json.table.JsonStringColumn;
import org.eclipse.scout.rt.ui.html.json.table.JsonTable;
import org.eclipse.scout.rt.ui.html.json.table.JsonTableRowTileMapping;
import org.eclipse.scout.rt.ui.html.json.table.JsonTableTileGridMediator;
import org.eclipse.scout.rt.ui.html.json.table.control.JsonAggregateTableControl;
import org.eclipse.scout.rt.ui.html.json.table.control.JsonFormTableControl;
import org.eclipse.scout.rt.ui.html.json.table.control.JsonTableControl;
import org.eclipse.scout.rt.ui.html.json.table.userfilter.JsonColumnUserFilter;
import org.eclipse.scout.rt.ui.html.json.table.userfilter.JsonDateColumnUserFilter;
import org.eclipse.scout.rt.ui.html.json.table.userfilter.JsonNumberColumnUserFilter;
import org.eclipse.scout.rt.ui.html.json.table.userfilter.JsonTableTextUserFilter;
import org.eclipse.scout.rt.ui.html.json.table.userfilter.JsonTextColumnUserFilter;
import org.eclipse.scout.rt.ui.html.json.tile.JsonBeanTile;
import org.eclipse.scout.rt.ui.html.json.tile.JsonFormFieldTile;
import org.eclipse.scout.rt.ui.html.json.tile.JsonHtmlTile;
import org.eclipse.scout.rt.ui.html.json.tile.JsonTile;
import org.eclipse.scout.rt.ui.html.json.tile.JsonTileAccordion;
import org.eclipse.scout.rt.ui.html.json.tile.JsonTileGrid;
import org.eclipse.scout.rt.ui.html.json.tile.JsonWidgetTile;
import org.eclipse.scout.rt.ui.html.json.tree.JsonTree;
@Bean
@Order(5500)
public class JsonObjectFactory extends AbstractJsonObjectFactory {
@SuppressWarnings({"unchecked", "squid:S138"})
@Override
public IJsonAdapter<?> createJsonAdapter(Object model, IUiSession session, String id, IJsonAdapter<?> parent) {
// --- form fields ----
if (model instanceof IGroupBox) {
// we must distinct between normal group-boxes and group-boxes in tab-boxes
// the use the same model, but we need different adapters
IGroupBox groupBox = (IGroupBox) model;
if (groupBox.getParentField() instanceof ITabBox) {
return new JsonTabItem<>(groupBox, session, id, parent);
}
else {
return new JsonGroupBox<>(groupBox, session, id, parent);
}
}
if (model instanceof ISequenceBox) {
return new JsonSequenceBox<>((ISequenceBox) model, session, id, parent);
}
if (model instanceof ITabBox) {
return new JsonTabBox<>((ITabBox) model, session, id, parent);
}
if (model instanceof IBooleanField) {
return new JsonCheckBoxField<>((IBooleanField) model, session, id, parent);
}
if (model instanceof ILabelField) {
return new JsonLabelField<>((ILabelField) model, session, id, parent);
}
if (model instanceof IImageField) {
return new JsonImageField<>((IImageField) model, session, id, parent);
}
if (model instanceof ITableField<?>) {
return new JsonTableField<ITableField<? extends ITable>>((ITableField<?>) model, session, id, parent);
}
if (model instanceof IListBox<?>) {
return new JsonListBox((IListBox<?>) model, session, id, parent);
}
if (model instanceof ITreeField) {
return new JsonTreeField<>((ITreeField) model, session, id, parent);
}
if (model instanceof ITreeBox<?>) {
return new JsonTreeBox<ITreeBox<?>>((ITreeBox<?>) model, session, id, parent);
}
if (model instanceof IRadioButton<?>) {
return new JsonRadioButton<IRadioButton<?>>((IRadioButton<?>) model, session, id, parent);
}
if (model instanceof IRadioButtonGroup<?>) {
return new JsonRadioButtonGroup<IRadioButtonGroup<?>>((IRadioButtonGroup<?>) model, session, id, parent);
}
if (model instanceof IButton) {
return new JsonButton<>((IButton) model, session, id, parent);
}
if (model instanceof IStringField) {
return new JsonStringField<>((IStringField) model, session, id, parent);
}
if (model instanceof INumberField<?>) {
return new JsonNumberField<INumberField<?>>((INumberField<?>) model, session, id, parent);
}
if (model instanceof IProposalField<?>) {
return new JsonProposalField((IProposalField<?>) model, session, id, parent);
}
if (model instanceof ISmartField<?>) {
return new JsonSmartField((ISmartField<?>) model, session, id, parent);
}
if (model instanceof IDateField) {
return new JsonDateField<>((IDateField) model, session, id, parent);
}
if (model instanceof ICalendarField<?>) {
return new JsonCalendarField<ICalendarField<? extends ICalendar>>((ICalendarField<?>) model, session, id, parent);
}
if (model instanceof IPlannerField<?>) {
return new JsonPlannerField((IPlannerField<?>) model, session, id, parent);
}
if (model instanceof IWrappedFormField<?>) {
return new JsonWrappedFormField<IWrappedFormField<? extends IForm>>((IWrappedFormField<?>) model, session, id, parent);
}
if (model instanceof ISplitBox) {
return new JsonSplitBox<>((ISplitBox) model, session, id, parent);
}
if (model instanceof IPlaceholderField) {
return new JsonPlaceholderField<>((IPlaceholderField) model, session, id, parent);
}
if (model instanceof IWizardProgressField) {
return new JsonWizardProgressField<>((IWizardProgressField) model, session, id, parent);
}
if (model instanceof IHtmlField) {
return new JsonHtmlField<>((IHtmlField) model, session, id, parent);
}
if (model instanceof IComposerField) {
return new JsonComposerField<>((IComposerField) model, session, id, parent);
}
if (model instanceof IBeanField) {
return new JsonBeanField<IBeanField<?>>((IBeanField<?>) model, session, id, parent);
}
if (model instanceof IFileChooserButton) {
return new JsonFileChooserButton<>((IFileChooserButton) model, session, id, parent);
}
if (model instanceof IFileChooserField) {
return new JsonFileChooserField<>((IFileChooserField) model, session, id, parent);
}
if (model instanceof IColorField) {
return new JsonColorField<>((IColorField) model, session, id, parent);
}
if (model instanceof IBrowserField) {
return new JsonBrowserField<>((IBrowserField) model, session, id, parent);
}
if (model instanceof IClipboardField) {
return new JsonClipboardField<>((IClipboardField) model, session, id, parent);
}
if (model instanceof ITileField<?>) {
return new JsonTileField((ITileField<?>) model, session, id, parent);
}
if (model instanceof IAccordionField<?>) {
return new JsonAccordionField<IAccordionField<? extends IAccordion>>((IAccordionField<?>) model, session, id, parent);
}
if (model instanceof ITagField) {
return new JsonTagField((ITagField) model, session, id, parent);
}
if (model instanceof IModeSelectorField<?>) {
return new JsonModeSelectorField<IModeSelectorField<?>>((IModeSelectorField<?>) model, session, id, parent);
}
// --- other model objects ---
if (model instanceof IDesktop) {
return new JsonDesktop<>((IDesktop) model, session, id, parent);
}
if (model instanceof IFormMenu<?>) {
return new JsonFormMenu((IFormMenu<?>) model, session, id, parent);
}
if (model instanceof IFormFieldMenu) {
return new JsonFormFieldMenu<>((IFormFieldMenu) model, session, id, parent);
}
if (model instanceof IComboMenu) {
return new JsonComboMenu<>((IComboMenu) model, session, id, parent);
}
if (model instanceof IMenu) {
return new JsonMenu<>((IMenu) model, session, id, parent);
}
if (model instanceof IKeyStroke) {
return new JsonKeyStroke<>((IKeyStroke) model, session, id, parent);
}
if (model instanceof ISearchForm) {
return new JsonSearchForm<>((ISearchForm) model, session, id, parent);
}
if (model instanceof ITileOverviewForm) {
return new JsonTileOverviewForm((ITileOverviewForm) model, session, id, parent);
}
if (model instanceof IForm) {
return new JsonForm<>((IForm) model, session, id, parent);
}
if (model instanceof IMessageBox) {
return new JsonMessageBox<>((IMessageBox) model, session, id, parent);
}
if (model instanceof IDesktopNotification) {
return new JsonDesktopNotification<>((IDesktopNotification) model, session, id, parent);
}
if (model instanceof INotification) {
return new JsonNotification<>((INotification) model, session, id, parent);
}
if (model instanceof IOutlineViewButton) {
return new JsonOutlineViewButton<>((IOutlineViewButton) model, session, id, parent);
}
if (model instanceof IOutlineTileField) {
return new JsonOutlineTileField((IOutlineTileField) model, session, id, parent);
}
if (model instanceof IViewButton) {
return new JsonViewButton<>((IViewButton) model, session, id, parent);
}
if (model instanceof ISearchOutline) {
return new JsonSearchOutline<>((ISearchOutline) model, session, id, parent);
}
if (model instanceof IOutline) {
return new JsonOutline<>((IOutline) model, session, id, parent);
}
if (model instanceof ITree) {
return new JsonTree<>((ITree) model, session, id, parent);
}
if (model instanceof ITable) {
ITable table = (ITable) model;
IPage<?> page = (IPage<?>) table.getProperty(JsonOutlineTable.PROP_PAGE);
if (page != null) {
return new JsonOutlineTable<>(table, session, id, parent, page);
}
return new JsonTable<>(table, session, id, parent);
}
if (model instanceof ITableRowTileMapping) {
return new JsonTableRowTileMapping<>((ITableRowTileMapping) model, session, id, parent);
}
if (model instanceof ITableTileGridMediator) {
return new JsonTableTileGridMediator<>((ITableTileGridMediator) model, session, id, parent);
}
if (model instanceof IClientSession) {
return new JsonClientSession<>((IClientSession) model, session, id, parent);
}
if (model instanceof ICalendar) {
return new JsonCalendar<>((ICalendar) model, session, id, parent);
}
if (model instanceof CalendarComponent) {
return new JsonCalendarComponent<>((CalendarComponent) model, session, id, parent);
}
if (model instanceof IPlanner<?, ?>) {
return new JsonPlanner<IPlanner<?, ?>>((IPlanner<?, ?>) model, session, id, parent);
}
if (model instanceof IFileChooser) {
return new JsonFileChooser<>((IFileChooser) model, session, id, parent);
}
if (model instanceof IAggregateTableControl) { // needs to be before ITableControl
return new JsonAggregateTableControl<>((IAggregateTableControl) model, session, id, parent);
}
if (model instanceof IFormTableControl) { // needs to be before ITableControl
return new JsonFormTableControl<>((IFormTableControl) model, session, id, parent);
}
if (model instanceof ITableControl) {
return new JsonTableControl<>((ITableControl) model, session, id, parent);
}
if (model instanceof IHtmlTile) {
return new JsonHtmlTile<>((IHtmlTile) model, session, id, parent);
}
if (model instanceof IBeanTile) {
return new JsonBeanTile<>((IBeanTile<?>) model, session, id, parent);
}
if (model instanceof IFormFieldTile) {
return new JsonFormFieldTile<>((IFormFieldTile<?>) model, session, id, parent);
}
if (model instanceof IWidgetTile) {
return new JsonWidgetTile<>((IWidgetTile<?>) model, session, id, parent);
}
if (model instanceof ITile) {
return new JsonTile<>((ITile) model, session, id, parent);
}
if (model instanceof ITileGrid) {
return new JsonTileGrid<>((ITileGrid<?>) model, session, id, parent);
}
if (model instanceof ITileAccordion) {
return new JsonTileAccordion<>((ITileAccordion<?>) model, session, id, parent);
}
if (model instanceof IGroup) {
return new JsonGroup<>((IGroup) model, session, id, parent);
}
if (model instanceof IAccordion) {
return new JsonAccordion<>((IAccordion) model, session, id, parent);
}
if (model instanceof IStatusMenuMapping) {
return new JsonStatusMenuMapping<>((IStatusMenuMapping) model, session, id, parent);
}
if (model instanceof ILabel) {
return new JsonLabel<>((ILabel) model, session, id, parent);
}
if (model instanceof IMode<?>) {
return new JsonMode<IMode<?>>((IMode<?>) model, session, id, parent);
}
if (model instanceof PopupManager) {
return new JsonPopupManager<>((PopupManager) model, session, id, parent);
}
if (model instanceof IWidgetPopup<?>) {
return new JsonWidgetPopup<IWidgetPopup<?>>((IWidgetPopup<?>) model, session, id, parent);
}
if (model instanceof IPopup) {
return new JsonPopup((IPopup) model, session, id, parent);
}
return null;
}
@SuppressWarnings("unchecked")
@Override
public IJsonObject createJsonObject(Object object) {
if (object instanceof Date) {
return new JsonDate((Date) object);
}
if (object instanceof byte[]) {
return new JsonByteArray((byte[]) object);
}
if (object instanceof ParsingFailedStatus) {
return new JsonParsingFailedStatus((ParsingFailedStatus) object);
}
if (object instanceof ValidationFailedStatus) {
return new JsonValidationFailedStatus((ValidationFailedStatus) object);
}
if (object instanceof IStatus) {
return new JsonStatus((IStatus) object);
}
if (object instanceof INumberColumn<?>) {
return new JsonNumberColumn((INumberColumn<?>) object);
}
if (object instanceof IDateColumn) {
return new JsonDateColumn((IDateColumn) object);
}
if (object instanceof IBooleanColumn) {
return new JsonBooleanColumn((IBooleanColumn) object);
}
if (object instanceof IAlphanumericSortingStringColumn) { // needs to be before IStringColumn
return new JsonAlphanumericSortingStringColumn((IAlphanumericSortingStringColumn) object);
}
if (object instanceof IStringColumn) {
return new JsonStringColumn((IStringColumn) object);
}
if (object instanceof IBeanColumn<?>) {
return new JsonBeanColumn((IColumn<?>) object);
}
if (object instanceof IIconColumn) {
return new JsonIconColumn((IIconColumn) object);
}
if (object instanceof IColumn<?>) {
return new JsonColumn((IColumn<?>) object);
}
if (object instanceof DateColumnUserFilterState) { // needs to be before ColumnUserFilterState
return new JsonDateColumnUserFilter((DateColumnUserFilterState) object);
}
if (object instanceof NumberColumnUserFilterState) { // needs to be before ColumnUserFilterState
return new JsonNumberColumnUserFilter((NumberColumnUserFilterState) object);
}
if (object instanceof TextColumnUserFilterState) { // needs to be before ColumnUserFilterState
return new JsonTextColumnUserFilter((TextColumnUserFilterState) object);
}
if (object instanceof ColumnUserFilterState) {
return new JsonColumnUserFilter((ColumnUserFilterState) object);
}
if (object instanceof TableTextUserFilterState) {
return new JsonTableTextUserFilter((TableTextUserFilterState) object);
}
if (object instanceof DecimalFormat) {
return new JsonDecimalFormat((DecimalFormat) object);
}
return null;
}
}