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