Home » Eclipse Projects » Standard Widget Toolkit (SWT) » Java setFullScreenWindow and Browser woes
Java setFullScreenWindow and Browser woes [message #668507] |
Thu, 05 May 2011 22:07 |
Chris A Messages: 2 Registered: May 2011 |
Junior Member |
|
|
Hey all,
I have been running into an issue with a SWT Browser and running it in fullscreenmode with java. When I run it with a 16 bit depth, it works fine, but when I switch it over to 32, it renders a black screen. Currently the application we are developing needs to be run in fullscreenmode with 32 bit depth, and cannot switch back and forth between the different bit depth due to the screen flickering between changes.
The reason why I am using a SWT Browser is so I can run the flash plugin inside of java. It's not ideal, but it's what my boss wants.
Any help would be appreciated. Prototype code to follow.
Thanks,
Chris A
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.DisplayMode;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class FullScreenSwtBrowser {
private JFrame bFrame;
private JPanel embedPanel;
private GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
private DisplayMode newDisplay = null;
private GraphicsDevice defaultGD = ge.getDefaultScreenDevice();
// SWT Components
private Display display = new Display();
private Shell shell;
private Canvas embedCanvas;
private Browser swtBrowser;
public void init(){
bFrame = new JFrame();
bFrame.setSize(800, 600);
bFrame.setUndecorated(true);
newDisplay = new DisplayMode(800, 600, 32, 60);
// newDisplay = new DisplayMode(800, 600, 16, 60);
embedCanvas = new Canvas();
embedCanvas.setPreferredSize(new Dimension(800, 600));
embedPanel = new JPanel();
embedPanel.add(embedCanvas);
JPanel activityPanel = new JPanel();
activityPanel.setBackground(Color.GREEN);
bFrame.pack();
}
public void initBrowser(final String url) {
display.syncExec(new Runnable() {
@Override
public void run() {
shell = SWT_AWT.new_Shell(display, embedCanvas);
shell.setLayout(new GridLayout());
swtBrowser = new Browser(shell, SWT.NONE);
swtBrowser.setLayoutData(new GridData(GridData.FILL_BOTH));
shell.setSize(embedCanvas.getWidth(), embedCanvas.getHeight());
shell.setLayoutData(new GridData(GridData.FILL_BOTH));
swtBrowser.setUrl(url);
shell.open();
shell.forceFocus();
}
});
}
public void start(){
bFrame.add(embedPanel);
defaultGD.setFullScreenWindow(bFrame);
defaultGD.setDisplayMode(newDisplay);
embedPanel.setVisible(true);
String url = "http://www.adobe.com/software/flash/about/";
initBrowser(url);
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
/**
* @param args
*/
public static void main(String[] args) {
FullScreenSwtBrowser fssb = new FullScreenSwtBrowser();
fssb.init();
fssb.start();
}
}
|
|
|
Re: Java setFullScreenWindow and Browser woes [message #669866 is a reply to message #668507] |
Wed, 11 May 2011 21:19 |
Grant Gayed Messages: 2150 Registered: July 2009 |
Senior Member |
|
|
Hi Chris,
The behavior I see is a bit different from what you describe but still
similar. I assume there's a reason you're using SWT_AWT here (?). It works
fine if straight swt is used, snippet is below.
If using only swt is not possible for you then I suggest logging a report
with SWT at
https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Platform &component=SWT
and provide your snippet. I'm not sure if there's a problem in how you're
mixing swt and awt or not, it could just be a bug.
public void start() {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
Browser browser = new Browser(shell, SWT.NONE);
String url = "http://www.adobe.com/software/flash/about/";
browser.setUrl(url);
shell.open();
shell.setFullScreen(true);
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
display.dispose();
}
Grant
"Chris A" <chrisarnold@waterford.org> wrote in message
news:ipv6js$m0g$1@news.eclipse.org...
> Hey all,
>
> I have been running into an issue with a SWT Browser and running it in
> fullscreenmode with java. When I run it with a 16 bit depth, it works
> fine, but when I switch it over to 32, it renders a black screen.
> Currently the application we are developing needs to be run in
> fullscreenmode with 32 bit depth, and cannot switch back and forth between
> the different bit depth due to the screen flickering between changes.
> The reason why I am using a SWT Browser is so I can run the flash plugin
> inside of java. It's not ideal, but it's what my boss wants.
>
> Any help would be appreciated. Prototype code to follow.
>
> Thanks,
>
> Chris A
>
>
> import java.awt.Canvas;
> import java.awt.Color;
> import java.awt.Dimension;
> import java.awt.DisplayMode;
> import java.awt.GraphicsDevice;
> import java.awt.GraphicsEnvironment;
>
> import javax.swing.JFrame;
> import javax.swing.JPanel;
>
> import org.eclipse.swt.SWT;
> import org.eclipse.swt.awt.SWT_AWT;
> import org.eclipse.swt.browser.Browser;
> import org.eclipse.swt.layout.GridData;
> import org.eclipse.swt.layout.GridLayout;
> import org.eclipse.swt.widgets.Display;
> import org.eclipse.swt.widgets.Shell;
>
> public class FullScreenSwtBrowser {
>
> private JFrame bFrame;
> private JPanel embedPanel;
>
> private GraphicsEnvironment ge =
> GraphicsEnvironment.getLocalGraphicsEnvironment();
> private DisplayMode newDisplay = null;
> private GraphicsDevice defaultGD = ge.getDefaultScreenDevice();
>
>
> // SWT Components
>
> private Display display = new Display();
> private Shell shell;
> private Canvas embedCanvas;
> private Browser swtBrowser;
>
> public void init(){
> bFrame = new JFrame();
> bFrame.setSize(800, 600);
> bFrame.setUndecorated(true);
> newDisplay = new DisplayMode(800, 600, 32, 60);
> // newDisplay = new DisplayMode(800, 600, 16, 60);
>
>
> embedCanvas = new Canvas();
> embedCanvas.setPreferredSize(new Dimension(800, 600));
>
> embedPanel = new JPanel();
> embedPanel.add(embedCanvas);
>
>
> JPanel activityPanel = new JPanel();
> activityPanel.setBackground(Color.GREEN);
> bFrame.pack();
>
> }
>
> public void initBrowser(final String url) {
>
> display.syncExec(new Runnable() {
>
> @Override
> public void run() {
>
> shell = SWT_AWT.new_Shell(display, embedCanvas);
> shell.setLayout(new GridLayout());
>
> swtBrowser = new Browser(shell, SWT.NONE);
> swtBrowser.setLayoutData(new GridData(GridData.FILL_BOTH));
> shell.setSize(embedCanvas.getWidth(), embedCanvas.getHeight());
> shell.setLayoutData(new GridData(GridData.FILL_BOTH));
> swtBrowser.setUrl(url);
> shell.open();
> shell.forceFocus();
> }
> });
> }
>
> public void start(){
> bFrame.add(embedPanel);
> defaultGD.setFullScreenWindow(bFrame);
> defaultGD.setDisplayMode(newDisplay);
>
> embedPanel.setVisible(true);
>
> String url = "http://www.adobe.com/software/flash/about/";
>
> initBrowser(url);
>
> while (!shell.isDisposed()) {
> if (!display.readAndDispatch()) {
> display.sleep();
> }
> }
> display.dispose();
> }
>
>
>
> /**
> * @param args
> */
> public static void main(String[] args) {
> FullScreenSwtBrowser fssb = new FullScreenSwtBrowser();
> fssb.init();
> fssb.start();
> }
>
> }
>
>
|
|
|
Goto Forum:
Current Time: Thu Apr 18 05:41:35 GMT 2024
Powered by FUDForum. Page generated in 0.02161 seconds
|