summaryrefslogtreecommitdiffstats
path: root/qtjava/javalib/examples/popup/Frame.java
diff options
context:
space:
mode:
Diffstat (limited to 'qtjava/javalib/examples/popup/Frame.java')
-rw-r--r--qtjava/javalib/examples/popup/Frame.java166
1 files changed, 166 insertions, 0 deletions
diff --git a/qtjava/javalib/examples/popup/Frame.java b/qtjava/javalib/examples/popup/Frame.java
new file mode 100644
index 00000000..afbf2edc
--- /dev/null
+++ b/qtjava/javalib/examples/popup/Frame.java
@@ -0,0 +1,166 @@
+/***************************************************************************
+* $Id$
+**
+* Definition of something or other
+**
+* Created : 979899
+**
+* Copyright (C) 1997 by Trolltech AS. All rights reserved.
+**
+* This file is part of an example program for Qt. This example
+* program may be used, distributed and modified without limitation.
+**
+****************************************************************************/
+
+import org.kde.qt.*;
+
+class Frame extends QFrame
+{
+
+private QPushButton button1;
+private QPushButton button2;
+
+private QFrame popup1;
+private FancyPopup popup2;
+
+Frame()
+{
+ this(null, null);
+}
+
+Frame(QWidget parent, String name)
+{
+ super(parent, name);
+ button1 = new QPushButton("Simple Popup", this);
+ connect ( button1, SIGNAL(" clicked()"), SLOT(" button1Clicked()") );
+ button2 = new QPushButton("Fancy Popup", this);
+ connect ( button2, SIGNAL(" pressed()"), SLOT(" button2Pressed()") );
+
+ QBoxLayout l = new QHBoxLayout( this );
+ button1.setMaximumSize(button1.sizeHint());
+ button2.setMaximumSize(button2.sizeHint());
+ l.addWidget( button1 );
+ l.addWidget( button2 );
+ l.activate();
+
+// button1.setGeometry(20,20,100,30);
+// button2.setGeometry(140,20,100,30);
+ resize(270, 70);
+
+ //create a very simple popup: it is just composed with other
+ //widget and will be shown after clicking on button1
+
+ popup1 = new QFrame( this ,null, WType_Popup);
+ popup1.setFrameStyle( WinPanel|Raised );
+ popup1.resize(150,100);
+ QLineEdit tmpE = new QLineEdit( popup1 );
+ connect( tmpE, SIGNAL(" returnPressed()"), popup1, SLOT(" hide()") );
+ tmpE.setGeometry(10,10, 130, 30);
+ tmpE.setFocus();
+ QPushButton tmpB = new QPushButton("Click me!", popup1);
+ connect( tmpB, SIGNAL(" clicked()"), popup1, SLOT(" close()") );
+ tmpB.setGeometry(10, 50, 130, 30);
+
+ // the fancier version uses its own class. It will be shown when
+ // pressing button2, so they behavior is more like a modern menu
+ // or toolbar.
+
+ popup2 = new FancyPopup( this );
+
+ // you might also add new widgets to the popup, just like you do
+ // it with any other widget. The next four lines (if not
+ // commented out) will for instance add a line edit widget.
+
+// tmpE = new QLineEdit( popup2 );
+// tmpE.setFocus();
+// connect( tmpE, SIGNAL(" returnPressed()"), popup2, SLOT(" close()") );
+// tmpE.setGeometry(10, 10, 130, 30);
+}
+
+
+void button1Clicked(){
+ popup1.move( mapToGlobal( button1.geometry().bottomLeft() ) );
+ popup1.show();
+}
+
+void button2Pressed(){
+ popup2.popup(button2);
+}
+
+class FancyPopup extends QLabel
+{
+private QWidget popupParent;
+private int moves;
+
+
+
+FancyPopup( QWidget parent )
+{
+ this(parent, null);
+}
+
+FancyPopup( QWidget parent, String name )
+{
+ super( parent, name, WType_Popup );
+ setFrameStyle( WinPanel|Raised );
+ setAlignment( AlignCenter );
+ resize(150,100);
+ moves = 0;
+ setMouseTracking( true );
+}
+
+protected void mouseMoveEvent( QMouseEvent e){
+ moves++;
+ String s = e.pos().x() + "/" + e.pos().y();
+ if ((e.state() & QMouseEvent.LeftButton) != 0)
+ s += " (down)";
+ setText(s);
+}
+
+protected void mouseReleaseEvent( QMouseEvent e){
+ if (rect().contains( e.pos() ) || moves > 5)
+ close();
+}
+
+protected void closeEvent( QCloseEvent e ){
+ e.accept();
+ moves = 0;
+ if (popupParent == null)
+ return;
+
+ // remember that we (as a popup) might recieve the mouse release
+ // event instead of the popupParent. This is due to the fact that
+ // the popupParent popped us up in its mousePressEvent handler. To
+ // avoid the button remaining in pressed state we simply send a
+ // faked mouse button release event to it.
+ QMouseEvent me = new QMouseEvent( QEvent.MouseButtonRelease, new QPoint(0,0), new QPoint(0,0), QMouseEvent.LeftButton, QMouseEvent.NoButton);
+ QApplication.sendEvent( popupParent, me );
+}
+
+void popup( QWidget parent) {
+ popupParent = parent;
+ setText("Move the mouse!");
+ if (popupParent != null)
+ move( popupParent.mapToGlobal( popupParent.rect().bottomLeft() ) );
+ show();
+}
+
+}
+
+
+public static void main(String[] args)
+{
+ QApplication a = new QApplication( args );
+
+ Frame frame = new Frame();
+ frame.setCaption("Qt Example - Custom Popups");
+ a.setMainWidget(frame);
+ frame.show();
+ a.exec();
+ return;
+}
+
+ static {
+ qtjava.initialize();
+ }
+}