1 package org.opentrafficsim.editor.extensions;
2
3 import java.rmi.RemoteException;
4 import java.time.LocalDateTime;
5 import java.util.function.Consumer;
6
7 import javax.swing.JComponent;
8 import javax.swing.JLabel;
9
10 import org.djutils.event.Event;
11 import org.djutils.event.EventListener;
12 import org.opentrafficsim.animation.data.util.IconUtil;
13 import org.opentrafficsim.editor.OtsEditor;
14 import org.opentrafficsim.editor.XsdTreeNode;
15 import org.opentrafficsim.editor.XsdTreeNodeRoot;
16
17
18
19
20
21
22
23
24
25 public class RouteEditor implements EventListener, Consumer<XsdTreeNode>
26 {
27
28 private OtsEditor editor;
29
30
31
32
33
34
35 public RouteEditor(final OtsEditor editor) throws RemoteException
36 {
37 editor.addTab("Route", IconUtil.of("Route24.png").imageSize(18, 18).get(), buildRoutePane(), null);
38 editor.addListener(this, OtsEditor.NEW_FILE);
39 this.editor = editor;
40 }
41
42
43
44
45
46 private static JComponent buildRoutePane()
47 {
48 JLabel route = new JLabel("route");
49 route.setOpaque(true);
50 route.setHorizontalAlignment(JLabel.CENTER);
51 return route;
52 }
53
54 @Override
55 public void notify(final Event event)
56 {
57
58 if (event.getType().equals(OtsEditor.NEW_FILE))
59 {
60 XsdTreeNodeRoot root = (XsdTreeNodeRoot) event.getContent();
61 root.addListener(this, XsdTreeNodeRoot.NODE_CREATED);
62 }
63 else if (event.getType().equals(XsdTreeNodeRoot.NODE_CREATED))
64 {
65 XsdTreeNode node = (XsdTreeNode) ((Object[]) event.getContent())[0];
66 if (node.isType("Ots.Demand.Route"))
67 {
68 node.addConsumer("Show in panel...", this);
69 node.addConsumer("Compute shortest...", new Consumer<XsdTreeNode>()
70 {
71 @Override
72 public void accept(final XsdTreeNode t)
73 {
74 System.out.println("We are not going to do that.");
75 }
76 });
77 }
78 }
79 }
80
81 @Override
82 public void accept(final XsdTreeNode t)
83 {
84 JLabel label = ((JLabel) this.editor.getTab("Route").get());
85 label.setText(LocalDateTime.now().toString());
86 this.editor.focusTab("Route");
87 }
88 }