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}