1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 package complex.loadAllDocuments;
24 
25 // __________ Imports __________
26 
27 // structs, const, ...
28 import com.sun.star.beans.PropertyValue;
29 
30 // exceptions
31 import com.sun.star.uno.Exception;
32 import com.sun.star.uno.RuntimeException;
33 
34 // interfaces
35 import com.sun.star.task.XStatusIndicator;
36 
37 // helper
38 import com.sun.star.uno.UnoRuntime;
39 
40 // others
41 //import java.lang.*;
42 
43 // __________ Implementation __________
44 
45 /**
46  * Implemets a simple status indicator, which
47  * provide informations about state of a load request.
48  * It can be used as an argument e.g. for loadComponentFromURL().
49  */
50 public class StatusIndicator implements com.sun.star.task.XStatusIndicator
51 {
52     // ____________________
53 
54     /**
55      * @const SHOWSTATUS_NO         don't show the status - but save information about using of this indicator object
56      * @const SHOWSTATUS_LOG        the possible set protocol object will be used (it covers STDOUT, STDERR automaticly too)
57      * @const SHOWSTATUS_DIALOG     the status will be shown inside a java dialog
58      * @const SHOWSTATUS_LINK       the status will be notified to interested listener (one listener only!)
59      */
60     public static final int SHOWSTATUS_NO       =   0;
61     public static final int SHOWSTATUS_LOG      =   1;
62     public static final int SHOWSTATUS_DIALOG   =   4;
63     public static final int SHOWSTATUS_LINK     =   8;
64 
65     // ____________________
66 
67     /**
68      * @member m_sText      text, which describe the current status
69      * @member m_nRange     max value for any progress
70      * @member m_nValue     the progress value
71      * @member m_nOut       regulate, how the status will be shown
72      * @member m_aProtocol  used for logging and transport information about used interface of this object
73      */
74     private String          m_sText     ;
75     private int             m_nRange    ;
76     private int             m_nValue    ;
77     private int             m_nOut      ;
78 //    private Protocol        m_aProtocol ;
79     private boolean         m_bWasUsed  ;
80 
81     // ____________________
82 
83     /**
84      * ctor
85      * It's initialize an object of this class with default values.
86      */
87     public StatusIndicator( int nOut)
88     {
89         m_sText     = new String()  ;
90         m_nRange    = 100           ;
91         m_nValue    = 0             ;
92         m_nOut      = nOut          ;
93         //m_aProtocol = aProtocol     ;
94         m_bWasUsed  = false;
95 //        aProtocol.resetUsingState();
96     }
97 
98     // ____________________
99 
100     /**
101      * It starts the progress and set the initial text and range.
102      *
103      * @param sText
104      *          the initial text for showing
105      *
106      * @param nRange
107      *          the new range for following progress
108      */
109     public void start( /*IN*/String sText, /*IN*/int nRange )
110     {
111         synchronized(this)
112         {
113             //m_aProtocol.log("start("+sText+","+nRange+")\n");
114             m_bWasUsed = true;
115 //            m_aProtocol.itWasUsed();
116 
117             m_sText  = sText ;
118             m_nRange = nRange;
119             m_nValue = 0     ;
120         }
121         impl_show();
122     }
123 
124     // ____________________
125 
126     /**
127      * Finish the progress and reset internal members.
128      */
129     public void end()
130     {
131         synchronized(this)
132         {
133             //m_aProtocol.log("end()\n");
134             m_bWasUsed = true;
135 //            m_aProtocol.itWasUsed();
136 
137             m_sText  = new String();
138             m_nRange = 100;
139             m_nValue = 0;
140         }
141         impl_show();
142     }
143 
144     // ____________________
145 
146     /**
147      * Set the new description text.
148      *
149      * @param sText
150      *          the new text for showing
151      */
152     public void setText( /*IN*/String sText )
153     {
154         synchronized(this)
155         {
156             //m_aProtocol.log("setText("+sText+")\n");
157             m_bWasUsed = true;
158 //            m_aProtocol.itWasUsed();
159 
160             m_sText = sText;
161         }
162         impl_show();
163     }
164 
165     // ____________________
166 
167     /**
168      * Set the new progress value.
169      *
170      * @param nValue
171      *          the new progress value
172      *          Must fit the range!
173      */
174     public void setValue( /*IN*/int nValue )
175     {
176         synchronized(this)
177         {
178             //m_aProtocol.log("setValue("+nValue+")\n");
179             m_bWasUsed = true;
180 //            m_aProtocol.itWasUsed();
181 
182             if (nValue<=m_nRange)
183                 m_nValue = nValue;
184         }
185         impl_show();
186     }
187 
188     // ____________________
189 
190     /**
191      * Reset text and progress value to her defaults.
192      */
193     public void reset()
194     {
195         synchronized(this)
196         {
197             //m_aProtocol.log("reset()\n");
198             m_bWasUsed = true;
199 //            m_aProtocol.itWasUsed();
200 
201             m_sText  = new String();
202             m_nValue = 0;
203         }
204         impl_show();
205     }
206 
207     // ____________________
208 
209     /**
210      * Internal helper to show the status.
211      * Currently it's implement as normal text out on stdout.
212      * But of course other thimngs are possible here too.
213      * e.g. a dialog
214      */
215     private void impl_show()
216     {
217 /*        synchronized(this)
218         {
219             if ((m_nOut & SHOWSTATUS_LOG) == SHOWSTATUS_LOG)
220                 //m_aProtocol.log("\t["+m_nValue+"/"+m_nRange+"] "+m_sText+"\n");
221 
222             //if ((m_nOut & SHOWSTATUS_DIALOG) == SHOWSTATUS_DIALOG)
223                 // not supported yet!
224 
225             //if ((m_nOut & SHOWSTATUS_LINK) == SHOWSTATUS_LINK)
226                 // not supported yet!
227         } */
228     }
229 
230     public boolean wasUsed() {
231         return m_bWasUsed;
232     }
233 }
234