Search in sources :

Example 26 with Event

use of org.zkoss.zk.ui.event.Event in project spatial-portal by AtlasOfLivingAustralia.

the class ClassificationLegend method afterCompose.

@Override
public void afterCompose() {
    super.afterCompose();
    query = (Query) (Executions.getCurrent().getArg().get(StringConstants.QUERY));
    LOGGER.debug("Query q:" + query.getQ());
    mapLayer = (MapLayer) (Executions.getCurrent().getArg().get(StringConstants.LAYER));
    readonly = (Executions.getCurrent().getArg().get(StringConstants.READONLY)) != null;
    colourmode = (String) (Executions.getCurrent().getArg().get(StringConstants.COLOURMODE));
    pid = (String) (Executions.getCurrent().getArg().get(StringConstants.PID));
    checkmarks = (Executions.getCurrent().getArg().get("checkmarks")) != null;
    disableselection = (Executions.getCurrent().getArg().get("disableselection")) != null;
    if (disableselection) {
        dCreateButtons.setVisible(false);
        lhFirstColumn.setWidth("0px");
        lhSecondColumn.setWidth("190px");
        lhThirdColumn.setWidth("15px");
        lhThirdColumn.setLabel("");
        lhFourthColumn.setWidth("50px");
        legend.setWidth("280px");
    }
    buildLegend();
    getFellow("btnSearch").addEventListener(StringConstants.ONCLICK, new EventListener() {

        @Override
        public void onEvent(Event event) throws Exception {
            List<String[]> legendLinesFiltered = new ArrayList<String[]>();
            String txt = ((Textbox) getFellow("txtSearch")).getValue().toLowerCase();
            if (txt.length() > 0) {
                for (int i = 0; i < legendLines.size(); i++) {
                    if (legendLines.get(i)[0].toLowerCase().contains(txt)) {
                        legendLinesFiltered.add(legendLines.get(i));
                    }
                }
                ((Button) getFellow("btnClear")).setDisabled(false);
                legend.setModel(new SimpleListModel(legendLinesFiltered));
                legend.setActivePage(0);
            }
        }
    });
    getFellow("btnClear").addEventListener(StringConstants.ONCLICK, new EventListener() {

        @Override
        public void onEvent(Event event) throws Exception {
            ((Textbox) getFellow("txtSearch")).setValue("");
            ((Button) getFellow("btnClear")).setDisabled(true);
            legend.setModel(new SimpleListModel(legendLines));
            legend.setActivePage(0);
        }
    });
    // setup sorting
    Comparator labelComparatorAsc = new Comparator() {

        @Override
        public int compare(Object o1, Object o2) {
            String[] s1 = (String[]) o1;
            String[] s2 = (String[]) o2;
            return s1[0].compareTo(s2[0]);
        }
    };
    Comparator labelComparatorDesc = new Comparator() {

        @Override
        public int compare(Object o1, Object o2) {
            String[] s1 = (String[]) o1;
            String[] s2 = (String[]) o2;
            return s2[0].compareTo(s1[0]);
        }
    };
    Comparator countComparatorAsc = new Comparator() {

        @Override
        public int compare(Object o1, Object o2) {
            Long l1 = null;
            Long l2 = null;
            try {
                l1 = Long.parseLong(((String[]) o1)[4]);
                l2 = Long.parseLong(((String[]) o2)[4]);
                return l1.compareTo(l2);
            } catch (Exception e) {
                if (l2 == null && l1 == null) {
                    return 0;
                } else if (l2 == null) {
                    return 1;
                } else {
                    return -1;
                }
            }
        }
    };
    Comparator countComparatorDesc = new Comparator() {

        @Override
        public int compare(Object o1, Object o2) {
            Long l1 = null;
            Long l2 = null;
            try {
                l1 = Long.parseLong(((String[]) o1)[4]);
                l2 = Long.parseLong(((String[]) o2)[4]);
                return l2.compareTo(l1);
            } catch (Exception e) {
                if (l2 == null && l1 == null) {
                    return 0;
                } else if (l2 == null) {
                    return -1;
                } else {
                    return 1;
                }
            }
        }
    };
    lhSecondColumn.setSortAscending(labelComparatorAsc);
    lhSecondColumn.setSortDescending(labelComparatorDesc);
    lhFourthColumn.setSortAscending(countComparatorAsc);
    lhFourthColumn.setSortDescending(countComparatorDesc);
}
Also used : IOException(java.io.IOException) CheckEvent(org.zkoss.zk.ui.event.CheckEvent) Event(org.zkoss.zk.ui.event.Event) LegendObject(au.org.ala.legend.LegendObject) EventListener(org.zkoss.zk.ui.event.EventListener)

