diff options
author | John Crygier <john.crygier@aon.com> | 2012-05-07 10:49:24 -0500 |
---|---|---|
committer | John Crygier <john.crygier@aon.com> | 2012-05-07 10:49:24 -0500 |
commit | 022ebb4010ecf91ef5049f0386ef398f1d7fb32b (patch) | |
tree | 0331d591ae074354fdec8bd7af3afa5e347ef3bc | |
parent | 0e6eace75d39ef300891b529d471617b5da8cfaa (diff) | |
download | gitblit-022ebb4010ecf91ef5049f0386ef398f1d7fb32b.tar.gz gitblit-022ebb4010ecf91ef5049f0386ef398f1d7fb32b.zip |
Change layout to BoxLayout (assuming window won't be resized)
-rw-r--r-- | src/com/gitblit/client/EditRepositoryDialog.java | 10 | ||||
-rw-r--r-- | src/com/gitblit/client/VerticalFlowLayout.java | 496 |
2 files changed, 9 insertions, 497 deletions
diff --git a/src/com/gitblit/client/EditRepositoryDialog.java b/src/com/gitblit/client/EditRepositoryDialog.java index 6ad75c6c..cc225123 100644 --- a/src/com/gitblit/client/EditRepositoryDialog.java +++ b/src/com/gitblit/client/EditRepositoryDialog.java @@ -33,6 +33,8 @@ import java.util.HashSet; import java.util.List;
import java.util.Set;
+import javax.swing.Box;
+import javax.swing.BoxLayout;
import javax.swing.DefaultComboBoxModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
@@ -283,7 +285,8 @@ public class EditRepositoryDialog extends JDialog { postReceivePanel.add(postReceivePalette, BorderLayout.CENTER);
postReceivePanel.add(postReceiveInherited, BorderLayout.WEST);
- customFieldsPanel = new JPanel(new VerticalFlowLayout());
+ customFieldsPanel = new JPanel();
+ customFieldsPanel.setLayout(new BoxLayout(customFieldsPanel, BoxLayout.Y_AXIS));
JScrollPane customFieldsScrollPane = new JScrollPane(customFieldsPanel);
customFieldsScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
customFieldsScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
@@ -565,6 +568,11 @@ public class EditRepositoryDialog extends JDialog { customFieldsPanel.add(newFieldPanel(fieldLabel, 250, textField));
}
+
+ if (customFields.size() < 14) {
+ customFieldsPanel.add(Box.createVerticalGlue());
+ customFieldsPanel.add(Box.createRigidArea(new Dimension(300, 300 - (customFields.size() * 22))));
+ }
}
/**
diff --git a/src/com/gitblit/client/VerticalFlowLayout.java b/src/com/gitblit/client/VerticalFlowLayout.java deleted file mode 100644 index d799cb36..00000000 --- a/src/com/gitblit/client/VerticalFlowLayout.java +++ /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 |