199 **************************************************************************/ 200 201 /** {@inheritDoc} */ 202 @Override public void dispose() { 203 getSkinnable().getItems().removeListener(itemsChangedListener); 204 super.dispose(); 205 if (popup != null ) { 206 if (popup.getSkin() != null && popup.getSkin().getNode() != null) { 207 ContextMenuContent cmContent = (ContextMenuContent)popup.getSkin().getNode(); 208 cmContent.dispose(); 209 } 210 popup.setSkin(null); 211 popup = null; 212 } 213 } 214 215 /** {@inheritDoc} */ 216 @Override protected double computeMinWidth(double height, double topInset, double rightInset, double bottomInset, double leftInset) { 217 return leftInset 218 + label.minWidth(height) 219 + snapSize(arrowButton.minWidth(height)) 220 + rightInset; 221 } 222 223 /** {@inheritDoc} */ 224 @Override protected double computeMinHeight(double width, double topInset, double rightInset, double bottomInset, double leftInset) { 225 return topInset 226 + Math.max(label.minHeight(width), snapSize(arrowButton.minHeight(-1))) 227 + bottomInset; 228 } 229 230 /** {@inheritDoc} */ 231 @Override protected double computePrefWidth(double height, double topInset, double rightInset, double bottomInset, double leftInset) { 232 return leftInset 233 + label.prefWidth(height) 234 + snapSize(arrowButton.prefWidth(height)) 235 + rightInset; 236 } 237 238 /** {@inheritDoc} */ 239 @Override protected double computePrefHeight(double width, double topInset, double rightInset, double bottomInset, double leftInset) { 240 return topInset 241 + Math.max(label.prefHeight(width), snapSize(arrowButton.prefHeight(-1))) 242 + bottomInset; 243 } 244 245 /** {@inheritDoc} */ 246 @Override protected double computeMaxWidth(double height, double topInset, double rightInset, double bottomInset, double leftInset) { 247 return getSkinnable().prefWidth(height); 248 } 249 250 /** {@inheritDoc} */ 251 @Override protected double computeMaxHeight(double width, double topInset, double rightInset, double bottomInset, double leftInset) { 252 return getSkinnable().prefHeight(width); 253 } 254 255 /** {@inheritDoc} */ 256 @Override protected void layoutChildren(final double x, final double y, 257 final double w, final double h) { 258 final double arrowButtonWidth = snapSize(arrowButton.prefWidth(-1)); 259 label.resizeRelocate(x, y, w - arrowButtonWidth, h); 260 arrowButton.resizeRelocate(x + (w - arrowButtonWidth), y, arrowButtonWidth, h); 261 } 262 263 264 265 /*************************************************************************** 266 * * 267 * Private implementation * 268 * * 269 **************************************************************************/ 270 271 MenuButtonBehaviorBase<C> getBehavior() { 272 return null; 273 } 274 275 private void show() { 276 if (!popup.isShowing()) { 277 popup.show(getSkinnable(), getSkinnable().getPopupSide(), 0, 0); 278 } | 199 **************************************************************************/ 200 201 /** {@inheritDoc} */ 202 @Override public void dispose() { 203 getSkinnable().getItems().removeListener(itemsChangedListener); 204 super.dispose(); 205 if (popup != null ) { 206 if (popup.getSkin() != null && popup.getSkin().getNode() != null) { 207 ContextMenuContent cmContent = (ContextMenuContent)popup.getSkin().getNode(); 208 cmContent.dispose(); 209 } 210 popup.setSkin(null); 211 popup = null; 212 } 213 } 214 215 /** {@inheritDoc} */ 216 @Override protected double computeMinWidth(double height, double topInset, double rightInset, double bottomInset, double leftInset) { 217 return leftInset 218 + label.minWidth(height) 219 + snapSizeX(arrowButton.minWidth(height)) 220 + rightInset; 221 } 222 223 /** {@inheritDoc} */ 224 @Override protected double computeMinHeight(double width, double topInset, double rightInset, double bottomInset, double leftInset) { 225 return topInset 226 + Math.max(label.minHeight(width), snapSizeY(arrowButton.minHeight(-1))) 227 + bottomInset; 228 } 229 230 /** {@inheritDoc} */ 231 @Override protected double computePrefWidth(double height, double topInset, double rightInset, double bottomInset, double leftInset) { 232 return leftInset 233 + label.prefWidth(height) 234 + snapSizeX(arrowButton.prefWidth(height)) 235 + rightInset; 236 } 237 238 /** {@inheritDoc} */ 239 @Override protected double computePrefHeight(double width, double topInset, double rightInset, double bottomInset, double leftInset) { 240 return topInset 241 + Math.max(label.prefHeight(width), snapSizeY(arrowButton.prefHeight(-1))) 242 + bottomInset; 243 } 244 245 /** {@inheritDoc} */ 246 @Override protected double computeMaxWidth(double height, double topInset, double rightInset, double bottomInset, double leftInset) { 247 return getSkinnable().prefWidth(height); 248 } 249 250 /** {@inheritDoc} */ 251 @Override protected double computeMaxHeight(double width, double topInset, double rightInset, double bottomInset, double leftInset) { 252 return getSkinnable().prefHeight(width); 253 } 254 255 /** {@inheritDoc} */ 256 @Override protected void layoutChildren(final double x, final double y, 257 final double w, final double h) { 258 final double arrowButtonWidth = snapSizeX(arrowButton.prefWidth(-1)); 259 label.resizeRelocate(x, y, w - arrowButtonWidth, h); 260 arrowButton.resizeRelocate(x + (w - arrowButtonWidth), y, arrowButtonWidth, h); 261 } 262 263 264 265 /*************************************************************************** 266 * * 267 * Private implementation * 268 * * 269 **************************************************************************/ 270 271 MenuButtonBehaviorBase<C> getBehavior() { 272 return null; 273 } 274 275 private void show() { 276 if (!popup.isShowing()) { 277 popup.show(getSkinnable(), getSkinnable().getPopupSide(), 0, 0); 278 } |