X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altosuilib%2FAltosUIFrame.java;h=6e62c762948d83578814c5b26d4534a0c92ff352;hp=409aea2e98dea105fe6c2abeec3c8cf673ac3def;hb=9a4c2c7fc6af922d052e23a1b99bf847fbf9b0e9;hpb=65b512c890a3ccf487655b79305ab1cfcf49259c diff --git a/altosuilib/AltosUIFrame.java b/altosuilib/AltosUIFrame.java index 409aea2e..6e62c762 100644 --- a/altosuilib/AltosUIFrame.java +++ b/altosuilib/AltosUIFrame.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib; +package org.altusmetrum.altosuilib_2; import java.awt.*; import java.awt.event.*; @@ -28,7 +28,7 @@ class AltosUIFrameListener extends WindowAdapter { } } -public class AltosUIFrame extends JFrame implements AltosUIListener { +public class AltosUIFrame extends JFrame implements AltosUIListener, AltosPositionListener { public void ui_changed(String look_and_feel) { SwingUtilities.updateComponentTreeUI(this); @@ -45,7 +45,7 @@ public class AltosUIFrame extends JFrame implements AltosUIListener { }; static public String[] icon_names; - + static public void set_icon_names(String[] new_icon_names) { icon_names = new_icon_names; } public String[] icon_names() { @@ -57,7 +57,7 @@ public class AltosUIFrame extends JFrame implements AltosUIListener { public void set_icon() { ArrayList icons = new ArrayList(); String[] icon_names = icon_names(); - + for (int i = 0; i < icon_names.length; i++) { java.net.URL imgURL = AltosUIFrame.class.getResource(icon_names[i]); if (imgURL != null) @@ -65,18 +65,112 @@ public class AltosUIFrame extends JFrame implements AltosUIListener { } setIconImages(icons); } - - public AltosUIFrame() { + private boolean location_by_platform = true; + + public void setLocationByPlatform(boolean lbp) { + location_by_platform = lbp; + super.setLocationByPlatform(lbp); + } + + public void scan_device_selected(AltosDevice device) { + } + + public void setSize() { + /* Smash sizes around so that the window comes up in the right shape */ + Insets i = getInsets(); + Dimension ps = rootPane.getPreferredSize(); + ps.width += i.left + i.right; + ps.height += i.top + i.bottom; + setPreferredSize(ps); + setSize(ps); + } + + public void setPosition (int position) { + Insets i = getInsets(); + Dimension ps = getSize(); + + /* Stick the window in the desired location on the screen */ + setLocationByPlatform(false); + GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); + GraphicsConfiguration gc = gd.getDefaultConfiguration(); + Rectangle r = gc.getBounds(); + + /* compute X position */ + int x = 0; + int y = 0; + switch (position) { + case AltosUILib.position_top_left: + case AltosUILib.position_left: + case AltosUILib.position_bottom_left: + x = 0; + break; + case AltosUILib.position_top: + case AltosUILib.position_center: + case AltosUILib.position_bottom: + x = (r.width - ps.width) / 2; + break; + case AltosUILib.position_top_right: + case AltosUILib.position_right: + case AltosUILib.position_bottom_right: + x = r.width - ps.width + i.right; + break; + } + + /* compute Y position */ + switch (position) { + case AltosUILib.position_top_left: + case AltosUILib.position_top: + case AltosUILib.position_top_right: + y = 0; + break; + case AltosUILib.position_left: + case AltosUILib.position_center: + case AltosUILib.position_right: + y = (r.height - ps.height) / 2; + break; + case AltosUILib.position_bottom_left: + case AltosUILib.position_bottom: + case AltosUILib.position_bottom_right: + y = r.height - ps.height + i.bottom; + break; + } + setLocation(x, y); + } + + int position; + + public void position_changed(int position) { + this.position = position; + if (!location_by_platform) + setPosition(position); + } + + public void setVisible (boolean visible) { + if (visible) + setLocationByPlatform(location_by_platform); + super.setVisible(visible); + if (visible) { + setSize(); + if (!location_by_platform) + setPosition(position); + } + } + + void init() { AltosUIPreferences.register_ui_listener(this); + AltosUIPreferences.register_position_listener(this); + position = AltosUIPreferences.position(); addWindowListener(new AltosUIFrameListener()); set_icon(); } + public AltosUIFrame() { + init(); + } + public AltosUIFrame(String name) { super(name); - AltosUIPreferences.register_ui_listener(this); - addWindowListener(new AltosUIFrameListener()); - set_icon(); + init(); } }