com.jgoodies.forms.factories.ButtonBarFactory Maven / Gradle / Ivy
Show all versions of forms Show documentation
/*
* Copyright (c) 2002-2008 JGoodies Karsten Lentzsch. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* o Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* o Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* o Neither the name of JGoodies Karsten Lentzsch nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.jgoodies.forms.factories;
import javax.swing.JButton;
import javax.swing.JPanel;
import com.jgoodies.forms.builder.ButtonBarBuilder;
/**
* A factory class that consists only of static methods to build frequently used
* button bars. Utilizes the {@link com.jgoodies.forms.builder.ButtonBarBuilder}
* that in turn uses the {@link com.jgoodies.forms.layout.FormLayout}
* to lay out the bars.
*
* The button bars returned by this builder comply with popular UI style guides.
*
* @author Karsten Lentzsch
* @version $Revision: 1.5 $
*
* @see com.jgoodies.forms.builder.ButtonBarBuilder
* @see com.jgoodies.forms.util.LayoutStyle
*/
public final class ButtonBarFactory {
private ButtonBarFactory() {
// Suppresses default constructor, ensuring non-instantiability.
}
// General Purpose Factory Methods: Left Aligned ************************
/**
* Builds and returns a left aligned bar with one button.
*
* @param button1 the first button to add
* @return a button bar with the given button
*/
public static JPanel buildLeftAlignedBar(JButton button1) {
return buildLeftAlignedBar(new JButton[]{
button1
});
}
/**
* Builds and returns a left aligned bar with two buttons.
*
* @param button1 the first button to add
* @param button2 the second button to add
* @return a button bar with the given buttons
*/
public static JPanel buildLeftAlignedBar(
JButton button1, JButton button2) {
return buildLeftAlignedBar(new JButton[]{
button1, button2
},
true);
}
/**
* Builds and returns a left aligned bar with three buttons.
*
* @param button1 the first button to add
* @param button2 the second button to add
* @param button3 the third button to add
* @return a button bar with the given buttons
*/
public static JPanel buildLeftAlignedBar(
JButton button1, JButton button2, JButton button3) {
return buildLeftAlignedBar(new JButton[]{
button1, button2, button3
},
true);
}
/**
* Builds and returns a left aligned bar with four buttons.
*
* @param button1 the first button to add
* @param button2 the second button to add
* @param button3 the third button to add
* @param button4 the fourth button to add
* @return a button bar with the given buttons
*/
public static JPanel buildLeftAlignedBar(
JButton button1, JButton button2, JButton button3, JButton button4) {
return buildLeftAlignedBar(new JButton[]{
button1, button2, button3, button4
},
true);
}
/**
* Builds and returns a left aligned bar with five buttons.
*
* @param button1 the first button to add
* @param button2 the second button to add
* @param button3 the third button to add
* @param button4 the fourth button to add
* @param button5 the fifth button to add
* @return a button bar with the given buttons
*/
public static JPanel buildLeftAlignedBar(
JButton button1, JButton button2, JButton button3,
JButton button4, JButton button5) {
return buildLeftAlignedBar(new JButton[]{
button1, button2, button3, button4, button5
},
true);
}
/**
* Builds and returns a left aligned button bar with the given buttons.
*
* @param buttons an array of buttons to add
* @return a left aligned button bar with the given buttons
*/
public static JPanel buildLeftAlignedBar(JButton[] buttons) {
ButtonBarBuilder builder = new ButtonBarBuilder();
builder.addGriddedButtons(buttons);
builder.addGlue();
return builder.getPanel();
}
/**
* Builds and returns a left aligned button bar with the given buttons.
*
* @param buttons an array of buttons to add
* @param leftToRightButtonOrder the order in which the buttons to add
* @return a left aligned button bar with the given buttons
*/
public static JPanel buildLeftAlignedBar(
JButton[] buttons,
boolean leftToRightButtonOrder) {
ButtonBarBuilder builder = new ButtonBarBuilder();
builder.setLeftToRightButtonOrder(leftToRightButtonOrder);
builder.addGriddedButtons(buttons);
builder.addGlue();
return builder.getPanel();
}
// General Purpose Factory Methods: Centered ****************************
/**
* Builds and returns a centered bar with one button.
*
* @param button1 the first button to add
* @return a button bar with the given button
*/
public static JPanel buildCenteredBar(JButton button1) {
return buildCenteredBar(new JButton[]{
button1
});
}
/**
* Builds and returns a centered bar with two buttons.
*
* @param button1 the first button to add
* @param button2 the second button to add
* @return a button bar with the given buttons
*/
public static JPanel buildCenteredBar(
JButton button1, JButton button2) {
return buildCenteredBar(new JButton[]{
button1, button2
});
}
/**
* Builds and returns a centered bar with three buttons.
*
* @param button1 the first button to add
* @param button2 the second button to add
* @param button3 the third button to add
* @return a button bar with the given buttons
*/
public static JPanel buildCenteredBar(
JButton button1, JButton button2, JButton button3) {
return buildCenteredBar(new JButton[]{
button1, button2, button3
});
}
/**
* Builds and returns a centered bar with four buttons.
*
* @param button1 the first button to add
* @param button2 the second button to add
* @param button3 the third button to add
* @param button4 the fourth button to add
* @return a button bar with the given buttons
*/
public static JPanel buildCenteredBar(
JButton button1, JButton button2, JButton button3, JButton button4) {
return buildCenteredBar(new JButton[]{
button1, button2, button3, button4
});
}
/**
* Builds and returns a centered bar with five buttons.
*
* @param button1 the first button to add
* @param button2 the second button to add
* @param button3 the third button to add
* @param button4 the fourth button to add
* @param button5 the fifth button to add
* @return a button bar with the given buttons
*/
public static JPanel buildCenteredBar(
JButton button1, JButton button2, JButton button3,
JButton button4, JButton button5) {
return buildCenteredBar(new JButton[]{
button1, button2, button3, button4, button5
});
}
/**
* Builds and returns a centered button bar with the given buttons.
*
* @param buttons an array of buttons to add
* @return a centered button bar with the given buttons
*/
public static JPanel buildCenteredBar(JButton[] buttons) {
ButtonBarBuilder builder = new ButtonBarBuilder();
builder.addGlue();
builder.addGriddedButtons(buttons);
builder.addGlue();
return builder.getPanel();
}
/**
* Builds and returns a filled bar with one button.
*
* @param button1 the first button to add
* @return a button bar with the given button
*/
public static JPanel buildGrowingBar(JButton button1) {
return buildGrowingBar(new JButton[]{
button1
});
}
/**
* Builds and returns a filled button bar with two buttons.
*
* @param button1 the first button to add
* @param button2 the second button to add
* @return a button bar with the given buttons
*/
public static JPanel buildGrowingBar(
JButton button1, JButton button2) {
return buildGrowingBar(new JButton[]{
button1, button2
});
}
/**
* Builds and returns a filled bar with three buttons.
*
* @param button1 the first button to add
* @param button2 the second button to add
* @param button3 the third button to add
* @return a button bar with the given buttons
*/
public static JPanel buildGrowingBar(
JButton button1, JButton button2, JButton button3) {
return buildGrowingBar(new JButton[]{
button1, button2, button3
});
}
/**
* Builds and returns a filled bar with four buttons.
*
* @param button1 the first button to add
* @param button2 the second button to add
* @param button3 the third button to add
* @param button4 the fourth button to add
* @return a button bar with the given buttons
*/
public static JPanel buildGrowingBar(
JButton button1, JButton button2, JButton button3, JButton button4) {
return buildGrowingBar(new JButton[]{
button1, button2, button3, button4
});
}
/**
* Builds and returns a filled bar with five buttons.
*
* @param button1 the first button to add
* @param button2 the second button to add
* @param button3 the third button to add
* @param button4 the fourth button to add
* @param button5 the fifth button to add
* @return a button bar with the given buttons
*/
public static JPanel buildGrowingBar(
JButton button1, JButton button2, JButton button3,
JButton button4, JButton button5) {
return buildGrowingBar(new JButton[]{
button1, button2, button3, button4, button5
});
}
/**
* Builds and returns a button bar with the given buttons. All button
* columns will grow with the bar.
*
* @param buttons an array of buttons to add
* @return a filled button bar with the given buttons
*/
public static JPanel buildGrowingBar(JButton[] buttons) {
ButtonBarBuilder builder = new ButtonBarBuilder();
builder.addGriddedGrowingButtons(buttons);
return builder.getPanel();
}
// General Purpose Factory Methods: Right Aligned ***********************
/**
* Builds and returns a right aligned bar with one button.
*
* @param button1 the first button to add
* @return a button bar with the given button
*/
public static JPanel buildRightAlignedBar(JButton button1) {
return buildRightAlignedBar(new JButton[]{
button1
});
}
/**
* Builds and returns a right aligned bar with two buttons.
*
* @param button1 the first button to add
* @param button2 the second button to add
* @return a button bar with the given buttons
*/
public static JPanel buildRightAlignedBar(
JButton button1, JButton button2) {
return buildRightAlignedBar(new JButton[]{
button1, button2
},
true);
}
/**
* Builds and returns a right aligned bar with three buttons.
*
* @param button1 the first button to add
* @param button2 the second button to add
* @param button3 the third button to add
* @return a button bar with the given buttons
*/
public static JPanel buildRightAlignedBar(
JButton button1, JButton button2, JButton button3) {
return buildRightAlignedBar(new JButton[]{
button1, button2, button3
},
true);
}
/**
* Builds and returns a right aligned bar with four buttons.
*
* @param button1 the first button to add
* @param button2 the second button to add
* @param button3 the third button to add
* @param button4 the fourth button to add
* @return a button bar with the given buttons
*/
public static JPanel buildRightAlignedBar(
JButton button1, JButton button2, JButton button3, JButton button4) {
return buildRightAlignedBar(new JButton[]{
button1, button2, button3, button4
},
true);
}
/**
* Builds and returns a right aligned bar with five buttons.
*
* @param button1 the first button to add
* @param button2 the second button to add
* @param button3 the third button to add
* @param button4 the fourth button to add
* @param button5 the fifth button to add
* @return a button bar with the given buttons
*/
public static JPanel buildRightAlignedBar(
JButton button1, JButton button2, JButton button3,
JButton button4, JButton button5) {
return buildRightAlignedBar(new JButton[]{
button1, button2, button3, button4, button5
},
true);
}
/**
* Builds and returns a right aligned button bar with the given buttons.
*
* @param buttons an array of buttons to add
* @return a right aligned button bar with the given buttons
*/
public static JPanel buildRightAlignedBar(JButton[] buttons) {
ButtonBarBuilder builder = new ButtonBarBuilder();
builder.addGlue();
builder.addGriddedButtons(buttons);
return builder.getPanel();
}
/**
* Builds and returns a right aligned button bar with the given buttons.
*
* @param buttons an array of buttons to add
* @param leftToRightButtonOrder the order in which the buttons to add
* @return a right aligned button bar with the given buttons
*/
public static JPanel buildRightAlignedBar(
JButton[] buttons,
boolean leftToRightButtonOrder) {
ButtonBarBuilder builder = new ButtonBarBuilder();
builder.setLeftToRightButtonOrder(leftToRightButtonOrder);
builder.addGlue();
builder.addGriddedButtons(buttons);
return builder.getPanel();
}
// Right Aligned Button Bars with Help in the Left **********************
/**
* Builds and returns a right aligned bar with help and one button.
*
* @param help the help button to add on the left side
* @param button1 the first button to add
* @return a button bar with the given buttons
*/
public static JPanel buildHelpBar(JButton help,
JButton button1) {
return buildHelpBar(help, new JButton[]{
button1
});
}
/**
* Builds and returns a right aligned bar with help and two buttons.
*
* @param help the help button to add on the left side
* @param button1 the first button to add
* @param button2 the second button to add
* @return a button bar with the given buttons
*/
public static JPanel buildHelpBar(JButton help,
JButton button1, JButton button2) {
return buildHelpBar(help, new JButton[]{
button1, button2
});
}
/**
* Builds and returns a right aligned bar with help and three buttons.
*
* @param help the help button to add on the left side
* @param button1 the first button to add
* @param button2 the second button to add
* @param button3 the third button to add
* @return a button bar with the given buttons
*/
public static JPanel buildHelpBar(JButton help,
JButton button1, JButton button2, JButton button3) {
return buildHelpBar(help, new JButton[]{
button1, button2, button3
});
}
/**
* Builds and returns a right aligned bar with help and four buttons.
*
* @param help the help button to add on the left side
* @param button1 the first button to add
* @param button2 the second button to add
* @param button3 the third button to add
* @param button4 the fourth button to add
* @return a button bar with the given buttons
*/
public static JPanel buildHelpBar(JButton help,
JButton button1, JButton button2, JButton button3, JButton button4) {
return buildHelpBar(help, new JButton[]{
button1, button2, button3, button4
});
}
/**
* Builds and returns a right aligned bar with help and other buttons.
*
* @param help the help button to add on the left side
* @param buttons an array of buttons to add
* @return a right aligned button bar with the given buttons
*/
public static JPanel buildHelpBar(JButton help, JButton[] buttons) {
ButtonBarBuilder builder = new ButtonBarBuilder();
builder.addGridded(help);
builder.addRelatedGap();
builder.addGlue();
builder.addGriddedButtons(buttons);
return builder.getPanel();
}
// Popular Dialog Button Bars: No Help **********************************
/**
* Builds and returns a button bar with Close.
*
* @param close the Close button
* @return a panel that contains the button(s)
*/
public static JPanel buildCloseBar(JButton close) {
return buildRightAlignedBar(close);
}
/**
* Builds and returns a button bar with OK.
*
* @param ok the OK button
* @return a panel that contains the button(s)
*/
public static JPanel buildOKBar(JButton ok) {
return buildRightAlignedBar(ok);
}
/**
* Builds and returns a button bar with OK and Cancel.
*
* @param ok the OK button
* @param cancel the Cancel button
* @return a panel that contains the button(s)
*/
public static JPanel buildOKCancelBar(
JButton ok, JButton cancel) {
return buildRightAlignedBar(new JButton[] {ok, cancel});
}
/**
* Builds and returns a button bar with OK, Cancel and Apply.
*
* @param ok the OK button
* @param cancel the Cancel button
* @param apply the Apply button
* @return a panel that contains the button(s)
*/
public static JPanel buildOKCancelApplyBar(
JButton ok, JButton cancel, JButton apply) {
return buildRightAlignedBar(new JButton[] {ok, cancel, apply});
}
// Popular Dialog Button Bars: Help in the Left *************************
/**
* Builds and returns a button bar with
* Help and Close.
*
* @param help the Help button
* @param close the Close button
* @return a panel that contains the button(s)
*/
public static JPanel buildHelpCloseBar(
JButton help, JButton close) {
return buildHelpBar(help, close);
}
/**
* Builds and returns a button bar with
* Help and OK.
*
* @param help the Help button
* @param ok the OK button
* @return a panel that contains the button(s)
*/
public static JPanel buildHelpOKBar(
JButton help, JButton ok) {
return buildHelpBar(help, ok);
}
/**
* Builds and returns a button bar with
* Help, OK and Cancel.
*
* @param help the Help button
* @param ok the OK button
* @param cancel the Cancel button
* @return a panel that contains the button(s)
*/
public static JPanel buildHelpOKCancelBar(
JButton help, JButton ok, JButton cancel) {
return buildHelpBar(help, ok, cancel);
}
/**
* Builds and returns a button bar with
* Help, OK, Cancel and Apply.
*
* @param help the Help button
* @param ok the OK button
* @param cancel the Cancel button
* @param apply the Apply button
* @return a panel that contains the button(s)
*/
public static JPanel buildHelpOKCancelApplyBar(
JButton help, JButton ok, JButton cancel, JButton apply) {
return buildHelpBar(help, ok, cancel, apply);
}
// Popular Dialog Button Bars: Help in the Right Hand Side **************
/**
* Builds and returns a button bar with
* Close and Help.
*
* @param close the Close button
* @param help the Help button
* @return a panel that contains the button(s)
*/
public static JPanel buildCloseHelpBar(
JButton close, JButton help) {
return buildRightAlignedBar(new JButton[] {close, help});
}
/**
* Builds and returns a button bar with
* OK and Help.
*
* @param ok the OK button
* @param help the Help button
* @return a panel that contains the button(s)
*/
public static JPanel buildOKHelpBar(
JButton ok, JButton help) {
return buildRightAlignedBar(new JButton[] {ok, help});
}
/**
* Builds and returns a button bar with
* OK, Cancel, and Help.
*
* @param ok the OK button
* @param cancel the Cancel button
* @param help the Help button
* @return a panel that contains the button(s)
*/
public static JPanel buildOKCancelHelpBar(
JButton ok, JButton cancel, JButton help) {
return buildRightAlignedBar(new JButton[] {ok, cancel, help});
}
/**
* Builds and returns a button bar with
* OK, Cancel, Apply and Help.
*
* @param ok the OK button
* @param cancel the Cancel button
* @param apply the Apply button
* @param help the Help button
* @return a panel that contains the button(s)
*/
public static JPanel buildOKCancelApplyHelpBar(
JButton ok, JButton cancel, JButton apply, JButton help) {
return buildRightAlignedBar(new JButton[] {ok, cancel, apply, help});
}
// Add..., Remove *******************************************************
/**
* Builds and returns a left aligned button bar with
* Add and Remove.
*
* @param add the Add button
* @param remove the Remove button
* @return a panel that contains the button(s)
*/
public static JPanel buildAddRemoveLeftBar(
JButton add, JButton remove) {
return buildLeftAlignedBar(add, remove);
}
/**
* Builds and returns a filled button bar with Add and Remove.
*
* @param add the Add button
* @param remove the Remove button
* @return a panel that contains the button(s)
*/
public static JPanel buildAddRemoveBar(
JButton add, JButton remove) {
return buildGrowingBar(add, remove);
}
/**
* Builds and returns a right aligned button bar with
* Add and Remove.
*
* @param add the Add button
* @param remove the Remove button
* @return a panel that contains the button(s)
*/
public static JPanel buildAddRemoveRightBar(
JButton add, JButton remove) {
return buildRightAlignedBar(add, remove);
}
// Add..., Remove, Properties... ****************************************
/**
* Builds and returns a left aligned button bar with
* Add, Remove, and Properties.
*
* @param add the Add button
* @param remove the Remove button
* @param properties the Properties button
* @return a panel that contains the button(s)
*/
public static JPanel buildAddRemovePropertiesLeftBar(
JButton add, JButton remove, JButton properties) {
return buildLeftAlignedBar(add, remove, properties);
}
/**
* Builds and returns a filled button bar with Add, Remove, and
* Properties.
*
* @param add the Add button
* @param remove the Remove button
* @param properties the Properties button
* @return a panel that contains the button(s)
*/
public static JPanel buildAddRemovePropertiesBar(
JButton add, JButton remove, JButton properties) {
ButtonBarBuilder builder = new ButtonBarBuilder();
builder.addGriddedGrowing(add);
builder.addRelatedGap();
builder.addGriddedGrowing(remove);
builder.addRelatedGap();
builder.addGriddedGrowing(properties);
return builder.getPanel();
}
/**
* Builds and returns a right aligned button bar with
* Add, Remove, and Properties.
*
* @param add the Add button
* @param remove the Remove button
* @param properties the Properties button
* @return a panel that contains the button(s)
*/
public static JPanel buildAddRemovePropertiesRightBar(
JButton add, JButton remove, JButton properties) {
return buildRightAlignedBar(add, remove, properties);
}
// Wizard Bars **********************************************************
/**
* Builds and returns a wizard button bar with:
* Back, Next, Finish, Cancel.
*
* @param back the Back button
* @param next the Next button
* @param finish the Finish button
* @param cancel the Cancel button
* @return a wizard button bar for back, next, finish, cancel
*/
public static JPanel buildWizardBar(
JButton back, JButton next, JButton finish, JButton cancel) {
return buildWizardBar(back, next, new JButton[]{finish, cancel});
}
/**
* Builds and returns a wizard button bar with:
* Help and Back, Next, Finish, Cancel.
*
* @param help the Help button
* @param back the Back button
* @param next the Next button
* @param finish the Finish button
* @param cancel the Cancel button
* @return a wizard button bar for help, back, next, finish, cancel
*/
public static JPanel buildWizardBar(
JButton help, JButton back, JButton next, JButton finish, JButton cancel) {
return buildWizardBar(new JButton[]{help},
back, next,
new JButton[]{finish, cancel});
}
/**
* Builds and returns a wizard button bar that consists of the back and
* next buttons, and some right aligned buttons.
*
* @param back the mandatory back button
* @param next the mandatory next button
* @param rightAlignedButtons an optional array of buttons that will be
* located in the bar's right hand side
* @return a wizard button bar with back, next and a bunch of buttons
*/
public static JPanel buildWizardBar(JButton back, JButton next,
JButton[] rightAlignedButtons) {
return buildWizardBar(null, back, next, rightAlignedButtons);
}
/**
* Builds and returns a wizard button bar. It consists of some left
* aligned buttons, the back and next buttons, and some right aligned
* buttons.
*
* @param leftAlignedButtons an optional array of buttons that will be
* positioned in the bar's left hand side
* @param back the mandatory back button
* @param next the mandatory next button
* @param rightAlignedButtons an optional array of buttons that will be
* located in the bar's right hand side
* @return a wizard button bar with back, next and a bunch of buttons
*/
public static JPanel buildWizardBar(JButton[] leftAlignedButtons,
JButton back, JButton next,
JButton[] rightAlignedButtons) {
return buildWizardBar(leftAlignedButtons,
back, next, null,
rightAlignedButtons);
}
/**
* Builds and returns a wizard button bar. It consists of some left
* aligned buttons, the back, next group, and some right aligned buttons.
* To allow the finish button to overlay the next button, you can
* optionally provide the overlayedFinish
parameter.
*
* @param leftAlignedButtons an optional array of buttons that will be
* positioned in the bar's left hand side
* @param back the mandatory back button
* @param next the mandatory next button
* @param overlaidFinish the optional overlaid finish button
* @param rightAlignedButtons an optional array of buttons that will be
* located in the bar's right hand side
* @return a wizard button bar with back, next and a bunch of buttons
*/
public static JPanel buildWizardBar(JButton[] leftAlignedButtons,
JButton back,
JButton next,
JButton overlaidFinish,
JButton[] rightAlignedButtons) {
ButtonBarBuilder builder = new ButtonBarBuilder();
if (leftAlignedButtons != null) {
builder.addGriddedButtons(leftAlignedButtons);
builder.addRelatedGap();
}
builder.addGlue();
builder.addGridded(back);
builder.addGridded(next);
// Optionally overlay the finish and next button.
if (overlaidFinish != null) {
builder.nextColumn(-1);
builder.add(overlaidFinish);
builder.nextColumn();
}
if (rightAlignedButtons != null) {
builder.addRelatedGap();
builder.addGriddedButtons(rightAlignedButtons);
}
return builder.getPanel();
}
}