001: /*
002: * Copyright (c) 2002-2007 JGoodies Karsten Lentzsch. All Rights Reserved.
003: *
004: * Redistribution and use in source and binary forms, with or without
005: * modification, are permitted provided that the following conditions are met:
006: *
007: * o Redistributions of source code must retain the above copyright notice,
008: * this list of conditions and the following disclaimer.
009: *
010: * o Redistributions in binary form must reproduce the above copyright notice,
011: * this list of conditions and the following disclaimer in the documentation
012: * and/or other materials provided with the distribution.
013: *
014: * o Neither the name of JGoodies Karsten Lentzsch nor the names of
015: * its contributors may be used to endorse or promote products derived
016: * from this software without specific prior written permission.
017: *
018: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
019: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
020: * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
021: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
022: * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
023: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
024: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
025: * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
026: * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
027: * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
028: * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
029: */
030:
031: package com.jgoodies.forms.tutorial.building;
032:
033: import java.awt.Component;
034:
035: import javax.swing.JButton;
036: import javax.swing.JComponent;
037: import javax.swing.JFrame;
038: import javax.swing.UIManager;
039: import javax.swing.WindowConstants;
040:
041: import com.jgoodies.forms.builder.ButtonBarBuilder;
042: import com.jgoodies.forms.builder.DefaultFormBuilder;
043: import com.jgoodies.forms.layout.FormLayout;
044:
045: /**
046: * Demonstrates how to build button bars with a fixed button order
047: * or with a button order that honors the platform's style.
048: *
049: * @author Karsten Lentzsch
050: * @version $Revision: 1.8 $
051: *
052: * @see ButtonBarBuilder
053: * @see com.jgoodies.forms.factories.ButtonBarFactory
054: */
055: public final class ButtonOrderExample {
056:
057: public static void main(String[] args) {
058: try {
059: UIManager
060: .setLookAndFeel("com.jgoodies.looks.plastic.PlasticXPLookAndFeel");
061: } catch (Exception e) {
062: // Likely PlasticXP is not in the class path; ignore.
063: }
064: JFrame frame = new JFrame();
065: frame.setTitle("Forms Tutorial :: Button Order");
066: frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
067: JComponent panel = new ButtonOrderExample().buildPanel();
068: frame.getContentPane().add(panel);
069: frame.pack();
070: frame.setVisible(true);
071: }
072:
073: /**
074: * Builds and returns a panel that consists of three paragraphs
075: * that demonstrate different button orders. Each paragraph contains
076: * a button bar that is built from a button sequence, and another
077: * bar that is built from individual buttons.
078: *
079: * @return a panel that demonstrates button order
080: */
081: public JComponent buildPanel() {
082: FormLayout layout = new FormLayout(
083: "right:pref:grow, 4dlu, pref");
084: DefaultFormBuilder rowBuilder = new DefaultFormBuilder(layout);
085: rowBuilder.setDefaultDialogBorder();
086:
087: rowBuilder.appendSeparator("Left to Right");
088: rowBuilder.append("Ordered",
089: buildButtonSequence(ButtonBarBuilder
090: .createLeftToRightBuilder()));
091: rowBuilder.append("Fixed",
092: buildIndividualButtons(ButtonBarBuilder
093: .createLeftToRightBuilder()));
094:
095: rowBuilder.appendSeparator("Right to Left");
096: rowBuilder.append("Ordered",
097: buildButtonSequence(createRightToLeftBuilder()));
098: rowBuilder.append("Fixed",
099: buildIndividualButtons(createRightToLeftBuilder()));
100:
101: rowBuilder.appendSeparator("Platform Default Order");
102: rowBuilder.append("Ordered",
103: buildButtonSequence(new ButtonBarBuilder()));
104: rowBuilder.append("Fixed",
105: buildIndividualButtons(new ButtonBarBuilder()));
106:
107: return rowBuilder.getPanel();
108: }
109:
110: /**
111: * Builds and returns a button bar honoring the builder's button order.
112: *
113: * @param builder the builder used to build the bar
114: * @return a button bar that honors the builder's button order
115: */
116: private Component buildButtonSequence(ButtonBarBuilder builder) {
117: builder.addGriddedButtons(new JButton[] { new JButton("One"),
118: new JButton("Two"), new JButton("Three") });
119: return builder.getPanel();
120: }
121:
122: /**
123: * Builds and returns a button bar ignoring the builder's button order.
124: * Instead a fixed left to right order is used.
125: *
126: * @param builder the builder used to build the bar
127: * @return a button bar with a fixed left to right button order
128: */
129: private Component buildIndividualButtons(ButtonBarBuilder builder) {
130: builder.addGridded(new JButton("One"));
131: builder.addRelatedGap();
132: builder.addGridded(new JButton("Two"));
133: builder.addRelatedGap();
134: builder.addGridded(new JButton("Three"));
135: return builder.getPanel();
136: }
137:
138: /**
139: * Creates and returns a button bar builder with a fixed
140: * right-to-left button order. Unlike the factory method
141: * {@link ButtonBarBuilder#createLeftToRightBuilder()}
142: * this method is useful for demonstration purposes only.
143: *
144: * @return a ButtonBarBuilder with right-to-left button order
145: */
146: private static ButtonBarBuilder createRightToLeftBuilder() {
147: ButtonBarBuilder builder = new ButtonBarBuilder();
148: builder.setLeftToRightButtonOrder(false);
149: return builder;
150: }
151:
152: }
|