diff options
| author | Paul Buetow <paul@buetow.org> | 2009-03-04 17:31:40 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2009-03-04 17:31:40 +0000 |
| commit | 9129838d208c0df7293e5b757661125545cd6df8 (patch) | |
| tree | cde0b095a7ad120b68450f705d8fc16d278bfff8 /libs/FLib/TableLayout | |
| parent | e2c501ba5aaffd9d5ace6bc1706353d9f83329b7 (diff) | |
flib added
Diffstat (limited to 'libs/FLib/TableLayout')
26 files changed, 9806 insertions, 0 deletions
diff --git a/libs/FLib/TableLayout/License.txt b/libs/FLib/TableLayout/License.txt new file mode 100644 index 0000000..be12e9d --- /dev/null +++ b/libs/FLib/TableLayout/License.txt @@ -0,0 +1,123 @@ + Artistic License + +Preamble + +The intent of this document is to state the conditions under which a +Package may be copied, such that the Copyright Holder maintains some +semblance of artistic control over the development of the package, +while giving the users of the package the right to use and distribute +the Package in a more-or-less customary fashion, plus the right to +make reasonable modifications. + +Definitions: + + * "Package" refers to the collection of files distributed by the + Copyright Holder, and derivatives of that collection of files + created through textual modification. + + * "Standard Version" refers to such a Package if it has not been + modified, or has been modified in accordance with the wishes of + the Copyright Holder. + + * "Copyright Holder" is whoever is named in the copyright or + copyrights for the package. + + * "You" is you, if you're thinking about copying or distributing + this Package. + + * "Reasonable copying fee" is whatever you can justify on the + basis of media cost, duplication charges, time of people + involved, and so on. (You will not be required to justify it to + the Copyright Holder, but only to the computing community at + large as a market that must bear the fee.) + + * "Freely Available" means that no fee is charged for the item + itself, though there may be fees involved in handling the item. + It also means that recipients of the item may redistribute it + under the same conditions they received it. + +1. You may make and give away verbatim copies of the source form of + the Standard Version of this Package without restriction, provided + that you duplicate all of the original copyright notices and + associated disclaimers. + +2. You may apply bug fixes, portability fixes and other modifications + derived from the Public Domain or from the Copyright Holder. A + Package modified in such a way shall still be considered the + Standard Version. + +3. You may otherwise modify your copy of this Package in any way, + provided that you insert a prominent notice in each changed file + stating how and when you changed that file, and provided that you + do at least ONE of the following: + + a) place your modifications in the Public Domain or otherwise make + them Freely Available, such as by posting said modifications to + Usenet or an equivalent medium, or placing the modifications on + a major archive site such as ftp.uu.net, or by allowing the + Copyright Holder to include your modifications in the Standard + Version of the Package. + + b) use the modified Package only within your corporation or + organization. + + c) rename any non-standard executables so the names do not + conflict with standard executables, which must also be + provided, and provide a separate manual page for each + non-standard executable that clearly documents how it differs + from the Standard Version. + + d) make other distribution arrangements with the Copyright Holder. + +4. You may distribute the programs of this Package in object code or + executable form, provided that you do at least ONE of the + following: + + a) distribute a Standard Version of the executables and library + files, together with instructions (in the manual page or + equivalent) on where to get the Standard Version. + + b) accompany the distribution with the machine-readable source of + the Package with your modifications. + + c) accompany any non-standard executables with their corresponding + Standard Version executables, giving the non-standard + executables non-standard names, and clearly documenting the + differences in manual pages (or equivalent), together with + instructions on where to get the Standard Version. + + d) make other distribution arrangements with the Copyright Holder. + +5. You may charge a reasonable copying fee for any distribution of + this Package. You may charge any fee you choose for support of this + Package. You may not charge a fee for this Package itself. However, + you may distribute this Package in aggregate with other (possibly + commercial) programs as part of a larger (possibly commercial) + software distribution provided that you do not advertise this + Package as a product of your own. + +6. The scripts and library files supplied as input to or produced as + output from the programs of this Package do not automatically fall + under the copyright of this Package, but belong to whomever + generated them, and may be sold commercially, and may be aggregated + with this Package. + +7. C or perl subroutines supplied by you and linked into this Package + shall not be considered part of this Package. + +8. Aggregation of this Package with a commercial distribution is + always permitted provided that the use of this Package is embedded; + that is, when no overt attempt is made to make this Package's + interfaces visible to the end user of the commercial distribution. + Such use shall not be construed as a distribution of this Package. + +9. The name of the Copyright Holder may not be used to endorse or + promote products derived from this software without specific prior + written permission. + +10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + PURPOSE. + +The End diff --git a/libs/FLib/TableLayout/README.txt b/libs/FLib/TableLayout/README.txt new file mode 100644 index 0000000..6a3ac6e --- /dev/null +++ b/libs/FLib/TableLayout/README.txt @@ -0,0 +1,34 @@ + TableLayout + +This package provides a TableLayout manager for use in Java programs. + +This program is free software; you can redistribute it and/or modify +it under the terms of the Artistic License. You should have received a +copy of the Artistic License along with this program (in file +License.txt). If not, a copy is available at + + http://opensource.org/licenses/artistic-license.php + +To build it you'll need Ant. I used version 1.6.2. Use + + ant all + +This will create build/tablelayout.jar. To create the API +documentation, use + + ant javadoc + +To view all the documentation, view doc/index.html. + +There is a tutorial in doc/tutorial.html. There is also a sample Java +program that uses the TableLayout class. You can build and run this +program with + + ant runExample1 + +In addition, there is a tool you can use to practice using the +TableLayout. It's called TableExplorer and follows the approach of a +similar tool written for the GridBagLayout. Build and run this program +with + + ant runTableExplorer diff --git a/libs/FLib/TableLayout/build.xml b/libs/FLib/TableLayout/build.xml new file mode 100644 index 0000000..99384a6 --- /dev/null +++ b/libs/FLib/TableLayout/build.xml @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE project PUBLIC "-//ANT//DTD project//EN" "project.dtd"> + +<project basedir="." default="all" name="TableLayout"> + + <!-- Set up the classpath for compilation and execution --> + + <path id="project.class.path"> + <pathelement location="."/> + </path> + + <!-- Common settings for all targets --> + + <target name="init" description="Initialize."> + <tstamp/> + </target> + + <!-- Compile everything --> + + <target depends="init" name="compile" description="Compile the project."> + <javac debug="true" deprecation="true" destdir="." srcdir="."> + <include name="org/freixas/**"/> + <include name="doc/example/**"/> + <classpath refid="project.class.path"/> + </javac> + </target> + + <!-- Place the class files in a jar file --> + + <target depends="compile" name="jar" description="Create a jar file."> + <mkdir dir="build"/> + <jar basedir="." compress="false" jarfile="build/tablelayout.jar"> + <manifest> + <attribute name="Built-By" value="${user.name}"/> + <section name="TableLayout"> + <attribute name="Specification-Title" value="TableLayout Library"/> + <attribute name="Specification-Version" value="${version}"/> + <attribute name="Implementation-Title" value="TableLayout"/> + <attribute name="Implementation-Version" value="${version} ${TODAY}"/> + </section> + </manifest> + <exclude name="**/*.java"/> + <exclude name="doc"/> + <exclude name="build"/> + <include name="org/freixas/tablelayout/*.class"/> + <include name="**/*.gif"/> + <include name="**/*.properties"/> + </jar> + </target> + + <!-- Build all --> + + <target depends="jar" name="all" description="Build everything."> + <echo message="TableLayout library built."/> + </target> + + <!-- Run Example1 --> + + <target depends="compile" name="runExample1" description="Run Example1."> + <java classname="doc.example.Example1" failonerror="true" fork="true"> + <classpath refid="project.class.path"/> + </java> + </target> + + <!-- Run TableExplorer --> + + <target depends="compile" name="runTableExplorer" description="Run TableExplorer."> + <java classname="doc.example.TableExplorer" failonerror="true" fork="true"> + <classpath refid="project.class.path"/> + </java> + </target> + + <!-- Build the documentation --> + + <target depends="init" name="javadoc" description="Javadoc for TableLayout."> + <mkdir dir="doc/api"/> + <copy todir="doc/api"> + <fileset dir="doc-templates"> + <include name="**/*.html"/> + </fileset> + </copy> + <javadoc + sourcepath="org" + destdir="doc/api" + use="true" + author="true" + windowtitle="TableLayout" + footer="<small>Copyright © 2000-2005 Credence Systems Corporation<br>Licensed under the <a href='{@docRoot}/License.html' target='_top'>Artistic License</a></small>"> + <classpath refid="project.class.path"/> + <packageset dir="."> + <include name="org/freixas/**"/> + </packageset> + <link href="http://java.sun.com/j2se/1.5/docs/api/" /> + </javadoc> + </target> + + <!-- Clean the build tree --> + + <target depends="init" name="clean" description="Clean all build products."> + <delete> + <fileset dir="org/freixas"> + <include name="**/*.class"/> + </fileset> + </delete> + <delete> + <fileset dir="doc/example"> + <include name="**/*.class"/> + </fileset> + </delete> + <delete dir="build"/> + <delete dir="doc/api"/> + </target> + + <!-- Generate a DTD for this buildfile --> + + <target name="dtd" description="Generate a DTD"> + <antstructure output="project.dtd"/> + </target> + +</project> diff --git a/libs/FLib/TableLayout/doc-templates/License.html b/libs/FLib/TableLayout/doc-templates/License.html new file mode 100644 index 0000000..d5fbdc1 --- /dev/null +++ b/libs/FLib/TableLayout/doc-templates/License.html @@ -0,0 +1,180 @@ +<html> + <style type="text/css"> + body { + font-family: Arial, Helvetica, sans-serif; + } + + h1 { + text-align: center; + font-weight: bold; + font-size: 145%; + } + + h2 { + text-align: left; + font-weight: bold; + font-size: 120%; + } + + ol { + list-style-type: decimal; + } + + ol ol { + list-style-type: lower-alpha; + } + + li { + margin-top: 10px; + margin-bottom: 10px; + } + + </style> +</head> + + <body> + + <h1>Artistic License</h1> + + <h2>Preamble</h2> + + <p>The intent of this document is to state the conditions under which a + Package may be copied, such that the Copyright Holder maintains some + semblance of artistic control over the development of the package, + while giving the users of the package the right to use and distribute + the Package in a more-or-less customary fashion, plus the right to + make reasonable modifications.</p> + + <h2>Definitions:</h2> + + <ul> + + <li>"Package" refers to the collection of files distributed by the + Copyright Holder, and derivatives of that collection of files created + through textual modification.</li> + + <li>"Standard Version" refers to such a Package if it has not been + modified, or has been modified in accordance with the wishes of the + Copyright Holder.</li> + + <li>"Copyright Holder" is whoever is named in the copyright or + copyrights for the package.</li> + + <li>"You" is you, if you're thinking about copying or distributing + this Package.</li> + + <li>"Reasonable copying fee" is whatever you can justify on the basis + of media cost, duplication charges, time of people involved, and so + on. (You will not be required to justify it to the Copyright Holder, + but only to the computing community at large as a market that must + bear the fee.)</li> + + <li>"Freely Available" means that no fee is charged for the item + itself, though there may be fees involved in handling the item. It + also means that recipients of the item may redistribute it under the + same conditions they received it.</li> + + </ul> + + <hr> + + <ol> + + <li>You may make and give away verbatim copies of the source form of + the Standard Version of this Package without restriction, provided + that you duplicate all of the original copyright notices and + associated disclaimers.</li> + + <li>You may apply bug fixes, portability fixes and other modifications + derived from the Public Domain or from the Copyright Holder. A Package + modified in such a way shall still be considered the Standard + Version.</li> + + <li>You may otherwise modify your copy of this Package in any way, + provided that you insert a prominent notice in each changed file + stating how and when you changed that file, and provided that you do + at least ONE of the following: + + <ol> + + <li>place your modifications in the Public Domain or otherwise make + them Freely Available, such as by posting said modifications to Usenet + or an equivalent medium, or placing the modifications on a major + archive site such as ftp.uu.net, or by allowing the Copyright Holder + to include your modifications in the Standard Version of the Package.</li> + + <li>use the modified Package only within your corporation or + organization.</li> + + <li>rename any non-standard executables so the names do not conflict + with standard executables, which must also be provided, and provide a + separate manual page for each non-standard executable that clearly + documents how it differs from the Standard Version.</li> + + <li>make other distribution arrangements with the Copyright + Holder.</li> + + </ol> + </li> + + <li>You may distribute the programs of this Package in object code or + executable form, provided that you do at least ONE of the following: + + <ol> + + <li>distribute a Standard Version of the executables and library + files, together with instructions (in the manual page or equivalent) + on where to get the Standard Version.</li> + + <li>accompany the distribution with the machine-readable source of the + Package with your modifications.</li> + + <li>accompany any non-standard executables with their corresponding + Standard Version executables, giving the non-standard executables + non-standard names, and clearly documenting the differences in manual + pages (or equivalent), together with instructions on where to get the + Standard Version.</li> + + <li>make other distribution arrangements with the Copyright + Holder.</li> + + </ol> + </li> + + <li>You may charge a reasonable copying fee for any distribution of + this Package. You may charge any fee you choose for support of this + Package. You may not charge a fee for this Package itself. However, + you may distribute this Package in aggregate with other (possibly + commercial) programs as part of a larger (possibly commercial) + software distribution provided that you do not advertise this Package + as a product of your own.</li> + + <li>The scripts and library files supplied as input to or produced as + output from the programs of this Package do not automatically fall + under the copyright of this Package, but belong to whomever generated + them, and may be sold commercially, and may be aggregatedwith this + Package.</li> + + <li>r perl subroutines supplied by you and linked into this Package + shall not be considered part of this Package.</li> + + <li>Aggregation of this Package with a commercial distribution is + always permitted provided that the use of this Package is embedded; + that is, when no overt attempt is made to make this Package's + interfaces visible to the end user of the commercial distribution. + Such use shall not be construed as a distribution of this Package.</li> + + <li>The name of the Copyright Holder may not be used to endorse or + promote products derived from this software without specific prior + written permission.</li> + + <li>THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + PURPOSE.</li> + + </ol> + + <p>The End</p> + </body> +</html> diff --git a/libs/FLib/TableLayout/doc/example/Example1.java b/libs/FLib/TableLayout/doc/example/Example1.java new file mode 100644 index 0000000..797d1e7 --- /dev/null +++ b/libs/FLib/TableLayout/doc/example/Example1.java @@ -0,0 +1,180 @@ +//********************************************************************** +// Package +//********************************************************************** + +package doc.example; + +//********************************************************************** +// Import list +//********************************************************************** + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; + +import org.freixas.tablelayout.*; + +/** + * This example compares the GridBagLayout to the TableLayout. The + * same layout is created using each layout manager. The layouts are + * displayed in their own window. + * + * @author Antonio Freixas + */ + +// Copyright © 2004 Antonio Freixas +// All Rights Reserved. + +public class Example1 +{ + +//********************************************************************** +// Public Constants +//********************************************************************** + +//********************************************************************** +// Private Constants +//********************************************************************** + +//********************************************************************** +// Private Members +//********************************************************************** + +//********************************************************************** +// main +//********************************************************************** + +public static void +main( + String[] args) +{ + new Example1(); +} + +//********************************************************************** +// Constructors +//********************************************************************** + +/** + * Create the two windows and display them. + */ + +public +Example1() +{ + JFrame frame1 = createGridBagLayout(); + JFrame frame2 = createTableLayout(); + frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + frame1.pack(); + frame2.pack(); + frame1.setLocation(10, 100); + frame2.setLocation(400, 100); + frame1.setVisible(true); + frame2.setVisible(true); +} + +//********************************************************************** +// Private +//********************************************************************** + +/** + * Create the layout using GridBagLayout. This code comes from the API + * page for GridBagLayout. + * + * @return The JFrame containing the layout. + */ + +public JFrame +createGridBagLayout() +{ + JFrame frame = new JFrame("GridBagLayout"); + + GridBagLayout gridbag = new GridBagLayout(); + GridBagConstraints c = new GridBagConstraints(); + + JPanel panel = new JPanel(gridbag); + frame.getContentPane().add(panel); + + c.fill = GridBagConstraints.BOTH; + c.weightx = 1.0; + makebutton(panel, "Button1", gridbag, c); + makebutton(panel, "Button2", gridbag, c); + makebutton(panel, "Button3", gridbag, c); + + c.gridwidth = GridBagConstraints.REMAINDER; //end row + makebutton(panel, "Button4", gridbag, c); + + c.weightx = 0.0; //reset to the default + makebutton(panel, "Button5", gridbag, c); //another row + + c.gridwidth = GridBagConstraints.RELATIVE; //next-to-last in row + makebutton(panel, "Button6", gridbag, c); + + c.gridwidth = GridBagConstraints.REMAINDER; //end row + makebutton(panel, "Button7", gridbag, c); + + c.gridwidth = 1; //reset to the default + c.gridheight = 2; + c.weighty = 1.0; + makebutton(panel, "Button8", gridbag, c); + + c.weighty = 0.0; //reset to the default + c.gridwidth = GridBagConstraints.REMAINDER; //end row + c.gridheight = 1; //reset to the default + makebutton(panel, "Button9", gridbag, c); + makebutton(panel, "Button10", gridbag, c); + + return frame; +} + +/** + * Helper method for createGridBagLayout(). + * + * @param panel The panel to add the button to. + * @param name The button's label. + * @param gridbag The GridBagLayout to use. + * @param c The constraints to use. + */ + +private void +makebutton( + JPanel panel, + String name, + GridBagLayout gridbag, + GridBagConstraints c) +{ + JButton button = new JButton(name); + gridbag.setConstraints(button, c); + panel.add(button); +} + +/** + * Create the layout using TableLayout. + * + * @return The JFrame containing the layout. + */ + +public JFrame +createTableLayout() +{ + JFrame frame = new JFrame("TableLayout"); + + JPanel panel = new JPanel(new TableLayout("cols=4")); + frame.getContentPane().add(panel); + + panel.add(new JButton("Button1")); + panel.add(new JButton("Button2")); + panel.add(new JButton("Button3")); + panel.add(new JButton("Button4")); + panel.add(new JButton("Button5"), "cspan=4"); + panel.add(new JButton("Button6"), "cspan=3"); + panel.add(new JButton("Button7")); + panel.add(new JButton("Button8"), "rspan=2"); + panel.add(new JButton("Button9"), "cspan=3"); + panel.add(new JButton("Button10"), "cspan=3 rweight=1"); + + return frame; +} + +} diff --git a/libs/FLib/TableLayout/doc/example/TableExplorer.java b/libs/FLib/TableLayout/doc/example/TableExplorer.java new file mode 100644 index 0000000..d66c497 --- /dev/null +++ b/libs/FLib/TableLayout/doc/example/TableExplorer.java @@ -0,0 +1,1230 @@ +//********************************************************************** +// Package +//********************************************************************** + +package doc.example; + +//********************************************************************** +// Import list +//********************************************************************** + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; +import java.util.*; + +import org.freixas.tablelayout.*; + +/** + * This class allows a user to dynamically alter a set of components + * using the TableLayout class to explore the layout's abilities. + * + * @author Antonio Freixas + */ + +public class TableExplorer + extends JFrame + implements CaretListener, ActionListener, ListSelectionListener, + FocusListener, MenuListener +{ + +//********************************************************************** +// Constants +//********************************************************************** + +static final String[] tablePositionList = { + "Default", + "tn", "tne", "tnw", + "ts", "tse", "tsw", + "te", "tw", "tc" +}; + +static final String[] tableFillList = { + "Default", "tfh", "tfv", "tf" +}; + +static final String[] positionList = { + "Default", + "n", "ne", "nw", + "s", "se", "sw", + "e", "w", "c" +}; + +static final String[] fillList = { + "Default", "fh", "fv", "f" +}; + +//********************************************************************** +// Fields +//********************************************************************** + +JFrame layout; +JPanel layoutPane; +JFrame code; +JPanel codePane; + +HashMap compHash = new HashMap(); +HashMap attrHash = new HashMap(); + +JMenu fileMenu; +JMenu windowMenu; +JMenu helpMenu; + +JMenuItem exitItem; +JMenuItem previewItem; +JMenuItem packItem; +JMenuItem codeItem; +JMenuItem generateItem; +JMenuItem aboutItem; + +JButton upButton; +JButton downButton; +JButton removeButton; +JButton addButton; + +JList compList; +DefaultListModel compListModel; +JTextField compEntryField; + +JTextField columnsField; +JTextField[] tableInsetFields = new JTextField[4]; +JTextField rowGapField; +JTextField colGapField; +JComboBox tablePositionBox; +JComboBox tableFillBox; + +JTextField[] tableCellInsetFields = new JTextField[4]; +JComboBox tableCellPositionBox; +JComboBox tableCellFillBox; +JTextField tableRowWeightField; +JTextField tableColWeightField; + +JTextField tableAttributesField; + +JTextField[] insetFields = new JTextField[4]; +JComboBox positionBox; +JComboBox fillBox; +JTextField rowWeightField; +JTextField colWeightField; +JTextField colPositionField; +JTextField skipCellsField; +JTextField rowSpanField; +JTextField colSpanField; + +JTextField cellAttributesField; + +JTextArea codeTextArea; +JScrollPane codeTextScroll; + +String textWhenFocusGained = null; +boolean ignoreEvents = false; + +TableAttributes tableAttributes = null; + +//********************************************************************** +// Main +//********************************************************************** + +static public void +main( + String[] args) +{ + new TableExplorer(); +} + +//********************************************************************** +// Constructors +//********************************************************************** + +/** + * Create the TableExplorer JFrame. + */ + +TableExplorer() +{ + super("TableExplorer"); + + // Table with three columns + // Row 1: Buttons for managing component list + // Row 2: Component list + // Row 3: Attribute settings + + setJMenuBar(createJMenuBar()); + + getContentPane().setLayout( + new TableLayout("cols=3 cgap=5 " + + "titop=2 tibottom=2 tileft=2 tiright=2")); + + getContentPane().add(createButtonPane()); + getContentPane().add(createListPane(), "cweight=1"); + getContentPane().add(createAttributePane(), "n fh"); + + pack(); + setVisible(true); + + layout = new JFrame("Table Layout Preview"); + layoutPane = (JPanel)layout.getContentPane(); + layoutPane.setName("DEBUG"); + layoutPane.setLayout(new TableLayout()); + layoutPane.setOpaque(true); + + code = new JFrame("Table Layout Code"); + codePane = createCodePane(); + code.setContentPane(codePane); + code.pack(); + + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + compEntryField.grabFocus(); + + layout.setSize(300, 300); +} + +//********************************************************************** +// Public +//********************************************************************** + +public void +caretUpdate( + CaretEvent e) +{ + if (e.getSource() == compEntryField) { + String text = compEntryField.getText(); + addButton.setEnabled(text.length() > 0); + } +} + +public void +actionPerformed( + ActionEvent e) +{ + if (ignoreEvents) return; + + if (e.getSource() == addButton || + e.getSource() == compEntryField) { + + String name = compEntryField.getText(); + + JButton button = new JButton(name); + addToLayout(button); + compHash.put(name, button); + attrHash.put(name, new Attributes()); + compListModel.addElement(name); + compEntryField.setText(""); + addButton.setEnabled(false); + } + + else if (e.getSource() == removeButton) { + String name = (String)compList.getSelectedValue(); + if (name != null) { + Component c = (Component)compHash.get(name); + layoutPane.remove(c); + compHash.remove(name); + attrHash.remove(name); + compListModel.removeEle |
