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!
-- Jim

Hi 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

Similar Messages

  • Indeterminate progress bar

    There is an ancient thread on the subject already, but with no answer, so i decided instead of ressurecting that one to start a new qestion?
    How to create a indeterminate progress bar, when you can't update/acces the palette with te script (for example when exporting a few very large documents).
    I know Marc managed this kind of voodoo sometime ago, but i don't know if he is willing to share the trick, as it has been incorporated in some of his paid scripts.
    So.. does anyone else have any ideea how it can be achieved?
    I have been triying to use a embeded swf as a progress bar in a palette, but the palette only gets updated something like "onIdle".

    I have to do the other stuff in another thread because otherwise the progress bar doesn't work right, yeah its really stupid. It is of note that this code is called from a GUI interface. Because I am calling this progbar from the GUI, it executes the progress on that thread. The only problem is that nothing else can be run on that thread when the progress bar is working, so rather than call a method, I have to create a whole new thread to do the operation.
    Edited by: gatty790 on Nov 22, 2007 12:06 PM

  • How to create this cool navigation bar in CS5 Dreamweaver

    Dear All,
    Can somebody please walk me through how to create this cool navigation bar?
    Please see the link below:
    http://www.viesso.com/viesso/home.php
    Thank you for all your help!
    I am designing my own website and I stuck at the beginning...
    Agi

    You can either use CSS to style the SpryMenuBar or there are commercially available options like Project Seven's Pop Menu Magic: http://www.projectseven.com/products/menusystems/pmm2/index.htm .  If you have the money I personally recommend the latter of the two, but you can easily style the Spry menu as well.

  • How can I use a progress bar in objective c mac

    How can I use a progress bar in objective c mac? I have a code that downloads a file and I want to be able to let the progress bar increase by 1. A bit further on the code (to download the file) it needs to increase again. And so on...
    My code
    -(IBAction) downloadButtonPressed:(id)sender;{
        //get the path to the image that we're going to download
        NSURL *url = [NSURL URLWithString:@"https://www.dropbox.com/s/l6o07m48npxknt4/Cluedo.zip?dl=1"];
        //get the path to documents folder where we're going to save our image
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *DocumentsDirectory = [paths objectAtIndex:0];
        NSString *filePath = [DocumentsDirectory stringByAppendingPathComponent:@"Cluedo.zip"];
        //Download the file to memory
        NSData *data = [NSData dataWithContentsOfURL:url];
        NSError *error = nil;
        //Save it on the Documents directory
        [data writeToFile:filePath options:NSDataWritingAtomic error:&error];
        NSFileManager* fm = [NSFileManager defaultManager];
        NSString* zipPath = filePath;
        NSString* targetFolder = @"/Applications"; //this it the parent folder
        //where your zip's content
        //goes to (must exist)
        //create a new empty folder (unzipping will fail if any
        //of the payload files already exist at the target location)
        [fm createDirectoryAtPath:targetFolder withIntermediateDirectories:NO
                       attributes:nil error:NULL];
        //now create a unzip-task
        NSArray *arguments = [NSArray arrayWithObject:zipPath];
        NSTask *unzipTask = [[NSTask alloc] init];
        [unzipTask setLaunchPath:@"/usr/bin/unzip"];
        [unzipTask setCurrentDirectoryPath:targetFolder];
        [unzipTask setArguments:arguments];
        [unzipTask launch];
        //[unzipTask waitUntilExit]; //remove this to start the task concurrently

    Your code really isn't suitable for a progress bar, not a real one anyway. Your code will spend about 99.9% of its time in the method "dataWithContentsOfURL:url". That is not a method you want to use in the real world. It is only for demos or proof of concept exercises. All network operations should be asynchronous. That gives you the ability to gracefully recover when there is a failure and also to do fancy things like display a progress bar and tell the user when the download is complete.
    Once you get the asynchronous download logic working, then you can worry about the progress bar. The first thing you will need is the size of the file. Without that, all you can ever do is an indeterminate progress bar or spinner. If you have the size of the file, then you can keep track of how much of the file you have downloaded and update your progress bar with the percentage complete. Make sure to throttle it to no more than incrementing by 1% at a time. Otherwise, a large file or a file transferred in many small chunks, would waste too much time updating the progress bar for no change.

  • Displaying an Indeterminate Progress Bar While a DB2 Stored Proceedure Runs

    How do I display a dialog with an indeterminate progress bar while a DB2 query runs? Could anyone point me to an example or some strong docs?
    I learned Java about six months ago, so I'm relatively new to the language. Through searching and documentation, I've been able to find all the examples and answers I've needed so far. Now I've run into an issue I can't find anywhere. It seems like the most basic thing in the world. I have a DB2 stored procedure that takes about 5 minutes to run. While it's running, I want to display a simple dialog with a progress bar going back and forth (no buttons, no user interaction).
    I'm using Eclipse 3.3.1.1 as my IDE, and running the application from a JAR file. I have Java 1.6.0.30 installed. The DB2 query is running in response to a user clicking a button on the form (an ActionEvent). All of my forms are using Swing (JFrame, JDialog, etc.).
    The crux of my problem seems to be that I can bring up a dialog (which should contain the progress bar), but I can't get it to paint. All I get is a window that's the right size/location, but contains an after-image of what was behind it. I can't even get a dialog to display with a "Please Wait" label while the DB2 procedure runs.
    I tried separating both the DB2 stored procedure and the progress dialog into separate threads. I tried yielding in the DB2 thread to give the progress dialog a chance to update. I tried using invokeAndWait, but I got the following error:
    Exception in thread "AWT-EventQueue-0" java.lang.Error: Cannot call invokeAndWait from the event dispatcher thread
    It seems like I'm doing something wrong in my use of Theads, but I can't for the life of me figure out what it is. If anyone could help out a bit of a Java newbie, I would be extremely grateful.

    Demo:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class ProgressBarExample2 {
        private JProgressBar bar = new JProgressBar(0,99);
        private JButton button = new JButton("Lengthy operation");
        private ActionListener al = new ActionListener(){
           public void actionPerformed(ActionEvent evt) {
                button.setEnabled(false);
                bar.setIndeterminate(true);
                new Worker().execute();
        private class Worker extends SwingWorker<Boolean, Boolean>{
            protected Boolean doInBackground() {
                try {
                    Thread.sleep(10000); //10 secs
                } catch (InterruptedException e) {
                return Boolean.TRUE;
            protected void done() {
                button.setEnabled(true);
                bar.setIndeterminate(false);
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new ProgressBarExample2();
        ProgressBarExample2() {
            button.addActionListener(al);
            JPanel cp = new JPanel();
            cp.add(button);
            cp.add(bar);
            JFrame f = new JFrame("ProgressBarExample2");
            f.setContentPane(cp);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.pack();
            f.setLocationRelativeTo(null);
            f.setVisible(true);
    }

  • Indeterminate progress bar in JTable?

    Hi,
    Does anybody know why my code isn't working? It does not display an indeterminate progress bar in the column I have set my cell renerer to.
    Here is my code
    public void setTableReneders()
            TableColumn col = _Table.getColumnModel().getColumn(2);
            col.setCellRenderer(new ProgessBarRenderer(0, true));
    public class ProgessBarRenderer extends JProgressBar implements TableCellRenderer {
            // This method is called each time a cell in a column
            // using this renderer needs to be rendered.
            public int _Progress = 0;
            public boolean _InDer = false;
            public ProgessBarRenderer(int progress, boolean inDer)
                _InDer = inDer;
                _Progress = progress;
            public Component getTableCellRendererComponent(JTable table, Object value,
                    boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex) {
                // 'value' is value contained in the cell located at
                // (rowIndex, vColIndex)
                if (isSelected) {
                    // cell (and perhaps other cells) are selected
                if (hasFocus) {
                    // this cell is the anchor and the table has the focus
                // Configure the component with the specified value
                this.setValue(_Progress);
                this.setIndeterminate(_InDer);
                // Set tool tip if desired
                //setToolTipText((String)value);
                // Since the renderer is a component, return itself
                return this;
            // The following methods override the defaults for performance reasons
            public void validate() {}
            public void revalidate() {}
            protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {}
            public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) {}
    }Any help would be brilliant

    I wouldn't like to use a Timer to perform an update...Then you don't understand how a JTable works. The cell will only repaint itself when the contents of the cell changes. You don't change the progress bar, you only change the value represented by the progress bar so the table never knows when to repaint itself. You should be able to use a Timer to force a cell to repaint itself. That way if the value of the progress bar has changed then this change should be reflected in the repainting of the progress bar.
    I've never tried it, but there's an example here. I don't know if it uses a Timer or some other approach.
    http://www.objects.com.au/java/examples.do

  • How can I add a Progress bar to show the "render to JPG" progress?

    Hi everyone, I have a button which renders my component to
    JPG.
    How can I attach a progress bar to show the progress of the
    rendering?
    <mx:Button label="render" click="renderasJPEG ()"/>
    public function renderasJPEG( ):void
    convertToImage( component001, new JPEGEncoder( 100));
    private function convertToImage( object:IUICompon ent,
    encoder:IImageEncod er):void
    var base64string: String = ImageSnapshot. encodeImageAsBas
    e64(
    ImageSnapshot. captureImage( object, 72, encoder));
    var variables:URLVariab les = new URLVariables( );
    variables.encoded = base64string;
    variables.type = "jpeg";
    var request:URLRequest = new URLRequest(" script_saveasima
    ge.php");
    request.method = "POST";
    request.data = variables;
    navigateToURL( request, "_blank");
    Thanks in advance.

    Hi,
    I would have thrown a prompt to the user in the renderasJpeg
    function and removed it in last line of convertToImage function.
    Isn't this what you want?
    Hope this helps.

  • Flash CS4 - how to create event flow from children to parents?

    In my opinion natural event flow direction is from children
    to its parants.
    E.g. when in dialog box buttons are pressed it is natural to
    inform only
    this dialog box about these actions. When dialog box can't
    handle particular
    event then passes it to its parent and so on .
    Unfortunately this direction is not well supported by Flash.
    To achieve
    support for this event direction it is necessary to call
    parent.dispatchEvent() with bubbling option off. This
    solution is
    inconvenient because sometimes I can't predict what event
    types will be
    triggered inside dialog components. Most likely there is no
    function to
    catch all events which have no defined handlers in dialog in
    order to be
    possible to pass them one level higher.
    Have you got any experience with building communication model
    between
    objects in Flash applications?
    Regards,
    Marek

    XML shema is basically an XML file. So u need to know how to create an XML,
    provided u know how the shema file should be.
    Creating an XML :
    http://forum.java.sun.com/thread.jspa?threadID=5181031&messageID=9705786#9705786

  • How to create a link to Bar Graph......?

    Hi,
    Can any body tell me how to create a link to a bar graph such that on clicking, it should navigate to specified page in the same application or different application.
    I've written the following Region Source for creating link on Graph. Correct if it is wrong.
    function onDynamicaBarGraphClick(e)
    // Read point name
         name=e.data.Name;
    // Read point value
         value=e.data.YValue;
    // You can add onclick even here using the values name and value
    link='f?p=&APP_ID.:4:'||:app_session||'::::::';
    Thanks in Advance....
    Regards,
    Manoj
    Edited by: user12873839 on Apr 12, 2010 12:11 AM

    I have replied to you in another post. Help Needed : Changing the Color of Bar Graph Dynamically
    Please don't open multiple posts for the same question. Thanks.
    --Manish                                                                                                                                                                                                                                                                                                                                                                                                       

  • How to create a persona header bar that displays correctly in all resolutions - Firefox 20 Linux

    I'm in the process of learning how to create Personas for Firefox, and have already created one which I am using locally, but I ran into an unexpected behavior: If I create a header bar that is 3000 X 200 pixels as specified in the guidelines, only the right third or so displays in my browser when the theme is applied. To get this header to display "properly" (as I find aesthetically pleasing) I have to resize the header to 1280 X 85 pixels.
    Should not the header bar scale automatically, or do I need to produce a persona header at each possible resolution width to get it to display properly?
    For what it's worth, the footer appears to be displaying the left hand third, but this is not so objectionable in this case.
    A screenshot of the persona is available at http://www2.netdoor.com/~horus/Persona_2013-04.png.
    Thanks for any insights. I feel as though I must be misunderstanding something here.
    (I tried to post troubleshooting information the first time, but it overflowed the character limit...)

    Probably best to ask that sort of question, or research the answer in one of the AMO forums ('''A'''ddons '''Mo'''zilla). I think this one may be appropriate:
    * https://forums.mozilla.org/addons/viewforum.php?f=30
    ** I think you will need to register before posting
    I am wondering where are you doing the learning ?
    <br />There are also resources on MDN
    *https://developer.mozilla.org/en-US/addons
    Detailed discussion of the subject is probably off topic for this forum, but linking to resources or giving as imple answer is not so I hope some of the above are helpful. (You may even find someone else interested and knowledgeable posting a direct answer)

  • Pls help - how to create a navigator scroll bar in full flash site

    hi to all,
    good day! i'm norman of RP this s for all d flash master, i'm
    beginner only in flash and i want to create a full flash website
    but i didn't know on how to put a navigational scroll bar. is der
    anybody can help me to give me a simple code of it or a link?
    i appreciate any help from all of u. I nid it badly to my
    project.
    many tnx an advns
    - normz - RP -

    hi,
    use this below div tag to the table:
    <div style="overflow: auto; width: 480px; height: 100px; border-left: 1px gray solid; border-bottom: 1px gray solid; padding:0px; margin: 0px;">
    <table>
    </tabe>
    </div

  • How to creat a grouped stacked bar chart

    Hi,
    I am trying to create a grouped stacked bar chart.
    For 'on change of ' i have -> 1) update_month                                                                               
    2) update_source ( i have 2 values for this field -> website and ivr)
    And for 'show value' field i am trying to use 1) sum of valid_count
                                                                          2) sum of invalid_count
    -> I need two stacked bars for each month, each stacked bar belongs to either website or ivr and is made of valid and invalid counts for that particular update source.
    when i tried to use the fields as i mentioned above, i got an error saying
    'The data you have selected doesnt fit the chart type' and explanation is as follows 'This chart type requires 2 on change of fields and i show value field OR 1 on change of field and many show value fields'.
    I have selected a stacked bar chart.
    Does any one know how to do this?
    i am trying to create a chart similar to the one in the following link http://www.java2s.com/Code/Java/Chart/JFreeChartStackedBarChartDemo4.htm
    Thanks

    Please re-post if this is still an issue or purchase a case and have a dedicated support engineer work with you directly:
    http://store.businessobjects.com/store/bobjamer/DisplayProductByTypePage&parentCategoryID=&categoryID=11522300?resid=-Z5tUwoHAiwAAA8@NLgAAAAS&rests=1254701640551

  • How to create a shared menu bar

    I can't see a way to create a single menu bar that is shared by several pages and only needs to be updated in one place. Surely DreamWeaver has such a feature?

    You have already been answered by the methods to use,, but this is my long winded answer to your question - explaining both techniques:
    You have 2 choices:
    Templates    
    Server Side Includes
    Using the template function within Dreamweaver is a good way to go if it's a small site . .
    For larger sites then serverside includes would be more practical and earlier for maintenance purposes.
    Templates:
    You create a master template page, you declare which areas will be the same for every page, (non-editable regions)  and then declare an area that will change on every page (the content area) , these are editable regions.
    Once you create the template and save it, you are then able to create 'child' pages from this template  - as many as you like  :-)  If you every need to make a change to the menu or the footer or the header, change it in the master template, save it and the changes will flow through to the child pages created from the template.
    Using DW Templates:
    http://www.adobe.com/devnet/dreamweaver/templates.html
    http://www.adobe.com/devnet/dreamweaver/articles/dw_templates.html
    The other option is to use Server Side Includes (SSI)
    A bit more about SSIs here:
    http://help.adobe.com/en_US/Dreamweaver/10.0_Using/WSc78c5058ca073340dcda9110b1f 693f21-7b6ca.html
    http://bignosebird.com/ssi.shtml
    Using PHP includes if your server supports php:
    http://www.w3schools.com/PHP/php_includes.asp
    One major difference between using Templates and SSI?
    When you make a change to a template page, you will need to re-upload all the pages to the server that were changed - may become very tedious if it is a very large site.
    With using SSI, you make a change to one file and only have to upload the one file and all pages on the server will be update accordingly.
    When to use Templates, Library Items & SSIs -
    http://www.adobe.com/devnet/dreamweaver/articles/ssi_lbi_template.html
    Nadia
    Adobe® Community Expert : Dreamweaver
    http://www.perrelink.com.au
    Unique CSS Templates | Tutorials | SEO Articles
    http://www.DreamweaverResources.com
    http://csstemplates.com.au/
    http://twitter.com/nadiap

  • How do I programmatically change progress bar limit?

    Hello all.  I have a custom control and one of the indicators is a progress bar.  The bar is used to show the position of a life test fixture as the fixture moves up and down.  I would like to have the max limit of the bar to be set by the user.  The user enters a number and the bar maximum will be that number.  That way the bar is more indicative of actual fixture movement.  How would I programatically do this?
    I read about using the Range property, but I can't seem to access it.  Is this because the progress bar is part of the cluster?  Would I need to separate the progress bar from the cluster, get the Range property set up, then put the bar back into the cluster?
    My problem here is that since this is a custom control, it is set as a typedef, with my vi using 12 copies of it.  So if I can't get the typedef to accomplish what I want, I guess I'll have to break the link between the typedef and the vi, go into the vi, and edit all 12 custom controls to do it. 

    Hi Dhouston
    please find the ZIP file attached. somehow i can't upload a VI
    Eventhough the cluster is a typdef control, you can still right click the slide inside the cluster and create a property node.
    hope this helps
    RENN
    Kudos always welcome for helpful posts
    Attachments:
    setScaleRangeProgramatically_V2.zip ‏10 KB

  • How to make use of *progress bar*?

    I have a progress bar requirement in my swings project,
    i.e on clicking a button, some task should be executed and in parallel to this
    progress should run on progress bar in the same frame and soon after this task
    gets completed the progress on progress bar should come to an end.
    How can i do this in swings?
    could any one help me out from this?

    How to use progress bar
    http://java.sun.com/docs/books/tutorial/uiswing/components/progress.html
    If you want an example scroll down to the bottom of the page and download the examples.

Maybe you are looking for

  • How can I use both high def (16:9) and regular def (4:3) in the same video?

    I'm editing a load of video, some of it was shot in 16:9 high-def and some in 4:3 regular-def. Id really hate to see the 4:3 footage go to waste. What can I tack on to the black sidebars on either end of this footage to fill in the gaps? I've also se

  • Can no longer open BOTH DVD drives after upgrade

    OK...I have a Mac Pro, and pre Lion I had NO PROBLEM using F12 and opt-F12 to open both of my Superdrive trays. However, after Lion, F12 AND opt-F12 BOTH OPEN THE BOTTOM SUPERDRIVE ONLY, and I cannot access my upper superdrive. Am I missing some sort

  • Error while Issuing material against STO

    Dear All,              I made a STO.but while issuing the material Against STO,the error "                                                                the system has not found any order items in the purchase order " come.no release stragaey on STO

  • IMac Novice Needs Help

    My first desktop was a Macintosh. Since then I have had 22 years of PC's. I am back now with my new iMac but my machine appears to be running slow. Will an upgrade in memory from 512 MB improve performance? The price of an upgrade at the Apple store

  • Segment Space Advisor Error

    Hi, I get this error every morning in alert log Errors in file c:\oracle\product\admin\escort\bdump\escort_j000_3360.trc: ORA-12012: error on auto execute of job 8887 ORA-20000: ORA-20000: Content of the tablespace specified is not permanent or table