javauis/lcdui_qt/src/javax/microedition/lcdui/ItemLayouter.java
changeset 57 59b3b4473dc8
parent 23 98ccebc37403
child 64 0ea12c182930
--- a/javauis/lcdui_qt/src/javax/microedition/lcdui/ItemLayouter.java	Fri Jul 23 12:27:20 2010 +0300
+++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/ItemLayouter.java	Thu Aug 05 16:07:57 2010 +0300
@@ -36,11 +36,11 @@
     /**
      * Key name for paint listener.
      */
-    private static final String FOCUS_LISTENER = "itemfocus";
+    private static final String FOCUS_LISTENER = "FocusListener";
 
     protected static final String MIN_TEXT = "...";
 
-    protected DefaultFormInteraction dfi;
+    protected FormLayouter formLayouter;
 
     protected Composite formComposite;
 
@@ -112,12 +112,12 @@
     /**
      * Constructor.
      *
-     * @param dflp - DefaultFormLayoutPolicy used for layouting.
+     * @param aFormLayouter FormLayouter used for layouting.
      */
-    ItemLayouter(DefaultFormLayoutPolicy dflp)
+    ItemLayouter(FormLayouter aFormLayouter)
     {
-        this.dfi = (DefaultFormInteraction) dflp;
-        formComposite = dflp.getForm().getFormComposite();
+        formLayouter = aFormLayouter;
+        formComposite = formLayouter.getForm().getFormComposite();
         ESWTUIThreadRunner.syncExec(new Runnable()
         {
             public void run()
@@ -132,7 +132,7 @@
      */
     int eswtGetLabelAlignmentDirective()
     {
-        return dfi.getLanguageSpecificLayoutDirective();
+        return formLayouter.getLanguageSpecificLayoutDirective();
     }
 
     /**
@@ -143,8 +143,8 @@
      */
     void eswtLayoutItem(Row row, Item item)
     {
-        LayoutObject lo = new LayoutObject(item, eswtGetCaptionedControl(item));
-        dfi.eswtAddNewLayoutObject(lo);
+    	LayoutObject lo = getLayoutObject(item);
+        formLayouter.eswtAddNewLayoutObject(lo);
         if(item instanceof CustomItem)
         {
             ItemControlStateChangeListener listener = item.getItemControlStateChangeListener();
@@ -157,6 +157,22 @@
     }
 
     /**
+     * Creates LayoutObject for the given Item.
+     *
+     * @param item Item to layout
+     * @return LayoutObject
+     */
+    LayoutObject getLayoutObject(Item item)
+    {
+    	LayoutObject lo = formLayouter.getLayoutObject(item);
+    	if(lo == null)
+    	{
+        	lo = new LayoutObject(item, eswtGetCaptionedControl(item));
+    	}
+		return lo;
+    }
+
+    /**
      * Wraps this item's control in the necessary composites.<br>
      * Based on the item, the result of this method can be:
      * <li> specific Control
@@ -169,20 +185,14 @@
      */
     final Control eswtGetCaptionedControl(Item item)
     {
+        CaptionedControl captioned = new CaptionedControl(formComposite, SWT.VERTICAL);
         if(item.hasLabel())
         {
-            CaptionedControl captioned = new CaptionedControl(formComposite, SWT.VERTICAL);
-            captioned.setText(item.getLabel());
-            eswtGetControl(captioned, item);
-            eswtCaptionedResize(item, captioned, item.getLayoutWidth(), item.getLayoutHeight());
-            return captioned;
-        }
-        else
-        {
-            Control ret = eswtGetControl(formComposite, item);
-            eswtCaptionedResize(item, ret, item.getLayoutWidth(), item.getLayoutHeight());
-            return ret;
-        }
+	        captioned.setText(item.getLabel());
+		}
+        eswtGetControl(captioned, item);
+        eswtCaptionedResize(item, captioned, item.getLayoutWidth(), item.getLayoutHeight());
+        return captioned;
     }
 
     /**
@@ -244,7 +254,10 @@
      */
     void eswtResizeControl(Item item, Control control, int width, int height)
     {
-        control.setSize(width, height);
+    	if(control != null)
+    	{
+        	control.setSize(width, height);
+    	}
     }
 
     /**
@@ -337,12 +350,11 @@
         {
             public void run()
             {
-                Control specific = eswtFindSpecificControl(item, control);
-                if(specific != null)
+                if(control != null)
                 {
-                    if(!specific.isDisposed())
+                    if(!control.isDisposed())
                     {
-                        eswtUpdateItem(item, specific, reason, param);
+                        eswtUpdateItem(item, control, reason, param);
                     }
                     else
                     {
@@ -430,7 +442,7 @@
      */
     Control eswtGetFirstControl(Item item)
     {
-        LayoutObject lo = dfi.getFirstLayoutObjectOfItem(item);
+        LayoutObject lo = formLayouter.getFirstLayoutObjectOfItem(item);
         if(lo != null)
         {
             return lo.getControl();
@@ -446,7 +458,7 @@
      */
     Control eswtGetFirstSpecificControl(Item item)
     {
-        LayoutObject lo = dfi.getFirstLayoutObjectOfItem(item);
+        LayoutObject lo = formLayouter.getFirstLayoutObjectOfItem(item);
         if(lo != null)
         {
             Control control = lo.getControl();
@@ -707,7 +719,7 @@
             if(!item.isFocused())
             {
                 // Logger.method(item, "focusGained");
-                dfi.eswtSetCurrentSelectedItem(item);
+                formLayouter.eswtSetCurrentSelectedItem(item);
             }
         }