Make data objects clonable (will not copy images)
[nikiroo-utils.git] / src / be / nikiroo / fanfix / data / Paragraph.java
index 8a9130bf83fdcc8342a796f125a64a1aa994ea4c..7a1a1c448322212cbd09cebdc7180b0f8912b6c4 100644 (file)
@@ -1,13 +1,13 @@
 package be.nikiroo.fanfix.data;
 
-import java.net.URL;
+import java.awt.image.BufferedImage;
 
 /**
  * A paragraph in a chapter of the story.
  * 
  * @author niki
  */
-public class Paragraph {
+public class Paragraph implements Cloneable {
        /**
         * A paragraph type, that will dictate how the paragraph will be handled.
         * 
@@ -28,11 +28,13 @@ public class Paragraph {
 
        private ParagraphType type;
        private String content;
+       private BufferedImage contentImage;
        private long words;
 
        /**
         * Empty constructor, not to use.
         */
+       @SuppressWarnings("unused")
        private Paragraph() {
                // for serialisation purposes
        }
@@ -40,11 +42,12 @@ public class Paragraph {
        /**
         * Create a new {@link Paragraph} with the given image.
         * 
-        * @param imageUrl
-        *            the image as an URL
+        * @param contentImage
+        *            the image
         */
-       public Paragraph(URL imageUrl) {
-               this(ParagraphType.IMAGE, imageUrl.toString(), 0);
+       public Paragraph(BufferedImage contentImage) {
+               this(ParagraphType.IMAGE, null, 1);
+               this.contentImage = contentImage;
        }
 
        /**
@@ -55,7 +58,7 @@ public class Paragraph {
         * @param content
         *            the content of this paragraph
         * @param words
-        *            the number of words
+        *            the number of words (or images)
         */
        public Paragraph(ParagraphType type, String content, long words) {
                this.type = type;
@@ -83,7 +86,7 @@ public class Paragraph {
        }
 
        /**
-        * The content of this {@link Paragraph}.
+        * The content of this {@link Paragraph} if it is not an image.
         * 
         * @return the content
         */
@@ -102,7 +105,16 @@ public class Paragraph {
        }
 
        /**
-        * The number of words in this {@link Paragraph}.
+        * The content of this {@link Paragraph} if it is an image.
+        * 
+        * @return the content
+        */
+       public BufferedImage getContentImage() {
+               return contentImage;
+       }
+
+       /**
+        * The number of words (or images) in this {@link Paragraph}.
         * 
         * @return the number of words
         */
@@ -111,7 +123,7 @@ public class Paragraph {
        }
 
        /**
-        * The number of words in this {@link Paragraph}.
+        * The number of words (or images) in this {@link Paragraph}.
         * 
         * @param words
         *            the number of words to set
@@ -127,4 +139,17 @@ public class Paragraph {
        public String toString() {
                return String.format("%s: [%s]", "" + type, "" + 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;
+       }
 }