commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jstrac...@apache.org
Subject cvs commit: jakarta-commons/jelly/jelly-tags/jface maven.xml
Date Wed, 26 Feb 2003 12:53:37 GMT
jstrachan    2003/02/26 04:53:37

  Modified:    jelly/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt
                        LayoutDataTag.java ImageTag.java LayoutTag.java
                        LayoutTagSupport.java WidgetTag.java
               jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/wizard
                        WizardDialogTag.java
               jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface
                        JFaceTagLibrary.java ViewerTag.java
                        MenuManagerTag.java
               jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/preference
                        PreferenceDialogTag.java
               jelly/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface
                        JFaceDemo.jelly
               jelly/jelly-tags/jface maven.xml
  Added:       jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface
                        JFaceWidgetTag.java JFaceImageTag.java
                        JFaceLayoutTag.java JFaceLayoutDataTag.java
               jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/window
                        ApplicationWindowTag.java
                        ApplicationWindowImpl.java
               jelly/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface
                        JFaceDemo.java
  Removed:     jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface
                        ApplicationWindowTag.java
  Log:
  Applied latest patches supplied by Christiaan ten Klooster for a JFace demo, properties editing and Wizard support. 
  Neat!
  
  Revision  Changes    Path
  1.5       +11 -11    jakarta-commons/jelly/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/LayoutDataTag.java
  
  Index: LayoutDataTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jelly/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/LayoutDataTag.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- LayoutDataTag.java	24 Jan 2003 22:53:33 -0000	1.4
  +++ LayoutDataTag.java	26 Feb 2003 12:53:36 -0000	1.5
  @@ -94,21 +94,20 @@
       /**
        * Either defines a variable or adds the current component to the parent
        */
  -    protected void processBean(String var, Object bean) throws JellyTagException {
  +    protected void processBean(String var, Object bean)
  +        throws JellyTagException {
           super.processBean(var, bean);
   
           Widget parent = getParentWidget();
  -        
  +
           if (parent instanceof Control) {
               Control control = (Control) parent;
               control.setLayoutData(getBean());
  -        }
  -        else {
  +        } else {
               throw new JellyTagException("This tag must be nested within a control widget tag");
           }
       }
  -    
  -    
  +
       /**
        * @see org.apache.commons.jelly.tags.core.UseBeanTag#newInstance(java.lang.Class, java.util.Map, org.apache.commons.jelly.XMLOutput)
        */
  @@ -117,18 +116,18 @@
           Map attributes,
           XMLOutput output)
           throws JellyTagException {
  -            
  +
           String text = (String) attributes.remove("style");
           if (text != null) {
               int style = SwtHelper.parseStyle(theClass, text);
  -            
  +
               // now lets try invoke a constructor
               Class[] types = { int.class };
  -            
  +
               try {
                   Constructor constructor = theClass.getConstructor(types);
                   if (constructor != null) {
  -                    Object[] values = { new Integer(style) };
  +                    Object[] values = { new Integer(style)};
                       return constructor.newInstance(values);
                   }
               } catch (NoSuchMethodException e) {
  @@ -152,7 +151,8 @@
   
           if (bean instanceof GridData) {
               if (name.endsWith("Alignment") && value instanceof String) {
  -                int style = SwtHelper.parseStyle(bean.getClass(), (String) value);
  +                int style =
  +                    SwtHelper.parseStyle(bean.getClass(), (String) value);
                   return new Integer(style);
               }
           }
  
  
  
  1.3       +64 -55    jakarta-commons/jelly/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/ImageTag.java
  
  Index: ImageTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jelly/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/ImageTag.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ImageTag.java	20 Feb 2003 18:07:18 -0000	1.2
  +++ ImageTag.java	26 Feb 2003 12:53:36 -0000	1.3
  @@ -74,38 +74,38 @@
    */
   public class ImageTag extends TagSupport {
   
  -	/** path to file */
  -	private String src;
  +    /** path to file */
  +    private String src;
   
  -	public ImageTag() {
  -	}
  +    public ImageTag() {
  +    }
   
  -	/**
  -	 * Sets the src.
  -	 * @param src The src to set
  -	 */
  -	public void setSrc(String src) {
  -		this.src = src;
  -	}
  -
  -	/**
  -	 * Method getSrc.
  -	 * @return String
  -	 */
  -	public String getSrc() {
  -		return src;
  -	}
  -
  -	/**
  -	 * @return the parent widget which this widget will be added to.
  -	 */
  -	public Widget getParentWidget() {
  -		WidgetTag tag = (WidgetTag) findAncestorWithClass(WidgetTag.class);
  -		if (tag != null) {
  -			return tag.getWidget();
  -		}
  -		return null;
  -	}
  +    /**
  +     * Sets the src.
  +     * @param src The src to set
  +     */
  +    public void setSrc(String src) {
  +        this.src = src;
  +    }
  +
  +    /**
  +     * Method getSrc.
  +     * @return String
  +     */
  +    public String getSrc() {
  +        return src;
  +    }
  +
  +    /**
  +     * @return the parent widget which this widget will be added to.
  +     */
  +    public Widget getParentWidget() {
  +        WidgetTag tag = (WidgetTag) findAncestorWithClass(WidgetTag.class);
  +        if (tag != null) {
  +            return tag.getWidget();
  +        }
  +        return null;
  +    }
   
       // Tag interface
       //-------------------------------------------------------------------------
  @@ -116,33 +116,42 @@
       public void doTag(XMLOutput output) throws JellyTagException {
           // invoke by body just in case some nested tag configures me
           invokeBody(output);
  -        
  -		Widget parent = getParentWidget();
  +
  +        Widget parent = getParentWidget();
  +
           if (parent == null) {
  -            throw new JellyTagException("This tag must be nested within a widget");
  +            throw new JellyTagException("This tag must be nested within a Widget or a Window");
           }
  -        
  -		Image image = new Image(parent.getDisplay(), getSrc());
   
  -		if (parent instanceof Label) {
  -			Label label = (Label) parent;
  -			label.setImage(image);
  -
  -		} else if (parent instanceof Button) {
  -			Button button = (Button) parent;
  -			button.setImage(image);
  -			
  -		} else if (parent instanceof Item) {
  -			Item item = (Item) parent;
  -			item.setImage(image);
  -			
  -		} else if (parent instanceof Decorations) {
  -			Decorations item = (Decorations) parent;
  -			item.setImage(image);
  -			
  -		} else {
  -			throw new JellyTagException("This tag must be nested inside a <label>, <button> or <item> tag");
  -		}
  -	}
  +        Image image = new Image(parent.getDisplay(), getSrc());
  +        setWidgetImage(parent, image);
  +    }
   
  +    /**
  +     * Add image to a widget
  +     * @param parent
  +     * @param image
  +     * @throws JellyTagException
  +     */
  +    protected void setWidgetImage(Widget parent, Image image) throws JellyTagException {
  +        if (parent instanceof Label) {
  +            Label label = (Label) parent;
  +            label.setImage(image);
  +
  +        } else if (parent instanceof Button) {
  +            Button button = (Button) parent;
  +            button.setImage(image);
  +
  +        } else if (parent instanceof Item) {
  +            Item item = (Item) parent;
  +            item.setImage(image);
  +
  +        } else if (parent instanceof Decorations) {
  +            Decorations item = (Decorations) parent;
  +            item.setImage(image);
  +
  +        } else {
  +            throw new JellyTagException("This tag must be nested inside a <label>, <button> or <item> tag");
  +        }
  +    }
   }
  
  
  
  1.4       +12 -8     jakarta-commons/jelly/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/LayoutTag.java
  
  Index: LayoutTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jelly/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/LayoutTag.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- LayoutTag.java	24 Jan 2003 22:53:33 -0000	1.3
  +++ LayoutTag.java	26 Feb 2003 12:53:36 -0000	1.4
  @@ -93,7 +93,7 @@
        */
       public Layout getLayout() {
           Object bean = getBean();
  -        if ( bean instanceof Layout ) {
  +        if (bean instanceof Layout) {
               return (Layout) bean;
           }
           return null;
  @@ -105,26 +105,30 @@
       /**
        * Either defines a variable or adds the current component to the parent
        */
  -    protected void processBean(String var, Object bean) throws JellyTagException {
  +    protected void processBean(String var, Object bean)
  +        throws JellyTagException {
           super.processBean(var, bean);
  -        
  +
           Widget parent = getParentWidget();
  +
           if (parent instanceof Composite) {
               Composite composite = (Composite) parent;
               composite.setLayout(getLayout());
  -        }
  -        else {
  +
  +        } else {
               throw new JellyTagException("This tag must be nested within a composite widget tag");
           }
       }
  -    
  +
       /**
        * @see org.apache.commons.jelly.tags.swt.LayoutTagSupport#convertValue(java.lang.Object, java.lang.String, java.lang.Object)
        */
       protected Object convertValue(Object bean, String name, Object value)
           throws JellyTagException {
  -            
  -        if (bean instanceof FillLayout && name.equals("type") && value instanceof String) {
  +
  +        if (bean instanceof FillLayout
  +            && name.equals("type")
  +            && value instanceof String) {
               int style = SwtHelper.parseStyle(SWT.class, (String) value);
               return new Integer(style);
           }
  
  
  
  1.4       +11 -13    jakarta-commons/jelly/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/LayoutTagSupport.java
  
  Index: LayoutTagSupport.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jelly/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/LayoutTagSupport.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- LayoutTagSupport.java	24 Jan 2003 22:53:33 -0000	1.3
  +++ LayoutTagSupport.java	26 Feb 2003 12:53:36 -0000	1.4
  @@ -113,10 +113,9 @@
       public void setVar(String var) {
           this.var = var;
       }
  -    
  +
       // Implementation methods
       //-------------------------------------------------------------------------                    
  -
       /**
        * Either defines a variable or adds the current component to the parent
        */
  @@ -125,22 +124,21 @@
               context.setVariable(var, bean);
           }
       }
  -    
  +
       /**
        * @see org.apache.commons.jelly.tags.core.UseBeanTag#setBeanProperties(java.lang.Object, java.util.Map)
        */
  -    protected void setBeanProperties(Object bean, Map attributes)
  -        throws JellyTagException {
  -            
  +    protected void setBeanProperties(Object bean, Map attributes) throws JellyTagException {
  +
           if (bean != null) {
               Class theClass = bean.getClass();
  -            for (Iterator iter = attributes.entrySet().iterator(); iter.hasNext(); ) {
  +            for (Iterator iter = attributes.entrySet().iterator(); iter.hasNext();) {
                   Map.Entry entry = (Map.Entry) iter.next();
                   String name = (String) entry.getKey();
                   Object value = entry.getValue();
  -                
  +
                   value = convertValue(bean, name, value);
  -                
  +
                   try {
                       // lets first see if there's a field available
                       Field field = theClass.getField(name);
  @@ -149,8 +147,7 @@
                               value = ConvertUtils.convert((String) value, field.getType());
                           }
                           field.set(bean, value);
  -                    }
  -                    else {
  +                    } else {
                           BeanUtils.setProperty(bean, name, value);
                       }
                   } catch (NoSuchFieldException e) {
  @@ -163,7 +160,7 @@
               }
           }
       }
  -    
  +
       /**
        * Provides a strategy method that allows values to be converted,
        * particularly to support integer enumerations and String representations.
  @@ -173,7 +170,8 @@
        * @param value the value of the property
        * @return the new value
        */
  -    protected Object convertValue(Object bean, String name, Object value) throws JellyTagException {
  +    protected Object convertValue(Object bean, String name, Object value)
  +        throws JellyTagException {
           return value;
       }
   
  
  
  
  1.10      +228 -234  jakarta-commons/jelly/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/WidgetTag.java
  
  Index: WidgetTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jelly/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/WidgetTag.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- WidgetTag.java	20 Feb 2003 18:14:53 -0000	1.9
  +++ WidgetTag.java	26 Feb 2003 12:53:36 -0000	1.10
  @@ -90,240 +90,234 @@
    */
   public class WidgetTag extends UseBeanTag {
   
  -	/** The Log to which logging calls will be made. */
  -	private static final Log log = LogFactory.getLog(WidgetTag.class);
  +    /** The Log to which logging calls will be made. */
  +    private static final Log log = LogFactory.getLog(WidgetTag.class);
   
  -	private Widget parent;
  -	private int style = SWT.NULL;
  +    protected Widget parent;
  +    private int style = SWT.NULL;
   
  -	public WidgetTag(Class widgetClass) {
  -		super(widgetClass);
  -	}
  -
  -	public WidgetTag(Class widgetClass, int style) {
  -		super(widgetClass);
  -		this.style = style;
  -	}
  -
  -	public String toString() {
  -		return "WidgetTag[widget=" + getWidget() + "]";
  -	}
  -
  -	// Properties
  -	//-------------------------------------------------------------------------                    
  -
  -	/**
  -	 * @return the visible widget, if there is one.
  -	 */
  -	public Widget getWidget() {
  -		Object bean = getBean();
  -		if (bean instanceof Widget) {
  -			return (Widget) bean;
  -		}
  -		return null;
  -	}
  -
  -	/**
  -	 * @return the parent widget which this widget will be added to.
  -	 */
  -	public Widget getParentWidget() {
  -		if (parent == null) {
  -			WidgetTag tag = (WidgetTag) findAncestorWithClass(WidgetTag.class);
  -			if (tag != null) {
  -				parent = tag.getWidget();
  -			}
  -		}
  -		return parent;
  -	}
  -
  -	// Tag interface
  -	//-------------------------------------------------------------------------
  -	public void doTag(XMLOutput output) throws JellyTagException {
  -		Map attributes = getAttributes();
  -		Object parent = attributes.remove("parent");
  -		if (parent != null) {
  -			if (parent instanceof Widget) {
  -				this.parent = (Widget) parent;
  -			} else {
  -				throw new JellyTagException(
  -					"The parent attribute is not a Widget, it is of type: "
  -						+ parent.getClass().getName()
  -						+ " value: "
  -						+ parent);
  -			}
  -		}
  -		super.doTag(output);
  -	}
  -
  -	// Implementation methods
  -	//-------------------------------------------------------------------------                    
  -
  -	/**
  -	 * Factory method to create a new widget
  -	 */
  -	protected Object newInstance(
  -		Class theClass,
  -		Map attributes,
  -		XMLOutput output)
  -		throws JellyTagException {
  -		int style = getStyle(attributes);
  -
  -		// now lets call the constructor with the parent
  -		Widget parent = getParentWidget();
  -		Widget widget = (Widget) createWidget(theClass, parent, style);
  -		if (parent != null) {
  -			attachWidgets(parent, widget);
  -		}
  -
  -		return widget;
  -	}
  -
  -	/* 
  -	 * @see org.apache.commons.jelly.tags.core.UseBeanTag#setBeanProperties(java.lang.Object, java.util.Map)
  -	 */
  -	protected void setBeanProperties(Object bean, Map attributes)
  -		throws JellyTagException {
  -
  -		if (bean instanceof Control) {
  -			Control control = (Control) bean;
  -
  -			// Special handling of size property as the Control object breaks the
  -			// JavaBean naming conventions by overloading the setSize() method 	
  -			Object size = attributes.remove("size");
  -			setSize(control, size);
  -
  -			// Special handling of color property as the Control object breaks the
  -	 		// JavaBean naming conventions by overloading the setBackground() or setForeground() method 	
  -			Object colorValue = attributes.remove("background");
  -			Color background = getColor(control, colorValue);
  -			control.setBackground(background);
  -			
  -			colorValue = attributes.remove("foreground");
  -			Color foreground = getColor(control, colorValue);
  -			control.setForeground(foreground);
  -
  -		}
  -
  -		super.setBeanProperties(bean, attributes);
  -	}
  -
  -	/**
  -	 * Get a color for the control  		
  -	 * @param control
  -	 * @param colorValue
  -	 */
  -	protected Color getColor(Control control, Object colorValue) {
  -		Color color = null;
  -		if (colorValue != null) {
  -			RGB rgb = null;
  -			if (color instanceof Color) {
  -				color = (Color) colorValue;
  -			} else {
  -				rgb = ColorConverter.getInstance().parse(colorValue.toString());
  -				color = new Color(control.getDisplay(), rgb);
  -			}
  -		}
  -		return color;
  -	}
  -
  -	/**
  -	 * set the size of the control 		
  -	 * @param control
  -	 * @param size
  -	 */
  -	protected void setSize(Control control, Object size) {
  -		Point point = null;
  -		if (size != null) {
  -			if (size instanceof Point) {
  -				point = (Point) size;
  -			} else {
  -				point = PointConverter.getInstance().parse(size.toString());
  -			}
  -			control.setSize(point);
  -		}
  -		
  -	}
  -
  -	/**
  -	 * Provides a strategy method to allow a new child widget to be attached to
  -	 * its parent
  -	 * 
  -	 * @param parent is the parent widget which is never null
  -	 * @param widget is the new child widget to be attached to the parent
  -	 */
  -	protected void attachWidgets(Widget parent, Widget widget) {
  -		// set the content that will be scrolled if the parent is a ScrolledComposite
  -		if (parent instanceof ScrolledComposite && widget instanceof Control) {
  -			ScrolledComposite scrolledComposite = (ScrolledComposite) parent;
  -			scrolledComposite.setContent((Control) widget);
  -		}
  -	}
  -
  -	/**
  -	 * Factory method to create an instance of the given Widget class with
  -	 * the given parent and SWT style
  -	 * 
  -	 * @param theClass is the type of widget to create
  -	 * @param parent is the parent widget
  -	 * @param style the SWT style code
  -	 * @return the new Widget
  -	 */
  -	protected Object createWidget(Class theClass, Widget parent, int style)
  -		throws JellyTagException {
  -		if (theClass == null) {
  -			throw new JellyTagException("No Class available to create the new widget");
  -		}
  -
  -		try {
  -			if (parent == null) {
  -				// lets try call a constructor with a single style
  -				Class[] types = { int.class };
  -				Constructor constructor = theClass.getConstructor(types);
  -				if (constructor != null) {
  -					Object[] arguments = { new Integer(style)};
  -					return constructor.newInstance(arguments);
  -				}
  -			} else {
  -				// lets try to find the constructor with 2 arguments with the 2nd argument being an int
  -				Constructor[] constructors = theClass.getConstructors();
  -				if (constructors != null) {
  -					for (int i = 0, size = constructors.length;
  -						i < size;
  -						i++) {
  -						Constructor constructor = constructors[i];
  -						Class[] types = constructor.getParameterTypes();
  -						if (types.length == 2
  -							&& types[1].isAssignableFrom(int.class)) {
  -							if (types[0].isAssignableFrom(parent.getClass())) {
  -								Object[] arguments =
  -									{ parent, new Integer(style)};
  -								return constructor.newInstance(arguments);
  -							}
  -						}
  -					}
  -				}
  -			}
  -			return theClass.newInstance();
  -		} catch (NoSuchMethodException e) {
  -			throw new JellyTagException(e);
  -		} catch (InstantiationException e) {
  -			throw new JellyTagException(e);
  -		} catch (IllegalAccessException e) {
  -			throw new JellyTagException(e);
  -		} catch (InvocationTargetException e) {
  -			throw new JellyTagException(e);
  -		}
  -	}
  -
  -	/**
  -	 * Creates the SWT style code for the current attributes
  -	 * @return the SWT style code
  -	 */
  -	protected int getStyle(Map attributes) throws JellyTagException {
  -		String text = (String) attributes.remove("style");
  -		if (text != null) {
  -			return SwtHelper.parseStyle(SWT.class, text);
  -		}
  -		return style;
  -	}
  +    public WidgetTag(Class widgetClass) {
  +        super(widgetClass);
  +    }
  +
  +    public WidgetTag(Class widgetClass, int style) {
  +        super(widgetClass);
  +        this.style = style;
  +    }
  +
  +    public String toString() {
  +        return "WidgetTag[widget=" + getWidget() + "]";
  +    }
  +
  +    // Properties
  +    //-------------------------------------------------------------------------                    
  +
  +    /**
  +     * @return the visible widget, if there is one.
  +     */
  +    public Widget getWidget() {
  +        Object bean = getBean();
  +        if (bean instanceof Widget) {
  +            return (Widget) bean;
  +        }
  +        return null;
  +    }
  +
  +    /**
  +     * @return the parent widget which this widget will be added to.
  +     */
  +    public Widget getParentWidget() {
  +
  +        if (parent == null) {
  +            WidgetTag tag = (WidgetTag) findAncestorWithClass(WidgetTag.class);
  +            if (tag != null) {
  +                return tag.getWidget();
  +            }
  +        }
  +
  +        return parent;
  +    }
  +
  +    // Tag interface
  +    //-------------------------------------------------------------------------
  +    public void doTag(XMLOutput output) throws JellyTagException {
  +        Map attributes = getAttributes();
  +        Object parent = attributes.remove("parent");
  +        if (parent != null) {
  +            if (parent instanceof Widget) {
  +                this.parent = (Widget) parent;
  +            } else {
  +                throw new JellyTagException(
  +                    "The parent attribute is not a Widget, it is of type: "
  +                        + parent.getClass().getName()
  +                        + " value: "
  +                        + parent);
  +            }
  +        }
  +        super.doTag(output);
  +    }
  +
  +    // Implementation methods
  +    //-------------------------------------------------------------------------                    
  +
  +    /**
  +     * Factory method to create a new widget
  +     */
  +    protected Object newInstance(Class theClass, Map attributes, XMLOutput output)
  +        throws JellyTagException {
  +        int style = getStyle(attributes);
  +
  +        // now lets call the constructor with the parent
  +        Widget parent = getParentWidget();
  +
  +        Widget widget = (Widget) createWidget(theClass, parent, style);
  +        if (parent != null) {
  +            attachWidgets(parent, widget);
  +        }
  +
  +        return widget;
  +    }
  +
  +    /* 
  +     * @see org.apache.commons.jelly.tags.core.UseBeanTag#setBeanProperties(java.lang.Object, java.util.Map)
  +     */
  +    protected void setBeanProperties(Object bean, Map attributes) throws JellyTagException {
  +
  +        if (bean instanceof Control) {
  +            Control control = (Control) bean;
  +
  +            // Special handling of size property as the Control object breaks the
  +            // JavaBean naming conventions by overloading the setSize() method 	
  +            Object size = attributes.remove("size");
  +            setSize(control, size);
  +
  +            // Special handling of color property as the Control object breaks the
  +            // JavaBean naming conventions by overloading the setBackground() or setForeground() method 	
  +            Object colorValue = attributes.remove("background");
  +            Color background = getColor(control, colorValue);
  +            control.setBackground(background);
  +
  +            colorValue = attributes.remove("foreground");
  +            Color foreground = getColor(control, colorValue);
  +            control.setForeground(foreground);
  +        }
  +
  +        super.setBeanProperties(bean, attributes);
  +    }
  +
  +    /**
  +     * Get a color for the control  		
  +     * @param control
  +     * @param colorValue
  +     */
  +    protected Color getColor(Control control, Object colorValue) {
  +        Color color = null;
  +        if (colorValue != null) {
  +            RGB rgb = null;
  +            if (color instanceof Color) {
  +                color = (Color) colorValue;
  +            } else {
  +                rgb = ColorConverter.getInstance().parse(colorValue.toString());
  +                color = new Color(control.getDisplay(), rgb);
  +            }
  +        }
  +        return color;
  +    }
  +
  +    /**
  +     * set the size of the control 		
  +     * @param control
  +     * @param size
  +     */
  +    protected void setSize(Control control, Object size) {
  +        Point point = null;
  +        if (size != null) {
  +            if (size instanceof Point) {
  +                point = (Point) size;
  +            } else {
  +                point = PointConverter.getInstance().parse(size.toString());
  +            }
  +            control.setSize(point);
  +        }
  +
  +    }
  +
  +    /**
  +     * Provides a strategy method to allow a new child widget to be attached to
  +     * its parent
  +     * 
  +     * @param parent is the parent widget which is never null
  +     * @param widget is the new child widget to be attached to the parent
  +     */
  +    protected void attachWidgets(Object parent, Widget widget) throws JellyTagException {
  +        // set the content that will be scrolled if the parent is a ScrolledComposite
  +        if (parent instanceof ScrolledComposite && widget instanceof Control) {
  +            ScrolledComposite scrolledComposite = (ScrolledComposite) parent;
  +            scrolledComposite.setContent((Control) widget);
  +        }
  +    }
  +
  +    /**
  +     * Factory method to create an instance of the given Widget class with
  +     * the given parent and SWT style
  +     * 
  +     * @param theClass is the type of widget to create
  +     * @param parent is the parent widget
  +     * @param style the SWT style code
  +     * @return the new Widget
  +     */
  +    protected Object createWidget(Class theClass, Widget parent, int style)
  +        throws JellyTagException {
  +        if (theClass == null) {
  +            throw new JellyTagException("No Class available to create the new widget");
  +        }
  +
  +        try {
  +            if (parent == null) {
  +                // lets try call a constructor with a single style
  +                Class[] types = { int.class };
  +                Constructor constructor = theClass.getConstructor(types);
  +                if (constructor != null) {
  +                    Object[] arguments = { new Integer(style)};
  +                    return constructor.newInstance(arguments);
  +                }
  +            } else {
  +                // lets try to find the constructor with 2 arguments with the 2nd argument being an int
  +                Constructor[] constructors = theClass.getConstructors();
  +                if (constructors != null) {
  +                    for (int i = 0, size = constructors.length; i < size; i++) {
  +                        Constructor constructor = constructors[i];
  +                        Class[] types = constructor.getParameterTypes();
  +                        if (types.length == 2 && types[1].isAssignableFrom(int.class)) {
  +                            if (types[0].isAssignableFrom(parent.getClass())) {
  +                                Object[] arguments = { parent, new Integer(style)};
  +                                return constructor.newInstance(arguments);
  +                            }
  +                        }
  +                    }
  +                }
  +            }
  +            return theClass.newInstance();
  +        } catch (NoSuchMethodException e) {
  +            throw new JellyTagException(e);
  +        } catch (InstantiationException e) {
  +            throw new JellyTagException(e);
  +        } catch (IllegalAccessException e) {
  +            throw new JellyTagException(e);
  +        } catch (InvocationTargetException e) {
  +            throw new JellyTagException(e);
  +        }
  +    }
  +
  +    /**
  +     * Creates the SWT style code for the current attributes
  +     * @return the SWT style code
  +     */
  +    protected int getStyle(Map attributes) throws JellyTagException {
  +        String text = (String) attributes.remove("style");
  +        if (text != null) {
  +            return SwtHelper.parseStyle(SWT.class, text);
  +        }
  +        return style;
  +    }
   }
  
  
  
  1.2       +1 -1      jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/wizard/WizardDialogTag.java
  
  Index: WizardDialogTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/wizard/WizardDialogTag.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- WizardDialogTag.java	26 Feb 2003 11:00:41 -0000	1.1
  +++ WizardDialogTag.java	26 Feb 2003 12:53:36 -0000	1.2
  @@ -62,7 +62,7 @@
   import org.apache.commons.jelly.Script;
   import org.apache.commons.jelly.XMLOutput;
   import org.apache.commons.jelly.tags.core.UseBeanTag;
  -import org.apache.commons.jelly.tags.jface.ApplicationWindowTag;
  +import org.apache.commons.jelly.tags.jface.window.ApplicationWindowTag;
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
   import org.eclipse.jface.wizard.IWizard;
  
  
  
  1.4       +38 -4     jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceTagLibrary.java
  
  Index: JFaceTagLibrary.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceTagLibrary.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- JFaceTagLibrary.java	26 Feb 2003 11:00:42 -0000	1.3
  +++ JFaceTagLibrary.java	26 Feb 2003 12:53:36 -0000	1.4
  @@ -67,6 +67,7 @@
   import org.apache.commons.jelly.tags.jface.preference.FieldEditorTag;
   import org.apache.commons.jelly.tags.jface.preference.PreferenceDialogTag;
   import org.apache.commons.jelly.tags.jface.preference.PreferencePageTag;
  +import org.apache.commons.jelly.tags.jface.window.ApplicationWindowTag;
   import org.apache.commons.jelly.tags.jface.wizard.WizardDialogTag;
   import org.apache.commons.jelly.tags.jface.wizard.WizardPageTag;
   import org.apache.commons.jelly.tags.swt.SwtTagLibrary;
  @@ -242,7 +243,6 @@
           });
       }
   
  -
       /**
        * @param name
        * @param theClass
  @@ -257,7 +257,7 @@
               }
           });
       }
  -    
  +
       /**
        * @param name
        * @param theClass
  @@ -272,7 +272,7 @@
               }
           });
       }
  -    
  +
       protected void registerWizardPageTag(String name, final Class theClass) {
           registerTagFactory(name, new TagFactory() {
               /**
  @@ -283,6 +283,40 @@
               }
           });
       }
  -    
  +
  +    /**
  +     * Register a widget tag for the given name
  +     */
  +    protected void registerWidgetTag(String name, Class widgetClass) {
  +        registerWidgetTag(name, widgetClass, SWT.NULL);
  +    }
  +
  +    /**
  +     * Register a widget tag for the given name
  +     */
  +    protected void registerWidgetTag(String name, final Class widgetClass, final int style) {
  +        registerTagFactory(name, new TagFactory() {
  +            /**
  +             * @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
  +             */
  +            public Tag createTag(String name, Attributes attributes) throws JellyException {
  +                return new JFaceWidgetTag(widgetClass, style);
  +            }
  +        });
  +    }
  +
  +    /**
  +     * Register a layout tag for the given name
  +     */
  +    protected void registerLayoutTag(String name, final Class layoutClass) {
  +        registerTagFactory(name, new TagFactory() {
  +            /**
  +             * @see org.apache.commons.jelly.impl.TagFactory#createTag(java.lang.String, org.xml.sax.Attributes)
  +             */
  +            public Tag createTag(String name, Attributes attributes) throws JellyException {
  +                return new JFaceLayoutTag(layoutClass);
  +            }
  +        });
  +    }
   
   }
  
  
  
  1.2       +4 -4      jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/ViewerTag.java
  
  Index: ViewerTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/ViewerTag.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ViewerTag.java	26 Feb 2003 09:23:25 -0000	1.1
  +++ ViewerTag.java	26 Feb 2003 12:53:36 -0000	1.2
  @@ -84,16 +84,16 @@
       /**
        * @param widgetClass
        */
  -    public ViewerTag(Class widgetClass) {
  -        super(widgetClass);
  +    public ViewerTag(Class tagClass) {
  +        super(tagClass);
       }
   
       /**
        * @param widgetClass
        * @param style
        */
  -    public ViewerTag(Class widgetClass, int style) {
  -        super(widgetClass);
  +    public ViewerTag(Class tagClass, int style) {
  +        super(tagClass);
           this.style = style;
       }
   
  
  
  
  1.2       +1 -0      jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/MenuManagerTag.java
  
  Index: MenuManagerTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/MenuManagerTag.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MenuManagerTag.java	26 Feb 2003 09:23:25 -0000	1.1
  +++ MenuManagerTag.java	26 Feb 2003 12:53:36 -0000	1.2
  @@ -67,6 +67,7 @@
   import org.apache.commons.jelly.MissingAttributeException;
   import org.apache.commons.jelly.XMLOutput;
   import org.apache.commons.jelly.tags.core.UseBeanTag;
  +import org.apache.commons.jelly.tags.jface.window.ApplicationWindowTag;
   import org.eclipse.jface.action.MenuManager;
   import org.eclipse.jface.window.ApplicationWindow;
   import org.eclipse.jface.window.Window;
  
  
  
  1.1                  jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceWidgetTag.java
  
  Index: JFaceWidgetTag.java
  ===================================================================
  /*
   * /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
   * 1.1
   * 2002/12/18 15:27:49
   *
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2002 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Commons", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   * 
   * SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
   */
  package org.apache.commons.jelly.tags.jface;
  
  import org.apache.commons.jelly.JellyTagException;
  import org.apache.commons.jelly.Tag;
  import org.apache.commons.jelly.tags.jface.window.ApplicationWindowImpl;
  import org.apache.commons.jelly.tags.jface.window.ApplicationWindowTag;
  import org.apache.commons.jelly.tags.jface.wizard.WizardPageTag;
  import org.apache.commons.jelly.tags.swt.WidgetTag;
  import org.eclipse.jface.window.Window;
  import org.eclipse.swt.widgets.Composite;
  import org.eclipse.swt.widgets.Widget;
  
  /**
   * Implementation of SWT WidgetTag  
   * 
   * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a> 
   */
  public class JFaceWidgetTag extends WidgetTag implements Tag {
  
      /**
       * @param widgetClass
       */
      public JFaceWidgetTag(Class widgetClass) {
          super(widgetClass);
      }
  
      /**
       * @param widgetClass
       * @param style
       */
      public JFaceWidgetTag(Class widgetClass, int style) {
          super(widgetClass, style);
      }
  
      /* 
       * @see org.apache.commons.jelly.tags.swt.WidgetTag#attachWidgets(java.lang.Object, org.eclipse.swt.widgets.Widget)
       */
      protected void attachWidgets(Object parent, Widget widget) throws JellyTagException {
          super.attachWidgets(parent, widget);
  
          // set Parent composite of wizard page
          if (getParent() instanceof WizardPageTag) {
              WizardPageTag tag = (WizardPageTag) getParent();
              if (tag.getWizardPageImpl().getParentControl() == null) {
                  if (widget instanceof Composite) {
                      tag.getWizardPageImpl().setParentComposite((Composite) widget);
                  } else {
                      throw new JellyTagException("First child of a <wizardPage> must be of type Composite");
                  }
              }
          }
      }
  
      /* 
       * @see org.apache.commons.jelly.tags.swt.WidgetTag#getParentWidget()
       */
      public Widget getParentWidget() {
          parent = super.getParentWidget();
  
          if (parent == null && getParent() instanceof WizardPageTag) {
              WizardPageTag tag = (WizardPageTag) getParent();
              if (tag != null) {
                  WizardPageTag.WizardPageImpl page = tag.getWizardPageImpl();
                  return page.getControl();
              }
          }
  
          if (parent == null) {
              ApplicationWindowTag tag =
                  (ApplicationWindowTag) findAncestorWithClass(ApplicationWindowTag.class);
              if (tag != null) {
                  Window window = tag.getWindow();
                  if (window != null && window instanceof ApplicationWindowImpl) {
                      return ((ApplicationWindowImpl) window).getContents();
                  }
              }
          }
  
          return parent;
      }
  
  }
  
  
  
  1.1                  jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceImageTag.java
  
  Index: JFaceImageTag.java
  ===================================================================
  /*
   * /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
   * 1.1
   * 2002/12/18 15:27:49
   *
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2002 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Commons", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   * 
   * SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
   */
  package org.apache.commons.jelly.tags.jface;
  
  import org.apache.commons.jelly.JellyTagException;
  import org.apache.commons.jelly.XMLOutput;
  import org.apache.commons.jelly.tags.jface.window.ApplicationWindowImpl;
  import org.apache.commons.jelly.tags.jface.window.ApplicationWindowTag;
  import org.apache.commons.jelly.tags.swt.ImageTag;
  import org.eclipse.jface.window.Window;
  import org.eclipse.swt.graphics.Image;
  import org.eclipse.swt.widgets.Widget;
  
  /**
   * Implementation of SWT ImageTag
   * 
   * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a> 
   */
  public class JFaceImageTag extends ImageTag {
  
      /**
       * @return the parent window 
       */
      public Window getParentWindow() {
          ApplicationWindowTag tag =
              (ApplicationWindowTag) findAncestorWithClass(ApplicationWindowTag.class);
          if (tag != null) {
              return tag.getWindow();
          }
          return null;
      }
  
      /**
       * Set default image Window
       * @param window
       * @param image
       */
      private void setWindowImage(Window window, Image image) {
          Window.setDefaultImage(image);
      }
  
      /* 
       * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
       */
      public void doTag(XMLOutput output) throws JellyTagException {
  
          // invoke by body just in case some nested tag configures me
          invokeBody(output);
  
          Widget parent = getParentWidget();
          Window window = null;
          if (parent == null) {
              window = getParentWindow();
              if (window != null && window instanceof ApplicationWindowImpl) {
                  parent = ((ApplicationWindowImpl) window).getContents();
              }
          }
  
          if (parent == null && window == null) {
              throw new JellyTagException("This tag must be nested within a Widget or a Window");
          }
  
          Image image = new Image(parent.getDisplay(), getSrc());
          if (window != null) {
              setWindowImage(window, image);
          } else {
              setWidgetImage(parent, image);
          }
  
      }
  
  }
  
  
  
  1.1                  jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceLayoutTag.java
  
  Index: JFaceLayoutTag.java
  ===================================================================
  /*
   * /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
   * 1.1
   * 2002/12/18 15:27:49
   *
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2002 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Commons", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   * 
   * SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
   */
  package org.apache.commons.jelly.tags.jface;
  
  import org.apache.commons.jelly.JellyTagException;
  import org.apache.commons.jelly.tags.jface.window.ApplicationWindowImpl;
  import org.apache.commons.jelly.tags.jface.window.ApplicationWindowTag;
  import org.apache.commons.jelly.tags.swt.LayoutTag;
  import org.eclipse.jface.window.Window;
  import org.eclipse.swt.widgets.Composite;
  import org.eclipse.swt.widgets.Widget;
  
  /**
   * Implementation of SWT LayoutTag
   * 
   * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a> 
   */
  public class JFaceLayoutTag extends LayoutTag {
  
      /**
       * @param layoutClass
       */
      public JFaceLayoutTag(Class layoutClass) {
          super(layoutClass);
          // TODO Auto-generated constructor stub
      }
  
      /* (non-Javadoc)
       * @see org.apache.commons.jelly.tags.core.UseBeanTag#processBean(java.lang.String, java.lang.Object)
       */
      protected void processBean(String var, Object bean) throws JellyTagException {
  
          Widget parent = getParentWidget();
          if (parent == null) { // perhaps parent is a Window
              Window window = getParentWindow();
              if (window != null && window instanceof ApplicationWindowImpl) {
                  parent = ((ApplicationWindowImpl) window).getContents();
              }
          }
  
          if (parent instanceof Composite) {
              Composite composite = (Composite) parent;
              composite.setLayout(getLayout());
  
          } else {
              throw new JellyTagException("This tag must be nested within a composite widget tag");
          }
  
      }
      
      /**
       * @return the parent window 
       */
      public Window getParentWindow() {
          ApplicationWindowTag tag =
              (ApplicationWindowTag) findAncestorWithClass(ApplicationWindowTag.class);
          if (tag != null) {
              return tag.getWindow();
          }
          return null;
      }
  }
  
  
  
  
  
  1.1                  jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/JFaceLayoutDataTag.java
  
  Index: JFaceLayoutDataTag.java
  ===================================================================
  /*
   * Created on Feb 26, 2003
   *
   * To change this generated comment go to 
   * Window>Preferences>Java>Code Generation>Code Template
   */
  package org.apache.commons.jelly.tags.jface;
  
  import org.apache.commons.jelly.JellyTagException;
  import org.apache.commons.jelly.tags.jface.window.ApplicationWindowImpl;
  import org.apache.commons.jelly.tags.jface.window.ApplicationWindowTag;
  import org.apache.commons.jelly.tags.swt.LayoutDataTag;
  import org.eclipse.jface.window.Window;
  import org.eclipse.swt.widgets.Control;
  import org.eclipse.swt.widgets.Widget;
  
  /**
   * Implementation of SWT LayoutDataTag
   *  
   * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a> 
   */
  public class JFaceLayoutDataTag extends LayoutDataTag {
  
      /**
       * @param layoutDataClass
       */
      public JFaceLayoutDataTag(Class layoutDataClass) {
          super(layoutDataClass);
      }
  
      /* (non-Javadoc)
       * @see org.apache.commons.jelly.tags.core.UseBeanTag#processBean(java.lang.String, java.lang.Object)
       */
      protected void processBean(String var, Object bean) throws JellyTagException {
          Widget parent = getParentWidget();
          Window window = null;
          if (parent == null) {
              window = getParentWindow();
              if (window != null && window instanceof ApplicationWindowImpl) {
                  parent = ((ApplicationWindowImpl) window).getContents();
              }
          }
  
          if (parent instanceof Control) {
              Control control = (Control) parent;
              control.setLayoutData(getBean());
          } else {
              throw new JellyTagException("This tag must be nested within a control widget tag");
          }
      }
  
      /**
       * @return the parent window 
       */
      public Window getParentWindow() {
          ApplicationWindowTag tag =
              (ApplicationWindowTag) findAncestorWithClass(ApplicationWindowTag.class);
          if (tag != null) {
              return tag.getWindow();
          }
          return null;
      }
  
  }
  
  
  
  1.1                  jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/window/ApplicationWindowTag.java
  
  Index: ApplicationWindowTag.java
  ===================================================================
  /*
   * /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
   * 1.1
   * 2002/12/18 15:27:49
   *
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2002 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Commons", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   * 
   * SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
   */
  package org.apache.commons.jelly.tags.jface.window;
  
  import java.util.Map;
  
  import org.apache.commons.jelly.JellyTagException;
  import org.apache.commons.jelly.MissingAttributeException;
  import org.apache.commons.jelly.XMLOutput;
  import org.apache.commons.jelly.tags.core.UseBeanTag;
  import org.eclipse.jface.window.Window;
  import org.eclipse.swt.SWT;
  import org.eclipse.swt.widgets.Shell;
  
  /**
   * This tag creates an JFace ApplicationWindow
   *  
   * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a>
   */
  public class ApplicationWindowTag extends UseBeanTag {
  
      private Shell parent;
      private int style = SWT.NULL;
      
      /**
       * @param widgetClass
       */
      public ApplicationWindowTag(Class tagClass) {
          super(tagClass);
      }
  
      /* 
       * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
       */
      public void doTag(XMLOutput output)
          throws MissingAttributeException, JellyTagException {
          Map attributes = getAttributes();
          Object parent = attributes.remove("parent");
          if (parent != null) {
              if (parent instanceof Shell) {
                  this.parent = (Shell) parent;
              } else {
                  throw new JellyTagException(
                      "The parent attribute is not a Shell, it is of type: "
                          + parent.getClass().getName()
                          + " value: "
                          + parent);
              }
          }
          super.doTag(output);
      }
  
      /* 
       * @see org.apache.commons.jelly.tags.core.UseBeanTag#newInstance(java.lang.Class, java.util.Map, org.apache.commons.jelly.XMLOutput)
       */
      protected Object newInstance(
          Class theClass,
          Map attributes,
          XMLOutput output)
          throws JellyTagException {
  
          return new ApplicationWindowImpl(parent);
      }
  
  
      /**
       * @return the visible window, if there is one.
       */
      public Window getWindow() {
          Object bean = getBean();
          if (bean instanceof Window) {
              return (Window) bean;
          }
          return null;
      }
      
  }
  
  
  
  1.1                  jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/window/ApplicationWindowImpl.java
  
  Index: ApplicationWindowImpl.java
  ===================================================================
  /*
   * /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/tags/swt/SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
   * 1.1
   * 2002/12/18 15:27:49
   *
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2002 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Commons", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   * 
   * SwtTagLibrary.java,v 1.1 2002/12/18 15:27:49 jstrachan Exp
   */
  package org.apache.commons.jelly.tags.jface.window;
  
  import org.eclipse.jface.window.ApplicationWindow;
  import org.eclipse.swt.SWT;
  import org.eclipse.swt.widgets.Control;
  import org.eclipse.swt.widgets.Shell;
  
  /**
   * This is the default implementation for a ApplicationWindowTag
   * 
   * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a> 
   */
  public class ApplicationWindowImpl extends ApplicationWindow {
  
      /**
       * @param shell
       */
      public ApplicationWindowImpl(Shell parentShell) {
  
          super(parentShell);
  
          // default at all
          addMenuBar();
          addStatusLine();
          addToolBar(SWT.NULL);
  
          setBlockOnOpen(true);
  
          // create window 
          create();
      }
  
      /* 
       * override to make public
       * @see org.eclipse.jface.window.Window#getContents()
       */
      public Control getContents() {
          return super.getContents();
      }
  
  }
  
  
  
  1.2       +1 -1      jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/preference/PreferenceDialogTag.java
  
  Index: PreferenceDialogTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jelly/jelly-tags/jface/src/java/org/apache/commons/jelly/tags/jface/preference/PreferenceDialogTag.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PreferenceDialogTag.java	26 Feb 2003 10:26:09 -0000	1.1
  +++ PreferenceDialogTag.java	26 Feb 2003 12:53:37 -0000	1.2
  @@ -61,7 +61,7 @@
   import org.apache.commons.jelly.JellyTagException;
   import org.apache.commons.jelly.XMLOutput;
   import org.apache.commons.jelly.tags.core.UseBeanTag;
  -import org.apache.commons.jelly.tags.jface.ApplicationWindowTag;
  +import org.apache.commons.jelly.tags.jface.window.ApplicationWindowTag;
   import org.eclipse.jface.preference.PreferenceDialog;
   import org.eclipse.jface.preference.PreferenceManager;
   import org.eclipse.swt.widgets.Shell;
  
  
  
  1.2       +16 -15    jakarta-commons/jelly/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/JFaceDemo.jelly
  
  Index: JFaceDemo.jelly
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jelly/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/JFaceDemo.jelly,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JFaceDemo.jelly	26 Feb 2003 09:23:26 -0000	1.1
  +++ JFaceDemo.jelly	26 Feb 2003 12:53:37 -0000	1.2
  @@ -1,32 +1,33 @@
   <?xml version="1.0"?>
  -<j:jelly xmlns:j="jelly:core" xmlns="jelly:swt" xmlns:log="jelly:log">
  +<j:jelly xmlns:j="jelly:core" xmlns="jelly:jface" xmlns:log="jelly:log">
   
     <applicationWindow var="mainapp">
   
  -	<menuManager text="File">
  +		<menuManager text="File">
   			<action text="Test">
  -					<log:error> Very Nice !!!</log:error>
  +				<log:info> Very Nice !!!</log:info>
   			</action>
   			<separator />
  -			<action text="Check me" checked="true" />
  -	</menuManager>
  +			
  +			<action text="Check me" checked="true">
  +				<log:info>I've been checked</log:info>
  +			</action>
  +		</menuManager>
   		
  -	<menuManager text="Edit">
  +		<menuManager text="Edit">
   			<action text="Say Hi Statusbar">
   				  ${mainapp.setStatus('Hello ...')} 
   			</action>
  -	</menuManager>
  +		</menuManager>
   	
  -<!--	
  -	<fillLayout type="vertical"/>	
  --->
  -
  -	<label text="A big red label 1" background="204, 0, 0"/>
  -	<label text="I can barelly read this ;-(" foreground="#f2f2f2" />
  -	<label text="It sure looks like the dutch flag ;-)" foreground="#ffffff" background="0, 0, 153" />		
  +		<fillLayout type="vertical"/>	
  +	
  +		<label text="A big red label 1" background="204, 0, 0"/>
  +		<label text="I can barelly read this ;-(" foreground="#f2f2f2" />
  +		<label text="It sure looks like the dutch flag ;-)" foreground="#ffffff" background="0, 0, 153" />		
   	
     </applicationWindow>
  -
  +  
     ${mainapp.MenuBarManager.updateAll(true)} 
     ${mainapp.open()}
   
  
  
  
  1.1                  jakarta-commons/jelly/jelly-tags/jface/src/test/org/apache/commons/jelly/tags/jface/JFaceDemo.java
  
  Index: JFaceDemo.java
  ===================================================================
  /*
  * ====================================================================
  *
  * The Apache Software License, Version 1.1
  *
  * Copyright (c) 2002 The Apache Software Foundation.  All rights
  * reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
  *
  * 1. Redistributions of source code must retain the above copyright
  *    notice, this list of conditions and the following disclaimer.
  *
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in
  *    the documentation and/or other materials provided with the
  *    distribution.
  *
  * 3. The end-user documentation included with the redistribution, if
  *    any, must include the following acknowlegement:
  *       "This product includes software developed by the
  *        Apache Software Foundation (http://www.apache.org/)."
  *    Alternately, this acknowlegement may appear in the software itself,
  *    if and wherever such third-party acknowlegements normally appear.
  *
  * 4. The names "The Jakarta Project", "Commons", and "Apache Software
  *    Foundation" must not be used to endorse or promote products derived
  *    from this software without prior written permission. For written
  *    permission, please contact apache@apache.org.
  *
  * 5. Products derived from this software may not be called "Apache"
  *    nor may "Apache" appear in their names without prior written
  *    permission of the Apache Group.
  *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  * ====================================================================
  *
  * This software consists of voluntary contributions made by many
  * individuals on behalf of the Apache Software Foundation.  For more
  * information on the Apache Software Foundation, please see
  * <http://www.apache.org/>.
  * 
  */
  package org.apache.commons.jelly.tags.jface;
  
  import java.net.URL;
  
  import org.apache.commons.jelly.JellyContext;
  import org.apache.commons.jelly.XMLOutput;
  import org.apache.commons.jelly.tags.jface.JFaceTagLibrary;
  
  /**
   * @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster</a> 
   */
  public class JFaceDemo {
  
      public static void main(String[] args) {
          try {
            
              JellyContext context = new JellyContext();
              
              /** @todo zap the following line once the Jelly core has this default */
              context.registerTagLibrary("jelly:jface", new JFaceTagLibrary());
              
              URL url = JFaceDemo.class.getResource("JFaceDemo.jelly");
              
              XMLOutput output = XMLOutput.createXMLOutput(System.out, true);
              context.runScript( url, output );
              output.flush();
  
          } 
          catch (Exception e) {
              e.printStackTrace();
          }
  
      }
  
  }
  
  
  
  1.5       +1 -2      jakarta-commons/jelly/jelly-tags/jface/maven.xml
  
  Index: maven.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jelly/jelly-tags/jface/maven.xml,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- maven.xml	26 Feb 2003 11:00:41 -0000	1.4
  +++ maven.xml	26 Feb 2003 12:53:37 -0000	1.5
  @@ -13,9 +13,8 @@
   	<!-- demos -->
     <goal name="demo" prereqs="create-classpath"
   		description="Runs a JellyJFace demo">
  -    <java classname="org.apache.commons.jelly.Jelly" fork="yes">
  +    <java classname="org.apache.commons.jelly.tags.jface.JFaceDemo" fork="yes">
         <classpath refid="test.classpath"/>
  -      <arg value="src/test/org/apache/commons/jelly/tags/jface/JFaceDemo.jelly"/>
       </java>
     </goal>
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message