How to open DevTools the right way?

Having problems with building or using the JCEF Java binding? Ask your questions here.

How to open DevTools the right way?

Postby edominic » Mon Jun 29, 2015 2:56 am

Hey guys ;)
I want to know, which way is the best way to open devtools.

Some requirements:
- JDialog
- 1 Method for opening(create)/put to foreground (if already open)
- 2 ways to open it. 1.) Open via MenuBar (w/o inspectAt) 2.) Open via context menu (with inspectAt)

So, I need only one method. If the window/dialog is closed it should be created and if it is open already (maybe in background) it should be put to foreground and inspectAt should be refreshed.
Maybe someone has a good working method for it :)

This is my method, but it is not really good and it makes some problems under windows:

Code: Select all
    private JDialog devToolsDialog;
    private CefBrowser devTools;


Code: Select all
    public void openDevTools(Frame owner, CefBrowser cefBrowser, Point inspectAt)
    {
        if (devToolsDialog == null || !devToolsDialog.isValid())
        {
            devToolsDialog = new JDialog();
            devToolsDialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

            devToolsDialog.addWindowListener(new WindowAdapter()
            {
                @Override
                public void windowClosing(WindowEvent e)
                {
                    if (devTools != null)
                    {
                        devTools.close();
                        devTools = null;
                    }
                }
            });

        } else
        {
            devToolsDialog.removeAll();
        }

        devTools = cefBrowser.getDevTools(inspectAt);
        devToolsDialog.add(devTools.getUIComponent());
        devToolsDialog.setSize(800, 600);
        devToolsDialog.validate();
        devToolsDialog.setVisible(true);
    }
edominic
Mentor
 
Posts: 82
Joined: Fri Mar 13, 2015 6:46 am

Re: How to open DevTools the right way?

Postby edominic » Mon Jun 29, 2015 6:29 am

I refactored my method now:

Code: Select all
    public void openDevTools(Frame owner, CefBrowser cefBrowser, Point inspectAt)
    {
        if (devToolsDialog == null)
        {
            devToolsDialog = new JDialog();
            devToolsDialog.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
            devToolsDialog.setSize(800, 600);
            devToolsDialog.add(cefBrowser.getDevTools(inspectAt).getUIComponent());
        } else
        {
            devToolsDialog.removeAll();
            devToolsDialog.add(cefBrowser.getDevTools(inspectAt).getUIComponent());
            devToolsDialog.validate();
            devToolsDialog.getContentPane().repaint();
        }
        devToolsDialog.setVisible(true);
    }


Under MacOS it works fine, but under Windows it crashes...

I think there is a bug, because if I try to open devTools at sample-app it crashes, too.
edominic
Mentor
 
Posts: 82
Joined: Fri Mar 13, 2015 6:46 am


Return to JCEF Forum

Who is online

Users browsing this forum: No registered users and 115 guests