package net.codjo.segmentation.gui.progress;
import net.codjo.gui.toolkit.waiting.WaitingPanel;
import net.codjo.segmentation.common.MidAuditKey;
import static net.codjo.segmentation.common.SegmentationLevelNames.ANALYZE_LEVEL;
import static net.codjo.segmentation.common.SegmentationLevelNames.COMPUTE_LEVEL;
import static net.codjo.segmentation.common.SegmentationLevelNames.DELETE_LEVEL;
import static net.codjo.segmentation.common.SegmentationLevelNames.PAGINATE_LEVEL;
import net.codjo.workflow.common.message.Arguments;
import net.codjo.workflow.common.message.JobAudit;
import java.awt.Color;
import java.util.HashMap;
import java.util.Map;
import javax.swing.BoxLayout;
import javax.swing.JComponent;
import javax.swing.JPanel;
/**
*
*/
public class SegmentationProgress {
private JPanel gui = new JPanel();
private Map<String, FamilyProgressGui> familyGui = new HashMap<String, FamilyProgressGui>();
private WaitingPanel waitingPanel;
public SegmentationProgress() {
BoxLayout layout = new BoxLayout(gui, BoxLayout.Y_AXIS);
gui.setLayout(layout);
gui.setBackground(Color.WHITE);
}
public void clearAll() {
gui.removeAll();
}
public void receivePostAudit(JobAudit audit) {
for (FamilyProgressGui familyProgressGui : familyGui.values()) {
familyProgressGui.receivePostAudit(audit);
}
}
public void receivePreAudit(JobAudit audit) {
waitingPanel = new WaitingPanel("Mise en place de la segmentation ...");
waitingPanel.setDelayBeforeAnimation(0);
gui.getRootPane().setGlassPane(waitingPanel);
waitingPanel.setSize(gui.getSize());
waitingPanel.startAnimation();
}
public void receiveAudit(Arguments arguments) {
String level = arguments.get(MidAuditKey.LEVEL_KEY);
if (ANALYZE_LEVEL.equals(level)) {
waitingPanel.stopAnimation();
String[] families = arguments.get(MidAuditKey.FAMILY_KEY).replaceAll(" ", "").split(",");
for (String family : families) {
FamilyProgressGui progressGui = new FamilyProgressGui(family);
familyGui.put(family, progressGui);
gui.add(progressGui.getMain());
}
}
else if (DELETE_LEVEL.equals(level)) {
String family = arguments.get(MidAuditKey.FAMILY_KEY);
FamilyProgressGui progressGui = familyGui.get(family);
progressGui.setDeleteStatus(getIsLast(arguments));
}
else if (PAGINATE_LEVEL.equals(level)) {
String family = arguments.get(MidAuditKey.FAMILY_KEY);
FamilyProgressGui progressGui = familyGui.get(family);
progressGui.setPaginateStatus(Integer.parseInt(arguments.get(MidAuditKey.PAGE_COUNT_KEY)),
getIsLast(arguments));
}
else if (COMPUTE_LEVEL.equals(level)) {
String family = arguments.get(MidAuditKey.FAMILY_KEY);
FamilyProgressGui progressGui = familyGui.get(family);
progressGui.declareOnePageHasBeenComputed();
}
}
private boolean getIsLast(Arguments arguments) {
return Boolean.valueOf(arguments.get(MidAuditKey.IS_LAST_KEY));
}
public JComponent getGui() {
return gui;
}
}