Advertisement
BullyATWiiplaza

Java - WindowBoundsRestorer

Sep 11th, 2014
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.51 KB | None | 0 0
  1. import java.awt.Component;
  2. import java.awt.Container;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.io.OutputStream;
  8. import java.util.Properties;
  9.  
  10. import org.apache.commons.io.IOUtils;
  11. import org.apache.commons.lang3.StringUtils;
  12.  
  13. public class WindowBoundsRestorer
  14. {
  15.     private final String xmlFileName;
  16.     private Properties properties;
  17.  
  18.     public WindowBoundsRestorer(String xmlFileName)
  19.     {
  20.         this.xmlFileName = xmlFileName;
  21.     }
  22.  
  23.     private void setBounds(String key, Component component)
  24.     {
  25.         key = key + component.getName();
  26.  
  27.         String position = properties.getProperty(key);
  28.  
  29.         if (component.getName() != null && !StringUtils.isBlank(position))
  30.         {
  31.             String[] nums = position.split(",");
  32.  
  33.             component.setBounds(Integer.parseInt(nums[0]), Integer.parseInt(nums[1]),
  34.                     Integer.parseInt(nums[2]), Integer.parseInt(nums[3]));
  35.         }
  36.  
  37.         if (component instanceof Container)
  38.         {
  39.             key = key + "/";
  40.             Container container = (Container) component;
  41.             for (Component child : container.getComponents())
  42.                 setBounds(key, child);
  43.         }
  44.     }
  45.  
  46.     public void restore(Component component)
  47.     {
  48.         properties = new Properties();
  49.  
  50.         InputStream reader = null;
  51.  
  52.         try
  53.         {
  54.             reader = new FileInputStream(xmlFileName);
  55.             properties.loadFromXML(reader);
  56.         } catch (IOException e)
  57.         {
  58.             e.printStackTrace();
  59.             return;
  60.         } finally
  61.         {
  62.             IOUtils.closeQuietly(reader);
  63.         }
  64.  
  65.         Component top = component;
  66.  
  67.         while (top.getParent() != null)
  68.             top = top.getParent();
  69.  
  70.         setBounds("", top);
  71.     }
  72.  
  73.     private void getBounds(String key, Component component)
  74.     {
  75.         key = key + component.getName();
  76.  
  77.         String position = String.format("%d,%d,%d,%d", component.getX(), component.getY(),
  78.                 component.getWidth(), component.getHeight());
  79.  
  80.         properties.setProperty(key, position);
  81.  
  82.         if (component instanceof Container)
  83.         {
  84.             key = key + "/";
  85.  
  86.             Container container = (Container) component;
  87.  
  88.             for (Component child : container.getComponents())
  89.                 getBounds(key, child);
  90.         }
  91.     }
  92.  
  93.     public void save(Component component)
  94.     {
  95.         Component top = component;
  96.  
  97.         while (top.getParent() != null)
  98.             top = top.getParent();
  99.  
  100.         properties = new Properties();
  101.         getBounds("", top);
  102.  
  103.         OutputStream writer = null;
  104.  
  105.         try
  106.         {
  107.             writer = new FileOutputStream(xmlFileName);
  108.             properties.storeToXML(writer, "Browser");
  109.         } catch (IOException e)
  110.         {
  111.             e.printStackTrace();
  112.         } finally
  113.         {
  114.             IOUtils.closeQuietly(writer);
  115.         }
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement