SRJRCFrames
v0.1.296

de.schwarzrot.ui.service
Class DefaultFormComponentFactory

java.lang.Object
  extended by de.schwarzrot.ui.service.DefaultFormComponentFactory
All Implemented Interfaces:
FormComponentFactory

public class DefaultFormComponentFactory
extends Object
implements FormComponentFactory

a factory class like com.jgoodies.binding.adapter.BasicComponentFactory but prepared for dynamic replacement, so no static functions. The dynamic Factory-style helps dependency injection by application-contexts. So this factory can be replaced at runtime.

As JFormattedTextField does not handle FocusListener properly, so it was necessary to subclass JFormattedTextField. Another reason, not to use the factory from jgoodies.

Author:
Karsten Lentzsch - original author of basic components, Reinhard Mantey removed all static, changed to application-wide resource-based image and text handling. Minor changes to imported controls. Added controls of higher abstractation, like ColorChooser or FileChooser.

Nested Class Summary
protected static class DefaultFormComponentFactory.Icons
          Provides icons useful for presenting validation feedback.
protected static class DefaultFormComponentFactory.LabelIconChangeHandler
          Sets the component visible iff the validation result has errors.
protected static class DefaultFormComponentFactory.MessageTextChangeHandler
          Sets a JTextComponent's text to the messages text of a ValidationResult.
 
Nested classes/interfaces inherited from interface de.schwarzrot.ui.service.FormComponentFactory
FormComponentFactory.ButtonType
 
Field Summary
protected static Color DEFAULT_REPORT_BACKGROUND
           
protected  File imageBaseDirectory
           
protected static ImageFactory imgFactory
           
protected static Dimension MIN_SIZE
           
protected static MessageSource msgSource
           
 
Constructor Summary
DefaultFormComponentFactory()
           
 
Method Summary
 JCheckBox createCheckBox(com.jgoodies.binding.value.ValueModel model, String text)
           
 JButton createColorChooser(com.jgoodies.binding.value.ValueModel model, Component parent)
           
 JButton createColorChooser(com.jgoodies.binding.value.ValueModel model, Component parent, String label)
           
 JComboBox createComboBox(ComboBoxModel model)
           
 JComboBox createComboBox(Object[] data)
           
 JComboBox createComboBox(Object[] data, ListCellRenderer cellRenderer)
           
<E> JComboBox
createComboBox(com.jgoodies.binding.list.SelectionInList<E> selectionInList)
           
<E> JComboBox
createComboBox(com.jgoodies.binding.list.SelectionInList<E> selectionInList, ListCellRenderer cellRenderer)
           
<E> JComboBox
createComboBox(com.jgoodies.binding.value.ValueModel model, Collection<E> listData)
           
<E> JComboBox
createComboBox(com.jgoodies.binding.value.ValueModel model, Collection<E> listData, ListCellRenderer cellRenderer)
           
<E> JComboBox
createComboBox(com.jgoodies.binding.value.ValueModel model, ListModel listModel, ListCellRenderer cellRenderer)
           
 JFormattedTextField createDateField(com.jgoodies.binding.value.ValueModel valueModel)
          Creates and returns a formatted text field that is bound to the Date value of the given ValueModel.
 JFormattedTextField createDateField(com.jgoodies.binding.value.ValueModel valueModel, boolean enableShortcuts)
          Creates and returns a formatted text field that is bound to the Date value of the given ValueModel.
 JFormattedTextField createDateField(com.jgoodies.binding.value.ValueModel valueModel, boolean enableShortcuts, boolean commitsOnValidEdit)
          Creates and returns a formatted text field that is bound to the Date value of the given ValueModel.
 JFormattedTextField createDateTimeField(com.jgoodies.binding.value.ValueModel model)
           
 JButton createDialogButton(String applicationId, FormComponentFactory.ButtonType type)
           
 JButton createDialogButton(String applicationId, String buttonId)
           
 JFormattedTextField createDoubleField(com.jgoodies.binding.value.ValueModel model)
           
 JSpinner createDoubleSpinner(com.jgoodies.binding.value.ValueModel model, Double defaultValue, Double min, Double max, Double stepSize)
           
 JButton createFileChooser(com.jgoodies.binding.value.ValueModel model, Component parent)
           
 JButton createFileChooser(com.jgoodies.binding.value.ValueModel model, Component parent, int fileSelectionMode)
           
 JButton createFontChooser(com.jgoodies.binding.value.ValueModel fontNameModel, com.jgoodies.binding.value.ValueModel fontStyleModel, com.jgoodies.binding.value.ValueModel fontSizeModel, Component parent)
           
