⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adhocreportframe.java

📁 CRM源码This file describes some issues that should be implemented in future and how it should be imple
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                setColumnSelected(selectedColumn - 1);
            }
        });
        delButton.addClickListener(new ClickListener() {
            public void onClick(Widget sender) {
                int selectedColumn = adhocGrid.getView().getSelectedColumn();
                Events.ELEMENT_REMOVED_EVENT.setData(reportElements.get(
                        selectedColumn));
                eventSource.fireEvent(Events.ELEMENT_REMOVED_EVENT);

                removeReportElement(selectedColumn);
            }
        });
        renButton.addClickListener(new ClickListener() {
            public void onClick(Widget sender) {
                int selectedColumn = adhocGrid.getView().getSelectedColumn();
                AdhocData data = (AdhocData) reportElements.get(selectedColumn);

                getFieldRenamingPopup().setInputText(
                        data.getFieldSent().getCaption());
                getFieldRenamingPopup().show(renButton);
            }
        });
        moveRightButton.addClickListener(new ClickListener() {
            public void onClick(Widget sender) {
                int selectedColumn = adhocGrid.getView().getSelectedColumn();
                moveReportElement(selectedColumn, selectedColumn + 1);
                setColumnSelected(selectedColumn + 1);
            }
        });
        saveButton.addClickListener(new ClickListener() {
            public void onClick(Widget sender) {
                getSaveReportPopup().reset();
                getSaveReportPopup().show(saveButton);
            }
        });
        loadButton.addClickListener(new ClickListener() {
            public void onClick(Widget sender) {
                getLoadedReportsDialog().showReportList();
            }
        });
        adhocGrid.getController().getEventSource().addEventListener(this);
    }

    private SingleLineInputDialog getSaveReportPopup() {
        if(saveReportPopup == null) {
            saveReportPopup = createSaveReportPopup();
        }
        return saveReportPopup;
    }

    private SingleLineInputDialog createSaveReportPopup() {
        final SingleLineInputDialog dialog = new SingleLineInputDialog(
                SAVE_REPORT_MESSAGE, REPORT_NAME_MESSAGE, false);

        dialog.getEventSource().addEventListener(new EventListener() {
            public void onEvent(Event event, Widget sender) {
                if(event == OkayCancelPopup.Events.OK) {
                    if(!StringUtil.isStringEmpty(dialog.getInputText())) {
                        eventSource.fireEvent(Events.SAVE_REPORT);
                    } else {
                        DialogHelper.showModalMessageDialog(
                                FILL_REPORT_NAME_FIRST_MESSAGE);
                    }
                }
            }
        });

        return dialog;
    }

    private SingleLineInputDialog getFieldRenamingPopup() {
        if(fieldRenamingPopup == null) {
            fieldRenamingPopup = createFieldRenamingPopup();
        }
        return fieldRenamingPopup;
    }

    private SingleLineInputDialog createFieldRenamingPopup() {
        final SingleLineInputDialog dialog = new SingleLineInputDialog(
                FIELD_NAME_MESSAGE, NEW_FIELD_NAME_INPUT_MESSAGE, false);

        dialog.getEventSource().addEventListener(new EventListener() {
            public void onEvent(Event event, Widget sender) {
                if(event == OkayCancelPopup.Events.OK) {
                    if(!StringUtil.isStringEmpty(dialog.getInputText())) {
                        setFieldCaption();
                    } else {
                        DialogHelper.showModalMessageDialog(
                                FILL_FIELD_NAME_FIRST_MESSAGE);
                    }
                }
            }
        });

        return dialog;
    }

    private LoadingReportDialog getLoadedReportsDialog() {
        if(loadReportPopup == null) {
            loadReportPopup = new LoadingReportDialog(
                    metaData.getAdhocReportsMeta(), new LoadReportCallback());
        }
        return loadReportPopup;
    }

    public void runReport(List filters) {
        RPC.QAsyncCallback callback = new SearchGridRecordsAsyncCallback();
        AdhocSearchGridRecordsRequest request
                = new AdhocSearchGridRecordsRequest();

        QGridModel model = adhocGrid.getModel();
        GridSearchProperties props = new
                GridSearchProperties(model.isCounterToggledOn(),
                (int) model.getCurrentPage(),
                model.getPageSize(), null);

        request.setFields(reportElementsToRequestElements());
        request.setEntityFilters(filters);
        SortColumn col = model.getSortColumn();
        if(col != null) {
            AdhocData element = (AdhocData) reportElements.get(
                    col.getColumnIndex());
            String formId = metaData.getFormID(element.getFormIndex());
            String key = EntityElement.getElementKey(formId,
                    element.getFieldSent().getFieldID());
            props.setSortField(new SortFieldImpl(key,
                    model.getSortField().getSortOrder()));
        }
        request.setProps(props);

        RPC.getRPC().customEntitiesFieldsSearch(request, callback);
    }

    public void exportGridToExcel(List filters) {
        exportGrid(filters, EXCEL_TYPE);
    }

    public void exportGridToWord(List filters) {
        exportGrid(filters, WORD_TYPE);
    }

    public void exportGridToHtml(List filters) {
        exportGrid(filters, HTML_TYPE);
    }

    private void exportGrid(List filters, String exportType) {
        long prcId = generateUniqueProcessId();
        PrintCallback callback = new PrintCallback(exportType, prcId, false);
        if(printRequest == null) {
            printRequest = new AdhocPrintRequestObject();
        }
        printRequest = new AdhocPrintRequestObject(filters,
                reportElementsToRequestElements(), prcId);
        RPC.getRPC().customEntitiesFieldsReport(printRequest, callback);
    }

    private static long generateUniqueProcessId() {
        return System.currentTimeMillis();
    }

    /**
     * Load report with the given report name and elements
     *
     * @param reportName   report name
     * @param reportFields elements of {@link com.queplix.core.client.common.crossframes.AdhocData}
     */
    public void loadReport(String reportName, List reportFields) {
        removeAllReportElements();
        addAllReportElements(reportFields);
        loadedReportLabel.setText(REPORT_LOADED_LABEL + reportName);
    }

    public void saveAdhocReport(List filters) {
        RPC.QAsyncCallback callback = new SaveReportCallback();
        if(saveReportRequest == null) {
            saveReportRequest = new SaveAdhocReportRequestObject();
        }
        saveReportRequest.init(filters, reportElementsToRequestElements(),
                getSaveReportPopup().getInputText());
        RPC.getRPC().saveReport(saveReportRequest, callback);
    }

    private List/*]<ReportElement>[*/ reportElementsToRequestElements() {
        ArrayList/*]<ReportElement>[*/ fields
                = new ArrayList/*]<ReportElement>[*/();
        for(int i = 0; i < reportElements.size(); i++) {
            AdhocData data = (AdhocData) reportElements.get(i);
            String formId = metaData.getFormID(data.getFormIndex());
            fields.add(new EntityElement(formId,
                    data.getFieldSent().getFieldID(),
                    data.getFieldSent().getCaption()));
        }
        return fields;
    }

    private void initGUI() {
        setWidth("100%");

        frameLinks = new FrameLinks();
        frameLinks.getEventSource().addEventListener(eventSource);
        add(frameLinks);
        setCellHorizontalAlignment(frameLinks,
                HasHorizontalAlignment.ALIGN_RIGHT);

        buttonsPanel = new HorizontalPanel();
        clearAllButton = new QButton(CLEAR_ALL_BUTTON,
                CLEAR_ALL_TOOLTIP_BUTTON);
        buttonsPanel.add(clearAllButton);
        runButton = new QButton(RUN_REPORT_BUTTON, RUN_REPORT_TOOLTIP_BUTTON);
        buttonsPanel.add(runButton);
        moveLeftButton = new QButton(MOVE_COLUMN_LEFT_BUTTON,
                MOVE_COLUMN_LEFT_TOOLTIP_BUTTON);
        moveLeftButton.setEnabled(false);
        buttonsPanel.add(moveLeftButton);
        delButton = new QButton(DELETE_COLUMN_BUTTON,
                DELETE_COLUMN_TOOLTIP_BUTTON);
        buttonsPanel.add(delButton);
        renButton = new QButton(RENAME_COLUMN_BUTTON,
                RENAME_COLUMN_TOOLTIP_BUTTON);
        buttonsPanel.add(renButton);
        moveRightButton = new QButton(MOVE_COLUMN_RIGHT_BUTTON,
                MOVE_COLUMN_RIGHT_TOOLTIP_BUTTON);
        buttonsPanel.add(moveRightButton);
        saveButton = new QButton(SAVE_REPORT_BUTTON,
                SAVE_REPORT_TOOLTIP_BUTTON);
        buttonsPanel.add(saveButton);
        loadButton = new QButton(LOAD_REPORT_BUTTON,
                LOAD_REPORT_TOOLTIP_BUTTON);
        buttonsPanel.add(loadButton);
        add(buttonsPanel);

        loadedReportLabel = new Label();
        loadedReportLabel.setText(REPORT_LOADED_LABEL + NONE_REPORT_NAME);
        add(loadedReportLabel);

        adhocGrid = new QGrid(new GridMeta(), false);
        DeckPanel deck = new DeckPanel();
        deck.add(adhocGrid.getView());
        deck.setWidth("100%");
        deck.showWidget(0);
        add(deck);

        Window.addWindowResizeListener(this);
        setWidth(StringUtil.pixelToSize(Window.getClientWidth()));
    }

    public Widget getView() {
        return this;
    }

    public void activated() {
        isActive = true;
        refresh();
    }

    public void disabled() {
        isActive = false;
    }

    /**
     * @return list of AdhocData elements. List<AdhocData>
     */
    public List getReportElements() {
        return reportElements;
    }

    public void onWindowResized(int width, int height) {
        setWidth(StringUtil.pixelToSize(width));
        setHeight(StringUtil.pixelToSize(height));
    }

    public void setWidth(String width) {
        super.setWidth(width);
        if(adhocGrid != null) {
            adhocGrid.getView().setWidth(width);
        }
    }

    public void setHeight(String height) {
        super.setHeight(height);
        if(adhocGrid != null) {
            int fullHeight = StringUtil.sizeToPixel(height);
            int gridHeight = fullHeight - loadedReportLabel.getOffsetHeight()
                    - buttonsPanel.getOffsetHeight()
                    - frameLinks.getOffsetHeight();
            if(gridHeight > 0) {
                adhocGrid.getView().setOffsetHeight(gridHeight);
            }
        }
    }

    private class PrintCallback extends RPC.QAsyncCallback {
        private String exportType;
        private long processId;
        private boolean printPage;

        public PrintCallback(String exportType, long processId,
                             boolean printPage) {
            this.exportType = exportType;
            this.processId = processId;
            this.printPage = printPage;
        }

        public void onRequestEnded(boolean success, Object result) {
            if(success) {
                JavaScriptObject printGridWindow = WindowHelper.openWindow(
                        "../getReport/response/" + exportType + "/"
                                + processId + "?transletName=report");
                if(printPage) {
                    WindowHelper.printWindow(printGridWindow);
                }
            }
        }
    }

    private class SaveReportCallback extends RPC.QAsyncCallback {
        public void onRequestEnded(boolean success, Object result) {
            if(success) {
                DialogHelper.showModalMessageDialog(
                        SUCCESSFULLY_SAVED_REPORT_MESSAGE);
            }
        }
    }

    private class SearchGridRecordsAsyncCallback extends RPC.QAsyncCallback {
        public void onRequestEnded(boolean success, Object result) {
            if(success) {
                SearchGridRecordsResponseObject searchRes
                        = (SearchGridRecordsResponseObject) result;
                QGridModel gridModel = adhocGrid.getModel();
                gridModel.setGridData(searchRes.getGridData(),
                        searchRes.getTotalRecordsCount(),
                        searchRes.getCurrentPage());
            }
        }
    }

    private class LoadReportCallback extends RPC.QAsyncCallback {
        public void onRequestEnded(boolean success, Object result) {
            if(success) {
                LoadReportResponseObject resp
                        = (LoadReportResponseObject) result;
                if(!StringUtil.isStringEmpty(resp.getWarningMessage())) {
                    DialogHelper.showMessageDialog(
                            REPORT_MAY_BE_INCORRECT_WARNING
                                    + resp.getWarningMessage());
                }
                Events.REPORT_LOADED.setData(result);
                getEventSource().fireEvent(Events.REPORT_LOADED);
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -