/* * MICO --- a free CORBA implementation * Copyright (C) 1997 Kay Roemer & Arno Puder * * This program 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 program 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 program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Send comments and/or bug reports to: * mico@informatik.uni-frankfurt.de */ import java.util.*; import java.awt.*; import java.awt.event.*; import java.applet.Applet; import GlobalVars; import CGEditor; import IRBrowser; import Proxy; import CGTemplates; import EntryBox; import DIIFrame; import IRFrame; public class DII extends Applet implements Runnable, ActionListener { private volatile boolean pleaseCreate; private Thread windowThread; private DIIFrame frame; private Label label; private Button button; public void init () { String version = System.getProperty ("java.version"); GlobalVars.applet = this; GlobalVars.serverhost = getCodeBase().getHost(); pleaseCreate = false; windowThread = null; frame = null; setLayout(new GridLayout(2,0)); add (button = new Button ("Start IR browser")); add (label = new Label ("", Label.CENTER)); button.addActionListener( this ); validate (); } public void start () { if (windowThread == null) { windowThread = new Thread (this, "window thread"); windowThread.start (); } } public void stop () { /* * XXX the DCE window manager causes stop() to be called when the * user leaves the virtual root where the applet runs... if (windowThread != null) { label.setText ("applet stopped"); windowThread.stop (); windowThread = null; GlobalVars.CloseAll (); } */ } public synchronized void run () { while (windowThread != null) { while (pleaseCreate == false) { try { wait (); } catch (InterruptedException e) {} } try { button.setEnabled( false ); IRFrame irframe = new IRFrame (); irframe.pack(); irframe.init(); irframe.show(); label.setText (""); while (pleaseCreate == true) { try { wait (); } catch (InterruptedException e) {} } } catch (DIIException e) { label.setText (e.getErrMsg()); pleaseCreate = false; } button.setEnabled( true ); } } public synchronized void actionPerformed( ActionEvent ev ) { if (ev.getSource() == button) { pleaseCreate = true; label.setText ("loading applet, please wait ..."); notify (); } } public synchronized void FrameClosed () { pleaseCreate = false; notify (); } }