protected  JFormattedTextField createFormattedTextField(com.jgoodies.binding.value.ValueModel model, JFormattedTextField.AbstractFormatter formatter)
           
protected  JFormattedTextField createFormattedTextField(com.jgoodies.binding.value.ValueModel model, JFormattedTextField.AbstractFormatterFactory formatterFactory)
           
 JButton createImageChooser(com.jgoodies.binding.value.ValueModel model, Component parent)
           
 JFormattedTextField createIntegerField(com.jgoodies.binding.value.ValueModel model)
           
 JSlider createIntegerSlider(BoundedRangeModel m)
           
 JSlider createIntegerSlider(com.jgoodies.binding.value.ValueModel model, int min, int max, int stepSize)
           
 JSpinner createIntegerSpinner(com.jgoodies.binding.value.ValueModel model, int defaultValue, int min, int max, int stepSize)
           
<E> JList
createList(ca.odell.glazedlists.EventList<E> list, ca.odell.glazedlists.swing.DefaultEventSelectionModel<E> selModel)
           
<E> JList
createList(ca.odell.glazedlists.EventList<E> dataList, ca.odell.glazedlists.swing.DefaultEventSelectionModel<E> selModel, ListCellRenderer cellRenderer)
           
<E> JList
createList(com.jgoodies.binding.list.SelectionInList<E> selectionInList)
           
<E> JList
createList(com.jgoodies.binding.list.SelectionInList<E> selectionInList, ListCellRenderer cellRenderer)
           
<E> JList
createList(com.jgoodies.binding.value.ValueModel model)
           
 JButton createLocalFileChooser(com.jgoodies.binding.value.ValueModel model, Component parent)
           
 JButton createLocalFileChooser(com.jgoodies.binding.value.ValueModel model, Component parent, int fileSelectionMode, boolean doSave)
           
 JFormattedTextField createLongField(com.jgoodies.binding.value.ValueModel model)
           
 JSpinner createLongSpinner(com.jgoodies.binding.value.ValueModel model, long defaultValue, long min, long max, long stepSize)
           
 JRadioButton createRadioButton(com.jgoodies.binding.value.ValueModel model, Object choice, String text)
          Creates and returns a radio button with the specified text label that is bound to the given ValueModel.
 JComponent createReportIconAndTextPane(com.jgoodies.validation.ValidationResultModel model)
          Creates and returns a transparent panel that consists of a report label and a transparent report text area.
protected  JLabel createReportIconLabel(com.jgoodies.validation.ValidationResultModel model)
          Creates and returns an icon label that indicates the validation severity.
 JTextArea createReportTextArea(com.jgoodies.validation.ValidationResultModel model)
          Creates and returns a text area that is intended to show validation messages.
 JTextArea createReportTextArea(com.jgoodies.validation.ValidationResultModel model, Color backgroundColor)
          Creates and returns a text area that is intended to show validation messages.
 JTextArea createTextArea(com.jgoodies.binding.value.ValueModel valueModel)
           
 JTextArea createTextArea(com.jgoodies.binding.value.ValueModel valueModel, boolean commitOnFocusLost)
           
 JTextField createTextField(com.jgoodies.binding.value.ValueModel model)
           
 JTextField createTextField(com.jgoodies.binding.value.ValueModel model, boolean commitOnFocusLost)
           
 JFormattedTextField createTimeField(com.jgoodies.binding.value.ValueModel vm)
           
 JButton createToolBarButton(String formId, String buttonId)
           
protected static ImageIcon getCheckIcon()
          Returns a check icon useful to indicate good vs. no good.
 File getDefaultImageDirectory()
           
protected static ImageIcon getErrorIcon()
          Returns a default error icon useful to indicate validation errors.
protected static Icon getIcon(com.jgoodies.validation.Severity severity)
          Returns the warning icon for warnings, the error icon for errors and null otherwise.
protected static ImageIcon getInfoIcon()
          Returns a default information icon useful to indicate input hints.
