]> source.dussan.org Git - gitblit.git/commitdiff
Change layout to BoxLayout (assuming window won't be resized) 16/head
authorJohn Crygier <john.crygier@aon.com>
Mon, 7 May 2012 15:49:24 +0000 (10:49 -0500)
committerJohn Crygier <john.crygier@aon.com>
Mon, 7 May 2012 15:49:24 +0000 (10:49 -0500)
src/com/gitblit/client/EditRepositoryDialog.java
src/com/gitblit/client/VerticalFlowLayout.java [deleted file]

index 6ad75c6c4ff6590b80c290443884ee29ac75fda1..cc22512330ebbf2422ca16210240b2ca9f2fb37c 100644 (file)
@@ -33,6 +33,8 @@ import java.util.HashSet;
 import java.util.List;\r
 import java.util.Set;\r
 \r
+import javax.swing.Box;\r
+import javax.swing.BoxLayout;\r
 import javax.swing.DefaultComboBoxModel;\r
 import javax.swing.ImageIcon;\r
 import javax.swing.JButton;\r
@@ -283,7 +285,8 @@ public class EditRepositoryDialog extends JDialog {
                postReceivePanel.add(postReceivePalette, BorderLayout.CENTER);\r
                postReceivePanel.add(postReceiveInherited, BorderLayout.WEST);\r
                \r
-               customFieldsPanel = new JPanel(new VerticalFlowLayout());\r
+               customFieldsPanel = new JPanel();\r
+               customFieldsPanel.setLayout(new BoxLayout(customFieldsPanel, BoxLayout.Y_AXIS));\r
                JScrollPane customFieldsScrollPane = new JScrollPane(customFieldsPanel);\r
                customFieldsScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);\r
                customFieldsScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);\r
@@ -565,6 +568,11 @@ public class EditRepositoryDialog extends JDialog {
                        \r
                        customFieldsPanel.add(newFieldPanel(fieldLabel, 250, textField));\r
                }\r
