01 /*
02 * SPDX-License-Identifier: Apache-2.0
03 *
04 * Copyright 2008-2017 the original author or authors.
05 *
06 * Licensed under the Apache License, Version 2.0 (the "License");
07 * you may not use this file except in compliance with the License.
08 * You may obtain a copy of the License at
09 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18 package griffon.builder.pivot.factory
19
20 import org.apache.pivot.wtk.ImageView
21 import org.apache.pivot.wtk.media.Image
22
23 import static griffon.builder.pivot.PivotUtils.setBeanProperty
24
25 /**
26 * @author Andres Almiray
27 */
28 class ImageViewFactory extends ComponentFactory {
29 ImageViewFactory() {
30 super(ImageView)
31 }
32
33 Object newInstance(FactoryBuilderSupport builder, Object name, Object value, Map attributes) throws InstantiationException, IllegalAccessException {
34 if (value instanceof CharSequence) value = value.toString()
35 if (value instanceof String || value instanceof URL || value instanceof Image) {
36 ImageView view = new ImageView()
37 view.setImage(value)
38 return view
39 }
40
41 if (FactoryBuilderSupport.checkValueIsTypeNotString(value, name, ImageView)) {
42 return value
43 }
44
45 return new ImageView()
46 }
47
48 boolean onHandleNodeAttributes(FactoryBuilderSupport builder, Object node, Map attributes) {
49 attributes.each { property, value ->
50 setBeanProperty(property, value, node)
51 }
52
53 return false
54 }
55
56 void setChild(FactoryBuilderSupport builder, Object parent, Object child) {
57 if (child instanceof Image) parent.setImage(child)
58 else super.setChild(builder, parent, child)
59 }
60 }
|