protected static ImageIcon getSmallErrorIcon()
          Returns a small default error icon useful to indicate validation errors attached to UI components.
protected static Icon getSmallIcon(com.jgoodies.validation.Severity severity)
          Returns the small warning icon for warnings, the small error icon for errors and null otherwise.
protected static ImageIcon getSmallInfoIcon()
          Returns a small default information icon useful to indicate input hints.
protected static ImageIcon getSmallWarningIcon()
          Returns a small default warning icon useful to indicate validation warnings attached to UI components.
protected static ImageIcon getWarningIcon()
          Returns a default warnings icon useful to indicate validation warnings.
 void setDefaultImageDirectory(File imageDirectory)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MIN_SIZE

protected static final Dimension MIN_SIZE

DEFAULT_REPORT_BACKGROUND

protected static final Color DEFAULT_REPORT_BACKGROUND

msgSource

protected static MessageSource msgSource

imgFactory

protected static ImageFactory imgFactory

imageBaseDirectory

protected File imageBaseDirectory
Constructor Detail

DefaultFormComponentFactory

public DefaultFormComponentFactory()
Method Detail

createCheckBox

public JCheckBox createCheckBox(com.jgoodies.binding.value.ValueModel model,
                                String text)
Specified by:
createCheckBox in interface FormComponentFactory

createColorChooser

public JButton createColorChooser(com.jgoodies.binding.value.ValueModel model,
                                  Component parent)
Specified by:
createColorChooser in interface FormComponentFactory

createColorChooser

public JButton createColorChooser(com.jgoodies.binding.value.ValueModel model,
                                  Component parent,
                                  String label)
Specified by:
createColorChooser in interface FormComponentFactory

createComboBox

public JComboBox createComboBox(ComboBoxModel model)
Specified by:
createComboBox in interface FormComponentFactory

createComboBox

public JComboBox createComboBox(Object[] data)
Specified by:
createComboBox in interface FormComponentFactory

createComboBox

public JComboBox createComboBox(Object[] data,
                                ListCellRenderer cellRenderer)
Specified by:
createComboBox in interface FormComponentFactory

createComboBox

public <E> JComboBox createComboBox(com.jgoodies.binding.list.SelectionInList<E> selectionInList)
Specified by:
createComboBox in interface FormComponentFactory

createComboBox

public <E> JComboBox createComboBox(com.jgoodies.binding.list.SelectionInList<E> selectionInList,
                                    ListCellRenderer cellRenderer)
Specified by:
createComboBox in interface FormComponentFactory

createComboBox

public <E> JComboBox createComboBox(com.jgoodies.binding.value.ValueModel model,
                                    Collection<E> listData)
Specified by:
createComboBox in interface FormComponentFactory

createComboBox

public <E> JComboBox createComboBox(com.jgoodies.binding.value.ValueModel model,
                                    Collection<E> listData,
                                    ListCellRenderer cellRenderer)
Specified by:
createComboBox in interface FormComponentFactory

createComboBox

public <E> JComboBox createComboBox(com.jgoodies.binding.value.ValueModel model,
                                    ListModel listModel,
                                    ListCellRenderer cellRenderer)
Specified by:
createComboBox in interface FormComponentFactory

createDateField

public JFormattedTextField createDateField(com.jgoodies.binding.value.ValueModel valueModel)
Creates and returns a formatted text field that is bound to the Date value of the given ValueModel.

The JFormattedTextField is configured with an AbstractFormatter that uses two different DateFormats to edit and display the Date. A SHORT DateFormat with strict checking is used to edit (parse) a date; the DateFormatter's default DateFormat is used to display (format) a date. In both cases null Dates are mapped to the empty String.

In addition to formatted Dates, the parser accepts positive and negative integers and interprets them as Dates relative to today. For example -1 is yesterday, 1 is tomorrow, and 7 is "in a week".

Yesterday, today, and tomorrow are displayed as these Strings, not as formatted Dates.

Specified by:
createDateField in interface FormComponentFactory
Parameters:
valueModel - the model that holds the value to be edited
Returns:
a formatted text field for Date instances that is bound
Throws:
NullPointerException - if the model is null

createDateField

public JFormattedTextField createDateField(com.jgoodies.binding.value.ValueModel valueModel,
                                           boolean enableShortcuts)
Creates and returns a formatted text field that is bound to the Date value of the given ValueModel.

