001package jmri.jmrit.display.layoutEditor; 002 003import java.awt.BorderLayout; 004import java.awt.Color; 005import java.awt.Dimension; 006import java.awt.FlowLayout; 007import javax.annotation.Nonnull; 008import javax.swing.*; 009import javax.swing.border.*; 010 011/** 012 * This is the vertical toolbar panel 013 * 014 * @author George Warner Copyright: (c) 2019 015 */ 016public class LayoutEditorVerticalToolBarPanel extends LayoutEditorToolBarPanel { 017 018 /** 019 * constructor for LayoutEditorVerticalToolBarPanel 020 * 021 * @param layoutEditor the layout editor that this is for 022 */ 023 public LayoutEditorVerticalToolBarPanel(@Nonnull LayoutEditor layoutEditor) { 024 super(layoutEditor); 025 } //constructor 026 027 /** 028 * {@inheritDoc} 029 */ 030 @Override 031 protected void layoutComponents() { 032 setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS)); 033 034 Border blacklineBorder = BorderFactory.createLineBorder(Color.black); 035 036 JPanel outerBorderPanel = new JPanel(); 037 outerBorderPanel.setLayout(new BoxLayout(outerBorderPanel, BoxLayout.PAGE_AXIS)); 038 TitledBorder outerTitleBorder = BorderFactory.createTitledBorder(blacklineBorder, Bundle.getMessage("Track")); 039 outerTitleBorder.setTitleJustification(TitledBorder.CENTER); 040 outerTitleBorder.setTitlePosition(TitledBorder.BOTTOM); 041 outerBorderPanel.setBorder(outerTitleBorder); 042 043 JPanel innerBorderPanel = new JPanel(); 044 innerBorderPanel.setLayout(new BoxLayout(innerBorderPanel, BoxLayout.PAGE_AXIS)); 045 TitledBorder beanNameTitleBorder = BorderFactory.createTitledBorder(blacklineBorder, Bundle.getMessage("BeanNameTurnouts")); 046 beanNameTitleBorder.setTitleJustification(TitledBorder.CENTER); 047 beanNameTitleBorder.setTitlePosition(TitledBorder.BOTTOM); 048 innerBorderPanel.setBorder(beanNameTitleBorder); 049 050 FlowLayout verticalContentLayout = new FlowLayout(FlowLayout.LEFT, 5, 2); //5 pixel gap between items, 2 vertical gap 051 052 turnoutLabel = new JLabel(String.format("-- %s --", Bundle.getMessage("BeanNameTurnout"))); 053 054 JPanel vTop1Panel = new JPanel(verticalContentLayout); 055 vTop1Panel.add(turnoutLHButton); 056 vTop1Panel.add(turnoutRHButton); 057 vTop1Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop1Panel.getPreferredSize().height)); 058 innerBorderPanel.add(vTop1Panel); 059 060 JPanel vTop2Panel = new JPanel(verticalContentLayout); 061 vTop2Panel.add(turnoutWYEButton); 062 vTop2Panel.add(doubleXoverButton); 063 vTop2Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop2Panel.getPreferredSize().height * 2)); 064 innerBorderPanel.add(vTop2Panel); 065 066 JPanel vTop3Panel = new JPanel(verticalContentLayout); 067 vTop3Panel.add(lhXoverButton); 068 vTop3Panel.add(rhXoverButton); 069 vTop3Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop3Panel.getPreferredSize().height)); 070 innerBorderPanel.add(vTop3Panel); 071 072 JPanel vTop4Panel = new JPanel(verticalContentLayout); 073 vTop4Panel.add(layoutSingleSlipButton); 074 vTop4Panel.add(layoutDoubleSlipButton); 075 vTop4Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop4Panel.getPreferredSize().height)); 076 innerBorderPanel.add(vTop4Panel); 077 078 JPanel vTop5Panel = new JPanel(verticalContentLayout); 079 vTop5Panel.add(turnoutNamePanel); 080 vTop5Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop5Panel.getPreferredSize().height)); 081 innerBorderPanel.add(vTop5Panel); 082 083 JPanel vTop6Panel = new JPanel(verticalContentLayout); 084 vTop6Panel.add(extraTurnoutPanel); 085 vTop6Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop6Panel.getPreferredSize().height)); 086 innerBorderPanel.add(vTop6Panel); 087 088 JPanel vTop7Panel = new JPanel(verticalContentLayout); 089 vTop7Panel.add(rotationPanel); 090 vTop7Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop7Panel.getPreferredSize().height)); 091 innerBorderPanel.add(vTop7Panel); 092 093 innerBorderPanel.setMaximumSize(new Dimension(Integer.MAX_VALUE, innerBorderPanel.getPreferredSize().height)); 094 outerBorderPanel.add(innerBorderPanel); 095 096 trackLabel = new JLabel(String.format("-- %s --", Bundle.getMessage("Track"))); 097 098 JPanel vTop8Panel = new JPanel(verticalContentLayout); 099 vTop8Panel.add(levelXingButton); 100 vTop8Panel.add(trackButton); 101 vTop8Panel.add(turntableButton); 102 vTop8Panel.add(traverserButton); 103 vTop8Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop8Panel.getPreferredSize().height)); 104 outerBorderPanel.add(vTop8Panel); 105 106 //this would be vTop9Panel 107 trackSegmentPropertiesPanel.setMaximumSize(new Dimension(Integer.MAX_VALUE, 108 trackSegmentPropertiesPanel.getPreferredSize().height)); 109 outerBorderPanel.add(trackSegmentPropertiesPanel); 110 111 JPanel vTop10Panel = new JPanel(verticalContentLayout); 112 vTop10Panel.add(blockLabel); 113 vTop10Panel.add(blockIDComboBox); 114 vTop10Panel.add(highlightBlockCheckBox); 115 vTop10Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop10Panel.getPreferredSize().height)); 116 outerBorderPanel.add(vTop10Panel); 117 118 JPanel vTop11Panel = new JPanel(verticalContentLayout); 119 vTop11Panel.add(blockSensorLabel); 120 vTop11Panel.add(blockSensorComboBox); 121 vTop11Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop11Panel.getPreferredSize().height)); 122 vTop11Panel.setBorder(new EmptyBorder(0, 10, 0, 0)); 123 124 outerBorderPanel.add(vTop11Panel); 125 add(outerBorderPanel); 126 127 JPanel nodesBorderPanel = new JPanel(); 128 nodesBorderPanel.setLayout(new BoxLayout(nodesBorderPanel, BoxLayout.PAGE_AXIS)); 129 TitledBorder nodesTitleBorder = BorderFactory.createTitledBorder(blacklineBorder, Bundle.getMessage("Nodes")); 130 nodesTitleBorder.setTitleJustification(TitledBorder.CENTER); 131 nodesTitleBorder.setTitlePosition(TitledBorder.BOTTOM); 132 nodesBorderPanel.setBorder(nodesTitleBorder); 133 134 JPanel vTop12Panel = new JPanel(verticalContentLayout); 135 vTop12Panel.add(endBumperButton); 136 vTop12Panel.add(anchorButton); 137 vTop12Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop12Panel.getPreferredSize().height)); 138 nodesBorderPanel.add(vTop12Panel); 139 140 JPanel vTop13Panel = new JPanel(verticalContentLayout); 141 vTop13Panel.add(edgeButton); 142 vTop13Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop13Panel.getPreferredSize().height)); 143 nodesBorderPanel.add(vTop13Panel); 144 145 add(nodesBorderPanel); 146 147 labelsLabel = new JLabel(String.format("-- %s --", Bundle.getMessage("Labels"))); 148 149 JPanel labelsBorderPanel = new JPanel(); 150 labelsBorderPanel.setLayout(new BoxLayout(labelsBorderPanel, BoxLayout.PAGE_AXIS)); 151 TitledBorder innerTitleBorder = BorderFactory.createTitledBorder(blacklineBorder, Bundle.getMessage("Labels")); 152 innerTitleBorder.setTitleJustification(TitledBorder.CENTER); 153 innerTitleBorder.setTitlePosition(TitledBorder.BOTTOM); 154 labelsBorderPanel.setBorder(innerTitleBorder); 155 156 JPanel vTop14Panel = new JPanel(verticalContentLayout); 157 vTop14Panel.add(textLabelButton); 158 vTop14Panel.add(textLabelTextField); 159 vTop14Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop14Panel.getPreferredSize().height)); 160 labelsBorderPanel.add(vTop14Panel); 161 162 JPanel vTop15Panel = new JPanel(verticalContentLayout); 163 vTop15Panel.add(memoryButton); 164 vTop15Panel.add(textMemoryComboBox); 165 vTop15Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop15Panel.getPreferredSize().height)); 166 labelsBorderPanel.add(vTop15Panel); 167 168 JPanel vTop17Panel = new JPanel(verticalContentLayout); 169 vTop17Panel.add(globalVariableButton); 170 vTop17Panel.add(textGlobalVariableComboBox); 171 vTop17Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop17Panel.getPreferredSize().height)); 172 labelsBorderPanel.add(vTop17Panel); 173 174 JPanel vTop16Panel = new JPanel(verticalContentLayout); 175 vTop16Panel.add(blockContentsButton); 176 vTop16Panel.add(blockContentsComboBox); 177 vTop16Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop16Panel.getPreferredSize().height)); 178 labelsBorderPanel.add(vTop16Panel); 179 180 add(labelsBorderPanel); 181 182 JPanel iconsBorderPanel = new JPanel(); 183 iconsBorderPanel.setLayout(new BoxLayout(iconsBorderPanel, BoxLayout.PAGE_AXIS)); 184 TitledBorder iconsTitleBorder = BorderFactory.createTitledBorder(blacklineBorder, Bundle.getMessage("IconsTitle")); 185 iconsTitleBorder.setTitleJustification(TitledBorder.CENTER); 186 iconsTitleBorder.setTitlePosition(TitledBorder.BOTTOM); 187 iconsBorderPanel.setBorder(iconsTitleBorder); 188 189 JPanel vTop18Panel = new JPanel(verticalContentLayout); 190 vTop18Panel.add(multiSensorButton); 191 vTop18Panel.add(changeIconsButton); 192 vTop18Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop18Panel.getPreferredSize().height)); 193 iconsBorderPanel.add(vTop18Panel); 194 195 JPanel vTop20Panel = new JPanel(verticalContentLayout); 196 vTop20Panel.add(sensorButton); 197 vTop20Panel.add(sensorComboBox); 198 vTop20Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop20Panel.getPreferredSize().height)); 199 iconsBorderPanel.add(vTop20Panel); 200 201 JPanel vTop20tPanel = new JPanel(verticalContentLayout); 202 vTop20tPanel.add(turnoutButton); 203 vTop20tPanel.add(turnoutComboBox); 204 vTop20tPanel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop20tPanel.getPreferredSize().height)); 205 iconsBorderPanel.add(vTop20tPanel); 206 207 JPanel vTop19Panel = new JPanel(verticalContentLayout); 208 vTop19Panel.add(signalMastButton); 209 vTop19Panel.add(signalMastComboBox); 210 vTop19Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop19Panel.getPreferredSize().height)); 211 iconsBorderPanel.add(vTop19Panel); 212 213 JPanel vTop21Panel = new JPanel(verticalContentLayout); 214 vTop21Panel.add(signalButton); 215 vTop21Panel.add(signalHeadComboBox); 216 vTop21Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop21Panel.getPreferredSize().height)); 217 iconsBorderPanel.add(vTop21Panel); 218 219 JPanel vTop22Panel = new JPanel(verticalContentLayout); 220 vTop22Panel.add(iconLabelButton); 221 vTop22Panel.add(logixngButton); 222 vTop22Panel.add(shapeButton); 223 vTop22Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop22Panel.getPreferredSize().height)); 224 iconsBorderPanel.add(vTop22Panel); 225 226 JPanel vTop23Panel = new JPanel(verticalContentLayout); 227 vTop23Panel.add(audioButton); 228 vTop23Panel.add(textAudioComboBox); 229 vTop23Panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, vTop23Panel.getPreferredSize().height)); 230 iconsBorderPanel.add(vTop23Panel); 231 232 add(iconsBorderPanel); 233 add(Box.createVerticalGlue()); 234 235 JPanel bottomPanel = new JPanel(); 236 zoomPanel.setMaximumSize(new Dimension(Integer.MAX_VALUE, zoomPanel.getPreferredSize().height)); 237 locationPanel.setMaximumSize(new Dimension(Integer.MAX_VALUE, locationPanel.getPreferredSize().height)); 238 bottomPanel.add(zoomPanel); 239 bottomPanel.add(locationPanel); 240 bottomPanel.setMaximumSize(new Dimension(Integer.MAX_VALUE, bottomPanel.getPreferredSize().height)); 241 add(bottomPanel, BorderLayout.SOUTH); 242 } //layoutComponents 243 244 //initialize logging 245 //private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LayoutEditorVerticalToolBarPanel.class); 246}