001 /*
002 * SPDX-License-Identifier: Apache-2.0
003 *
004 * Copyright 2008-2017 the original author or authors.
005 *
006 * Licensed under the Apache License, Version 2.0 (the "License");
007 * you may not use this file except in compliance with the License.
008 * You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018 package griffon.builder.pivot;
019
020 import griffon.builder.pivot.factory.AccordionFactory;
021 import griffon.builder.pivot.factory.AdapterFactory;
022 import griffon.builder.pivot.factory.ApplicationFactory;
023 import griffon.builder.pivot.factory.BeanFactory;
024 import griffon.builder.pivot.factory.BoundsFactory;
025 import griffon.builder.pivot.factory.BoxPaneFactory;
026 import griffon.builder.pivot.factory.ButtonDataFactory;
027 import griffon.builder.pivot.factory.ButtonDataRendererFactory;
028 import griffon.builder.pivot.factory.ButtonFactory;
029 import griffon.builder.pivot.factory.ButtonGroupFactory;
030 import griffon.builder.pivot.factory.BxmlFactory;
031 import griffon.builder.pivot.factory.CalendarDateSpinnerDataFactory;
032 import griffon.builder.pivot.factory.ComponentFactory;
033 import griffon.builder.pivot.factory.ContainerFactory;
034 import griffon.builder.pivot.factory.FileBrowserSheetFactory;
035 import griffon.builder.pivot.factory.FormFlagFactory;
036 import griffon.builder.pivot.factory.FormSectionFactory;
037 import griffon.builder.pivot.factory.GridPaneFactory;
038 import griffon.builder.pivot.factory.GridPaneRowFactory;
039 import griffon.builder.pivot.factory.ImageViewFactory;
040 import griffon.builder.pivot.factory.InsetsFactory;
041 import griffon.builder.pivot.factory.JavaCollectionFactory;
042 import griffon.builder.pivot.factory.MenuBarFactory;
043 import griffon.builder.pivot.factory.MenuBarItemFactory;
044 import griffon.builder.pivot.factory.MenuFactory;
045 import griffon.builder.pivot.factory.MenuItemFactory;
046 import griffon.builder.pivot.factory.NumericSpinnerDataFactory;
047 import griffon.builder.pivot.factory.PairFactory;
048 import griffon.builder.pivot.factory.PictureFactory;
049 import griffon.builder.pivot.factory.PivotBeanFactory;
050 import griffon.builder.pivot.factory.RollupFactory;
051 import griffon.builder.pivot.factory.ScrollBarScopeFactory;
052 import griffon.builder.pivot.factory.ScrollPaneFactory;
053 import griffon.builder.pivot.factory.SingleElementContainerFactory;
054 import griffon.builder.pivot.factory.SliderFactory;
055 import griffon.builder.pivot.factory.SplitPaneFactory;
056 import griffon.builder.pivot.factory.TabPaneFactory;
057 import griffon.builder.pivot.factory.TablePaneColumnFactory;
058 import griffon.builder.pivot.factory.TablePaneFactory;
059 import griffon.builder.pivot.factory.TablePaneRowFactory;
060 import griffon.builder.pivot.factory.TextComponentFactory;
061 import griffon.builder.pivot.factory.ViewportFactory;
062 import griffon.builder.pivot.factory.WidgetFactory;
063 import griffon.exceptions.PropertyException;
064 import griffon.inject.DependsOn;
065 import griffon.pivot.support.PivotAction;
066 import griffon.pivot.support.adapters.*;
067 import groovy.lang.Closure;
068 import groovy.util.Factory;
069 import groovy.util.FactoryBuilderSupport;
070 import org.apache.pivot.wtk.ActivityIndicator;
071 import org.apache.pivot.wtk.Border;
072 import org.apache.pivot.wtk.BoxPane;
073 import org.apache.pivot.wtk.Calendar;
074 import org.apache.pivot.wtk.CalendarButton;
075 import org.apache.pivot.wtk.CardPane;
076 import org.apache.pivot.wtk.Checkbox;
077 import org.apache.pivot.wtk.ColorChooser;
078 import org.apache.pivot.wtk.ColorChooserButton;
079 import org.apache.pivot.wtk.Component;
080 import org.apache.pivot.wtk.Container;
081 import org.apache.pivot.wtk.Dialog;
082 import org.apache.pivot.wtk.Dimensions;
083 import org.apache.pivot.wtk.Expander;
084 import org.apache.pivot.wtk.FileBrowser;
085 import org.apache.pivot.wtk.FlowPane;
086 import org.apache.pivot.wtk.Form;
087 import org.apache.pivot.wtk.Frame;
088 import org.apache.pivot.wtk.GridPane;
089 import org.apache.pivot.wtk.Label;
090 import org.apache.pivot.wtk.LinkButton;
091 import org.apache.pivot.wtk.ListButton;
092 import org.apache.pivot.wtk.ListView;
093 import org.apache.pivot.wtk.MenuButton;
094 import org.apache.pivot.wtk.MenuPopup;
095 import org.apache.pivot.wtk.Meter;
096 import org.apache.pivot.wtk.Orientation;
097 import org.apache.pivot.wtk.Palette;
098 import org.apache.pivot.wtk.Panel;
099 import org.apache.pivot.wtk.Panorama;
100 import org.apache.pivot.wtk.Point;
101 import org.apache.pivot.wtk.PushButton;
102 import org.apache.pivot.wtk.RadioButton;
103 import org.apache.pivot.wtk.ScrollBar;
104 import org.apache.pivot.wtk.Separator;
105 import org.apache.pivot.wtk.Sheet;
106 import org.apache.pivot.wtk.Span;
107 import org.apache.pivot.wtk.Spinner;
108 import org.apache.pivot.wtk.StackPane;
109 import org.apache.pivot.wtk.TablePane;
110 import org.apache.pivot.wtk.TextArea;
111 import org.apache.pivot.wtk.TextInput;
112 import org.apache.pivot.wtk.Tooltip;
113 import org.apache.pivot.wtk.Visual;
114 import org.apache.pivot.wtk.Window;
115 import org.apache.pivot.wtk.content.ButtonDataRenderer;
116 import org.apache.pivot.wtk.content.CalendarButtonDataRenderer;
117 import org.apache.pivot.wtk.content.LinkButtonDataRenderer;
118 import org.apache.pivot.wtk.content.ListButtonColorItemRenderer;
119 import org.apache.pivot.wtk.content.ListButtonDataRenderer;
120 import org.apache.pivot.wtk.content.MenuBarItemDataRenderer;
121 import org.apache.pivot.wtk.content.MenuButtonDataRenderer;
122 import org.apache.pivot.wtk.content.MenuItemDataRenderer;
123 import org.apache.pivot.wtk.effects.BaselineDecorator;
124 import org.apache.pivot.wtk.effects.BlurDecorator;
125 import org.apache.pivot.wtk.effects.ClipDecorator;
126 import org.apache.pivot.wtk.effects.DropShadowDecorator;
127 import org.apache.pivot.wtk.effects.FadeDecorator;
128 import org.apache.pivot.wtk.effects.GrayscaleDecorator;
129 import org.apache.pivot.wtk.effects.OverlayDecorator;
130 import org.apache.pivot.wtk.effects.ReflectionDecorator;
131 import org.apache.pivot.wtk.effects.RotationDecorator;
132 import org.apache.pivot.wtk.effects.SaturationDecorator;
133 import org.apache.pivot.wtk.effects.ScaleDecorator;
134 import org.apache.pivot.wtk.effects.ShadeDecorator;
135 import org.apache.pivot.wtk.effects.TagDecorator;
136 import org.apache.pivot.wtk.effects.TranslationDecorator;
137 import org.apache.pivot.wtk.effects.WatermarkDecorator;
138 import org.apache.pivot.wtk.effects.easing.Circular;
139 import org.apache.pivot.wtk.effects.easing.Cubic;
140 import org.apache.pivot.wtk.effects.easing.Exponential;
141 import org.apache.pivot.wtk.effects.easing.Linear;
142 import org.apache.pivot.wtk.effects.easing.Quadratic;
143 import org.apache.pivot.wtk.effects.easing.Quartic;
144 import org.apache.pivot.wtk.effects.easing.Quintic;
145 import org.apache.pivot.wtk.effects.easing.Sine;
146 import org.apache.pivot.wtk.media.Image;
147 import org.codehaus.griffon.runtime.groovy.view.AbstractBuilderCustomizer;
148 import org.codehaus.groovy.runtime.MethodClosure;
149
150 import javax.inject.Named;
151 import java.util.LinkedHashMap;
152 import java.util.Map;
153
154 import static griffon.util.CollectionUtils.newList;
155 import static griffon.util.GriffonClassUtils.getPropertyValue;
156 import static griffon.util.GriffonClassUtils.setPropertyValue;
157
158 /**
159 * @author Andres Almiray
160 * @since 2.0.0
161 */
162 @Named("pivot")
163 @DependsOn({"core"})
164 @SuppressWarnings("rawtypes")
165 public class PivotBuilderCustomizer extends AbstractBuilderCustomizer {
166 private final Map<String, Factory> factories = new LinkedHashMap<>();
167
168 @SuppressWarnings("unchecked")
169 public PivotBuilderCustomizer() {
170 // -- griffon
171 registerFactory("application", new ApplicationFactory());
172
173 // -- support
174 registerPivotBeanFactory("action", PivotAction.class);
175 registerFactory("actions", new JavaCollectionFactory());
176 registerFactory("noparent", new JavaCollectionFactory());
177 registerFactory("bxml", new BxmlFactory());
178 registerFactory("buttonGroup", new ButtonGroupFactory());
179
180 registerFactory("dimensions", new PairFactory(Dimensions.class, "width", "height"));
181 registerFactory("point", new PairFactory(Point.class, "x", "y"));
182 registerFactory("span", new PairFactory(Span.class, "start", "end"));
183 registerFactory("insets", new InsetsFactory());
184 registerFactory("bounds", new BoundsFactory());
185
186 registerFactory("widget", new WidgetFactory(Component.class, false));
187 registerFactory("container", new WidgetFactory(Container.class, false));
188 registerFactory("bean", new WidgetFactory(Object.class, true));
189
190 // -- widgets
191 registerPivotComponentFactory("activityIndicator", ActivityIndicator.class);
192 registerPivotComponentFactory("fileBrowser", FileBrowser.class);
193 registerFactory("label", new TextComponentFactory(Label.class));
194 registerFactory("meter", new TextComponentFactory(Meter.class));
195 registerPivotComponentFactory("separator", Separator.class);
196 registerFactory("textArea", new TextComponentFactory(TextArea.class));
197 registerFactory("textInput", new TextComponentFactory(TextInput.class));
198
199 registerFactory("slider", new SliderFactory());
200 registerPivotComponentFactory("spinner", Spinner.class);
201 registerFactory("numericSpinnerData", new NumericSpinnerDataFactory());
202 registerFactory("calendarDateSpinnerData", new CalendarDateSpinnerDataFactory());
203 registerPivotComponentFactory("scrollBar", ScrollBar.class);
204 registerFactory("scrollBarScope", new ScrollBarScopeFactory());
205
206 // -- views
207 registerPivotComponentFactory("listView", ListView.class);
208 registerFactory("imageView", new ImageViewFactory());
209 // registerPivotComponentFactory("movieView", MovieView)
210 // registerPivotComponentFactory("tableView", TableView)
211 // registerPivotComponentFactory("tableViewHeader", TableViewHeader)
212 // registerPivotComponentFactory("treeView", TreeView)
213
214 // -- buttons
215 registerFactory("buttonData", new ButtonDataFactory());
216 registerFactory("calendarButton", new ButtonFactory(CalendarButton.class));
217 registerFactory("checkbox", new ButtonFactory(Checkbox.class));
218 registerFactory("colorChooserButton", new ButtonFactory(ColorChooserButton.class));
219 registerFactory("linkButton", new ButtonFactory(LinkButton.class));
220 registerFactory("listButton", new ButtonFactory(ListButton.class));
221 registerFactory("menuButton", new ButtonFactory(MenuButton.class));
222 Factory button = new ButtonFactory(PushButton.class);
223 registerFactory("button", button);
224 registerFactory("pushButton", button);
225 registerFactory("radioButton", new ButtonFactory(RadioButton.class));
226
227 registerFactory("buttonDataRenderer", new ButtonDataRendererFactory(ButtonDataRenderer.class));
228 registerFactory("calendarButtonDataRenderer", new ButtonDataRendererFactory(CalendarButtonDataRenderer.class));
229 registerFactory("linkButtonDataRenderer", new ButtonDataRendererFactory(LinkButtonDataRenderer.class));
230 registerFactory("listButtonColorItemRenderer", new ButtonDataRendererFactory(ListButtonColorItemRenderer.class));
231 registerFactory("listButtonDataRenderer", new ButtonDataRendererFactory(ListButtonDataRenderer.class));
232 registerFactory("menuButtonDataRenderer", new ButtonDataRendererFactory(MenuButtonDataRenderer.class));
233 registerFactory("buttonDataRenderer", new ButtonDataRendererFactory(ButtonDataRenderer.class));
234
235 // -- menus
236 registerFactory("menu", new MenuFactory());
237 registerFactory("menuItem", new MenuItemFactory());
238 registerFactory("menuBar", new MenuBarFactory());
239 registerFactory("menuBarItem", new MenuBarItemFactory());
240 registerPivotComponentFactory("menuPopup", MenuPopup.class);
241 registerFactory("menuBarItemDataRenderer", new ButtonDataRendererFactory(MenuBarItemDataRenderer.class));
242 registerFactory("menuItemDataRenderer", new ButtonDataRendererFactory(MenuItemDataRenderer.class));
243
244 // -- panes
245 Factory hbox = new BoxPaneFactory(Orientation.HORIZONTAL);
246 registerFactory("box", hbox);
247 registerFactory("hbox", hbox);
248 registerFactory("vbox", new BoxPaneFactory(Orientation.VERTICAL));
249 registerPivotContainerFactory("boxPane", BoxPane.class);
250 registerPivotContainerFactory("cardPane", CardPane.class);
251 registerPivotContainerFactory("flowPane", FlowPane.class);
252 registerFactory("gridPane", new GridPaneFactory());
253 registerFactory("gridRow", new GridPaneRowFactory());
254 registerPivotContainerFactory("gridFiller", GridPane.Filler.class);
255 registerFactory("scrollPane", new ScrollPaneFactory());
256 registerFactory("splitPane", new SplitPaneFactory());
257 registerPivotContainerFactory("stackPane", StackPane.class);
258 registerFactory("tabPane", new TabPaneFactory());
259 registerFactory("tablePane", new TablePaneFactory());
260 registerFactory("tablePaneColumn", new TablePaneColumnFactory());
261 registerFactory("tablePaneRow", new TablePaneRowFactory());
262 registerPivotContainerFactory("tablePaneFiller", TablePane.Filler.class);
263
264 // -- containers
265 registerFactory("accordion", new AccordionFactory());
266 registerPivotContainerFactory("border", Border.class, true);
267 registerPivotContainerFactory("calendar", Calendar.class);
268 registerPivotContainerFactory("colorChooser", ColorChooser.class);
269 registerPivotContainerFactory("expander", Expander.class, true);
270 registerPivotComponentFactory("form", Form.class);
271 registerFactory("formSection", new FormSectionFactory());
272 registerFactory("formFlag", new FormFlagFactory());
273 registerPivotContainerFactory("panel", Panel.class);
274 registerFactory("panorama", new ViewportFactory(Panorama.class));
275 registerFactory("rollup", new RollupFactory());
276
277 // -- windows
278 // registerPivotContainerFactory("alert", Alert)
279 // registerPivotContainerFactory("prompt", Prompt)
280 registerPivotContainerFactory("dialog", Dialog.class, true);
281 registerPivotContainerFactory("frame", Frame.class, true);
282 registerFactory("fileBrowserSheet", new FileBrowserSheetFactory());
283 registerPivotContainerFactory("palette", Palette.class, true);
284 registerPivotContainerFactory("sheet", Sheet.class, true);
285 registerFactory("tooltip", new TextComponentFactory(Tooltip.class));
286 registerPivotContainerFactory("window", Window.class, true);
287
288 // -- effects
289 registerPivotBeanFactory("baselineDecorator", BaselineDecorator.class);
290 registerPivotBeanFactory("blurDecorator", BlurDecorator.class);
291 registerPivotBeanFactory("clipDecorator", ClipDecorator.class);
292 registerPivotBeanFactory("dropShadowDecorator", DropShadowDecorator.class);
293 registerPivotBeanFactory("fadeDecorator", FadeDecorator.class);
294 registerPivotBeanFactory("grayscaleDecorator", GrayscaleDecorator.class);
295 registerPivotBeanFactory("reflectionDecorator", ReflectionDecorator.class);
296 registerPivotBeanFactory("rotationDecorator", RotationDecorator.class);
297 registerPivotBeanFactory("saturationDecorator", SaturationDecorator.class);
298 registerPivotBeanFactory("scaleDecorator", ScaleDecorator.class);
299 registerPivotBeanFactory("shadeDecorator", ShadeDecorator.class);
300 registerPivotBeanFactory("translationDecorator", TranslationDecorator.class);
301 registerFactory("overlayDecorator", new SingleElementContainerFactory(OverlayDecorator.class, "component", Component.class));
302 registerFactory("tagDecorator", new SingleElementContainerFactory(TagDecorator.class, "tag", Visual.class));
303 registerFactory("watermarkDecorator", new SingleElementContainerFactory(WatermarkDecorator.class, "image", Image.class));
304
305 registerBeanFactory("easingCircular", Circular.class);
306 registerBeanFactory("easingCubic", Cubic.class);
307 registerBeanFactory("easingExponential", Exponential.class);
308 registerBeanFactory("easingLinear", Linear.class);
309 registerBeanFactory("easingQuadratic", Quadratic.class);
310 registerBeanFactory("easingQuartic", Quartic.class);
311 registerBeanFactory("easingQuintic", Quintic.class);
312 registerBeanFactory("easingSine", Sine.class);
313
314 registerFactory("picture", new PictureFactory());
315
316 // -- listeners
317 registerFactory("accordionListener", new AdapterFactory(AccordionAdapter.class));
318 registerFactory("accordionAttributeListener", new AdapterFactory(AccordionAttributeAdapter.class));
319 registerFactory("accordionSelectionListener", new AdapterFactory(AccordionSelectionAdapter.class));
320 registerFactory("actionListener", new AdapterFactory(ActionAdapter.class));
321 registerFactory("actionClassListener", new AdapterFactory(ActionClassAdapter.class));
322 registerFactory("activityIndicatorListener", new AdapterFactory(ActivityIndicatorAdapter.class));
323 registerFactory("alertListener", new AdapterFactory(AlertAdapter.class));
324 registerFactory("blockListener", new AdapterFactory(BlockAdapter.class));
325 registerFactory("borderListener", new AdapterFactory(BorderAdapter.class));
326 registerFactory("boxPaneListener", new AdapterFactory(BoxPaneAdapter.class));
327 registerFactory("bulletedListListener", new AdapterFactory(BulletedListAdapter.class));
328 registerFactory("buttonListener", new AdapterFactory(ButtonAdapter.class));
329 registerFactory("buttonBindingListener", new AdapterFactory(ButtonBindingAdapter.class));
330 registerFactory("buttonGroupListener", new AdapterFactory(ButtonGroupAdapter.class));
331 registerFactory("buttonPressListener", new AdapterFactory(ButtonPressAdapter.class));
332 registerFactory("buttonStateListener", new AdapterFactory(ButtonStateAdapter.class));
333 registerFactory("calendarListener", new AdapterFactory(CalendarAdapter.class));
334 registerFactory("calendarBindingListener", new AdapterFactory(CalendarBindingAdapter.class));
335 registerFactory("calendarButtonListener", new AdapterFactory(CalendarButtonAdapter.class));
336 registerFactory("calendarButtonBindingListener", new AdapterFactory(CalendarButtonBindingAdapter.class));
337 registerFactory("calendarButtonSelectionListener", new AdapterFactory(CalendarButtonSelectionAdapter.class));
338 registerFactory("calendarSelectionListener", new AdapterFactory(CalendarSelectionAdapter.class));
339 registerFactory("cardPaneListener", new AdapterFactory(CardPaneAdapter.class));
340 registerFactory("clipboardContentListener", new AdapterFactory(ClipboardContentAdapter.class));
341 registerFactory("colorChooserBindingListener", new AdapterFactory(ColorChooserBindingAdapter.class));
342 registerFactory("colorChooserButtonBindingListener", new AdapterFactory(ColorChooserButtonBindingAdapter.class));
343 registerFactory("colorChooserButtonSelectionListener", new AdapterFactory(ColorChooserButtonSelectionAdapter.class));
344 registerFactory("colorChooserSelectionListener", new AdapterFactory(ColorChooserSelectionAdapter.class));
345 registerFactory("componentListener", new AdapterFactory(ComponentAdapter.class));
346 registerFactory("componentClassListener", new AdapterFactory(ComponentClassAdapter.class));
347 registerFactory("componentDataListener", new AdapterFactory(ComponentDataAdapter.class));
348 registerFactory("componentDecoratorListener", new AdapterFactory(ComponentDecoratorAdapter.class));
349 registerFactory("componentKeyListener", new AdapterFactory(ComponentKeyAdapter.class));
350 registerFactory("componentMouseListener", new AdapterFactory(ComponentMouseAdapter.class));
351 registerFactory("componentMouseButtonListener", new AdapterFactory(ComponentMouseButtonAdapter.class));
352 registerFactory("componentMouseWheelListener", new AdapterFactory(ComponentMouseWheelAdapter.class));
353 registerFactory("componentNodeListener", new AdapterFactory(ComponentNodeAdapter.class));
354 registerFactory("componentStateListener", new AdapterFactory(ComponentStateAdapter.class));
355 registerFactory("componentStyleListener", new AdapterFactory(ComponentStyleAdapter.class));
356 registerFactory("componentTooltipListener", new AdapterFactory(ComponentTooltipAdapter.class));
357 registerFactory("containerListener", new AdapterFactory(ContainerAdapter.class));
358 registerFactory("containerMouseListener", new AdapterFactory(ContainerMouseAdapter.class));
359 registerFactory("dialogListener", new AdapterFactory(DialogAdapter.class));
360 registerFactory("dialogCloseListener", new AdapterFactory(DialogCloseAdapter.class));
361 registerFactory("dialogStateListener", new AdapterFactory(DialogStateAdapter.class));
362 registerFactory("elementListener", new AdapterFactory(ElementAdapter.class));
363 registerFactory("expanderListener", new AdapterFactory(ExpanderAdapter.class));
364 registerFactory("fileBrowserListener", new AdapterFactory(FileBrowserAdapter.class));
365 registerFactory("fileBrowserSheetListener", new AdapterFactory(FileBrowserSheetAdapter.class));
366 registerFactory("fillPaneListener", new AdapterFactory(FillPaneAdapter.class));
367 registerFactory("formListener", new AdapterFactory(FormAdapter.class));
368 registerFactory("formAttributeListener", new AdapterFactory(FormAttributeAdapter.class));
369 registerFactory("frameListener", new AdapterFactory(FrameAdapter.class));
370 registerFactory("gridPaneListener", new AdapterFactory(GridPaneAdapter.class));
371 registerFactory("griffonPivotListener", new AdapterFactory(GriffonPivotAdapter.class));
372 registerFactory("imageListener", new AdapterFactory(ImageAdapter.class));
373 registerFactory("imageNodeListener", new AdapterFactory(ImageNodeAdapter.class));
374 registerFactory("imageViewListener", new AdapterFactory(ImageViewAdapter.class));
375 registerFactory("imageViewBindingListener", new AdapterFactory(ImageViewBindingAdapter.class));
376 registerFactory("labelListener", new AdapterFactory(LabelAdapter.class));
377 registerFactory("labelBindingListener", new AdapterFactory(LabelBindingAdapter.class));
378 registerFactory("listButtonListener", new AdapterFactory(ListButtonAdapter.class));
379 registerFactory("listButtonBindingListener", new AdapterFactory(ListButtonBindingAdapter.class));
380 registerFactory("listButtonItemListener", new AdapterFactory(ListButtonItemAdapter.class));
381 registerFactory("listButtonSelectionListener", new AdapterFactory(ListButtonSelectionAdapter.class));
382 registerFactory("listViewListener", new AdapterFactory(ListViewAdapter.class));
383 registerFactory("listViewBindingListener", new AdapterFactory(ListViewBindingAdapter.class));
384 registerFactory("listViewItemListener", new AdapterFactory(ListViewItemAdapter.class));
385 registerFactory("listViewItemStateListener", new AdapterFactory(ListViewItemStateAdapter.class));
386 registerFactory("listViewSelectionListener", new AdapterFactory(ListViewSelectionAdapter.class));
387 registerFactory("menuListener", new AdapterFactory(MenuAdapter.class));
388 registerFactory("menuBarListener", new AdapterFactory(MenuBarAdapter.class));
389 registerFactory("menuButtonListener", new AdapterFactory(MenuButtonAdapter.class));
390 registerFactory("menuItemSelectionListener", new AdapterFactory(MenuItemSelectionAdapter.class));
391 registerFactory("menuPopupListener", new AdapterFactory(MenuPopupAdapter.class));
392 registerFactory("menuPopupStateListener", new AdapterFactory(MenuPopupStateAdapter.class));
393 registerFactory("meterListener", new AdapterFactory(MeterAdapter.class));
394 registerFactory("movieListener", new AdapterFactory(MovieAdapter.class));
395 registerFactory("movieViewListener", new AdapterFactory(MovieViewAdapter.class));
396 registerFactory("nodeListener", new AdapterFactory(NodeAdapter.class));
397 registerFactory("numberedListListener", new AdapterFactory(NumberedListAdapter.class));
398 registerFactory("promptListener", new AdapterFactory(PromptAdapter.class));
399 registerFactory("rollupListener", new AdapterFactory(RollupAdapter.class));
400 registerFactory("rollupStateListener", new AdapterFactory(RollupStateAdapter.class));
401 registerFactory("scrollBarListener", new AdapterFactory(ScrollBarAdapter.class));
402 registerFactory("scrollBarValueListener", new AdapterFactory(ScrollBarValueAdapter.class));
403 registerFactory("scrollPaneListener", new AdapterFactory(ScrollPaneAdapter.class));
404 registerFactory("separatorListener", new AdapterFactory(SeparatorAdapter.class));
405 registerFactory("sheetCloseListener", new AdapterFactory(SheetCloseAdapter.class));
406 registerFactory("sheetStateListener", new AdapterFactory(SheetStateAdapter.class));
407 registerFactory("sliderListener", new AdapterFactory(SliderAdapter.class));
408 registerFactory("sliderValueListener", new AdapterFactory(SliderValueAdapter.class));
409 registerFactory("spinnerListener", new AdapterFactory(SpinnerAdapter.class));
410 registerFactory("spinnerBindingListener", new AdapterFactory(SpinnerBindingAdapter.class));
411 registerFactory("spinnerItemListener", new AdapterFactory(SpinnerItemAdapter.class));
412 registerFactory("spinnerSelectionListener", new AdapterFactory(SpinnerSelectionAdapter.class));
413 registerFactory("splitPaneListener", new AdapterFactory(SplitPaneAdapter.class));
414 registerFactory("suggestionPopupListener", new AdapterFactory(SuggestionPopupAdapter.class));
415 registerFactory("suggestionPopupCloseListener", new AdapterFactory(SuggestionPopupCloseAdapter.class));
416 registerFactory("suggestionPopupItemListener", new AdapterFactory(SuggestionPopupItemAdapter.class));
417 registerFactory("suggestionPopupSelectionListener", new AdapterFactory(SuggestionPopupSelectionAdapter.class));
418 registerFactory("suggestionPopupStateListener", new AdapterFactory(SuggestionPopupStateAdapter.class));
419 registerFactory("tablePaneListener", new AdapterFactory(TablePaneAdapter.class));
420 registerFactory("tablePaneAttributeListener", new AdapterFactory(TablePaneAttributeAdapter.class));
421 registerFactory("tableViewListener", new AdapterFactory(TableViewAdapter.class));
422 registerFactory("tableViewBindingListener", new AdapterFactory(TableViewBindingAdapter.class));
423 registerFactory("tableViewColumnListener", new AdapterFactory(TableViewColumnAdapter.class));
424 registerFactory("tableViewHeaderListener", new AdapterFactory(TableViewHeaderAdapter.class));
425 registerFactory("tableViewHeaderPressListener", new AdapterFactory(TableViewHeaderPressAdapter.class));
426 registerFactory("tableViewRowListener", new AdapterFactory(TableViewRowAdapter.class));
427 registerFactory("tableViewSelectionListener", new AdapterFactory(TableViewSelectionAdapter.class));
428 registerFactory("tableViewSortListener", new AdapterFactory(TableViewSortAdapter.class));
429 registerFactory("tabPaneListener", new AdapterFactory(TabPaneAdapter.class));
430 registerFactory("tabPaneAttributeListener", new AdapterFactory(TabPaneAttributeAdapter.class));
431 registerFactory("tabPaneSelectionListener", new AdapterFactory(TabPaneSelectionAdapter.class));
432 registerFactory("textAreaListener", new AdapterFactory(TextAreaAdapter.class));
433 registerFactory("textAreaBindingListener", new AdapterFactory(TextAreaBindingAdapter.class));
434 registerFactory("textAreaContentListener", new AdapterFactory(TextAreaContentAdapter.class));
435 registerFactory("textAreaSelectionListener", new AdapterFactory(TextAreaSelectionAdapter.class));
436 registerFactory("textInputListener", new AdapterFactory(TextInputAdapter.class));
437 registerFactory("textInputBindingListener", new AdapterFactory(TextInputBindingAdapter.class));
438 registerFactory("textInputContentListener", new AdapterFactory(TextInputContentAdapter.class));
439 registerFactory("textInputSelectionListener", new AdapterFactory(TextInputSelectionAdapter.class));
440 registerFactory("textNodeListener", new AdapterFactory(TextNodeAdapter.class));
441 registerFactory("textPaneListener", new AdapterFactory(TextPaneAdapter.class));
442 registerFactory("textPaneCharacterListener", new AdapterFactory(TextPaneCharacterAdapter.class));
443 registerFactory("textPaneSelectionListener", new AdapterFactory(TextPaneSelectionAdapter.class));
444 registerFactory("transitionListener", new AdapterFactory(TransitionAdapter.class));
445 registerFactory("treeViewListener", new AdapterFactory(TreeViewAdapter.class));
446 registerFactory("treeViewBranchListener", new AdapterFactory(TreeViewBranchAdapter.class));
447 registerFactory("treeViewNodeListener", new AdapterFactory(TreeViewNodeAdapter.class));
448 registerFactory("treeViewNodeStateListener", new AdapterFactory(TreeViewNodeStateAdapter.class));
449 registerFactory("treeViewSelectionListener", new AdapterFactory(TreeViewSelectionAdapter.class));
450 registerFactory("viewportListener", new AdapterFactory(ViewportAdapter.class));
451 registerFactory("windowActionMappingListener", new AdapterFactory(WindowActionMappingAdapter.class));
452 registerFactory("windowListener", new AdapterFactory(WindowAdapter.class));
453 registerFactory("windowClassListener", new AdapterFactory(WindowClassAdapter.class));
454 registerFactory("windowStateListener", new AdapterFactory(WindowStateAdapter.class));
455
456 setFactories(factories);
457
458 Closure c1 = new Closure(this) {
459 @Override
460 public Object call(Object... args) {
461 return handleIdAttribute(args);
462 }
463
464 private Object handleIdAttribute(Object[] args) {
465 FactoryBuilderSupport builder = (FactoryBuilderSupport) args[0];
466 Object node = args[1];
467 Map attributes = (Map) args[2];
468 if (attributes.containsKey("id")) {
469 String id = attributes.remove("id").toString();
470 builder.setVariable(id, node);
471
472 // set id: as name: if node supports the property
473 try {
474 Object name = getPropertyValue(node, "name");
475 if (name == null) {
476 setPropertyValue(node, "name", id);
477 }
478 } catch (PropertyException pe) {
479 // ignore
480 }
481 }
482 return null;
483 }
484 };
485 Closure c2 = new MethodClosure(ButtonGroupFactory.class, "buttonGroupAttributeDelegate");
486 setAttributeDelegates(newList(c1, c2));
487 }
488
489 private void registerFactory(String name, Factory factory) {
490 factories.put(name, factory);
491 }
492
493 private void registerBeanFactory(String name, Class pivotBeanClass) {
494 registerBeanFactory(name, pivotBeanClass, true);
495 }
496
497 private void registerBeanFactory(String name, Class pivotBeanClass, boolean leaf) {
498 registerFactory(name, new BeanFactory(pivotBeanClass, leaf));
499 }
500
501 private void registerPivotBeanFactory(String name, Class pivotBeanClass) {
502 registerPivotBeanFactory(name, pivotBeanClass, true);
503 }
504
505 private void registerPivotBeanFactory(String name, Class pivotBeanClass, boolean leaf) {
506 registerFactory(name, new PivotBeanFactory(pivotBeanClass, leaf));
507 }
508
509 private void registerPivotComponentFactory(String name, Class pivotBeanClass) {
510 registerPivotComponentFactory(name, pivotBeanClass, true);
511 }
512
513 private void registerPivotComponentFactory(String name, Class pivotBeanClass, boolean leaf) {
514 registerFactory(name, new ComponentFactory(pivotBeanClass, leaf));
515 }
516
517 private void registerPivotContainerFactory(String name, Class pivotBeanClass) {
518 registerPivotContainerFactory(name, pivotBeanClass, true);
519 }
520
521 private void registerPivotContainerFactory(String name, Class pivotBeanClass, boolean singleElement) {
522 registerFactory(name, singleElement ? new SingleElementContainerFactory(pivotBeanClass, "content", Component.class) : new ContainerFactory(pivotBeanClass));
523 }
524 }
|