JSuite(TM)
Java(TM) Controls
This document contains release notes for JSuite. Information in this document is more current than the on-line Help.
Included Samples
The Samples sub-folder of your product installation folder contains various samples demonstrating the use of the product.
Problems Corrected, New Features, and Changes In This Release (7.07.000)
April,
2004:
JST127 - Column Header loses font settings when Row Label width set to
zero
JPVTable:setHeaderAlignment (not visible by user bug,- only wrong value of
internal variable)
PVTableModel:setRowTracking (first row might be skipped)
PVTable:ROW_LABEL_CLICKED and COLUMN_HEADER_CLICKED events did not fire until
table has focus cell
JST96 - Cut and paste does not work in pvEdit with Jsuite 7(AWT), and IE6 in XP
JVC 43 - Scatterchart labels always say "Series #1", "Series #2", etc.
JVC 48 - Using scatter chart, a zero in the groupby column causes the row to not
be drawn.
JST 133 -JFCChart demo and relese jars have different behavior when displaying
string data
Problems Corrected, New Features, and Changes In This Release (7.04.000)
November,
2003:
JVC40 - Linechart has
different thickness for segments in the same line, pretty much all line segments
in the chart are of different thickness depending on angle. The
LineChartAppearance has new boolean property get/setRectangleShapes.
The value of true will enable painting wide lines as rectangles. It will lead to
the equal widths of all lines, though connections between lines will not be
smooth.
Example to use:
chart.getLineChart().setRectangleShapes(true);
JVC39 - Line for line chart extends off the chart when turning on RowLabels.
JST121 - Setting ColumnHeaderHeight to 0 in a PVTable also removes row labels.
JST120 - When setBorderStyle is zero and setRowLabelWidth is zero, the PVTable
has no left vertical line, but does have a right line.
JST115 - When you have JPVTable editmode set to 3 if you select a cell and type
into it the first character is overwritten
JST114 - Tree takes a very long time to refresh and repaint large numbers of
nodes, 50,000 plus
JST112 - JPVDate and JPVDatePlus replace the wrong character when highlighting
and hitting a key
JST111 - Appointments don't show in the calendar when i set the timezone on my
machine to Central
JST109 - JPVCalendar does will not let you include today in a range selection if
today is the upper limit
JST107 - JPVTable takes a long time to sort large datamodels
JST106 - If the first column in JPVTable uses the First column as row labels
then multiple row selection with control key does not work
JST100 - JPVTree does not scroll when you drag a node to the border.
Problems Corrected, New Features, and Changes In This Release (7.0.000) March, 2003:
Now includes JFCChart and ServerChart. PowerChart removed.
Problems Corrected, New Features, and Changes In This Release (6.1.000) October, 2002:
Now includes PowerChart Server Edition
Problems Corrected, New Features, and Changes In This Release (6.01.000) July, 2002:
New action event:
PAINT_EVENT
- it is fired when calendar is painted.
New action event:
PAINT_EVENT
- it is fired when calculator is painted.
New property:
get/setKeepPressedOperationButton
- ability to keep button that
represents current/last operation in pressed state.
Fixes:
1. The methods setText/setLong/setDouble
besides change of value,
reset current operation.
2. Under jdk1.4 the first-digit entered by a calculator-button does not
highlight all text in entry field and next entry does not erase first digit.
Fixes:
1. Properties related to colors and appearance are supported and have effect at
design and run time.
2. Text of labels for vertical axis of 2D charts are moved 2 pixels away from
axis which prevents overlapping axis by strings
3. Last label on horizontal axis of 2D bar-chart is not painted if its width
does not fit in window.
4. Rounding problem of default java conversion "double" to string for interval
labels. Java by default after calculation similar to <0.3*3 =0.9> converts 0.9
to "0.899999999996" string which looks strange as an axis label.
5. Restored ability to change colors of charts using Tool dialog of PowerPanel.
6. Some optimization of code that decreased size of some classes.
Changes:
1. Added 3 new styles of color models:
1) - setRowColorMethod(4) - all rows in a column are painted by the same
color which is defined by getColumnColorMethod
2) - setRowColorMethod(5) - the colors of data are defined by combination of
colors of row and column where data is belong
3) - setColumnColorMethod(4) - all columns in a row are painted by the same
color which is defined by getRowColorMethod
2. Support for auto adjustment of intervals when values of data are less than
10.
3. Support for editing and display data which values are less than 1.
4. Edit field is not moved while editing data.
5. Edit mode is closed on mouse click and on focus lost events.
6. Edit field is not blinking while editing.
Changes:
1. The ability to get focus by the memory field in drop-down calculator by
default has been disabled.
2. Drop-down calculator is closed when Tab key is pressed.
3. If color is never initialized or set to null, then background color of
container is used to paint component instead of the first color at the current
palette.
Fixes:
1. If color was never initialized, then now it is not automatically set to the
first color of the first palette.
2. If color in drop-down palette was modified and
PVColor
had that
color as the selected color and that new color was selected again, then now
PVColor
is updated by that new color.
3. Alignment of text when the size of image is set to 0 or when a custom image
with large width is set.
New method:
setEditableEvents
- allows to specify events that will open
palette-editor-dialog: the character (it used to be Space-key) and
right-mouse-click (it used to be true).
New feature:
FocusListener
can be used to process composite focus events. Focus
events are not fired when focus is switched from edit field to drop-down list.
New method:
checkFocus()
- returns a flag that represents state/location of
input focus.
Fixes:
1. Problems related to jdk1.4.
2. Browser does not raise exception, when it is closed while drop-down list is
opened.
Fix:
The DONE
and
CANCEL
action events are fired when
Enter/Escape keys are pressed regardless where focus is.
Change:
The dialog for drop-down calendar by default is constructed as modeless, because
some implementations of Java VM fail to create a modal dialog.
New public member variables:
1. boolean m_modal
- allows to create modal dialog for drop-down
calendar instead of default modeless.
2. String m_title
- allows to specify title of dialog for drop-down
calendar
Fixes:
1. The ability to edit appointment in-line under Linux
2. The ability to edit appointment by-dialog under Linux.
New action events:
1. FOCUS_APPOINTMENT
- it is fired when index of focus appointment
had changed
2. SHOW_CUSTOM_DIALOG
- it is fired when custom dialog to edit an
appointment is requested
New property:
get/setCustomEditDialog(boolean)
- use custom dialog to edit
appointments instead of default.
New method:
setFocusTraversable(boolean)
- disable default ability to receive
focus.
Fixes for pv.awt.PVEdit:
1. The caret thread misbehavior under Linux.
2. The caret thread exceptions in Netscape under Linux.
1. PVExplorer does not keep old selection in table when selected node is
changed.
2. If sorting in table was set, then data in PVExplorer is automatically sorted
while navigating between nodes.
Change:
The default value of m_modal
member variable has been changed from
true to false, because some implementations of Java VM fail to create a modal
dialog.
Fix:
When drop-down calculator is opened, then its previous operation is cleared.
Fix:
Foreground with default constructor is set to black color.
Fix:
The mouse drag of the thumb under Linux used to fail.
New feature:
Custom background of a tab (implemented after a customer's request)
Fixes:
1. The indexAt
method for the first column when table is scrolled
to the left is fixed.
2. Mouse click on locked columns other than row-labels, when table is scrolled
to the left, does not scroll table to the right.
3. Mouse drag that sets block selection, when table is scrolled to the left, may
set selection for locked columns as well as for all other columns.
4. Not painted area at the bottom of table on initial paint when row height is
set to the value larger than default and table has only a few rows.
Fixes:
1. The setComponent
method of
PVCell
class had no
effect, when it was applied alone without modification of any other property of
PVCell
.
2. Scroll by mouse drag while selecting cells or rows.
3. If PVTable does not have a selected row, then mouse-click on column headers
does not automatically select the first row.
Fix:
The only single focus appointment may exist among all days in
PVWeek
.
New method:
getFocusAppointment
- get reference to the focus appointment.
Notes for JavaScript and compatibility with plug-in from jdk1.4:
m_comp, m_frame
, etc. should not be
used. Recommendation: use methods that wrap those variables.Class
) in
the addTarget
method should not be used. Recommendation:
use the "String" or PVScript.toClass
method.
toFont(String)
method should not be used.
Recommendation: use the PVScript.setFont(String)
or
PVScript.setFontToObject
method.
boolean
such as
true
or
false
values and boolean conditions should not be used as parameters in methods of
java objects. Recommendation: use the
PVScript.setBool
method.PVScript
and
which return objects other than String
should not be used.
Recommendation: use the PVScript.getObjectFromName
method.
PVScript
or any of its
extension and write wrappers with unique names.
PVScript:
1. The toStr(Date)
method has been renamed to
toStringFromDate(Date)
2. The toStr(Date,Format)
method has been renamed to
toStringFromDate2(Date,Format)
3. The toStr(Vector,char,char)
method has been renamed to
toStringFromVector(Vector,char,char)
4. The toStr(Vector,String,char,char)
method has been renamed to
toStringFromVector2(Vector,String,char,char)
5. The toDate(String,String)
method has been renamed to
toDate2(String,String)
6. The toVector(String,Object,String,char,char)
method has been
renamed to toVector2(String,Object,String,char,char)
7. The setBackground(String)
method has been renamed to
setBackgroundFromString(String)
8. The setForeground(String)
method has been renamed to
setForegroundFromString(String)
9. The setFont(String)
method has been renamed to
setFontFromString(String)
10. The setLocale(String)
method has been renamed to
setLocaleFromString(String)
11. New method: void setImage(String)
12. New method: void setBool(Object,String,int)
13. New method: void setFontToObject(Object,String,String)
14. New method: Object getObjectFromName(String)
PVScriptChoice:
1. New method: Component getButtonObject()
2. New method: Component getEditor()
PVScriptSpin:
1. New method: PVButton getButton1()
2. New method: PVButton getButton2()
PVScriptChart:
1. New method: int getType()
2. New method: PVDataModel getModel()
PVScriptTree:
1. New method: PVNode getRootNode()
2. New method: PVNode getChildAt(PVNode,int)
3. New method: PVNode addNode(PVNode,int,String,int,int)
PVScriptColor:
1. The addTarget(Object, String)
method has been removed.
2. New applet-parameter imageAlignment
has been added.
PVScriptTimer:
1. The addTarget(Object, String, Object)
method has been removed.
2. New method: void setFiring(int)
3. New method: boolean isFiring()
PVScriptTable:
1. New method: void setFiring(int)
2. New method: int getFocusRowIndex()
3. New method: int getFocusColumnIndex()
4. New method: char getCellSeparator()
5. New method: char getRowSeparator()
5. New method: PVRow getRow(int)
5. New method: PVColumn getColumn(int)
5. New method: PVCell getCell(int,int)
3. New method: Vector getData()
3. New method: int insertData(String,int)
3. New method: PVDataModel getDataModel()
Components from pv.jfcx:
1. Background color is changed from Color.lightGray
to a lighter
gray color which matches with Metal LookAndFeel background.
2. Background is painted explicitly, because some visual tools fail to paint it.
3. Background of the "Update" buttons are not specified (default is used).
Components from pv.awt:
1. Background color is not set.
2. Background is painted explicitly using background of container.
3. Background of the "Update" buttons are not specified (default is used).
4. Events from checkboxes are not processed (JBuilder7 does not allow to
addItemListener
to
java.awt.Checkbox
).
Inserted the <code> tags in html docs where the methods, class-fields and samples of codes are referenced.
Changes:
1. Sample DemoTable3 that shows how to use JPVChoice as cell editor for JPVTable
has been modified.
2. Sample DemoTab shows how to customize background of a tab.
3. Sample DemoSpin has more labels that explain what every components do.
4. Samples DemoNumP and DemoDateP are modified to fit with new default value for
modal state of drop-down dialogs.
5. Sample DemoDay1 outputs additional
FOCUS_APPOINTMENT
action
event.
6. Sample DemoTree2 for pv.jfcx
shows how to add nodes at run time.
7. New sample DemoDay4 shows how to use custom dialog to edit appointments.
8. All samples for JavaScript such as DemoScriptActs, DemoScriptDate, etc. have
been modified to accommodate changes in the pv.script
package and
to solve problems related to the plug-in object.
Problems Corrected, New Features, and Changes In This Release (6.00.000) November, 2001:
JSuite now contains Swing classes and AWT classes.
JSuite includes 4 sets of component libraries located in following packages:
New Components
pv.jfcx.JPVScrollBar/pv.awt.PVScrollBar
- New class designed to implement the behavior of scrollbar. It has wide variety of properties and methods that allow you to customize its appearance and behavior.
pv.jfcx.JPVGantt
- New class designed to display hierarchical data . It includes two major UI components. The tree is located on the left side and the data that belong to nodes are represented by horizontal rectangles painted on the right side.
pv.jfcx.JPVWeek/pv.awt.PVWeek
- New class designed to display and edit appointments for multiple days. It includes array of PVDay components, date selector and scrollbars.
pv.util.PVBar
- New class. It stores various member variables and paints a rectangle using particular colors, borders, text, image, etc. It is used by the JPVGantt.
pv.util.PVModel
- New interface. It has two methods that are designed to obtain data and appearance for particular object(s).
New Server Components
ACL
The Access Control List component is used to give various roles to users of a system where each role consists of a set of one or more attributes. A client can use the ACL component by finding the user name and the corresponding role and check before any functionality is used that the client has the proper level of authority. A client can further check whether a role has the required attributes.
- The ACL consists of 3 parts: Attributes, Roles, Users
- Attributes are the functions in a system in which users have a role. For example: a user can have the facility to delete (id 7)
- Roles are specified by a congregation of one or more attributes. For example: an administrator, whose attribute ids may be 7,6 and 2.
- Users are all the people / other systems which have a role id in a system.
ConnectionPool
The Connection Pooling component maintains a specified pool of connections at start up.
Whenever a client makes a call to get connection, if a connection is available then the connection is returned. If a connection is not available and the maximum connections are already in use the component will keep trying until the specified time out is reached. If the maximum connections are not in use then a new connection will be created and added to the pool and returned. The main advantage of using this connection pool is that a client does not have to explicitly write any time dependant code to wait until a connection is available. Instead a client just sets the time a client should wait for the pool to return a connection. As soon as the connection is available the pool returns the connection or if the timeout set is over it throws an exception.
Password
The Password component implements an authentication mechanism to validate User Id and Password against a directory server or database. It facilitates the ability to add a new user profile or manage existing user profiles. Features include:
Password authentication on directory servers including Active Directory Server, and Netscape (iPlanet) Directory Server.
- Password authentication on database; encryption mechanism implemented.
- Change password on the directory server
- Change password on database
- Add new entries (user id & password) to the directory server
- Delete authorized entries on the directory server
- Modify the attributes of entries authorized on the directory server
Changes To Components
pv.jfcx.JPVButton/pv.awt.PVButton
pv.jfcx.JPVImageButton/pv.awt.PVImageButton
pv.jfcx.JPVRoundButton/pv.awt.PVRoundButton
pv.jfcx.JPVCalculator/pv.awt.PVCalculator
pv.awt.PVImageButton
button = pvCalc1.button(10);
button.setFileImageAt("images/myImage.gif", 0);
pv.awt.PVButton button =
pvCalc1.button(10);
button.setFileImageAt("images/myImage.gif", 0);
pv.jfcx.JPVCalendar/pv.awt.PVCalendar
pv.jfcx.JPVChoice/pv.awt.PVChoice/pv.awt.PVCombo
PVImageButton button =
(PVImageButton)pvChoice1.getButtonObject();
button.setFileImageAt("images/myImage.gif", 0);
PVButton button =
(PVButton)pvChoice1.getButtonObject();
button.setFileImageAt("images/myImage.gif", 0);
pv.jfcx.JPVDay/pv.awt.PVDay
pv.jfcx.JPVEdit
pv.jfcx.JPVSpin/pv.awt.PVSpin
Example:
pv.awt.PVImageButton
buttons[] = pvSpin1.getButtons();
buttons[0].setFileImageAt("images/myImage.gif",
0);
pv.awt.PVButton buttons[] =
pvSpin1.getButtons();
buttons[0].setFileImageAt("images/myImage.gif",
0);
pv.awt.PVTable
pv.awt.PVTree
pv.jfcx.JPVTree
pv.util.PVBorder
pv.util.PVImage
pv.util.PVUtility
pv.shape package
Problems Corrected, New Features, and Changes In This Release (5.01.000) May, 2001:
Problems Corrected, New Features, and Changes In (5.00.000) February, 2001:
Additional Old JDK 1.1 Classes Folder: The old jdk 1.1 and JFC 1.0.3 versions of our classes have been separated out as an overlay to the other JFCSuite files. Most people will want the new JDK 1.2 or 1.3 JFC classes.
If you had JFCSuite before (and use visual design tools)
Locations of some beans in JFCSuite version-5 have been changed compare to version-4. Some shared classes have also were modified. Therefore, before updating or importing new beans, you should remove from a visual tool all previously installed beans that came from old versions of JFCSuite.
Power Chart V2.0 ActiveImages(tm)
Power Chart V2.0 New chart types (new feature chart scaling and data normalization)
PowerChart Major Bug Fixes
Problems Corrected, New Features, and Changes in (4.01.000) January, 2001:
All components:
- Validation for parent while painting shadow. It allows to use paint
routine of a component without adding it to a container.
- Majority of components from pv.awt package have new property get/setDoubleBuffered.
If the creation of the off-screen image for any reason failed, then painting
is performed straight on the graphics.
Customizers for all components
- All nested classes had been removed.
- The Update button - to notify visual tool (listeners) about
modified properties. The PropertyChangeListener is suspended until
that button is pressed.
Some individual jar-beans have been replaced by sets of beans:
- pvxButtons.jar = pvxButt.jar + pvxImBut.jar + pvxRound.jar
- pvxEdits.jar = pvxEdit.jar + pvxCurr.jar + pvxNum.jar + pvxMask.jar +
pcxTime.jar + pvxPass.jar + pvxStatic.jar
- pvxDates.jar = pvxDate.jar + pvxDateL.jar + pvxDateP.jar + pvxDateLP.jar +
pvxCal.jar + pvxCalP.jar + pvxDay.jar
JPVCurrency/JPVNumeric
- New properties:
get/set1000Multiplier(anyCharacter)
get/set1000000Multiplier(anyCharacter)
JPVCurrency
- Bug fix:
setDouble(double) - it incremented last decimal
digit by 1 (accidental bug in JFCSuite3.00 only)
JPVButton
- New properties:
get/setActionCommand - command string for ActionEvent
- New features:
Support for "opaque-off" - transparent painting
addGlobalKey(int) - set a key that triggers action
event if it is pressed while focus belongs to any component in an
application-window. It allows to configure button as "Default/OK",
"Cancel", etc. styles.
JPVCalendar
- Changes:
The custom strings are aligned to the bottom of day-cells.
Implementation of the getMinimumSize has been
removed.
JPVCalendarPlus
- Change:
The default value of the get/setAutoAddCustomDate
has been changed from false to true.
JPVEdit
- New features:
Support for "opaque-off" - transparent painting
Support for underlined text: setFontStyle(UNDERLINE)
JPVTable
- Change:
PVTableModel::get/setAutoColumnClass - the default
value of 2 has been replaced by 1. It disables searching for the first
not-null value of a cell in a column while implementing the getColumnClass
method. It would slow down painting if table contains too many rows with null
cells. The used-to-be value can be adjusted by the ((pv.jfcx.PVTableModel)pvTableView1.getModel()).setAutoColumnClass(2);
PVTableRenderer - extends JLabel instead of Object.
That gives ability to customize painting by extending. Private nested
paint-classes had been removed.
- Bug fix:
setEditable(false) - it was accidently disabled in
JFCSuite3.00.
Checkbox still could be edited by mouse if a cell should be
not editable.
In some cases while the passive edit mode the JPVEdit
could accept the BackSpace and Delete keys as characters.
Support for active edit mode for COMBO editors
(enable up/down arrows, key-selection, etc.)
Processing Escape and Enter keys for COMBO in
active edit mode.
Support to start editing from code for checkboxes.
Additional validation of focus row and column inside of
paint routine,- to avoid possible timing conflicts between JTable and its
selection models.
- New properties:
get/setEditMode - 5 styles to start editing
PVTableRenderer::get/setNullCheckbox - do not
paint checkbox image for null cells
PVTableRenderer::get/setLine - draw additional
line under/over/above text
- New features (pv.jfcx.JPVTable only):
New sort images in column headers:
normal, small and tiny triangles
for primary, secondary and tertiary sort priorities
get/setPVUI - enable private nested UI that
implements locked columns and merged cells. It also fixes gradually
depleting painting while scrolling of the default JTable.
get/setLockedColumns(count) - disable scrolling
the first-count columns.
Any column can be dragged to the left and automatically
become locked.
Table is validated and scrolled if the focus cell is moved
by arrows to the left and become hidden under locked columns.
Column headers are synchronized with cells of table.
Dragging/resizing locked columns by mouse is disabled if
table is scrolled to left.
For printing the default painting is used.
automatic locking the 1st column if row labels are enabled.
get/setMultiline - 5 styles to draw multilined
column headers (including vertical text)
MERGED CELLS
m_cells - public vector of merged cells (serializable)
addCell(topRow, bottomRow, leftColumn, rightColumn)
- add the merged cell
removeCell(row, column) - unmerge the merged
cell that contains row and column
resetCells - remove all merged cells
inside(Insets cell, int row, int col) - check if
merged cell contains row and column
cellAt(row, column) - find the merged cell that
contains row and column
mergeColumn(col) - merge cells with same values in
a column
mergeColumn(col, row1, row2) - merge cells with
same values in a column in range of rows
setMergeOnSort(style) - automatically merge cells
in column(s) after sort
0 - do not modify merged cells on
sort.
1 - merge cells only in the primary
sort column.
2 - merge cells in all sorted
columns keeping sort priority.
get/setMergeMovement - synchronize (rebuild)
merged cells if column is moved (dragged by mouse)
drawCells/drawCell/drawHeads/drawHead - ability to
override painting cells and headers: customize CELL PAINTING BYPASSING any
SWING paint routine.
- Improvements:
Better control over dragging columns to locations which are
not allowed.
No movements (even partial) of "static" columns.
No overlapping (even partial) of columns that could not be exchanged.
JPVTableView
- New properties:
get/setSortingCaseOn - option to sort column
ignoring case while auto sorting (column header click)
get/setSortingNulls - option to move rows with
null values of cells at the end after sorting
JPVTree
- Bug fix:
Custom plus and minus images were swapped
- New property:
m_image - background image (Icon or Image)
available only when setOpaque(false)
- New features:
Support for "opaque-off" - transparent painting (pv.jfcx
only)
Support for check-box and radio-button images for nodes. It
includes automatic LookAndFeel images, ability to disable editing of the
"button-state" and customize painting.
JPVDay
- Changes:
The appointment editor JTextArea is replaced by
the JTextField.
Implementation of the getMinimumSize has been
removed
- New feature:
Support for "opaque-off" - transparent painting
JPVDatePlus/JPVDateLongPlus
- New property:
get/setDialog - open drop-down calendar in
dialog/window.
- Change:
If the "Warning..." browser-label
appears at the bottom of the drop-down calendar, then height of the
calendar-window is increased by the height of that label.
JPVDate/JPVCalendar/JPVTime
- New property:
get/setCalendar - support for instances of the Calendar
class.
- Bug fix:
Initialization of component to the current date for Western
US and other time zones - the new GregorianCalendar() is used instead
of new Date().
JPVChoice
New Component
JPVTime
- Improvement:
Validation logic of date fields while keyboard entering has
been modified: an invalid entry for a field automatically becomes an entry for
the next field. For example, continues typing of "277a" will build
following string: "2:7:7 AM".
Chart
- New set of classes for visual representation of data.
Flat and 3D styles.
Column, area, surface, line, pie, candle, stock, etc.
styles.
Power panel to edit properties of a chart at run time.
JPVImage
- New class.
Save image of a component as a jpg file or write
that image to a stream.