package net.jscanner.ui.impl;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JScrollPane;
import net.jscanner.archive.Archive;
import net.jscanner.ui.UI;
import net.jscanner.ui.component.ComponentBuilder;
import net.jscanner.ui.component.button.ScanButton;
import net.jscanner.ui.component.tree.ThreatTree;
/**
* The "Select Threats" user interface.
*
* @author Desmond Jackson
*/
public class SelectThreatsUI extends UI implements WindowListener {
/**
* The serial uid.
*/
private static final long serialVersionUID = 7981425887061533055L;
/**
* The parent user interface.
*/
private JScannerUI parent;
/**
* The archive to scan.
*/
private Archive archive;
/**
* The threat tree.
*/
private ThreatTree threatTree;
/**
* Creates a new "Select Threats" user interface.
*
* @param archive The archive to scan
*
* @param parent The parent user interface
*/
public SelectThreatsUI(JScannerUI parent, Archive archive) {
super("Select Threats");
this.parent = parent;
this.archive = archive;
addWindowListener(this);
}
/**
* Gets the threat tree.
*
* @return The threat tree
*/
public ThreatTree getThreatTree() {
return threatTree;
}
/**
* Gets the archive to scan.
*
* @return The archive to scan
*/
public Archive getArchive() {
return archive;
}
/**
* Gets the parent user interface.
*
* @return The parent user interface
*/
public JScannerUI getParent() {
return parent;
}
/**
* Gets the user interface instance from the specified component.
*
* @param component The specified component
*
* @return null if the instance could not be obtained
*/
public static SelectThreatsUI getInstance(Component component) {
return (SelectThreatsUI) UI.getInstance(component);
}
@Override
protected void addComponents() {
add(ComponentBuilder.buildSearchPanel(), BorderLayout.NORTH);
add(new JScrollPane(threatTree = new ThreatTree()), BorderLayout.CENTER);
add(new ScanButton(), BorderLayout.SOUTH);
}
@Override
public void windowOpened(WindowEvent e) {
parent.setVisible(false);
}
@Override
public void windowClosing(WindowEvent e) {
parent.setVisible(true);
}
@Override
public void windowClosed(WindowEvent e) {}
@Override
public void windowIconified(WindowEvent e) {}
@Override
public void windowDeiconified(WindowEvent e) {}
@Override
public void windowActivated(WindowEvent e) {}
@Override
public void windowDeactivated(WindowEvent e) {}
@Override
protected Dimension getDimension() {
return new Dimension(500, 500);
}
}