diff org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet162.d @ 120:536e43f63c81

Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661 ===D2=== * added [Try]Immutable/Const/Shared templates to work with differenses in D1/D2 instead of version statements used these templates to work with strict type storage rules of dmd-2.053 * com.ibm.icu now also compilable with D2, but not tested yet * small fixes Snippet288 - shared data is in TLS ===Phobos=== * fixed critical bugs in Phobos implemention completely incorrect segfault prone fromStringz (Linux's port ruthless killer) terrible, incorrect StringBuffer realization (StyledText killer) * fixed small bugs as well Snippet72 - misprint in the snippet * implemented missed functionality for Phobos ByteArrayOutputStream implemented (image loading available) formatting correctly works for all DWT's cases As a result, folowing snippets now works with Phobos (Snippet### - what is fixed): Snippet24, 42, 111, 115, 130, 235, 276 - bad string formatting Snippet48, 282 - crash on image loading Snippet163, 189, 211, 213, 217, 218, 222 - crash on copy/cut in StyledText Snippet244 - hang-up ===Tango=== * few changes for the latest Tango trunc-r5661 * few small performance improvments ===General=== * implMissing-s for only one version changed to implMissingInTango/InPhobos * incorrect calls to Format in toString-s fixed * fixed loading \uXXXX characters in ResourceBundle * added good UTF-8 support for StyledText, TextLayout (Win32) and friends UTF functions revised and tested. It is now in java.nonstandard.*Utf modules StyledText and TextLayout (Win32) modules revised for UTF-8 support * removed small diferences in most identical files in *.swt.* folders *.swt.internal.image, *.swt.events and *.swt.custom are identical in Win32/Linux32 now 179 of 576 (~31%) files in *.swt.* folders are fully identical * Win32: snippets now have right subsystem, pretty icons and native system style controls * small fixes in snippets Snippet44 - it's not Snippet44 Snippet212 - functions work with different images and offsets arrays Win32: Snippet282 - crash on close if the button has an image Snippet293 - setGrayed is commented and others Win32: As a result, folowing snippets now works Snippet68 - color doesn't change Snippet163, 189, 211, 213, 217, 218, 222 - UTF-8 issues (see above) Snippet193 - no tabel headers
author Denis Shelomovskij <verylonglogin.reg@gmail.com>
date Sat, 09 Jul 2011 15:50:20 +0300
parents 9f4c18c268b2
children
line wrap: on
line diff
--- a/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet162.d	Sun Apr 17 17:58:36 2011 +0200
+++ b/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet162.d	Sat Jul 09 15:50:20 2011 +0300
@@ -40,117 +40,110 @@
 import java.lang.all;
 
 
-void main(String[] args){
-    Snippet162.main(args);
-}
+const STATE = "CheckedIndices";
 
-public class Snippet162 {
-
-    const static String STATE = "CheckedIndices";
+void main () {
+    Display display = new Display ();
+    Image checkedImage = getCheckedImage (display);
+    Image uncheckedImage = getUncheckedImage (display);
+    Shell shell = new Shell (display);
+    shell.setLayout (new FillLayout ());
+    Table table = new Table (shell, SWT.BORDER);
+    TableColumn column1 = new TableColumn (table, SWT.NONE);
+    TableColumn column2 = new TableColumn (table, SWT.NONE);
+    TableColumn column3 = new TableColumn (table, SWT.NONE);
+    TableItem item1 = new TableItem (table, SWT.NONE);
+    item1.setText ( ["first item", "a", "b"]);
+    item1.setImage (1, uncheckedImage);
+    item1.setImage (2, uncheckedImage);
+    item1.setData (STATE, null);
+    TableItem item2 = new TableItem (table, SWT.NONE);
+    item2.setText ( ["second item", "c", "d"]);
+    item2.setImage (1, uncheckedImage);
+    item2.setImage (2, checkedImage);
+    item2.setData (STATE,  new ArrayWrapperInt([2]));
+    TableItem item3 = new TableItem (table, SWT.NONE);
+    item3.setText ( ["third", "e", "f"]);
+    item3.setImage (1, checkedImage);
+    item3.setImage (2, checkedImage);
+    item3.setData (STATE, new ArrayWrapperInt( [1, 2]));
+    column1.pack ();
+    column2.pack ();
+    column3.pack ();
 
-    public static void main (String [] args) {
-        Display display = new Display ();
-        Image checkedImage = getCheckedImage (display);
-        Image uncheckedImage = getUncheckedImage (display);
-        Shell shell = new Shell (display);
-        shell.setLayout (new FillLayout ());
-        Table table = new Table (shell, SWT.BORDER);
-        TableColumn column1 = new TableColumn (table, SWT.NONE);
-        TableColumn column2 = new TableColumn (table, SWT.NONE);
-        TableColumn column3 = new TableColumn (table, SWT.NONE);
-        TableItem item1 = new TableItem (table, SWT.NONE);
-        item1.setText ( ["first item", "a", "b"]);
-        item1.setImage (1, uncheckedImage);
-        item1.setImage (2, uncheckedImage);
-        item1.setData (STATE, null);
-        TableItem item2 = new TableItem (table, SWT.NONE);
-        item2.setText ( ["second item", "c", "d"]);
-        item2.setImage (1, uncheckedImage);
-        item2.setImage (2, checkedImage);
-        item2.setData (STATE,  new ArrayWrapperInt([2]));
-        TableItem item3 = new TableItem (table, SWT.NONE);
-        item3.setText ( ["third", "e", "f"]);
-        item3.setImage (1, checkedImage);
-        item3.setImage (2, checkedImage);
-        item3.setData (STATE, new ArrayWrapperInt( [1, 2]));
-        column1.pack ();
-        column2.pack ();
-        column3.pack ();
+    Accessible accessible = table.getAccessible ();
+    accessible.addAccessibleListener( new class AccessibleAdapter  {
+        public void getName (AccessibleEvent e) {
+            super.getName (e);
+            if (e.childID >= 0 && e.childID < table.getItemCount ()) {
+                TableItem item = table.getItem (e.childID);
+                Point pt = display.getCursorLocation ();
+                pt = display.map (null, table, pt);
+                for (int i = 0; i < table.getColumnCount (); i++) {
+                    if (item.getBounds (i).contains (pt)) {
+                        int [] data = (cast(ArrayWrapperInt)item.getData (STATE)).array;
+                        bool checked = false;
+                        if (data !is null) {
+                            for (int j = 0; j < data.length; j++) {
+                                if (data [j] == i) {
+                                    checked = true;
+                                    break;
+                                }
+                            }
+                        }
+                        e.result = item.getText (i) ~ " " ~ (checked ? "checked" : "unchecked");
+                        break;
+                    }
+                }
+            }
+        }
+    });
 
-        Accessible accessible = table.getAccessible ();
-        accessible.addAccessibleListener( new class() AccessibleAdapter  {
-            public void getName (AccessibleEvent e) {
-                super.getName (e);
-                if (e.childID >= 0 && e.childID < table.getItemCount ()) {
-                    TableItem item = table.getItem (e.childID);
+    accessible.addAccessibleControlListener (new class AccessibleControlAdapter  {
+        public void getState (AccessibleControlEvent e) {
+            super.getState (e);
+            if (e.childID >= 0 && e.childID < table.getItemCount ()) {
+                TableItem item = table.getItem (e.childID);
+                int [] data =(cast(ArrayWrapperInt)item.getData (STATE)).array;
+                if (data !is null) {
                     Point pt = display.getCursorLocation ();
                     pt = display.map (null, table, pt);
-                    for (int i = 0; i < table.getColumnCount (); i++) {
-                        if (item.getBounds (i).contains (pt)) {
-                            int [] data = (cast(ArrayWrapperInt)item.getData (STATE)).array;
-                            bool checked = false;
-                            if (data !is null) {
-                                for (int j = 0; j < data.length; j++) {
-                                    if (data [j] == i) {
-                                        checked = true;
-                                        break;
-                                    }
-                                }
-                            }
-                            e.result = item.getText (i) ~ " " ~ (checked ? "checked" : "unchecked");
+                    for (int i = 0; i < data.length; i++) {
+                        if (item.getBounds (data [i]).contains (pt)) {
+                            e.detail |= ACC.STATE_CHECKED;
                             break;
                         }
                     }
                 }
             }
-        });
+        }
+    });
+    shell.open ();
+    while (!shell.isDisposed ()) {
+        if (!display.readAndDispatch ()) display.sleep ();
+    }
+    checkedImage.dispose ();
+    uncheckedImage.dispose ();
+    display.dispose ();
+}
 
-        accessible.addAccessibleControlListener (new class() AccessibleControlAdapter  {
-            public void getState (AccessibleControlEvent e) {
-                super.getState (e);
-                if (e.childID >= 0 && e.childID < table.getItemCount ()) {
-                    TableItem item = table.getItem (e.childID);
-                    int [] data =(cast(ArrayWrapperInt)item.getData (STATE)).array;
-                    if (data !is null) {
-                        Point pt = display.getCursorLocation ();
-                        pt = display.map (null, table, pt);
-                        for (int i = 0; i < data.length; i++) {
-                            if (item.getBounds (data [i]).contains (pt)) {
-                                e.detail |= ACC.STATE_CHECKED;
-                                break;
-                            }
-                        }
-                    }
-                }
-            }
-        });
-        shell.open ();
-        while (!shell.isDisposed ()) {
-            if (!display.readAndDispatch ()) display.sleep ();
-        }
-        checkedImage.dispose ();
-        uncheckedImage.dispose ();
-        display.dispose ();
-    }
+Image getCheckedImage (Display display) {
+    Image image = new Image (display, 16, 16);
+    GC gc = new GC (image);
+    gc.setBackground (display.getSystemColor (SWT.COLOR_YELLOW));
+    gc.fillOval (0, 0, 16, 16);
+    gc.setForeground (display.getSystemColor (SWT.COLOR_DARK_GREEN));
+    gc.drawLine (0, 0, 16, 16);
+    gc.drawLine (16, 0, 0, 16);
+    gc.dispose ();
+    return image;
+}
 
-    static Image getCheckedImage (Display display) {
-        Image image = new Image (display, 16, 16);
-        GC gc = new GC (image);
-        gc.setBackground (display.getSystemColor (SWT.COLOR_YELLOW));
-        gc.fillOval (0, 0, 16, 16);
-        gc.setForeground (display.getSystemColor (SWT.COLOR_DARK_GREEN));
-        gc.drawLine (0, 0, 16, 16);
-        gc.drawLine (16, 0, 0, 16);
-        gc.dispose ();
-        return image;
-    }
-
-    static Image getUncheckedImage (Display display) {
-        Image image = new Image (display, 16, 16);
-        GC gc = new GC (image);
-        gc.setBackground (display.getSystemColor (SWT.COLOR_YELLOW));
-        gc.fillOval (0, 0, 16, 16);
-        gc.dispose ();
-        return image;
-    }
+Image getUncheckedImage (Display display) {
+    Image image = new Image (display, 16, 16);
+    GC gc = new GC (image);
+    gc.setBackground (display.getSystemColor (SWT.COLOR_YELLOW));
+    gc.fillOval (0, 0, 16, 16);
+    gc.dispose ();
+    return image;
 }