001package jmri.jmrit.beantable;
002
003import java.awt.BorderLayout;
004import java.util.List;
005
006import javax.annotation.Nonnull;
007import javax.swing.event.ChangeEvent;
008import javax.swing.JPanel;
009import javax.swing.JTabbedPane;
010import jmri.*;
011
012public class IdTagTableTabAction extends AbstractTableTabAction<IdTag> {
013
014    public IdTagTableTabAction(String s) {
015        super(s);
016    }
017
018    public IdTagTableTabAction() {
019        this("Multiple Tabbed");
020    }
021
022    /** {@inheritDoc} */
023    @Override
024    @Nonnull
025    protected Manager<IdTag> getManager() {
026        return InstanceManager.getDefault(IdTagManager.class);
027    }
028
029    /** {@inheritDoc} */
030    @Override
031    protected String getClassName() {
032        return IdTagTableAction.class.getName();
033    }
034
035    /** {@inheritDoc} */
036    @Override
037    protected IdTagTableAction getNewTableAction(String choice) {
038        return new IdTagTableAction(choice);
039    }
040
041    /** {@inheritDoc} */
042    @Override
043    protected String helpTarget() {
044        return "package.jmri.jmrit.beantable.IdTagTable";
045    }
046
047    @Override
048    protected void createModel() {
049        dataPanel = new JPanel();
050        dataTabs = new JTabbedPane();
051        dataPanel.setLayout(new BorderLayout());
052        if (getManager() instanceof jmri.managers.AbstractProxyManager) {
053            // build the list, with default at start and internal at end (if present)
054            jmri.managers.AbstractProxyManager<IdTag> proxy = (jmri.managers.AbstractProxyManager<IdTag>) getManager();
055
056            tabbedTableArray.add(new TabbedTableItem<>(Bundle.getMessage("All"), true, getManager(), getNewTableAction("All"))); // NOI18N
057
058            List<jmri.Manager<IdTag>> managerList = proxy.getDisplayOrderManagerList();
059            for (Manager<IdTag> manager : managerList) {
060                String manuName = manager.getMemo().getUserName();
061                if (manuName == null && (manager instanceof jmri.managers.DefaultRailComManager)) {
062                    manuName = "RailCom"; // NOI18N (proper name).
063                }
064                TabbedTableItem<IdTag> itemModel = new TabbedTableItem<>(manuName, true, manager, getNewTableAction(manuName)); // connection name to display in Tab
065                tabbedTableArray.add(itemModel);
066            }
067            
068        } else {
069            String manuName = getManager().getMemo().getUserName();
070            tabbedTableArray.add(new TabbedTableItem<>(manuName, true, getManager(), getNewTableAction(manuName)));
071        }
072        for (int x = 0; x < tabbedTableArray.size(); x++) {
073            AbstractTableAction<IdTag> table = tabbedTableArray.get(x).getAAClass();
074            table.addToPanel(this);
075            dataTabs.addTab(tabbedTableArray.get(x).getItemString(), null, tabbedTableArray.get(x).getPanel(), null);
076        }
077        dataTabs.addChangeListener((ChangeEvent evt) -> {
078            setMenuBar(f);
079        });
080        dataPanel.add(dataTabs, BorderLayout.CENTER);
081        init = true;
082    }
083
084}