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

📄 bsformdialog.java

📁 一款即时通讯软件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                        return;
                    }

                    // Reset the JOptionPane's value.
                    // If you don't do this, then if the user
                    // presses the same button next time, no
                    // property change event will be fired.
                    optionPane.setValue(JOptionPane.UNINITIALIZED_VALUE);

                    if (value.equals(okButton)) {
                        //resultXData = xData.getCopy();
                        XDataBuilder xdBuilder = new XDataBuilder();
                        xdBuilder.setType("submit");
                        XDataFieldBuilder xdFieldBuilder = new XDataFieldBuilder();
                        
                        Enumeration fieldEnum = xData.fields();
                        while (fieldEnum.hasMoreElements()) {
                            
                            XDataField f = (XDataField) fieldEnum.nextElement();
                            xdFieldBuilder.reset();
                            
                            if ("hidden".equals(f.getType())) {
                                xdFieldBuilder.setVar(f.getVar());
                                Enumeration vals = f.values();
                                while (vals != null && vals.hasMoreElements()) 
                                    xdFieldBuilder.addValue((String)vals.nextElement());
                                try { xdBuilder.addField(new XDataField(xdFieldBuilder)); }
                                catch (InstantiationException e2) {
                                    return;
                                }
                            }
                            
                            else if ("text-multi".equals(f.getType())) {
                                xdFieldBuilder.setVar(f.getVar());
                                JTextArea txtArea = (JTextArea) textFields.get(f.getVar());
                                if (txtArea == null) return;
                                String valStr = txtArea.getText();
                                int lastIndex = 0, index = 0;
                                while (-1 != (index = valStr.indexOf('\n', lastIndex))) {
                                    String tmpStr = valStr.substring(lastIndex, index);
                                    xdFieldBuilder.addValue(tmpStr);
                                    lastIndex = index + 1;
                                }
                                xdFieldBuilder.addValue(valStr.substring(lastIndex));
                                try { xdBuilder.addField(new XDataField(xdFieldBuilder)); }
                                catch (InstantiationException e3) {
                                    return;
                                }
                            }
                            else if ("list-single".equals(f.getType())) {
                                xdFieldBuilder.setVar(f.getVar());
                                Enumeration options = f.options();
                                Hashtable optionsHash = new Hashtable();
                                while (options != null && options.hasMoreElements()) {
                                    XDataFieldOption xdfo = (XDataFieldOption)options.nextElement();
                                    String valueStr = xdfo.getValue();
                                    if (valueStr == null || valueStr.equals(""))
                                        valueStr = xdfo.getData();
                                    String labelStr = xdfo.getLabel();
                                    if (labelStr == null || labelStr.equals(""))
                                        labelStr = valueStr;
                                    optionsHash.put(labelStr, valueStr);
                                }
                                JComboBox comboBox = (JComboBox) textFields.get(f.getVar());
                                if (comboBox == null) return;
                                String labelStr = (String) comboBox.getSelectedItem();
                                if (labelStr == null) return;
                                xdFieldBuilder.addValue((String)optionsHash.get(labelStr));
                                try { xdBuilder.addField(new XDataField(xdFieldBuilder)); }
                                catch (InstantiationException e4) {
                                    return;
                                }
                            }
                            else if ("list-multi".equals(f.getType())) {
                                xdFieldBuilder.setVar(f.getVar());
                                Enumeration options = f.options();
                                Hashtable optionsHash = new Hashtable();
                                while (options != null && options.hasMoreElements()) {
                                    XDataFieldOption xdfo = (XDataFieldOption)options.nextElement();
                                    String labelStr = xdfo.getLabel();
                                    if (labelStr == null || labelStr.equals(""))
                                        labelStr = xdfo.getValue();
                                    optionsHash.put(labelStr, xdfo.getValue());
                                }
                                JList list = (JList) textFields.get(f.getVar());
                                if (list == null) return;
                                Object[] selectedLabels = list.getSelectedValues();
                                ListModel model = list.getModel();
                                for (int i=0; i<selectedLabels.length; i++)
                                    xdFieldBuilder.addValue((String)optionsHash.get((String)selectedLabels[i]));
                                try { xdBuilder.addField(new XDataField(xdFieldBuilder)); }
                                catch (InstantiationException e4) {
                                    return;
                                }
                            }
                            else if ("boolean".equals(f.getType())) {
                                xdFieldBuilder.setVar(f.getVar());
                                JCheckBox checkBox = (JCheckBox) textFields.get(f.getVar());
                                if (checkBox == null) return;
                                xdFieldBuilder.addValue(checkBox.isSelected()? "1" : "0");
                                try { xdBuilder.addField(new XDataField(xdFieldBuilder)); }
                                catch (InstantiationException e4) {
                                    return;
                                }
                            }
                            else if ("fixed".equals(f.getType())) {
                            }
                            else if ("jid-single".equals(f.getType())) {
                                xdFieldBuilder.setVar(f.getVar());
                                JTextField txtField = (JTextField) textFields.get(f.getVar());
                                if (txtField == null) return;
                                JID jid = new JID(txtField.getText());
                                if (jid == null) return;
                                xdFieldBuilder.addValue(jid.toString());
                                try { xdBuilder.addField(new XDataField(xdFieldBuilder)); }
                                catch (InstantiationException e4) {
                                    return;
                                }
                            }
                            else if ("jid-multi".equals(f.getType())) {
                                xdFieldBuilder.setVar(f.getVar());
                                JList list = (JList) textFields.get(f.getVar());
                                if (list == null) return;
                                Enumeration jidEnum = ((DefaultListModel)list.getModel()).elements();
                                while (jidEnum != null && jidEnum.hasMoreElements())
                                    xdFieldBuilder.addValue(jidEnum.nextElement().toString());
                                try { xdBuilder.addField(new XDataField(xdFieldBuilder)); }
                                catch (InstantiationException e4) {
                                    return;
                                }
                            }
                            // else takes it as text-single
                            else { //if ("text-single".equals(f.getType()) || "text-private".equals(f.getType())) {
                                xdFieldBuilder.setVar(f.getVar());
                                JTextField txtField = (JTextField) textFields.get(f.getVar());
                                if (txtField == null) return;
                                xdFieldBuilder.addValue(txtField.getText());
                                try { xdBuilder.addField(new XDataField(xdFieldBuilder)); }
                                catch (InstantiationException e4) {
                                    return;
                                }
                            }
                        }
                        
                        try { resultXData = new XData(xdBuilder); }
                        catch (InstantiationException e4) {
                            return;
                        }
                        setVisible(false);
                    }
                    else if (value.equals(cancelButton)) {
                        XDataBuilder xdBuilder = new XDataBuilder();
                        xdBuilder.setType("cancel");
                        try { resultXData = new XData(xdBuilder); }
                        catch (InstantiationException e4) {
                            return;
                        }
                        setVisible(false);
                    }
                }
            }
        });
    }
    
    
    protected void addJIDMulti(XDataField f, 
                               Hashtable textFields, Vector fields, 
                               BSRosterBean _rosterBean) {
        
        final BSRosterBean rosterBean = _rosterBean;
        
        GridBagConstraints gridBagConstraints;
        
        JPanel panel = new JPanel(new GridBagLayout());
        
        final JList recipientList = new JList(new DefaultListModel());
        recipientList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        recipientList.setVisibleRowCount(3);
        JScrollPane recipientScrollPane = new JScrollPane(recipientList);
        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.gridheight = 3;
        gridBagConstraints.weightx = 1;
        gridBagConstraints.weighty = 0.1;
        gridBagConstraints.fill = GridBagConstraints.BOTH;
        panel.add(recipientScrollPane, gridBagConstraints);
        
        JButton addJIDButton = new JButton("Add JID");
        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.weighty = 0.1;
        gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
        panel.add(addJIDButton, gridBagConstraints);
        
        addJIDButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                Enumeration jids = (rosterBean != null)? rosterBean.entries():
                                                 new Vector().elements();
                BSChooseJIDDialog dlg = new BSChooseJIDDialog(frame, "Add JID", jids);
                dlg.show();
                if (dlg.jid != null)
                    addJIDIntoList(dlg.jid, recipientList);
            }
        });
        
        JButton addGroupButton = new JButton("Add group");
        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.weighty = 0.1;
        gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
        panel.add(addGroupButton, gridBagConstraints);
        
        addGroupButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                Iterator groups = (rosterBean != null)? rosterBean.getGroups():
                                                         new TreeSet().iterator();
                BSChooseGroupDialog dlg = new BSChooseGroupDialog(frame, "Add group", groups);
                dlg.show();
                if (dlg.group != null)
                    addGroupIntoList(dlg.group, recipientList, rosterBean);
            }
        });
        
        JButton removeJIDsButton = new JButton("Remove");
        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.weighty = 0.1;
        gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
        panel.add(removeJIDsButton, gridBagConstraints);
        
        removeJIDsButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                DefaultListModel lm = (DefaultListModel) recipientList.getModel();
                Object[] delJids = recipientList.getSelectedValues();
                for (int i=0; i<delJids.length; i++)
                    lm.removeElement(delJids[i]);
                recipientList.clearSelection();
                recipientList.revalidate();
            }
        });
        
        Enumeration vals = f.values();
        while (vals != null && vals.hasMoreElements()) {
            JID jid = new JID((String)vals.nextElement());
            if (jid != null)
                addJIDIntoList(jid, recipientList);
        }
        if (f.getDesc() != null) 
            recipientList.setToolTipText(f.getDesc());
        fields.addElement(panel);
        textFields.put(f.getVar(), recipientList);
    }
    
    
    /** Adds jid into list */
    public void addJIDIntoList(JID jid, JList list) {
        DefaultListModel lm = (DefaultListModel)list.getModel();
        if (!lm.contains(jid)) {
            lm.addElement(jid);
            list.revalidate();
        }
    }
    
    /** Adds group into list */
    public void addGroupIntoList(String group, JList list, 
                                  BSRosterBean rosterBean) {
                                      
        if (rosterBean == null) return;
        Enumeration jidEnum = rosterBean.getJIDsInGroup(group);
        addJIDsIntoList(jidEnum, list);
    }
    
    /** Adds all jids from jidList into list */
    public void addJIDsIntoList(Enumeration jidList, JList list) {
        DefaultListModel lm = (DefaultListModel)list.getModel();
        // for all from jidList
        while (jidList.hasMoreElements()) {
            JID jid = (JID) jidList.nextElement();
            if (!lm.contains(jid)) {
                lm.addElement(jid);
            }
        }
        list.revalidate();
    }
    
}

⌨️ 快捷键说明

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