Example usage for com.google.gwt.user.client.ui ListBox isMultipleSelect

List of usage examples for com.google.gwt.user.client.ui ListBox isMultipleSelect

Introduction

In this page you can find the example usage for com.google.gwt.user.client.ui ListBox isMultipleSelect.

Prototype

public boolean isMultipleSelect() 

Source Link

Document

Gets whether this list allows multiple selection.

Usage

From source file:com.qualogy.qafe.gwt.client.vo.handlers.BuiltinHandlerHelper.java

License:Apache License

private static Object getValue(ListBox listBox, boolean idValueOnly) {
    Object value = null;//from ww  w. j av a 2s  . c om

    if (!(listBox.isMultipleSelect()) && listBox.getSelectedIndex() != -1) { // dropdown
        int index = listBox.getSelectedIndex();
        if (idValueOnly) {
            value = listBox.getValue(index);
        } else {
            DataMap dm = new DataMap();
            dm.put("id", new DataContainerGVO(listBox.getValue(index)));
            dm.put("value", new DataContainerGVO(listBox.getItemText(index)));

            DataContainerGVO dtcMap = new DataContainerGVO();
            dtcMap.setKind(DataContainerGVO.KIND_MAP);
            dtcMap.setDataMap(dm);
            value = dtcMap;

            // TODO: refactor, this is a workaround for checking simple
            // value
            dtcMap.setDataString(listBox.getValue(index));
        }

        handleSimpleValue(listBox, value);
    } else if (listBox.getSelectedIndex() != -1) {
        DataContainerGVO dtclist = new DataContainerGVO();
        dtclist.setKind(DataContainerGVO.KIND_COLLECTION);
        List<DataContainerGVO> list = new ArrayList<DataContainerGVO>();
        dtclist.setListofDC(list);
        int items = listBox.getItemCount();
        for (int itemIndex = 0; itemIndex < items; itemIndex++) {
            if (listBox.isItemSelected(itemIndex)) {
                DataMap dataMap = new DataMap();
                DataContainerGVO dtcId = new DataContainerGVO();
                dtcId.setKind(DataContainerGVO.KIND_STRING);
                dtcId.setDataString(listBox.getValue(itemIndex));
                dtcId.setStringDataType(DataContainerGVO.TYPE_STRING);
                dataMap.put("id", dtcId);

                DataContainerGVO dtcValue = new DataContainerGVO();
                dtcValue.setKind(DataContainerGVO.KIND_STRING);
                dtcValue.setDataString(listBox.getItemText(itemIndex));
                dtcValue.setStringDataType(DataContainerGVO.TYPE_STRING);
                dataMap.put("value", dtcValue);

                list.add(new DataContainerGVO(dataMap));
            }
        }
        value = dtclist;
    }

    return value;
}

From source file:org.drools.workbench.screens.guided.dtable.client.widget.DTCellValueWidgetFactory.java

License:Apache License

private ListBox makeListBox(final DropDownData dd, final Pattern52 basePattern,
        final ConditionCol52 baseCondition, final DTCellValue52 dcv) {
    final boolean isMultipleSelect = isExplicitListOperator(baseCondition.getOperator());
    final ListBox lb = makeListBox(dd, isMultipleSelect, dcv);

    // Wire up update handler
    lb.setEnabled(!isReadOnly);//from  w ww  .j a v a2 s. c  o m
    if (!isReadOnly) {
        lb.addClickHandler(new ClickHandler() {

            public void onClick(ClickEvent event) {
                String value = null;
                if (lb.isMultipleSelect()) {
                    for (int i = 0; i < lb.getItemCount(); i++) {
                        if (lb.isItemSelected(i)) {
                            if (value == null) {
                                value = lb.getValue(i);
                            } else {
                                value = value + "," + lb.getValue(i);
                            }
                        }
                    }
                } else {
                    int index = lb.getSelectedIndex();
                    if (index > -1) {
                        //Set base column value
                        value = lb.getValue(index);
                    }
                }

                dcv.setStringValue(value);

                //Update any dependent enumerations
                final LimitedEntryDropDownManager.Context context = new LimitedEntryDropDownManager.Context(
                        basePattern, baseCondition);
                Set<Integer> dependentColumnIndexes = dropDownManager.getDependentColumnIndexes(context);
                for (Integer iCol : dependentColumnIndexes) {
                    BaseColumn column = model.getExpandedColumns().get(iCol);
                    if (column instanceof LimitedEntryCol) {
                        ((LimitedEntryCol) column).setValue(null);
                    } else if (column instanceof DTColumnConfig52) {
                        ((DTColumnConfig52) column).setDefaultValue(null);
                    }
                }
            }
        });
    }
    return lb;
}

From source file:org.unitime.timetable.gwt.client.hql.SavedHQLPage.java

License:Apache License

