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