The JFormattedTextField is configured with an AbstractFormatter that uses two different DateFormats to edit and display the Date. A SHORT DateFormat with strict checking is used to edit (parse) a date; the DateFormatter's default DateFormat is used to display (format) a date. In both cases null Dates are mapped to the empty String.

In addition to formatted Dates, the parser accepts positive and negative integers and interprets them as Dates relative to today. For example -1 is yesterday, 1 is tomorrow, and 7 is "in a week".

If enableShortcuts is set to true, yesterday, today, and tomorrow are displayed as these Strings, not as formatted Dates.

Specified by:
createDateField in interface FormComponentFactory
Parameters:
valueModel - the model that holds the value to be edited
enableShortcuts - true to display yesterday, today, and tomorrow with natural language strings
Returns:
a formatted text field for Date instances that is bound
Throws:
NullPointerException - if the model is null

createDateField

public JFormattedTextField createDateField(com.jgoodies.binding.value.ValueModel valueModel,
                                           boolean enableShortcuts,
                                           boolean commitsOnValidEdit)
Creates and returns a formatted text field that is bound to the Date value of the given ValueModel.

The JFormattedTextField is configured with an AbstractFormatter that uses two different DateFormats to edit and display the Date. A SHORT DateFormat with strict checking is used to edit (parse) a date; the DateFormatter's default DateFormat is used to display (format) a date. In both cases null Dates are mapped to the empty String.

In addition to formatted Dates, the parser accepts positive and negative integers and interprets them as Dates relative to today. For example -1 is yesterday, 1 is tomorrow, and 7 is "in a week".

If enableShortcuts is set to true, yesterday, today, and tomorrow are displayed as these Strings, not as formatted Dates.

Specified by:
createDateField in interface FormComponentFactory
Parameters:
valueModel - the model that holds the value to be edited
enableShortcuts - true to display yesterday, today, and tomorrow with natural language strings
commitsOnValidEdit - true to commit on valid edit, false to commit on focus lost
Returns:
a formatted text field for Date instances that is bound
Throws:
NullPointerException - if the model is null

createDateTimeField

public JFormattedTextField createDateTimeField(com.jgoodies.binding.value.ValueModel model)
Specified by:
createDateTimeField in interface FormComponentFactory

createDoubleField

public JFormattedTextField createDoubleField(com.jgoodies.binding.value.ValueModel model)
Specified by:
createDoubleField in interface FormComponentFactory

createDoubleSpinner

public JSpinner createDoubleSpinner(com.jgoodies.binding.value.ValueModel model,
                                    Double defaultValue,
                                    Double min,
                                    Double max,
                                    Double stepSize)
Specified by:
createDoubleSpinner in interface FormComponentFactory

createFileChooser

public JButton createFileChooser(com.jgoodies.binding.value.ValueModel model,
                                 Component parent)
Specified by:
createFileChooser in interface FormComponentFactory

createFileChooser

public JButton createFileChooser(com.jgoodies.binding.value.ValueModel model,
                                 Component parent,
                                 int fileSelectionMode)
Specified by:
createFileChooser in interface FormComponentFactory

createFontChooser

public JButton createFontChooser(com.jgoodies.binding.value.ValueModel fontNameModel,
                                 com.jgoodies.binding.value.ValueModel fontStyleModel,
                                 com.jgoodies.binding.value.ValueModel fontSizeModel,
                                 Component parent)
Specified by:
createFontChooser in interface FormComponentFactory

createImageChooser

public JButton createImageChooser(com.jgoodies.binding.value.ValueModel model,
                                  Component parent)
Specified by:
createImageChooser in interface FormComponentFactory

createIntegerField

public JFormattedTextField createIntegerField(com.jgoodies.binding.value.ValueModel model)
Specified by:
createIntegerField in interface FormComponentFactory

createIntegerSlider

public JSlider createIntegerSlider(BoundedRangeModel m)
Specified by:
createIntegerSlider in interface FormComponentFactory

createIntegerSlider

public JSlider createIntegerSlider(com.jgoodies.binding.value.ValueModel model,
                                   int min,
                                   int max,
                                   int stepSize)
Specified by:
createIntegerSlider in interface FormComponentFactory

createIntegerSpinner

