summaryrefslogtreecommitdiffstats
path: root/qtjava/javalib/examples/mdi/MDIWindow.java
diff options
context:
space:
mode:
Diffstat (limited to 'qtjava/javalib/examples/mdi/MDIWindow.java')
-rw-r--r--qtjava/javalib/examples/mdi/MDIWindow.java135
1 files changed, 135 insertions, 0 deletions
diff --git a/qtjava/javalib/examples/mdi/MDIWindow.java b/qtjava/javalib/examples/mdi/MDIWindow.java
new file mode 100644
index 00000000..ef5efd64
--- /dev/null
+++ b/qtjava/javalib/examples/mdi/MDIWindow.java
@@ -0,0 +1,135 @@
+/***************************************************************************
+* $Id$
+**
+* Copyright (C) 1992-2000 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 MDIWindow extends QMainWindow
+{
+
+private QMultiLineEdit medit;
+private QMovie mmovie;
+private String filename = "";
+
+MDIWindow( QWidget parent, String name, int wflags )
+{
+ super( parent, name, wflags );
+ mmovie = null;
+ medit = new QMultiLineEdit( this );
+ setFocusProxy( medit );
+ setCentralWidget( medit );
+}
+
+
+void load( String fn )
+{
+ filename = fn;
+ QFile f = new QFile( filename );
+ if ( !f.open( QIODevice.IO_ReadOnly ) )
+ return;
+
+ if(fn.indexOf(".gif") != -1) {
+ QWidget tmp=new QWidget(this);
+ setFocusProxy(tmp);
+ setCentralWidget(tmp);
+ medit.hide();
+ QMovie qm=new QMovie(fn);
+// qm.setDisplayWidget(tmp);
+ tmp.setBackgroundMode(QWidget.NoBackground);
+ tmp.show();
+ mmovie=qm;
+ } else {
+ mmovie = null;
+
+ QTextStream t = new QTextStream(f);
+ String s = t.read();
+ medit.setText( s );
+ f.close();
+
+
+ }
+ setCaption( filename );
+ emit("message", "Loaded document " + filename, 2000 );
+}
+
+void save()
+{
+ if ( filename.equals("") ) {
+ saveAs();
+ return;
+ }
+
+ String text = medit.text();
+ QFile f = new QFile( filename );
+ if ( !f.open( QIODevice.IO_WriteOnly ) ) {
+ emit("message", "Could not write to " + filename,
+ 2000 );
+ return;
+ }
+
+ QTextStream t = new QTextStream( f );
+ t.writeRawBytes( text, text.length() );
+ f.close();
+
+ setCaption( filename );
+
+ emit("message", "File " + filename + " saved", 2000 );
+}
+
+void saveAs()
+{
+ String fn = QFileDialog.getSaveFileName( filename, "", this );
+ if ( !fn.equals("") ) {
+ filename = fn;
+ save();
+ } else {
+ emit("message", "Saving aborted", 2000 );
+ }
+}
+
+void print( QPrinter printer)
+{
+ int Margin = 10;
+ int pageNo = 1;
+
+ if ( printer.setup(this) ) { // printer dialog
+ emit("message", "Printing...", 0 );
+ QPainter p = new QPainter();
+ if ( !p.begin( printer ) )
+ return; // paint on printer
+ p.setFont( medit.font() );
+ int yPos = 0; // y position for each line
+ QFontMetrics fm = p.fontMetrics();
+ QPaintDeviceMetrics metrics = new QPaintDeviceMetrics( printer ); // need width/height
+ // of printer surface
+ for( int i = 0 ; i < medit.numLines() ; i++ ) {
+ if ( Margin + yPos > metrics.height() - Margin ) {
+ String msg = "Printing (page ";
+ msg += (++pageNo);
+ msg += ")...";
+ emit("message", msg, 0 );
+ printer.newPage(); // no more room on this page
+ yPos = 0; // back to top of page
+ }
+ p.drawText( Margin, Margin + yPos,
+ metrics.width(), fm.lineSpacing(),
+ ExpandTabs | DontClip,
+ medit.textLine( i ) );
+ yPos = yPos + fm.lineSpacing();
+ }
+ p.end(); // send job to printer
+ emit("message", "Printing completed", 2000 );
+ } else {
+ emit("message", "Printing aborted", 2000 );
+ }
+}
+
+}
+