/**
* OSM2ShareNav
*
*
* @version $Revision$ ($Name$)
*
* Copyright (C) 2007 Harald Mueller
*/
package net.sharenav.osm.fBrowser;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.swing.JInternalFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.TreePath;
import sun.reflect.generics.tree.Tree;
/**
* @author hmueller
*
*/
public class DictTreeFrame extends JInternalFrame implements TreeSelectionListener {
private static final long serialVersionUID = 1L;
static final int xOffset = 30
static final int yOffset = 30;
static int openFrameCount = 0;
private Tile dict;
private int level;
private final String root;
private final FBrowser fBrowser;
/**
*
*/
public DictTreeFrame(String slevel, FBrowser fBrowser) {
super("Dict Tree " + slevel,
true, //resizable
true, //closable
true, //maximizable
true);//iconifiable
this.fBrowser = fBrowser;
this.root = fBrowser.getRoot();
openFrameCount++;
level = Integer.parseInt(slevel.substring(5, 6));
setLocation(xOffset * openFrameCount, yOffset * openFrameCount);
try {
JTree tree = new JTree(readDict((byte)level));
tree.addTreeSelectionListener(this);
add(new JScrollPane(tree));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
pack();
}
/**
* @param tree
*/
private Tile readDict(byte zl) throws IOException {
InputStream is = new FileInputStream(root + "/dat/dict-" + zl + ".dat");
DataInputStream ds = new DataInputStream(is);
if (! "DictMid".equals(ds.readUTF())){
throw new IOException("not a DictMid-file");
}
byte type = ds.readByte();
switch (type) {
case Tile.TYPE_MAP:
dict = new SingleTile(ds, 1, zl, root);
break;
case Tile.TYPE_CONTAINER:
dict = new ContainerTile(ds, 1, zl, root);
break;
case Tile.TYPE_EMPTY:
// empty tile;
break;
case Tile.TYPE_FILETILE:
dict = new FileTile(ds, 1, zl, root);
break;
default:
break;
}
ds.close();
return dict;
}
/* (non-Javadoc)
* @see javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent)
*/
@Override
public void valueChanged(TreeSelectionEvent e) {
TreePath path = e.getPath();
JTree tree = (JTree) e.getSource();
Object sel = tree.getLastSelectedPathComponent();
if (sel instanceof Tile){
fBrowser.setSelected((Tile) sel);
}
if (sel instanceof BWay){
fBrowser.setSelected((BWay) sel);
}
}
}