commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From p...@apache.org
Subject cvs commit: jakarta-commons/jelly/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing ComponentTag.java
Date Wed, 26 Jan 2005 22:46:28 GMT
polx        2005/01/26 14:46:28

  Modified:    jelly/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing
                        ComponentTag.java
  Log:
  First stab at rerunnable tags.
  Using <panel tagName="myTag">DO SOMETHING${x}</panel>
  One can invoke, later, e.g. in an action-tag, ${myTag.rerun()} which should
  repopulate the panel by removing first then re-running the body
  ot this tag.
  paul
  
  Revision  Changes    Path
  1.24      +49 -1     jakarta-commons/jelly/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/ComponentTag.java
  
  Index: ComponentTag.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jelly/jelly-tags/swing/src/java/org/apache/commons/jelly/tags/swing/ComponentTag.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- ComponentTag.java	12 Jan 2005 08:59:16 -0000	1.23
  +++ ComponentTag.java	26 Jan 2005 22:46:28 -0000	1.24
  @@ -168,6 +168,40 @@
               }
           }
       }
  +	
  +    
  +	private String tagName = null;
  +	
  +	private XMLOutput currentOutput = null;
  +	
  +	/** Puts this tag into the context under the given name
  +	 * allowing later calls to {@link #rerun()}.
  +	 * For example, it makes sense to use ${myTag.rerun()} as a child
  +	 * of an <code>action</code> element.
  +	 *
  +	 * @param the name to be used
  +	 */
  +	public void setTagName(String name) {
  +		this.tagName = name;
  +	}
  +	
  +	/** Runs the body of this script again after clearing the content
  +	 * of this component.
  +	 * This is useful to use jelly-logic and "re-populate" a part of the user-interface
  +	 * after having updated a model part (e.g. an XML-document).
  +	 * @throws JellyTagException if anything
  +	 */
  +	public void rerun() throws JellyTagException {
  +		Component comp = getComponent();
  +		if(comp instanceof java.awt.Container) {
  +			((java.awt.Container) comp).removeAll();
  +		}
  +		this.doTag(currentOutput,false);
  +		if ( comp instanceof javax.swing.JComponent ) {
  +			((javax.swing.JComponent) comp).revalidate();
  +		}
  +	}
  +	
   
       /**
        * Adds a WindowListener to this component
  @@ -290,6 +324,14 @@
        * A class may be specified otherwise the Factory will be used.
        */
       protected Object newInstance(Class theClass, Map attributes, XMLOutput output) throws
JellyTagException {
  +		if (attributes.containsKey("tagName")) {
  +			this.setTagName((String)attributes.get("tagName"));
  +			addIgnoreProperty("tagName");
  +		}
  +		if(tagName!=null) {
  +			context.setVariable(tagName,this);
  +			currentOutput = output;
  +		}
           try {
               if (theClass != null ) {
                   return theClass.newInstance();
  @@ -363,6 +405,7 @@
                       component.setSize(d);
                       addIgnoreProperty("size");
                   }
  +				
                   
                   if (attributes.containsKey("debugGraphicsOptions")) {
                       try {
  @@ -398,8 +441,13 @@
        * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
        */
       public void doTag(XMLOutput output) throws JellyTagException {
  +        this.doTag(output,true);
  +    }
  +    
  +    public void doTag(XMLOutput output, boolean resetBean) throws JellyTagException {
  +        if(resetBean) clearBean();
           super.doTag(output);
  -        clearBean();
  +        //clearBean();
       }
   
       /** Sets the bean to null, to prevent it from
  
  
  

---------------------------------------------------------------------
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