searchform.java.svn-base

来自「开源项目openfire的完整源程序」· SVN-BASE 代码 · 共 145 行

SVN-BASE
145
字号
/** * $Revision: $ * $Date: $ * * Copyright (C) 2006 Jive Software. All rights reserved. * * This software is published under the terms of the GNU Lesser Public License (LGPL), * a copy of which is included in this distribution. */package org.jivesoftware.sparkimpl.search.users;import org.jivesoftware.resource.Res;import org.jivesoftware.smack.XMPPException;import org.jivesoftware.smackx.Form;import org.jivesoftware.smackx.ReportedData;import org.jivesoftware.smackx.search.UserSearchManager;import org.jivesoftware.spark.SparkManager;import org.jivesoftware.spark.ui.DataFormUI;import org.jivesoftware.spark.util.ResourceUtils;import org.jivesoftware.spark.util.SwingWorker;import org.jivesoftware.spark.util.log.Log;import javax.swing.AbstractAction;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JComponent;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.KeyStroke;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;public class SearchForm extends JPanel {    private UserSearchResults searchResults;    private DataFormUI questionForm;    private UserSearchManager searchManager;    private String serviceName;    private Form searchForm;    public SearchForm(String service) {        this.serviceName = service;        searchManager = new UserSearchManager(SparkManager.getConnection());        setLayout(new GridBagLayout());        // Load searchForm        try {            searchForm = searchManager.getSearchForm(service);        }        catch (XMPPException e) {            Log.error("Unable to load search services.", e);            JOptionPane.showMessageDialog(SparkManager.getMainWindow(), Res.getString("message.search.service.not.available"), Res.getString("title.notification"), JOptionPane.ERROR_MESSAGE);            return;        }        searchManager = new UserSearchManager(SparkManager.getConnection());        questionForm = new DataFormUI(searchForm);        questionForm.setBorder(BorderFactory.createTitledBorder(Res.getString("group.search.form")));        add(questionForm, new GridBagConstraints(0, 0, 3, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0));        // Add User DataForm        final JButton searchButton = new JButton();        ResourceUtils.resButton(searchButton, Res.getString("button.search"));        add(searchButton, new GridBagConstraints(0, 1, 3, 1, 1.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));        searchButton.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                performSearch();            }        });        KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);        String enterString = org.jivesoftware.spark.util.StringUtils.keyStroke2String(enter);        // Handle Left Arrow        getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(enterString), "enter");        getActionMap().put("enter", new AbstractAction("enter") {            public void actionPerformed(ActionEvent evt) {                performSearch();            }        });        // Add searchResults        searchResults = new UserSearchResults();        searchResults.setBorder(BorderFactory.createTitledBorder(Res.getString("group.search.results")));        add(searchResults, new GridBagConstraints(0, 2, 2, 1, 1.0, 1.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0));    }    public DataFormUI getQuestionForm() {        return questionForm;    }    public Form getSearchForm() {        return searchForm;    }    /**     * Starts a search based on the Answered form.     */    public void performSearch() {        searchResults.clearTable();        SwingWorker worker = new SwingWorker() {            ReportedData data;            public Object construct() {                try {                    Form answerForm = questionForm.getFilledForm();                    data = searchManager.getSearchResults(answerForm, serviceName);                }                catch (XMPPException e) {                    Log.error("Unable to load search service.", e);                }                return data;            }            public void finished() {                if (data != null) {                    searchResults.showUsersFound(data);                    searchResults.invalidate();                    searchResults.validate();                    searchResults.repaint();                }                else {                    JOptionPane.showMessageDialog(searchResults, Res.getString("message.no.results.found"), Res.getString("title.notification"), JOptionPane.ERROR_MESSAGE);                }            }        };        worker.start();    }}

⌨️ 快捷键说明

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