001package jmri.jmrix.ecos.swing.locodatabase; 002 003import java.awt.BorderLayout; 004import javax.swing.JPanel; 005import javax.swing.JTabbedPane; 006import javax.swing.event.ChangeEvent; 007import javax.swing.event.ChangeListener; 008import jmri.*; 009import jmri.jmrit.beantable.AbstractTableAction; 010import jmri.jmrit.beantable.AbstractTableTabAction; 011import jmri.jmrix.ecos.EcosSystemConnectionMemo; 012 013public class EcosLocoTableTabAction extends AbstractTableTabAction<NamedBean> { // there is no specific subtype of NamedBean here, see EcosLocoAddressManager 014 015 public EcosLocoTableTabAction(String s) { 016 super(s); 017 } 018 019 public EcosLocoTableTabAction() { 020 this("Multiple Tabbed"); 021 } 022 023 @Override 024 protected void createModel() { 025 dataPanel = new JPanel(); 026 dataTabs = new JTabbedPane(); 027 dataPanel.setLayout(new BorderLayout()); 028 java.util.List<EcosSystemConnectionMemo> list = jmri.InstanceManager.getList(EcosSystemConnectionMemo.class); 029 for (EcosSystemConnectionMemo eMemo : list) { 030 //We only want to add connections that have an active loco address manager 031 if (eMemo.getLocoAddressManager() != null) { 032 TabbedTableItem<NamedBean> itemModel = new TabbedTableItem<>(eMemo.getUserName(), true, eMemo.getLocoAddressManager(), getNewTableAction(eMemo.getUserName(), eMemo)); 033 tabbedTableArray.add(itemModel); 034 } 035 } 036 if (tabbedTableArray.size() == 1) { 037 EcosLocoTableAction table = (EcosLocoTableAction) tabbedTableArray.get(0).getAAClass(); 038 table.addToPanel(this); 039 dataPanel.add(tabbedTableArray.get(0).getPanel(), BorderLayout.CENTER); 040 } else { 041 for (int x = 0; x < tabbedTableArray.size(); x++) { 042 EcosLocoTableAction table = (EcosLocoTableAction) tabbedTableArray.get(x).getAAClass(); 043 table.addToPanel(this); 044 dataTabs.addTab(tabbedTableArray.get(x).getItemString(), null, tabbedTableArray.get(x).getPanel(), null); 045 } 046 dataTabs.addChangeListener(new ChangeListener() { 047 @Override 048 public void stateChanged(ChangeEvent evt) { 049 setMenuBar(f); 050 } 051 }); 052 dataPanel.add(dataTabs, BorderLayout.CENTER); 053 } 054 init = true; 055 } 056 057 @Override 058 protected AbstractTableAction<NamedBean> getNewTableAction(String choice) { 059 return null; 060 } 061 062 protected AbstractTableAction<NamedBean> getNewTableAction(String choice, EcosSystemConnectionMemo eMemo) { 063 return new EcosLocoTableAction(choice, eMemo); 064 } 065 066 @Override 067 protected Manager<NamedBean> getManager() { 068 return null; 069 } 070 071 @Override 072 public void addToFrame(jmri.jmrit.beantable.BeanTableFrame<NamedBean> f) { 073 if (tabbedTableArray.size() > 1) { 074 super.addToFrame(f); 075 } 076 } 077 078 @Override 079 public void setMenuBar(jmri.jmrit.beantable.BeanTableFrame<NamedBean> f) { 080 if (tabbedTableArray.size() > 1) { 081 super.setMenuBar(f); 082 } 083 } 084 085 @Override 086 protected void setTitle() { 087 //atf.setTitle("multiple turnouts"); 088 } 089 090 @Override 091 protected String helpTarget() { 092 return "package.jmri.jmrix.ecos.swing.locodatabase.EcosLocoTable"; // very simple help page 093 } 094 095 @Override 096 protected String getClassName() { 097 return EcosLocoTableAction.class.getName(); 098 } 099 100 @Override 101 public String getClassDescription() { 102 return Bundle.getMessage("EcosLocoTableTitle"); 103 } 104 105}