public SavedHQLPage() {
    iAppearance = Window.Location.getParameter("appearance");
    if ("courses".equalsIgnoreCase(iAppearance)) {
        UniTimePageLabel.getInstance().setPageName(MESSAGES.pageCourseReports());
    } else if ("exams".equalsIgnoreCase(iAppearance)) {
        UniTimePageLabel.getInstance().setPageName(MESSAGES.pageExaminationReports());
    } else if ("sectioning".equalsIgnoreCase(iAppearance)) {
        UniTimePageLabel.getInstance().setPageName(MESSAGES.pageStudentSectioningReports());
    } else if ("events".equalsIgnoreCase(iAppearance)) {
        UniTimePageLabel.getInstance().setPageName(MESSAGES.pageEventReports());
    } else if ("administration".equalsIgnoreCase(iAppearance)) {
        UniTimePageLabel.getInstance().setPageName(MESSAGES.pageAdministrationReports());
    } else {/*from ww w.  ja va 2  s  .  co  m*/
        iAppearance = "courses";
        UniTimePageLabel.getInstance().setPageName(MESSAGES.pageCourseReports());
    }

    iForm = new SimpleForm(2);

    iForm.removeStyleName("unitime-NotPrintableBottomLine");

    iHeader = new UniTimeHeaderPanel(MESSAGES.sectFilter());
    iHeader.addButton("execute", MESSAGES.buttonExecute(), 75, new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            iFirstLine = 0;
            iLastSort = 0;
            execute();
        }
    });

    iHeader.addButton("print", MESSAGES.buttonPrint(), 75, new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            HQLExecuteRpcRequest request = new HQLExecuteRpcRequest();
            Long id = Long.valueOf(
                    iQuerySelector.getWidget().getValue(iQuerySelector.getWidget().getSelectedIndex()));
            for (SavedHQLInterface.Query q : iQueries) {
                if (id.equals(q.getId())) {
                    request.setQuery(q);
                    break;
                }
            }
            if (request.getQuery() == null) {
                iHeader.setErrorMessage(MESSAGES.errorNoReportSelected());
                return;
            }
            final SimpleForm form = new SimpleForm();
            form.addHeaderRow(request.getQuery().getName());
            if (!request.getQuery().getDescription().isEmpty())
                form.addRow(MESSAGES.propDescription(), new HTML(request.getQuery().getDescription()));

            for (int i = 0; i < iOptions.size(); i++) {
                SavedHQLInterface.Option option = iOptions.get(i);
                if (request.getQuery().getQuery().contains("%" + option.getType() + "%")) {
                    ListBox list = ((UniTimeWidget<ListBox>) iForm.getWidget(3 + i, 1)).getWidget();
                    String value = "";
                    String values = "";
                    boolean allSelected = true;
                    if (list.isMultipleSelect()) {
                        for (int j = 0; j < list.getItemCount(); j++)
                            if (list.isItemSelected(j)) {
                                if (!value.isEmpty()) {
                                    value += ",";
                                    values += ", ";
                                }
                                value += list.getValue(j);
                                values += list.getItemText(j);
                            } else {
                                allSelected = false;
                            }
                        if (allSelected)
                            values = MESSAGES.itemAll();
                    } else if (list.getSelectedIndex() > 0) {
                        value = list.getValue(list.getSelectedIndex());
                        values = list.getItemText(list.getSelectedIndex());
                    }
                    if (value.isEmpty()) {
                        iHeader.setErrorMessage(MESSAGES.errorItemNotSelected(option.getName()));
                        return;
                    }
                    request.addOption(option.getType(), value);
                    form.addRow(option.getName() + ":", new Label(values, true));
                }
            }
            LoadingWidget.getInstance().show(MESSAGES.waitExecuting(request.getQuery().getName()));
            request.setFromRow(0);
            request.setMaxRows(10000);
            RPC.execute(request, new AsyncCallback<Table>() {
                @Override
                public void onFailure(Throwable caught) {
                    iTableHeader.setErrorMessage(caught.getMessage(), true);
                    LoadingWidget.getInstance().hide();
                }

                @Override
                public void onSuccess(Table result) {
                    LoadingWidget.getInstance().hide();
                    if (result == null || result.size() <= 1) {
                        iTableHeader.setMessage(MESSAGES.errorNoResults());
                        return;
                    }
                    final UniTimeTable<String[]> table = new UniTimeTable<String[]>();
                    String firstField = null;
                    int nrCols = 0;
                    for (int i = 0; i < result.size(); i++) {
                        String[] row = result.get(i);
                        List<Widget> line = new ArrayList<Widget>();
                        if (i == 0) {
                            firstField = row[0];
                            nrCols = row.length;
                            for (String x : row) {
                                final String name = x.replace('_', ' ').trim();
                                UniTimeTableHeader h = new UniTimeTableHeader(name, 1);
                                line.add(h);
                            }
                        } else {
                            for (String x : row) {
                                line.add(new HTML(x == null ? "" : x.replace("\\n", "<br>")));
                            }
                        }
                        table.addRow(i == 0 ? null : row, line);
                    }
                    if (firstField != null && firstField.startsWith("__"))
                        table.setColumnVisible(0, false);
                    if (iLastSort != 0 && Math.abs(iLastSort) <= nrCols) {
                        table.sort(table.getHeader(Math.abs(iLastSort) - 1), new Comparator<String[]>() {
                            @Override
                            public int compare(String[] o1, String[] o2) {
                                return SavedHQLPage.compare(o1, o2, Math.abs(iLastSort) - 1);
                            }
                        }, iLastSort > 0);
                    }
                    table.getElement().getStyle().setWidth(1040, Unit.PX);

                    // Move header row to thead
                    Element headerRow = table.getRowFormatter().getElement(0);
                    Element tableElement = table.getElement();
                    Element thead = DOM.createTHead();
                    tableElement.insertFirst(thead);
                    headerRow.getParentElement().removeChild(headerRow);
                    thead.appendChild(headerRow);

                    final Element div = DOM.createDiv();
                    div.appendChild(form.getElement());
                    div.appendChild(table.getElement());

                    String name = MESSAGES.pageCourseReports();
                    if ("courses".equalsIgnoreCase(iAppearance)) {
                        name = MESSAGES.pageCourseReports();
                    } else if ("exams".equalsIgnoreCase(iAppearance)) {
                        name = MESSAGES.pageExaminationReports();
                    } else if ("sectioning".equalsIgnoreCase(iAppearance)) {
                        name = MESSAGES.pageStudentSectioningReports();
                    } else if ("events".equalsIgnoreCase(iAppearance)) {
                        name = MESSAGES.pageEventReports();
                    } else if ("administration".equalsIgnoreCase(iAppearance)) {
                        name = MESSAGES.pageAdministrationReports();
                    }
                    final String pageName = name;

                    ToolBox.print(new ToolBox.Page() {
                        @Override
                        public String getName() {
                            return pageName;
                        }

                        @Override
                        public String getUser() {
                            return "";
                        }

                        @Override
                        public String getSession() {
                            return "";
                        }

                        @Override
                        public Element getBody() {
                            return div;
                        }
                    });

                }
            });
        }
    });

    iHeader.addButton("export", MESSAGES.buttonExportCSV(), 85, new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            Long id = Long.valueOf(
                    iQuerySelector.getWidget().getValue(iQuerySelector.getWidget().getSelectedIndex()));
            SavedHQLInterface.Query query = null;
            for (SavedHQLInterface.Query q : iQueries) {
                if (id.equals(q.getId())) {
                    query = q;
                    break;
                }
            }
            if (query == null) {
                iHeader.setErrorMessage(MESSAGES.errorNoReportSelected());
                return;
            }
            String params = "";
            for (int i = 0; i < iOptions.size(); i++) {
                SavedHQLInterface.Option option = iOptions.get(i);
                if (query.getQuery().contains("%" + option.getType() + "%")) {
                    ListBox list = ((UniTimeWidget<ListBox>) iForm.getWidget(3 + i, 1)).getWidget();
                    String value = "";
                    boolean allSelected = true;
                    if (list.isMultipleSelect()) {
                        for (int j = 0; j < list.getItemCount(); j++)
                            if (list.isItemSelected(j)) {
                                if (!value.isEmpty())
                                    value += ",";
                                value += list.getValue(j);
                            } else {
                                allSelected = false;
                            }
                    } else if (list.getSelectedIndex() > 0) {
                        value = list.getValue(list.getSelectedIndex());
                    }
                    if (value.isEmpty()) {
                        iHeader.setErrorMessage(MESSAGES.errorItemNotSelected(option.getName()));
                        return;
                    }
                    if (!params.isEmpty())
                        params += ":";
                    params += (list.isMultipleSelect() && allSelected ? "" : value);
                }
            }
            String reportId = iQuerySelector.getWidget()
                    .getValue(iQuerySelector.getWidget().getSelectedIndex());

            RPC.execute(EncodeQueryRpcRequest.encode(
                    "output=hql-report.csv&report=" + reportId + "&params=" + params + "&sort=" + iLastSort),
                    new AsyncCallback<EncodeQueryRpcResponse>() {
                        @Override
                        public void onFailure(Throwable caught) {
                        }

                        @Override
                        public void onSuccess(EncodeQueryRpcResponse result) {
                            ToolBox.open(GWT.getHostPageBaseURL() + "export?q=" + result.getQuery());
                        }
                    });
        }
    });

    iHeader.addButton("edit", MESSAGES.buttonEdit(), 75, new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            SavedHQLInterface.Query query = null;
            Long id = Long.valueOf(
                    iQuerySelector.getWidget().getValue(iQuerySelector.getWidget().getSelectedIndex()));
            for (SavedHQLInterface.Query q : iQueries) {
                if (id.equals(q.getId())) {
                    query = q;
                    break;
                }
            }
            if (query == null) {
                iHeader.setErrorMessage(MESSAGES.errorNoReportSelected());
                return;
            }
            openDialog(query);
        }
    });

    iHeader.addButton("add", MESSAGES.buttonAddNew(), 75, new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            openDialog(null);
        }
    });

    iForm.addHeaderRow(iHeader);
    iHeader.setEnabled("execute", false);
    iHeader.setEnabled("edit", false);
    iHeader.setEnabled("add", false);
    iHeader.setEnabled("print", false);
    iHeader.setEnabled("export", false);

    iForm.getColumnFormatter().setWidth(0, "120px");
    iForm.getColumnFormatter().setWidth(1, "100%");

    iQuerySelector = new UniTimeWidget<ListBox>(new ListBox());
    iForm.addRow(MESSAGES.propReport(), iQuerySelector);
    iQuerySelector.getWidget().addChangeHandler(new ChangeHandler() {
        @Override
        public void onChange(ChangeEvent event) {
            iQuerySelector.clearHint();
            iQuerySelector.setPrintText(
                    iQuerySelector.getWidget().getItemText(iQuerySelector.getWidget().getSelectedIndex()));
            queryChanged();
        }
    });
    iDescription = new HTML("");
    iForm.addRow(MESSAGES.propDescription(), iDescription);
    iForm.getCellFormatter().setVerticalAlignment(2, 0, HasVerticalAlignment.ALIGN_TOP);

    LoadingWidget.getInstance().show(MESSAGES.waitLoadingReports());
    RPC.execute(new HQLOptionsRpcRequest(), new AsyncCallback<HQLOptionsInterface>() {
        @Override
        public void onFailure(Throwable caught) {
            iHeader.setErrorMessage(caught.getMessage());
            LoadingWidget.getInstance().hide();
            ToolBox.checkAccess(caught);
        }

        @Override
        public void onSuccess(HQLOptionsInterface result) {
            iFlags = result.getFlags();
            iOptions = result.getOptions();
            iHeader.setEnabled("add", result.isEditable());
            for (int i = 0; i < iOptions.size(); i++) {
                SavedHQLInterface.Option option = iOptions.get(i);
                ListBox list = new ListBox();
                list.setMultipleSelect(option.isMultiSelect());
                if (!option.isMultiSelect())
                    list.addItem(MESSAGES.itemSelect(), "-1");
                for (SavedHQLInterface.IdValue v : option.values())
                    list.addItem(v.getText(), v.getValue());
                final UniTimeWidget<ListBox> u = new UniTimeWidget<ListBox>(list);
                iForm.addRow(option.getName() + ":", u);
                iForm.getCellFormatter().setVerticalAlignment(3 + i, 0, HasVerticalAlignment.ALIGN_TOP);
                iForm.getRowFormatter().setVisible(3 + i, false);
                if (list.isMultipleSelect()) {
                    for (int j = 0; j < list.getItemCount(); j++)
                        list.setItemSelected(j, true);
                    u.setPrintText(MESSAGES.itemAll());
                } else if (list.getItemCount() == 2) {
                    list.setSelectedIndex(1);
                    u.setPrintText(list.getItemText(1));
                }
                list.addChangeHandler(new ChangeHandler() {
                    @Override
                    public void onChange(ChangeEvent event) {
                        u.clearHint();
                        String selected = "";
                        boolean hasAll = true;
                        for (int i = 0; i < u.getWidget().getItemCount(); i++) {
                            if (u.getWidget().isItemSelected(i)) {
                                if (!selected.isEmpty())
                                    selected += ",";
                                selected += u.getWidget().getItemText(i);
                            } else
                                hasAll = false;
                        }
                        if (hasAll && u.getWidget().getItemCount() > 5)
                            selected = MESSAGES.itemAll();
                        if (selected.length() > 150)
                            selected = selected.substring(0, 147) + "...";
                        u.setPrintText(selected);
                        iHeader.clearMessage();
                    }
                });
            }
            iTableHeader = new UniTimeHeaderPanel(MESSAGES.sectResults());
            iTableHeader.addButton("previous", MESSAGES.buttonPrevious(), 75, new ClickHandler() {
                @Override
                public void onClick(ClickEvent event) {
                    iFirstLine -= 100;
                    execute();
                }
            });
            iTableHeader.addButton("next", MESSAGES.buttonNext(), 75, new ClickHandler() {
                @Override
                public void onClick(ClickEvent event) {
                    iFirstLine += 100;
                    execute();
                }
            });
            iTableHeader.setEnabled("previous", false);
            iTableHeader.setEnabled("next", false);
            iForm.addHeaderRow(iTableHeader);
            iForm.addRow(iTable);
            iForm.addBottomRow(iHeader.clonePanel(""));
            loadQueries(null, true);
        }
    });

    iTable.addMouseClickListener(new UniTimeTable.MouseClickListener<String[]>() {
        @Override
        public void onMouseClick(UniTimeTable.TableEvent<String[]> event) {
            if (event.getRow() > 0 && event.getData() != null) {
                if ("__Class".equals(iFirstField))
                    ToolBox.open(GWT.getHostPageBaseURL() + "classDetail.do?cid=" + event.getData()[0]);
                else if ("__Offering".equals(iFirstField))
                    ToolBox.open(GWT.getHostPageBaseURL() + "instructionalOfferingDetail.do?op=view&io="
                            + event.getData()[0]);
                else if ("__Subpart".equals(iFirstField))
                    ToolBox.open(GWT.getHostPageBaseURL() + "schedulingSubpartDetail.do?ssuid="
                            + event.getData()[0]);
                else if ("__Room".equals(iFirstField))
                    ToolBox.open(
                            GWT.getHostPageBaseURL() + "gwt.jsp?page=rooms&back=1&id=" + event.getData()[0]);
                else if ("__Instructor".equals(iFirstField))
                    ToolBox.open(GWT.getHostPageBaseURL() + "instructorDetail.do?instructorId="
                            + event.getData()[0]);
                else if ("__Exam".equals(iFirstField))
                    ToolBox.open(GWT.getHostPageBaseURL() + "examDetail.do?examId=" + event.getData()[0]);
                else if ("__Event".equals(iFirstField))
                    ToolBox.open(GWT.getHostPageBaseURL() + "gwt.jsp?page=events#event=" + event.getData()[0]);
            }
        }
    });

    initWidget(iForm);

    History.addValueChangeHandler(new ValueChangeHandler<String>() {
        @Override
        public void onValueChange(ValueChangeEvent<String> event) {
            reload(event.getValue());
        }
    });
}

