You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdebindings/qtjava/javalib/examples/popup/Frame.java

167 lines
4.4 KiB

/***************************************************************************
* $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.trinitydesktop.qt.*;
class Frame extends TQFrame
{
private TQPushButton button1;
private TQPushButton button2;
private TQFrame popup1;
private FancyPopup popup2;
Frame()
{
this(null, null);
}
Frame(TQWidget parent, String name)
{
super(parent, name);
button1 = new TQPushButton("Simple Popup", this);
connect ( button1, SIGNAL(" clicked()"), SLOT(" button1Clicked()") );
button2 = new TQPushButton("Fancy Popup", this);
connect ( button2, SIGNAL(" pressed()"), SLOT(" button2Pressed()") );
TQBoxLayout l = new TQHBoxLayout( 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 TQFrame( this ,null, WType_Popup);
popup1.setFrameStyle( WinPanel|Raised );
popup1.resize(150,100);
TQLineEdit tmpE = new TQLineEdit( popup1 );
connect( tmpE, SIGNAL(" returnPressed()"), popup1, SLOT(" hide()") );
tmpE.setGeometry(10,10, 130, 30);
tmpE.setFocus();
TQPushButton tmpB = new TQPushButton("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 TQLineEdit( 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 TQLabel
{
private TQWidget popupParent;
private int moves;
FancyPopup( TQWidget parent )
{
this(parent, null);
}
FancyPopup( TQWidget parent, String name )
{
super( parent, name, WType_Popup );
setFrameStyle( WinPanel|Raised );
setAlignment( AlignCenter );
resize(150,100);
moves = 0;
setMouseTracking( true );
}
protected void mouseMoveEvent( TQMouseEvent e){
moves++;
String s = e.pos().x() + "/" + e.pos().y();
if ((e.state() & TQMouseEvent.LeftButton) != 0)
s += " (down)";
setText(s);
}
protected void mouseReleaseEvent( TQMouseEvent e){
if (rect().contains( e.pos() ) || moves > 5)
close();
}
protected void closeEvent( TQCloseEvent 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.
TQMouseEvent me = new TQMouseEvent( TQEvent.MouseButtonRelease, new TQPoint(0,0), new TQPoint(0,0), TQMouseEvent.LeftButton, TQMouseEvent.NoButton);
TQApplication.sendEvent( popupParent, me );
}
void popup( TQWidget parent) {
popupParent = parent;
setText("Move the mouse!");
if (popupParent != null)
move( popupParent.mapToGlobal( popupParent.rect().bottomLeft() ) );
show();
}
}
public static void main(String[] args)
{
TQApplication a = new TQApplication( args );
Frame frame = new Frame();
frame.setCaption("Qt Example - Custom Popups");
a.setMainWidget(frame);
frame.show();
a.exec();
return;
}
static {
qtjava.initialize();
}
}