Bug 447883 - Keep FX Renderer up to date
https://bugs.eclipse.org/bugs/show_bug.cgi?id=447883
Fixed renderer
diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.horizontal.fx/src/org/eclipse/emf/ecp/view/horizontal/fx/HorizontalLayoutRendererFX.java b/bundles/javafx/org.eclipse.emf.ecp.view.horizontal.fx/src/org/eclipse/emf/ecp/view/horizontal/fx/HorizontalLayoutRendererFX.java
index 077e9f9..9f5ec57 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.horizontal.fx/src/org/eclipse/emf/ecp/view/horizontal/fx/HorizontalLayoutRendererFX.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.horizontal.fx/src/org/eclipse/emf/ecp/view/horizontal/fx/HorizontalLayoutRendererFX.java
@@ -1,7 +1,6 @@
package org.eclipse.emf.ecp.view.horizontal.fx;
import javafx.scene.Node;
-import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
@@ -12,8 +11,8 @@
import org.eclipse.emf.ecp.view.model.internal.fx.RendererFX;
import org.eclipse.emf.ecp.view.model.internal.fx.RendererFactory;
import org.eclipse.emf.ecp.view.spi.horizontal.model.VHorizontalLayout;
-import org.eclipse.emf.ecp.view.spi.model.VContainedElement;
import org.eclipse.emf.ecp.view.spi.model.VContainedContainer;
+import org.eclipse.emf.ecp.view.spi.model.VContainedElement;
import org.eclipse.emf.ecp.view.spi.model.VElement;
import org.eclipse.emf.ecp.view.spi.renderer.NoPropertyDescriptorFoundExeption;
import org.eclipse.emf.ecp.view.spi.renderer.NoRendererFoundException;
@@ -21,14 +20,6 @@
public class HorizontalLayoutRendererFX extends RendererFX<VHorizontalLayout> {
private GridDescriptionFX gridDescription;
- private void addColumnConstraint(GridPane grid) {
-
- final ColumnConstraints column = new ColumnConstraints();
- column.setPercentWidth(100);
- column.setHgrow(Priority.ALWAYS);
- grid.getColumnConstraints().add(column);
- }
-
@Override
public GridDescriptionFX getGridDescription() {
if (gridDescription == null) {
@@ -39,7 +30,7 @@
@Override
protected Node renderNode(GridCellFX cell) throws NoRendererFoundException,
- NoPropertyDescriptorFoundExeption {
+ NoPropertyDescriptorFoundExeption {
if (cell.getColumn() != 0) {
return null;
}
@@ -55,16 +46,13 @@
final GridDescriptionFX rendererGrid = compositeRenderer.getGridDescription();
final int rows = rendererGrid.getRows();
final int columns = rendererGrid.getColumns();
- final ColumnConstraints cc = new ColumnConstraints();
- cc.setHgrow(Priority.ALWAYS);
- grid.getColumnConstraints().add(cc);
for (int i = 0; i < rows; i++) {
final HBox hBox = new HBox();
for (int j = 0; j < columns; j++) {
final Node node = compositeRenderer.render(rendererGrid.getGrid().get(i * columns + j));
hBox.getChildren().add(node);
- if (columns == j - 1) {
+ if (columns - 1 == j) {
HBox.setHgrow(node, Priority.ALWAYS);
}
}
@@ -73,7 +61,6 @@
if (VContainedContainer.class.isInstance(composite)) {
GridPane.setVgrow(hBox, Priority.ALWAYS);
}
- addColumnConstraint(grid);
}
}
diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/ContainerRendererFX.java b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/ContainerRendererFX.java
index f000b72..c65a353 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/ContainerRendererFX.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/ContainerRendererFX.java
@@ -5,8 +5,8 @@
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
-import org.eclipse.emf.ecp.view.spi.model.VContainedElement;
import org.eclipse.emf.ecp.view.spi.model.VContainedContainer;
+import org.eclipse.emf.ecp.view.spi.model.VContainedElement;
import org.eclipse.emf.ecp.view.spi.model.VElement;
import org.eclipse.emf.ecp.view.spi.renderer.NoPropertyDescriptorFoundExeption;
import org.eclipse.emf.ecp.view.spi.renderer.NoRendererFoundException;
@@ -30,6 +30,17 @@
final GridPane grid = getGridPane();
final T element = getVElement();
+ int maxColumns = 1;
+ for (final VContainedElement composite : element.getChildren()) {
+ final RendererFX<VElement> compositeRenderer = RendererFactory.INSTANCE
+ .getRenderer(composite, getViewModelContext());
+ final GridDescriptionFX rendererGrid = compositeRenderer.getGridDescription();
+ final int columns = rendererGrid.getColumns();
+ if (columns > maxColumns) {
+ maxColumns = columns;
+ }
+ }
+
int gridRow = -1;
for (final VContainedElement composite : element.getChildren()) {
final RendererFX<VElement> compositeRenderer = RendererFactory.INSTANCE
@@ -51,6 +62,10 @@
if (VContainedContainer.class.isInstance(composite)) {
GridPane.setVgrow(node, Priority.ALWAYS);
}
+
+ if (j == columns - 1) {
+ GridPane.setColumnSpan(node, maxColumns - columns + 1);
+ }
}
}
}
diff --git a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/ViewRendererFX.java b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/ViewRendererFX.java
index 4a98da6..f00b77f 100644
--- a/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/ViewRendererFX.java
+++ b/bundles/javafx/org.eclipse.emf.ecp.view.model.fx/src/org/eclipse/emf/ecp/view/model/internal/fx/ViewRendererFX.java
@@ -5,8 +5,8 @@
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
-import org.eclipse.emf.ecp.view.spi.model.VContainedElement;
import org.eclipse.emf.ecp.view.spi.model.VContainedContainer;
+import org.eclipse.emf.ecp.view.spi.model.VContainedElement;
import org.eclipse.emf.ecp.view.spi.model.VElement;
import org.eclipse.emf.ecp.view.spi.model.VView;
import org.eclipse.emf.ecp.view.spi.renderer.NoPropertyDescriptorFoundExeption;
@@ -35,6 +35,17 @@
final GridPane grid = new GridPane();
grid.getStyleClass().add("vertical");
+ int maxColumns = 1;
+ for (final VContainedElement composite : vView.getChildren()) {
+ final RendererFX<VElement> compositeRenderer = RendererFactory.INSTANCE
+ .getRenderer(composite, getViewModelContext());
+ final GridDescriptionFX rendererGrid = compositeRenderer.getGridDescription();
+ final int columns = rendererGrid.getColumns();
+ if (columns > maxColumns) {
+ maxColumns = columns;
+ }
+ }
+
int gridRow = -1;
for (final VContainedElement composite : vView.getChildren()) {
final RendererFX<VElement> compositeRenderer = RendererFactory.INSTANCE
@@ -56,6 +67,10 @@
if (VContainedContainer.class.isInstance(composite)) {
GridPane.setVgrow(node, Priority.ALWAYS);
}
+
+ if (j == columns - 1) {
+ GridPane.setColumnSpan(node, maxColumns - columns + 1);
+ }
}
}
}