public JSpinner createIntegerSpinner(com.jgoodies.binding.value.ValueModel model,
                                     int defaultValue,
                                     int min,
                                     int max,
                                     int stepSize)
Specified by:
createIntegerSpinner in interface FormComponentFactory

createList

public <E> JList createList(ca.odell.glazedlists.EventList<E> list,
                            ca.odell.glazedlists.swing.DefaultEventSelectionModel<E> selModel)
Specified by:
createList in interface FormComponentFactory

createList

public <E> JList createList(ca.odell.glazedlists.EventList<E> dataList,
                            ca.odell.glazedlists.swing.DefaultEventSelectionModel<E> selModel,
                            ListCellRenderer cellRenderer)
Specified by:
createList in interface FormComponentFactory

createList

public <E> JList createList(com.jgoodies.binding.list.SelectionInList<E> selectionInList)
Specified by:
createList in interface FormComponentFactory

createList

public <E> JList createList(com.jgoodies.binding.list.SelectionInList<E> selectionInList,
                            ListCellRenderer cellRenderer)
Specified by:
createList in interface FormComponentFactory

createList

public <E> JList createList(com.jgoodies.binding.value.ValueModel model)
Specified by:
createList in interface FormComponentFactory

createLocalFileChooser

public JButton createLocalFileChooser(com.jgoodies.binding.value.ValueModel model,
                                      Component parent)
Specified by:
createLocalFileChooser in interface FormComponentFactory

createLocalFileChooser

public JButton createLocalFileChooser(com.jgoodies.binding.value.ValueModel model,
                                      Component parent,
                                      int fileSelectionMode,
                                      boolean doSave)
Specified by:
createLocalFileChooser in interface FormComponentFactory

createLongField

public JFormattedTextField createLongField(com.jgoodies.binding.value.ValueModel model)
Specified by:
createLongField in interface FormComponentFactory

createLongSpinner

public JSpinner createLongSpinner(com.jgoodies.binding.value.ValueModel model,
                                  long defaultValue,
                                  long min,
                                  long max,
                                  long stepSize)
Specified by:
createLongSpinner in interface FormComponentFactory

createRadioButton

public JRadioButton createRadioButton(com.jgoodies.binding.value.ValueModel model,
                                      Object choice,
                                      String text)
Creates and returns a radio button with the specified text label that is bound to the given ValueModel. The radio button is selected if and only if the model's value equals the specified choice.

The model is converted to the required ToggleButton using a RadioButtonAdapter.

Specified by:
createRadioButton in interface FormComponentFactory
Parameters:
model - the model that provides the current choice
choice - this button's value
text - the radio buttons' text label
Returns:
a radio button with the specified text bound to the given model, selected if the model's value equals the specified choice
Throws:
NullPointerException - if the valueModel is null

createReportIconAndTextPane

public JComponent createReportIconAndTextPane(com.jgoodies.validation.ValidationResultModel model)
Creates and returns a transparent panel that consists of a report label and a transparent report text area. Both components are bound to the given ValidationResultModel: the text content presents the validation result message text and the whole panel is visible if and only if the model has messages.

Specified by:
createReportIconAndTextPane in interface FormComponentFactory
Parameters:
model - the model that provides the observable validation result
Returns:
a panel with icon and text area bound to a validation result

createReportTextArea

public JTextArea createReportTextArea(com.jgoodies.validation.ValidationResultModel model)
Creates and returns a text area that is intended to show validation messages. The area is bound to the given ValidationResultModel: the text content reflects the validation result message text and the component is visible if and only if the model has messages.

Parameters:
model - the model that provides the observable validation result
Returns:
a text area intended to show validation messages

createReportTextArea

public JTextArea createReportTextArea(com.jgoodies.validation.ValidationResultModel model,
                                      Color backgroundColor)
Creates and returns a text area that is intended to show validation messages. The area is bound to the given ValidationResultModel: the text content reflects the validation result message text, and the component is visible if and only if the model has messages.

Parameters:
model - the model that provides the observable validation result
backgroundColor - the color used to paint the area's background
Returns:
a text area intended to show validation messages

createTextArea

public JTextArea createTextArea(com.jgoodies.binding.value.ValueModel valueModel)
Specified by:
createTextArea in interface FormComponentFactory

createTextArea

public JTextArea createTextArea(com.jgoodies.binding.value.ValueModel valueModel,
                                boolean commitOnFocusLost)
