emailcomposeframe.java

来自「CRM源码This file describes some issues tha」· Java 代码 · 共 515 行 · 第 1/2 页

JAVA
515
字号
            int index = attachments.getSelectedIndex();
            if (index == -1) {
                DialogHelper.showModalMessageDialog(EmailComposeHelper.ERR_MSG_NO_ACTIVE_RECORD);
            } else {
                deleteAttachment(index);
            }
        }
    }
    
    private void initAttachmentDialog() {
        if (attachmentDialog == null) {
            attachmentsIds = new ArrayList();
        }
        fileUpload = new QFileUpload(getAction(), false);
        fileUpload.addQFileUploadListener(new QFileUploadListener() {
            public void onFileUploaded(Widget sender, String id) {
                attachmentsIds.add(id);
                attachments.addItem(fileUpload.getFileUploadName());
                attachmentDialog.hide();
            }
        });
        attachmentDialog = new OkayCancelPopup(EmailComposeHelper.ATTACHMENT_CAPTION, true);
        attachmentDialog.getEventSource().addEventListener(new EventListener() {
            public void onEvent(Event event, Widget sender) {
                if (event == OkayCancelPopup.Events.OK) {
                    fileUpload.submitUpload();
                } else if (event == OkayCancelPopup.Events.CANCEL) {
                    attachmentDialog.hide();
                }
            }
        });
        attachmentDialog.setWidget(fileUpload);
    }
    
    private String getAction() {
        return "../attachmentUpload/saveTemp?process_id=" + process_id;
    }
    
    private void deleteAttachment(final int index) {
        if (deleteForm == null) {
            deleteForm = new FormPanel();
            mainPanel.add(deleteForm);
            deleteForm.addFormHandler(new FormHandler() {
                public void onSubmit(FormSubmitEvent event) {
                }
                public void onSubmitComplete(FormSubmitCompleteEvent event) {
                    attachmentsIds.remove(index);
                    attachments.removeItem(index);
                }
            });
        }
        deleteForm.setMethod(FormPanel.METHOD_POST);
        deleteForm.setAction("../attachmentUpload/deleteTemp?id=" + attachmentsIds.get(index));
        deleteForm.submit();
    }
    
    public boolean validate() {
        boolean isToValid = !to.getText().trim().equals("");
        boolean isSubjectValid = !subject.getText().trim().equals("");
        if (!isToValid || !isSubjectValid) {
            String errMsg = EmailComposeHelper.ERR_MSG_EMPTY_FIELDS + "\r\n";
            if (!isToValid) {
                toL.setStyleName("form_formElementRequiredColor");
                errMsg += "[" + toL.getText() +"]";
            } else {
                toL.setStyleName("form_formElement");
            }
            if (!isSubjectValid) {
                subjectL.setStyleName("form_formElementRequiredColor");
                errMsg +=  "\r\n[" + subjectL.getText() + "]" ;
            } else {
                subjectL.setStyleName("form_formElement");
            }
            DialogHelper.showModalMessageDialog(errMsg + ".");
            return false;
        } else {
            toL.setStyleName("form_formElement");
            subjectL.setStyleName("form_formElement");
        }
        return true;
    }
    
    public void resetInput() {
        setProcess_id(System.currentTimeMillis());
        getHtmlEditFrame().setImageAttachmentAction(getAction());
        if (fileUpload != null) {
            fileUpload.setAction(getAction());
        }
        to.setText("");
        toL.setStyleName("form_formElementRequiredColor");
        cc.setText("");
        subject.setText("");
        subjectL.setStyleName("form_formElementRequiredColor");
        attachments.clear();
        memo.getModel().getData().setText("");
        HtmlEditFrame htmlEditFrame = getHtmlEditFrame();
        htmlEditFrame.setText("");
        htmlEditFrame.toggleView(true);
    }

    public void setInitialData() {
        setProcess_id(System.currentTimeMillis());
        getHtmlEditFrame().setImageAttachmentAction(getAction());
        if (fileUpload != null) {
            fileUpload.setAction(getAction());
        }
        to.setText("");
        toL.setStyleName("form_formElementRequiredColor");
        cc.setText("");
        subject.setText("");
        subjectL.setStyleName("form_formElementRequiredColor");
        attachments.clear();
        if (initMap == null || initMap.size() == 0) {
            //memo.getModel().getData().setText("");
            //HtmlEditFrame htmlEditFrame = (HtmlEditFrame) memo.getView().getActiveControl();
            //htmlEditFrame.setText("");
            //htmlEditFrame.toggleView(true);
            return;
        }    
        // set initial values
        String initFrom = (String) initMap.get(EmailComposeHelper.FROM_MAP_FIELD);
        if (!StringUtil.isStringEmpty(initFrom)) {
            from.setText(initFrom);
        }
        String initTo = (String) initMap.get(EmailComposeHelper.TO_MAP_FIELD);
        if (!StringUtil.isStringEmpty(initTo)) {
            to.setText(initTo);
        }
        String initCc = (String) initMap.get(EmailComposeHelper.CC_MAP_FIELD);
        if (!StringUtil.isStringEmpty(initCc)) {
            cc.setText(initCc);
        }
        String initSbj = (String) initMap.get(EmailComposeHelper.SUBJECT_MAP_FIELD);
        if (!StringUtil.isStringEmpty(initSbj)) {
            subject.setText(initSbj);
        }
        String initBody = (String) initMap.get(EmailComposeHelper.BODY_MAP_FIELD);
        if (!StringUtil.isStringEmpty(initBody)) {
            HtmlEditFrame actCtrl = (HtmlEditFrame) memo.getView().getActiveControl();
            memo.getModel().getData().setText(initBody);
            ///actCtrl.setupEditor(initBody);
            actCtrl.toggleView(HtmlEditFrame.isHTML(initBody));
            actCtrl.setText(initBody);
            actCtrl.setOffsetWidth(HtmlEditFrame.DEFAULT_WIDTH);
            actCtrl.setOffsetHeight(HtmlEditFrame.DEFAULT_HEIGHT);
        }
    }
    
    public void setOffsetHeight(int height) {
        if (MIN_HEIGHT > height) {
            height = MIN_HEIGHT;
        }
        mainPanel.setHeight(height + "px");
        memo.getView().setOffsetHeight(height - topPanel.getOffsetHeight());
    }

    public void setOffsetWidth(int width) {
        if (MIN_WIDTH > width) {
            width = MIN_WIDTH;
        }
        String w  = width + "px";
        memo.getView().setOffsetWidth(width);
        setWidth(w);
        mainPanel.setWidth(w);
        topPanel.setWidth(w);
    }
    
    public String getTo() {
        return to.getText();
    }
    
    public String getFrom() {
        return from.getText();
    }

    public String getSubject() {
        return subject.getText();
    }

    public String getCc() {
        return cc.getText();
    }

    public String getEmailBody(boolean processPlainTextAsHtml) {
        memo.getController().uploadDataToModel();
        
        String text = memo.getModel().getData().getText();
        
        if (getHtmlEditFrame().isShowFrame()) {
            text = StringUtil.removeImagesSrc(text);
            removeUnusedHiddenAttachments(text);
        }
        
        if (processPlainTextAsHtml) {
            if (!getHtmlEditFrame().isShowFrame()) {
                text = "<pre>" + text + "</pre><!--html-->";
            }
        }
        
        return text;
    }

    public void removeUnusedHiddenAttachments(String text) {
        usedAttachments = new ArrayList();
        for (int i=0; i<text.length() - 4; i++) {
            if (Character.toUpperCase(text.charAt(i)) == '<' &&
                Character.toUpperCase(text.charAt(i + 1)) == 'I' &&
                Character.toUpperCase(text.charAt(i + 2)) == 'M' &&
                Character.toUpperCase(text.charAt(i + 3)) == 'G') {
                int start = i + 5;
                int end = text.indexOf('>', i + 3);
                processTag(text.substring(start, end + 1));
                i = end;
            }
        }
        for (int i=0; i<usedAttachments.size(); i++) {
            hiddenAttachments.remove(usedAttachments.get(i));
        }
        for (Iterator i = hiddenAttachments.keySet().iterator(); i.hasNext();) {
            String name = (String) i.next();
            deleteAttachment((String) hiddenAttachments.get(name));
        }
        hiddenAttachments = new HashMap();
    }
    
    private void deleteAttachment(String id) {
        if (deleteHiddenAttachmentsForm == null) {
            deleteHiddenAttachmentsForm = new FormPanel();
            mainPanel.add(deleteHiddenAttachmentsForm);
        }
        deleteHiddenAttachmentsForm.setMethod(FormPanel.METHOD_POST);
        deleteHiddenAttachmentsForm.setAction("../attachmentUpload/deleteTemp?id=" + id);
        deleteHiddenAttachmentsForm.submit();
    }

    public void processTag(String text) {
        int index = text.indexOf("src=\"cid:");
        if (index != -1) {
            int end = text.indexOf("\"", index + 9);
            String fileName = text.substring(index + 9, end);
            usedAttachments.add(fileName);
        }
    }
    
    public long getProcess_id() {
        return process_id;
    }

    public void setProcess_id(long process_id) {
        this.process_id = process_id;
    }
    
    private HtmlEditFrame getHtmlEditFrame() {
        return (HtmlEditFrame) memo.getView().getActiveControl();
    }
}

⌨️ 快捷键说明

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