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