source: SRUAggregator/trunk/src/main/java/eu/clarin/sru/fcs/aggregator/sopt/CorpusRendererLive.java @ 5041

Last change on this file since 5041 was 5041, checked in by yana.panchenko@uni-tuebingen.de, 10 years ago

code clean-up

  • use context (environment) variables (in web.xml) instead of constants to define e.g. scan crawl interval, location property to store/get the scan data, etc.
  • replace hard-coded data location with the one defined by system property, with fallback 2 default locations: /data and user.home
  • re-enable live mode support
  • add documentation
File size: 2.0 KB
Line 
1package eu.clarin.sru.fcs.aggregator.sopt;
2
3import org.zkoss.zk.ui.event.Event;
4import org.zkoss.zk.ui.event.EventListener;
5import org.zkoss.zk.ui.event.Events;
6import org.zkoss.zul.DefaultTreeNode;
7import org.zkoss.zul.Treeitem;
8import org.zkoss.zul.TreeitemRenderer;
9import org.zkoss.zul.Treerow;
10
11/**
12 * Renders treeitem of corpora tree in a 'live' mode. I.e. corpora sub-resources
13 * are loaded on demand. It is necessary that CorpusModelLive is used with this
14 * renderer.
15 *
16 * TODO: remove the loaded sub-resources from the tree when they are
17 * closed by the user?
18 *
19 * @author Yana Panchenko
20 */
21public class CorpusRendererLive extends CorpusRenderer
22        implements TreeitemRenderer<DefaultTreeNode<Corpus>> {
23
24    public CorpusRendererLive(CorpusModelLive model) {
25        super(model);
26    }
27
28    @Override
29    public void render(Treeitem treeItem, DefaultTreeNode<Corpus> treeNode, int index) throws Exception {
30
31        Treerow dataRow = new Treerow();
32        dataRow.setParent(treeItem);
33        treeItem.setValue(treeNode);
34        treeItem.setOpen(false);
35        Corpus data = treeNode.getData();
36
37        if (data.isTemporary()) {
38            return;
39        }
40        addCorpusDataIntoRow(dataRow, data);
41
42        treeItem.addEventListener(Events.ON_OPEN, new EventListener<Event>() {
43            @Override
44            public void onEvent(Event event) throws Exception {
45
46                Treeitem openedTreeitem = (Treeitem) event.getTarget();
47                if (openedTreeitem.isOpen()) {
48                    if (model.hasChildren(openedTreeitem)) {
49                        ((CorpusModelLive) model).loadChildren(openedTreeitem);
50                        openedTreeitem.setOpen(model.hasChildren(openedTreeitem));
51                    } else {
52                        openedTreeitem.setOpen(false);
53                    }
54                }
55
56                if (model.isCorpusSelected((DefaultTreeNode<Corpus>) openedTreeitem.getValue())) {
57                    selectChildren(openedTreeitem);
58                }
59            }
60        });
61
62    }
63}
Note: See TracBrowser for help on using the repository browser.