1 package org.columba.core.gui.search; 2 3 import java.awt.BorderLayout ; 4 import java.util.Iterator ; 5 import java.util.List ; 6 7 import javax.swing.JPanel ; 8 9 import org.columba.core.gui.htmlviewer.HTMLViewerFactory; 10 import org.columba.core.gui.htmlviewer.api.IHTMLViewerPlugin; 11 import org.columba.core.search.api.IResultEvent; 12 import org.columba.core.search.api.IResultListener; 13 import org.columba.core.search.api.ISearchCriteria; 14 import org.columba.core.search.api.ISearchResult; 15 16 public class HTMLResultView extends JPanel implements IResultListener { 17 18 private IHTMLViewerPlugin viewerPlugin; 19 20 private StringBuffer buf; 21 22 public HTMLResultView() { 23 super(); 24 25 viewerPlugin = HTMLViewerFactory.createHTMLViewer(); 26 27 setLayout(new BorderLayout ()); 28 29 add(viewerPlugin.getContainer(), BorderLayout.CENTER); 30 } 31 32 public void resultArrived(IResultEvent event) { 33 List <ISearchResult> result = event.getSearchResults(); 34 35 buf.append("<p>" + createCriteria(event.getSearchCriteria()) 36 + "</p><br>"); 37 38 Iterator <ISearchResult> it = result.iterator(); 39 while (it.hasNext()) { 40 ISearchResult r = it.next(); 41 buf.append("<p>"); 42 buf.append(createTitle(r)); 43 buf.append("</p><p>"); 44 buf.append(getDescription(r)); 45 buf.append("</p><p><br></p>"); 46 } 47 48 StringBuffer doc = new StringBuffer (); 49 startDocument(doc); 50 doc.append(buf.toString()); 51 endDocument(doc); 52 53 viewerPlugin.view(doc.toString()); 54 55 } 56 57 private String createCriteria(ISearchCriteria r) { 58 return "Search Results for \"<font class=\"italic\">" + r.getTitle() + "</font>\":"; 59 } 60 61 private String createTitle(ISearchResult r) { 62 return "<a HREF=\"" + r.getLocation().toString() + "\">" + r.getTitle() 63 + "</a>"; 64 } 65 66 private String getDescription(ISearchResult r) { 67 return "<font class=\"quoting\">" + r.getDescription() + "</font>"; 68 } 69 70 public void clearSearch(IResultEvent event) { 71 buf = new StringBuffer (); 72 viewerPlugin.view(""); 73 } 74 75 private void startDocument(StringBuffer b) { 76 String css = "<style type=\"text/css\">\n" 77 + "a { color: blue; text-decoration: underline }\n" 78 + "font.quoting {color:#949494;} \n font.italic {font-style:italic;color:#000;} \n" + "</style>\n"; 79 80 b.append("<HTML><HEAD>" + css + "</HEAD><BODY>"); 81 } 82 83 private void endDocument(StringBuffer b) { 84 b.append("</P></BODY></HTML>"); 85 } 86 87 public void reset(IResultEvent event) { 88 buf = new StringBuffer (); 89 viewerPlugin.view(""); 90 } 91 92 public void finished(IResultEvent event) { 93 95 } 96 97 } 98 | Popular Tags |