From source file:org.unitime.timetable.gwt.client.hql.SavedHQLPage.java

License:Apache License

public void reload(String history) {
    if (history == null)
        return;/*from  w  w  w.j a  v a2s. com*/
    if (history.indexOf('&') >= 0)
        history = history.substring(0, history.indexOf('&'));
    if (history.isEmpty())
        return;
    String[] params = history.split(":");
    Long id = Long.valueOf(params[0]);
    SavedHQLInterface.Query query = null;
    for (int i = 0; i < iQueries.size(); i++) {
        SavedHQLInterface.Query q = iQueries.get(i);
        if (id.equals(q.getId())) {
            query = q;
            iQuerySelector.getWidget().setSelectedIndex(1 + i);
            queryChanged();
            break;
        }
    }
    if (query == null)
        return;
    int idx = 1;
    for (int i = 0; i < iOptions.size(); i++) {
        SavedHQLInterface.Option option = iOptions.get(i);
        if (query.getQuery().contains("%" + option.getType() + "%")) {
            String param = params[idx++];
            if (param == null || param.isEmpty())
                continue;
            ListBox list = ((UniTimeWidget<ListBox>) iForm.getWidget(3 + i, 1)).getWidget();
            if (list.isMultipleSelect()) {
                for (int j = 0; j < list.getItemCount(); j++) {
                    String value = list.getValue(j);
                    boolean contains = false;
                    for (String o : param.split(","))
                        if (o.equals(value)) {
                            contains = true;
                            break;
                        }
                    list.setItemSelected(j, contains);
                }
            } else {
                for (int j = 1; j < list.getItemCount(); j++) {
                    if (list.getValue(j).equals(param)) {
                        list.setSelectedIndex(j);
                        break;
                    }
                }
            }
        }
    }
    iFirstLine = Integer.parseInt(params[idx++]);
    iLastSort = Integer.parseInt(params[idx++]);
    execute();
}

