package com.github.swapii.condi;
import com.github.swapii.condi.ui.Tree;
import com.github.swapii.condi.ui.tree.TreeItem;
import com.googlecode.lanterna.gui.Action;
import com.googlecode.lanterna.gui.GUIScreen;
import com.googlecode.lanterna.gui.Window;
import com.googlecode.lanterna.gui.component.Button;
import com.googlecode.lanterna.gui.component.EmptySpace;
import com.googlecode.lanterna.gui.component.Panel;
import com.googlecode.lanterna.gui.layout.BorderLayout;
import com.googlecode.lanterna.gui.listener.WindowAdapter;
import com.googlecode.lanterna.terminal.TerminalSize;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.FileFilter;
/**
* @author Pavel Savinov
* @version 7/20/13 12:19 PM
*/
public class FolderChooser extends Window {
private static final Logger logger = LoggerFactory.getLogger(FolderChooser.class);
private File selected;
public FolderChooser(GUIScreen screen) {
super("Choose folder to scan");
FileFilter fileFilter = new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isDirectory();
}
};
FileTreeItem root = new FileTreeItem(new File("/"), null, fileFilter);
Tree tree = new Tree(root);
tree.setOnItemSelectedListener(new Tree.OnItemSelectedListener() {
@Override
public void itemSelected(TreeItem item) {
File file = ((FileTreeItem) item).getFile();
logger.debug("Folder selected: " + file.getAbsolutePath());
selected = file;
}
});
addComponent(tree, BorderLayout.CENTER);
addComponent(new EmptySpace());
Panel buttonsPanel = new Panel(Panel.Orientation.HORISONTAL);
buttonsPanel.addComponent(new Button("Cancel", new Action() {
@Override
public void doAction() {
close();
}
}));
buttonsPanel.addComponent(new EmptySpace());
buttonsPanel.addComponent(new Button("Scan", new Action() {
@Override
public void doAction() {
close();
}
}));
addComponent(buttonsPanel, BorderLayout.BOTTOM, BorderLayout.CENTER);
TerminalSize size = screen.getScreen().getTerminalSize();
setWindowSizeOverride(new TerminalSize(size.getColumns() - 8, size.getRows() - 5));
screen.showWindow(this, GUIScreen.Position.OVERLAPPING);
}
}