jstrachan    2002/12/19 09:22:36

  Modified:    jelly/src/java/org/apache/commons/jelly/tags/swt
                        SwtHelper.java WidgetTag.java SwtTagLibrary.java
               jelly/src/test/org/apache/commons/jelly/swt example.jelly
  Added:       jelly/src/test/org/apache/commons/jelly/swt tree.jelly
                        tableTree.jelly
  Log:
  Patch to add better error reporting if wrong SWT style codes are used and handle 
constructors of widgets better.
  
  Also added an example of using trees. Have added a TableTree example but can't seem 
to get the text values to dislpay :-(
  
  Revision  Changes    Path
  1.3       +11 -5     
jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/SwtHelper.java
  
  Index: SwtHelper.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/SwtHelper.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SwtHelper.java    18 Dec 2002 18:42:29 -0000      1.2
  +++ SwtHelper.java    19 Dec 2002 17:22:36 -0000      1.3
  @@ -64,6 +64,7 @@
   import java.lang.reflect.Field;
   import java.util.StringTokenizer;
   
  +import org.apache.commons.jelly.JellyException;
   import org.apache.commons.jelly.tags.core.UseBeanTag;
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  @@ -124,11 +125,16 @@
        * valid style
        */
       public static int getStyleCode(Class constantClass,String text) throws 
Exception {
  -        Field field = constantClass.getField(text);
  -        if (field == null) {
  -            log.warn( "Unknown style code: " + text +" will be ignored");
  -            return 0;
  +        try {
  +            Field field = constantClass.getField(text);
  +            if (field == null) {
  +                log.warn( "Unknown style code: " + text +" will be ignored");
  +                return 0;
  +            }
  +            return field.getInt(null);
  +        }
  +        catch (Exception e) {
  +            throw new JellyException("The value: " + text + " is not understood", 
e);
           }
  -        return field.getInt(null);
       }
   }
  
  
  
  1.2       +9 -7      
jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/WidgetTag.java
  
  Index: WidgetTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/WidgetTag.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- WidgetTag.java    18 Dec 2002 15:27:49 -0000      1.1
  +++ WidgetTag.java    19 Dec 2002 17:22:36 -0000      1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header$
  - * $Revision$
  - * $Date$
  + * 
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/WidgetTag.java,v
 1.1 2002/12/18 15:27:49 jstrachan Exp
  + * 1.1
  + * 2002/12/18 15:27:49
    *
    * ====================================================================
    *
  @@ -57,7 +57,7 @@
    * information on the Apache Software Foundation, please see
    * <http://www.apache.org/>.
    * 
  - * $Id$
  + * WidgetTag.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
    */
   package org.apache.commons.jelly.tags.swt;
   
  @@ -77,7 +77,7 @@
    * this widget as a variable if the <i>var</i> attribute is specified.</p>
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>James Strachan</a>
  - * @version $Revision$
  + * @version 1.1
    */
   public class WidgetTag extends UseBeanTag {
   
  @@ -178,8 +178,10 @@
                       Constructor constructor = constructors[i];
                       Class[] types = constructor.getParameterTypes();
                       if (types.length == 2 && types[1].isAssignableFrom(int.class)) {
  -                        Object[] arguments = { parent, new Integer(style)};
  -                        return constructor.newInstance(arguments);
  +                        if (types[0].isAssignableFrom(parent.getClass())) {
  +                            Object[] arguments = { parent, new Integer(style)};
  +                            return constructor.newInstance(arguments);
  +                        }
                       }
                   }
               }
  
  
  
  1.3       +5 -0      
jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/SwtTagLibrary.java
  
  Index: SwtTagLibrary.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/SwtTagLibrary.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SwtTagLibrary.java        18 Dec 2002 18:42:29 -0000      1.2
  +++ SwtTagLibrary.java        19 Dec 2002 17:22:36 -0000      1.3
  @@ -66,6 +66,7 @@
   import org.eclipse.swt.layout.GridLayout;
   import org.eclipse.swt.layout.RowData;
   import org.eclipse.swt.layout.RowLayout;
  +import org.eclipse.swt.custom.*;
   import org.eclipse.swt.widgets.*;
   
   import org.apache.commons.jelly.Tag;
  @@ -124,6 +125,10 @@
           registerWidgetTag( "tracker", Tracker.class );
           registerWidgetTag( "tree", Tree.class );
           registerWidgetTag( "treeItem", TreeItem.class );
  +
  +        // custom widgets
  +        registerWidgetTag( "tableTree", TableTree.class );
  +        registerWidgetTag( "tableTreeItem", TableTreeItem.class );
   
           // layouts        
           registerLayoutTag("fillLayout", FillLayout.class);
  
  
  
  1.4       +11 -1     
jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/swt/example.jelly
  
  Index: example.jelly
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/swt/example.jelly,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- example.jelly     18 Dec 2002 18:42:16 -0000      1.3
  +++ example.jelly     19 Dec 2002 17:22:36 -0000      1.4
  @@ -56,9 +56,19 @@
                </table>
   
        <toolBar style="vertical">
  -             <toolItem text="ToolBar Item" toolTipText="I am a ToolBar Item that 
you can click">
  +             <toolItem text="Click Me" toolTipText="I am a ToolBar Item that you 
can click">
                        <onEvent type="Selection">
                                <log:info>Clicked button with event ${event} and text 
field contains ${textField.text}</log:info>
  +                     </onEvent>
  +                     </toolItem>
  +             <toolItem text="Tree" toolTipText="Starts the Tree demo">
  +                     <onEvent type="Selection">
  +                             <j:include uri="tree.jelly"/>
  +                     </onEvent>
  +                     </toolItem>
  +             <toolItem text="TableTree" toolTipText="Starts the TableTree demo">
  +                     <onEvent type="Selection">
  +                             <j:include uri="tableTree.jelly"/>
                        </onEvent>
                        </toolItem>
        </toolBar>
  
  
  
  1.1                  
jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/swt/tree.jelly
  
  Index: tree.jelly
  ===================================================================
  <?xml version="1.0"?>
  <j:jelly xmlns:j="jelly:core" xmlns="jelly:swt" xmlns:log="jelly:log">
  
    <shell text="Tree Demo" var="shell" style="border, close, min, max, resize, 
title">
        
        <gridLayout/>
  
                <tree toolTipText="This is a tree!" style="multi">
                        
                        <gridData style="fill_both"/>
                        
                        <!-- we'd normally use some Java bean model to implement the 
next bit -->
                        <treeItem text="A">
                                <treeItem text="A/A"/>
                                <treeItem text="A/B"/>
                                <treeItem text="A/C"/>
                        </treeItem>
                        <treeItem text="B">
                                <treeItem text="B/A"/>
                                <treeItem text="B/B"/>
                                <treeItem text="B/C"/>
                        </treeItem>
                                                        
                        <menu style="pop_up">
                                <menuItem text="do something!">
                                        <onEvent type="Selection">
                                                <log:info>Clicked on 
${event}</log:info>
                                        </onEvent>
                                </menuItem>
                        </menu>                                                 
                </tree>
    </shell>
  
        ${shell.pack()}
        ${shell.open()}
  </j:jelly>
  
  
  
  1.1                  
jakarta-commons-sandbox/jelly/src/test/org/apache/commons/jelly/swt/tableTree.jelly
  
  Index: tableTree.jelly
  ===================================================================
  <?xml version="1.0"?>
  <j:jelly xmlns:j="jelly:core" xmlns="jelly:swt" xmlns:log="jelly:log">
  
    <shell text="TableTree Demo" var="shell" style="border, close, min, max, resize, 
title">
        
        <gridLayout/>
  
                <tableTree toolTipText="This is a table tree!" style="multi, 
full_selection">
                        
                        <gridData style="fill_both"/>
                        
                        <!-- we'd normally use some Java bean model to implement the 
next bit -->
                        <tableTreeItem var="row">
                                        ${row.setText('A')}
                                        ${row.setText(0, 'James')}
                                        ${row.setText(1, '33')}
                                <tableTreeItem>
                                        ${row.setText('B')}
                                        ${row.setText(0, 'Child')}
                                        ${row.setText(1, '2')}
                                </tableTreeItem>
                                
                                <tableTreeItem>
                                        ${row.setText(0, 'Child-nosettext')}
                                        ${row.setText(1, '2')}
                                </tableTreeItem>
                                
                                <tableTreeItem var="row">
                                        ${row.setText('C')}
                                        ${row.setText(0, 'Bob')}
                                        ${row.setText(1, '30')}
  
                                        <tableTreeItem var="row">
                                                ${row.setText('C')}
                                        </tableTreeItem>
  
                                </tableTreeItem>
                        </tableTreeItem>
                                                        
                </tableTree>
    </shell>
  
        ${shell.open()}
  </j:jelly>
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to