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}