我在SmartGWT中实现了一个模式窗口-当有人单击窗口时如何关闭它? [英] I have a modal Window implemented in SmartGWT - how can I close it when someone clicks off of the window?

查看:59
本文介绍了我在SmartGWT中实现了一个模式窗口-当有人单击窗口时如何关闭它?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个扩展Window SmartGWT类的类,并将其设置为模态.当用户单击窗口时,我试图关闭窗口.我试图将其链接到FocusChangedHandler,但是没有运气.以前有人做过这样的事吗?

I've created a class that extends the Window SmartGWT class, and it is set to be modal. I am trying to make the Window close when a user clicks off the window. I have tried to link it up to a FocusChangedHandler with no luck. Has anyone done something like this before?


/**
 * Sets up a modal Dialog box that lets the user edit attributes associated
 * with the properties of the {@link LabElement} that are given. 
 * 
 * @author Therin Irwin
 */
public class EditorDialog extends Window {

    final DynamicForm dyn = new DynamicForm();
    final RichTextEditor richTextEditor = new RichTextEditor();
    final List attrItems = new ArrayList();

    /**
     * Creates a new EditorDialog with a RichTextEditor and a list of
     * attributes for the element.
     * 
     * @param name the name of the element being edited.
     * @param attr the List of String attributes of the element that can be
     * edited.
     * @param hasText true if the element supports text inside, false if not.
     */
    public EditorDialog(String name, List attr, boolean hasText) {
        super();

        VLayout vert = new VLayout();
        this.setShowMinimizeButton(false);  
        this.setIsModal(true);  
        this.setShowModalMask(true);  
        this.setTitle(name + " Editor");
        richTextEditor.setWidth(550);
        richTextEditor.setHeight(100);

        richTextEditor.setPadding(5);
        richTextEditor.setCanDragResize(true); 
        richTextEditor.setResizeFrom("B");
        richTextEditor.setShowEdges(true);

        if (attr == null || attr.size() == 0) {
            richTextEditor.setHeight(300);
        }
        else {
            int i = 0;
            FormItem[] fi = new FormItem[attr.size()];

            for (String at : attr) {
                TextItem temp = new TextItem(at, at);
                attrItems.add(temp);
                fi[i++] = temp;
            }

            dyn.setFields(fi);
            dyn.setPadding(5);
            dyn.setTop(100);
        } 

        if (hasText)
            vert.addMember(richTextEditor);

        if (!(attr == null || attr.size() == 0))
            vert.addMember(dyn);

        this.addItem(vert);
        this.centerInPage();
        this.setAutoSize(true);
    }

    /**
     * Returns the text of the RichTextEditor.
     * 
     * @return the text entered into the RichTextEditor.
     */
    public String getRichText() {
        return richTextEditor.getValue();
    }

    /**
     * Sets the text in the RichTextEditor to String value.
     * 
     * @param value the String to put as the contents of the RichTextEditor.
     */
    public void setRichText(String value) {
        richTextEditor.setValue(value);
    }

    /**
     * Returns the List of TextItems that hold the user-entered values for
     * attributes.
     * 
     * @return the TextItems associated with each attribute, in order.
     */
    public DynamicForm getFormItems() {
        return dyn;
    }

    public TextItem getFormItem(int item) {
        return (TextItem) dyn.getFields()[item];
    }
}

推荐答案

@Therin我猜根据您的要求,您需要实现Window的此属性:

@Therin I guess according to your requirement, you need to implement this property of Window:

this.setDismissOnOutsideClick(true);

这篇关于我在SmartGWT中实现了一个模式窗口-当有人单击窗口时如何关闭它?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