Create progress bar
Hi. Do you know how to create a progress bar ?
In my JSP, i'm going to show some numbers and a progress bar telling the user how many % of a job (s)he has done. I'm doing a regular refresh and getting the %-number from a backend-method.
I'll be very thankful getting some advice.
This is just one of those posts that is just asking for some sarcastic remarks... I'll pass this time.
Advice about what? Only post here if you have a problem you can't solve yourself. If you check the other posts, another one about this very same topic has some replies, I suggest checking it out.
Similar Messages
-
How to create progress bar?
pls,can anyone tell me? how to create progress bar?
thanks,
screen410099it is well documented how to create progressbars on page 173 in Solutions.pdf
also you can find sample code in InDesign SDK\sources\sdksamples
Regards
Bartek -
How to create progress bar in web page!!!
Dear,
I do not know how to create progress bar in web page?
Please show me the way to solve it.
Best regards,
HuyGod your lucky/lazy
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import java.util.*;
import java.io.*;
public class ProgressBar extends Applet
private boolean isStandalone = false;
private int width;
private int height;
private double percentComplete;
private double fundsTarget;
private double fundsRaised;
private Properties values;
private String propertiesFile;
private JPanel jPanel1 = new JPanel();
private JProgressBar PB_FUNDS_PROGRESS = new JProgressBar();
private GridLayout gridLayout1 = new GridLayout();
private BorderLayout borderLayout1 = new BorderLayout();
private JPanel jPanel2 = new JPanel();
private JLabel jLabel1 = new JLabel();
private JLabel jLabel2 = new JLabel();
private JLabel jLabel3 = new JLabel();
private GridBagLayout gridBagLayout1 = new GridBagLayout();
private JPanel jPanel3 = new JPanel();
private JLabel jLabel4 = new JLabel();
//Construct the applet
public ProgressBar()
//Initialize the applet
public void init()
try
jbInit();
catch(Exception e)
e.printStackTrace();
//Component initialization
private void jbInit()
throws Exception
fundsTarget = new Double( 100 ).doubleValue();
fundsRaised = new Double( 50 ).doubleValue();
PB_FUNDS_PROGRESS.setBackground(Color.green);
PB_FUNDS_PROGRESS.setForeground(Color.red);
this.setLayout(gridLayout1);
jPanel1.setLayout(borderLayout1);
jPanel2.setLayout(gridBagLayout1);
jPanel1.setBackground(Color.white);
jPanel2.setBackground(Color.white);
jPanel3.setBackground(Color.white);
jLabel2.setBackground(Color.white);
jLabel1.setBackground(Color.white);
jLabel3.setBackground(Color.white);
jLabel4.setText(" ");
jLabel1.setText(" ");
jLabel2.setText(" ");
jLabel3.setText(" ");
this.setBackground(Color.white);
this.add(jPanel1, null);
jPanel1.add(PB_FUNDS_PROGRESS, BorderLayout.CENTER);
jPanel1.add(jPanel2, BorderLayout.SOUTH);
jPanel2.add(jLabel2, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 0, 5, 0), 0, 0));
jPanel2.add(jLabel1, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5, 150, 5, 5), 0, 0));
jPanel2.add(jLabel3, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(6, 5, 4, 150), 0, 0));
jPanel1.add(jPanel3, BorderLayout.NORTH);
jPanel3.add(jLabel4, null);
propertiesFile = this.getCodeBase().getFile().replaceAll("%20", " ")+"funds.properties";
System.out.println("Properties file at " + propertiesFile);
values = new Properties();
try
values.load(new FileInputStream(propertiesFile));
fundsTarget = new Double( values.getProperty("TARGET", "100").toString() ).doubleValue();
fundsRaised = new Double( values.getProperty("RAISED", "50").toString() ).doubleValue();
System.out.println("target: " + fundsTarget + " raised: " + fundsRaised);
catch (IOException ioe)
System.err.println(ioe.getMessage());
percentComplete = (fundsRaised/fundsTarget)*100;
System.out.println(percentComplete);
//Start the applet
public void start()
PB_FUNDS_PROGRESS.setMaximum(new Double(fundsTarget).intValue());
PB_FUNDS_PROGRESS.setMinimum(0);
repaint();
//Stop the applet
public void stop()
public void paint(Graphics g)
Graphics2D g2 = (Graphics2D)g;
PB_FUNDS_PROGRESS.setValue(new Double(fundsRaised).intValue());
String percent = Double.toString(percentComplete).substring(0, 4);
jLabel4.setText("Currently At " + percent + "%");
jLabel1.setText("100%");
jLabel2.setText("50%");
jLabel3.setText("0%");
//Destroy the applet
public void destroy()
public String getAppletInfo()
return "Funds progress applet by A really nice person";
} -
Creating progress bar in oracle forms 6i
Hii
I have a push-button (pb_submit)
when when_button_pressed trigger fired...I have a database main procedure to be called.
inside that procedure i am calling 25 procedures.
and all 25 Procedures will be executed sequencially.
I want to use a Progress bar...
so that user will get to know hw much % completed
if main procedure(total 25 procedures inside) is completed successfully then progress bar should show 100%
like wise if 1 procedure completed then 4 %
if 2 procedure completed then 8 %
total 25 procedure completed then 100%
how to implement this logic.
and if in between 1 procedure failed then progress bar should stop at that incident.
and it should start from dat instant only if again that failed procedure run successfully.
should i post my codes here.ok...here is the codes written in the button(when_button_pressed trigger)
DECLARE
l_Last_Record NUMBER := 0 ;
l_Prg_Process_Id NUMBER ;
l_Prg_Process_Id_1 NUMBER ;
l_Prg_Id VARCHAR2(15) ;
l_Alert_Result VARCHAR2(1) ;
l_Validation_Msg VARCHAR2(500) ;
l_Path VARCHAR2(240) ;
File_Name VARCHAR2(250) ;
l_file_exists BOOLEAN ;
l_file_len NUMBER ;
l_blocksize BINARY_INTEGER;
o_Status VARCHAR2(1) ;
o_User_Selection_Ca1 VARCHAR2(1) ;
o_User_Selection_Ca2 VARCHAR2(1) ;
o_User_Selection_Ca3 VARCHAR2(1) ;
CURSOR C_Validation IS
SELECT Cpv_Validation_Type ,
Cpv_Validation_Input ,
Cpv_Validation_Action ,
Cpv_Validation_Active_Flag
FROM Config_Process_Validation
WHERE Cpv_Program_Id = l_Prg_Id
AND Nvl(Cpv_Validation_Active_Flag, 'N') = 'Y'
ORDER BY Cpv_Validation_Sequence;
BEGIN
SELECT RV_HIGH_VALUE
INTO l_Path
FROM CG_REF_CODES
WHERE Rv_Domain = 'DERV_DATA_FILES'
AND Rv_Low_Value = 'DRV_FILES';
Go_Block('Process');
Last_Record;
l_Last_Record := :System.Cursor_Record;
First_Record;
FOR i IN 1 .. l_Last_Record
LOOP
Go_Record(i);
l_Prg_Id := :Prog_Id;
IF NVL(:Process.Cb_Select,'N') = 'Y' THEN
:Query.Current_Status := 'Current Process: ' || :Process.Prog_Desc;
Synchronize;
--Validate if program is already in running mode or already completed
SELECT NVL(MAX(DECODE(Prg_Status, 'R', 999999999, 'C', Prg_Process_Id)), 0)
INTO l_Prg_Process_Id
FROM Program_Status,
Parameter_Master
WHERE Prg_Dt = Pam_Curr_Dt
AND Prg_Cmp_Id = l_Prg_Id
AND Prg_Exm_Id IN ('ALL', :Query.Exchange)
AND Prg_Status IN ('R', 'C');
IF l_Prg_Process_Id = 999999999 THEN
P_Show_Alert(l_Prg_Id||' Process is already running.','A',l_Alert_Result);
--RAISE Form_Trigger_Failure;
ELSIF l_Prg_Process_Id > 0 AND :Execution_Flag <> 'M' THEN
P_Show_Alert(l_Prg_Id||' Process already run. It can not run twice. ','A',l_Alert_Result);
RAISE Form_Trigger_Failure;
END IF;
--Validate mandataory process, process specific validation and message
FOR i IN C_Validation
LOOP
IF i.Cpv_Validation_Type = 'MANDATORY' AND i.Cpv_Validation_Active_Flag = 'Y' THEN
SELECT Count(1)
INTO l_Prg_Process_Id_1
FROM Program_Status,
Parameter_Master
WHERE Prg_Dt = Pam_Curr_Dt
AND Prg_Cmp_Id = i.Cpv_Validation_Input
AND Prg_Exm_Id IN ('ALL', :Query.Exchange)
AND Prg_Status = 'C'
AND Prg_Process_Id IN (SELECT MAX(Prg_Process_Id)
FROM Program_Status,
Parameter_Master
WHERE Prg_Dt = Pam_Curr_Dt
AND Prg_Cmp_Id = i.Cpv_Validation_Input
AND Prg_Exm_Id IN ('ALL',:Query.Exchange)
AND Prg_Status = 'C');
IF l_Prg_Process_Id_1 = 0 THEN
P_Show_Alert(i.Cpv_Validation_Input||' Mandatory Process NOT completed successfully.','A',l_Alert_Result);
RAISE Form_Trigger_Failure;
END IF;
ELSIF i.Cpv_Validation_Type = 'MESSAGE' THEN
P_Show_Alert(i.Cpv_Validation_Input, i.Cpv_Validation_Action, l_Alert_Result);
IF l_Alert_Result = 'N' THEN
RAISE Form_Trigger_Failure;
END IF;
ELSE
--- OTHER PROCESS SPECIFIC VALIDATION
l_Validation_Msg := Null;
Pkg_Process_Automation.P_Pre_Process_Validation(l_Prg_Id,
:Query.Exchange,
:Query.Segment,
i.Cpv_Validation_Type,
l_Validation_Msg);
IF l_Validation_Msg IS NOT NULL THEN
P_Show_Alert(l_Validation_Msg,i.Cpv_Validation_Action,l_Alert_Result);
IF l_Alert_Result = 'N' THEN
RAISE Form_Trigger_Failure;
END IF;
END IF;
END IF;
END LOOP;
--Validating whether file exists or not
IF :Process.File_Input_Format IS NOT NULL THEN
Pkg_Process_Automation.P_Gen_File_Name(:Process.File_Input_Format,
:Query.Exchange,
:Query.Segment,
File_Name);
Utl_File.FGetAttr(
location => l_Path,
filename => File_Name,
fexists => l_file_exists,
file_length => l_file_len,
block_size => l_blocksize);
IF NOT l_File_Exists THEN
--MESSAGE('The file does not exist.');
P_Show_Alert('The file does not exist.','A',l_Alert_Result);
RAISE Form_Trigger_Failure;
END IF;
END IF;
Set_Application_Property(Cursor_Style, 'BUSY');
SET_ITEM_INSTANCE_PROPERTY('Process.Status', CURRENT_RECORD, VISUAL_ATTRIBUTE, 'VA_YELLOW');
:Process.Status := 'R';
Synchronize;
IF l_Prg_Id = 'DTMBCORP' THEN
P_Show_Alert('Do you want to do Final Settlement Corporate Action ?(Y/N)','I',l_Alert_Result);
o_User_Selection_Ca1 := l_Alert_Result;
P_Show_Alert('Enable Round-To-Tick ? (Y/N)','I',l_Alert_Result);
o_User_Selection_Ca2 := l_Alert_Result;
--P_Show_Alert('Do you want to Rollback ? (Y/N)','I',l_Alert_Result);
--o_User_Selection_Ca3 := l_Alert_Result;
END IF;
---- Calling of Main Procedure
Pkg_Process_Automation.P_Run_Process(l_Prg_Id,
:Query.Exchange,
:Query.Segment,
:Query.Entity_Id,
File_Name,
o_User_Selection_Ca1,
o_User_Selection_Ca2,
o_User_Selection_Ca3,
o_Status);
IF l_Prg_Id = 'DTMBCORP' THEN
P_Show_Alert('Do you want to Rollback (Y/N)','I',l_Alert_Result);
o_User_Selection_Ca3 := l_Alert_Result;
Pkg_Process_Automation.P_Run_Process(l_Prg_Id,
:Query.Exchange,
:Query.Segment,
:Query.Entity_Id,
File_Name,
o_User_Selection_Ca1,
o_User_Selection_Ca2,
o_User_Selection_Ca3,
o_Status);
END IF;
Set_Application_Property(Cursor_Style, 'DEFAULT');
Message(o_Status);
Message(o_Status);
IF o_Status = 'Y' THEN
:Process.Status := 'C';
SET_ITEM_INSTANCE_PROPERTY('Process.Status', CURRENT_RECORD, VISUAL_ATTRIBUTE, 'VA_GREEN');
ELSE
:Process.Status := 'E';
SET_ITEM_INSTANCE_PROPERTY('Process.Status', CURRENT_RECORD, VISUAL_ATTRIBUTE, 'VA_RED');
END IF;
SELECT Prg_Log_File
INTO :Process.Log_File
FROM Program_Status ,
Parameter_Master
WHERE Prg_cmp_id = l_Prg_Id
AND Prg_dt = Pam_Curr_Dt
AND (Prg_Cmp_Id,Prg_Strt_Time) IN (SELECT Prg_Cmp_Id,max(Prg_Strt_Time)
FROM Program_Status b,
Parameter_Master
WHERE Prg_Cmp_Id = l_Prg_Id
AND Prg_Dt = Pam_Curr_Dt
GROUP BY Prg_Cmp_Id);
Synchronize;
Set_Application_Property(Cursor_Style, 'DEFAULT');
END IF;
END LOOP;
:Query.Current_Status := '';
Synchronize;
EXCEPTION
WHEN OTHERS THEN
:Query.Current_Status := 'Error found';
Set_Application_Property(Cursor_Style, 'DEFAULT');
MESSAGE(sqlerrm );
--MESSAGE(sqlerrm );
Synchronize;
END;
inside p_run_process there are other 25 database procedures.
help me !!!Create a procedure as like,
PROCEDURE show_progress(x number) IS
y number;
BEGIN
set_item_property('PART_DISP',VISIBLE,PROPERTY_TRUE);
set_item_property('PART_DISP',WIDTH,x);
set_item_property('PART_DISP',VISIBLE,PROPERTY_TRUE);
END;
PART_DISP is a display_item.
After completion of each procedures call the above procedure like,
cntr:=cntr+1;
show_progress(round(cntr/25*287,0));
synchronize;
where cntr is a counter it will be incremented 1 to 25, the constant value 287 is the maximum width of PART_DISP (you can change for your need).
The local variable cntr's initial value is 0 and maximum value is 25.
cntr part_disp % of progress
1
11.48
4
2
22.96
8
3
34.44
12
4
45.92
16
5
57.4
20
6
68.88
24
7
80.36
28
8
91.84
32
9
103.32
36
11
126.28
44
12
137.76
48
13
149.24
52
14
160.72
56
15
172.2
60
16
183.68
64
17
195.16
68
18
206.64
72
19
218.12
76
20
229.6
80
21
241.08
84
22
252.56
88
23
264.04
92
24
275.52
96
25
287
100
Hope this will help. -
How to Create Progress Bar in SAP
Hi!
I need to know how to create a progress bar in Sap Business One with VB.Net to Show a Scheduling Status.Hi Parag,
The code you need to create a progress bar is:
Dim Progress as Integer
Dim oProgressBar As SAPbouiCOM.ProgressBar
oProgressBar = oApplication.StatusBar.CreateProgressBar("YOUR_TEXT", oRecordset.RecordCount, True)
oProgressBar.Text = "YOUR_TEXT"
and for each record:
Progress += 1
oProgressBar.Value = Progress
When all is finished
oProgressBar.Stop()
Regards,
vanesa -
Problem in creating progress bar in form6i
dear all
how are you?
i created a progress bar but i face a problem.
in the when button pressed trigger i write this
declare
cursor MY_cur is
select col1,col2,col3
from base_table;
vWIDTH number :=0;
vSTEP NUMBER := 0;
begin
SELECT COUNT(1)
INTO vROWS
FROM base_table;
vSTEP := 300 / vCOUNT;
show_view('progress_bar_stack');
for i in MY_cur is
loop
insert int my_tab(c1,c2,c3)
values(i.col1,i.col2,i.col3);
set_item_property('progree_item',width,width+vSTEP);
synchronize;
end loop;
end;
I ASK IS THIS A GOOD WAY TO CREATE A PROGRESS BAR OR NOT . AND IS THERE ANOTHE WAY TO CREATE A PROGRESS OTHER THAN THIS.
PLEASE IF YOU HAVE A WAY , WRITE IT .
TAREK FATHI
2005 05 31my way of implementig a progress bar is:
window wn_pbar with canvas cn_pbar and a button bt_pbar. The Button has a width of 1 pixel and max 300.
now I have a procedure pbar.init (P_<wn-name>, P_<max-value>) which writes a window-header in the wn_pbar and a max-value in a package-variable.
another function named pbar.next (P_<value> DEFAULT 1) increments an internal variable act-value. This act-value is initially 0 and can increment to max-value. The act-value/max-value is the percentage of the width of the button. e.g. 1200/2000 means 60% -> 60% of width 300 = 180 width for the button.
another procedure pbar.destroy deletes the variables, closes the window wn_pbar and goes back to the item, where the focus was before the pbar started.
with this steps you can easily group these objects in a objectgroup and inherit it to all forms you need a pbar. the sourcecode is still in a library pbar.pll which you have to attach.
it looks like your functionality, but you can use it anywhere you need it.
try it
Gerd
PS: This is a very useful method for forms client/server. In the web you have to check, that the button not refreshes to open.... the more network-roundtrips, the fewer performance... -
Creating Progress Bar for File Upload
Hi, I'm trying to implement a progress bar indicator for a file upload in WebDynpro, without very good results.
I'm using a fileupload UI element, a TimerTrigger and a ProgressIndicator UI elements for this purpose.
It seems that using the fileupload UI element the iview is locked during the file upload, and therefore it prevents for the timer triggered action to be performed (this action updates the progress bar).
Additionally I havent been able to capture the transfered bytes from the upload. Maybe I'm using the wrong elements?
How could I achieve this. Has anyone done it?
I would really appreciate all the help I could get.
Homer VargasHi,
Can anyone please tell me the way to upload file from client system to server.
The code i have is as follows:-
Jsp:-
function saveImage(){
//projectname.javafilename
var strStatus = "save";
document.saveImageForm.action="/irj/servlet/prt/portal/prtroot/TestXML.TextImageLink?frmstatus="+ strStatus;
document.saveImageForm.method="post";
document.saveImageForm.submit();
<form name="saveImageForm" encrypt="multipart/form-data">
<table width="388" cellpadding="1" cellspacing="1" bgcolor="#F0F0F0" border='0'>
<tr>
<td><font color="blue" face="verdana" size="2">IMAGE:</font></td><td><input id="image" type="file" name="image" value=""/></td>
</tr>
<tr>
<td><input type="submit" name="submit" value="Submit" onclick="saveImage();"/></td>
</tr>
</table>
</form>
now i am not getting what to write in java file
using IPortalComponentRequest.
Using the jsp file upload in tomcat is working but here it is not working
please help meee
Thanks in Advance
Regards
Sirisha -
Running Progress Bar in orcale forms
Hello Experts, I am using oracle weblogic 10.3.5 and oracle forms 11g at windows 7.I have need to display a progress bar.Upon finishing the progress bar There should be call a program unit procedure in oracle forms. thank You regards aaditya.
Hi Aaditya,
Please read the following discussion, I think its helpful to you.
Re: creating progress bar in oracle forms 6i -
HI,
Sharepoint 2013 survey with paging (page break questions) .
I need a progress bar, I can see posts about using the task %complete field to generate a client side progress bar
but ther's no such field in a Survey List.
Whats my options ?
ThanksHi,
According to your post, my understanding is that you wanted to add a progress bar in survey list.
There is a progress bar tool in CodePlex, you can install it, and upgrade to check whether it achieve your scenario.
http://mossprogressbar.codeplex.com/
We can also use the SharePoint Designer or code to achieve it, the following article contains 5 ways to create progress bar in SharePoint, you can have a look at it.
http://blog.pentalogic.net/2011/05/how-to-create-progress-bar-in-sharepoint/
Thanks & Regards,
Jason
Jason Guo
TechNet Community Support -
Progress bar while loading table
Hi, please could anyone help me to how to create progress bar when i am loading large number of data using bean. data would be unknown so how do i show the status...plz help..
thanksThis should help
http://java.sun.com/docs/books/tutorial/uiswing/components/progress.html -
How to create progress bar in 10g using timer
I want to manually code for rpogressbar using timer.Could anyone help me on this
I want to create two text items and one pushbutton .Help me in this -
How can i Create a PROGRESSIVE BAR while process of a procedure is going
hi,
I have a push button in my form that runs the procedure .the process will approx 15 minutes. while processing is started, i want to display PROGRESSIVE BAR
until process complete and exits automatically after process . please suggest me how to create the same, is it possible..
please send me solution as soon as possible please
thanks in advance
prasanthThe forms demos contains a progress bar bean which you can use if web deployed.
Regards
Grant Ronald
Forms Product Management -
How to create a progress bar showing status on timeout of TCP Read function
Is there any way of creating a progress bar showing the status of a 'TCP Read timeout' time ... ?
I'm sending a data request to an intranet server via TCP Write, and then using TCP Read with a 2 min. timeout to receive the requested data. During this time i want to show the actual progress of the timeout in a progress bar.
Can this be done?
And do i have to implement some kind of multitasking to make it happen?
TIASoulstorm wrote:
> Is there any way of creating a progress bar showing the status of a
> 'TCP Read timeout' time ... ?
>
> I'm sending a data request to an intranet server via TCP Write, and
> then using TCP Read with a 2 min. timeout to receive the requested
> data. During this time i want to show the actual progress of the
> timeout in a progress bar.
> Can this be done?
> And do i have to implement some kind of multitasking to make it
> happen?
It can be done and you need to do some multitasking yes, but that is
quite easy in LabVIEW. A separate loop or subVI with loop will be
responsible for the progress bar. Set its scale to 0 and the number of
seconds of your timeout. In parallel to the TCP Read let this loop or VI
execute reading the time every few
seconds and calculating the
difference to its start time, passing this value to the progress bar
slider. Have an extra boolean global which aborts the loop and set this
boolean to FALSE before starting the loop/VI and TCP Read and setting it
to TRUE on return of the TCP Read.
Rolf Kalbermatter
Rolf Kalbermatter
CIT Engineering Netherlands
a division of Test & Measurement Solutions -
Creating a progress bar while querying a report in Visual Studio
I have created a Visual Studio 2013 program that runs reports from a SQL server. I want a progress bar to show up in my VS program while it is querying so my user doesn't think that it is frozen while running larger queries. How can I do this.
Step by step is better since I am new to programming.
Gracies
Much LoveHi flextera,
Based on your description, I’m afraid that it is not the correct forum for this issue, since this forum is to discuss:
Visual Studio WPF/SL Designer, Visual Studio Guidance Automation Toolkit, Developer Documentation and Help System, and Visual Studio Editor.
To make this issue clearly, would you mind letting us know more information about this issue? Which language are you using? Which kind of app are you developing? You said that it is related to the report in SQL Server, is it the SSRS issue or the specific
windows app like the WinForms app?
Please share me more information, I will help you find the correct forum for this issues.
If there's any concern, please feel free to let me know.
Best Regards,
Jack
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click
HERE to participate the survey. -
JS ScriptUI CS4: How to create an indeterminate progress bar?
Hi Folks,
Does anyone here know if ExtendScript (I'm using the CS4 flavor of ES) can produce an indeterminate (i.e., "barber pole") progress bar using ScriptUI's progressbar control? I've tried a number of value settings for the progress bar control in hopes that they would trigger the barber pole behavior, but so far, no luck.
My current workaround is to "loop" the progress indicator. In other words, when the progress bar's value > maxvalue, I reset the value back to minvalue. Then rinse and repeat. Not really what I want, but the task being processed takes quite a bit of time, so I need to show some sign of something happening to the user.
Thanks!
-- JimHi Jim and Jeff,
I can't find any practical solution to the original problem. It seems that an ExtendScript function call and a ScriptUI window cannot properly update synchroneously, except with a regular progressbar widget. I thought that a nonmodal window (='palette') might be fine, but I always get critical side effects using that approach, and generally the SWF is 'freezed' during the process. Curiously I found a kind of workaround using a pure modal dialog which mimics a nonmodal palette (!!) through the 'activate' event. But this still requires that the outer function perdiodically calls the update() method of the window from its own body, so this does not answer the question.
Here is a first draft, based on the SWF that Jeff posted above and only tested on a Win platform. I'd really appreciate feedbacks on this from Mac users.
// SpinProgressBar Object
// Tested in ID CS4/CS5+ Windows only
var SpinProgressBar = SpinProgressBar||function SB(/*str*/msg, /*fct*/process)
// Caches the function resources
SB.rc = SB.rc||{
swf: "CWS\tP&\x00\x00x\x9C\x8D\x9A\x7FL\x15W\x16\xC7\xCF\x11\xC5\x11)\xE2oQ\xD0'\x0F}O\x14\x7F\xA0\xE2o|\xCA\x11\x04\x05\x04\x14\x14Q\x11\xF1'\x82\n\" \xA2(j-\xB6(Hmw[\xDB&m\xD3\xCDnKbRLI\x7F\xC4&\xEBn\xDCdmk\xB3j\xAD\x9Bvwm\xC4\xAD1\xDB\x8D\xA9Y\x93\x8D\xFB\xBD#2\xE3\xF0\xB6\xEF\xF2\xC7H\x8Egf\xEE\xB9\xF3\xFD\xDC\xF3\x9D;TS\x9F\b\xA2!\xC5D\xA1\xA1$\x03\t?I\xBD\x1E?~\x1Cc0UV4\xC6\xE7\xCD~\xDB\xC5\xD4\xD9\xD9\xF9\x98\xC2\x07\xF5o-\xCE:s\xB5\xE3\x8F\x1FT\x9CZ\x121\xFA\xB7\xF1t\xAB_/bj\t\x0Ec\xFCs\x99\xC8G\xBDh;\xF9\xC2{\xE37\"\xB7\x11D\xDB\xA8\xEF\x97\xD4\xA7\r\xFF\x8D\x1F\\#\xA4\x7F\xCA\x97\xEDWnf\x97/j\xFAK[yb=\xB9\x8C\xDE=\x93\x8C\x86\xF6\x92\xD7O\xBD}\xA1\xF5\xF5\xD3\x85\xE45\xFA c\x90\x8B\xFA\xFC`\xBB\x8C\x8F\xCE\x95\x95\x9ExT\x15W\xD9\xD8q\xF9^\xC4wi\xA9\xD7\x90\x19\xFC4\xB3\xDE\xCA\xCCv\x8D\xC9(\xAF\r\xAE\xBA\xDAR\xD9q\xC1\xFD\xE3\xAD\xF6k\x13\x90\xD9\x17\x99\xC3\xCFR\xEF\x13\xB6k\x12\x97t\xBC\x99|\xE9\xAFs\x1Fe\xDF9r\xFBa\xED\xD0a\x1F!\xD3\xF0\x93\x99w6aru|f\xD5\xF9\xD4\xEE3(\xDA\xE8\x87L\x9C\xC2\x0F\xAC\xCC\x90\x8BA\x9D\xF7\xF2\xEFL\x1Aq\xEF]\xCF\xC4NLIH\xCF\x9C\xFE\xB9\x1FQ\xD8\x9F\xB2\xCB?k\xBA\xD4V\xFEy=n\xD9\xDF\xCF-s\xDA\x9A\xC3\xB6^\xC5-3Z;\xBE\xFF\x03n\xF9C\x1By\x8CP\x95\xD9\xFALf\xC8\x9B\xBE\xA07Bw\xAE\xFB\xFA\xFD\xFC\xFB\xE6\t\xB9\xAD\xF5^\xE3\xB9\x9Es\x18\xF2m8\xDD\xF1\x9Cz\xAF\xFC\xBAg\xEDkE\x9F\x9F{\xF0n\xD1[\xB8y\x98\x9F9\\V\xF0\xC9g\xA5'1\x87/7\xD6\\\u00FE\xC7\xDD[\xED\x97\xAF\xD3;\xC1\x93{\xE1y\x9B\x8F=,\xAB9\xD9\xF7\xE4\xC9\xAF*+\xDBX\xBA\xB9\xD8\x95SSZ\xB4k'\x9D\x0E\x0E\x0B\xA2 \x8A<S?\xAAP%\x04\xA9Ho\xEA\x8DHC\x8B)\x16V\x91>\xD4\x87\"Sj3\xDF\xEA\x8E\x04S0E^X\x9A\xF9}w\xA4/\xF5\xA5\xC8\xC1\x8F\xBEquG\f2(\xF2\xEB\xBBQ\x17\xBB#\xFD\xA8\x1FE\xDE>\x92a]9\x84B(2\xF8\xEF]\x91\xA3\x88\xF4\xA7\xFE8\xEB\x9F\xB6\xEB\x84R(\x8D\xF4<\xA82sz\xA9\xC8s\xF4\x1C\x8Dl\xFA\xDB\xC2z3\xA2\xCE\n\xA30\x8Cg\xD9\xD3\x11\n+\xCD\xFB0_\x03\xFC\xA83\xF9\xF7\x9F\xB4\xFD\xD0v>o\xCE\x82\x86ywS\xE7\xDE\xFAv\xE0\x03d\x86\xFB\xC9\x84\x16\x9Ef\xDC\xCF\xFFqh\xC5\x99\x1BS\x919\xB0\xE7c\xB5\xD4y3\xFBNC\xCCSu\x0E\xF2\x93\x99\xD7\xDA\xA5\xCE\xAC\xEE3\xC0\xD9\xE0\x9E\xCA3\x1A^~\xB0/\xAE\xE2l\xE8\xBE\xEC\xD3\xD0\xE6\x10\xBF\xDALlZ=\xED\x9B\xB4\x8C\xBC\xAFn\xB4_\xC4\r\x87\xFAQ\xDC\xC5\xA0\xA2\xFB\xE7\x8A\xAEW$\xB6\xD4~\xDA\xF8\xE1\xBB_\x04'\xB8\x909\xCC\xEF\xD0\xF2\xEF\xFF\x1C{\xF5\x95\xF9#n|\xFC\xDE\xEA\xF6[_\xBC\xF3\x062\x87\xFB\x99\x18H\xAE\xADKr\x1DO$\xA7\x00\x1F\xA1)\xE3h#\xA2\xE7\xB2\x12\xF2\x9D\x8Fn7D\xFD\xAE\xE0v]\xD4\x87\xEF\xA0\xE0\x91~\xD6'\x1F\xB5_I\xF9\xEA\xDB\xB4\x8C\xA5\xD3n\xA2`\xA8|\x80\x96\xCA\xC3i\x80\xA5WS\xE5\x03)\xDC\xA1\xE9A4\xD0T\xB0\xA5\xCE\xC14\bZ\xFC\xC9\xA6\xE0!4\xD8\xA6W\x15\x19JC\xA0\xE9\xFD\xB6\xC80\x1A\xEAP\xF0p\x1Af)\xD8T\xF9\b\x1A\x8E\xF1$\xD9\xEE\x1EA#l\x9AV\x91\x91\x14\x01\x0E\xAB\x9F\x90i\xAA|\x14\x8DD\xA4\xB6\xF9\xFB\xA7*W\x88\x0B+\x84\x85\x15\xB6\xC2\nUa\x85\xA7\xB0BRXa(\xAC\xD0\x13V\xB8\t+\xC4\x84\x15V\xC2\n%a\x85\x8F\xA2e\x94\x1FQ$u6\x87\xDD\xBD\x06QDx>\xBE\xF1\x1B\x88\xE2\xED\"dF\xFA\xC9\xCCy\x9F\xC2~\x8E\x8D\xAB\x9A\xDE\t\xF9\xACM+\xF8W\xF1\x1BPvT@e\x8F\x0E\xACl\x8F1\xE6\x17\xD6\xD26\xAC\xA5W\x9E\xAE\xA5.\xBF#\xEBZ\x9Es\xBB\x96\xE7Kjy\x1E\xEBG\xAE\xF5}\xBF\xEE(9\xF3\xC1\x9F\xCF\x17^y\x94\x8D%b~\x1D\x8A\x8D\xF6C@\xB6\xEB\\YW\xC6\xBC\xB3\x1DX\"\x86\x85\xA2\x14w`\xCDF\x1B1\x01\xC5\xEF5\xC6\xF9\xBDew\xAF\xFC\xCF\x05\xF7\x1D\xF4\xCAXd\x8E\xD7\xEC\xBF`%R\x8B\x95(\x1Ae\xAD\xDB&+\xA3)\xD2\xB1\xB6\x8F\xA1(\x07\x07.\x1A\xED\xE0`,\x8D\xB1\xA9^E\xA2\xC9e\x92aE\xDC4\xD6\xBEn#\x12C\xD1\x16\x07&+\xE3\xC8mW=\"\xE3)\xC6$\xC3b\xC5C\xE3p\x1D\xDF\x13\xBEMV\xBC4\x1E|WX\x1D\xA1\x17\x96\x00\xE1\x01\xC0^8\x1C\xA8\x0B\x0F\x04\xDE\xC2\x83\x80\xB4\xF0``,<\x04\xE8\n\x0F\x05\xAE\xC2\xC3\x80\xA8\xF0p`)<\x02(\nG\x00?\xE1\x91\x98\x1E\x1F\x9E\xA2G\xC3Ox\x03\xFB\t\x8F1A\xD7%\xC4j\x1A\x0F\xAF1\xB1\xA7K\xB0-\xC4\x1B\xB0\x10\xD7u\xF9\x89I\x9A~\xC2e\xC4\x05p\x82ncr`C\xE95\xA6\xF8\xB9!\xE4z\xB0K\xAE5O\xE4z\x1D\x99S\x7F\x19\x01\xD8\xC5\xBB]\bL\xD34\x81^#^\xD3X\x02\x96\tZ\xB0\xC4\x92\xC7\xB24&,\x13\xC9\xEB@c\x12Mp\x80\x10G\xB1\x8E\x161\x99&\xDAd\xAF\"Sh\x92\x03\x8D\xA9\x14\xA7@\xB0\x19\xB3i4\xD9\x02\xC1\x84%\x9E\xA6\xD8e\x8F\xC8t\x9Aj\xB5>\x13\x96\x194\xCD\x02\xDC\x84e&\xC5\xDB\x01W\xB0D\xE28\n\x94\x0BG\x82l\xE1(\xD0,<\x1A\x04\x0B\x8F\x01\xB5\xC2.\x90*<\x16t\nG\x83Ha7(\x14\x8E\x01y\xC2\xE301\xC2\xE31\x19\xAA\xB1L\xD7\xF6%3\xB4}\xC9Lm\xD3\x9C\xA0\xE9`\xA2\x8DY\x1A\xBEdv\xE05\xDEk\xCC\xD1v\x93s\xB5\x1D\xEA\xBC@\xBE\xB3\xF8a\xED\x90\xB3\xCAw\xCE\xD7\xF4\x9DncA\xE0\xDE\xEB2\x12\x03\xB4p\xD0\x92\xA0E\xCB,\x9An\xE9\xDE\xA4e6\xCDp\xB01\x87f:H\x98K\t\x0E\xB34\x8Ff\xD9t\xAF\"\xF3i\xB6\xA3I,\xA09\x0E\x12\x12i\xAE\xED\xA5E\xE9~!\xCDsX>\x1F\xCD\xB7\xB1\xA1\"\x8Bh\x81jl\xE9VkYL\x89 \xFCf\xBA\xCD\x86M\xC0\xD1\x03\xA8\x85\xBD\x00Yx\x02\xE0\x15\x8E\x05\xB0\xC2\x13\x01\xA9\xF0$\x80)\x1C\x07\x18\x85'\x03@\xE1)\x80Nx*\xA6Dx\x1A\xA6A8\x1E\xA5\xFB\xD0\x11\x16\xEA\x1A\x13\x9F\xA61\x896\x16i\b{\xB1\x8E\xB0\x93\xB4We\xD1\xDE\x18X\xA2i&\xBDF\xB2\xA6Au\x19)\x01m\xE7R\x9D\x17\xAATm7\x99\xA6gP\xC1J\x92\x16+B\x0B\xAD\xF5\xDFde\tNy\x96\x8CdZd\xBD\"\x98\x91\x14Z\xEC\xE0`)%Y\xD6\xC8\x8C\xA4\x928\xC8H\xA3%\x0E\x83\xB7\x8C\x92m/\xEFJ\xF5\xCB)\xC5\xAEzD\xD2i\xA9\x8D\f\x15\xC9\xA0T\x9C\xF5\xEF'<\x99\xACdR\x9A\x9Do\xC5J\x02\x8E\xD3\x01\xB0\xF0\f@+<\x13\xA0\n'\x00N\xE1Y\x00Rx6 \x14\x9E\x03\xF0\x84\xE7\x026\xE1y\x98\f\xE1\xF9\x98\x00\xE1\x05(Z8\x11\x85\xFA\xF0\x9C\x97\x05\xB4%\xCBulI\xBA\xF6\xDET\x86\xB6\x81\xC9\xD4\xB6%+4m\x89\xDB\xC8\n\xEC(\xA3\x8D\xEC\x80\xD6\xD4c\xE4\xF4\xBC\xE53\xAE\xF3\x9A\xE9)\xE1:Wj\x12\xE05V\xFD\xFF6\xFB\xD0\xF2\x92\n\xF8\\M\x7F\nXVh\xC1\x92E\xCB,kd\xC2\x92M\xCB\x1D-\"\x87\xD2\x1D{V+)\xC3\x01\xC2*\xCAt\xECY\xE5\xD2\n\x07\x1Ay\x94\xE5\x00a5e+\x13\x98n5\x965\x94\xE3hk\xF9\xB4\xD2j}&,ki\x95\x05\xB8\tK\x01\xE5\xDA\x01W\xB0$\xE1\b\xE9\xE3\xE8\x03\xA3\xC2\x8B\xC0\xA5\xF0b\xB0(\x9C\x04\xFE\x84\x05\xCC\t/\x01g\xC2\xC9\x98\x06\xE1\x14\x94.\xBC\x14\xE5\n\xA7\xA2D\xE14\x94\xA5lX\x9E\xB6+Y\xAD\xEDJ\xD6hz\r\xAF\x91\xAF\xE9_\xDC\xC6Z\x1DWR\x10`\x85\xF7\x1A\xEB\xB4\xBD\xE4zm\x7F\xBA!\xA0\xEB\xFC\x14\xD2Uw/\xD4t\x9Dnc\xA3\xCE\xAEAQ\xC0\x0E\x0EZ\xD6i\xD1\xB2\x9E\xF2,\xDD\x9B\xB4l\xA0\xD5\x0E6\ni\x8D\x83\x84\x8D\x94\xEF0KE\xB4\xD6j\x00fd\x13\x158\xD8(\xA6u\x0E\x126\xD3z\xDB\xCB\x8F\xD2\xFD\x16\xDA\x00\xDD\xFFdkl[\xA9\xD0\xB2|&-\xDBh\xA3\xDA\x95n\xB6l\xD8v*\xB27?E\xCB\n\x1C\x97\x01O\xE1\xE5@R8\x1D\x18\ng\x00=\xE1L\xE0&\xBC\x02\x88\tga\x02\x84\xB3Q\xB4p\x0E\n\x15^\x89\xE2\x84W\xA1 \xE1\\\x14\xA1h\xD9\xA4mK\x8A5m\x89\xDB\xD8\xAC\xA3\xEC-\x01\x95\xBDU\xDB\x96l\xD3\xDD7\xDB\xAE\xE9%=\xC6\x0E={\x1Am\x94h\x98\xCE\x9D:\xA6\xB3T\xDBJ\x96i\xEE\x9B\x81\x95\x1DZ\xAC\x94\xD0&k\xFD7Y\xD9I\xC5\x0E2Ji\xB3\x83\x832\xDA\xE2\xE0`\x17m\xB5\xAC\x91\x19\xD9\x8D\xA1>K\xC6\x1E\xFC\xFA\xAC\xC1+\xA7\x1D\xB6M\x00\xA5\xFA\n*\xB1\xBE\xD7\x989{i\xA7\x8D\f\x15\xA9\xA4R\x93o\xEB\x05\x7F\x1F\x95\xD9M\xA0be\x1D\x8Ey@Qx5\xF0\x13^\x03\xE4\x84\xF3\x81\x99\xF0Z\xA0%\\\u0080\xD2\x85\xD7\xA1\\\u00E1\xF5(Qx\x03\xCA\x12.D)\xC2j\xD1\x12.R\xA3\xC7c\xDC\xA5\xE3Kv\x07\xF4%^c\x8F\xBFM.\xA5\xECk\xB6M.S\xD9\xE5\xBA\x0E\xA6B\xFB\x03\xC6^M_\xE26*u>\x9E\xEE\x0B\xF8\xF1\xB4J\xDBvVk#P\xA3\xFDyj\xBF\xA6A\x05,UZ\xB0T\xD3.K\xF6&,5\xB4\xDBf\x8DTd?\xEDq\xEC}\xD5R\xB9\x03\x84\x03T\xE1\xD8\xFB\xAA\xA3\xBD\x0E4\x0ER\xA5\xE3\xDD\xE7\x10\xED\xB3}\xB8T\xB2\xAF\xA7*G[;L\xD5V\xEB3a9B5\x16\xE0&,\r\xB4\xDF\x0E\xB8\x82e\x07\x8E\x9B@\x9Ep1h\x13\xDE\f\xC2\x84\xB7\x80*\xE1\xAD(Zx\x1B\n\x15\xDE\x8E\xE2\x84w\xA0 \xE1\x12\x14!\xBC\x13\x03\x17.\xC5`\x85\xCB0@\xD5Xj\xB5}\xC9\x01m_R\xA7-\xF2\x83\x9A\xFBfn\xE3\x90\x8E/\xA9\xD7\xF8\x9AqX\xDBM\x1E\xD1v\xA8\r\xDA\xBE\xF3\xA8\xA6\xEFt\x19\xC7\x02n\x1A\x1C\x0F\xDC\xBFA\xCBQ-Z\x8EQ\xAD\xA5{\x93\x96\xE3t\xC0\xC1\xC6\xF3T\xE7\xD8\xFB:A\x07\x1D$\xBC@\x87\xAC\x06`F\x1A\xA9\xDE\xD1$N\xD2a\x07\t/\xD2\x11\xABI\x98\xB4\xBCD\r\xA6\xEE\xAD\x9C&:jY>\x93\x96StL\x11\x9Ea\xBD\xE1\x9F\xA6\xE3\xF6\x0F?\x8A\x96*\x1Cw\x014\xE1\xDD\x80Kx\x0F\x80\x12.G\xB9\xC2\x15(Qx/\xCA\x12\xAED)\xC2\xFB0|\xE1*\fY\xB8\x1A\xC3\x14\xAE\xC1\xD0\x84\xF7c8\x8A\x96\xE7\xB5\x8D\xC9\t=c\xE26^\xD0\x11v\xA3\x86\xB0Oj\xAF\xCA/j\x7F\xD0{I\xFB#l\x93\xA6A\x8D1N\xFD\x82l\xD7\x1F\xFA/\x14\xBE\x1B\xF2?\x1D@\xFE\x1E\xA3Y\xD7M\xB6h\x1AT\xC0\xD2\xAC\x05K\x0B=o\xC9\xDE\x84\xE5\f\x9Dp4\x89Vz\xC1\x01\xC2\xCB\xD4\xE8\x00\xE1,\x9D\xB4\xC9^E^\xA1\x17\x1D\x1Bd\xAF\xD2K\x0E\x87\xF7+j\xB2\xED\x02(\xD9\xFF\x9AN9\xBEw\xBEF\xA7mh\xA8\xC8\xEB\xD4l\xFB\xCB\x15u\xD69j\xB1\x7F\x01U\xB0\x1C\xC5\xB1\x16T\t\x1F\x00I\xC2u(T\xF8 \x8A\x13>\x84\x82\x84\xEBQ\x84\xF0a\f\\\u00F8\b\x06+\xDC\x80\x01\n\x1F\xC5\xA0\x84\x8Fa \xC2\xC7qs\x1F\r\x0EcL\xA6c\xF2\x88\xFE\x07WG@D",
bkg: [232,232,232],
tmpFile: function FN(/*?str*/s)
FN.file && FN.file.remove();
FN.file = null;
if( !s ) return null;
return FN.file = (function(fx)
fx = new File(''+fx);
if( !fx.open("w") ) return null;
fx.encoding = 'BINARY';
fx.write(s);
fx.close();
return fx;
})(Folder.temp+'/_'+(+new Date)+'.swf');
// Creates the UI
var rc = SB.rc,
w = new Window( 'dialog', '', undefined, {borderless:true} ),
p = w.add( 'panel' ),
fl = p.add( 'flashplayer', undefined, rc.tmpFile(rc.swf) ),
t = p.add( 'statictext', undefined, msg),
r;
rc.tmpFile(); // kills the tmp swf file
// UI Skin/Style
with( w.graphics )
backgroundColor = newBrush(
BrushType.SOLID_COLOR,
[rc.bkg[0]/255, rc.bkg[1]/255, rc.bkg[2]/255, 1 ]
p.orientation ='row';
p.alignChildren = ['left','center'];
fl.preferredSize = [50,50];
// Fire!
SB.win = w;
w.onActivate = function(){ process(); w.close(-1); };
r = -1==w.show();
// Cleanup and return
SB.win = null;
w.onActivate = null;
rc = w = p = fl = t = null;
return r; // true=>OK, false=>broken
// SAMPLE CODE
var myHugeLoop = function()
var i = 500000;
while( i-- )
// you have to periodically call SpinProgressBar.win.update()
// but not necessary at each iteration
SpinProgressBar.win.update();
Math.cos(i)*
Math.cos(i)*
Math.cos(i)*
Math.cos(i)*
Math.cos(i)*
Math.cos(i)*
Math.cos(i)*
Math.cos(i)*
Math.cos(i)*
Math.cos(i);
if( SpinProgressBar("Currently processing a huge loop...", myHugeLoop) )
alert( "All is fine." );
else
alert( "The process has been broken by the user!" );
@+
Marc
Maybe you are looking for
-
Macbook not showing correct storage
When i go on my macbook's infomation it says like 40gb but i keeps changing and when i choose my HDD to install a program it says 90gb im soo confused and the other day it said 70 on computer infomation but i have deleted soo many files i dont unders
-
Hi List, I used the DBMS_SYSTEM.SET_EV(...), for trace purposes, without any problem when I am connected as SYS. Then, I 'grant execute' on this package to another user. When I execute the same package with this user I receive an error PLS-00201 - th
-
Fireworks CS3 Pages export internal error from Page naming?
When exporting a set of linked "Pages" to HTML, I was getting an "internal error" and an incomplete set of pages. It would have been nice to get a more informative error message, but I found an Adobe Technote recommending repairing permissions. This
-
I used to have a LOGITECH but reverted to the wired APPLE mouse that came with my computer. My problem is when I try to click on a file ONCE to : let's say change a file name or edit a file ...it'll open a file in a program I didn't command it to. A
-
Rearranging table rows in Indesign CC
Using InDesign CC, my cursor is not changing to allow me to drag table rows or columns to a new order. What am I missing? I use the text tool, get the black arrow to select a whole column, move into that column and all I see is the insert text icon.