From source file:org.unitime.timetable.gwt.client.hql.SavedHQLPage.java

License:Apache License

private void execute() {
    HQLExecuteRpcRequest request = new HQLExecuteRpcRequest();
    iHeader.setEnabled("print", false);
    iHeader.setEnabled("export", false);

    Long id = Long.valueOf(iQuerySelector.getWidget().getValue(iQuerySelector.getWidget().getSelectedIndex()));
    for (SavedHQLInterface.Query q : iQueries) {
        if (id.equals(q.getId())) {
            request.setQuery(q);//from  ww  w. ja v a  2s .  c o  m
            break;
        }
    }
    if (request.getQuery() == null) {
        iHeader.setErrorMessage(MESSAGES.errorNoReportSelected());
        return;
    }
    iLastHistory = request.getQuery().getId().toString();
    for (int i = 0; i < iOptions.size(); i++) {
        SavedHQLInterface.Option option = iOptions.get(i);
        if (request.getQuery().getQuery().contains("%" + option.getType() + "%")) {
            SavedHQLInterface.IdValue o = new SavedHQLInterface.IdValue();
            o.setValue(option.getType());
            ListBox list = ((UniTimeWidget<ListBox>) iForm.getWidget(3 + i, 1)).getWidget();
            String value = "";
            boolean allSelected = true;
            if (list.isMultipleSelect()) {
                for (int j = 0; j < list.getItemCount(); j++)
                    if (list.isItemSelected(j)) {
                        if (!value.isEmpty())
                            value += ",";
                        value += list.getValue(j);
                    } else {
                        allSelected = false;
                    }
            } else if (list.getSelectedIndex() > 0) {
                value = list.getValue(list.getSelectedIndex());
            }
            if (value.isEmpty()) {
                iHeader.setErrorMessage(MESSAGES.errorItemNotSelected(option.getName()));
                return;
            }
            request.addOption(option.getType(), value);
            iLastHistory += ":" + (list.isMultipleSelect() && allSelected ? "" : value);
        }
    }

    iTable.clearTable();
    iFirstField = null;
    iTableHeader.clearMessage();
    iHeader.clearMessage();
    LoadingWidget.getInstance().show(MESSAGES.waitExecuting(request.getQuery().getName()));
    History.newItem(iLastHistory + ":" + iFirstLine + ":" + iLastSort, false);
    request.setFromRow(iFirstLine);
    request.setMaxRows(101);
    RPC.execute(request, new AsyncCallback<Table>() {
        @Override
        public void onFailure(Throwable caught) {
            iTableHeader.setErrorMessage(caught.getMessage(), true);
            LoadingWidget.getInstance().hide();
        }

        @Override
        public void onSuccess(Table result) {
            populate(result);
            LoadingWidget.getInstance().hide();
        }
    });
}

