package vroom.optimization.online.jmsa.vrp.visu;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JSplitPane;
import vroom.optimization.online.jmsa.MSABase;
import vroom.optimization.online.jmsa.vrp.MSAVRPInstance;
public class MSAVisualizationFrame extends JFrame {
private static final long serialVersionUID = 1L;
private final DynamicInstanceGraph mGraph;
private MSABase<?, ?> mMSA;
/** the value of perfect information **/
private final double mPI;
private MSAInfoPanel mInfo;
private MSAVisualizationPanel mVisu;
/**
* Getter for the value of perfect information
*
* @return the value of pi
*/
public double getPI() {
return mPI;
}
/**
* Create the application.
*/
public MSAVisualizationFrame(MSABase<?, ?> msa, double pi) {
super("MSA Visualization");
mPI = pi;
setPreferredSize(new Dimension(800, 500));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mMSA = msa;
mGraph = new DynamicInstanceGraph((MSAVRPInstance) mMSA.getInstance());
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
// Visualization pane
mVisu = new MSAVisualizationPanel(new DynamicInstanceViewer(mGraph));
// Info pane
mInfo = new MSAInfoPanel(mMSA, getPI());
// Split pane
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
false, mInfo, mVisu);
splitPane.setDividerSize(3);
setContentPane(splitPane);
pack();
splitPane.setDividerLocation(0.3);
}
/**
* Detach this frame from the MSA procedure. Will attempt to remove any
* reference to free memory.
*/
public void detach() {
mMSA = null;
mInfo.detach();
mVisu.detach();
}
}