Parcourir la source

Return components in merged header/footer cells only once (#17904)

Change-Id: Icff97b27455f3df4b07faeca3d338e7f3ba5656f
tags/7.4.7
Artur Signell il y a 9 ans
Parent
révision
9ae362f90c

+ 3
- 1
server/src/com/vaadin/ui/Grid.java Voir le fichier

@@ -4571,7 +4571,9 @@ public class Grid extends AbstractComponent implements SelectionNotifier,

@Override
public Iterator<Component> iterator() {
List<Component> componentList = new ArrayList<Component>();
// This is a hash set to avoid adding header/footer components inside
// merged cells multiple times
LinkedHashSet<Component> componentList = new LinkedHashSet<Component>();

Header header = getHeader();
for (int i = 0; i < header.getRowCount(); ++i) {

+ 59
- 0
server/tests/src/com/vaadin/tests/server/component/grid/GridChildren.java Voir le fichier

@@ -0,0 +1,59 @@
/*
* Copyright 2000-2014 Vaadin Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.vaadin.tests.server.component.grid;

import java.util.Iterator;

import org.junit.Assert;
import org.junit.Test;

import com.vaadin.ui.Component;
import com.vaadin.ui.Grid;
import com.vaadin.ui.Grid.FooterCell;
import com.vaadin.ui.Grid.HeaderCell;
import com.vaadin.ui.Label;

public class GridChildren {

@Test
public void componentsInMergedHeader() {
Grid grid = new Grid();
grid.addColumn("foo");
grid.addColumn("bar");
grid.addColumn("baz");
HeaderCell merged = grid.getDefaultHeaderRow()
.join("foo", "bar", "baz");
Label label = new Label();
merged.setComponent(label);
Iterator<Component> i = grid.iterator();
Assert.assertEquals(label, i.next());
Assert.assertFalse(i.hasNext());
}

@Test
public void componentsInMergedFooter() {
Grid grid = new Grid();
grid.addColumn("foo");
grid.addColumn("bar");
grid.addColumn("baz");
FooterCell merged = grid.addFooterRowAt(0).join("foo", "bar", "baz");
Label label = new Label();
merged.setComponent(label);
Iterator<Component> i = grid.iterator();
Assert.assertEquals(label, i.next());
Assert.assertFalse(i.hasNext());
}
}

Chargement…
Annuler
Enregistrer