+               \r
+               if (customFields.size() < 14) {\r
+                       customFieldsPanel.add(Box.createVerticalGlue());\r
+                       customFieldsPanel.add(Box.createRigidArea(new Dimension(300, 300 - (customFields.size() * 22))));\r
+               }\r
        }\r
 \r
        /**\r
diff --git a/src/com/gitblit/client/VerticalFlowLayout.java b/src/com/gitblit/client/VerticalFlowLayout.java
deleted file mode 100644 (file)
index d799cb3..0000000
+++ /dev/null
@@ -1,496 +0,0 @@
-package com.gitblit.client;
-
-import java.awt.*;
-import java.awt.event.*;
-import javax.swing.*;
-
-/**
- * A flow layout arranges components in a directional flow, much
- * like lines of text in a paragraph. The flow direction is
- * determined by the container's <code>componentOrientation</code>
- * property and may be one of two values:
- * <ul>
- * <li><code>ComponentOrientation.TOP_TO_BOTTOM</code>
- * <li><code>ComponentOrientation.BOTTOM_TO_TOP</code>
- * </ul>
- * Flow layouts are typically used
- * to arrange buttons in a panel. It arranges buttons
- * horizontally until no more buttons fit on the same line.
- * The line alignment is determined by the <code>align</code>
- * property. The possible values are:
- * <ul>
- * <li>{@link #TOP TOP}
- * <li>{@link #BOTTOM BOTTOM}
- * <li>{@link #CENTER CENTER}
- * <li>{@link #LEADING LEADING}
- * <li>{@link #TRAILING TRAILING}
- * </ul>
- * <p>
- */
-public class VerticalFlowLayout implements LayoutManager, java.io.Serializable
-{
-    /**
-     * This value indicates that each row of components
-     * should be left-justified.
-     */
-    public static final int TOP     = 0;
-
-    /**
-     * This value indicates that each row of components
-     * should be centered.
-     */
-    public static final int CENTER    = 1;
-
-    /**
-     * This value indicates that each row of components
-     * should be right-justified.
-     */
-    public static final int BOTTOM     = 2;
-
-    /**
-     * <code>align</code> is the property that determines
-     * how each column distributes empty space.
-     * It can be one of the following three values:
-     * <ul>
-     * <code>TOP</code>
-     * <code>BOTTOM</code>
-     * <code>CENTER</code>
-     * </ul>
-     *
-     * @see #getAlignment
-     * @see #setAlignment
-     */
-    int align;     // This is the one we actually use
-
-    /**
-     * The flow layout manager allows a seperation of
-     * components with gaps.  The horizontal gap will
-     * specify the space between components and between
-     * the components and the borders of the
-     * <code>Container</code>.
-     *
-     * @see #getHgap()
-     * @see #setHgap(int)
-     */
-    int hgap;
-
-    /**
-     * The flow layout manager allows a seperation of
-     * components with gaps.  The vertical gap will
-     * specify the space between rows and between the
-     * the rows and the borders of the <code>Container</code>.
-     *
-     * @see #getHgap()
-     * @see #setHgap(int)
-     */
-    int vgap;
-
-    /**
-     * Constructs a new <code>VerticalFlowLayout</code> with a centered alignment and a
-     * default 5-unit horizontal and vertical gap.
-     */
-    public VerticalFlowLayout()
-    {
-        this(CENTER, 5, 5);
-    }
-
-    /**
-     * Constructs a new <code>VerticalFlowLayout</code> with the specified
-     * alignment and a default 5-unit horizontal and vertical gap.
-     * The value of the alignment argument must be one of
-     * <code>VerticalFlowLayout.TOP</code>, <code>VerticalFlowLayout.BOTTOM</code>,
-     * or <code>VerticalFlowLayout.CENTER</code>
-     * @param align the alignment value
-     */
-    public VerticalFlowLayout(int align)
-    {
-        this(align, 5, 5);
-    }
-
-    /**
-     * Creates a new flow layout manager with the indicated alignment
-     * and the indicated horizontal and vertical gaps.
-     * <p>
-     * The value of the alignment argument must be one of
-     * <code>VerticalFlowLayout.TOP</code>, <code>VerticalFlowLayout.BOTTOM</code>,
-     * or <code>VerticalFlowLayout.CENTER</code>.
-     * @param     align   the alignment value
-     * @param     hgap  the horizontal gap between components
-     *                   and between the components and the
-     *                   borders of the <code>Container</code>
-     * @param     vgap  the vertical gap between components
-     *                   and between the components and the
-     *                   borders of the <code>Container</code>
-     */
-    public VerticalFlowLayout(int align, int hgap, int vgap)
-    {
-        this.hgap = hgap;
-        this.vgap = vgap;
-        setAlignment(align);
-    }
-
-    /**
-     * Gets the alignment for this layout.
-     * Possible values are <code>VerticalFlowLayout.TOP</code>,
-     * <code>VerticalFlowLayout.BOTTOM</code> or <code>VerticalFlowLayout.CENTER</code>,
-     * @return   the alignment value for this layout
-     * @see     java.awt.VerticalFlowLayout#setAlignment
-     * @since     JDK1.1
-     */
-    public int getAlignment()
-    {
-        return align;
-    }
-
-    /**
-     * Sets the alignment for this layout. Possible values are
-     * <ul>
-     * <li><code>VerticalFlowLayout.TOP</code>
-     * <li><code>VerticalFlowLayout.BOTTOM</code>
-     * <li><code>VerticalFlowLayout.CENTER</code>
-     * </ul>
-     * @param     align one of the alignment values shown above
-     * @see     #getAlignment()
-     * @since     JDK1.1
-     */
-    public void setAlignment(int align)
-    {
-        this.align = align;
-    }
-
-    /**
-     * Gets the horizontal gap between components
-     * and between the components and the borders
-     * of the <code>Container</code>
-     *
-     * @return   the horizontal gap between components
-     *           and between the components and the borders
-     *           of the <code>Container</code>
-     * @see     java.awt.VerticalFlowLayout#setHgap
-     * @since     JDK1.1
-     */
-    public int getHgap() {
-        return hgap;
-    }
-
-    /**
-     * Sets the horizontal gap between components and
-     * between the components and the borders of the
-     * <code>Container</code>.
-     *
-     * @param hgap the horizontal gap between components
-     *           and between the components and the borders
-     *           of the <code>Container</code>
-     * @see     java.awt.VerticalFlowLayout#getHgap
-     * @since     JDK1.1
-     */
-    public void setHgap(int hgap) {
-        this.hgap = hgap;
-    }
-
-    /**
-     * Gets the vertical gap between components and
-     * between the components and the borders of the
-     * <code>Container</code>.
-     *
-     * @return   the vertical gap between components
-     *           and between the components and the borders
-     *           of the <code>Container</code>
-     * @see     java.awt.VerticalFlowLayout#setVgap
-     * @since     JDK1.1
-     */
-    public int getVgap() {
-        return vgap;
-    }
-
-    /**
-     * Sets the vertical gap between components and between
-     * the components and the borders of the <code>Container</code>.
-     *
-     * @param vgap the vertical gap between components
-     *           and between the components and the borders
-     *           of the <code>Container</code>
-     * @see     java.awt.VerticalFlowLayout#getVgap
-     */
-    public void setVgap(int vgap) {
-        this.vgap = vgap;
-    }
-
-    /**
-     * Adds the specified component to the layout.
-     * Not used by this class.
-     * @param name the name of the component
-     * @param comp the component to be added
-     */
-    public void addLayoutComponent(String name, Component comp) {
-    }
-
-    /**
-     * Removes the specified component from the layout.
-     * Not used by this class.
-     * @param comp the component to remove
-     * @see    java.awt.Container#removeAll
-     */
-    public void removeLayoutComponent(Component comp) {
-    }
-
-    /**
-     * Returns the preferred dimensions for this layout given the
-     * <i>visible</i> components in the specified target container.
-     *
-     * @param target the container that needs to be laid out
-     * @return  the preferred dimensions to lay out the
-     *          subcomponents of the specified container
-     * @see Container
-     * @see #minimumLayoutSize
-     * @see    java.awt.Container#getPreferredSize
-     */
-    public Dimension preferredLayoutSize(Container target)
-    {
-    synchronized (target.getTreeLock())
-    {
-        Dimension dim = new Dimension(0, 0);
-        int nmembers = target.getComponentCount();
-        boolean firstVisibleComponent = true;
-
-        for (int i = 0 ; i < nmembers ; i++)
-        {
-            Component m = target.getComponent(i);
-
-            if (m.isVisible())
-            {
-                Dimension d = m.getPreferredSize();
-                dim.width = Math.max(dim.width, d.width);
-
-                if (firstVisibleComponent)
-                {
-                    firstVisibleComponent = false;
-                }
-                else
-                {
-                    dim.height += vgap;
-                }
-
-                dim.height += d.height;
-            }
-        }
-
-        Insets insets = target.getInsets();
-        dim.width += insets.left + insets.right + hgap*2;
-        dim.height += insets.top + insets.bottom + vgap*2;
-        return dim;
-    }
-    }
-
-    /**
-     * Returns the minimum dimensions needed to layout the <i>visible</i>
-     * components contained in the specified target container.
-     * @param target the container that needs to be laid out
-     * @return  the minimum dimensions to lay out the
-     *          subcomponents of the specified container
-     * @see #preferredLayoutSize
-     * @see    java.awt.Container
-     * @see    java.awt.Container#doLayout
-     */
-    public Dimension minimumLayoutSize(Container target)
-    {
-    synchronized (target.getTreeLock())
-    {
-        Dimension dim = new Dimension(0, 0);
-        int nmembers = target.getComponentCount();
-        boolean firstVisibleComponent = true;
-
-        for (int i = 0 ; i < nmembers ; i++)
-        {
-            Component m = target.getComponent(i);
-            if (m.isVisible())
-            {
-                Dimension d = m.getMinimumSize();
-                dim.width = Math.max(dim.width, d.width);
-
-                if (firstVisibleComponent)
-                {
-                    firstVisibleComponent = false;
-                }
-                else
-                {
-                    dim.height += vgap;
-                }
-
-                dim.height += d.height;
-            }
-        }
-
-
-        Insets insets = target.getInsets();
-        dim.width += insets.left + insets.right + hgap*2;
-        dim.height += insets.top + insets.bottom + vgap*2;
-        return dim;
-    }
-    }
-
-    /**
-     * Lays out the container. This method lets each
-     * <i>visible</i> component take
-     * its preferred size by reshaping the components in the
-     * target container in order to satisfy the alignment of
-     * this <code>VerticalFlowLayout</code> object.
-     *
-     * @param target the specified component being laid out
-     * @see Container
-     * @see    java.awt.Container#doLayout
-     */
-    public void layoutContainer(Container target)
-    {
-    synchronized (target.getTreeLock())
-    {
-        Insets insets = target.getInsets();
-        int maxHeight = target.getSize().height - (insets.top + insets.bottom + vgap*2);
-        int nmembers = target.getComponentCount();
-        int x = insets.left + hgap;
-        int y = 0;
-        int columnWidth = 0;
-        int start = 0;
-
-        boolean ttb = target.getComponentOrientation().isLeftToRight();
-
-        for (int i = 0 ; i < nmembers ; i++)
-        {
-            Component m = target.getComponent(i);
-
-            if (m.isVisible())
-            {
-                Dimension d = m.getPreferredSize();
-                m.setSize(d.width, d.height);
-
-                if ((y == 0) || ((y + d.height) <= maxHeight))
-                {
-                    if (y > 0)
-                    {
-                        y += vgap;
-                    }
-
-                    y += d.height;
-                    columnWidth = Math.max(columnWidth, d.width);
-                }
-                else
-                {
-                    moveComponents(target, x, insets.top + vgap, columnWidth, maxHeight - y, start, i, ttb);
-                    y = d.height;
-                    x += hgap + columnWidth;
-                    columnWidth = d.width;
-                    start = i;
-                }
-            }
-        }
-
-        moveComponents(target, x, insets.top + vgap, columnWidth, maxHeight - y, start, nmembers, ttb);
-    }
-    }
-
-    /**
-     * Centers the elements in the specified row, if there is any slack.
-     * @param target the component which needs to be moved
-     * @param x the x coordinate
-     * @param y the y coordinate
-     * @param width the width dimensions
-     * @param height the height dimensions
-     * @param columnStart the beginning of the column
-     * @param columnEnd the the ending of the column
-     */
-    private void moveComponents(
-        Container target, int x, int y, int width, int height, int columnStart, int columnEnd, boolean ttb)
-    {
-        switch (align)
-        {
-            case TOP:
-                y += ttb ? 0 : height;
-                break;
-            case CENTER:
-                y += height / 2;
-                break;
-            case BOTTOM:
-                y += ttb ? height : 0;
-                break;
-        }
-
-        for (int i = columnStart ; i < columnEnd ; i++)
-        {
-            Component m = target.getComponent(i);
-
-            if (m.isVisible())
-            {
-                int cx;
-                cx = x + (width - m.getSize().width) / 2;
-
-                if (ttb)
-                {
-                    m.setLocation(cx, y);
-                }
-                else
-                {
-                    m.setLocation(cx, target.getSize().height - y - m.getSize().height);
-                }
-
-                y += m.getSize().height + vgap;
-            }
-        }
-    }
-
-    /**
-     * Returns a string representation of this <code>VerticalFlowLayout</code>
-     * object and its values.
-     * @return   a string representation of this layout
-     */
-    public String toString()
-    {
-        String str = "";
-
-        switch (align)
-        {
-            case TOP:    str = ",align=top"; break;
-            case CENTER: str = ",align=center"; break;
-            case BOTTOM: str = ",align=bottom"; break;
-        }
-
-        return getClass().getName() + "[hgap=" + hgap + ",vgap=" + vgap + str + "]";
-    }
-
-
-    public static void main(String[] args)
-    {
-        JPanel main = new JPanel( new BorderLayout() );
-
-        final JPanel buttons = new JPanel(new VerticalFlowLayout() );
-//      buttons.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
-        main.add(buttons, BorderLayout.CENTER);
-
-        for (int i = 0; i < 7; i++)
-        {
-            buttons.add( new JRadioButton("button " + i) );
-        }
-
-        JButton button = new JButton("Add Radio Button");
-        main.add(button, BorderLayout.SOUTH);
-        button.addActionListener( new ActionListener()
-        {
-            private int i = 8;
-
-            public void actionPerformed(ActionEvent e)
-            {
-                buttons.add( new JRadioButton("button R Us" + i++) );
-                buttons.revalidate();
-//              pack();
-            }
-        });
-
-        JFrame frame = new JFrame();
-        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-        frame.add(main);
-        frame.setSize(300, 300);
-        frame.setLocationRelativeTo(null);
-        frame.setVisible(true);
-    }
-
-
-}
\ No newline at end of file