apps/scenebuilder/SceneBuilderKit/src/com/oracle/javafx/scenebuilder/kit/editor/panel/css/CssContentMaker.java

Print this page
rev 9240 : 8076423: JEP 253: Prepare JavaFX UI Controls & CSS APIs for Modularization


  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                 }