92 // makes it look to css like the user set the value and css will not
93 // override. Initializing focusTraversable by calling set on the
94 // CssMetaData ensures that css will be able to override the value.
95 ((StyleableProperty<Boolean>)(WritableValue<Boolean>)focusTraversableProperty()).applyStyle(null, Boolean.FALSE);
96 }
97
98 /***************************************************************************
99 * *
100 * Properties *
101 * *
102 **************************************************************************/
103
104 private ChangeListener<Boolean> mnemonicStateListener = (observable, oldValue, newValue) -> {
105 NodeHelper.showMnemonicsProperty(Label.this).setValue(newValue);
106 };
107
108 /**
109 * A Label can act as a label for a different Control or
110 * Node. This is used for Mnemonics and Accelerator parsing.
111 * This allows setting of the target Node.
112 */
113 public ObjectProperty<Node> labelForProperty() {
114 if (labelFor == null) {
115 labelFor = new ObjectPropertyBase<Node>() {
116 Node oldValue = null;
117 @Override protected void invalidated() {
118 if (oldValue != null) {
119 NodeHelper.getNodeAccessor().setLabeledBy(oldValue, null);
120 NodeHelper.showMnemonicsProperty(oldValue).removeListener(mnemonicStateListener);
121 }
122 final Node node = get();
123 if (node != null) {
124 NodeHelper.getNodeAccessor().setLabeledBy(node, Label.this);
125 NodeHelper.showMnemonicsProperty(node).addListener(mnemonicStateListener);
126 NodeHelper.setShowMnemonics(Label.this, NodeHelper.isShowMnemonics(node));
127 } else {
128 NodeHelper.setShowMnemonics(Label.this, false);
129 }
130 oldValue = node;
131 }
|
92 // makes it look to css like the user set the value and css will not
93 // override. Initializing focusTraversable by calling set on the
94 // CssMetaData ensures that css will be able to override the value.
95 ((StyleableProperty<Boolean>)(WritableValue<Boolean>)focusTraversableProperty()).applyStyle(null, Boolean.FALSE);
96 }
97
98 /***************************************************************************
99 * *
100 * Properties *
101 * *
102 **************************************************************************/
103
104 private ChangeListener<Boolean> mnemonicStateListener = (observable, oldValue, newValue) -> {
105 NodeHelper.showMnemonicsProperty(Label.this).setValue(newValue);
106 };
107
108 /**
109 * A Label can act as a label for a different Control or
110 * Node. This is used for Mnemonics and Accelerator parsing.
111 * This allows setting of the target Node.
112 * @return the label for this node
113 */
114 public ObjectProperty<Node> labelForProperty() {
115 if (labelFor == null) {
116 labelFor = new ObjectPropertyBase<Node>() {
117 Node oldValue = null;
118 @Override protected void invalidated() {
119 if (oldValue != null) {
120 NodeHelper.getNodeAccessor().setLabeledBy(oldValue, null);
121 NodeHelper.showMnemonicsProperty(oldValue).removeListener(mnemonicStateListener);
122 }
123 final Node node = get();
124 if (node != null) {
125 NodeHelper.getNodeAccessor().setLabeledBy(node, Label.this);
126 NodeHelper.showMnemonicsProperty(node).addListener(mnemonicStateListener);
127 NodeHelper.setShowMnemonics(Label.this, NodeHelper.isShowMnemonics(node));
128 } else {
129 NodeHelper.setShowMnemonics(Label.this, false);
130 }
131 oldValue = node;
132 }
|