Example 27 with Event

use of org.zkoss.zk.ui.event.Event in project spatial-portal by AtlasOfLivingAustralia.

the class ClassificationLegend method buildLegend.

void buildLegend() {
    try {
        StringBuilder slist = new StringBuilder();
        if (query != null) {
            if (StringConstants.GRID.equals(colourmode)) {
                slist.append("name,red,green,blue,count");
                for (int i = 0; i < 600; i += 100) {
                    slist.append(">");
                    slist.append("\n").append(i).append(",").append(LegendObject.getRGB(Legend.getLinearColour(i, 0, 500, 0xFFFFFF00, 0xFFFF0000))).append(",");
                }
            } else {
                slist.append(query.getLegend(colourmode).getTable());
            }
        } else {
            return;
        }
        try {
            legendLines = new CSVReader(new StringReader(slist.toString())).readAll();
            // reset selection when legendLines is rebuilt
            uncheckAll();
        } catch (IOException e) {
            LOGGER.error("failed to read legend list as csv", e);
        }
        legendLines.remove(0);
        String h = mapLayer.getHighlight();
        facet = Facet.parseFacet(h);
        divContinous.setVisible(false);
        // test for range (user upload)
        if (legendLines.size() > 1) {
            String first = legendLines.get(0)[0];
            if (first == null || first.length() == 0 || first.startsWith(StringConstants.UNKNOWN)) {
                first = legendLines.get(1)[0];
            }
            if (!checkmarks && query.getLegend(colourmode) != null && query.getLegend(colourmode).getNumericLegend() != null) {
                setupForNumericalList(h);
            // test for manual range (solr query)
            } else if (StringConstants.OCCURRENCE_YEAR.equals(colourmode)) {
                setupForBiocacheNumber(h, colourmode, true);
            } else if (StringConstants.OCCURRENCE_YEAR_DECADE.equals(colourmode) || StringConstants.DECADE.equals(colourmode)) {
                setupForBiocacheDecade();
            } else if (StringConstants.COORDINATE_UNCERTAINTY.equals(colourmode) || StringConstants.UNCERTAINTY.equals(colourmode)) {
                setupForBiocacheNumber(h, colourmode, false);
            } else if (StringConstants.MONTH.equals(colourmode)) {
                setupForBiocacheMonth();
            }
        }
        /* apply something to line onclick in lb */
        legend.setItemRenderer(new ListitemRenderer() {

            @Override
            public void render(Listitem li, Object data, int itemIdx) {
                String[] ss = (String[]) data;
                if (ss == null) {
                    return;
                }
                Checkbox cb = null;
                if (checkmarks) {
                    cb = new Checkbox();
                    cb.addEventListener("onCheck", new EventListener() {

                        @Override
                        public void onEvent(Event event) throws Exception {
                            String v = ((Listcell) event.getTarget().getParent().getParent().getChildren().get(1)).getLabel();
                            if (((CheckEvent) event).isChecked()) {
                                selectedList.add(v);
                            } else {
                                selectedList.remove(v);
                            }
                            lblSelectedCount.setValue(selectedList.size() + " selected");
                            if (selectedList.size() > 0) {
                                createInGroup.setVisible(true);
                                if (createOutGroup != null)
                                    createOutGroup.setVisible(true);
                                clearSelection.setVisible(true);
                            } else {
                                createInGroup.setVisible(false);
                                if (createOutGroup != null)
                                    createOutGroup.setVisible(false);
                                clearSelection.setVisible(false);
                            }
                            checkboxClick(event);
                        }
                    });
                    determineCheckboxState(cb, ss[0]);
                }
                Listcell lc;
                lc = new Listcell();
                if (cb != null) {
                    cb.setParent(lc);
                    // Do not display checkboxes for facets that are not simple
                    cb.setVisible(!disableselection && !ss[0].endsWith(" more"));
                }
                lc.setParent(li);
                if (readonly) {
                    lc = new Listcell(actualToDisplayLabel(ss[0]));
                } else {
                    lc = new Listcell("group " + ss[0]);
                }
                lc.setParent(li);
                int red = 0, green = 0, blue = 0;
                try {
                    red = Integer.parseInt(ss[1]);
                    green = Integer.parseInt(ss[2]);
                    blue = Integer.parseInt(ss[3]);
                } catch (Exception e) {
                    LOGGER.error("error parsing colours : " + ss[0], e);
                }
                lc = new Listcell("   ");
                lc.setStyle("background-color: rgb(" + red + "," + green + "," + blue + "); color: rgb(" + red + "," + green + "," + blue + ")");
                lc.setParent(li);
                // count
                try {
                    // don't display if it is not a number
                    Long.parseLong(ss[4]);
                    lhFourthColumn.setVisible(true);
                    lc = new Listcell(ss[4]);
                    lc.setParent(li);
                } catch (NumberFormatException e) {
                    lhFourthColumn.setVisible(false);
                    lhThirdColumn.setWidth("100%");
                    dCreateButtons.setVisible(!readonly);
                }
            }
        });
        legend.setModel(new SimpleListModel(legendLines));
        createInGroup.setVisible(!disableselection && mapLayer.getHighlight() != null && mapLayer.getHighlight().length() > 0);
        if (createOutGroup != null)
            createOutGroup.setVisible(!disableselection && mapLayer.getHighlight() != null && mapLayer.getHighlight().length() > 0);
        clearSelection.setVisible(!disableselection && mapLayer.getHighlight() != null && mapLayer.getHighlight().length() > 0);
        if (divContinous.isVisible()) {
            int[] state = getState();
            if (state[0] > 1) {
                setEnableContinousControls(false);
            } else {
                updateD();
            }
            getFellow("txtSearch").setVisible(false);
        } else {
            getFellow("txtSearch").setVisible(true);
        }
    } catch (Exception e) {
        LOGGER.error("error building classification legend, pid: " + pid, e);
    }
}
Also used : CSVReader(au.com.bytecode.opencsv.CSVReader) IOException(java.io.IOException) CheckEvent(org.zkoss.zk.ui.event.CheckEvent) IOException(java.io.IOException) StringReader(java.io.StringReader) CheckEvent(org.zkoss.zk.ui.event.CheckEvent) Event(org.zkoss.zk.ui.event.Event) LegendObject(au.org.ala.legend.LegendObject) EventListener(org.zkoss.zk.ui.event.EventListener)

