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

📄 formview.java

📁 JAVA 所有包
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
     *           that is returned, although there is no guarantee.       *           The parent may choose to resize or break the view.     * @exception IllegalArgumentException for an invalid axis     */    public float getMaximumSpan(int axis) {        switch (axis) {        case View.X_AXIS:            if ((maxIsPreferred & 1) == 1) {                super.getMaximumSpan(axis);                return getPreferredSpan(axis);            }            return super.getMaximumSpan(axis);        case View.Y_AXIS:            if ((maxIsPreferred & 2) == 2) {                super.getMaximumSpan(axis);                return getPreferredSpan(axis);            }            return super.getMaximumSpan(axis);        default:            break;        }        return super.getMaximumSpan(axis);    }    /**     * Responsible for processeing the ActionEvent.     * If the element associated with the FormView,     * has a type of "submit", "reset", "text" or "password"      * then the action is processed.  In the case of a "submit"      * the form is submitted.  In the case of a "reset"     * the form is reset to its original state.     * In the case of "text" or "password", if the      * element is the last one of type "text" or "password",     * the form is submitted.  Otherwise, focus is transferred     * to the next component in the form.     *     * @param evt the ActionEvent.     */    public void actionPerformed(ActionEvent evt) {	Element element = getElement();	StringBuffer dataBuffer = new StringBuffer();	HTMLDocument doc = (HTMLDocument)getDocument();	AttributeSet attr = element.getAttributes();		String type = (String) attr.getAttribute(HTML.Attribute.TYPE);	if (type.equals("submit")) { 	    getFormData(dataBuffer);	    submitData(dataBuffer.toString());	} else if (type.equals("reset")) {	    resetForm();	} else if (type.equals("text") || type.equals("password")) {	    if (isLastTextOrPasswordField()) {		getFormData(dataBuffer);		submitData(dataBuffer.toString());	    } else {		getComponent().transferFocus();	    }	}    }    /**     * This method is responsible for submitting the form data.     * A thread is forked to undertake the submission.     */    protected void submitData(String data) {        Element form = getFormElement();        AttributeSet attrs = form.getAttributes();        HTMLDocument doc = (HTMLDocument) form.getDocument();        URL base = doc.getBase();        String target = (String) attrs.getAttribute(HTML.Attribute.TARGET);        if (target == null) {            target = "_self";        }                String method = (String) attrs.getAttribute(HTML.Attribute.METHOD);        if (method == null) {            method = "GET";        }        method = method.toLowerCase();        boolean isPostMethod = method.equals("post");        if (isPostMethod) {            storePostData(doc, target, data);        }                String action = (String) attrs.getAttribute(HTML.Attribute.ACTION);        URL actionURL;        try {             actionURL = (action == null)                ? new URL(base.getProtocol(), base.getHost(),                                        base.getPort(), base.getFile())                : new URL(base, action);            if (!isPostMethod) {                String query = data.toString();                actionURL = new URL(actionURL + "?" + query);            }        } catch (MalformedURLException e) {            actionURL = null;        }        final JEditorPane c = (JEditorPane) getContainer();        HTMLEditorKit kit = (HTMLEditorKit) c.getEditorKit();                FormSubmitEvent formEvent = null;        if (!kit.isAutoFormSubmission() || doc.isFrameDocument()) {            FormSubmitEvent.MethodType methodType = isPostMethod                    ? FormSubmitEvent.MethodType.POST                    : FormSubmitEvent.MethodType.GET;            formEvent = new FormSubmitEvent(                    FormView.this, HyperlinkEvent.EventType.ACTIVATED,                    actionURL, form, target, methodType, data);                    }        // setPage() may take significant time so schedule it to run later.        final FormSubmitEvent fse = formEvent;        final URL url = actionURL;        SwingUtilities.invokeLater(new Runnable() {                        public void run() {                if (fse != null) {                    c.fireHyperlinkUpdate(fse);                } else {                    try {                        c.setPage(url);                    } catch (IOException e) {                        UIManager.getLookAndFeel().provideErrorFeedback(c);                    }                }            }        });    }            private void storePostData(HTMLDocument doc, String target, String data) {                /* POST data is stored into the document property named by constant         * PostDataProperty from where it is later retrieved by method         * JEditorPane.getPostData().  If the current document is in a frame,         * the data is initially put into the toplevel (frameset) document         * property (named <PostDataProperty>.<Target frame name>).  It is the         * responsibility of FrameView which updates the target frame         * to move data from the frameset document property into the frame         * document property.         */                Document propDoc = doc;        String propName = PostDataProperty;                if (doc.isFrameDocument()) {            // find the top-most JEditorPane holding the frameset view.            FrameView.FrameEditorPane p =                    (FrameView.FrameEditorPane) getContainer();            FrameView v = p.getFrameView();            JEditorPane c = v.getOutermostJEditorPane();            if (c != null) {                propDoc = c.getDocument();                propName += ("." + target);            }        }                propDoc.putProperty(propName, data);    }    /**     * MouseEventListener class to handle form submissions when     * an input with type equal to image is clicked on.     * A MouseListener is necessary since along with the image     * data the coordinates associated with the mouse click     * need to be submitted.     */    protected class MouseEventListener extends MouseAdapter {	public void mouseReleased(MouseEvent evt) {	    String imageData = getImageData(evt.getPoint());	    imageSubmit(imageData);	}    }    /**     * This method is called to submit a form in response     * to a click on an image -- an &lt;INPUT&gt; form     * element of type "image".     *     * @param imageData the mouse click coordinates.     */    protected void imageSubmit(String imageData) {	StringBuffer dataBuffer = new StringBuffer();	Element elem = getElement();	HTMLDocument hdoc = (HTMLDocument)elem.getDocument();	getFormData(dataBuffer);	if (dataBuffer.length() > 0) {	    dataBuffer.append('&');	}	dataBuffer.append(imageData);	submitData(dataBuffer.toString());	return;    }    /**     * Extracts the value of the name attribute     * associated with the input element of type     * image.  If name is defined it is encoded using     * the URLEncoder.encode() method and the      * image data is returned in the following format:     *	    name + ".x" +"="+ x +"&"+ name +".y"+"="+ y     * otherwise,     * 	    "x="+ x +"&y="+ y     *      * @param point associated with the mouse click.     * @return the image data.     */    private String getImageData(Point point) {	    	String mouseCoords = point.x + ":" + point.y;	int sep = mouseCoords.indexOf(':');	String x = mouseCoords.substring(0, sep);	String y = mouseCoords.substring(++sep);	String name = (String) getElement().getAttributes().getAttribute(HTML.Attribute.NAME);		String data;	if (name == null || name.equals("")) {	    data = "x="+ x +"&y="+ y;	} else {	    name = URLEncoder.encode(name);	    data = name + ".x" +"="+ x +"&"+ name +".y"+"="+ y;	}	return data;    }    /**     * The following methods provide functionality required to     * iterate over a the elements of the form and in the case     * of a form submission, extract the data from each model     * that is associated with each form element, and in the     * case of reset, reinitialize the each model to its     * initial state.     */    /**     * Returns the Element representing the <code>FORM</code>.     */    private Element getFormElement() {        Element elem = getElement();        while (elem != null) {            if (elem.getAttributes().getAttribute                (StyleConstants.NameAttribute) == HTML.Tag.FORM) {                return elem;            }            elem = elem.getParentElement();        }        return null;    }    /**     * Iterates over the      * element hierarchy, extracting data from the      * models associated with the relevant form elements.     * "Relevant" means the form elements that are part     * of the same form whose element triggered the submit     * action.     *     * @param buffer        the buffer that contains that data to submit     * @param targetElement the element that triggered the      *                      form submission     */    void getFormData(StringBuffer buffer) {        Element formE = getFormElement();        if (formE != null) {            ElementIterator it = new ElementIterator(formE);            Element next;            while ((next = it.next()) != null) {                if (isControl(next)) {                    String type = (String)next.getAttributes().getAttribute                                       (HTML.Attribute.TYPE);                    if (type != null && type.equals("submit") &&                         next != getElement()) {                        // do nothing - this submit isnt the trigger                    } else if (type == null || !type.equals("image")) {                        // images only result in data if they triggered                        // the submit and they require that the mouse click                        // coords be appended to the data.  Hence its                        // processing is handled by the view.                        loadElementDataIntoBuffer(next, buffer);                    }                }            }        }    }    /**     * Loads the data     * associated with the element into the buffer.     * The format in which data is appended depends     * on the type of the form element.  Essentially     * data is loaded in name/value pairs.     *      */    private void loadElementDataIntoBuffer(Element elem, StringBuffer buffer) {	AttributeSet attr = elem.getAttributes();	String name = (String)attr.getAttribute(HTML.Attribute.NAME);

⌨️ 快捷键说明

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