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> 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> > 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> 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; >> >> >> >> public class MyDialog extends Window implements WindowListener >> >> { >> >> // replace the default coffee cup icon >> >> private static final 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 >> >> public void setVisible(boolean visible) { >> >> jDialog.setVisible(visible); >> >> } >> >> >> >> private void saveSizeAndLocation() { >> >> // removed code to save preferences jDialog.getLocation()); >> jDialog.getSize()); >> >> } >> >> >> >> private void 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 >> >> public void windowOpened(WindowEvent e) { >> >> System.*out*.println("MyDialog windowOpened"); >> >> setSizeAndLocation(); >> >> } >> >> >> public void windowClosing(WindowEvent e) { >> >> System.*out*.println("MyDialog windowClosing"); >> >> saveSizeAndLocation(); >> >> } >> >> >> >> public void windowClosed(WindowEvent e) { System.*out*.println(" >> MyDialog windowClosed"); } >> >> public void windowIconified(WindowEvent e) { System.*out*.println( >> "MyDialog windowIconified"); } >> >> public void windowDeiconified(WindowEvent e) { System.*out* >> .println("MyDialog windowDeiconified"); } >> >> public void windowActivated(WindowEvent e) { System.*out*.println( >> "MyDialog windowActivated"); } >> >> public void windowDeactivated(WindowEvent e) { System.*out* >> .println("MyDialog windowDeactivated"); } >> } >> >> >> >> >> >> On Fri, Jun 10, 2016 at 11:47 AM, Josh Highley <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> 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 >>>>> >>>> >>>> >>> >> >