From source file:org.unitime.timetable.gwt.client.pointintimedata.PointInTimeDataReportsPage.java

License:Apache License

public PointInTimeDataReportsPage() {
    UniTimePageLabel.getInstance().setPageName(MESSAGES.pagePointInTimeDataReports());

    iForm = new SimpleForm(2);

    iForm.removeStyleName("unitime-NotPrintableBottomLine");

    iHeader = new UniTimeHeaderPanel(MESSAGES.sectFilter());
    iHeader.addButton("execute", MESSAGES.buttonExecute(), 75, new ClickHandler() {
        @Override// ww w  . j  a  v a  2  s.  c o m
        public void onClick(ClickEvent event) {
            iLastSort = 0;
            execute();
        }
    });

    iHeader.addButton("print", MESSAGES.buttonPrint(), 75, new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            PITDExecuteRpcRequest request = new PITDExecuteRpcRequest();
            String id = iReportSelector.getWidget().getValue(iReportSelector.getWidget().getSelectedIndex());
            for (PointInTimeDataReportsInterface.Report q : iReports) {
                if (id.equals(q.getId())) {
                    request.setReport(q);
                    break;
                }
            }
            if (request.getReport() == null) {
                iHeader.setErrorMessage(MESSAGES.errorNoReportSelected());
                return;
            }
            final SimpleForm form = new SimpleForm();
            form.addHeaderRow(request.getReport().getName());
            if (!request.getReport().getDescription().isEmpty())
                form.addRow(MESSAGES.propDescription(), new HTML(request.getReport().getDescription()));

            for (int i = 0; i < iParameters.size(); i++) {
                PointInTimeDataReportsInterface.Parameter parameter = iParameters.get(i);
                if (request.getReport().parametersContain(parameter.getType())) {
                    if (parameter.isTextField()) {
                        TextBox textBox = ((UniTimeWidget<TextBox>) iForm.getWidget(3 + i, 1)).getWidget();
                        String value = textBox.getText();
                        if (value.isEmpty()) {
                            iHeader.setErrorMessage(MESSAGES.errorItemNotSelected(parameter.getName()));
                            return;
                        }
                        request.addParameter(parameter.getType(), value);
                        form.addRow(parameter.getName() + ":", new Label(value, true));
                    } else {
                        ListBox list = ((UniTimeWidget<ListBox>) iForm.getWidget(3 + i, 1)).getWidget();
                        String value = "";
                        String values = "";
                        boolean allSelected = true;
                        if (list.isMultipleSelect()) {
                            for (int j = 0; j < list.getItemCount(); j++)
                                if (list.isItemSelected(j)) {
                                    if (!value.isEmpty()) {
                                        value += ",";
                                        values += ", ";
                                    }
                                    value += list.getValue(j);
                                    values += list.getItemText(j);
                                } else {
                                    allSelected = false;
                                }
                            if (allSelected)
                                values = MESSAGES.itemAll();
                        } else if (list.getSelectedIndex() > 0) {
                            value = list.getValue(list.getSelectedIndex());
                            values = list.getItemText(list.getSelectedIndex());
                        }
                        if (value.isEmpty()) {
                            iHeader.setErrorMessage(MESSAGES.errorItemNotSelected(parameter.getName()));
                            return;
                        }
                        request.addParameter(parameter.getType(), value);
                        form.addRow(parameter.getName() + ":", new Label(values, true));
                    }
                }
            }
            LoadingWidget.getInstance().show(MESSAGES.waitExecuting(request.getReport().getName()));
            RPC.execute(request, new AsyncCallback<Table>() {
                @Override
                public void onFailure(Throwable caught) {
                    iTableHeader.setErrorMessage(caught.getMessage());
                    LoadingWidget.getInstance().hide();
                }

                @Override
                public void onSuccess(Table result) {
                    LoadingWidget.getInstance().hide();
                    if (result == null || result.size() <= 1) {
                        iTableHeader.setMessage(MESSAGES.errorNoResults());
                        return;
                    }
                    final UniTimeTable<String[]> table = new UniTimeTable<String[]>();
                    String firstField = null;
                    int nrCols = 0;
                    for (int i = 0; i < result.size(); i++) {
                        String[] row = result.get(i);
                        List<Widget> line = new ArrayList<Widget>();
                        if (i == 0) {
                            firstField = row[0];
                            nrCols = row.length;
                            for (String x : row) {
                                final String name = x.replace('_', ' ').trim();
                                UniTimeTableHeader h = new UniTimeTableHeader(name, 1);
                                line.add(h);
                            }
                        } else {
                            for (String x : row) {
                                line.add(new HTML(x == null ? "" : x.replace("\\n", "<br>")));
                            }
                        }
                        table.addRow(i == 0 ? null : row, line);
                    }
                    if (firstField != null && firstField.startsWith("__"))
                        table.setColumnVisible(0, false);
                    if (iLastSort != 0 && Math.abs(iLastSort) <= nrCols) {
                        table.sort(table.getHeader(Math.abs(iLastSort) - 1), new Comparator<String[]>() {
                            @Override
                            public int compare(String[] o1, String[] o2) {
                                return PointInTimeDataReportsPage.compare(o1, o2, Math.abs(iLastSort) - 1);
                            }
                        }, iLastSort > 0);
                    }
                    table.getElement().getStyle().setWidth(1040, Unit.PX);

                    // Move header row to thead
                    Element headerRow = table.getRowFormatter().getElement(0);
                    Element tableElement = table.getElement();
                    Element thead = DOM.createTHead();
                    tableElement.insertFirst(thead);
                    headerRow.getParentElement().removeChild(headerRow);
                    thead.appendChild(headerRow);

                    final Element div = DOM.createDiv();
                    div.appendChild(form.getElement());
                    div.appendChild(table.getElement());

                    String name = MESSAGES.pagePointInTimeDataReports();
                    final String pageName = name;

                    ToolBox.print(new ToolBox.Page() {
                        @Override
                        public String getName() {
                            return pageName;
                        }

                        @Override
                        public String getUser() {
                            return "";
                        }

                        @Override
                        public String getSession() {
                            return "";
                        }

                        @Override
                        public Element getBody() {
                            return div;
                        }
                    });

                }
            });
        }
    });

    iHeader.addButton("export", MESSAGES.buttonExportCSV(), 85, new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            String id = iReportSelector.getWidget().getValue(iReportSelector.getWidget().getSelectedIndex());
            PointInTimeDataReportsInterface.Report query = null;
            for (PointInTimeDataReportsInterface.Report q : iReports) {
                if (id.equals(q.getId())) {
                    query = q;
                    break;
                }
            }
            if (query == null) {
                iHeader.setErrorMessage(MESSAGES.errorNoReportSelected());
                return;
            }
            String params = "";
            for (int i = 0; i < iParameters.size(); i++) {
                PointInTimeDataReportsInterface.Parameter parameter = iParameters.get(i);
                if (query.parametersContain(parameter.getType())) {
                    if (parameter.isTextField()) {
                        TextBox textBox = ((UniTimeWidget<TextBox>) iForm.getWidget(3 + i, 1)).getWidget();
                        String value = textBox.getText();
                        if (value.isEmpty()) {
                            iHeader.setErrorMessage(MESSAGES.errorItemNotSelected(parameter.getName()));
                            return;
                        }
                        if (!params.isEmpty())
                            params += ":";
                        params += (value == null ? "" : value);
                    } else {

                        ListBox list = ((UniTimeWidget<ListBox>) iForm.getWidget(3 + i, 1)).getWidget();
                        String value = "";
                        boolean allSelected = true;
                        if (list.isMultipleSelect()) {
                            for (int j = 0; j < list.getItemCount(); j++)
                                if (list.isItemSelected(j)) {
                                    if (!value.isEmpty())
                                        value += ",";
                                    value += list.getValue(j);
                                } else {
                                    allSelected = false;
                                }
                        } else if (list.getSelectedIndex() > 0) {
                            value = list.getValue(list.getSelectedIndex());
                        }
                        if (value.isEmpty()) {
                            iHeader.setErrorMessage(MESSAGES.errorItemNotSelected(parameter.getName()));
                            return;
                        }
                        if (!params.isEmpty())
                            params += ":";
                        params += (list.isMultipleSelect() && allSelected ? "" : value);
                    }
                }
            }
            String reportId = iReportSelector.getWidget()
                    .getValue(iReportSelector.getWidget().getSelectedIndex());

            RPC.execute(EncodeQueryRpcRequest.encode(
                    "output=pitd-report.csv&report=" + reportId + "&params=" + params + "&sort=" + iLastSort),
                    new AsyncCallback<EncodeQueryRpcResponse>() {
                        @Override
                        public void onFailure(Throwable caught) {
                        }

                        @Override
                        public void onSuccess(EncodeQueryRpcResponse result) {
                            ToolBox.open(GWT.getHostPageBaseURL() + "export?q=" + result.getQuery());
                        }
                    });
        }
    });

    iForm.addHeaderRow(iHeader);
    iHeader.setEnabled("execute", false);
    iHeader.setEnabled("print", false);
    iHeader.setEnabled("export", false);

    iForm.getColumnFormatter().setWidth(0, "120px");
    iForm.getColumnFormatter().setWidth(1, "100%");

    iReportSelector = new UniTimeWidget<ListBox>(new ListBox());
    iForm.addRow(MESSAGES.propReport(), iReportSelector);
    iReportSelector.getWidget().addChangeHandler(new ChangeHandler() {
        @Override
        public void onChange(ChangeEvent event) {
            iReportSelector.clearHint();
            iReportSelector.setPrintText(
                    iReportSelector.getWidget().getItemText(iReportSelector.getWidget().getSelectedIndex()));
            queryChanged();
        }
    });
    iDescription = new HTML("");
    iForm.addRow(MESSAGES.propDescription(), iDescription);
    iForm.getCellFormatter().setVerticalAlignment(2, 0, HasVerticalAlignment.ALIGN_TOP);

    LoadingWidget.getInstance().show(MESSAGES.waitLoadingReports());
    RPC.execute(new PITDParametersRpcRequest(), new AsyncCallback<PITDParametersInterface>() {
        @Override
        public void onFailure(Throwable caught) {
            iHeader.setErrorMessage(caught.getMessage());
            LoadingWidget.getInstance().hide();
            ToolBox.checkAccess(caught);
        }

        @Override
        public void onSuccess(PITDParametersInterface result) {
            iParameters = result.getParameters();
            for (int i = 0; i < iParameters.size(); i++) {
                PointInTimeDataReportsInterface.Parameter parameter = iParameters.get(i);
                if (parameter.isTextField()) {
                    TextBox text = new TextBox();
                    if (parameter.getDefaultTextValue() != null) {
                        text.setText(parameter.getDefaultTextValue());
                        text.setValue(parameter.getDefaultTextValue());
                    }
                    final UniTimeWidget<TextBox> u = new UniTimeWidget<TextBox>(text);
                    iForm.addRow(parameter.getName() + ":", u);
                    iForm.getCellFormatter().setVerticalAlignment(3 + i, 0, HasVerticalAlignment.ALIGN_TOP);
                    iForm.getRowFormatter().setVisible(3 + i, false);
                    u.setPrintText(text.getValue());
                    text.addChangeHandler(new ChangeHandler() {
                        @Override
                        public void onChange(ChangeEvent event) {
                            u.clearHint();
                            String entered = u.getWidget().getValue();
                            u.setPrintText(entered);
                            iHeader.clearMessage();
                        }
                    });
                } else {
                    ListBox list = new ListBox();
                    list.setMultipleSelect(parameter.isMultiSelect());
                    if (!parameter.isMultiSelect())
                        list.addItem(MESSAGES.itemSelect(), "-1");
                    for (PointInTimeDataReportsInterface.IdValue v : parameter.values())
                        list.addItem(v.getText(), v.getValue());
                    final UniTimeWidget<ListBox> u = new UniTimeWidget<ListBox>(list);
                    iForm.addRow(parameter.getName() + ":", u);
                    iForm.getCellFormatter().setVerticalAlignment(3 + i, 0, HasVerticalAlignment.ALIGN_TOP);
                    iForm.getRowFormatter().setVisible(3 + i, false);
                    if (list.isMultipleSelect()) {
                        for (int j = 0; j < list.getItemCount(); j++)
                            list.setItemSelected(j, true);
                        u.setPrintText(MESSAGES.itemAll());
                    } else if (list.getItemCount() == 2) {
                        list.setSelectedIndex(1);
                        u.setPrintText(list.getItemText(1));
                    }
                    list.addChangeHandler(new ChangeHandler() {
                        @Override
                        public void onChange(ChangeEvent event) {
                            u.clearHint();
                            String selected = "";
                            boolean hasAll = true;
                            for (int i = 0; i < u.getWidget().getItemCount(); i++) {
                                if (u.getWidget().isItemSelected(i)) {
                                    if (!selected.isEmpty())
                                        selected += ",";
                                    selected += u.getWidget().getItemText(i);
                                } else
                                    hasAll = false;
                            }
                            if (hasAll && u.getWidget().getItemCount() > 5)
                                selected = MESSAGES.itemAll();
                            if (selected.length() > 150)
                                selected = selected.substring(0, 147) + "...";
                            u.setPrintText(selected);
                            iHeader.clearMessage();
                        }
                    });

                }
            }
            iTableHeader = new UniTimeHeaderPanel(MESSAGES.sectResults());
            iForm.addHeaderRow(iTableHeader);
            iForm.addRow(iTable);
            iForm.addBottomRow(iHeader.clonePanel(""));
            loadQueries(null, true);
        }
    });

    iTable.addMouseClickListener(new UniTimeTable.MouseClickListener<String[]>() {
        @Override
        public void onMouseClick(UniTimeTable.TableEvent<String[]> event) {
            if (event.getRow() > 0 && event.getData() != null) {
                if ("__Class".equals(iFirstField))
                    ToolBox.open(GWT.getHostPageBaseURL() + "classDetail.do?cid=" + event.getData()[0]);
                else if ("__Offering".equals(iFirstField))
                    ToolBox.open(GWT.getHostPageBaseURL() + "instructionalOfferingDetail.do?op=view&io="
                            + event.getData()[0]);
                else if ("__Subpart".equals(iFirstField))
                    ToolBox.open(GWT.getHostPageBaseURL() + "schedulingSubpartDetail.do?ssuid="
                            + event.getData()[0]);
                else if ("__Room".equals(iFirstField))
                    ToolBox.open(
                            GWT.getHostPageBaseURL() + "gwt.jsp?page=rooms&back=1&id=" + event.getData()[0]);
                else if ("__Instructor".equals(iFirstField))
                    ToolBox.open(GWT.getHostPageBaseURL() + "instructorDetail.do?instructorId="
                            + event.getData()[0]);
                else if ("__Exam".equals(iFirstField))
                    ToolBox.open(GWT.getHostPageBaseURL() + "examDetail.do?examId=" + event.getData()[0]);
                else if ("__Event".equals(iFirstField))
                    ToolBox.open(GWT.getHostPageBaseURL() + "gwt.jsp?page=events#event=" + event.getData()[0]);
            }
        }
    });

    initWidget(iForm);

    History.addValueChangeHandler(new ValueChangeHandler<String>() {
        @Override
        public void onValueChange(ValueChangeEvent<String> event) {
            reload(event.getValue());
        }
    });
}