Example 28 with Event

use of org.zkoss.zk.ui.event.Event in project spatial-portal by AtlasOfLivingAustralia.

the class AddFacetController method buildLegend.

void buildLegend() {
    try {
        StringBuilder slist = new StringBuilder();
        if (query != null) {
            if (StringConstants.GRID.equals(colourmode)) {
                slist.append("name,red,green,blue,count");
                for (int i = 0; i < 600; i += 100) {
                    slist.append(">");
                    slist.append("\n").append(i).append(",").append(LegendObject.getRGB(Legend.getLinearColour(i, 0, 500, 0xFFFFFF00, 0xFFFF0000))).append(",");
                }
            } else {
                slist.append(query.getLegend(colourmode).getTable());
            }
        } else {
            return;
        }
        try {
            legendLines = new CSVReader(new StringReader(slist.toString())).readAll();
            // reset selection when legendLines is rebuilt
            uncheckAll();
        } catch (Exception e) {
            LOGGER.error("failed to read legend list as csv", e);
        }
        legendLines.remove(0);
        String h = "";
        facet = null;
        divContinous.setVisible(false);
        // test for range (user upload)
        if (legendLines.size() > 1) {
            String first = legendLines.get(0)[0];
            if (first == null || first.length() == 0 || first.startsWith(StringConstants.UNKNOWN)) {
                first = legendLines.get(1)[0];
            }
            if (!checkmarks && query.getLegend(colourmode) != null && query.getLegend(colourmode).getNumericLegend() != null) {
                setupForNumericalList(h);
            // test for manual range (solr query)
            } else if (StringConstants.OCCURRENCE_YEAR.equals(colourmode)) {
                setupForBiocacheNumber(h, colourmode, true);
            } else if (StringConstants.OCCURRENCE_YEAR_DECADE.equals(colourmode) || StringConstants.DECADE.equals(colourmode)) {
                setupForBiocacheDecade();
            } else if (StringConstants.COORDINATE_UNCERTAINTY.equals(colourmode) || StringConstants.UNCERTAINTY.equals(colourmode)) {
                setupForBiocacheNumber(h, colourmode, false);
            } else if (StringConstants.MONTH.equals(colourmode)) {
                setupForBiocacheMonth();
            }
        }
        /* apply something to line onclick in lb */
        legend.setItemRenderer(new ListitemRenderer() {

            @Override
            public void render(Listitem li, Object data, int itemIdx) {
                String[] ss = (String[]) data;
                if (ss == null) {
                    return;
                }
                Checkbox cb = null;
                if (checkmarks) {
                    cb = new Checkbox();
                    cb.addEventListener("onCheck", new EventListener() {

                        @Override
                        public void onEvent(Event event) throws Exception {
                            btnOk.setDisabled(false);
                            rebuildSelectedList();
                        }
                    });
                    cb.setVisible(!cbContinousRange.isChecked());
                }
                Listcell lc;
                lc = new Listcell();
                if (cb != null) {
                    cb.setParent(lc);
                    // Do not display checkboxes for facets that are not simple
                    cb.setVisible(!disableselection && !ss[0].endsWith(" more"));
                }
                lc.setParent(li);
                if (readonly) {
                    lc = new Listcell(actualToDisplayLabel(ss[0]));
                } else {
                    lc = new Listcell("group " + ss[0]);
                }
                lc.setParent(li);
                if (cb != null) {
                    cb.setChecked(selectedList.contains(lc.getLabel()));
                }
                int red = 0, green = 0, blue = 0;
                try {
                    red = Integer.parseInt(ss[1]);
                    green = Integer.parseInt(ss[2]);
                    blue = Integer.parseInt(ss[3]);
                } catch (NumberFormatException e) {
                    LOGGER.error("error parsing colours : " + ss[0], e);
                }
                lc = new Listcell("   ");
                lc.setStyle("background-color: rgb(" + red + "," + green + "," + blue + "); color: rgb(" + red + "," + green + "," + blue + ")");
                lc.setParent(li);
                // count
                try {
                    lhFourthColumn.setVisible(true);
                    lc = new Listcell(ss[4]);
                    lc.setParent(li);
                } catch (Exception e) {
                    lhFourthColumn.setVisible(false);
                }
            }
        });
        legend.setModel(new SimpleListModel(legendLines));
    } catch (Exception e) {
        LOGGER.error("error rendering legend", e);
    }
}
Also used : CSVReader(au.com.bytecode.opencsv.CSVReader) SuspendNotAllowedException(org.zkoss.zk.ui.SuspendNotAllowedException) StringReader(java.io.StringReader) ForwardEvent(org.zkoss.zk.ui.event.ForwardEvent) CheckEvent(org.zkoss.zk.ui.event.CheckEvent) Event(org.zkoss.zk.ui.event.Event) LegendObject(au.org.ala.legend.LegendObject) EventListener(org.zkoss.zk.ui.event.EventListener)

