changeset 88:9ed020f0c2a5

Fix the snippet040 example
author Frank Benoit <benoit@tionex.de>
date Mon, 19 May 2008 14:30:49 +0200
parents 604fa1feb76a
children cbba80cceb7a
files jface/dsss.conf jface/snippets/Snippet006TableMultiLineCells.d jface/snippets/Snippet040TableViewerSorting.d
diffstat 3 files changed, 87 insertions(+), 83 deletions(-) [+]
line wrap: on
line diff
--- 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]
 
 
-
--- 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;
             }
 
--- 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
      */