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