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.editor.panel.css;
33
34 import com.oracle.javafx.scenebuilder.kit.editor.panel.css.CssContentMaker.CssPropertyState.CssStyle;
35 import com.oracle.javafx.scenebuilder.kit.editor.panel.css.NodeCssState.CssProperty;
36 import com.oracle.javafx.scenebuilder.kit.fxom.FXOMInstance;
37 import com.oracle.javafx.scenebuilder.kit.fxom.FXOMObject;
38 import com.oracle.javafx.scenebuilder.kit.metadata.Metadata;
39 import com.oracle.javafx.scenebuilder.kit.metadata.property.PropertyMetadata;
40 import com.oracle.javafx.scenebuilder.kit.metadata.property.ValuePropertyMetadata;
41 import com.oracle.javafx.scenebuilder.kit.metadata.util.PropertyName;
42 import com.oracle.javafx.scenebuilder.kit.util.CssInternal;
43 import com.oracle.javafx.scenebuilder.kit.util.Deprecation;
44 import com.sun.javafx.css.ParsedValueImpl;
45 import com.sun.javafx.css.Rule;
46 import com.sun.javafx.css.Style;
47 import javafx.css.StyleOrigin;
48 import java.net.MalformedURLException;
49 import java.net.URL;
50 import java.util.*;
51 import javafx.css.CssMetaData;
52 import javafx.css.ParsedValue;
53 import javafx.css.StyleableProperty;
54 import javafx.scene.Node;
55 import javafx.scene.Parent;
56
57 /**
58 * This class construct the model exposed by the CSS Panel.
59 *
60 * @treatAsPrivate
61 */
62 public class CssContentMaker {
63
64 private CssContentMaker() {
65 assert false;
66 }
272 InitialPropertyState val
273 = new InitialPropertyState(cssMeta.getProperty(), fxValue, cssValue);
274 if (cssMeta.getSubProperties() != null && !cssMeta.getSubProperties().isEmpty()) {
275 for (CssMetaData sub : cssMeta.getSubProperties()) {
276 Object subValue
277 = CssValueConverter.getSubPropertyValue(sub.getProperty(), fxValue);
278 String subCssValue = CssValueConverter.toCssString(subValue);
279 PropertyState subProp
280 = new InitialPropertyState(sub.getProperty(), subValue, subCssValue);
281 val.getSubProperties().add(subProp);
282 }
283 }
284 return val;
285 }
286
287 // Retrieve the styles associated to the value. This is the case of lookup (or variable)
288 @SuppressWarnings("rawtypes")
289 protected static CssStyle retrieveStyle(List<Style> styles, Style style) {
290 CssStyle st = new CssStyle(style);
291 ParsedValue parsedValue = style.getDeclaration().getParsedValue();
292 assert parsedValue instanceof ParsedValueImpl;
293 ParsedValueImpl parsedValueImpl = (ParsedValueImpl) parsedValue;
294 if (parsedValueImpl.isContainsLookups() || parsedValueImpl.isLookup()) {
295 retrieveStylesFromParsedValue(styles, st, style.getDeclaration().getParsedValue());
296 }
297 return st;
298 }
299
300 @SuppressWarnings("rawtypes")
301 private static void retrieveStylesFromParsedValue(
302 List<Style> lst, CssStyle current, ParsedValue<?, ?> parsedValue) {
303 final Object val = parsedValue.getValue();
304 if (val instanceof ParsedValue[][]) {
305 // If ParsedValue is a layered sequence of values, resolve the lookups for each.
306
307 final ParsedValue[][] layers2 = (ParsedValue[][]) val;
308 for (ParsedValue[] layers : layers2) {
309 for (ParsedValue layer : layers) {
310 if (layer == null) {
311 continue;
312 }
313 retrieveStylesFromParsedValue(lst, current, layer);
314 }
|
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.editor.panel.css;
33
34 import com.oracle.javafx.scenebuilder.kit.editor.panel.css.CssContentMaker.CssPropertyState.CssStyle;
35 import com.oracle.javafx.scenebuilder.kit.editor.panel.css.NodeCssState.CssProperty;
36 import com.oracle.javafx.scenebuilder.kit.fxom.FXOMInstance;
37 import com.oracle.javafx.scenebuilder.kit.fxom.FXOMObject;
38 import com.oracle.javafx.scenebuilder.kit.metadata.Metadata;
39 import com.oracle.javafx.scenebuilder.kit.metadata.property.PropertyMetadata;
40 import com.oracle.javafx.scenebuilder.kit.metadata.property.ValuePropertyMetadata;
41 import com.oracle.javafx.scenebuilder.kit.metadata.util.PropertyName;
42 import com.oracle.javafx.scenebuilder.kit.util.CssInternal;
43 import com.oracle.javafx.scenebuilder.kit.util.Deprecation;
44 import javafx.css.Rule;
45 import javafx.css.Style;
46 import javafx.css.StyleOrigin;
47 import java.net.MalformedURLException;
48 import java.net.URL;
49 import java.util.*;
50 import javafx.css.CssMetaData;
51 import javafx.css.ParsedValue;
52 import javafx.css.StyleableProperty;
53 import javafx.scene.Node;
54 import javafx.scene.Parent;
55
56 /**
57 * This class construct the model exposed by the CSS Panel.
58 *
59 * @treatAsPrivate
60 */
61 public class CssContentMaker {
62
63 private CssContentMaker() {
64 assert false;
65 }
271 InitialPropertyState val
272 = new InitialPropertyState(cssMeta.getProperty(), fxValue, cssValue);
273 if (cssMeta.getSubProperties() != null && !cssMeta.getSubProperties().isEmpty()) {
274 for (CssMetaData sub : cssMeta.getSubProperties()) {
275 Object subValue
276 = CssValueConverter.getSubPropertyValue(sub.getProperty(), fxValue);
277 String subCssValue = CssValueConverter.toCssString(subValue);
278 PropertyState subProp
279 = new InitialPropertyState(sub.getProperty(), subValue, subCssValue);
280 val.getSubProperties().add(subProp);
281 }
282 }
283 return val;
284 }
285
286 // Retrieve the styles associated to the value. This is the case of lookup (or variable)
287 @SuppressWarnings("rawtypes")
288 protected static CssStyle retrieveStyle(List<Style> styles, Style style) {
289 CssStyle st = new CssStyle(style);
290 ParsedValue parsedValue = style.getDeclaration().getParsedValue();
291 if (parsedValue.isContainsLookups() || parsedValue.isLookup()) {
292 retrieveStylesFromParsedValue(styles, st, style.getDeclaration().getParsedValue());
293 }
294 return st;
295 }
296
297 @SuppressWarnings("rawtypes")
298 private static void retrieveStylesFromParsedValue(
299 List<Style> lst, CssStyle current, ParsedValue<?, ?> parsedValue) {
300 final Object val = parsedValue.getValue();
301 if (val instanceof ParsedValue[][]) {
302 // If ParsedValue is a layered sequence of values, resolve the lookups for each.
303
304 final ParsedValue[][] layers2 = (ParsedValue[][]) val;
305 for (ParsedValue[] layers : layers2) {
306 for (ParsedValue layer : layers) {
307 if (layer == null) {
308 continue;
309 }
310 retrieveStylesFromParsedValue(lst, current, layer);
311 }
|