Search in sources :

Example 1 with ChatViewer

use of org.jivesoftware.fastpath.workspace.panes.ChatViewer 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)

Example 2 with ChatViewer

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

the class UserHistory method showTranscript.

private void showTranscript(String sessionID) {
    if (frame == null) {
        frame = new JFrame(FpRes.getString("title.transcript"));
        frame.setIconImage(SparkManager.getMainWindow().getIconImage());
    }
    if (frame.isVisible()) {
        return;
    }
    Transcript transcript = null;
    try {
        transcript = FastpathPlugin.getAgentSession().getTranscript(sessionID);
    } catch (XMPPException | SmackException e) {
        Log.error("Error showing transcripts.", e);
    }
    if (transcript == null) {
        return;
    }
    final ChatViewer chatViewer = new ChatViewer(transcript);
    frame.getContentPane().removeAll();
    frame.getContentPane().setLayout(new BorderLayout());
    frame.getContentPane().add(chatViewer, BorderLayout.CENTER);
    frame.pack();
    frame.setSize(600, 400);
    frame.setLocationRelativeTo(SparkManager.getMainWindow());
    frame.setVisible(true);
}
Also used : Transcript(org.jivesoftware.smackx.workgroup.packet.Transcript) BorderLayout(java.awt.BorderLayout) JFrame(javax.swing.JFrame) SmackException(org.jivesoftware.smack.SmackException) ChatViewer(org.jivesoftware.fastpath.workspace.panes.ChatViewer) XMPPException(org.jivesoftware.smack.XMPPException)

Aggregations

BorderLayout (java.awt.BorderLayout)2 JFrame (javax.swing.JFrame)2 ChatViewer (org.jivesoftware.fastpath.workspace.panes.ChatViewer)2 SmackException (org.jivesoftware.smack.SmackException)2 XMPPException (org.jivesoftware.smack.XMPPException)2 Transcript (org.jivesoftware.smackx.workgroup.packet.Transcript)2 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 JLabel (javax.swing.JLabel)1 JList (javax.swing.JList)1 JScrollPane (javax.swing.JScrollPane)1 BackgroundPane (org.jivesoftware.fastpath.workspace.panes.BackgroundPane)1