Browse Source

:recycle: Minor changes

:recycle: Allow controls using MFXLabeledSkinBase to display only the graphic node

:recycle: Improve width/height computation for MFXRectangleToggleNode

Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
palexdev 3 years ago
parent
commit
a7148073e3

+ 2 - 0
CHANGELOG.md

@@ -22,6 +22,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 ### Changes
 
 - Added/Updated some font resources
+- Allow controls using MFXLabeledSkinBase to display only the graphic node
+- Improve width/height computation for MFXRectangleToggleNode
 
 ## [11.13.3] - 10-03-2022
 

+ 9 - 1
demo/src/test/java/Playground.java

@@ -1,9 +1,13 @@
 import io.github.palexdev.materialfx.controls.MFXButton;
 import io.github.palexdev.materialfx.controls.MFXTextField;
+import io.github.palexdev.materialfx.controls.MFXToggleButton;
+import io.github.palexdev.materialfx.font.MFXFontIcon;
 import javafx.application.Application;
 import javafx.geometry.Pos;
 import javafx.scene.Scene;
+import javafx.scene.control.ContentDisplay;
 import javafx.scene.layout.VBox;
+import javafx.scene.paint.Color;
 import javafx.stage.Stage;
 import org.scenicview.ScenicView;
 
@@ -25,7 +29,11 @@ public class Playground extends Application {
 			textField.setMeasureUnit(measureUnit);
 		});
 
-		vBox.getChildren().addAll(button, textField);
+		MFXToggleButton tb = new MFXToggleButton("Text", MFXFontIcon.getRandomIcon(24, Color.BLACK));
+		tb.setContentDisposition(ContentDisplay.GRAPHIC_ONLY);
+		tb.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
+
+		vBox.getChildren().addAll(button, textField, tb);
 		Scene scene = new Scene(vBox, 800, 800);
 		primaryStage.setScene(scene);
 		primaryStage.show();

+ 11 - 1
materialfx/src/main/java/io/github/palexdev/materialfx/skins/MFXRectangleToggleNodeSkin.java

@@ -173,7 +173,7 @@ public class MFXRectangleToggleNodeSkin extends SkinBase<MFXRectangleToggleNode>
 	// Override Methods
 	//================================================================================
 	@Override
-	protected double computeMinWidth(double height, double topInset, double rightInset, double bottomInset, double leftInset) {
+	protected double computePrefWidth(double height, double topInset, double rightInset, double bottomInset, double leftInset) {
 		MFXRectangleToggleNode toggleNode = getSkinnable();
 		Node graphic = toggleNode.getGraphic();
 		if (graphic != null) {
@@ -192,6 +192,16 @@ public class MFXRectangleToggleNodeSkin extends SkinBase<MFXRectangleToggleNode>
 				rightInset;
 	}
 
+	@Override
+	protected double computePrefHeight(double width, double topInset, double rightInset, double bottomInset, double leftInset) {
+		MFXRectangleToggleNode toggleNode = getSkinnable();
+		Node graphic = toggleNode.getGraphic();
+		if (graphic != null) {
+			return topInset + graphic.prefHeight(-1) + bottomInset;
+		}
+		return super.computePrefHeight(width, topInset, rightInset, bottomInset, leftInset);
+	}
+
 	@Override
 	protected double computeMaxWidth(double height, double topInset, double rightInset, double bottomInset, double leftInset) {
 		return getSkinnable().prefWidth(-1);

+ 8 - 2
materialfx/src/main/java/io/github/palexdev/materialfx/skins/base/MFXLabeledSkinBase.java

@@ -128,7 +128,9 @@ public abstract class MFXLabeledSkinBase<C extends Labeled & MFXLabeled> extends
 				BorderPane.setMargin(text, InsetsFactory.left(gap));
 				break;
 			}
-			case GRAPHIC_ONLY:
+			case GRAPHIC_ONLY: {
+				break;
+			}
 			case CENTER: {
 				topContainer.setCenter(controlContainer);
 				BorderPane.setMargin(text, InsetsFactory.none());
@@ -175,8 +177,12 @@ public abstract class MFXLabeledSkinBase<C extends Labeled & MFXLabeled> extends
 				minW = Math.max(getControlContainer().prefWidth(-1), text.prefWidth(-1));
 				break;
 			}
-			case CENTER:
 			case GRAPHIC_ONLY: {
+				Node graphic = labeled.getGraphic();
+				minW = (graphic != null) ? graphic.prefWidth(-1) : 0.0;
+				break;
+			}
+			case CENTER: {
 				minW = getControlContainer().prefWidth(-1);
 			}
 		}