Search in sources :

Example 21 with Node

use of net.parostroj.timetable.model.Node in project grafikon by jub77.

the class FreightComboBoxHelper method installListeners.

private void installListeners(TrainDiagram diagram, WrapperListModel<Node> nodesModel) {
    diagram.getNet().addListener(event -> {
        if (event.getObject() instanceof Node) {
            Node node = (Node) event.getObject();
            switch(event.getType()) {
                case ADDED:
                    addNode(nodesModel, node);
                    break;
                case REMOVED:
                    removeNode(nodesModel, node);
                    break;
                default:
            }
        }
    });
    diagram.getNet().addAllEventListener(e -> {
        if (e.getSource() instanceof Node && e.getType() == Type.ATTRIBUTE && e.getAttributeChange().checkName(Node.ATTR_TYPE)) {
            Node node = (Node) e.getSource();
            if (node.getType().isFreight()) {
                addNode(nodesModel, node);
            } else {
                removeNode(nodesModel, node);
            }
        }
    });
}
Also used : Node(net.parostroj.timetable.model.Node)

Example 22 with Node

use of net.parostroj.timetable.model.Node 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();
    }
}
Also used : DirectNodeConnection(net.parostroj.timetable.model.freight.DirectNodeConnection) ItemListener(java.awt.event.ItemListener) Node(net.parostroj.timetable.model.Node) DestinationTableModel(net.parostroj.timetable.gui.components.FreightDestinationPanel.DestinationTableModel) ResourceLoader(net.parostroj.timetable.gui.utils.ResourceLoader) ImageIcon(javax.swing.ImageIcon) BorderLayout(java.awt.BorderLayout) JComboBox(javax.swing.JComboBox) Wrapper(net.parostroj.timetable.gui.wrappers.Wrapper) FlowLayout(java.awt.FlowLayout) ItemEvent(java.awt.event.ItemEvent) JButton(javax.swing.JButton) WrapperListModel(net.parostroj.timetable.gui.wrappers.WrapperListModel) Iterator(java.util.Iterator) GuiComponentUtils(net.parostroj.timetable.gui.utils.GuiComponentUtils) TrainConnection(net.parostroj.timetable.model.freight.TrainConnection) BorderFactory(javax.swing.BorderFactory) FreightConnectionAnalyser(net.parostroj.timetable.model.freight.FreightConnectionAnalyser) JScrollPane(javax.swing.JScrollPane) Collectors.toList(java.util.stream.Collectors.toList) List(java.util.List) DataModel(net.parostroj.timetable.gui.components.FreightDestinationPanel.DataModel) Type(net.parostroj.timetable.model.events.Event.Type) GuiIcon(net.parostroj.timetable.gui.utils.GuiIcon) JLabel(javax.swing.JLabel) JTable(javax.swing.JTable) RxActionHandler(net.parostroj.timetable.gui.actions.execution.RxActionHandler) ColumnAdjuster(net.parostroj.timetable.gui.components.FreightDestinationPanel.ColumnAdjuster) Comparator(java.util.Comparator) TrainDiagram(net.parostroj.timetable.model.TrainDiagram) JPanel(javax.swing.JPanel) NodeFreightConnection(net.parostroj.timetable.model.freight.NodeFreightConnection) TimeUtil(net.parostroj.timetable.utils.TimeUtil) NodeFreightConnection(net.parostroj.timetable.model.freight.NodeFreightConnection) DataModel(net.parostroj.timetable.gui.components.FreightDestinationPanel.DataModel) Collectors.toList(java.util.stream.Collectors.toList) List(java.util.List) FreightConnectionAnalyser(net.parostroj.timetable.model.freight.FreightConnectionAnalyser)

Example 23 with Node

use of net.parostroj.timetable.model.Node in project grafikon by jub77.

the class FreightDestinationPanel method updateView.

