001    /*
002     * Copyright 2002-2004 the original author or authors.
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005     * use this file except in compliance with the License. You may obtain a copy of
006     * the License at
007     *
008     * http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012     * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013     * License for the specific language governing permissions and limitations under
014     * the License.
015     */
016    package org.springframework.richclient.layout;
017    
018    import java.awt.Component;
019    import java.awt.GridBagConstraints;
020    import java.awt.GridBagLayout;
021    
022    import javax.swing.JLabel;
023    import javax.swing.JPanel;
024    
025    import junit.framework.TestCase;
026    
027    public class GridBagLayoutBuilderTests extends TestCase {
028        //    static {
029        //        Logger.getLogger(GridBagLayoutBuilder.class).setLevel(Level.DEBUG);
030        //    }
031    
032        public void testAppend1() throws Exception {
033            GridBagLayoutBuilder builder = new GridBagLayoutBuilder();
034            builder.append(new JPanel());
035            builder.append(new JPanel(), 2, 2);
036            builder.append(new JPanel());
037            builder.nextLine();
038            builder.append(new JPanel()).append(new JPanel()).nextLine();
039            builder.append(new JPanel()).append(new JPanel()).append(new JPanel()).append(new JPanel()).nextLine();
040    
041            JPanel panel = builder.getPanel();
042            final Component[] comps = panel.getComponents();
043            final GridBagLayout layout = ((GridBagLayout)panel.getLayout());
044    
045            check(layout.getConstraints(comps[0]), 0, 0, 1, 1, false, false);
046            check(layout.getConstraints(comps[1]), 1, 0, 2, 2, false, false);
047            check(layout.getConstraints(comps[2]), 3, 0, 1, 1, false, false);
048            check(layout.getConstraints(comps[3]), 0, 1, 1, 1, false, false);
049            check(layout.getConstraints(comps[4]), 3, 1, 1, 1, false, false);
050            check(layout.getConstraints(comps[5]), 0, 2, 1, 1, false, false);
051            check(layout.getConstraints(comps[6]), 1, 2, 1, 1, false, false);
052            check(layout.getConstraints(comps[7]), 2, 2, 1, 1, false, false);
053            check(layout.getConstraints(comps[8]), 3, 2, 1, 1, false, false);
054        }
055    
056        public void testAppend2() throws Exception {
057            GridBagLayoutBuilder builder = new GridBagLayoutBuilder();
058            builder.append(new JPanel()).append(new JPanel(), 2, 1).append(new JPanel()).nextLine();
059            builder.append(new JPanel()).append(new JPanel()).append(new JPanel()).append(new JPanel()).nextLine();
060    
061            JPanel panel = builder.getPanel();
062            final Component[] comps = panel.getComponents();
063            final GridBagLayout layout = ((GridBagLayout)panel.getLayout());
064    
065            check(layout.getConstraints(comps[0]), 0, 0, 1, 1, false, false);
066            check(layout.getConstraints(comps[1]), 1, 0, 2, 1, false, false);
067            check(layout.getConstraints(comps[2]), 3, 0, 1, 1, false, false);
068            check(layout.getConstraints(comps[3]), 0, 1, 1, 1, false, false);
069            check(layout.getConstraints(comps[4]), 1, 1, 1, 1, false, false);
070            check(layout.getConstraints(comps[5]), 2, 1, 1, 1, false, false);
071            check(layout.getConstraints(comps[6]), 3, 1, 1, 1, false, false);
072        }
073    
074        private void check(GridBagConstraints gbc, final int x, final int y, final int width, final int height,
075                boolean expandX, boolean expandY) {
076            assertEquals(x, gbc.gridx);
077            assertEquals(y, gbc.gridy);
078            assertEquals(width, gbc.gridwidth);
079            assertEquals(height, gbc.gridheight);
080            assertEquals(expandX, gbc.weightx > 0.0);
081            assertEquals(expandY, gbc.weighty > 0.0);
082        }
083    
084        public void testAppendLabeledField() throws Exception {
085            GridBagLayoutBuilder builder = new GridBagLayoutBuilder();
086    
087            builder.appendLabeledField(new JLabel("0"), new JLabel("3"), LabelOrientation.TOP, 1, 2, true, true);
088            builder.appendLabeledField(new JLabel("1"), new JLabel("2"), LabelOrientation.LEFT, 2, 1, true, false);
089            builder.nextLine();
090    
091            builder.appendLabeledField(new JLabel("5"), new JLabel("4"), LabelOrientation.BOTTOM, 3, 1, true, false);
092            builder.nextLine();
093            builder.nextLine();
094    
095            builder.appendLabeledField(new JLabel("7"), new JLabel("6"), LabelOrientation.RIGHT, 3, 1, true, false);
096            builder.nextLine();
097    
098            JPanel panel = builder.getPanel();
099            final Component[] comps = panel.getComponents();
100            final GridBagLayout layout = ((GridBagLayout)panel.getLayout());
101    
102            check(layout.getConstraints(comps[0]), 0, 0, 1, 1, true, false);
103            check(layout.getConstraints(comps[1]), 1, 0, 1, 1, false, false);
104            check(layout.getConstraints(comps[2]), 2, 0, 2, 1, true, false);
105            check(layout.getConstraints(comps[3]), 0, 1, 1, 2, true, true);
106            check(layout.getConstraints(comps[4]), 1, 1, 3, 1, true, false);
107            check(layout.getConstraints(comps[5]), 1, 2, 3, 1, true, false);
108            check(layout.getConstraints(comps[6]), 0, 3, 3, 1, true, false);
109            check(layout.getConstraints(comps[7]), 3, 3, 1, 1, false, false);
110        }
111    
112    }