From source file:org.unitime.timetable.gwt.client.pointintimedata.PointInTimeDataReportsPage.java

License:Apache License

public void reload(String history) {
    if (history == null)
        return;/*ww  w.  j a va2s  .  co m*/
    if (history.indexOf('&') >= 0)
        history = history.substring(0, history.indexOf('&'));
    if (history.isEmpty())
        return;
    String[] params = history.split(":");
    String id = params[0];
    PointInTimeDataReportsInterface.Report rpt = null;
    for (int i = 0; i < iReports.size(); i++) {
        PointInTimeDataReportsInterface.Report q = iReports.get(i);
        if (id.equals(q.getId())) {
            rpt = q;
            iReportSelector.getWidget().setSelectedIndex(1 + i);
            queryChanged();
            break;
        }
    }
    if (rpt == null)
        return;
    int idx = 1;
    for (int i = 0; i < iParameters.size(); i++) {
        PointInTimeDataReportsInterface.Parameter parameter = iParameters.get(i);
        if (rpt.parametersContain(parameter.getType())) {
            String param = params[idx++];
            if (param == null || param.isEmpty())
                continue;
            if (parameter.isTextField()) {
                TextBox text = ((UniTimeWidget<TextBox>) iForm.getWidget(3 + i, 1)).getWidget();
                text.setText(param);
            } else {
                ListBox list = ((UniTimeWidget<ListBox>) iForm.getWidget(3 + i, 1)).getWidget();
                if (list.isMultipleSelect()) {
                    for (int j = 0; j < list.getItemCount(); j++) {
                        String value = list.getValue(j);
                        boolean contains = false;
                        for (String o : param.split(","))
                            if (o.equals(value)) {
                                contains = true;
                                break;
                            }
                        list.setItemSelected(j, contains);
                    }
                } else {
                    for (int j = 1; j < list.getItemCount(); j++) {
                        if (list.getValue(j).equals(param)) {
                            list.setSelectedIndex(j);
                            break;
                        }
                    }
                }
            }
        }
    }
    iLastSort = Integer.parseInt(params[idx++]);
    execute();
}

