 |
|
|
NetscapeBookmarks.java
|
/*
* Author: Havard Rast Blok
* E-mail: 
* Web : www.rememberjava.com
*/
import java.io.*;
import javax.swing.*;
import javax.swing.tree.*;
/**
* Class for parsing and showing the Netscape bookmarks
*/
public class NetscapeBookmarks extends JFrame
{
String folderMark="<H3";
String folderMark2="\">";
String folderMark3="</H3>";
String urlMark="<A HREF=\"";
String urlMark2="\"";
String urlMark3="\">";
String urlMark4="</A>";
String endMark="</DL>";
public NetscapeBookmarks(String fileName)
{
DefaultMutableTreeNode root;
DefaultTreeModel treeModel;
JTree tree;
BufferedReader in;
root = new DefaultMutableTreeNode("Bookmarks");
try
{
//open file for reading
in = new BufferedReader( new FileReader( fileName ) );
//traverse the file
addNode( in, root );
in.close();
}
catch( IOException e )
{
System.out.println("Error reading file: "+e);
}
treeModel = new DefaultTreeModel(root);
tree = new JTree( treeModel );
getContentPane().add( tree );
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
pack();
show();
}
private void addNode( BufferedReader in, DefaultMutableTreeNode root ) throws IOException
{
DefaultMutableTreeNode node;
String name, link;
String line;
boolean done;
int idx1, idx2, idx3, idx4;
//read and parse the file
done = false;
while( (line = in.readLine()) != null && !done )
{
if( line.indexOf( folderMark ) != -1 )
{
//get the name of this record
idx2 = line.indexOf( folderMark2 );
idx3 = line.indexOf( folderMark3 );
name = line.substring( folderMark2.length() + idx2, idx3 );
node = new DefaultMutableTreeNode( name );
root.add( node );
//RECURSIVE CALL
addNode( in, node );
}
else if( (idx1 = line.indexOf( urlMark )) != -1 )
{
//get the url and name of this record
idx2 = line.indexOf( urlMark2, urlMark.length() + idx1 );
idx3 = line.indexOf( urlMark3, urlMark2.length() + idx2 );
idx4 = line.indexOf( urlMark4, urlMark3.length() + idx3 );
link = line.substring( urlMark.length() + idx1, idx2 );
name = line.substring( urlMark3.length() + idx3, idx4 );
//add record to tree
node = new DefaultMutableTreeNode( name+" ("+link+")" );
root.add( node );
}
else if( line.indexOf( endMark ) != -1 )
{
//backtrack to last recursive call
done = true;
}
}
}
public static void main( String args[] )
{
if( args.length < 1 )
{
System.out.println("Usage: java NetscapeBookmarks <Netscape bookmarks file>");
System.exit(1);
}
new NetscapeBookmarks(args[0]);
}
}
|
|
|
 |