Revision: 4195
http://tigervnc.svn.sourceforge.net/tigervnc/?rev=4195&view=rev
Author: atkac
Date: 2010-11-11 14:32:24 +0000 (Thu, 11 Nov 2010)
Log Message:
-----------
[Development] java: Add simple Message Box implementation. (Martin Koegler)
Modified Paths:
--------------
trunk/java/src/com/tigervnc/vncviewer/Makefile
Added Paths:
-----------
trunk/java/src/com/tigervnc/vncviewer/Dialog.java
trunk/java/src/com/tigervnc/vncviewer/MessageBox.java
Added: trunk/java/src/com/tigervnc/vncviewer/Dialog.java
===================================================================
--- trunk/java/src/com/tigervnc/vncviewer/Dialog.java
(rev 0)
+++ trunk/java/src/com/tigervnc/vncviewer/Dialog.java 2010-11-11 14:32:24 UTC
(rev 4195)
@@ -0,0 +1,80 @@
+/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ */
+//
+// This Dialog class implements a pop-up dialog. This is needed because
+// apparently you can't use the standard AWT Dialog from within an applet. The
+// dialog can be made visible by calling its showDialog() method. Dialogs can
+// be modal or non-modal. For a modal dialog box, the showDialog() method must
+// be called from a thread other than the GUI thread, and it only returns when
+// the dialog box has been dismissed. For a non-modal dialog box, the
+// showDialog() method returns immediately.
+
+package com.tigervnc.vncviewer;
+
+import java.awt.*;
+
+class Dialog extends Frame {
+
+ public Dialog(boolean modal_) { modal = modal_; }
+
+ public boolean showDialog() {
+ ok = false;
+ done = false;
+ initDialog();
+ Dimension dpySize = getToolkit().getScreenSize();
+ Dimension mySize = getSize();
+ int x = (dpySize.width - mySize.width) / 2;
+ int y = (dpySize.height - mySize.height) / 2;
+ setLocation(x, y);
+ show();
+ if (!modal) return true;
+ synchronized(this) {
+ try {
+ while (!done)
+ wait();
+ } catch (InterruptedException e) {
+ }
+ }
+ return ok;
+ }
+
+ public void endDialog() {
+ done = true;
+ hide();
+ if (modal) {
+ synchronized (this) {
+ notify();
+ }
+ }
+ }
+
+ // initDialog() can be overridden in a derived class. Typically it is used
+ // to make sure that checkboxes have the right state, etc.
+ public void initDialog() {}
+
+ public boolean handleEvent(Event event) {
+ if (event.id == Event.WINDOW_DESTROY) {
+ ok = false;
+ endDialog();
+ }
+ return super.handleEvent(event);
+ }
+
+ protected boolean ok, done;
+ boolean modal;
+}
Modified: trunk/java/src/com/tigervnc/vncviewer/Makefile
===================================================================
--- trunk/java/src/com/tigervnc/vncviewer/Makefile 2010-11-11 14:29:35 UTC
(rev 4194)
+++ trunk/java/src/com/tigervnc/vncviewer/Makefile 2010-11-11 14:32:24 UTC
(rev 4195)
@@ -18,7 +18,8 @@
RecordingFrame.class SessionRecorder.class \
SocketFactory.class HTTPConnectSocketFactory.class \
HTTPConnectSocket.class ReloginPanel.class \
- InStream.class MemInStream.class ZlibInStream.class
+ InStream.class MemInStream.class ZlibInStream.class \
+ Dialog.class MessageBox.class
SOURCES = VncViewer.java RfbProto.java AuthPanel.java VncCanvas.java \
VncCanvas2.java \
@@ -27,7 +28,8 @@
RecordingFrame.java SessionRecorder.java \
SocketFactory.java HTTPConnectSocketFactory.java \
HTTPConnectSocket.java ReloginPanel.java \
- InStream.java MemInStream.java ZlibInStream.java
+ InStream.java MemInStream.java ZlibInStream.java \
+ Dialog.java MessageBox.java
all: $(CLASSES) $(ARCHIVE)
Added: trunk/java/src/com/tigervnc/vncviewer/MessageBox.java
===================================================================
--- trunk/java/src/com/tigervnc/vncviewer/MessageBox.java
(rev 0)
+++ trunk/java/src/com/tigervnc/vncviewer/MessageBox.java 2010-11-11
14:32:24 UTC (rev 4195)
@@ -0,0 +1,82 @@
+/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ */
+
+package com.tigervnc.vncviewer;
+
+import java.awt.*;
+
+public class MessageBox extends com.tigervnc.vncviewer.Dialog {
+
+ public static final int MB_OK = 0;
+ public static final int MB_OKAYCANCEL = 1;
+ public static final int MB_YESNO = 2;
+
+ public MessageBox(String msg, int flags) {
+ super(true);
+ GridLayout g = new GridLayout(0,1);
+ setLayout(g);
+ while (true) {
+ int i = msg.indexOf('\n');
+ int j = (i==-1) ? msg.length() : i;
+ add(new Label(msg.substring(0, j)));
+ if (i==-1) break;
+ msg = msg.substring(j+1);
+ }
+ Panel p2 = new Panel();
+ switch (flags & 3) {
+ case MB_OKAYCANCEL:
+ cancelButton = new Button("Cancel");
+ // No break
+ case MB_OK:
+ okButton = new Button("OK");
+ break;
+ case MB_YESNO:
+ okButton = new Button("Yes");
+ cancelButton = new Button("No");
+ break;
+ }
+ if (okButton != null) p2.add(okButton);
+ if (cancelButton != null) p2.add(cancelButton);
+ add("South", p2);
+ pack();
+ showDialog();
+ }
+
+ public MessageBox(String msg) {
+ this(msg, MB_OK);
+ }
+
+
+ public boolean action(Event event, Object arg) {
+ if (event.target == okButton) {
+ ok = true;
+ endDialog();
+ } else if (event.target == cancelButton) {
+ ok = false;
+ endDialog();
+ }
+ return true;
+ }
+
+ Button okButton, cancelButton;
+
+ public boolean result() {
+ return ok;
+ }
+
+}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Centralized Desktop Delivery: Dell and VMware Reference Architecture
Simplifying enterprise desktop deployment and management using
Dell EqualLogic storage and VMware View: A highly scalable, end-to-end
client virtualization framework. Read more!
http://p.sf.net/sfu/dell-eql-dev2dev
_______________________________________________
Tigervnc-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tigervnc-commits