Browse Source

Map column components by id (#9624)

Fixes #9452
tags/8.1.0.rc1
Teemu Suo-Anttila 6 years ago
parent
commit
4d085fd8b3
1 changed files with 6 additions and 5 deletions
  1. 6
    5
      server/src/main/java/com/vaadin/ui/Grid.java

+ 6
- 5
server/src/main/java/com/vaadin/ui/Grid.java View File



@Override @Override
public void destroyData(T item) { public void destroyData(T item) {
removeComponent(item);
removeComponent(getGrid().getDataProvider().getId(item));
} }


@Override @Override
}; };


private Binding<T, ?> editorBinding; private Binding<T, ?> editorBinding;
private Map<T, Component> activeComponents = new HashMap<>();
private Map<Object, Component> activeComponents = new HashMap<>();


private String userId; private String userId;


// Make Grid track components. // Make Grid track components.
if (renderer instanceof ComponentRenderer if (renderer instanceof ComponentRenderer
&& presentationValue instanceof Component) { && presentationValue instanceof Component) {
addComponent(item, (Component) presentationValue);
addComponent(getGrid().getDataProvider().getId(item),
(Component) presentationValue);
} }
return ((Renderer<P>) renderer).encode(presentationValue); return ((Renderer<P>) renderer).encode(presentationValue);
} }


private void addComponent(T item, Component component) {
private void addComponent(Object item, Component component) {
if (activeComponents.containsKey(item)) { if (activeComponents.containsKey(item)) {
if (activeComponents.get(item).equals(component)) { if (activeComponents.get(item).equals(component)) {
// Reusing old component // Reusing old component
getGrid().addExtensionComponent(component); getGrid().addExtensionComponent(component);
} }


private void removeComponent(T item) {
private void removeComponent(Object item) {
Component component = activeComponents.remove(item); Component component = activeComponents.remove(item);
if (component != null) { if (component != null) {
getGrid().removeExtensionComponent(component); getGrid().removeExtensionComponent(component);

Loading…
Cancel
Save