Fix CFrame positioning on multiple monitors when opened from main menu.

Link to SF Tracker: http://sourceforge.net/support/tracker.php?aid=2975622
This commit is contained in:
phib 2010-03-24 01:55:27 +00:00
parent d12023af1e
commit 842ce2be4c
6 changed files with 60 additions and 10 deletions

View File

@ -145,9 +145,10 @@ public final class AEnv
public static void positionScreen (Window window, int position) public static void positionScreen (Window window, int position)
{ {
window.pack(); window.pack();
Dimension sSize = Toolkit.getDefaultToolkit().getScreenSize();
// take into account task bar and other adornments // take into account task bar and other adornments
GraphicsConfiguration config = window.getGraphicsConfiguration(); GraphicsConfiguration config = window.getGraphicsConfiguration();
Rectangle bounds = config.getBounds();
Dimension sSize = bounds.getSize();
Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(config); Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(config);
sSize.width -= (insets.left + insets.right); sSize.width -= (insets.left + insets.right);
sSize.height -= (insets.top + insets.bottom); sSize.height -= (insets.top + insets.bottom);
@ -201,7 +202,7 @@ public final class AEnv
y = (sSize.height - wSize.height); y = (sSize.height - wSize.height);
} }
// //
window.setLocation(x + insets.left, y + insets.top); window.setLocation(bounds.x + x + insets.left, bounds.y + y + insets.top);
} // positionScreen } // positionScreen
/** /**

View File

@ -241,7 +241,7 @@ public class AMenuStartItem extends Thread implements ActionListener
} }
SwingUtilities.invokeLater(m_updatePB); // 1 SwingUtilities.invokeLater(m_updatePB); // 1
frame = new AWindow(); frame = new AWindow(m_menu.getGraphicsConfiguration());
boolean OK = false; boolean OK = false;
if (AD_Workbench_ID != 0) if (AD_Workbench_ID != 0)
OK = frame.initWorkbench(AD_Workbench_ID); OK = frame.initWorkbench(AD_Workbench_ID);
@ -284,7 +284,7 @@ public class AMenuStartItem extends Thread implements ActionListener
if (IsSOTrx != null && IsSOTrx.equals("Y")) if (IsSOTrx != null && IsSOTrx.equals("Y"))
isSO = true; isSO = true;
m_timer.stop(); m_timer.stop();
ProcessDialog pd = new ProcessDialog (AD_Process_ID, isSO); ProcessDialog pd = new ProcessDialog (m_menu.getGraphicsConfiguration(), AD_Process_ID, isSO);
if (!pd.init()) if (!pd.init())
return; return;
m_timer.start(); m_timer.start();
@ -333,7 +333,7 @@ public class AMenuStartItem extends Thread implements ActionListener
return; return;
} }
} }
ff = new FormFrame(); ff = new FormFrame(m_menu.getGraphicsConfiguration());
SwingUtilities.invokeLater(m_updatePB); // 1 SwingUtilities.invokeLater(m_updatePB); // 1
boolean ok = ff.openForm(AD_Form_ID); boolean ok = ff.openForm(AD_Form_ID);
if (!ok) { if (!ok) {

View File

@ -17,6 +17,7 @@
package org.compiere.apps; package org.compiere.apps;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.GraphicsConfiguration;
import java.awt.Image; import java.awt.Image;
import java.awt.event.WindowEvent; import java.awt.event.WindowEvent;
@ -44,11 +45,21 @@ public class AWindow extends CFrame
private static final long serialVersionUID = -1925388774073536474L; private static final long serialVersionUID = -1925388774073536474L;
/** /**
* @deprecated
* Standard Constructor - requires initWindow * Standard Constructor - requires initWindow
*/ */
public AWindow () public AWindow ()
{ {
super(); this(null);
} // AWindow
/**
* Standard Constructor - requires initWindow
* @param gc
*/
public AWindow (GraphicsConfiguration gc)
{
super(gc);
// Set UI Components // Set UI Components
this.setIconImage(Env.getImage("mWindow.gif")); this.setIconImage(Env.getImage("mWindow.gif"));
this.getContentPane().add(m_APanel, BorderLayout.CENTER); this.getContentPane().add(m_APanel, BorderLayout.CENTER);

View File

@ -21,6 +21,7 @@ import java.awt.BorderLayout;
import java.awt.Color; import java.awt.Color;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.FlowLayout; import java.awt.FlowLayout;
import java.awt.GraphicsConfiguration;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
@ -74,6 +75,7 @@ public class ProcessDialog extends CFrame
private static final long serialVersionUID = 790447068287846414L; private static final long serialVersionUID = 790447068287846414L;
/** /**
* @deprecated
* Dialog to start Process * Dialog to start Process
* *
* @param AD_Process_ID process * @param AD_Process_ID process
@ -81,7 +83,20 @@ public class ProcessDialog extends CFrame
*/ */
public ProcessDialog (int AD_Process_ID, boolean isSOTrx) public ProcessDialog (int AD_Process_ID, boolean isSOTrx)
{ {
super(); this(null, AD_Process_ID, isSOTrx);
} // ProcessDialog
/**
* Dialog to start Process
*
* @param gc
* @param AD_Process_ID process
* @param isSOTrx is sales trx
*/
public ProcessDialog (GraphicsConfiguration gc, int AD_Process_ID, boolean isSOTrx)
{
super(gc);
log.info("Process=" + AD_Process_ID + "; SOTrx=" + isSOTrx); log.info("Process=" + AD_Process_ID + "; SOTrx=" + isSOTrx);
enableEvents(AWTEvent.WINDOW_EVENT_MASK); enableEvents(AWTEvent.WINDOW_EVENT_MASK);
m_AD_Process_ID = AD_Process_ID; m_AD_Process_ID = AD_Process_ID;

View File

@ -18,6 +18,7 @@ package org.compiere.apps.form;
import java.awt.Cursor; import java.awt.Cursor;
import java.awt.Event; import java.awt.Event;
import java.awt.GraphicsConfiguration;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
@ -65,12 +66,23 @@ public class FormFrame extends CFrame
private static final long serialVersionUID = 2559005548469735515L; private static final long serialVersionUID = 2559005548469735515L;
/** /**
* @deprecated
* Create Form. * Create Form.
* Need to call openForm * Need to call openForm
*/ */
public FormFrame () public FormFrame ()
{ {
super(); this(null);
} // FormFrame
/**
* Create Form.
* Need to call openForm
* @param gc
*/
public FormFrame (GraphicsConfiguration gc)
{
super(gc);
addWindowListener(new java.awt.event.WindowAdapter() addWindowListener(new java.awt.event.WindowAdapter()
{ {
public void windowOpened(java.awt.event.WindowEvent evt) public void windowOpened(java.awt.event.WindowEvent evt)

View File

@ -23,6 +23,7 @@ import java.awt.Component;
import java.awt.Cursor; import java.awt.Cursor;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Event; import java.awt.Event;
import java.awt.GraphicsConfiguration;
import java.awt.Point; import java.awt.Point;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
@ -130,14 +131,24 @@ public class Viewer extends CFrame
*/ */
private static final long serialVersionUID = 7306392362119021781L; private static final long serialVersionUID = 7306392362119021781L;
/** /**
* @deprecated
* Viewer Constructor * Viewer Constructor
* @param re report engine * @param re report engine
*/ */
public Viewer (ReportEngine re) public Viewer (ReportEngine re)
{ {
super(); this(null, re);
}
/**
* Viewer Constructor
* @param gc
* @param re report engine
*/
public Viewer (GraphicsConfiguration gc, ReportEngine re)
{
super(gc);
log.info(""); log.info("");
m_WindowNo = Env.createWindowNo(this); m_WindowNo = Env.createWindowNo(this);
m_reportEngine = re; m_reportEngine = re;