# HG changeset patch # User Frank Benoit # Date 1211200249 -7200 # Node ID 9ed020f0c2a5e8b20929ed68e39c355b69f3370b # Parent 604fa1feb76a966cfa82e166c1e695f0cc3c6e0d Fix the snippet040 example diff -r 604fa1feb76a -r 9ed020f0c2a5 jface/dsss.conf --- a/jface/dsss.conf Mon May 19 13:56:25 2008 +0200 +++ b/jface/dsss.conf Mon May 19 14:30:49 2008 +0200 @@ -21,6 +21,7 @@ [ActionAndStatusbar.d] [ShowFieldPrefs.d] [ShowPrefs.d] +[snippets/Snippet006TableMultiLineCells.d] +[snippets/Snippet040TableViewerSorting.d] - diff -r 604fa1feb76a -r 9ed020f0c2a5 jface/snippets/Snippet006TableMultiLineCells.d --- a/jface/snippets/Snippet006TableMultiLineCells.d Mon May 19 13:56:25 2008 +0200 +++ b/jface/snippets/Snippet006TableMultiLineCells.d Mon May 19 14:30:49 2008 +0200 @@ -48,7 +48,7 @@ public static void main(String[] args) { Display display = new Display(); - Shell shell = new Shell(display, DWT.CLOSE); + Shell shell = new Shell(display, DWT.CLOSE|DWT.RESIZE); shell.setSize(400, 400); shell.setLayout(new GridLayout()); @@ -207,7 +207,7 @@ LineEntry line = cast(LineEntry) element; Point size = event.gc.textExtent(line.line); event.width = viewer.getTable().getColumn(event.index).getWidth(); - int lines = size.x / event.width + 1; + int lines = (event.width > 0 ? (size.x / event.width + 1) : 1); event.height = size.y * lines; } diff -r 604fa1feb76a -r 9ed020f0c2a5 jface/snippets/Snippet040TableViewerSorting.d --- a/jface/snippets/Snippet040TableViewerSorting.d Mon May 19 13:56:25 2008 +0200 +++ b/jface/snippets/Snippet040TableViewerSorting.d Mon May 19 14:30:49 2008 +0200 @@ -12,7 +12,6 @@ *******************************************************************************/ module jface.snippets.Snippet040TableViewerSorting; - // http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jface.snippets/Eclipse%20JFace%20Snippets/org/eclipse/jface/snippets/viewers/Snippet040TableViewerSorting.java?view=markup import dwtx.jface.viewers.CellEditor; @@ -32,6 +31,7 @@ import dwt.widgets.Display; import dwt.widgets.Shell; import dwt.dwthelper.utils; + /** * Example usage of ViewerComparator in tables to allow sorting * @@ -43,12 +43,10 @@ Snippet040TableViewerSorting.main(args); } -public class Snippet040TableViewerSorting { - private class MyContentProvider : IStructuredContentProvider { public Object[] getElements(Object inputElement) { - return cast (Person[]) inputElement; + return (cast(ArrayWrapperT!(Person)) inputElement).array; } public void dispose() { @@ -96,6 +94,80 @@ protected abstract void doSetValue(Object element, Object value); } + private abstract class ColumnViewerSorter : ViewerComparator { + public static final int ASC = 1; + + public static final int NONE = 0; + + public static final int DESC = -1; + + private int direction = 0; + + private TableViewerColumn column; + + private ColumnViewer viewer; + + public this(ColumnViewer viewer_, TableViewerColumn column_) { + this.column = column_; + this.viewer = viewer_; + this.column.getColumn().addSelectionListener(new class() SelectionAdapter { + public void widgetSelected(SelectionEvent e) { + this.outer.widgetSelected(e); + } + }); + } + + private void widgetSelected(SelectionEvent e){ + if( viewer.getComparator() !is null ) { + if( viewer.getComparator() is this ) { + int tdirection = direction; + + if( tdirection is ASC ) { + setSorter(this, DESC); + } else if( tdirection is DESC ) { + setSorter(this, NONE); + } + } else { + setSorter(this, ASC); + } + } else { + setSorter(this, ASC); + } + } + public void setSorter(ColumnViewerSorter sorter, int direction) { + if( direction is NONE ) { + column.getColumn().getParent().setSortColumn(null); + column.getColumn().getParent().setSortDirection(DWT.NONE); + viewer.setComparator(null); + } else { + column.getColumn().getParent().setSortColumn(column.getColumn()); + sorter.direction = direction; + + if( direction is ASC ) { + column.getColumn().getParent().setSortDirection(DWT.DOWN); + } else { + column.getColumn().getParent().setSortDirection(DWT.UP); + } + + if( viewer.getComparator() is sorter ) { + viewer.refresh(); + } else { + viewer.setComparator(sorter); + } + + } + } + + public int compare(Viewer viewer, Object e1, Object e2) { + return direction * doCompare(viewer, e1, e2); + } + + protected abstract int doCompare(Viewer viewer, Object e1, Object e2); + } + +public class Snippet040TableViewerSorting { + + public this(Shell shell) { TableViewer v = new TableViewer(shell, DWT.BORDER | DWT.FULL_SELECTION); v.setContentProvider(new MyContentProvider()); @@ -115,10 +187,10 @@ super(t); } protected Object getValue(Object element) { - return (cast(Person) element).givenname; + return new ArrayWrapperString((cast(Person) element).givenname); } protected void doSetValue(Object element, Object value) { - (cast(Person) element).givenname = value.toString(); + (cast(Person) element).givenname = stringcast(value); } }); @@ -148,10 +220,10 @@ super(t); } protected Object getValue(Object element) { - return (cast(Person) element).surname; + return stringcast((cast(Person) element).surname); } protected void doSetValue(Object element, Object value) { - (cast(Person) element).surname = value.toString(); + (cast(Person) element).surname = stringcast(value); } }); @@ -181,10 +253,10 @@ super(t); } protected Object getValue(Object element) { - return (cast(Person) element).email; + return stringcast((cast(Person) element).email); } protected void doSetValue(Object element, Object value) { - (cast(Person) element).email = value.toString(); + (cast(Person) element).email = stringcast(value); } }); new class(v,column) ColumnViewerSorter { @@ -199,7 +271,7 @@ }; Person[] model = createModel(); - v.setInput(model); + v.setInput( new ArrayWrapperT!(Person)(model)); v.getTable().setLinesVisible(true); v.getTable().setHeaderVisible(true); cSorter.setSorter(cSorter, ColumnViewerSorter.ASC); @@ -217,75 +289,6 @@ return elements; } - private static abstract class ColumnViewerSorter : ViewerComparator { - public static final int ASC = 1; - - public static final int NONE = 0; - - public static final int DESC = -1; - - private int direction = 0; - - private TableViewerColumn column; - - private ColumnViewer viewer; - - public this(ColumnViewer viewer_, TableViewerColumn column_) { - this.column = column_; - this.viewer = viewer_; - this.column.getColumn().addSelectionListener(new class() SelectionAdapter { - - public void widgetSelected(SelectionEvent e) { - if( this.viewer.getComparator() !is null ) { - if( this.viewer.getComparator() == this ) { - int tdirection = this.direction; - - if( tdirection == ASC ) { - setSorter(this, DESC); - } else if( tdirection == DESC ) { - setSorter(this, NONE); - } - } else { - setSorter(this, ASC); - } - } else { - setSorter(this, ASC); - } - } - }); - } - - public void setSorter(ColumnViewerSorter sorter, int direction) { - if( direction == NONE ) { - column.getColumn().getParent().setSortColumn(null); - column.getColumn().getParent().setSortDirection(DWT.NONE); - viewer.setComparator(null); - } else { - column.getColumn().getParent().setSortColumn(column.getColumn()); - sorter.direction = direction; - - if( direction == ASC ) { - column.getColumn().getParent().setSortDirection(DWT.DOWN); - } else { - column.getColumn().getParent().setSortDirection(DWT.UP); - } - - if( viewer.getComparator() == sorter ) { - viewer.refresh(); - } else { - viewer.setComparator(sorter); - } - - } - } - - public int compare(Viewer viewer, Object e1, Object e2) { - return direction * doCompare(viewer, e1, e2); - } - - protected abstract int doCompare(Viewer viewer, Object e1, Object e2); - } - /** * @param args */