package open.dolphin.helper; import java.awt.Component; import java.awt.Dimension; import java.awt.Point; import java.awt.Toolkit; import java.awt.event.ComponentListener; import open.dolphin.client.ClientContext; import open.dolphin.project.Project; /** * ComponentMemory * * @author Kazushi Minagawa * */ public final class ComponentMemory implements ComponentListener { private final Component target; private final Point defaultLocation; private final Dimension defaultSise; private String name; private final boolean report = false; public ComponentMemory(Component target, Point loc, Dimension size, Object object) { this.target = target; this.defaultLocation = loc; this.defaultSise = size; if (object != null) { this.name = object.getClass().getName(); } target.setLocation(this.defaultLocation); target.setSize(this.defaultSise); target.addComponentListener(ComponentMemory.this); } @Override public void componentMoved(java.awt.event.ComponentEvent e) { Point loc = target.getLocation(); Project.setInt(name + "_x", loc.x); Project.setInt(name + "_y", loc.y); if (report) { StringBuilder buf = new StringBuilder(); buf.append(name); buf.append(" loc=("); buf.append(loc.x); buf.append(","); buf.append(loc.y); buf.append(")"); java.util.logging.Logger.getLogger(this.getClass().getName()).info(buf.toString()); } } @Override public void componentResized(java.awt.event.ComponentEvent e) { int width = target.getWidth(); int height = target.getHeight(); Project.setInt(name + "_width", width); Project.setInt(name + "_height", height); if (report) { StringBuilder buf = new StringBuilder(); buf.append(name); buf.append(" size=("); buf.append(width); buf.append(","); buf.append(height); buf.append(")"); java.util.logging.Logger.getLogger(this.getClass().getName()).info(buf.toString()); } } @Override public void componentShown(java.awt.event.ComponentEvent e) {} @Override public void componentHidden(java.awt.event.ComponentEvent e) {} public void setToPreferenceBounds() { int x = Project.getInt(name + "_x", defaultLocation.x); int y = Project.getInt(name + "_y", defaultLocation.y); int width = Project.getInt(name + "_width", defaultSise.width); int height = Project.getInt(name + "_height", defaultSise.height); target.setBounds(x, y, width, height); } public void putCenter() { if (ClientContext.isMac()) { putCenter(3); } else { putCenter(2); } } public void putCenter(int n) { n = n != 0 ? n : 2; Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension size = target.getSize(); int x = (screenSize.width - size.width) / 2; int y = (screenSize.height - size.height) / n; target.setBounds(x, y, size.width, size.height); } }