weblib: use more templats
[nikiroo-utils.git] / src / be / nikiroo / fanfix / data / Paragraph.java
index 7a1a1c448322212cbd09cebdc7180b0f8912b6c4..d5a0f1c618ca6327c5602c1a7a1212c22dbfd6f8 100644 (file)
@@ -1,13 +1,17 @@
 package be.nikiroo.fanfix.data;
 
-import java.awt.image.BufferedImage;
+import java.io.Serializable;
+
+import be.nikiroo.utils.Image;
 
 /**
  * A paragraph in a chapter of the story.
  * 
  * @author niki
  */
-public class Paragraph implements Cloneable {
+public class Paragraph implements Cloneable, Serializable {
+       private static final long serialVersionUID = 1L;
+
        /**
         * A paragraph type, that will dictate how the paragraph will be handled.
         * 
@@ -23,12 +27,24 @@ public class Paragraph implements Cloneable {
                /** Quotation (dialogue) */
                QUOTE,
                /** An image (no text) */
-               IMAGE,
+               IMAGE, ;
+
+               /**
+                * This paragraph type is of a text kind (quote or not).
+                * 
+                * @param allowEmpty
+                *            allow empty text as text, too (blanks, breaks...)
+                * @return TRUE if it is
+                */
+               public boolean isText(boolean allowEmpty) {
+                       return (this == NORMAL || this == QUOTE)
+                                       || (allowEmpty && (this == BLANK || this == BREAK));
+               }
        }
 
        private ParagraphType type;
        private String content;
-       private BufferedImage contentImage;
+       private Image contentImage;
        private long words;
 
        /**
@@ -45,7 +61,7 @@ public class Paragraph implements Cloneable {
         * @param contentImage
         *            the image
         */
-       public Paragraph(BufferedImage contentImage) {
+       public Paragraph(Image contentImage) {
                this(ParagraphType.IMAGE, null, 1);
                this.contentImage = contentImage;
        }
@@ -109,10 +125,20 @@ public class Paragraph implements Cloneable {
         * 
         * @return the content
         */
-       public BufferedImage getContentImage() {
+       public Image getContentImage() {
                return contentImage;
        }
 
+       /**
+        * The content of this {@link Paragraph} if it is an image.
+        * 
+        * @param contentImage
+        *            the content
+        */
+       public void setContentImage(Image contentImage) {
+               this.contentImage = contentImage;
+       }
+       
        /**
         * The number of words (or images) in this {@link Paragraph}.
         * 
@@ -137,7 +163,8 @@ public class Paragraph implements Cloneable {
         */
        @Override
        public String toString() {
-               return String.format("%s: [%s]", "" + type, "" + content);
+               return String.format("%s: [%s]", "" + type, content == null ? "N/A"
+                               : content);
        }
 
        @Override