001    /** =====================================================================       
002    *
003    *  File Name : $Id: BusyIndicator.java,v 1.2 2007/08/17 14:21:56 cb Exp $
004    *
005    *  Description
006    *  -----------
007    *
008    *  See javadoc comment 
009    * 
010    *  =====================================================================
011    *
012    *   @Author : Craige Bevil 
013    *             Control Software Group
014    *             Isaac Newton Group of Telescopes
015    *
016    *  =====================================================================
017    *
018    *     Modification Log
019    *
020    *     Vers         Date        Author       Reason
021    *     ----         ----        ------       ------
022    *      1                       C.Bevil      First Release
023    *
024    *     Commissioning Notes
025    *     -------------------
026    *
027    *     None
028    *     
029    *  =====================================================================
030    *
031    *     @Version   : $Id: BusyIndicator.java,v 1.2 2007/08/17 14:21:56 cb Exp $
032    *
033    *     @Author    : $Author: cb $
034    *
035    *     Header     : $Header: /opt/INGsrc/src/CVS/softproj/FaultDatabase/src/FaultDatabase/FaultDatabase/src/GWTApplication/client/BusyIndicator.java,v 1.2 2007/08/17 14:21:56 cb Exp $
036    *
037    *     Log        : $Log: BusyIndicator.java,v $
038    *     Log        : Revision 1.2  2007/08/17 14:21:56  cb
039    *     Log        : Removed dead code, changed the position of it's display
040    *     Log        :
041    *     Log        : Revision 1.1  2007/08/08 16:17:05  cb
042    *     Log        : First version
043    *     Log        :
044    *
045    * =====================================================================*/
046    
047    
048    package GWTApplication.client;
049    
050    import com.google.gwt.core.client.GWT;
051    import com.google.gwt.user.client.*;
052    import com.google.gwt.user.client.rpc.*;
053    import com.google.gwt.user.client.ui.*;
054    import com.google.gwt.user.client.ui.DockPanel.*;
055    
056    import com.google.gwt.user.client.ui.FlexTable.*;
057    import java.util.*;
058    
059    /**
060     * This class will be used to display a red banner in the top right of
061     * the window to indicate to the user that the
062     * application is busy doing something. 
063     * @author Craige Bevil
064     * @version $Id: BusyIndicator.java,v 1.2 2007/08/17 14:21:56 cb Exp $
065     */
066    
067    public class BusyIndicator  {
068        
069        /**
070         * This is the popup panel which will be used to indicate to the
071         * user that we are busy. We make the dialog modal with no
072         * autohide. 
073         */
074        
075        final private PopupPanel busyPanel = new PopupPanel();
076    
077        /**
078         * This class will be used for internationalization so that we can
079         * flick between the locales of English and Spanish.
080         */
081    
082        private InternationalizationConstants internationalizationConstants = (InternationalizationConstants) GWT.create(InternationalizationConstants.class);
083    
084        /**
085         * This is the label which is used to display the message
086         */
087        
088        final Label busyLabel = new Label(internationalizationConstants.busy());
089                                    
090        /**
091         * Constructor 
092         */
093        
094        BusyIndicator () {
095    
096            busyPanel.add(busyLabel);
097            busyPanel.setStyleName("busyDialog");   
098        }
099    
100        /**
101         * This is used to show that we are busy or not. It pops up a red
102         * box in the top right of the display indicating that we are
103         * currently busy doing something.
104         * @param showBusy True if we are to display a red box indicating
105         * that we are doing something.
106         */
107        
108        void showBusy (final boolean showBusy) {
109            showBusy(showBusy,internationalizationConstants.busy());
110        }
111                                          
112        /**
113         * This is used to show that we are busy or not. It pops up a red
114         * box in the top right of the display indicating that we are
115         * currently busy doing something.
116         * @param showBusy True if we are to display a red box indicating
117         * that we are doing something.
118         * @param message Message to be displayed 
119         */
120        
121        void showBusy (final boolean showBusy,final String message) {
122    
123            if (showBusy) {
124                busyLabel.setText(message);
125                busyPanel.setWidth("4cm");
126                busyPanel.setPopupPosition(Window.getClientWidth() - 90,0);     
127                busyPanel.show();
128                busyPanel.setVisible(true);
129            } else {
130                busyPanel.hide();
131            }
132        } 
133    }