Specified by:
createTextArea in interface FormComponentFactory

createTextField

public JTextField createTextField(com.jgoodies.binding.value.ValueModel model)
Specified by:
createTextField in interface FormComponentFactory

createTextField

public JTextField createTextField(com.jgoodies.binding.value.ValueModel model,
                                  boolean commitOnFocusLost)
Specified by:
createTextField in interface FormComponentFactory

createTimeField

public JFormattedTextField createTimeField(com.jgoodies.binding.value.ValueModel vm)
Specified by:
createTimeField in interface FormComponentFactory

createToolBarButton

public JButton createToolBarButton(String formId,
                                   String buttonId)
Specified by:
createToolBarButton in interface FormComponentFactory

getDefaultImageDirectory

public File getDefaultImageDirectory()
Specified by:
getDefaultImageDirectory in interface FormComponentFactory

setDefaultImageDirectory

public void setDefaultImageDirectory(File imageDirectory)
Specified by:
setDefaultImageDirectory in interface FormComponentFactory

createFormattedTextField

protected JFormattedTextField createFormattedTextField(com.jgoodies.binding.value.ValueModel model,
                                                       JFormattedTextField.AbstractFormatter formatter)

createFormattedTextField

protected JFormattedTextField createFormattedTextField(com.jgoodies.binding.value.ValueModel model,
                                                       JFormattedTextField.AbstractFormatterFactory formatterFactory)

createReportIconLabel

protected JLabel createReportIconLabel(com.jgoodies.validation.ValidationResultModel model)
Creates and returns an icon label that indicates the validation severity. A handler updates the label's visibility and icon each time the severity of the given validation result model changes.

Parameters:
model - the model that provides the observable validation result
Returns:
a label with an icon that presents the validation severity

getCheckIcon

protected static ImageIcon getCheckIcon()
Returns a check icon useful to indicate good vs. no good.

Returns:
a check icon

getErrorIcon

protected static ImageIcon getErrorIcon()
Returns a default error icon useful to indicate validation errors.

Returns:
a default error icon

getIcon

protected static Icon getIcon(com.jgoodies.validation.Severity severity)
Returns the warning icon for warnings, the error icon for errors and null otherwise.

Parameters:
severity - the severity used to lookup the icon
Returns:
the warning icon for warnings, error icon for errors, null otherwise
See Also:
getWarningIcon(), getErrorIcon(), getSmallIcon(Severity)

getInfoIcon

protected static ImageIcon getInfoIcon()
Returns a default information icon useful to indicate input hints.

Returns:
a default information icon

getSmallErrorIcon

protected static ImageIcon getSmallErrorIcon()
Returns a small default error icon useful to indicate validation errors attached to UI components.

Returns:
a small default error icon

getSmallIcon

protected static Icon getSmallIcon(com.jgoodies.validation.Severity severity)
Returns the small warning icon for warnings, the small error icon for errors and null otherwise.

Parameters:
severity - the severity used to lookup the icon
Returns:
the small warning icon for warnings, the small error icon for errors, null otherwise
See Also:
getSmallWarningIcon(), getSmallErrorIcon(), getIcon(Severity)

getSmallInfoIcon

protected static ImageIcon getSmallInfoIcon()
Returns a small default information icon useful to indicate input hints.

Returns:
a small default information icon

getSmallWarningIcon

protected static ImageIcon getSmallWarningIcon()
Returns a small default warning icon useful to indicate validation warnings attached to UI components.

Returns:
a small default warning icon

getWarningIcon

protected static ImageIcon getWarningIcon()
Returns a default warnings icon useful to indicate validation warnings.

Returns:
a default warning icon

createDialogButton

public JButton createDialogButton(String applicationId,
                                  FormComponentFactory.ButtonType type)
Specified by:
createDialogButton in interface FormComponentFactory

createDialogButton

public JButton createDialogButton(String applicationId,
                                  String buttonId)
Specified by:
createDialogButton in interface FormComponentFactory

SRJRCFrames
v0.1.296

hosted at
Find SRJRCFrames at SourceForge.net. Fast, secure and free:
           Open Source Software download
Submit a bug or request a feature

SRJRCFrames is published according to the GNU General Public License
Copyright 2005-2012 Reinhard Mantey - some rights reserved.