skin: ImageRegistry refactoring
authorGiWoong Kim <giwoong.kim@samsung.com>
Fri, 23 Aug 2013 10:08:22 +0000 (19:08 +0900)
committerGiWoong Kim <giwoong.kim@samsung.com>
Mon, 26 Aug 2013 02:17:03 +0000 (11:17 +0900)
and added blank-guide image loading

Change-Id: Idcf8880664f4a351c377ed1c6f3c0ef3df14b6dd
Signed-off-by: GiWoong Kim <giwoong.kim@samsung.com>
tizen/src/skin/client/src/org/tizen/emulator/skin/image/ImageRegistry.java

index 53434b3dd0f5787a16900b450c96727659e38c8c..06ec76a3b3bc1bf24adbb69039cb3212f71d692a 100644 (file)
@@ -56,7 +56,7 @@ import org.tizen.emulator.skin.util.SkinRotation;
  *
  */
 public class ImageRegistry {
-       public static final String ICON_FOLDER = "icons";
+       public static final String ICONS_FOLDER = "icons";
        public static final String IMAGES_FOLDER = "images";
        public static final String KEYWINDOW_FOLDER = "key-window";
 
@@ -68,6 +68,21 @@ public class ImageRegistry {
                IMG_TYPE_PRESSED
        }
 
+       public enum ResourceImageName {
+               RESOURCE_ABOUT("about_Tizen_SDK.png"),
+               RESOURCE_BLANK_GUIDE("blank-guide.png");
+
+               private String name;
+
+               private ResourceImageName(String name) {
+                       this.name = name;
+               }
+
+               public String getName() {
+                       return this.name;
+               }
+       }
+
        public enum IconName {
                DETAIL_INFO("detail_info.png"),
                ROTATE("rotate.png"),
@@ -100,7 +115,6 @@ public class ImageRegistry {
                public String getName() {
                        return this.name;
                }
-               
        }
 
        public enum KeyWindowImageName {
@@ -131,8 +145,9 @@ public class ImageRegistry {
        private Display display;
        private EmulatorUI dbiContents;
 
+       private Map<String, Image> resourceImageMap;
+       private Map<String, Image> iconImageMap;
        private Map<String, Image> skinImageMap;
-       private Map<String, Image> iconMap;
        private Map<String, Image> keyWindowImageMap;
 
        private String skinPath;
@@ -162,15 +177,16 @@ public class ImageRegistry {
 
                this.skinPath = skinPath;
                this.dbiContents = config.getDbiContents();
+
+               this.resourceImageMap = new HashMap<String, Image>();
+               this.iconImageMap = new HashMap<String, Image>();
                this.skinImageMap = new HashMap<String, Image>();
-               this.iconMap = new HashMap<String, Image>();
                this.keyWindowImageMap = new HashMap<String, Image>();
 
                init(this.skinPath);
        }
 
        private void init(String argSkinPath) {
-
                RotationsType rotations = dbiContents.getRotations();
 
                if (null == rotations) {
@@ -183,11 +199,13 @@ public class ImageRegistry {
                for (RotationType rotation : rotationList) {
                        SkinRotation.put(rotation);
                }
+       }
 
+       private String makeKey(Short id, ImageType imageType) {
+               return id + ":" + imageType.ordinal();
        }
 
        public ImageData getSkinImageData(Short id, ImageType imageType) {
-
                Image image = skinImageMap.get(makeKey(id, imageType));
 
                if (null != image) {
@@ -231,123 +249,153 @@ public class ImageRegistry {
 
                        if (null != registeredImage) {
                                return registeredImage.getImageData();
-                       } else {
-                               return null;
                        }
-
                }
-       }
 
-       private String makeKey(Short id, ImageType imageType) {
-               return id + ":" + imageType.ordinal();
+               return null;
        }
 
-       public Image getIcon(IconName name) {
+       public Image getResourceImage(ResourceImageName name) {
+               String imageName = name.getName();
+               Image image = resourceImageMap.get(imageName);
 
-               if (0 != iconMap.size()) {
-                       Image image = iconMap.get(name.getName());
+               if (image == null) {
+                       ClassLoader classLoader = this.getClass().getClassLoader();
+                       InputStream is = null;
 
-                       return image;
-               } else {
+                       String resourcePath = IMAGES_FOLDER + "/" + imageName;
 
-                       // load all of the icons at once.
+                       try {
+                               is = classLoader.getResourceAsStream(resourcePath);
+                               if (null != is) {
+                                       logger.info("resource image is loaded");
+                                       resourceImageMap.put(imageName, new Image(display, is));
+                               } else {
+                                       logger.severe("missing image : " + resourcePath);
+                               }
+                       } finally {
+                               IOUtil.close(is);
+                       }
 
-                       ClassLoader classLoader = this.getClass().getClassLoader();
-                       IconName[] values = IconName.values();
+                       image = resourceImageMap.get(imageName);
+                       if (image != null) {
+                               logger.info("resource " + imageName + " size : " +
+                                               image.getImageData().width + "x" +
+                                               image.getImageData().height);
+                       }
+               }
 
-                       for (IconName iconName : values) {
+               return image;
+       }
 
-                               String icoNname = iconName.getName();
+       public Image getIcon(IconName name) {
+               if (iconImageMap.size() == 0) {
+                       /* load all of the icons at once */
+                       ClassLoader classLoader = this.getClass().getClassLoader();
+                       InputStream is = null;
+                       String imageName, imagePath;
 
-                               String iconPath = ICON_FOLDER + "/" + icoNname;
+                       IconName[] values = IconName.values();
+                       for (IconName iconName : values) {
+                               imageName = iconName.getName();
+                               imagePath = ICONS_FOLDER + "/" + imageName;
 
-                               InputStream is = null;
                                try {
-                                       is = classLoader.getResourceAsStream(iconPath);
+                                       is = classLoader.getResourceAsStream(imagePath);
                                        if (null != is) {
-                                               logger.fine("load icon:" + iconPath);
-                                               iconMap.put(icoNname, new Image(display, is));
+                                               logger.fine("icon is loaded : " + imagePath);
+                                               iconImageMap.put(imageName, new Image(display, is));
                                        } else {
-                                               logger.severe("missing icon:" + iconPath);
+                                               logger.severe("missing icon : " + imagePath);
                                        }
                                } finally {
                                        IOUtil.close(is);
                                }
-
                        }
-
-                       return iconMap.get(name.getName());
                }
+
+               return iconImageMap.get(name.getName());
        }
 
        public Image getKeyWindowImageData(KeyWindowImageName name) {
-               if (0 != keyWindowImageMap.size()) {
-                       Image image = keyWindowImageMap.get(name.getName());
-
-                       return image;
-               } else {
+               if (keyWindowImageMap.size() == 0) {
+                       /* load all of the images at once */
                        ClassLoader classLoader = this.getClass().getClassLoader();
-                       KeyWindowImageName[] values = KeyWindowImageName.values();
+                       InputStream is = null;
+                       String imageName, imagePath;
 
+                       KeyWindowImageName[] values = KeyWindowImageName.values();
                        for (KeyWindowImageName value : values) {
-
-                               String imageName = value.getName();
-
-                               String imagePath = IMAGES_FOLDER + "/" +
+                               imageName = value.getName();
+                               imagePath = IMAGES_FOLDER + "/" +
                                                KEYWINDOW_FOLDER + "/" + imageName;
 
-                               InputStream is = null;
                                try {
                                        is = classLoader.getResourceAsStream(imagePath);
                                        if (null != is) {
-                                               logger.fine("load keywindow images:" + imagePath);
+                                               logger.fine("KeyWindow image is loaded : " + imagePath);
                                                keyWindowImageMap.put(imageName, new Image(display, is));
                                        } else {
-                                               logger.severe("missing image:" + imagePath);
+                                               logger.severe("missing image : " + imagePath);
                                        }
                                } finally {
                                        IOUtil.close(is);
                                }
-
                        }
-
-                       return keyWindowImageMap.get(name.getName());
                }
+
+               return keyWindowImageMap.get(name.getName());
        }
 
        public void dispose() {
-               /* skin image */
-               if (null != skinImageMap) {
-                       Collection<Image> images = skinImageMap.values();
+               Collection<Image> images = null;
+               Iterator<Image> imageIterator = null;
+               Image image = null;
 
-                       Iterator<Image> imageIterator = images.iterator();
+               /* resource */
+               if (null != resourceImageMap) {
+                       images = resourceImageMap.values();
+
+                       imageIterator = images.iterator();
 
                        while (imageIterator.hasNext()) {
-                               Image image = imageIterator.next();
+                               image = imageIterator.next();
                                image.dispose();
                        }
                }
 
                /* icon */
-               if (null != iconMap) {
-                       Collection<Image> icons = iconMap.values();
+               if (null != iconImageMap) {
+                       images = iconImageMap.values();
+
+                       imageIterator = images.iterator();
+
+                       while (imageIterator.hasNext()) {
+                               image = imageIterator.next();
+                               image.dispose();
+                       }
+               }
+
+               /* skin image */
+               if (null != skinImageMap) {
+                       images = skinImageMap.values();
 
-                       Iterator<Image> iconIterator = icons.iterator();
+                       imageIterator = images.iterator();
 
-                       while (iconIterator.hasNext()) {
-                               Image image = iconIterator.next();
+                       while (imageIterator.hasNext()) {
+                               image = imageIterator.next();
                                image.dispose();
                        }
                }
 
                /* key window image */
                if (null != keyWindowImageMap) {
-                       Collection<Image> images = keyWindowImageMap.values();
+                       images = keyWindowImageMap.values();
 
-                       Iterator<Image> imagesIterator = images.iterator();
+                       imageIterator = images.iterator();
 
-                       while (imagesIterator.hasNext()) {
-                               Image image = imagesIterator.next();
+                       while (imageIterator.hasNext()) {
+                               image = imageIterator.next();
                                image.dispose();
                        }
                }