public void updateView(Node node) {
    // update selection
    if (nodesModel.getSelectedObject() != node) {
        nodesModel.setSelectedObject(node);
    }
    tableModel.clear();
    if (node != null) {
        DataModel model = new DataModel();
        RxActionHandler.createInstance().newExecution("freight_dest", GuiComponentUtils.getTopLevelComponent(this), diagram).addConsumer((c, diagram) -> {
            c.setWaitMessage(ResourceLoader.getString("wait.message.processing"));
            c.setWaitDialogVisible(true);
        }).onBackground().addConsumer((c, diagram) -> {
            FreightAnalyser analyser = new FreightAnalyser(diagram.getFreightNet().getConnectionStrategy());
            NodeFreight freight = analyser.getNodeFreightFrom(node);
            addFreightToNodes(model, freight);
            addFreightToRegions(model, freight);
            addFreightToColors(model, freight);
            addFreightTrainsFromNode(model, node, analyser);
            addFreightTrainUnitsFromNode(model, node, analyser);
        }).addConsumer((c, diagram) -> {
            tableModel.addLines(model);
            adjustColumnWidth.run();
        }).execute();
    }
}
Also used : TableColumnModel(javax.swing.table.TableColumnModel) OutputFreightUtil(net.parostroj.timetable.output2.util.OutputFreightUtil) TableCellRenderer(javax.swing.table.TableCellRenderer) Node(net.parostroj.timetable.model.Node) ArrayList(java.util.ArrayList) TimeInterval(net.parostroj.timetable.model.TimeInterval) ResourceLoader(net.parostroj.timetable.gui.utils.ResourceLoader) Locale(java.util.Locale) AbstractTableModel(javax.swing.table.AbstractTableModel) NodeFreight(net.parostroj.timetable.model.freight.NodeFreight) BorderLayout(java.awt.BorderLayout) JComboBox(javax.swing.JComboBox) Wrapper(net.parostroj.timetable.gui.wrappers.Wrapper) Collator(java.text.Collator) FlowLayout(java.awt.FlowLayout) ItemEvent(java.awt.event.ItemEvent) JButton(javax.swing.JButton) WrapperListModel(net.parostroj.timetable.gui.wrappers.WrapperListModel) Collection(java.util.Collection) GuiComponentUtils(net.parostroj.timetable.gui.utils.GuiComponentUtils) BorderFactory(javax.swing.BorderFactory) Component(java.awt.Component) Collectors(java.util.stream.Collectors) JScrollPane(javax.swing.JScrollPane) List(java.util.List) GuiIcon(net.parostroj.timetable.gui.utils.GuiIcon) Tuple(net.parostroj.timetable.utils.Tuple) JTable(javax.swing.JTable) RxActionHandler(net.parostroj.timetable.gui.actions.execution.RxActionHandler) Comparator(java.util.Comparator) FreightAnalyser(net.parostroj.timetable.model.freight.FreightAnalyser) TrainDiagram(net.parostroj.timetable.model.TrainDiagram) JPanel(javax.swing.JPanel) NodeFreight(net.parostroj.timetable.model.freight.NodeFreight) FreightAnalyser(net.parostroj.timetable.model.freight.FreightAnalyser)

Example 24 with Node

use of net.parostroj.timetable.model.Node in project grafikon by jub77.

the class EditFNConnetionDialog method updateSelectionPanel.

private void updateSelectionPanel(TrainDiagram diagram, FilterType filterType) {
    ElementSelectionPanel<Node> selectionPanel = selectionPanels.get(filterType);
    selectionPanel.setListForSelection(Wrapper.getWrapperList(diagram.getNet().getNodes()));
    List<Node> lastNodes = connection.getAsList(filterType.getAttributeName(), Node.class);
    if (lastNodes != null) {
        for (Node node : lastNodes) {
            selectionPanel.addSelected(Wrapper.getWrapper(node));
        }
    }
}
Also used : Node(net.parostroj.timetable.model.Node)

Example 25 with Node

use of net.parostroj.timetable.model.Node in project grafikon by jub77.

the class LSLine method createLine.

public Line createLine(TrainDiagram diagram) throws LSException {
    Net net = diagram.getNet();
    Node fromNode = net.getNodeById(getFrom());
    Node toNode = net.getNodeById(getTo());
    if (speed != null && speed <= 0) {
        speed = null;
    }
    Line line = diagram.getPartFactory().createLine(id, length, fromNode, toNode, speed);
    line.getAttributes().add(attributes.createAttributes(diagram::getObjectById));
    // tracks
    if (this.tracks != null)
        for (LSLineTrack lsLineTrack : this.tracks) {
            LineTrack lineTrack = lsLineTrack.createLineTrack(diagram::getObjectById);
            NodeTrack fromStraight = fromNode.getTrackById(lsLineTrack.getFromStraightTrack());
            NodeTrack toStraight = toNode.getTrackById(lsLineTrack.getToStraightTrack());
            lineTrack.setFromStraightTrack(fromStraight);
            lineTrack.setToStraightTrack(toStraight);
            line.addTrack(lineTrack);
        }
    return line;
}
Also used : Line(net.parostroj.timetable.model.Line) NodeTrack(net.parostroj.timetable.model.NodeTrack) Node(net.parostroj.timetable.model.Node) Net(net.parostroj.timetable.model.Net) LineTrack(net.parostroj.timetable.model.LineTrack)

Aggregations

Node (net.parostroj.timetable.model.Node)39 List (java.util.List)10 ArrayList (java.util.ArrayList)9 TimeInterval (net.parostroj.timetable.model.TimeInterval)9 BorderLayout (java.awt.BorderLayout)8 Collection (java.util.Collection)8 Region (net.parostroj.timetable.model.Region)8 TrainDiagram (net.parostroj.timetable.model.TrainDiagram)8 FlowLayout (java.awt.FlowLayout)7 Comparator (java.util.Comparator)7 Set (java.util.Set)7 BorderFactory (javax.swing.BorderFactory)7 JButton (javax.swing.JButton)7 JPanel (javax.swing.JPanel)7 JScrollPane (javax.swing.JScrollPane)7 RxActionHandler (net.parostroj.timetable.gui.actions.execution.RxActionHandler)7 GuiComponentUtils (net.parostroj.timetable.gui.utils.GuiComponentUtils)7 GuiIcon (net.parostroj.timetable.gui.utils.GuiIcon)7 ResourceLoader (net.parostroj.timetable.gui.utils.ResourceLoader)7 ItemEvent (java.awt.event.ItemEvent)6