From source file:org.unitime.timetable.gwt.client.pointintimedata.PointInTimeDataReportsPage.java

License:Apache License

private void execute() {
    PITDExecuteRpcRequest request = new PITDExecuteRpcRequest();
    iHeader.setEnabled("print", false);
    iHeader.setEnabled("export", false);

    String id = iReportSelector.getWidget().getValue(iReportSelector.getWidget().getSelectedIndex());
    for (PointInTimeDataReportsInterface.Report r : iReports) {
        if (id.equals(r.getId())) {
            request.setReport(r);/*from www  . java 2  s . co  m*/
            break;
        }
    }
    if (request.getReport() == null) {
        iHeader.setErrorMessage(MESSAGES.errorNoReportSelected());
        return;
    }
    iLastHistory = request.getReport().getId().toString();
    for (int i = 0; i < iParameters.size(); i++) {
        PointInTimeDataReportsInterface.Parameter parameter = iParameters.get(i);
        if (request.getReport().parametersContain(parameter.getType())) {
            if (parameter.isTextField()) {
                TextBox textBox = ((UniTimeWidget<TextBox>) iForm.getWidget(3 + i, 1)).getWidget();
                String value = textBox.getText();
                if (value.isEmpty()) {
                    iHeader.setErrorMessage(MESSAGES.errorItemNotSelected(parameter.getName()));
                    return;
                }
                request.addParameter(parameter.getType(), value);
                iLastHistory += ":" + (value == null ? "" : value);
            } else {
                PointInTimeDataReportsInterface.IdValue o = new PointInTimeDataReportsInterface.IdValue();
                o.setValue(parameter.getType());
                ListBox list = ((UniTimeWidget<ListBox>) iForm.getWidget(3 + i, 1)).getWidget();
                String value = "";
                boolean allSelected = true;
                if (list.isMultipleSelect()) {
                    for (int j = 0; j < list.getItemCount(); j++)
                        if (list.isItemSelected(j)) {
                            if (!value.isEmpty())
                                value += ",";
                            value += list.getValue(j);
                        } else {
                            allSelected = false;
                        }
                } else if (list.getSelectedIndex() > 0) {
                    value = list.getValue(list.getSelectedIndex());
                }
                if (value.isEmpty()) {
                    iHeader.setErrorMessage(MESSAGES.errorItemNotSelected(parameter.getName()));
                    return;
                }
                request.addParameter(parameter.getType(), value);
                iLastHistory += ":" + (list.isMultipleSelect() && allSelected ? "" : value);
            }
        }
    }

    iTable.clearTable();
    iFirstField = null;
    iTableHeader.clearMessage();
    iHeader.clearMessage();
    LoadingWidget.getInstance().show(MESSAGES.waitExecuting(request.getReport().getName()));
    History.newItem(iLastHistory + ":" + iLastSort, false);
    RPC.execute(request, new AsyncCallback<Table>() {
        @Override
        public void onFailure(Throwable caught) {
            iTableHeader.setErrorMessage(caught.getMessage());
            LoadingWidget.getInstance().hide();
        }

        @Override
        public void onSuccess(Table result) {
            populate(result);
            LoadingWidget.getInstance().hide();
        }
    });
}