LineExtractorGUI.java
package ac.essex.ooechs.imaging.commons.subpixel;
import ac.essex.ooechs.imaging.commons.util.panels.ImagePanel;
import ac.essex.ooechs.imaging.commons.util.panels.FileTree;
import ac.essex.ooechs.imaging.commons.util.ImageFilenameFilter;
import ac.essex.ooechs.imaging.commons.PixelLoader;
import javax.swing.*;
import java.io.File;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
public class LineExtractorGUI extends JFrame {
protected ImagePanel p;
protected JButton load, segment;
private int startX, startY;
ImagePanel p2;
public LineExtractorGUI(File file) {
super("Line Crawler GUI");
p2 = new ImagePanel();
p2.setPreferredSize(new Dimension(100, -1));
p = new ImagePanel();
p.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
p.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
startX = p.getX(e);
startY = p.getY(e);
}
public void mouseReleased(MouseEvent e) {
int endX = p.getX(e);
int endY = p.getY(e);
double dx = startX - endX;
double dy = startY - endY;
// find the mid point
double mx = startX - (dx / 2);
double my = startY - (dy / 2);
Graphics g = p.getGraphics();
g.drawLine(startX, startY, p.getX(e), p.getY(e));
g.drawRect((int) mx, (int) my, 1,1);
PixelLoader image = new PixelLoader(p.getImage());
p2.setImage(LineExtractor.extract(image, 50, startX, startY, endX, endY));
}
});
p.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
Graphics g = p.getGraphics();
p.drawImage(g, p.getImage());
g.setColor(Color.RED);
g.drawLine(startX, startY, p.getX(e), p.getY(e));
}
});
FileTree f = new FileTree(file, new ImageFilenameFilter()) {
/**
* Called when a file is selected in the tree
*/
public void onSelectFile(File f) {
loadImage(f);
}
};
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, new JScrollPane(f), new JScrollPane(p));
getContentPane().add(splitPane);
getContentPane().add(p2, BorderLayout.EAST);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(980, 480);
setVisible(true);
}
protected void loadImage(File f) {
if (f != null) {
try {
p.setImage(new PixelLoader(f));
} catch (Exception err) {
err.printStackTrace();
}
}
}
protected void crawl() {
new Thread() {
public void run() {
}
}.start();
}
public static void main(String args[]) {
File directory = new File("/home/ooechs/Desktop/Documents/Papers/Pipelines/data");
new LineExtractorGUI(directory);
}
}