< prev index next >
modules/controls/src/main/java/javafx/scene/control/PopupControl.java
Print this page
*** 47,61 ****
--- 47,65 ----
import javafx.stage.PopupWindow;
import com.sun.javafx.application.PlatformImpl;
import javafx.css.CssMetaData;
import javafx.css.PseudoClass;
import com.sun.javafx.css.StyleManager;
+ import com.sun.javafx.scene.NodeHelper;
+ import com.sun.javafx.scene.ParentHelper;
import javafx.css.Styleable;
import javafx.css.StyleableStringProperty;
import javafx.css.converter.StringConverter;
import com.sun.javafx.scene.control.Logging;
+ import com.sun.javafx.scene.layout.PaneHelper;
import com.sun.javafx.stage.PopupWindowHelper;
+ import com.sun.javafx.util.Utils;
import javafx.css.StyleableProperty;
import javafx.stage.Window;
import sun.util.logging.PlatformLogger;
import sun.util.logging.PlatformLogger.Level;
*** 268,283 ****
bridge.getChildren().setAll(n);
} else {
bridge.getChildren().clear();
}
! // calling impl_reapplyCSS() as the styleable properties may now
// be different, as we will now be able to return styleable properties
! // belonging to the skin. If impl_reapplyCSS() is not called, the
// getCssMetaData() method is never called, so the
// skin properties are never exposed.
! bridge.impl_reapplyCSS();
// DEBUG: Log that we've changed the skin
final PlatformLogger logger = Logging.getControlsLogger();
if (logger.isLoggable(Level.FINEST)) {
logger.finest("Stored skin[" + getValue() + "] on " + this);
--- 272,287 ----
bridge.getChildren().setAll(n);
} else {
bridge.getChildren().clear();
}
! // calling NodeHelper.reapplyCSS() as the styleable properties may now
// be different, as we will now be able to return styleable properties
! // belonging to the skin. If NodeHelper.reapplyCSS() is not called, the
// getCssMetaData() method is never called, so the
// skin properties are never exposed.
! NodeHelper.reapplyCSS(bridge);
// DEBUG: Log that we've changed the skin
final PlatformLogger logger = Logging.getControlsLogger();
if (logger.isLoggable(Level.FINEST)) {
logger.finest("Stored skin[" + getValue() + "] on " + this);
*** 1106,1115 ****
--- 1110,1124 ----
*/
protected class CSSBridge extends Pane {
private final PopupControl popupControl = PopupControl.this;
+ {
+ // To initialize the class helper at the begining each constructor of this class
+ CSSBridgeHelper.initHelper(this);
+ }
+
/**
* Requests a layout pass to be performed before the next scene is
* rendered. This is batched up asynchronously to happen once per
* "pulse", or frame of animation.
* <p/>
*** 1134,1182 ****
@Override
public Styleable getStyleableParent() {
return PopupControl.this.getStyleableParent();
}
- /**
- * @treatAsPrivate implementation detail
- * @deprecated This is an internal API that is not intended for use and will be removed in the next version
- */
- @Deprecated
- protected void setSkinClassName(String skinClassName) { /* no-op - retain for binary compatibility */ }
-
@Override
public List<CssMetaData<? extends Styleable, ?>> getCssMetaData() {
return PopupControl.this.getCssMetaData();
}
! /**
! * @treatAsPrivate implementation detail
! * @deprecated This is an internal API that is not intended for use and will be removed in the next version
! */
! @Deprecated
! @Override public List<String> impl_getAllParentStylesheets() {
Styleable styleable = getStyleableParent();
if (styleable instanceof Parent) {
! return ((Parent)styleable).impl_getAllParentStylesheets();
}
return null;
}
! /**
! * @treatAsPrivate implementation detail
! * @deprecated This is an internal API that is not intended for use and will be removed in the next version
*/
! @Deprecated
! @Override protected void impl_processCSS() {
! super.impl_processCSS();
if (getSkin() == null) {
// try to create default skin
final Skin<?> defaultSkin = createDefaultSkin();
if (defaultSkin != null) {
skinProperty().set(defaultSkin);
! super.impl_processCSS();
} else {
final String msg = "The -fx-skin property has not been defined in CSS for " + this +
" and createDefaultSkin() returned null.";
final List<CssParser.ParseError> errors = StyleManager.getErrors();
if (errors != null) {
--- 1143,1177 ----
@Override
public Styleable getStyleableParent() {
return PopupControl.this.getStyleableParent();
}
@Override
public List<CssMetaData<? extends Styleable, ?>> getCssMetaData() {
return PopupControl.this.getCssMetaData();
}
! List<String> getAllParentStylesheets() {
Styleable styleable = getStyleableParent();
if (styleable instanceof Parent) {
! return ParentHelper.getAllParentStylesheets((Parent)styleable);
}
return null;
}
! /*
! * Note: This method MUST only be called via its accessor method.
*/
! private void doProcessCSS() {
! CSSBridgeHelper.superProcessCSS(this);
if (getSkin() == null) {
// try to create default skin
final Skin<?> defaultSkin = createDefaultSkin();
if (defaultSkin != null) {
skinProperty().set(defaultSkin);
! CSSBridgeHelper.superProcessCSS(this);
} else {
final String msg = "The -fx-skin property has not been defined in CSS for " + this +
" and createDefaultSkin() returned null.";
final List<CssParser.ParseError> errors = StyleManager.getErrors();
if (errors != null) {
*** 1188,1193 ****
--- 1183,1220 ----
}
}
}
+ /*
+ * Used to access internal methods of CSSBridge.
+ */
+ static final class CSSBridgeHelper extends PaneHelper {
+ private static final CSSBridgeHelper theInstance;
+
+ static {
+ theInstance = new CSSBridgeHelper();
+ }
+
+ private static CSSBridgeHelper getInstance() {
+ return theInstance;
+ }
+
+ public static void initHelper(CSSBridge cssBridge) {
+ setHelper(cssBridge, getInstance());
+ }
+
+ public static void superProcessCSS(Node node) {
+ ((CSSBridgeHelper) getHelper(node)).superProcessCSSImpl(node);
+ }
+
+ void superProcessCSSImpl(Node node) {
+ super.processCSSImpl(node);
+ }
+
+ protected void processCSSImpl(Node node) {
+ ((CSSBridge) node).doProcessCSS();
+ }
+
+ }
+
}
< prev index next >