+ /**
+ * recover the last known dimensions for a jalview window
+ * @param windowName
+ * - empty string is desktop, all other windows have unique prefix
+ * @return null or last known dimensions scaled to current geometry (if last
+ * window geom was known)
+ */
+ Rectangle getLastKnownDimensions(String windowName)
+ {
+ Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+ String x = jalview.bin.Cache.getProperty(windowName + "SCREEN_X");
+ String y = jalview.bin.Cache.getProperty(windowName + "SCREEN_Y");
+ String width = jalview.bin.Cache.getProperty(windowName
+ + "SCREEN_WIDTH");
+ String height = jalview.bin.Cache.getProperty(windowName
+ + "SCREEN_HEIGHT");
+ if ((x != null) && (y != null) && (width != null) && (height != null))
+ {
+ int ix = Integer.parseInt(x), iy = Integer.parseInt(y), iw = Integer
+ .parseInt(width), ih = Integer.parseInt(height);
+ if (jalview.bin.Cache.getProperty("SCREENGEOMETRY_WIDTH") != null)
+ {
+ // attempt #1 - try to cope with change in screen geometry - this
+ // version doesn't preserve original jv aspect ratio.
+ // take ratio of current screen size vs original screen size.
+ double sw = ( (1f*screenSize.width)
+ / (1f*Integer.parseInt(jalview.bin.Cache
+ .getProperty("SCREENGEOMETRY_WIDTH"))))
+ ;
+ double sh = ( (1f*screenSize.height)
+ / (1f*Integer.parseInt(jalview.bin.Cache
+ .getProperty("SCREENGEOMETRY_HEIGHT"))));
+ // rescale the bounds depending upon the current screen geometry.
+ ix = (int) (ix * sw);
+ iw = (int) (iw * sw);
+ iy = (int) (iy * sh);
+ ih = (int) (ih * sh);
+ jalview.bin.Cache.log.debug("Got last known dimensions for "+windowName+": x:"+ix + " y:"+iy + " width:"+iw+" height:"+ih);
+ }
+ // return dimensions for new instance
+ return new Rectangle(ix, iy, iw, ih);
+ }
+ return null;
+ }
+