Yeah, been pretty busy this week, but I should have a chance to look at our code some more in the next couple of days, but so far, it seems you are going in the correct direction.

~Roger


On 6/17/16 11:11 AM, Sandro Martini wrote:

Ok.

I'm sorry because I can't help you so much in this feature, but maybe Roger can.

Keep us updated.

Thanks again.
Bye

Il 17/Giu/2016 19:18, "Josh Highley" <joshhigh...@gmail.com <mailto:joshhigh...@gmail.com>> ha scritto:

    I will, but I'd like to figure out the event chaining first.  I'm
    having issues getting the JDialog to behave in sync with my main
    application window (Pivot). Also, the app window isn't firing
    events like I'd expect -- nothing when it loses focus or is
    minimized.  It does fire a activeChanged event when it gains
    focus, though.  This makes it impossible to know when to also
    minimize the JDialog.

    I set the JDialog alwaysOnTop to true so that it doesn't get lost
    behind the app window. However, that makes the JDialog also stay
    on top of all other windows  (web browser, IDE, etc) and the
    JDialog stays visible even when the main app window is minimized.

    Roger implied they'd figured out the events, so I'm hoping he'll
    chime in with some pointers.

    Thanks,

    Josh


    On Thu, Jun 16, 2016 at 3:38 PM, Sandro Martini
    <sandro.mart...@gmail.com <mailto:sandro.mart...@gmail.com>> wrote:

        Hi Josh,
        thanks for sharing with us your work-in-progress ...

        Could you attach it in a jira issue ?
        So in this way we could integrate in Pivot sources in next
        release as a sample ...

        Bye,
        Sandro

        Il 16/Giu/2016 22:05, "Josh Highley" <joshhigh...@gmail.com
        <mailto:joshhigh...@gmail.com>> ha scritto:

            Documenting my progress in case others need this in the
            future.  I found the SwingDemo code in the Pivot SVN,
            which got me started.  I ended up using a JDialog instead
            of JFrame because I didn't want the minimize or maximize
            buttons, or a separate task bar item.

            I'm still trying to figure some things out, mainly the
            simplest way to tie the JDialog's AWT events
            (WindowListener) to Pivots window events.  I need to fire
            Pivot window state events so that other Pivot components
            are kept in sync with this dialog's window state.  Also,
            minimizing my main application's window does not also hide
            this dialog. Again, need to tie events between Pivot and
            Swing/AWT.


            This code is still a work in progress.  I _think_ I've
            removed my app-specific code, but no guarantee it will
            compile.

            import java.awt.Dimension;

            import java.awt.Image;

            import java.awt.Point;

            import java.awt.event.WindowEvent;

            import java.awt.event.WindowListener;

            import java.awt.image.BufferedImage;


            import javax.swing.JDesktopPane;

            import javax.swing.JDialog;

            import javax.swing.JInternalFrame;

            import javax.swing.plaf.basic.BasicInternalFrameUI;


            import org.apache.pivot.beans.BXML;

            import org.apache.pivot.beans.BXMLSerializer;

            import org.apache.pivot.wtk.ApplicationContext;

            import org.apache.pivot.wtk.Container;

            import org.apache.pivot.wtk.Form;

            import org.apache.pivot.wtk.Window;

            publicclass MyDialog extends Window implements WindowListener

            {

                 // replace the default coffee cup icon

            privatestaticfinal Image /ICON/ =
            new BufferedImage(1,1,BufferedImage./TYPE_INT_ARGB_PRE/);

            private JDialog jDialog;


            public MyDialog() {

            super();

            try {


                   JDesktopPane desktop = new JDesktopPane();

            ApplicationContext.DisplayHost displayHost =
            new ApplicationContext.DisplayHost();

ApplicationContext./getDisplays/().add(displayHost.getDisplay());

            jDialog = new JDialog();

            jDialog.setTitle(/"My Dialog"/);

            jDialog.setIconImage(/ICON/);

            jDialog.setAlwaysOnTop(true);

            jDialog.addWindowListener(this);

            jDialog.setContentPane(desktop);

            jDialog.setSize(1024, 768);

            jDialog.setVisible(true);

            jDialog.setResizable(true);

                    JInternalFrame internalFrame =
            new JInternalFrame("", false, false, false);

            internalFrame.add(displayHost);

                   // remove the JInternalFrame border and title bar
            since JDialog provides this

            internalFrame.setBorder(null);

((BasicInternalFrameUI)internalFrame.getUI()).setNorthPane(null);

            desktop.add(internalFrame);

                         // maximize our Pivot content to size it with
            the Swing container

                          setMaximized(true);

                          BXMLSerializer bxmlSerializer =
            new BXMLSerializer();

            setContent((Container)
            bxmlSerializer.readObject(Container.class, "my_dialog.bxml"));

            bxmlSerializer.bind(this, MyDialog.class);

                          open(displayHost.getDisplay());

            internalFrame.setMaximum(true);

            internalFrame.setLocation(0, 0);

            internalFrame.setSize(desktop.getSize());

            internalFrame.setVisible(true);

            } catch (Throwable t) {

            t.printStackTrace();

            }

            }

            @Override

            publicvoid setVisible(booleanvisible) {

            jDialog.setVisible(visible);

            }

            privatevoid saveSizeAndLocation() {

              // removed code to save
            preferencesjDialog.getLocation()); jDialog.getSize());

            }

            privatevoid setSizeAndLocation() {

                     // removed code to load preferences
            
jFrjDialogme.setSize((Dimension)obj);jDialog.setLocation((Point)obj);

                   }

            ////////////////// AWT WindowListener ////////////////////

                 // I left println here temporarily to see what/when
            events are fired

            publicvoid windowOpened(WindowEvent e) {

            System./out/.println("MyDialog windowOpened");

            setSizeAndLocation();

                   }


            publicvoid windowClosing(WindowEvent e) {

            System./out/.println("MyDialog windowClosing");

            saveSizeAndLocation();

            }

            publicvoid windowClosed(WindowEvent e) {
            System./out/.println("MyDialog windowClosed"); }

            publicvoid windowIconified(WindowEvent e) {
            System./out/.println("MyDialog windowIconified"); }

            publicvoid windowDeiconified(WindowEvent e) {
            System./out/.println("MyDialog windowDeiconified"); }

            publicvoid windowActivated(WindowEvent e) {
            System./out/.println("MyDialog windowActivated"); }

            publicvoid windowDeactivated(WindowEvent e)
            { System./out/.println("MyDialog windowDeactivated");  }

            }





            On Fri, Jun 10, 2016 at 11:47 AM, Josh Highley
            <joshhigh...@gmail.com <mailto:joshhigh...@gmail.com>> wrote:

                Is the JFrame at the application level or at each
                individual, drag-able, frame level?  I don't
                necessarily need example code if you can do a bit of a
                "brain dump" with some of the trickier details. You
                said " new top-level JFrame, and host the Pivot window
                inside that" -- how is that relationship made?  I see
                JFrame will give a Graphics object, and I know Pivot
                components draw themselves with Graphics....

                On Wed, Jun 8, 2016 at 10:11 PM, Roger and Beth
                Whitcomb <rogerandb...@rbwhitcomb.com
                <mailto:rogerandb...@rbwhitcomb.com>> wrote:

                    Hi Josh,

                        Yes it is, but it is complicated.  You
                    basically have to create a new top-level JFrame,
                    and host the Pivot window inside that, and do the
                    message passing by hooking up listeners, etc.  We
                    have done it in our application, and I hope to be
                    able to submit the code at some point, but it is
                    not ready yet (still some proprietary bits in
                    there still).  I'm not even sure I could send our
                    code to you in a way that would be helpful (i.e.,
                    that you could build). But what we did was based
                    on some of the example code that is already there,
                    so you could potentially reinvent it ....

                        Let me see if I can at least point you to the
                    example code, but it will have to wait until next
                    week for me ...

                    HTH,

                    ~Roger


                    On 6/8/16 11:27 AM, Josh Highley wrote:

                        Is it possible to create a non-modal frame (or
                        similar) that can be dragged outside the main
                        application window?

                        For example, I have a log console Frame and
                        some other non-modal info Frames that a user
                        can show/hide.  I want them to be able to drag
                        it out from in front of the main application
                        window, like to another monitor.  At the
                        moment, the Frames will get cutoff when they
                        pass the edge of the underlying app window.

                        Thanks,

                        Josh






Reply via email to