------------------------------------------------------------------------------- Version 0.7.105 Feature changes: - Matrix.computeSize(int, int) can get size larger than the display size. ------------------------------------------------------------------------------- Version 0.7.104 Feature changes: - Painting text with hard line breaks API changes: ------------------------------------------------------------------------------- Version 0.7.103 Bug fixes: - Fix mistakes introduced in the previous version API changes: - Painter.textLayout is not public any more ------------------------------------------------------------------------------- Version 0.7.102 Bug fixes: - Autosize cells with text wraping ------------------------------------------------------------------------------- Version 0.7.101 Bug fixes: - Layout was not computed correctly when enlarged from a very small size ------------------------------------------------------------------------------- Version 0.7.100 Bug fixes: - NullPointerException while resizing ------------------------------------------------------------------------------- Version 0.7.99 Bug fixes: - Selecting all in a zone with one of the axis empty resulted in a non empty selection ------------------------------------------------------------------------------- Version 0.7.98 Bug fixes: - Dragging a group of columns changes the selection unexpectedly (DE1861) - Text doesn't fit in table cells if user has changed text size to 125% (DE1859). It fixes only the height for the default painter. If a custom painter requires a different height than the default one than the height must be set separately. - Copy/paste works according to model order insted of visible order API changes: - Added Section.getInvisible() ------------------------------------------------------------------------------- Version 0.7.97 Bug fixes: - Reorder, select all and move could produce wrong results ------------------------------------------------------------------------------- Version 0.7.96 Bug fixes: - Row selection is partial when the columns are reordered ------------------------------------------------------------------------------- Version 0.7.95 Bug fixes: - It was possible to move a not moveable item if it was part of selection together with moveable items ------------------------------------------------------------------------------- Version 0.7.94 Feature changes - Ability block drag move destinations Bug fixes: - Editor control does not move when the content is scrolled - Clicking on the merged upper header cell, the columns beneath are not selected as a block but individually (depending on mouse x) - Selecting all columns by CTRL+clicking on their headers, the upper header cell does not get selected. - After moving a merged column the block is not fully selected - Moving columns with modified order 0 2 1 was changing their order to 2 0 1 - Resize marker of the merged columns is incorrect API changes: - Added Section.setMoveableTo(Number, boolean) - Added Section.setMoveableTo(Number, Number, boolean) - Added Section.isMoveableTo(Number) ------------------------------------------------------------------------------- Version 0.7.93 Feature changes: - Removed dragLeave from S0911_CustomDragAndDrop Bug fixes: - Moving item 1,2,3 before 3 creates the order 1,2,0,3 - Merged cells in header are not highlighted when clicking on the top-left corner cell ------------------------------------------------------------------------------- Version 0.7.92 Feature changes: - S0911_CustomDragAndDrop - Merged cells in headers that go beyond item selection range are not getting selected Bug fixes: - Scrolling to the right end moves the scrollbar to the left end if the size of body is less then one cell ------------------------------------------------------------------------------- Version 0.7.91 Bug fixes: - Cell selection doesn’t work properly if matrix.setSelectSkipHidden(true) and columns have been reordered. ------------------------------------------------------------------------------- Version 0.7.90 Feature changes: - Ability to change gesture binding for drag move item command API changes: - Added Matrix.CMD_DND_MOVE_START - Added Matrix.GESTURE_ON_SELECTED - Added Zone.bind(int, int, int, int) - Added Zone.unbind(int, int, int, int) ------------------------------------------------------------------------------- Version 0.7.89 Bug fixes: - Left click during drag was causing the drag animation to stay after mouse buttons release in case where context menu has been shown ------------------------------------------------------------------------------- Version 0.7.88 Bug fixes: - Left click on any column after a double click resize was resing the clicked column as well - Resizing a not selected item was causing all the selected items to resize - Left click during drag was causing the drag animation to stay after mouse buttons release ------------------------------------------------------------------------------- Version 0.7.87 Bug fixes: - The transparent overlay animation when moving columns is no longer working - Can no longer select multiple columns and then move them as one block ------------------------------------------------------------------------------- Version 0.7.86 Bug fixes: - Clicking on group of selected section items moves the current item - Sometime cursor moves to the beginning when click on a group of selected items - Widget is not redrawn until next gui event ------------------------------------------------------------------------------- Version 0.7.85 Bug fixes: - Grouping expand/collapse did not trigger content change callback ------------------------------------------------------------------------------- Version 0.7.84 Bug fixes: - IndexOutOfBoundsException due to not refreshed cell merging ------------------------------------------------------------------------------- Version 0.7.83 Bug fixes: - Protection against "widget disposed" exception ------------------------------------------------------------------------------- Version 0.7.82 Bug fixes: - Content change callback was being called even if the content has not changed - Layout has not been always calculated when merging was changed or during resizing ------------------------------------------------------------------------------- Version 0.7.81 Feature changes - Bulk merging Bug fizes: - style.textAlignY = SWT.BOTTOM did not work in the Painter - Resize of item in the frozen head beyond the window boundaries causing the item to disapear API changes: - Added Zone.setMerged(Iterable) ------------------------------------------------------------------------------- Version 0.7.80 Feature changes: - It's possible to react when the layout of the cells in the viewport changes. That includes the model indexes of the visible cells, not only graphical appearance. API changes: - Added Matrix.addContentChangeCallback(Runnable) - Added Matrix.addContentChangeCallback(Runnable) ------------------------------------------------------------------------------- Version 0.7.79 Bug fixes: - Layout dirty flag was cleared when doing Matrix.computeSize(int, int) ------------------------------------------------------------------------------- Version 0.7.78 Bug fixes: - Wheel scrolling up and down was at different speed - Scrollbar was not updated after Axis.scrollTo ------------------------------------------------------------------------------- Version 0.7.77 Bug fixes: - Key selection was starting from the mouse location - Click on header after showing context menu causing range selection - Group separator was throwing IndexOutOfBoundsException when frozen head was more the number of items ------------------------------------------------------------------------------- Version 0.7.76 Bug fixes: - Page up was moving the focus to the first item ------------------------------------------------------------------------------- Version 0.7.75 Bug fixes: - Layout was not recomputed during Section.setCellWidth() - Wheel scroll did not work when frozen head was at least 3 ------------------------------------------------------------------------------- Version 0.7.74 Feature changes: - Emitting SWT.Collapse/SWT.Expand events for Grouping Bug fixes: - Scrollbar thumbs did not change size after change of item count ------------------------------------------------------------------------------- Version 0.7.73 Bug fixes: - Zone.getBounds returns mutable Rectangle ------------------------------------------------------------------------------- Version 0.7.72 Feature changes: - Optimized FontSizeCache - Optimized resize event handling - Optimized scrollbars updating - Optimized creating of new GC - Optimized getClipping ------------------------------------------------------------------------------- Version 0.7.71 Feature changes: - Optimized computation of merged cells bounds ------------------------------------------------------------------------------- Version 0.7.70 Feature changes: - Optimization: binary search in NumberSet - Optimization: reduce layout calculation with better dirty state maintanance - Optimization: limiting number of calls to getParent().layout - Optimization: cache Matrix.computeSize(int, int) results - ZoneEditor.apply(Control) will not throw "widget is disposed" exception when the widget is disposed. ------------------------------------------------------------------------------- Version 0.7.69 Feature changes: - Improved performance of Section.setCellWidth() ------------------------------------------------------------------------------- Version 0.7.68 Bug fixes: - Group could disappear on collapse when element to remain was hidden ------------------------------------------------------------------------------- Version 0.7.67 Feature changes: - Performance improvments in Grouping to use Section.getUnchecked, AxisItem.equals, ExtentSequence.iterator ------------------------------------------------------------------------------- Version 0.7.66 API changes: - Added Axis.getScrollPosition() ------------------------------------------------------------------------------- Version 0.7.65 API changes: - Added Axis.scrollTo(Number) - Added Axis.scrollTo(AxisItem) - Replaced Section.computeSize(Number) with Axis.computeSize(Section, Number) - Replaced NumberSet.numberIterator(Query) with NumberSet.numbers(Query).iterator - Replaced NumberSet.extentIterator(Query) with NumberSet.extents(Query).iterator ------------------------------------------------------------------------------- Version 0.7.64 Bug fixes - NPE during reordering items when all cells are selected - Scrollbar thumb was jumping during scrolling ------------------------------------------------------------------------------- Version 0.7.63 Feature changes: - Painter calculates the position of centered text or image position in the area within cell margins. Which means a text or image will never go closer to the top and left borders then the size of the margins. ------------------------------------------------------------------------------- Version 0.7.62 Bug fixes - Reseting of separator lines width was wrong in Grouping.dispose ------------------------------------------------------------------------------- Version 0.7.61 Bug fixes - Last separator line was not reset in Grouping.dispose ------------------------------------------------------------------------------- Version 0.7.60 Bug fixes - Separator lines could cover the next group if at least two groups before the next visible one were hidden ------------------------------------------------------------------------------- Version 0.7.59 Bug fixes - Character that activated an editor could be not set if typing fast enough Feature changes: - Four separate margins for text and image aside from just two (horizontal and vertical) API changes: - Added Style.textMarginLeft, Style.textMarginRight, Style.textMarginTop, Style.textMarginBottom - Added Style.imageMarginLeft, Style.imageMarginRight, Style.imageMarginTop, Style.imageMarginBottom - Added ZoneEditor.createControl(Number, Number, char) ------------------------------------------------------------------------------- Version 0.7.58 Feature changes: - Ability to be notified when the focus cell moves. See S0905_FocusCellEventHandling.java sample. API changes: - Added Section.addFocusItemCallback(Runnable) - Added Section.removeFocusItemCallback(Runnable) ------------------------------------------------------------------------------- Version 0.7.57 Bug fixes: - Separator line width did not take effect when the first item after separator was hidden - Content disappeared when the last group was covering the whole area and it was collapsed API changes: - Added ContentChangeListener and ContentChangeEvent - Added Axis.getScrollItem() ------------------------------------------------------------------------------- Version 0.7.56 Feature changes: - Autosizing of axis items skips the hidden items ------------------------------------------------------------------------------- Version 0.7.55 Feature changes: - Performance improvements ------------------------------------------------------------------------------- Version 0.7.54 Bug fixes: - Editor control could try to handle event while being disposed. ------------------------------------------------------------------------------- Version 0.7.53 Bug fixes: - Autosize was incorrect if text contained some non-ASCII characters ------------------------------------------------------------------------------- Version 0.7.52 Bug fixes: - Frozen lines were painted with an offset when matrix layout data had margin > 0 - Cursor border started to early if the last line of header was wider than 1 - Scrolling over hidden items could stumble ------------------------------------------------------------------------------- Version 0.7.51 Bug fixes: - Position of grouping separators was incorrect in some corner cases - Scrollbar did not scroll down if only the last line was not visible - Item was moved when drop indicator was adjacent to the item being moved ------------------------------------------------------------------------------- Version 0.7.50 Feature changes: - Edit history externalized into sample: S0440_EditHistory_Undo_Redo API changes: - Removed ZoneEditor.undo - Removed ZoneEditor.redo - Removed ZoneEditor.setBulkEdit(boolean) - Removed ZoneEditor.setBulkEditAtomic(boolean) - Removed ZoneEditor.isBulkEditAtomic() - Removed ZoneEditor.setEditHistoryLimit - Removed ZoneEditor.getEditHistoryLimit - Removed ZoneEditor.addEditHistory - Removed ZoneEditor.clearEditHistory(int) - Removed ZoneEditor.getEditHistorySize(int) - Removed ZoneEditor.getEditHistoryIndex(int) ------------------------------------------------------------------------------- Version 0.7.50 Bug fixes: - ZoneEditor edit history had corrupted indexes after inserting or deleting section items. API changes: - Removed ZoneEditor.clearEditHistory() - Added ZoneEditor.clearEditHistory(int) - Added ZoneEditor.getEditHistorySize(int) - Added ZoneEditor.getEditHistoryIndex(int) ------------------------------------------------------------------------------- Version 0.7.49 Bug fixes: - Section.setSelected(Number, boolean) was always setting selection to true - Resize cursor does not show up when modifier keys are on API changes: - Added Painter.trackPosition(Image, boolean) - Added Painter.getImageAt(int, int) - Added Painter.imagesBefore - Added Painter.imagesAfter - Added Section.computeSize(Number) ------------------------------------------------------------------------------- Version 0.7.48 Bug fixes: - NullPointerException during drag and drop ------------------------------------------------------------------------------- Version 0.7.47 New API: - Added ZoneEditor.clearEditHistory - Added ZoneEditor.addEditHistory - Added ZoneEditor.setBulkEdit - Renamed ZoneEditor.setEditHistoryLength to ZoneEditor.setEditHistoryLimit - Renamed ZoneEditor.getEditHistoryLength to ZoneEditor.getEditHistoryLimit ------------------------------------------------------------------------------- Version 0.7.46 Bug fixes: - Undo and redo where executing twice ------------------------------------------------------------------------------- Version 0.7.45 Bug fixes: - Grouping separator was drawn incorrectly when cell were frozen - Tree column auto sizing was incorrect ------------------------------------------------------------------------------- Version 0.7.44 Feature changes: - When the text is wrapped the default is end truncation method rather than truncate in the middle, because TextLayout does not cooperate well with middle truncation. Bug fixes: - Text wrapping was causing StringIndexOutOfBoundsException - Drag resize in Grouping was causing item selection ------------------------------------------------------------------------------- Version 0.7.43 Bug fixes: - Better protection against null values in grouping painters - Line wrapping for grouping headers on Windows 7 had incorrect number off lines ------------------------------------------------------------------------------- Version 0.7.42 Bug fixes: - Section.moveSelected was decreasing count of order items incorrectly. ------------------------------------------------------------------------------- Version 0.7.41 Feature changes: - ZoneEditor.setModelValue has re-entry guard to prevent validation message dialog causing second apply by editor control loosing focus Bug fixes: - Section.setOrder(Iterator) was throwing item count exception incorrectly. - ZoneEditor.cancel was causing isDisposed execption when called manually during ZonEditor.apply. ------------------------------------------------------------------------------- Version 0.7.40 Bug fixes: - Resizing of matrix with two scrollbars could cause endless loop of resize events. - Checks against null in many places ------------------------------------------------------------------------------- Version 0.7.39 Feature changes: - Section.getIndex(N position) returns the count when position is count instead of null Bug fixes: - Seciton.getOrder().geCount() was incorrect after add/remove operations - Computing of required space with scroll bars was incorrect (last row not visible) - Auto-scrolling did not work correctly - Moving column with mouse over row header did not work - Grouping separator line width was incorrect in some cases API changes: - Axis.isItemInViewport(Section, Number): boolean ------------------------------------------------------------------------------- Version 0.7.38 Bug fixes: - NLP in grouping separator painter when the size was too small to show the body ------------------------------------------------------------------------------- Version 0.7.37 Bug fixes: - Range cell selection was incorrect after column dragging. ------------------------------------------------------------------------------- Version 0.7.36 Bug fixes: - NPE when moving item to the end when the last item is hidden - NPE when moving column down after auto scroll - Auto scroll executor dod not stop on matrix dispose. ------------------------------------------------------------------------------- Version 0.7.35 Bug fixes: - Axis.getViewportItemCount() was incorrect when frozenhead was set ------------------------------------------------------------------------------- Version 0.7.34 Bug fixes: - Grouping separator was incorrect with line sizes different then default. - Axis.getViewportItemCount() was incorrect when frozen head was set ------------------------------------------------------------------------------- Version 0.7.33 Bug fixes: - Matrix setSize was not considering scroll bars in some cases - User selection on one axis did not clear selection state on the other axis. - NumberList.copy() did not initialize count of items in the copied object correctly. ------------------------------------------------------------------------------- Version 0.7.32 Features - Change color and width of the separating lines in the grouping headers API changes: - Added Grouping.separator(int, Color) ------------------------------------------------------------------------------- Version 0.7.31 Bug fixes - ZoneEditor: Repainting of embedded controls could be endless if matrix did not have focus. - ZoneEditor: The bounds could be incoreect for controls in headers - ZoneEditor: The controls would not be removed if the zone becomes invisible. API changes: - Added Section.getAxis() ------------------------------------------------------------------------------- Version 0.7.30 Bug fixes - Row height with a larger font was incorrect when autoresizing ------------------------------------------------------------------------------- Version 0.7.29 Bug fixes - Axis layout showing first item from header when frozen and all body items are hidden ------------------------------------------------------------------------------- Version 0.7.28 Bug fixes - MatrixListener throwing null pointer exception on double click ------------------------------------------------------------------------------- Version 0.7.27 Bug fixes - Compute size did not consider the scroll bar size ------------------------------------------------------------------------------- Version 0.7.26 Bug fixes - Compute size was changing the state of navigation. ------------------------------------------------------------------------------- Version 0.7.25 Bug fixes - Resize in headerXY was not bound to events - Insert was not causing scroll update ------------------------------------------------------------------------------- Version 0.7.24 Feature changes: - Optional skipping of hidden items when selecting cells or row/columns in UI. Zone.setSelected and Section.setSelected still selects hidden regardless of that options. - Optional atomicity of bulk edit operation (copy/paste/cut/delete) - Undo/redo for editors, including bulk operations - Multi column sorting snippet API changes: - Added Matrix.setSelectSkipHidden(boolean) - Added Matrix.getSelectSkipHidden() : boolean - Added ZoneEditor.setBulkEditAtomic(boolean) - Added ZoneEditor.isBulkEditAtomic() : boolean - Added ZoneEditor.setEditHistoryLength(int) - Added ZoneEditor.getEditHistoryLength() : int - Added ZoneEditor.undo() - Added ZoneEditor.redo() - Renamed Section.getHiddenSet to getDefaultHiddenSet The following API is still work in progress - Added NumberSet interface - Change return type Section.getHidden() from Iterator to ExtentSet. Call getHidden().numbers(null).iterator() instead. - Change return type Section.getSelected() from Iterator to ExtentSet. Call getSelected().numbers(null).iterator() instead. ------------------------------------------------------------------------------- Version 0.7.23.8 Bug fixes: - Grouping was taking incorrect painter in setToggleImages(Image, Image) ------------------------------------------------------------------------------- Version 0.7.23.7 Bug fixes: - Grouping cell painter made public ------------------------------------------------------------------------------- Version 0.7.23.6 Bug fixes: - Matrix did not occupy the free space in GridLayout ------------------------------------------------------------------------------- Version 0.7.23.5 Feature changes: - Axis.getMouseItem and Axis.getItemByDistance return null if the distance is before the first cell or after the last cell ------------------------------------------------------------------------------- Version 0.7.23.4 Feature changes: - Numpad Enter works for editor apply Bug fixes: - Copy beyond body was incorrect with additional empty sections ------------------------------------------------------------------------------- Version 0.7.23.3 Bug fixes: - Painter.computeSize was returning incorrect result due to wrong font width cache hashing ------------------------------------------------------------------------------- Version 0.7.23.2 Bug fixes: - ZoneEditor did not use the latest cell painter in getModelValue() ------------------------------------------------------------------------------- Version 0.7.23.1 Bug fixes: - Copy did not take the latest cell painter correctly. ------------------------------------------------------------------------------- Version 0.7.23 Bug fixes: - Copy of single cell to the clipbaord was not possible - Copy beyond body did not consider "copy paste hidden cells" setting ------------------------------------------------------------------------------- Version 0.7.22 Feature changes: - ZoneEditor features input validation by returning boolean from setModelValue method - ZoneEditor can do activate, apply, and cancel programmatically. API changes: - Changed return value to boolean in ZoneEditor.setModelValue(Number, Number, Object) - Added ZoneEditor.activate(Number, Number) - Added ZoneEditor.getControl(Number, Number) - Added ZoneEditor.apply(Control) - Added ZoneEditor.cancel(Control) ------------------------------------------------------------------------------- Version 0.7.21 Bug fixes: - Focus was forced on matrix with zone editor during refresh. ------------------------------------------------------------------------------- Version 0.7.20 Feature changes: - Ability to copy selected cells from beyond the body zone. API changes: - Added Matrix.setCopyBeyondBody(boolean) - Added Matrix.getCopyBeyondBody() : boolean Bug fixes: - Grouping dispose was causing org.eclipse.swt.SWTException: Widget is disposed ------------------------------------------------------------------------------- Version 0.7.19 Feature changes: - Ability to skip hidden cells while doing copy/paste. Bug fixes: - There was a memory leak on matrix disposal. API changes: - Added Matrix.setCopyPasteHiddenCells(boolean) - Added Matrix.getCopyPasteHiddenCells() : boolean ------------------------------------------------------------------------------- Version 0.7.18 Bug fixes: - Layout was not recomputed after some Section state changes, like Section.delete for instance - Focus cell was not set correctly after deleting an item - Shift select by keys was not working correctly ------------------------------------------------------------------------------- Version 0.7.17 Feature changes: - Grouping nodes can be created as remain, summary, permanent, collapsed. - Reduced repainting in grouping collapse/expand - Multiple hidden sets for a section. The effective hidden state is union of all hidden sets. Grouping uses that to allow hiding items independently from collapse/extend state of group nodes. API changes: - Added Zone.computeSize(Number, Number, int, int) - Added constants in Grouping.Node: REMAIN, SUMMARY, PERMANENT, COLLAPSED - Added Grouping.Node(String, int, Node[]) - Added NumberSet class. Made public prematurely in order be used by Grouping. Not polished. Better not use it yet. - Added Section.addHiddenSet(NumberSet) - Added Section.removeHiddenSet(NumberSet) - Added Section.getHiddenSet() - Removed Grouping.Node.setCollapsedDirection - Removed Grouping.Node.setCollapsedDirectionAll - Removed ColumnGrouping ------------------------------------------------------------------------------- Version 0.7.16 Bug fixes: - Editor control was getting focus cell instead of mouse cell with double click activation ------------------------------------------------------------------------------- Version 0.7.15 Bug fixes: - Editor activation was throwing NLP ------------------------------------------------------------------------------- Version 0.7.14 Feature changes: - SWT.MouseEnter and SWT.MouseExit supported in Zone.addListener - Image painting optimized to avoid setClipping when not neccessary Bug fixes: - Resize cursor was not reset when moving over embedded controls ------------------------------------------------------------------------------- Version 0.7.13 Feature changes: - CellImageButtonPainter can work with single image to emulate image buttons. API changes: - Added CellImageButtonPainter(String, image) Bug fixes: - Section.setWidth(Number) did not consider the size of embedded controls - Deleting items was causing index out of bounds exception in cell selection set ------------------------------------------------------------------------------- Version 0.7.12 API changes: - Added Zone.removeListener(int, Listener) - Added Grouping.dispose() ------------------------------------------------------------------------------- Version 0.7.11 Bug fixes - Embeded Button control was causing endless painting loop. API changes: - Renamed ZoneEditor.disposeControl to ZoneEditor.removeControl ------------------------------------------------------------------------------- Version 0.7.10 Bug fixes: - Grouping: grouping.getRoot().setCollapsedAll(true) did not collapse all nodes - Grouping: parent had toggle button if all but first child where not collapseable API changes: - Added Node.isCollapsed() : boolean - Removed NodeVisitor.get() : Node - Modified NodeVisitor.visitBefore() and visitAfter() to have Node argument ------------------------------------------------------------------------------- Version 0.7.9 Bug fixes: - Merging: wrapped text was displayed incorrectly in merged cells when vertical align was different then default - Grouping: Node.setCollapsedAll did not make all items visible when part of the group was hidden by Secton.setHidden beforehand - Grouping: Node.setCollapsedAll could throw NullPointerException ------------------------------------------------------------------------------- Version 0.7.8 Bug fixes: - Section.delete was incorrect in some cases API changes: - Removed Painter.setStyle(Style), because Painter.style is a public field. ------------------------------------------------------------------------------- Version 0.7.7 New features: - Select on group cell selects the whole group - The collapse toggle status is calculated based on the children collapse status ------------------------------------------------------------------------------- Version 0.7.6 Bug fixes: - Resize cursor appeared inside a merged cell - Insert to empty section was not working correctly ------------------------------------------------------------------------------- Version 0.7.5 Bug fixes: - Section.delete was incorrect in some cases API changes: - Added Axis.indexOf(Section) ------------------------------------------------------------------------------- Version 0.7.4 Bug fixes: - Section.insert was incorrect when count of items was 0. API changes: - Added Section.setCellWidth() - Added Axis.pack() - Added Matrix.transpose() ------------------------------------------------------------------------------- Version 0.7.3 Bug fixes: - Merging cache was not working correctly if more then one zone had merging. ------------------------------------------------------------------------------- Version 0.7.2 Bug fixes: - Incomplete javadoc for Grouping class - Distribution file for retail version did not have pl.netanel.swt.matrix.reloaded package API changes: - Added Grouping.getRoot() : Node - Added Grouping.Node.getParent() : Node - Added Grouping.Node.getCaption() : String - Added Grouping.Node.setCollapsed(boolean) : Node - Added Grouping.Node.setCollapsedAll(boolean) : Node - Added Grouping.Node.setCollapseDirectoin(int) : Node - Added Grouping.Node.setCollapseDirectionAll(int) : Node - Added Grouping.getNodeByTreeIndex(int, int) : Node - Renamed Grouping.getNode(int, int) : Node to Grouping.getNodeByCellIndex(Number, Number) : Node - Added Grouping.NodeVisitor class - Added Grouping.setToggleImages(Image, Image) ------------------------------------------------------------------------------- Version 0.7.1 API changes: - Renamed Axis.getMouseOverItem to Axis.getMouseItem() - Removed Zone.getMergeOrigin(Number, Number):Cell - Added Zone.getMerged(Number, Number):CellExtent - Added Grouping class New snippets: - S0008_Grouping ------------------------------------------------------------------------------- Version 0.7.0 API changes: - Added tree methods in Section - Added ColumnGrouping experimental class - Added Zone.isMerged(X, X, Y, Y) to check if any cell in the given range is merged - Modified Zone.setMerged has state flag which ensures the merging is removed or added, and not work as a toggle. - Extent implements Iterable ------------------------------------------------------------------------------- Version 0.6.5 Bug fixes: - NullPointerExeception during cancel in embedded editor ------------------------------------------------------------------------------- Version 0.6.4 API changes: - Added Painter.clipText() ------------------------------------------------------------------------------- Version 0.6.3 Bug fixes: - Matrix.computeSize computed wrong numbers for GridData.grabExcessVerticalSpace = false ------------------------------------------------------------------------------- Version 0.6.2 Bug fixes: - IndexOutOfBoundsException in Matrix.computeSize in case of 0 cells ------------------------------------------------------------------------------- Version 0.6.1 Bug fixes: - Everything was obfuscated API changes: - Util.equals Snippets: - Added S0904_Tooltip ------------------------------------------------------------------------------- Version 0.6.0 New features: - Cell merging Behavior change: - Zone.getSelectedExtent returns null instead of (0,0,0,0) when nothing is selected. - Zone.isSelected throws IllegalArgumentException only if both indexX and indexY are null. If one the parameters is null then the method returns true if any cell with the other index is selected. API changes: - Deprecated Zone.getSelectionCount. Use Zone.getSelectedCount instead. - Added Zone.setMerged - Added Zone.isMerged ------------------------------------------------------------------------------- Version 0.5.9 Bug fixes: - Cell painter did not alter background correctly ------------------------------------------------------------------------------- Version 0.5.8 Bug fixes: - Matrix.computeSize was throwing IndexOutOfBoundsException - Clipping did not work correctly for frozen areas ------------------------------------------------------------------------------- Version 0.5.7 Bug fixes: - Matrix.computeSize was throwing null pointer exception ------------------------------------------------------------------------------- Version 0.5.6 New Features: - Matrix.computeSize(...) implementation Bug fixes: - Matrix.getPainter(String) was throwing IndexOutOfBoundsException when painter with the given name have not existed. - Bug #9 FillLinesBehavior doesn't work for empty table. Constructor has changed to FillLinesBehavior(matrix) - Bug #11 Default row/column size should not be lower than minimal size ------------------------------------------------------------------------------- Version 0.5.5 Bug fixes: - Scroll thumb had incorrect size when the last visible cell was not trimmed. ------------------------------------------------------------------------------- Version 0.5.4 New Features: - Set order from iterator API changes: - Added Section.setOrder(Iterator) - Added Section.setOrderExtents(Iterator) - Added Zone.replacePainterPreserveStyle(Painter) - replacePainter(Painter) does not copy style any more - Added Matrix.replacePainterPreserveStyle(Painter) - replacePainter(Painter) does not copy style any more Bug fixes: - S1001_CompoundExample was creating a new font on every paint event. - Resizing of item was hiding a scrollbar when the last visible item was not trimmed. - Clean snippets source code formatting - Snippet S0015 did not revert gc.setAdvanced(false) in the Painter.clear() method. ------------------------------------------------------------------------------- Version 0.5.3 Bug fixes: - Moving items to the end did not always work. ------------------------------------------------------------------------------- Version 0.5.2 Bug fixes: - Focus item was set to initial value after widget lost and regained focus. ------------------------------------------------------------------------------- Version 0.5.1 API changes: - Removed Axis.getItemByViewportOffset(AxisItem, int) - it can be replaced with int pos = axis.getViewportPosition(AxisItem); axis.getItemByViewportPosition(post + offset); Bug fixes: - Axis was making the foces item to be the first in the viewport after Matrix.refresh - java.lang.IndexOutOfBoundsException when refreshing an empty section. ------------------------------------------------------------------------------- Version 0.5 The focus for this release has been stabilizing the API. Features: - Heavy static code validation and refactoring. - Thorough API cleanup. - Moving drag indicator. - Painter(String) constructor sets a default scope for the predefined painter names. API changes: - Added AxisItem.createUnchecked(Section, Number) - Added Extent.create(Number, Number) - Added Extent.createUnchecked(Number, Number) - Added Cell.create(Number, Number) - Added Cell.createUnchecked(Number, Number) - Added CellExtent.create(Number, Number, Number, Number) - Added CellExtent.createUnchecked(Number, Number, Number, Number) - Added CellExtent.create(Cell, Cell) - Added CellExtent.createUnchecked(Cell, Cell) - Added Section.getHidden() - Added Section.getHiddenExtents() - Added Section.getOrder() - Added Section.getOrderExtents() - Added Section.setOrder(Number, Number) - Added Axis.setFocusItemEnabled(boolean) - Added Axis.isFocusItemEnabled() - Added Axis.showItem(AxisItem) - Added Axis.getFreezeHead() - Added Axis.getFreezeTail() - Added Axis.getItemByViewportOffset() - Added Painter.setupSpatial(Number, Number) - Added Painter.setStyle() - Added Painter.getStyle() - Added Painter.NAME_FREEZE_HEAD_LINE_X and Painter.NAME_FREEZE_HEAD_LINE_Y - Added Painter.NAME_FREEZE_TAIL_LINE_X and Painter.NAME_FREEZE_TAIL_LINE_Y - Added Painter.NAME_BACKGROUND - Added Matrix(Composite, int, Class, Class) - Added Zone.contains(CellExtent, Number, Number) - Deleted Section.getHiddenCount(Number, Number) - Deleted Zone.setDefaultForeground(Color); it was a duplicate of Painter property - Deleted Zone.setDefaultBackground(Color); it was a duplicate of Painter property - Deleted Zone.setSelectionForeground(Color); it was a duplicate of Painter property - Deleted Zone.setSelectionBackground(Color); it was a duplicate of Painter property - Deleted Zone.getDefaultForeground(); it was a duplicate of Painter property - Deleted Zone.getDefaultBackground(); it was a duplicate of Painter property - Deleted Zone.getSelectionForeground(); it was a duplicate of Painter property - Deleted Zone.getSelectionBackground(); it was a duplicate of Painter property - Deleted ZoneEditor.setImagePath() - Deleted ZoneEditor.getImagePath() - Deleted Matrix.setFocusCellEnabled(boolean); replaced with Axis.setFocusItemEnabled(boolean) - Deleted Matrix.isFocusCellEnabled(); replaced with Axis.isFocusItemEnabled() - Deleted Painter.setWordWrap(boolean); direct property access hasWordWrap - Deleted Painter.isWordWrap(); direct property access hasWordWrap - Renamed Section.indexOf(Number) to Section.getOrder(Number) - Renamed Section.indexOfNotHidden(Number) to Section.getPosition(Number) - Renamed Section fitCellWidth(Number) to Sectoin.setCellWidth(Number) - Renamed Section.move(Number, Number, Number) to Section.setOrder(Number, Number, Number) - Renamed Section.getSelectedIterator() to Section.getSelected() - Renamed Section.getSelectedExtentIterator() to Section.getSelectedExtents() - Renamed Section.getCore() to Section.getUnchecked() - Renamed Zone.getCore() to Zone.getUnchecked() - Renamed Axis.getItemByPosition() to Axis.getItemByViewportPosition() - Renamed Axis.getItemByDistance() to Axis.getItemByViewportDistance() - Renamed Axis.freezeHead(int) to Axis.setFreezeHead(int) - Renamed Axis.freezeTail(int) to Axis.setFreezeTail(int) - Renamed Matrix.getTopLeft() to Matrix.getHeaderXY(); to bo more consistent with X-Y notation - Changed Axis.setFocusItem(Section, Number) to Axis.setFocusItem(AxisItem) - Changed Painter.paint(Number, Number, int, int, int, int) to Painter.paint(int, int, int, int); indexed based operations are done through Painter.setup(Number, Number) method. Bug fixes: - Default column headers numbering was incorrect - Painting of embedded controls could throw SWT Exception "Graphic is disposed" - Embedded controls where not always painted when dragged. - Drag scrolling to the start of BigInteger axis did not work ------------------------------------------------------------------------------- Version 0.4.1 Features: - Configurable minimal cell width when item resizing - Snippet 0910 after/before feedback while dragging from file explorer - Snippet 0010 works for mouse move instead of window resize. - Snippets have meaningful names API changes: - Added Axis.setMinimalCellWidth() and Axis.getMininalCellWidth() - Added AxisItem(Section, Number) constructor - Added classes Extent, Cell and CellExtent instead of Number[] - Renamed Painter name constants to contain X, Y syffixers instead of HORIZONTAL and VERTICAL. - Renamed ButtonCellPainter to ButtonCellBehavior. Bug fixes: - Headers numbering was incorrect ------------------------------------------------------------------------------- Version 0.4 New features: - Items a resizeable by default API changes: - Signature change for methods and parameters with 0 and 1 suffixes to have Y and X suffixes and inversed order. - Renamed Painter.SCOPE_SINGLE to Painter.SCOPE_ENTIRE - Added class CellExtent returned by Zone.getSelectedExtent() - Added Painter.getScope() - Added Painter.SCOPE_CELLS as a shortcut for SCOPE_CELLS_HORIZONTALLY ------------------------------------------------------------------------------- Version 0.3.5 New fetures: - Configurable painter for item dragging. API changes: - Added Painter.NAME_DRAG_ITEM - Addad Painter.selectionHighlight - Zone.removePainter(String) ------------------------------------------------------------------------------- Version 0.3.4 New features - Column draggaed does not use gc.alpha Bug fixes: - #8 scrollbars did not appear while column resing - #9 class cast exception when different indexing types for row and column - #10 text align was calculated incorectly - Scroll bar selection was incorrect when items differed in width ------------------------------------------------------------------------------- Version 0.3.3 New Features - Arithmetics on Long indexes implemented so that new Axis(Long.class, 2) will work - Improved methods parameter checking - Javadoc is avaialble for download to provide instant help while working with swt matrix in the IDE - Drag and drop image indicator while reordering axis items - Text wraping API changes: - Section became an interface - Zone became an interface - Added Section.getIndexClass - Painter.computeSize(Number, Number, int, int) instead of computeWidth(Number, Number) and computeHeight(Number, Number) Bug fixes: - Snipept_0402 Deleted double click on emulated checkbox - Snippet_0490 copy on a single cell threw exception ------------------------------------------------------------------------------- Version 0.3.2 ------------------------------------------------------------------------------- Version 0.3.1 Bug fixes: - NPE while zone editor activation when the editor control was null. - Moving item back and forth did not work correctly - Deleted type safety warnings from snippets ------------------------------------------------------------------------------- Version 0.3 New features: - Ability to activate an editor control by typing printable characters - Snippet for in-place adding a new row - Executing focus cell navigation commands with Matrix.executeCommand(int commandId) - New commands CMD_EDIT_DEACTIVATE_APPLY and CMD_EDIT_DEACTIVATE_CANCEL Bug fixes: - Traversing with (Shift+) Tab from Matrix was not bound by default - Selection event was causing control deactivation in ZoneEditor. - Sorting did not work correctly in Snippet_0005. - Resizing of embedded controls did layout incorrectly. - Combo item was not getting selected after editor activation. - Change of focus cell by keyboard did not add the focus cell to selection. - Deleted double selection notification when selecting columns or rows - Columns selection after reordering was incorrect - Altering of columns selection with Ctrl did not work API changes - Matrix: - renamed all editing commands to have the CMD_EDIT_ prefix. - Deleted getZoneUnchecked() - now the zone returned by getZone() is not checking the parameters to speed up performance - Matrix.executeCommand(int commandId) - Zone - Deleted getSectionUnchecked() - now the section returned by getSection() is not checking the parameters to speed up performance - ZoneEditor: - renamed setEmulationPath(String) to setImagePath(String) - Deleted snapControlImages(String) -------------------------------------------------------------------------------s Version 0.2 New features: - Zone editor with support for Text, Combo, DateTime and check Button controls - Embedded controls - Emulated check boxes with current system theme - Customizable copy and paste Bug fixes: - Single column/row selection did not highlight the header API changes - Painter: - added getText(N0 index0, N1 index1) - added getImage(N0 index0, N1 index1)