dion        2004/09/05 08:25:02

  Added:       jelly/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt
                        ColorTag.java FontTag.java
  Log:
  Add new tags
  
  Revision  Changes    Path
  1.1                  
jakarta-commons/jelly/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/ColorTag.java
  
  Index: ColorTag.java
  ===================================================================
  /*
   * Copyright 2002,2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.commons.jelly.tags.swt;
  
  import org.apache.commons.jelly.JellyTagException;
  import org.apache.commons.jelly.TagSupport;
  import org.apache.commons.jelly.XMLOutput;
  import org.apache.commons.jelly.tags.swt.converters.ColorConverter;
  import org.eclipse.swt.graphics.Color;
  import org.eclipse.swt.widgets.Widget;
  
  /**
   * Class to create a [EMAIL PROTECTED] Color} instance within Jelly SWT.
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Marcus Crafter</a>
   * @author Written with much help thanks to the ImageTag class
   * @version CVS $Id: ColorTag.java,v 1.1 2004/09/05 15:25:02 dion Exp $
   */
  public class ColorTag extends TagSupport {
  
      /** RGB value */
      private String rgb;
  
      /** Variable name */
      private String var;
  
      /**
       * Sets the RGB value for this [EMAIL PROTECTED] Color} instance
       *
       * @param rgb value (eg. #666666);
       */
      public void setRgb(final String rgb) {
          this.rgb = rgb;
      }
  
      /**
       * Obtain the RGB value for this [EMAIL PROTECTED] Color} instance
       *
       * @return the RGB value (eg. #666666)
       */
      public String getRgb() {
          return this.rgb;
      }
  
      /**
       * Sets the variable name
       *
       * @param var the variable name of this [EMAIL PROTECTED] Color} instance
       */
      public void setVar(final String var) {
          this.var = var;
      }
  
      /**
       * Obtain the variable name.
       *
       * @return the variable name of this [EMAIL PROTECTED] Color} instance
       */
      public String getVar() {
          return this.var;
      }
  
      /**
       * @return the parent widget which this widget will be added to.
       */
      public Widget getParentWidget() {
          final WidgetTag tag = (WidgetTag) findAncestorWithClass(WidgetTag.class);
          if (tag != null) {
              return tag.getWidget();
          }
          return null;
      }
  
      // Tag interface
      //-------------------------------------------------------------------------
  
      /**
       * Creates a [EMAIL PROTECTED] Color} instance as defined by the RGB attribute.
       * Stores this [EMAIL PROTECTED] Color} instance in the Context so that it can be
       * referenced in the Jelly script.
       *
       * @param output [EMAIL PROTECTED] XMLOutput} reference
       * @throws JellyTagException if an error occurs
       * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
       */
      public void doTag(final XMLOutput output) throws JellyTagException {
          // invoke by body just in case some nested tag configures me
          invokeBody(output);
  
          final Widget parent = getParentWidget();
  
          if (parent == null) {
              throw new JellyTagException(
                  "This tag must be nested within a Widget or a Window"
              );
          }
  
          if (var == null) {
              throw new JellyTagException("This tag requires a context variable name");
          }
  
          final Color color = 
              new Color(
                  parent.getDisplay(), 
                  ColorConverter.getInstance().parse(getRgb())
              );
          
          // store the Color in the context
          context.setVariable(var, color);
      }
  }
  
  
  
  1.1                  
