diff options
Diffstat (limited to 'odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/ViewContainer.java')
-rw-r--r-- | odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/ViewContainer.java | 269 |
1 files changed, 0 insertions, 269 deletions
diff --git a/odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/ViewContainer.java b/odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/ViewContainer.java deleted file mode 100644 index 02f68a05..00000000 --- a/odk/examples/DevelopersGuide/OfficeDev/DesktopEnvironment/ViewContainer.java +++ /dev/null @@ -1,269 +0,0 @@ -/************************************************************************* - * - * The Contents of this file are made available subject to the terms of - * the BSD license. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Sun Microsystems, Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE - * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - *************************************************************************/ - -// __________ Imports __________ - -import com.sun.star.uno.UnoRuntime; - -import java.lang.*; -import java.util.*; - -// __________ Implementation __________ - -/** - * It's implement a static container which hold - * all opened documents and her views alive. - * It's possible to register/deregister such views, - * to get information about these and it provides - * some global functionality - like termination of - * this demo application. - * - * @author Andreas Schlüns - * @created 01.03.2002 08:42 - */ -public class ViewContainer extends Thread -{ - // ____________________ - - /** - * provides a singleton view container - * Neccessary for terminate(9 functionality to be able - * to call Runtime.runFinilization(). - * - * @return a reference to the singleton ViewContainer instance - */ - public static synchronized ViewContainer getGlobalContainer() - { - if (maSingleton==null) - maSingleton=new ViewContainer(); - return maSingleton; - } - - // ____________________ - - /** - * ctor - * It's private - because nobody should create any instance - * expect the only global one, which wil be created by ourself! - */ - private ViewContainer() - { - mlViews = new Vector(); - mlListener = new Vector(); - mbShutdownActive = false ; - Runtime.getRuntime().addShutdownHook(this); - } - - // ____________________ - - /** - * This register a new view inside this global container - * (if it doesnt already exist). - * - * @param aView view which whish to be registered inside this container - */ - public void addView(Object aView) - { - synchronized(mlViews) - { - if(mlViews.contains(aView)==false) - mlViews.add(aView); - } - } - - // ____________________ - - /** - * This deregister a view from this global container. - * Normaly it should be the last reference to the view - * and her finalize() method should be called. - * If last view will be closed here - we terminate these - * java application too. Because there is no further - * visible frame anymore. - * - * @param aView - * view object which wish to be deregistered - */ - public void removeView(Object aView) - { - int nViewCount = 0; - synchronized(mlViews) - { - if(mlViews.contains(aView)==true) - mlViews.remove(aView); - - nViewCount = mlViews.size(); - - if (nViewCount<1) - mlViews = null; - } - // If this view is a registered shutdown listener on this view container - // too, we must call his interface and forget him as possible listener. - // It's neccessary to guarantee his dead ... - boolean bShutdownView = false; - synchronized(mlListener) - { - bShutdownView = mlListener.contains(aView); - if (bShutdownView==true) - mlListener.remove(aView); - } - if (bShutdownView==true) - ((IShutdownListener)aView).shutdown(); - - // We use a system.exit() to finish the whole application. - // And further we have registered THIS instance as a possible shutdown - // hook at the runtime class. So our run() method will be called. - // Teh our view container should be empty - but - // our listener container can include some references. - // These objects wich to be informed then and release e.g. some - // remote references. - if (nViewCount<1) - { - boolean bNeccessary = false; - synchronized(this) - { - bNeccessary = ! mbShutdownActive; - } - if (bNeccessary==true) - { - System.out.println("call exit(0)!"); - System.exit(0); - } - } - } - - // ____________________ - - /** - * add/remove listener for possibe shutdown events - */ - public void addListener( IShutdownListener rListener ) - { - synchronized(mlListener) - { - if ( ! mlListener.contains(rListener) ) - mlListener.add(rListener); - } - } - - // ____________________ - - public void removeListener( IShutdownListener rListener ) - { - synchronized(mlListener) - { - if ( mlListener.contains(rListener) ) - mlListener.remove(rListener); - } - } - - // ____________________ - - /** - * Is called from current runtime system of the java machine - * on shutdown. We inform all current registered listener and - * views. They should deinitialize her internal things then. - */ - public void run() - { - synchronized(this) - { - if (mbShutdownActive) - return; - mbShutdownActive=true; - } - - while( true ) - { - IShutdownListener aListener = null; - synchronized(mlListener) - { - try{ - aListener = (IShutdownListener)mlListener.firstElement(); - } catch(java.util.NoSuchElementException exEmpty) {} - } - if (aListener==null) - break; - - aListener.shutdown(); - // May this listener has dergeistered himself. - // But if not we must do it for him. Our own - // method "removeListener()" ignore requests for - // already gone listener objects. - removeListener(aListener); - } - - if (mlViews!=null) - { - synchronized(mlViews) - { - mlViews.clear(); - mlViews = null; - } - } - - if (mlListener!=null) - { - synchronized(mlListener) - { - mlListener.clear(); - mlListener = null; - } - } - } - - // ____________________ - - /** - * @const BASICNAME it's used to create uinque names for all regieterd views - */ - private static final String BASICNAME = "Document View "; - - // ____________________ - - /** - * @member mbInplace indicates using of inplace office frames instead of outplace ones - * @member maSingleton singleton instance of this view container - * @member mlViews list of all currently registered document views - * @member mlListener list of all currently registered shutdown listener - * @member mbShutdownActive if this shutdown hook already was started it's not a good idea to - * call System.exit() again for other conditions. - * We supress it by using this variable! - */ - public static boolean mbInplace = false ; - private static ViewContainer maSingleton = null ; - private Vector mlViews ; - private Vector mlListener ; - private boolean mbShutdownActive ; -} |