use of net.parostroj.timetable.model.freight.DirectNodeConnection in project grafikon by jub77.
the class FreightComboBoxHelper method updateView.
public void updateView(Node from, Node to) {
// update selection
if (fromNode.getSelectedObject() != from) {
fromNode.setSelectedObject(from);
}
if (toNode.getSelectedObject() != to) {
toNode.setSelectedObject(to);
}
tableModel.clear();
stateIconLabel.setIcon(null);
if (from != null && to != null && from != to) {
DataModel model = new DataModel();
RxActionHandler.getInstance().newExecution("freight_conn", GuiComponentUtils.getTopLevelComponent(this), diagram).addConsumer((c, diagram) -> {
c.setWaitMessage(ResourceLoader.getString("wait.message.processing"));
c.setWaitDialogVisible(true);
}).onBackground().addConsumer((c, diagram) -> {
FreightConnectionAnalyser connectionAnalyser = new FreightConnectionAnalyser(diagram.getFreightNet().getConnectionStrategy());
NodeFreightConnection ncf = connectionAnalyser.analyse(from, to).stream().min(Comparator.comparingInt(NodeFreightConnection::getLength)).get();
stateIconLabel.setIcon(ncf.isComplete() ? okIcon : errorIcon);
ncf.getSteps().forEach(s -> {
List<String> list = convertStep(s);
String node = convertNode(s.getFrom());
for (String item : list) {
model.addLine(node, item);
node = null;
}
});
if (ncf.isComplete()) {
model.addLine(convertNode(to), "");
} else {
List<DirectNodeConnection> steps = ncf.getSteps();
if (steps != null && !steps.isEmpty()) {
model.addLine(convertNode(steps.get(steps.size() - 1).getTo()), "");
}
}
}).onEdt().addConsumer((c, diagram) -> {
tableModel.addLines(model);
adjustColumnWidth.run();
}).execute();
}
}
Aggregations