package graphics.graph;
import java.awt.*;
public class GraphManager {
private ImagePanel ip = ImagePanel.getImagePanel();
private EdgesManager em = GraphFactory.getEdgesManager();
private NodeDrawer nd = GraphFactory.getNodeDrawer();
private EdgesBean eb = EdgesBean.getEdgesBean();
private ImageUtil imageUtil;
private MouseEventHandler meh;
private RelaxThreadMgr rtm;
private static GraphManager gp = new GraphManager();
private GraphManager() {
}
public static GraphManager getGraphManager() {
return gp;
}
public RelaxThreadMgr getRelaxThreadMgr() {
return rtm;
}
private ImageUtil getImageUtil()
{
return imageUtil;
}
public void update(java.awt.Graphics g)
{
Dimension d = ip.getSize();
if ((getImageUtil().getOffScreen() == null) ||
(d.width != getImageUtil().getOffScreenSize().width) ||
(d.height != getImageUtil().getOffScreenSize().height))
getImageUtil().createBuffer(ip.getSize());
getImageUtil().getOffGraphics().setColor(ip.getBackground());
getImageUtil().getOffGraphics().fillRect(0, 0, d.width, d.height);
for (int i = 0; i < eb.getNumberOfEdges(); i++) {
em.drawArcAndString(i);
}
nd.drawNodes(getImageUtil());
g.drawImage(getImageUtil().getOffScreen(), 0, 0, null);
}
public void start()
{
imageUtil = GraphFactory.getImageUtil();
imageUtil.setPanel(ip);
ip.setGraphManager(this);
ip.addMouseListener(meh);
meh = new MouseEventHandler(ip);
rtm = new RelaxThreadMgr(ip);
getRelaxThreadMgr().start();
}
}