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