View Javadoc
1   package org.opentrafficsim.editor.extensions;
2   
3   import javax.swing.Icon;
4   import javax.swing.JComponent;
5   import javax.swing.JLabel;
6   
7   import org.djutils.event.Event;
8   import org.djutils.event.EventListener;
9   import org.opentrafficsim.animation.data.util.IconUtil;
10  import org.opentrafficsim.editor.OtsEditor;
11  import org.opentrafficsim.editor.XsdTreeNode;
12  
13  /**
14   * Editor for OD.
15   * <p>
16   * Copyright (c) 2023-2026 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
17   * BSD-style license. See <a href="https://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
18   * </p>
19   * @author Wouter Schakel
20   */
21  public class OdEditor implements EventListener
22  {
23  
24      /** Editor. */
25      private final OtsEditor editor;
26  
27      /**
28       * Constructor.
29       * @param editor editor.
30       */
31      public OdEditor(final OtsEditor editor)
32      {
33          Icon odIcon = IconUtil.of("Table24.png").imageSize(18, 18).get();
34          editor.addTab("OD", odIcon, buildOdPane(), null);
35          editor.addListener(this, OtsEditor.SELECTION_CHANGED);
36          this.editor = editor;
37      }
38  
39      /**
40       * Temporary stub to create OD pane.
41       * @return component.
42       */
43      private static JComponent buildOdPane()
44      {
45          JLabel od = new JLabel("od");
46          od.setOpaque(true);
47          od.setHorizontalAlignment(JLabel.CENTER);
48          return od;
49      }
50  
51      @Override
52      public void notify(final Event event)
53      {
54          // TODO: this is a dummy implementation
55          if (event.getType().equals(OtsEditor.SELECTION_CHANGED))
56          {
57              JLabel label = ((JLabel) this.editor.getTab("OD").get());
58              XsdTreeNode node = (XsdTreeNode) event.getContent();
59              if (node.getPathString().startsWith("Ots.Demand.Od"))
60              {
61                  label.setText(node.getPathString());
62              }
63              else
64              {
65                  label.setText("od");
66              }
67          }
68      }
69  
70  }