1 /* 2 * Copyright (c) 2014, Oracle and/or its affiliates. 3 * All rights reserved. Use is subject to license terms. 4 * 5 * This file is available and licensed under the following license: 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 11 * - Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * - Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in 15 * the documentation and/or other materials provided with the distribution. 16 * - Neither the name of Oracle Corporation nor the names of its 17 * contributors may be used to endorse or promote products derived 18 * from this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 package com.oracle.javafx.scenebuilder.kit.metadata.property.value.effect; 33 34 import com.oracle.javafx.scenebuilder.kit.fxom.FXOMDocument; 35 import com.oracle.javafx.scenebuilder.kit.fxom.FXOMInstance; 36 import com.oracle.javafx.scenebuilder.kit.metadata.property.value.ComplexPropertyMetadata; 37 import com.oracle.javafx.scenebuilder.kit.metadata.util.InspectorPath; 38 import com.oracle.javafx.scenebuilder.kit.metadata.util.PropertyName; 39 import javafx.scene.effect.Blend; 40 import javafx.scene.effect.Bloom; 41 import javafx.scene.effect.BoxBlur; 42 import javafx.scene.effect.ColorAdjust; 43 import javafx.scene.effect.ColorInput; 44 import javafx.scene.effect.DisplacementMap; 45 import javafx.scene.effect.DropShadow; 46 import javafx.scene.effect.Effect; 47 import javafx.scene.effect.GaussianBlur; 48 import javafx.scene.effect.Glow; 49 import javafx.scene.effect.ImageInput; 50 import javafx.scene.effect.InnerShadow; 51 import javafx.scene.effect.Lighting; 52 import javafx.scene.effect.MotionBlur; 53 import javafx.scene.effect.PerspectiveTransform; 54 import javafx.scene.effect.Reflection; 55 import javafx.scene.effect.SepiaTone; 56 import javafx.scene.effect.Shadow; 57 58 /** 59 * 60 * 61 */ 62 public class EffectPropertyMetadata extends ComplexPropertyMetadata<Effect> { 63 64 public EffectPropertyMetadata(PropertyName name, boolean readWrite, 65 Effect defaultValue, InspectorPath inspectorPath) { 66 super(name, Effect.class, readWrite, defaultValue, inspectorPath); 67 68 } 69 70 /* 71 * ComplexPropertyMetadata 72 */ 73 74 @Override 75 public FXOMInstance makeFxomInstanceFromValue(Effect value, FXOMDocument fxomDocument) { 76 final FXOMInstance result; 77 78 if (value instanceof Blend) { 79 final BlendPropertyMetadata subclassMetadata 80 = new BlendPropertyMetadata(getName(), isReadWrite(), null, getInspectorPath()); 81 result = subclassMetadata.makeFxomInstanceFromValue((Blend) value, fxomDocument); 82 } else if (value instanceof Bloom) { 83 final BloomPropertyMetadata subclassMetadata 84 = new BloomPropertyMetadata(getName(), isReadWrite(), null, getInspectorPath()); 85 result = subclassMetadata.makeFxomInstanceFromValue((Bloom) value, fxomDocument); 86 } else if (value instanceof BoxBlur) { 87 final BoxBlurPropertyMetadata subclassMetadata 88 = new BoxBlurPropertyMetadata(getName(), isReadWrite(), null, getInspectorPath()); 89 result = subclassMetadata.makeFxomInstanceFromValue((BoxBlur) value, fxomDocument); 90 } else if (value instanceof ColorAdjust) { 91 final ColorAdjustPropertyMetadata subclassMetadata 92 = new ColorAdjustPropertyMetadata(getName(), isReadWrite(), null, getInspectorPath()); 93 result = subclassMetadata.makeFxomInstanceFromValue((ColorAdjust) value, fxomDocument); 94 } else if (value instanceof ColorInput) { 95 final ColorInputPropertyMetadata subclassMetadata 96 = new ColorInputPropertyMetadata(getName(), isReadWrite(), null, getInspectorPath()); 97 result = subclassMetadata.makeFxomInstanceFromValue((ColorInput) value, fxomDocument); 98 } else if (value instanceof DisplacementMap) { 99 final DisplacementMapPropertyMetadata subclassMetadata 100 = new DisplacementMapPropertyMetadata(getName(), isReadWrite(), null, getInspectorPath()); 101 result = subclassMetadata.makeFxomInstanceFromValue((DisplacementMap) value, fxomDocument); 102 } else if (value instanceof DropShadow) { 103 final DropShadowPropertyMetadata subclassMetadata 104 = new DropShadowPropertyMetadata(getName(), isReadWrite(), null, getInspectorPath()); 105 result = subclassMetadata.makeFxomInstanceFromValue((DropShadow) value, fxomDocument); 106 } else if (value instanceof GaussianBlur) { 107 final GaussianBlurPropertyMetadata subclassMetadata 108 = new GaussianBlurPropertyMetadata(getName(), isReadWrite(), null, getInspectorPath()); 109 result = subclassMetadata.makeFxomInstanceFromValue((GaussianBlur) value, fxomDocument); 110 } else if (value instanceof Glow) { 111 final GlowPropertyMetadata subclassMetadata 112 = new GlowPropertyMetadata(getName(), isReadWrite(), null, getInspectorPath()); 113 result = subclassMetadata.makeFxomInstanceFromValue((Glow) value, fxomDocument); 114 } else if (value instanceof ImageInput) { 115 final ImageInputPropertyMetadata subclassMetadata 116 = new ImageInputPropertyMetadata(getName(), isReadWrite(), null, getInspectorPath()); 117 result = subclassMetadata.makeFxomInstanceFromValue((ImageInput) value, fxomDocument); 118 } else if (value instanceof InnerShadow) { 119 final InnerShadowPropertyMetadata subclassMetadata 120 = new InnerShadowPropertyMetadata(getName(), isReadWrite(), null, getInspectorPath()); 121 result = subclassMetadata.makeFxomInstanceFromValue((InnerShadow) value, fxomDocument); 122 } else if (value instanceof Lighting) { 123 final LightingPropertyMetadata subclassMetadata 124 = new LightingPropertyMetadata(getName(), isReadWrite(), null, getInspectorPath()); 125 result = subclassMetadata.makeFxomInstanceFromValue((Lighting) value, fxomDocument); 126 } else if (value instanceof MotionBlur) { 127 final MotionBlurPropertyMetadata subclassMetadata 128 = new MotionBlurPropertyMetadata(getName(), isReadWrite(), null, getInspectorPath()); 129 result = subclassMetadata.makeFxomInstanceFromValue((MotionBlur) value, fxomDocument); 130 } else if (value instanceof PerspectiveTransform) { 131 final PerspectiveTransformPropertyMetadata subclassMetadata 132 = new PerspectiveTransformPropertyMetadata(getName(), isReadWrite(), null, getInspectorPath()); 133 result = subclassMetadata.makeFxomInstanceFromValue((PerspectiveTransform) value, fxomDocument); 134 } else if (value instanceof Reflection) { 135 final ReflectionPropertyMetadata subclassMetadata 136 = new ReflectionPropertyMetadata(getName(), isReadWrite(), null, getInspectorPath()); 137 result = subclassMetadata.makeFxomInstanceFromValue((Reflection) value, fxomDocument); 138 } else if (value instanceof SepiaTone) { 139 final SepiaTonePropertyMetadata subclassMetadata 140 = new SepiaTonePropertyMetadata(getName(), isReadWrite(), null, getInspectorPath()); 141 result = subclassMetadata.makeFxomInstanceFromValue((SepiaTone) value, fxomDocument); 142 } else if (value instanceof Shadow) { 143 final ShadowPropertyMetadata subclassMetadata 144 = new ShadowPropertyMetadata(getName(), isReadWrite(), null, getInspectorPath()); 145 result = subclassMetadata.makeFxomInstanceFromValue((Shadow) value, fxomDocument); 146 } else { 147 assert false : "unexpected effect class = " + value.getClass().getSimpleName(); //NOI18N 148 result = null; 149 } 150 151 return result; 152 } 153 154 }