Example 29 with Event

use of org.zkoss.zk.ui.event.Event in project spatial-portal by AtlasOfLivingAustralia.

the class MapComposer method safeToLoadMap.

public void safeToLoadMap(Event event) {
    mapLoaded(StringConstants.TRUE);
    // listen for map extents changes
    EventListener el = new EventListener() {

        public void onEvent(Event event) throws Exception {
            onReloadLayers(null);
        }
    };
    getLeftmenuSearchComposer().addViewportEventListener("onReloadLayers", el);
}
Also used : Event(org.zkoss.zk.ui.event.Event) ForwardEvent(org.zkoss.zk.ui.event.ForwardEvent) EventListener(org.zkoss.zk.ui.event.EventListener)

Example 30 with Event

use of org.zkoss.zk.ui.event.Event in project spatial-portal by AtlasOfLivingAustralia.

the class LayerLegendGeneralComposer method afterCompose.

@Override
public void afterCompose() {
    super.afterCompose();
    MapLayer llc2MapLayer = null;
    Map m = Executions.getCurrent().getArg();
    if (m != null) {
        for (Object o : m.entrySet()) {
            if (((Map.Entry) o).getKey() instanceof String && "map_layer".equals(((Map.Entry) o).getKey())) {
                llc2MapLayer = (MapLayer) ((Map.Entry) o).getValue();
            }
        }
    }
    cbColour.setSelectedIndex(0);
    getMapComposer().setFacetsOpenListener(new EventListener() {

        @Override
        public void onEvent(Event event) throws Exception {
            cbColour.open();
        }
    });
    getMapComposer().setLayerLegendNameRefresh(new EventListener() {

        @Override
        public void onEvent(Event event) throws Exception {
            txtLayerName.setValue((String) event.getData());
        }
    });
    init(llc2MapLayer, llc2MapLayer.getSpeciesQuery(), llc2MapLayer.getRedVal(), llc2MapLayer.getGreenVal(), llc2MapLayer.getBlueVal(), llc2MapLayer.getSizeVal(), (int) (llc2MapLayer.getOpacity() * 100), llc2MapLayer.getColourMode(), (StringConstants.GRID.equals(llc2MapLayer.getColourMode())) ? 0 : ((llc2MapLayer.isClustered()) ? 1 : 2), llc2MapLayer.getSizeUncertain());
    getFellow("btnSearch").addEventListener(StringConstants.ONCLICK, new EventListener() {

        @Override
        public void onEvent(Event event) throws Exception {
            List<String[]> legendLinesFiltered = new ArrayList<String[]>();
            String txt = ((Textbox) getFellow("txtSearch")).getValue().toLowerCase();
            if (txt.length() > 0) {
                Integer groupCount = mapLayer.getClassificationGroupCount();
                JSONArray groupObjects = mapLayer.getClassificationObjects();
                List<JSONObject> model = new ArrayList<JSONObject>();
                for (int i = 0; i < groupCount; i++) {
                    if (((JSONObject) groupObjects.get(i)).get("name").toString().toLowerCase().contains(txt)) {
                        model.add((JSONObject) groupObjects.get(i));
                    }
                }
                lbClassificationGroup.setModel(new SimpleListModel(model));
                lbClassificationGroup.setActivePage(0);
                ((Button) getFellow("btnClear")).setDisabled(false);
            }
        }
    });
    getFellow("btnClear").addEventListener(StringConstants.ONCLICK, new EventListener() {

        @Override
        public void onEvent(Event event) throws Exception {
            ((Textbox) getFellow("txtSearch")).setValue("");
            ((Button) getFellow("btnClear")).setDisabled(true);
            Integer groupCount = mapLayer.getClassificationGroupCount();
            JSONArray groupObjects = mapLayer.getClassificationObjects();
            List<JSONObject> model = new ArrayList<JSONObject>();
            for (int i = 0; i < groupCount; i++) {
                model.add((JSONObject) groupObjects.get(i));
            }
            lbClassificationGroup.setModel(new SimpleListModel(model));
            lbClassificationGroup.setActivePage(0);
        }
    });
}
Also used : MapLayer(au.org.emii.portal.menu.MapLayer) JSONArray(org.json.simple.JSONArray) ParseException(org.json.simple.parser.ParseException) JSONObject(org.json.simple.JSONObject) CheckEvent(org.zkoss.zk.ui.event.CheckEvent) Event(org.zkoss.zk.ui.event.Event) JSONObject(org.json.simple.JSONObject) LegendObject(au.org.ala.legend.LegendObject) List(java.util.List) EventListener(org.zkoss.zk.ui.event.EventListener)

Aggregations

Event (org.zkoss.zk.ui.event.Event)60 EventListener (org.zkoss.zk.ui.event.EventListener)42 JSONObject (org.json.simple.JSONObject)11 ForwardEvent (org.zkoss.zk.ui.event.ForwardEvent)9 ValueChangeEvent (org.adempiere.exceptions.ValueChangeEvent)7 Component (org.zkoss.zk.ui.Component)7 CheckEvent (org.zkoss.zk.ui.event.CheckEvent)7 LegendObject (au.org.ala.legend.LegendObject)6 IOException (java.io.IOException)6 SQLException (java.sql.SQLException)6 JSONParser (org.json.simple.parser.JSONParser)6 Center (org.zkoss.zul.Center)6 MapLayer (au.org.emii.portal.menu.MapLayer)5 JSONArray (org.json.simple.JSONArray)5 Borderlayout (org.zkoss.zul.Borderlayout)5 Tabpanel (org.adempiere.webui.component.Tabpanel)4 WTableModelEvent (org.adempiere.webui.event.WTableModelEvent)4 ParseException (org.json.simple.parser.ParseException)4 Div (org.zkoss.zul.Div)4 North (org.zkoss.zul.North)4