<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>It's not a blog, It's a feature &#187; Windows</title>
	<atom:link href="http://javazquez.com/juan/category/windows/feed/" rel="self" type="application/rss+xml" />
	<link>http://javazquez.com/juan</link>
	<description>Juan A. Vazquez</description>
	<lastBuildDate>Wed, 16 Nov 2011 02:45:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Windows GUI File Parser using Groovy</title>
		<link>http://javazquez.com/juan/2009/04/18/windows-gui-file-parser-using-groovy/</link>
		<comments>http://javazquez.com/juan/2009/04/18/windows-gui-file-parser-using-groovy/#comments</comments>
		<pubDate>Sat, 18 Apr 2009 19:53:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[DND]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[java swing]]></category>

		<guid isPermaLink="false">http://javazquez.com/juan/?p=221</guid>
		<description><![CDATA[I find myself doing a lot of file parsing on my Windows XP machine lately. I decide to write a quick utility that would allow me to drag and drop files and search for the key words that I have identified. The utility doesn&#8217;t have the logic for searching using regex&#8217;s yet, but it should [...]]]></description>
			<content:encoded><![CDATA[<p>   I find myself doing a lot of file parsing on my Windows XP machine lately. I decide to write a quick utility that would allow me to drag and drop files and search for the key words that I have identified. The utility doesn&#8217;t have the logic for searching using regex&#8217;s yet, but it should be really easy to add this functionality. </p>
<p> I hacked some Groovy Code with some Java Code and came up with the following script. Hope it is useful.</p>
<p><strong>DISCLAIMER:</strong></p>
<p>  As the title suggests, I have only been able to get this to work on my Windows XP machine, OS X didn&#8217;t like the <strong> javax.swing.TransferHandler </strong>and it appears some other operating systems have a hard time with this also.</p>
<p><code><br />
import java.awt.datatransfer.DataFlavor;<br />
import java.awt.datatransfer.Transferable;<br />
import java.awt.datatransfer.UnsupportedFlavorException;<br />
import java.io.File;<br />
import java.io.IOException;<br />
import java.security.NoSuchAlgorithmException;<br />
import java.util.List;<br />
import java.awt.BorderLayout;<br />
import java.awt.*;<br />
import java.awt.event.ActionListener;<br />
import java.awt.event.ActionEvent;<br />
import javax.swing.JFrame;<br />
import javax.swing.JPanel;<br />
import javax.swing.JLabel;<br />
import javax.swing.JButton;<br />
import javax.swing.JTextArea;<br />
import javax.swing.JTextField;<br />
import javax.swing.TransferHandler.*;</p>
<p>class FileDropHandler extends TransferHandler {</p>
<p>	private static final long serialVersionUID = 1L;</p>
<p>	def wordsToFind =[]<br />
	JTextArea output<br />
	private JLabel errorMsg;<br />
	private String fileText = "";<br />
	private boolean test = false;<br />
	private boolean same = true;</p>
<p>	public boolean canImport(TransferSupport supp) {<br />
	/* for the demo, we'll only support drops (not clipboard paste) */<br />
	if (!supp.isDrop()) {<br />
		return false;<br />
	}</p>
<p>	/* return false if the drop doesn't contain a list of files */<br />
	if (!supp.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {<br />
	return false;<br />
	}</p>
<p>	boolean copySupported = (COPY &#038; supp.getSourceDropActions()) == COPY;</p>
<p>	if (copySupported) {<br />
	supp.setDropAction(COPY);<br />
	return true;<br />
	}</p>
<p>	return false;<br />
	}</p>
<p>	public boolean importData(TransferSupport supp) {<br />
	if (!canImport(supp)) {<br />
	return false;<br />
	}</p>
<p>	/* get the Transferable */<br />
	Transferable t = supp.getTransferable();</p>
<p>	try {</p>
<p>	Object data = t.getTransferData(DataFlavor.javaFileListFlavor);</p>
<p>	List fileList = (List) data;</p>
<p>	for (int j = 0; j < fileList.size(); j++) {</p>
<p>	File file = (File) fileList.get(j);<br />
	//file.getAbsolutePath()<br />
	def tmpfh = new File("FileParser.txt")<br />
	println wordsToFind.inspect()<br />
	 new File(file.getAbsolutePath()).eachLine{line-><br />
	   wordsToFind.each{   if(line =~ "${it}" ){<br />
	        println "${line}"<br />
	        tmpfh.append(line)<br />
	        tmpfh.append("\n\n")<br />
			this.output.setText(this.output.getText()+line+"\n")<br />
	   }<br />
	  }<br />
	 }//end for</p>
<p>	tmpfh.close()</p>
<p>	}<br />
	} catch (UnsupportedFlavorException e) {<br />
	return false;<br />
	} catch (IOException e) {<br />
	return false;<br />
	} catch (NoSuchAlgorithmException e) {<br />
	// TODO Auto-generated catch block<br />
	e.printStackTrace();<br />
	}</p>
<p>	return true;<br />
	}</p>
<p>	public void setOutput(JTextArea jta) {<br />
	this.output = jta;<br />
	}</p>
<p>	public void setOutput(JLabel jta) {<br />
	errorMsg = jta;<br />
	}</p>
<p>	public String getText() {<br />
	return fileText;<br />
	}</p>
<p>	public void clearAll() {<br />
	fileText = "";<br />
	test = false;<br />
	same = true;</p>
<p>	}<br />
}</p>
<p>class AL implements ActionListener{<br />
   public JTextField jtf<br />
   public FileDropHandler dh<br />
    public AL(JTextField jtf,FileDropHandler dh){<br />
     this.jtf = jtf<br />
     this.dh =dh<br />
    }<br />
    public void actionPerformed(ActionEvent actionEvent){<br />
        println "${this.jtf.getText()}"<br />
        dh.wordsToFind= this.jtf.getText().split(' ')<br />
        }<br />
}</p>
<p>JTextArea dTextArea = new JTextArea("Drop on me");<br />
FileDropHandler dh = new FileDropHandler()<br />
dh.setOutput(dTextArea)<br />
JTextField jta = new JTextField("Enter words seperated by spaces")<br />
dh.wordsToFind= jta.getText().split(' ')<br />
JButton jb =new JButton("Update Word List")<br />
jb.addActionListener( new AL(jta ,dh  ))</p>
<p>dh.setOutput(dTextArea);<br />
dTextArea.setDragEnabled(true);<br />
dTextArea.setTransferHandler(dh);</p>
<p>JPanel p =new JPanel(new BorderLayout());<br />
JFrame f = new JFrame()<br />
p.add(jta, BorderLayout.NORTH)<br />
p.add(dTextArea, BorderLayout.CENTER)<br />
p.add(jb, BorderLayout.SOUTH)</p>
<p>f.getContentPane().add(p)<br />
f.setSize(400,400)<br />
f.setVisible(true)<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://javazquez.com/juan/2009/04/18/windows-gui-file-parser-using-groovy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

