From 48170caf605879bcd310c5b41a87d2ea994064b8 Mon Sep 17 00:00:00 2001 From: Daniel Abeshouse Date: Wed, 18 Feb 2026 16:46:33 -0500 Subject: [PATCH 1/3] Center and align the control flow panel --- .../org/alice/ide/controlflow/components/ControlFlowPanel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/ide/src/main/java/org/alice/ide/controlflow/components/ControlFlowPanel.java b/core/ide/src/main/java/org/alice/ide/controlflow/components/ControlFlowPanel.java index 10a4527848..efd0906442 100644 --- a/core/ide/src/main/java/org/alice/ide/controlflow/components/ControlFlowPanel.java +++ b/core/ide/src/main/java/org/alice/ide/controlflow/components/ControlFlowPanel.java @@ -67,7 +67,7 @@ public ControlFlowPanel(ControlFlowComposite composite) { this.internalAddComponent(BoxUtilities.createHorizontalSliver(8)); } } - this.setBorder(BorderFactory.createEmptyBorder(4, 0, 0, 0)); + this.setBorder(BorderFactory.createEmptyBorder(0, 4, 4, 0)); } @Override From f14be5655b203ea6b19d214060b2657553f5cf20 Mon Sep 17 00:00:00 2001 From: Daniel Abeshouse Date: Wed, 18 Feb 2026 16:57:06 -0500 Subject: [PATCH 2/3] Add a little spacing on the right of control flow blocks. --- .../components/MiniControlFlowStatementTemplate.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/ide/src/main/java/org/alice/ide/controlflow/components/MiniControlFlowStatementTemplate.java b/core/ide/src/main/java/org/alice/ide/controlflow/components/MiniControlFlowStatementTemplate.java index 16ea9860c8..273961b931 100644 --- a/core/ide/src/main/java/org/alice/ide/controlflow/components/MiniControlFlowStatementTemplate.java +++ b/core/ide/src/main/java/org/alice/ide/controlflow/components/MiniControlFlowStatementTemplate.java @@ -146,4 +146,9 @@ protected void handleUndisplayable() { // this.removeAllComponents(); super.handleUndisplayable(); } + + @Override + protected int getInsetRight() { + return 6; + } } From 1a6639df1dbf2c82defd9beb33bb17bb6964e439 Mon Sep 17 00:00:00 2001 From: Daniel Abeshouse Date: Wed, 18 Feb 2026 18:15:39 -0500 Subject: [PATCH 3/3] Increase color contrast to show knurl on control flow blocks. --- .../org/alice/stageide/themes/FlatLaf.properties | 5 ++++- .../java/org/alice/ide/common/DefaultStatementPane.java | 5 +++++ .../components/MiniControlFlowStatementTemplate.java | 8 ++++++++ .../alice/ide/croquet/components/KnurlDragComponent.java | 7 +++++-- 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/alice-ide/src/main/resources/org/alice/stageide/themes/FlatLaf.properties b/alice-ide/src/main/resources/org/alice/stageide/themes/FlatLaf.properties index c5be6cf5ea..8de4eb9d0c 100644 --- a/alice-ide/src/main/resources/org/alice/stageide/themes/FlatLaf.properties +++ b/alice-ide/src/main/resources/org/alice/stageide/themes/FlatLaf.properties @@ -88,4 +88,7 @@ Alice.Block.knurlForeground = #D9D9D9 # contrasting text/backgrounds Alice.Block.contrastForeground = #3E3E41 -Alice.Block.contrastBackground = #D9D9D9 \ No newline at end of file +Alice.Block.contrastBackground = #D9D9D9 + +Alice.ControlFlow.knurlActive = #000000 +Alice.ControlFlow.knurlInactive = #333333 \ No newline at end of file diff --git a/core/ide/src/main/java/org/alice/ide/common/DefaultStatementPane.java b/core/ide/src/main/java/org/alice/ide/common/DefaultStatementPane.java index da61ba5d36..202ec38b3d 100644 --- a/core/ide/src/main/java/org/alice/ide/common/DefaultStatementPane.java +++ b/core/ide/src/main/java/org/alice/ide/common/DefaultStatementPane.java @@ -54,6 +54,7 @@ import org.lgna.project.ast.StatementListProperty; import javax.swing.SwingUtilities; +import javax.swing.UIManager; import java.awt.*; /** @@ -75,6 +76,10 @@ public void setMaxYForIfBlock(int maxYForIfBlock) { this.maxYForIfBlock = maxYForIfBlock; } + protected Color getKnurlColor() { + return isActive() ? UIManager.getColor("Alice.ControlFlow.knurlActive") : UIManager.getColor("Alice.ControlFlow.knurlInactive"); + } + @Override protected void paintEpilogue(Graphics2D g2, int x, int y, int width, int height) { super.paintEpilogue(g2, x, y, width, height); diff --git a/core/ide/src/main/java/org/alice/ide/controlflow/components/MiniControlFlowStatementTemplate.java b/core/ide/src/main/java/org/alice/ide/controlflow/components/MiniControlFlowStatementTemplate.java index 273961b931..552ed84c22 100644 --- a/core/ide/src/main/java/org/alice/ide/controlflow/components/MiniControlFlowStatementTemplate.java +++ b/core/ide/src/main/java/org/alice/ide/controlflow/components/MiniControlFlowStatementTemplate.java @@ -56,6 +56,7 @@ import org.lgna.project.ast.Statement; import javax.swing.UIManager; +import java.awt.Color; import java.awt.Point; import java.awt.event.MouseEvent; @@ -151,4 +152,11 @@ protected void handleUndisplayable() { protected int getInsetRight() { return 6; } + + protected Color getKnurlColor() { + if (getModel() instanceof ExpressionStatementTemplateDragModel) { + return super.getKnurlColor(); + } + return this.isActive() ? UIManager.getColor("Alice.ControlFlow.knurlActive") : UIManager.getColor("Alice.ControlFlow.knurlInactive"); + } } diff --git a/core/ide/src/main/java/org/alice/ide/croquet/components/KnurlDragComponent.java b/core/ide/src/main/java/org/alice/ide/croquet/components/KnurlDragComponent.java index e06cd46aec..0c654720ef 100644 --- a/core/ide/src/main/java/org/alice/ide/croquet/components/KnurlDragComponent.java +++ b/core/ide/src/main/java/org/alice/ide/croquet/components/KnurlDragComponent.java @@ -238,12 +238,15 @@ protected void paintEpilogue(Graphics2D g2, int x, int y, int width, int height) Shape shape = this.createShape(x, y, width, height); this.paintOutline(g2, shape); if (isKnurlDesired()) { - Color c = this.isActive() ? getOutlineColor() : UIManager.getColor("Alice.Block.knurlForeground"); - g2.setColor(c); + g2.setColor(getKnurlColor()); KnurlUtilities.paintKnurl5(g2, x + this.getDockInsetLeft(), y + 2, KNURL_WIDTH, height - 5); } } + protected Color getKnurlColor() { + return this.isActive() ? getOutlineColor() : UIManager.getColor("Alice.Block.knurlForeground"); + } + public void addComponent(AwtComponentView component) { this.internalAddComponent(component); }