Make all classes in be.nikiroo.fanfix.data Serializable
[fanfix.git] / src / be / nikiroo / fanfix / data / Paragraph.java
index a731c328ce0a2ef4a0bc373689fe275c2abfb663..9adc51c420e815492858adbcffbd1b606dab7eda 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 {
+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 {
                /** 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 {
         * @param contentImage
         *            the image
         */
-       public Paragraph(BufferedImage contentImage) {
+       public Paragraph(Image contentImage) {
                this(ParagraphType.IMAGE, null, 1);
                this.contentImage = contentImage;
        }
@@ -109,7 +125,7 @@ public class Paragraph {
         * 
         * @return the content
         */
-       public BufferedImage getContentImage() {
+       public Image getContentImage() {
                return contentImage;
        }
 
@@ -137,6 +153,20 @@ public class Paragraph {
         */
        @Override
        public String toString() {
-               return String.format("%s: [%s]", "" + type, "" + content);
+               return String.format("%s: [%s]", "" + type, content == null ? "N/A"
+                               : content);
+       }
+
+       @Override
+       public Paragraph clone() {
+               Paragraph para = null;
+               try {
+                       para = (Paragraph) super.clone();
+               } catch (CloneNotSupportedException e) {
+                       // Did the clones rebel?
+                       System.err.println(e);
+               }
+
+               return para;
        }
 }