summaryrefslogtreecommitdiffstats
path: root/src/com/vaadin/terminal/gwt/client/ComponentDetailMap.java
blob: 3405d838a727705304fbedef1217a71728b59355 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/*
@VaadinApache2LicenseForJavaFiles@
 */
package com.vaadin.terminal.gwt.client;

import java.util.ArrayList;
import java.util.Collection;

import com.google.gwt.core.client.JavaScriptObject;

final class ComponentDetailMap extends JavaScriptObject {

    protected ComponentDetailMap() {
    }

    static ComponentDetailMap create() {
        return (ComponentDetailMap) JavaScriptObject.createObject();
    }

    boolean isEmpty() {
        return size() == 0;
    }

    final native boolean containsKey(String key)
    /*-{
        return this.hasOwnProperty(key);
    }-*/;

    final native ComponentDetail get(String key)
    /*-{
        return this[key];
    }-*/;

    final native void put(String id, ComponentDetail value)
    /*-{
        this[id] = value;
    }-*/;

    final native void remove(String id)
    /*-{
        delete this[id];
    }-*/;

    final native int size()
    /*-{
        var count = 0;
        for(var key in this) {
            count++;
        }
        return count;
    }-*/;

    final native void clear()
    /*-{
        for(var key in this) {
            if(this.hasOwnProperty(key)) {
                delete this[key];
            }
        }
    }-*/;

    private final native void fillWithValues(Collection<ComponentDetail> list)
    /*-{
        for(var key in this) {
            list.@java.util.Collection::add(Ljava/lang/Object;)(this[key]);
        }
    }-*/;

    final Collection<ComponentDetail> values() {
        ArrayList<ComponentDetail> list = new ArrayList<ComponentDetail>();
        fillWithValues(list);
        return list;
    }

}