jakarta-commons/jelly/jelly-tags/swt/src/java/org/apache/commons/jelly/tags/swt/FontTag.java
  
  Index: FontTag.java
  ===================================================================
  /*
   * Copyright 2002,2004 The Apache Software Foundation.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  package org.apache.commons.jelly.tags.swt;
  
  import org.apache.commons.jelly.JellyTagException;
  import org.apache.commons.jelly.TagSupport;
  import org.apache.commons.jelly.XMLOutput;
  import org.apache.commons.jelly.tags.swt.converters.ColorConverter;
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
  import org.eclipse.swt.SWT;
  import org.eclipse.swt.graphics.Font;
  import org.eclipse.swt.widgets.Widget;
  
  /**
   * Class to create a [EMAIL PROTECTED] Font} instance within Jelly SWT.
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Marcus Crafter</a>
   * @author Written with much help thanks to the ImageTag class
   * @version CVS $Id: FontTag.java,v 1.1 2004/09/05 15:25:02 dion Exp $
   */
  public class FontTag extends TagSupport {
  
      /** The Log to which logging calls will be made. */
      private static final Log log = LogFactory.getLog(FontTag.class);
  
      /** Font type */
      private String type;
  
      /** Font size */
      private int size;
  
      /** Font style */
      private String style;
  
      /** Font variable name */
      private String var;
  
      /**
       * Set the type of this [EMAIL PROTECTED] Font}
       *
       * @param type [EMAIL PROTECTED] Font} type name
       */
      public void setType(final String type) {
          this.type = type;
      }
  
      /**
       * Obtain the [EMAIL PROTECTED] Font} type name
       *
       * @return the [EMAIL PROTECTED] Font} type name
       */
      public String getType() {
          return this.type;
      }
  
      /**
       * Set the size of this [EMAIL PROTECTED] Font}
       *
       * @param size [EMAIL PROTECTED] Font} size
       */
      public void setSize(final int size) {
          this.size = size;
      }
  
      /**
       * Obtain the [EMAIL PROTECTED] Font} size
       *
       * @return the [EMAIL PROTECTED] Font} size
       */
      public int getSize() {
          return this.size;
      }
  
      /**
       * Set the style of this [EMAIL PROTECTED] Font} (eg. bold, normal, italics)
       *
       * @param style the style of this [EMAIL PROTECTED] Font}
       */
      public void setStyle(final String style) {
          this.style = style;
      }
  
      /**
       * Obtain the style of this [EMAIL PROTECTED] Font}
       *
       * @return the style of this [EMAIL PROTECTED] Font}
       */
      public String getStyle() {
          return this.style;
      }
  
      /**
       * Sets the variable name
       *
       * @param var the variable name of this [EMAIL PROTECTED] Font} instance
       */
      public void setVar(final String var) {
          this.var = var;
      }
  
      /**
       * Obtain the variable name.
       *
       * @return the variable name of this [EMAIL PROTECTED] Font} instance
       */
      public String getVar() {
          return this.var;
      }
  
      /**
       * @return the parent widget which will deliver us a [EMAIL PROTECTED] Device} 
reference
       */
      public Widget getParentWidget() {
          final WidgetTag tag = (WidgetTag) findAncestorWithClass(WidgetTag.class);
          if (tag != null) {
              return tag.getWidget();
          }
          return null;
      }
  
      // Tag interface
      //-------------------------------------------------------------------------
  
      /**
       * Creates a [EMAIL PROTECTED] Font} instance as defined by the type, size and 
style
       * attributes, and stores this [EMAIL PROTECTED] Font} instance in the Context 
so that 
       * it can be referenced in the Jelly script.
       *
       * @param output [EMAIL PROTECTED] XMLOutput} reference
       * @throws JellyTagException if an error occurs
       * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
       */
      public void doTag(final XMLOutput output) throws JellyTagException {
          // invoke by body just in case some nested tag configures me
          invokeBody(output);
  
          final Widget parent = getParentWidget();
  
          if (parent == null) {
              throw new JellyTagException(
                  "This tag must be nested within a Widget or a Window"
              );
          }
  
          if (var == null) {
              throw new JellyTagException("This tag requires a context variable name");
          }
  
          if (type == null) {
              throw new JellyTagException("This tag requires a font type name");
          }
  
          if (size <= 0) {
              throw new JellyTagException("This tag requires a font size greater than 
0");
          }
  
          if (style == null) {
              if (log.isDebugEnabled()) {
                  log.debug("No style set on font " + type + ", defaulting to normal");
              }
          }
  
          final Font font = 
              new Font(
                  parent.getDisplay(), 
                  type,
                  size,
                  style == null ? SWT.NORMAL : SwtHelper.parseStyle(SWT.class, style)
              );
          
          // store the Color in the context
          context.setVariable(var, font);
      }
  }
  
  
  

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

Reply via email to