/*
* Copyright 2008-2017 the original author or authors.
*
* 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 griffon.builder.pivot;
import griffon.builder.pivot.factory.AccordionFactory;
import griffon.builder.pivot.factory.AdapterFactory;
import griffon.builder.pivot.factory.ApplicationFactory;
import griffon.builder.pivot.factory.BeanFactory;
import griffon.builder.pivot.factory.BoundsFactory;
import griffon.builder.pivot.factory.BoxPaneFactory;
import griffon.builder.pivot.factory.ButtonDataFactory;
import griffon.builder.pivot.factory.ButtonDataRendererFactory;
import griffon.builder.pivot.factory.ButtonFactory;
import griffon.builder.pivot.factory.ButtonGroupFactory;
import griffon.builder.pivot.factory.BxmlFactory;
import griffon.builder.pivot.factory.CalendarDateSpinnerDataFactory;
import griffon.builder.pivot.factory.ComponentFactory;
import griffon.builder.pivot.factory.ContainerFactory;
import griffon.builder.pivot.factory.FileBrowserSheetFactory;
import griffon.builder.pivot.factory.FormFlagFactory;
import griffon.builder.pivot.factory.FormSectionFactory;
import griffon.builder.pivot.factory.GridPaneFactory;
import griffon.builder.pivot.factory.GridPaneRowFactory;
import griffon.builder.pivot.factory.ImageViewFactory;
import griffon.builder.pivot.factory.InsetsFactory;
import griffon.builder.pivot.factory.JavaCollectionFactory;
import griffon.builder.pivot.factory.MenuBarFactory;
import griffon.builder.pivot.factory.MenuBarItemFactory;
import griffon.builder.pivot.factory.MenuFactory;
import griffon.builder.pivot.factory.MenuItemFactory;
import griffon.builder.pivot.factory.NumericSpinnerDataFactory;
import griffon.builder.pivot.factory.PairFactory;
import griffon.builder.pivot.factory.PictureFactory;
import griffon.builder.pivot.factory.PivotBeanFactory;
import griffon.builder.pivot.factory.RollupFactory;
import griffon.builder.pivot.factory.ScrollBarScopeFactory;
import griffon.builder.pivot.factory.ScrollPaneFactory;
import griffon.builder.pivot.factory.SingleElementContainerFactory;
import griffon.builder.pivot.factory.SliderFactory;
import griffon.builder.pivot.factory.SplitPaneFactory;
import griffon.builder.pivot.factory.TabPaneFactory;
import griffon.builder.pivot.factory.TablePaneColumnFactory;
import griffon.builder.pivot.factory.TablePaneFactory;
import griffon.builder.pivot.factory.TablePaneRowFactory;
import griffon.builder.pivot.factory.TextComponentFactory;
import griffon.builder.pivot.factory.ViewportFactory;
import griffon.builder.pivot.factory.WidgetFactory;
import griffon.exceptions.PropertyException;
import griffon.inject.DependsOn;
import griffon.pivot.support.PivotAction;
import griffon.pivot.support.adapters.*;
import groovy.lang.Closure;
import groovy.util.Factory;
import groovy.util.FactoryBuilderSupport;
import org.apache.pivot.wtk.ActivityIndicator;
import org.apache.pivot.wtk.Border;
import org.apache.pivot.wtk.BoxPane;
import org.apache.pivot.wtk.Calendar;
import org.apache.pivot.wtk.CalendarButton;
import org.apache.pivot.wtk.CardPane;
import org.apache.pivot.wtk.Checkbox;
import org.apache.pivot.wtk.ColorChooser;
import org.apache.pivot.wtk.ColorChooserButton;
import org.apache.pivot.wtk.Component;
import org.apache.pivot.wtk.Container;
import org.apache.pivot.wtk.Dialog;
import org.apache.pivot.wtk.Dimensions;
import org.apache.pivot.wtk.Expander;
import org.apache.pivot.wtk.FileBrowser;
import org.apache.pivot.wtk.FlowPane;
import org.apache.pivot.wtk.Form;
import org.apache.pivot.wtk.Frame;
import org.apache.pivot.wtk.GridPane;
import org.apache.pivot.wtk.Label;
import org.apache.pivot.wtk.LinkButton;
import org.apache.pivot.wtk.ListButton;
import org.apache.pivot.wtk.ListView;
import org.apache.pivot.wtk.MenuButton;
import org.apache.pivot.wtk.MenuPopup;
import org.apache.pivot.wtk.Meter;
import org.apache.pivot.wtk.Orientation;
import org.apache.pivot.wtk.Palette;
import org.apache.pivot.wtk.Panel;
import org.apache.pivot.wtk.Panorama;
import org.apache.pivot.wtk.Point;
import org.apache.pivot.wtk.PushButton;
import org.apache.pivot.wtk.RadioButton;
import org.apache.pivot.wtk.ScrollBar;
import org.apache.pivot.wtk.Separator;
import org.apache.pivot.wtk.Sheet;
import org.apache.pivot.wtk.Span;
import org.apache.pivot.wtk.Spinner;
import org.apache.pivot.wtk.StackPane;
import org.apache.pivot.wtk.TablePane;
import org.apache.pivot.wtk.TextArea;
import org.apache.pivot.wtk.TextInput;
import org.apache.pivot.wtk.Tooltip;
import org.apache.pivot.wtk.Visual;
import org.apache.pivot.wtk.Window;
import org.apache.pivot.wtk.content.ButtonDataRenderer;
import org.apache.pivot.wtk.content.CalendarButtonDataRenderer;
import org.apache.pivot.wtk.content.LinkButtonDataRenderer;
import org.apache.pivot.wtk.content.ListButtonColorItemRenderer;
import org.apache.pivot.wtk.content.ListButtonDataRenderer;
import org.apache.pivot.wtk.content.MenuBarItemDataRenderer;
import org.apache.pivot.wtk.content.MenuButtonDataRenderer;
import org.apache.pivot.wtk.content.MenuItemDataRenderer;
import org.apache.pivot.wtk.effects.BaselineDecorator;
import org.apache.pivot.wtk.effects.BlurDecorator;
import org.apache.pivot.wtk.effects.ClipDecorator;
import org.apache.pivot.wtk.effects.DropShadowDecorator;
import org.apache.pivot.wtk.effects.FadeDecorator;
import org.apache.pivot.wtk.effects.GrayscaleDecorator;
import org.apache.pivot.wtk.effects.OverlayDecorator;
import org.apache.pivot.wtk.effects.ReflectionDecorator;
import org.apache.pivot.wtk.effects.RotationDecorator;
import org.apache.pivot.wtk.effects.SaturationDecorator;
import org.apache.pivot.wtk.effects.ScaleDecorator;
import org.apache.pivot.wtk.effects.ShadeDecorator;
import org.apache.pivot.wtk.effects.TagDecorator;
import org.apache.pivot.wtk.effects.TranslationDecorator;
import org.apache.pivot.wtk.effects.WatermarkDecorator;
import org.apache.pivot.wtk.effects.easing.Circular;
import org.apache.pivot.wtk.effects.easing.Cubic;
import org.apache.pivot.wtk.effects.easing.Exponential;
import org.apache.pivot.wtk.effects.easing.Linear;
import org.apache.pivot.wtk.effects.easing.Quadratic;
import org.apache.pivot.wtk.effects.easing.Quartic;
import org.apache.pivot.wtk.effects.easing.Quintic;
import org.apache.pivot.wtk.effects.easing.Sine;
import org.apache.pivot.wtk.media.Image;
import org.codehaus.griffon.runtime.groovy.view.AbstractBuilderCustomizer;
import org.codehaus.groovy.runtime.MethodClosure;
import javax.inject.Named;
import java.util.LinkedHashMap;
import java.util.Map;
import static griffon.util.CollectionUtils.newList;
import static griffon.util.GriffonClassUtils.getPropertyValue;
import static griffon.util.GriffonClassUtils.setPropertyValue;
/**
* @author Andres Almiray
* @since 2.0.0
*/
@Named("pivot")
@DependsOn({"core"})
@SuppressWarnings("rawtypes")
public class PivotBuilderCustomizer extends AbstractBuilderCustomizer {
private final Map<String, Factory> factories = new LinkedHashMap<>();
@SuppressWarnings("unchecked")
public PivotBuilderCustomizer() {
// PivotUtils.enhanceClasses();
// -- griffon
registerFactory("application", new ApplicationFactory());
// -- support
registerPivotBeanFactory("action", PivotAction.class);
registerFactory("actions", new JavaCollectionFactory());
registerFactory("noparent", new JavaCollectionFactory());
registerFactory("bxml", new BxmlFactory());
registerFactory("buttonGroup", new ButtonGroupFactory());
registerFactory("dimensions", new PairFactory(Dimensions.class, "width", "height"));
registerFactory("point", new PairFactory(Point.class, "x", "y"));
registerFactory("span", new PairFactory(Span.class, "start", "end"));
registerFactory("insets", new InsetsFactory());
registerFactory("bounds", new BoundsFactory());
registerFactory("widget", new WidgetFactory(Component.class, false));
registerFactory("container", new WidgetFactory(Container.class, false));
registerFactory("bean", new WidgetFactory(Object.class, true));
// -- widgets
registerPivotComponentFactory("activityIndicator", ActivityIndicator.class);
registerPivotComponentFactory("fileBrowser", FileBrowser.class);
registerFactory("label", new TextComponentFactory(Label.class));
registerFactory("meter", new TextComponentFactory(Meter.class));
registerPivotComponentFactory("separator", Separator.class);
registerFactory("textArea", new TextComponentFactory(TextArea.class));
registerFactory("textInput", new TextComponentFactory(TextInput.class));
registerFactory("slider", new SliderFactory());
registerPivotComponentFactory("spinner", Spinner.class);
registerFactory("numericSpinnerData", new NumericSpinnerDataFactory());
registerFactory("calendarDateSpinnerData", new CalendarDateSpinnerDataFactory());
registerPivotComponentFactory("scrollBar", ScrollBar.class);
registerFactory("scrollBarScope", new ScrollBarScopeFactory());
// -- views
registerPivotComponentFactory("listView", ListView.class);
registerFactory("imageView", new ImageViewFactory());
// registerPivotComponentFactory("movieView", MovieView)
// registerPivotComponentFactory("tableView", TableView)
// registerPivotComponentFactory("tableViewHeader", TableViewHeader)
// registerPivotComponentFactory("treeView", TreeView)
// -- buttons
registerFactory("buttonData", new ButtonDataFactory());
registerFactory("calendarButton", new ButtonFactory(CalendarButton.class));
registerFactory("checkbox", new ButtonFactory(Checkbox.class));
registerFactory("colorChooserButton", new ButtonFactory(ColorChooserButton.class));
registerFactory("linkButton", new ButtonFactory(LinkButton.class));
registerFactory("listButton", new ButtonFactory(ListButton.class));
registerFactory("menuButton", new ButtonFactory(MenuButton.class));
Factory button = new ButtonFactory(PushButton.class);
registerFactory("button", button);
registerFactory("pushButton", button);
registerFactory("radioButton", new ButtonFactory(RadioButton.class));
registerFactory("buttonDataRenderer", new ButtonDataRendererFactory(ButtonDataRenderer.class));
registerFactory("calendarButtonDataRenderer", new ButtonDataRendererFactory(CalendarButtonDataRenderer.class));
registerFactory("linkButtonDataRenderer", new ButtonDataRendererFactory(LinkButtonDataRenderer.class));
registerFactory("listButtonColorItemRenderer", new ButtonDataRendererFactory(ListButtonColorItemRenderer.class));
registerFactory("listButtonDataRenderer", new ButtonDataRendererFactory(ListButtonDataRenderer.class));
registerFactory("menuButtonDataRenderer", new ButtonDataRendererFactory(MenuButtonDataRenderer.class));
registerFactory("buttonDataRenderer", new ButtonDataRendererFactory(ButtonDataRenderer.class));
// -- menus
registerFactory("menu", new MenuFactory());
registerFactory("menuItem", new MenuItemFactory());
registerFactory("menuBar", new MenuBarFactory());
registerFactory("menuBarItem", new MenuBarItemFactory());
registerPivotComponentFactory("menuPopup", MenuPopup.class);
registerFactory("menuBarItemDataRenderer", new ButtonDataRendererFactory(MenuBarItemDataRenderer.class));
registerFactory("menuItemDataRenderer", new ButtonDataRendererFactory(MenuItemDataRenderer.class));
// -- panes
Factory hbox = new BoxPaneFactory(Orientation.HORIZONTAL);
registerFactory("box", hbox);
registerFactory("hbox", hbox);
registerFactory("vbox", new BoxPaneFactory(Orientation.VERTICAL));
registerPivotContainerFactory("boxPane", BoxPane.class);
registerPivotContainerFactory("cardPane", CardPane.class);
registerPivotContainerFactory("flowPane", FlowPane.class);
registerFactory("gridPane", new GridPaneFactory());
registerFactory("gridRow", new GridPaneRowFactory());
registerPivotContainerFactory("gridFiller", GridPane.Filler.class);
registerFactory("scrollPane", new ScrollPaneFactory());
registerFactory("splitPane", new SplitPaneFactory());
registerPivotContainerFactory("stackPane", StackPane.class);
registerFactory("tabPane", new TabPaneFactory());
registerFactory("tablePane", new TablePaneFactory());
registerFactory("tablePaneColumn", new TablePaneColumnFactory());
registerFactory("tablePaneRow", new TablePaneRowFactory());
registerPivotContainerFactory("tablePaneFiller", TablePane.Filler.class);
// -- containers
registerFactory("accordion", new AccordionFactory());
registerPivotContainerFactory("border", Border.class, true);
registerPivotContainerFactory("calendar", Calendar.class);
registerPivotContainerFactory("colorChooser", ColorChooser.class);
registerPivotContainerFactory("expander", Expander.class, true);
registerPivotComponentFactory("form", Form.class);
registerFactory("formSection", new FormSectionFactory());
registerFactory("formFlag", new FormFlagFactory());
registerPivotContainerFactory("panel", Panel.class);
registerFactory("panorama", new ViewportFactory(Panorama.class));
registerFactory("rollup", new RollupFactory());
// -- windows
// registerPivotContainerFactory("alert", Alert)
// registerPivotContainerFactory("prompt", Prompt)
registerPivotContainerFactory("dialog", Dialog.class, true);
registerPivotContainerFactory("frame", Frame.class, true);
registerFactory("fileBrowserSheet", new FileBrowserSheetFactory());
registerPivotContainerFactory("palette", Palette.class, true);
registerPivotContainerFactory("sheet", Sheet.class, true);
registerFactory("tooltip", new TextComponentFactory(Tooltip.class));
registerPivotContainerFactory("window", Window.class, true);
// -- effects
registerPivotBeanFactory("baselineDecorator", BaselineDecorator.class);
registerPivotBeanFactory("blurDecorator", BlurDecorator.class);
registerPivotBeanFactory("clipDecorator", ClipDecorator.class);
registerPivotBeanFactory("dropShadowDecorator", DropShadowDecorator.class);
registerPivotBeanFactory("fadeDecorator", FadeDecorator.class);
registerPivotBeanFactory("grayscaleDecorator", GrayscaleDecorator.class);
registerPivotBeanFactory("reflectionDecorator", ReflectionDecorator.class);
registerPivotBeanFactory("rotationDecorator", RotationDecorator.class);
registerPivotBeanFactory("saturationDecorator", SaturationDecorator.class);
registerPivotBeanFactory("scaleDecorator", ScaleDecorator.class);
registerPivotBeanFactory("shadeDecorator", ShadeDecorator.class);
registerPivotBeanFactory("translationDecorator", TranslationDecorator.class);
registerFactory("overlayDecorator", new SingleElementContainerFactory(OverlayDecorator.class, "component", Component.class));
registerFactory("tagDecorator", new SingleElementContainerFactory(TagDecorator.class, "tag", Visual.class));
registerFactory("watermarkDecorator", new SingleElementContainerFactory(WatermarkDecorator.class, "image", Image.class));
registerBeanFactory("easingCircular", Circular.class);
registerBeanFactory("easingCubic", Cubic.class);
registerBeanFactory("easingExponential", Exponential.class);
registerBeanFactory("easingLinear", Linear.class);
registerBeanFactory("easingQuadratic", Quadratic.class);
registerBeanFactory("easingQuartic", Quartic.class);
registerBeanFactory("easingQuintic", Quintic.class);
registerBeanFactory("easingSine", Sine.class);
registerFactory("picture", new PictureFactory());
// -- listeners
registerFactory("accordionListener", new AdapterFactory(AccordionAdapter.class));
registerFactory("accordionAttributeListener", new AdapterFactory(AccordionAttributeAdapter.class));
registerFactory("accordionSelectionListener", new AdapterFactory(AccordionSelectionAdapter.class));
registerFactory("actionListener", new AdapterFactory(ActionAdapter.class));
registerFactory("actionClassListener", new AdapterFactory(ActionClassAdapter.class));
registerFactory("activityIndicatorListener", new AdapterFactory(ActivityIndicatorAdapter.class));
registerFactory("alertListener", new AdapterFactory(AlertAdapter.class));
registerFactory("blockListener", new AdapterFactory(BlockAdapter.class));
registerFactory("borderListener", new AdapterFactory(BorderAdapter.class));
registerFactory("boxPaneListener", new AdapterFactory(BoxPaneAdapter.class));
registerFactory("bulletedListListener", new AdapterFactory(BulletedListAdapter.class));
registerFactory("buttonListener", new AdapterFactory(ButtonAdapter.class));
registerFactory("buttonBindingListener", new AdapterFactory(ButtonBindingAdapter.class));
registerFactory("buttonGroupListener", new AdapterFactory(ButtonGroupAdapter.class));
registerFactory("buttonPressListener", new AdapterFactory(ButtonPressAdapter.class));
registerFactory("buttonStateListener", new AdapterFactory(ButtonStateAdapter.class));
registerFactory("calendarListener", new AdapterFactory(CalendarAdapter.class));
registerFactory("calendarBindingListener", new AdapterFactory(CalendarBindingAdapter.class));
registerFactory("calendarButtonListener", new AdapterFactory(CalendarButtonAdapter.class));
registerFactory("calendarButtonBindingListener", new AdapterFactory(CalendarButtonBindingAdapter.class));
registerFactory("calendarButtonSelectionListener", new AdapterFactory(CalendarButtonSelectionAdapter.class));
registerFactory("calendarSelectionListener", new AdapterFactory(CalendarSelectionAdapter.class));
registerFactory("cardPaneListener", new AdapterFactory(CardPaneAdapter.class));
registerFactory("clipboardContentListener", new AdapterFactory(ClipboardContentAdapter.class));
registerFactory("colorChooserBindingListener", new AdapterFactory(ColorChooserBindingAdapter.class));
registerFactory("colorChooserButtonBindingListener", new AdapterFactory(ColorChooserButtonBindingAdapter.class));
registerFactory("colorChooserButtonSelectionListener", new AdapterFactory(ColorChooserButtonSelectionAdapter.class));
registerFactory("colorChooserSelectionListener", new AdapterFactory(ColorChooserSelectionAdapter.class));
registerFactory("componentListener", new AdapterFactory(ComponentAdapter.class));
registerFactory("componentClassListener", new AdapterFactory(ComponentClassAdapter.class));
registerFactory("componentDataListener", new AdapterFactory(ComponentDataAdapter.class));
registerFactory("componentDecoratorListener", new AdapterFactory(ComponentDecoratorAdapter.class));
registerFactory("componentKeyListener", new AdapterFactory(ComponentKeyAdapter.class));
registerFactory("componentMouseListener", new AdapterFactory(ComponentMouseAdapter.class));
registerFactory("componentMouseButtonListener", new AdapterFactory(ComponentMouseButtonAdapter.class));
registerFactory("componentMouseWheelListener", new AdapterFactory(ComponentMouseWheelAdapter.class));
registerFactory("componentNodeListener", new AdapterFactory(ComponentNodeAdapter.class));
registerFactory("componentStateListener", new AdapterFactory(ComponentStateAdapter.class));
registerFactory("componentStyleListener", new AdapterFactory(ComponentStyleAdapter.class));
registerFactory("componentTooltipListener", new AdapterFactory(ComponentTooltipAdapter.class));
registerFactory("containerListener", new AdapterFactory(ContainerAdapter.class));
registerFactory("containerMouseListener", new AdapterFactory(ContainerMouseAdapter.class));
registerFactory("dialogListener", new AdapterFactory(DialogAdapter.class));
registerFactory("dialogCloseListener", new AdapterFactory(DialogCloseAdapter.class));
registerFactory("dialogStateListener", new AdapterFactory(DialogStateAdapter.class));
registerFactory("elementListener", new AdapterFactory(ElementAdapter.class));
registerFactory("expanderListener", new AdapterFactory(ExpanderAdapter.class));
registerFactory("fileBrowserListener", new AdapterFactory(FileBrowserAdapter.class));
registerFactory("fileBrowserSheetListener", new AdapterFactory(FileBrowserSheetAdapter.class));
registerFactory("fillPaneListener", new AdapterFactory(FillPaneAdapter.class));
registerFactory("formListener", new AdapterFactory(FormAdapter.class));
registerFactory("formAttributeListener", new AdapterFactory(FormAttributeAdapter.class));
registerFactory("frameListener", new AdapterFactory(FrameAdapter.class));
registerFactory("gridPaneListener", new AdapterFactory(GridPaneAdapter.class));
registerFactory("griffonPivotListener", new AdapterFactory(GriffonPivotAdapter.class));
registerFactory("imageListener", new AdapterFactory(ImageAdapter.class));
registerFactory("imageNodeListener", new AdapterFactory(ImageNodeAdapter.class));
registerFactory("imageViewListener", new AdapterFactory(ImageViewAdapter.class));
registerFactory("imageViewBindingListener", new AdapterFactory(ImageViewBindingAdapter.class));
registerFactory("labelListener", new AdapterFactory(LabelAdapter.class));
registerFactory("labelBindingListener", new AdapterFactory(LabelBindingAdapter.class));
registerFactory("listButtonListener", new AdapterFactory(ListButtonAdapter.class));
registerFactory("listButtonBindingListener", new AdapterFactory(ListButtonBindingAdapter.class));
registerFactory("listButtonItemListener", new AdapterFactory(ListButtonItemAdapter.class));
registerFactory("listButtonSelectionListener", new AdapterFactory(ListButtonSelectionAdapter.class));
registerFactory("listViewListener", new AdapterFactory(ListViewAdapter.class));
registerFactory("listViewBindingListener", new AdapterFactory(ListViewBindingAdapter.class));
registerFactory("listViewItemListener", new AdapterFactory(ListViewItemAdapter.class));
registerFactory("listViewItemStateListener", new AdapterFactory(ListViewItemStateAdapter.class));
registerFactory("listViewSelectionListener", new AdapterFactory(ListViewSelectionAdapter.class));
registerFactory("menuListener", new AdapterFactory(MenuAdapter.class));
registerFactory("menuBarListener", new AdapterFactory(MenuBarAdapter.class));
registerFactory("menuButtonListener", new AdapterFactory(MenuButtonAdapter.class));
registerFactory("menuItemSelectionListener", new AdapterFactory(MenuItemSelectionAdapter.class));
registerFactory("menuPopupListener", new AdapterFactory(MenuPopupAdapter.class));
registerFactory("menuPopupStateListener", new AdapterFactory(MenuPopupStateAdapter.class));
registerFactory("meterListener", new AdapterFactory(MeterAdapter.class));
registerFactory("movieListener", new AdapterFactory(MovieAdapter.class));
registerFactory("movieViewListener", new AdapterFactory(MovieViewAdapter.class));
registerFactory("nodeListener", new AdapterFactory(NodeAdapter.class));
registerFactory("numberedListListener", new AdapterFactory(NumberedListAdapter.class));
registerFactory("promptListener", new AdapterFactory(PromptAdapter.class));
registerFactory("rollupListener", new AdapterFactory(RollupAdapter.class));
registerFactory("rollupStateListener", new AdapterFactory(RollupStateAdapter.class));
registerFactory("scrollBarListener", new AdapterFactory(ScrollBarAdapter.class));
registerFactory("scrollBarValueListener", new AdapterFactory(ScrollBarValueAdapter.class));
registerFactory("scrollPaneListener", new AdapterFactory(ScrollPaneAdapter.class));
registerFactory("separatorListener", new AdapterFactory(SeparatorAdapter.class));
registerFactory("sheetCloseListener", new AdapterFactory(SheetCloseAdapter.class));
registerFactory("sheetStateListener", new AdapterFactory(SheetStateAdapter.class));
registerFactory("sliderListener", new AdapterFactory(SliderAdapter.class));
registerFactory("sliderValueListener", new AdapterFactory(SliderValueAdapter.class));
registerFactory("spinnerListener", new AdapterFactory(SpinnerAdapter.class));
registerFactory("spinnerBindingListener", new AdapterFactory(SpinnerBindingAdapter.class));
registerFactory("spinnerItemListener", new AdapterFactory(SpinnerItemAdapter.class));
registerFactory("spinnerSelectionListener", new AdapterFactory(SpinnerSelectionAdapter.class));
registerFactory("splitPaneListener", new AdapterFactory(SplitPaneAdapter.class));
registerFactory("suggestionPopupListener", new AdapterFactory(SuggestionPopupAdapter.class));
registerFactory("suggestionPopupCloseListener", new AdapterFactory(SuggestionPopupCloseAdapter.class));
registerFactory("suggestionPopupItemListener", new AdapterFactory(SuggestionPopupItemAdapter.class));
registerFactory("suggestionPopupSelectionListener", new AdapterFactory(SuggestionPopupSelectionAdapter.class));
registerFactory("suggestionPopupStateListener", new AdapterFactory(SuggestionPopupStateAdapter.class));
registerFactory("tablePaneListener", new AdapterFactory(TablePaneAdapter.class));
registerFactory("tablePaneAttributeListener", new AdapterFactory(TablePaneAttributeAdapter.class));
registerFactory("tableViewListener", new AdapterFactory(TableViewAdapter.class));
registerFactory("tableViewBindingListener", new AdapterFactory(TableViewBindingAdapter.class));
registerFactory("tableViewColumnListener", new AdapterFactory(TableViewColumnAdapter.class));
registerFactory("tableViewHeaderListener", new AdapterFactory(TableViewHeaderAdapter.class));
registerFactory("tableViewHeaderPressListener", new AdapterFactory(TableViewHeaderPressAdapter.class));
registerFactory("tableViewRowListener", new AdapterFactory(TableViewRowAdapter.class));
registerFactory("tableViewSelectionListener", new AdapterFactory(TableViewSelectionAdapter.class));
registerFactory("tableViewSortListener", new AdapterFactory(TableViewSortAdapter.class));
registerFactory("tabPaneListener", new AdapterFactory(TabPaneAdapter.class));
registerFactory("tabPaneAttributeListener", new AdapterFactory(TabPaneAttributeAdapter.class));
registerFactory("tabPaneSelectionListener", new AdapterFactory(TabPaneSelectionAdapter.class));
registerFactory("textAreaListener", new AdapterFactory(TextAreaAdapter.class));
registerFactory("textAreaBindingListener", new AdapterFactory(TextAreaBindingAdapter.class));
registerFactory("textAreaContentListener", new AdapterFactory(TextAreaContentAdapter.class));
registerFactory("textAreaSelectionListener", new AdapterFactory(TextAreaSelectionAdapter.class));
registerFactory("textInputListener", new AdapterFactory(TextInputAdapter.class));
registerFactory("textInputBindingListener", new AdapterFactory(TextInputBindingAdapter.class));
registerFactory("textInputContentListener", new AdapterFactory(TextInputContentAdapter.class));
registerFactory("textInputSelectionListener", new AdapterFactory(TextInputSelectionAdapter.class));
registerFactory("textNodeListener", new AdapterFactory(TextNodeAdapter.class));
registerFactory("textPaneListener", new AdapterFactory(TextPaneAdapter.class));
registerFactory("textPaneCharacterListener", new AdapterFactory(TextPaneCharacterAdapter.class));
registerFactory("textPaneSelectionListener", new AdapterFactory(TextPaneSelectionAdapter.class));
registerFactory("transitionListener", new AdapterFactory(TransitionAdapter.class));
registerFactory("treeViewListener", new AdapterFactory(TreeViewAdapter.class));
registerFactory("treeViewBranchListener", new AdapterFactory(TreeViewBranchAdapter.class));
registerFactory("treeViewNodeListener", new AdapterFactory(TreeViewNodeAdapter.class));
registerFactory("treeViewNodeStateListener", new AdapterFactory(TreeViewNodeStateAdapter.class));
registerFactory("treeViewSelectionListener", new AdapterFactory(TreeViewSelectionAdapter.class));
registerFactory("viewportListener", new AdapterFactory(ViewportAdapter.class));
registerFactory("windowActionMappingListener", new AdapterFactory(WindowActionMappingAdapter.class));
registerFactory("windowListener", new AdapterFactory(WindowAdapter.class));
registerFactory("windowClassListener", new AdapterFactory(WindowClassAdapter.class));
registerFactory("windowStateListener", new AdapterFactory(WindowStateAdapter.class));
setFactories(factories);
Closure c1 = new Closure(this) {
@Override
public Object call(Object... args) {
return handleIdAttribute(args);
}
private Object handleIdAttribute(Object[] args) {
FactoryBuilderSupport builder = (FactoryBuilderSupport) args[0];
Object node = args[1];
Map attributes = (Map) args[2];
if (attributes.containsKey("id")) {
String id = attributes.remove("id").toString();
builder.setVariable(id, node);
// set id: as name: if node supports the property
try {
Object name = getPropertyValue(node, "name");
if (name == null) {
setPropertyValue(node, "name", id);
}
} catch (PropertyException pe) {
// ignore
}
}
return null;
}
};
Closure c2 = new MethodClosure(ButtonGroupFactory.class, "buttonGroupAttributeDelegate");
setAttributeDelegates(newList(c1, c2));
}
private void registerFactory(String name, Factory factory) {
factories.put(name, factory);
}
private void registerBeanFactory(String name, Class pivotBeanClass) {
registerBeanFactory(name, pivotBeanClass, true);
}
private void registerBeanFactory(String name, Class pivotBeanClass, boolean leaf) {
registerFactory(name, new BeanFactory(pivotBeanClass, leaf));
}
private void registerPivotBeanFactory(String name, Class pivotBeanClass) {
registerPivotBeanFactory(name, pivotBeanClass, true);
}
private void registerPivotBeanFactory(String name, Class pivotBeanClass, boolean leaf) {
registerFactory(name, new PivotBeanFactory(pivotBeanClass, leaf));
}
private void registerPivotComponentFactory(String name, Class pivotBeanClass) {
registerPivotComponentFactory(name, pivotBeanClass, true);
}
private void registerPivotComponentFactory(String name, Class pivotBeanClass, boolean leaf) {
registerFactory(name, new ComponentFactory(pivotBeanClass, leaf));
}
private void registerPivotContainerFactory(String name, Class pivotBeanClass) {
registerPivotContainerFactory(name, pivotBeanClass, true);
}
private void registerPivotContainerFactory(String name, Class pivotBeanClass, boolean singleElement) {
registerFactory(name, singleElement ? new SingleElementContainerFactory(pivotBeanClass, "content", Component.class) : new ContainerFactory(pivotBeanClass));
}
}