001    /** =====================================================================       
002    *
003    *  File Name : $Id: FaultAddition.java,v 1.6 2008/01/15 11:08:16 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: FaultAddition.java,v 1.6 2008/01/15 11:08:16 cb Exp $
032    *
033    *     @Author    : $Author: cb $
034    *
035    *     Header     : $Header: /opt/INGsrc/src/CVS/softproj/FaultDatabase/src/FaultDatabase/FaultDatabase/src/GWTApplication/client/FaultAddition.java,v 1.6 2008/01/15 11:08:16 cb Exp $
036    *
037    *     Log        : $Log: FaultAddition.java,v $
038    *     Log        : Revision 1.6  2008/01/15 11:08:16  cb
039    *     Log        : Ran through PMD and sorted out the javadoc so that we could export the
040    *     Log        : javadoc to the javadoc repository.
041    *     Log        :
042    *     Log        : Revision 1.5  2007/08/17 14:23:34  cb
043    *     Log        : Removed the submit & reset buttons
044    *     Log        :
045    *     Log        : Revision 1.4  2007/08/17 07:25:20  cb
046    *     Log        : Updated after PMD session
047    *     Log        :
048    *     Log        : Revision 1.3  2007/08/01 13:00:08  cb
049    *     Log        : First prototype after import
050    *     Log        :
051    *     Log        : Revision 1.2  2007/07/13 10:54:09  cb
052    *     Log        : Complete interface prototype
053    *     Log        :
054    *     Log        : Revision 1.1.1.1  2007/06/01 08:33:26  cb
055    *     Log        : Imported using TkCVS
056    *     Log        :
057    *
058    * =====================================================================*/
059    
060    
061    package GWTApplication.client;
062    
063    import com.google.gwt.user.client.*;
064    import com.google.gwt.user.client.rpc.*;
065    import com.google.gwt.user.client.ui.*;
066    import com.google.gwt.user.client.ui.FlexTable.*;
067    
068    import java.util.*;
069    
070    // Import the rich text widget 
071    
072    import com.jpavel.gwt.wysiwyg.client.*;
073    
074    
075    /**
076     * This is a base class will be used to generate a tab at the bottom
077     * of the fault modification form to allow them to create additions to
078     * a fault. This is essentially a base class for the classes which can
079     * be used to create workarounds, solutions and comments which can 
080     * be added to a fault.
081     * <P>
082     * The class makes extensive use of the google web toolkit.
083     * @author Craige Bevil
084     * @version $Id: FaultAddition.java,v 1.6 2008/01/15 11:08:16 cb Exp $
085     */
086    
087    abstract class FaultAddition extends FaultDBForm  {
088    
089        /**
090         * This is a listener which is called when we save the fault
091         */
092        
093        protected  FaultUpdatedListener faultUpdateListener;
094            
095        /**
096         * This is the fault number which is associated with this fault
097         * addition
098         */
099    
100        protected int FaultNumber;
101    
102        /**
103         * This is the table into which we will pack all of these widgets
104         * which will be used to enter the data
105         */
106        
107        protected FlexTable FaultAdditionTable = new FlexTable();
108    
109        /**
110         * This is the text area into which the user will enter the
111         * details of the text addition 
112         */
113        
114        protected Editor FaultAdditionText = new Editor();
115        
116        /**
117         * The user will enter the name of the person which made the
118         * fault addition into this field
119         */
120        
121        protected LabelListBox EnteredBy = new LabelListBox(LabelListBox.HORIZONTAL_ALIGNMENT);
122    
123        /**
124         * The user will enter the amount of time spent on this addition
125         * to the fault
126         */
127        
128        protected LabelTextBox TimeSpent = new LabelTextBox(LabelTextBox.HORIZONTAL);
129    
130        /**
131         * The details of the user authentication 
132         */
133        
134        protected AuthenticationDetails userAuthentication;    
135            
136        /**
137         * Constructor for the fault addition tab in the modify fault form
138         * @param FaultNumber This is the number of the defect report
139         * which this fault addition is associated with.
140         * @param svc A conduit to the servlet container
141         * @param internationalizationConstants This is used for
142         * internationalization so we can display the interface in English
143         * and Spanish 
144         * @param userAuthentication The details of the user
145         * authentication. 
146         * @param faultUpdateListener This is a listener object which is
147         * to be informed when the fault changes.
148         */
149        
150        FaultAddition (final int FaultNumber,
151                       final FaultServiceAsync svc,
152                       final InternationalizationConstants internationalizationConstants,
153                       final AuthenticationDetails userAuthentication,
154                       final FaultUpdatedListener faultUpdateListener) {
155    
156            this.svc                           = svc;
157            this.internationalizationConstants = internationalizationConstants;
158            this.FaultNumber                   = FaultNumber;
159            this.userAuthentication            = userAuthentication;
160            this.faultUpdateListener = faultUpdateListener;
161            
162            initWidget(FaultAdditionTable);
163                
164            FlexCellFormatter formatter = (FlexCellFormatter)FaultAdditionTable.getCellFormatter();
165            
166            FaultAdditionTable.setWidget(0,0,FaultAdditionText);
167            formatter.setColSpan(0,0,2);
168    
169            FaultAdditionText.setWidth("100%");
170            FaultAdditionText.setHeight("200px");
171                
172            EnteredBy.label.setText(internationalizationConstants.enteredBy());
173            EnteredBy.setWidth("4cm","5cm");
174            EnteredBy.listBox.setVisibleItemCount(1);
175    
176            fillListBoxWithStaffMembers(EnteredBy.listBox,userAuthentication.UserEmailAddress,false);
177    
178            TimeSpent.label.setText(internationalizationConstants.timeSpent());
179            TimeSpent.setWidth("4cm","5cm");
180            TimeSpent.textBox.setText("00:00");
181    
182            FaultAdditionTable.setWidget(1,0,EnteredBy);
183            FaultAdditionTable.setWidget(1,1,TimeSpent);
184                    
185        }
186        
187        /**
188         * An abstract method which should be provided by the subclass
189         * which will allow for the fields in the form to be initialised
190         * to their default values. 
191         */
192        
193        abstract void setFormDefaultValues();
194        
195        /**
196         * Save the contents of the fault addition form to the database.
197         */
198        
199        abstract void saveFormContentsToDatabase ();
200        
201        /**
202         * Reset the contents of the fault addition form to what is
203         * current stored in the database for this fault addition. 
204         */
205        
206        abstract void resetFormToDefaultValues ();       
207    }
208