use of net.parostroj.timetable.gui.actions.execution.EventDispatchModelAction in project grafikon by jub77.
the class ImportAction method actionPerformed.
@Override
public void actionPerformed(ActionEvent event) {
final Component parent = GuiComponentUtils.getTopLevelComponent(event.getSource());
ActionContext context = new ActionContext(parent);
ActionHandler handler = ActionHandler.getInstance();
context.setAttribute("fileType", supportLibrary ? FileChooserFactory.Type.GTM_GTML : FileChooserFactory.Type.GTM);
context.setAttribute("diagramImport", model.getDiagram());
handler.execute(new OpenFileModelAction(context));
handler.execute(new SelectLoadAction(context));
handler.execute(new LoadDiagramModelAction(context));
handler.execute(new LoadLibraryModelAction(context));
handler.execute(new EventDispatchModelAction(context) {
@Override
protected void eventDispatchAction() {
TrainDiagram diagram = (TrainDiagram) context.getAttribute("diagram");
boolean cancelled = false;
Predicate<ObjectWithId> filter = null;
if (trainImport) {
groupDialog.setLocationRelativeTo(parent);
groupDialog.showDialog(diagram, null, model.getDiagram(), null);
if (groupDialog.isSelected()) {
final Group group = groupDialog.getSelectedFrom();
filter = new TrainGroupFilter(group);
} else {
cancelled = !groupDialog.isSelected();
}
}
context.setAttribute("trainFilter", filter);
context.setCancelled(cancelled);
if (trainImport) {
context.setAttribute("trainImport", new ImportModelAction.TrainImportConfig(groupDialog.isRemoveExistingTrains(), groupDialog.getSelectedFrom(), groupDialog.getSelectedTo()));
}
}
});
handler.execute(new ImportSelectionModelAction(context));
handler.execute(new ImportModelAction(context));
}
Aggregations