Search in sources :

Example 1 with HistoryItemRenderer

use of org.jivesoftware.fastpath.workspace.panes.HistoryItemRenderer in project Spark by igniterealtime.

the class ChatSearch method search.

public void search(String query) {
    final List<ChatSearchResult> results = new ArrayList<ChatSearchResult>();
    AgentSession agentSession = FastpathPlugin.getAgentSession();
    try {
        Form form = agentSession.getTranscriptSearchForm();
        Form filledForm = form.createAnswerForm();
        filledForm.setAnswer("queryString", query);
        // Define Workgroups
        final List<String> workgroups = new ArrayList<String>();
        workgroups.add(FastpathPlugin.getWorkgroup().getWorkgroupJID());
        filledForm.setAnswer("workgroups", workgroups);
        ReportedData reportedData = null;
        try {
            reportedData = agentSession.searchTranscripts(filledForm);
            for (final ReportedData.Row row : reportedData.getRows()) {
                ChatSearchResult result = new ChatSearchResult(row, query);
                results.add(result);
            }
        } catch (XMPPException | SmackException e) {
            Log.error(e);
        }
        Collections.sort(results, dateComporator);
        DefaultListModel model = new DefaultListModel();
        final JList list = new JList(model);
        list.setCellRenderer(new HistoryItemRenderer());
        Iterator<ChatSearchResult> iter = results.iterator();
        while (iter.hasNext()) {
            ChatSearchResult result = iter.next();
            String person = result.getUsername();
            String question = result.getQuestion();
            String sessionID = result.getSessionID();
            Date date = result.getStartDate();
            final SearchItem item = new SearchItem(person, date, question);
            item.setSessionID(sessionID);
            model.addElement(item);
        }
        list.addMouseListener(new MouseAdapter() {

            public void mouseClicked(MouseEvent e) {
                if (e.getClickCount() == 2) {
                    SearchItem item = (SearchItem) list.getSelectedValue();
                    Transcript transcript = null;
                    try {
                        transcript = FastpathPlugin.getAgentSession().getTranscript(item.getSessionID());
                    } catch (XMPPException | SmackException ee) {
                        Log.error("Error showing transcripts.", ee);
                    }
                    if (transcript == null) {
                        return;
                    }
                    ChatViewer chatViewer = new ChatViewer(transcript);
                    final JFrame frame = new JFrame(FpRes.getString("title.chat.transcript"));
                    frame.setIconImage(SparkManager.getMainWindow().getIconImage());
                    frame.getContentPane().setLayout(new BorderLayout());
                    frame.getContentPane().add(chatViewer, BorderLayout.CENTER);
                    frame.pack();
                    frame.setSize(600, 400);
                    frame.setLocationRelativeTo(SparkManager.getMainWindow());
                    frame.setVisible(true);
                }
            }
        });
        JScrollPane scrollPane = new JScrollPane(list);
        scrollPane.getViewport().setBackground(Color.white);
        JFrame frame = new JFrame(FpRes.getString("title.search.results"));
        frame.setIconImage(SparkManager.getMainWindow().getIconImage());
        frame.getContentPane().setLayout(new BorderLayout());
        frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
        final BackgroundPane titlePane = new BackgroundPane() {

            private static final long serialVersionUID = -5603280927139789177L;

            public Dimension getPreferredSize() {
                final Dimension size = super.getPreferredSize();
                size.width = 0;
                return size;
            }
        };
        titlePane.setLayout(new GridBagLayout());
        titlePane.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.LIGHT_GRAY));
        JLabel userImage = new JLabel(FastpathRes.getImageIcon(FastpathRes.FASTPATH_IMAGE_24x24));
        userImage.setHorizontalAlignment(JLabel.LEFT);
        userImage.setText(FpRes.getString("title.chat.transcripts.search"));
        titlePane.add(userImage, new GridBagConstraints(0, 0, 4, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0));
        userImage.setFont(new Font("Dialog", Font.BOLD, 12));
        JLabel itemsFound = new JLabel(Integer.toString(results.size()));
        titlePane.add(new JLabel(FpRes.getString("title.number.of.conversations.found")), new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
        titlePane.add(itemsFound, new GridBagConstraints(1, 1, 3, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
        JLabel searchTerm = new JLabel(FpRes.getString("query") + ": " + query);
        titlePane.add(searchTerm, new GridBagConstraints(0, 2, 4, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 5, 5, 5), 0, 0));
        frame.getContentPane().add(titlePane, BorderLayout.NORTH);
        frame.pack();
        frame.setSize(400, 400);
        GraphicUtils.centerWindowOnScreen(frame);
        frame.setVisible(true);
    } catch (XMPPException | SmackException e) {
        Log.error(e);
    }
}
Also used : GridBagConstraints(java.awt.GridBagConstraints) Insets(java.awt.Insets) GridBagLayout(java.awt.GridBagLayout) Form(org.jivesoftware.smackx.xdata.Form) ArrayList(java.util.ArrayList) ChatViewer(org.jivesoftware.fastpath.workspace.panes.ChatViewer) DefaultListModel(javax.swing.DefaultListModel) BackgroundPane(org.jivesoftware.fastpath.workspace.panes.BackgroundPane) Font(java.awt.Font) BorderLayout(java.awt.BorderLayout) JFrame(javax.swing.JFrame) AgentSession(org.jivesoftware.smackx.workgroup.agent.AgentSession) JScrollPane(javax.swing.JScrollPane) Transcript(org.jivesoftware.smackx.workgroup.packet.Transcript) MouseEvent(java.awt.event.MouseEvent) SmackException(org.jivesoftware.smack.SmackException) MouseAdapter(java.awt.event.MouseAdapter) JLabel(javax.swing.JLabel) Dimension(java.awt.Dimension) Date(java.util.Date) HistoryItemRenderer(org.jivesoftware.fastpath.workspace.panes.HistoryItemRenderer) XMPPException(org.jivesoftware.smack.XMPPException) JList(javax.swing.JList) ReportedData(org.jivesoftware.smackx.search.ReportedData)

Aggregations

BorderLayout (java.awt.BorderLayout)1 Dimension (java.awt.Dimension)1 Font (java.awt.Font)1 GridBagConstraints (java.awt.GridBagConstraints)1 GridBagLayout (java.awt.GridBagLayout)1 Insets (java.awt.Insets)1 MouseAdapter (java.awt.event.MouseAdapter)1 MouseEvent (java.awt.event.MouseEvent)1 ArrayList (java.util.ArrayList)1 Date (java.util.Date)1 DefaultListModel (javax.swing.DefaultListModel)1 JFrame (javax.swing.JFrame)1 JLabel (javax.swing.JLabel)1 JList (javax.swing.JList)1 JScrollPane (javax.swing.JScrollPane)1 BackgroundPane (org.jivesoftware.fastpath.workspace.panes.BackgroundPane)1 ChatViewer (org.jivesoftware.fastpath.workspace.panes.ChatViewer)1 HistoryItemRenderer (org.jivesoftware.fastpath.workspace.panes.HistoryItemRenderer)1 SmackException (org.jivesoftware.smack.SmackException)1 XMPPException (org.jivesoftware.smack.XMPPException)1