Correct way to do this

I have a service method invoked from a SwingWorker (tied to button press). The service method fires off a bunch of thread as it loads stuff out of the db. This is a long running task. The goal is to update progress bars on the gui as the long running task runs. There are 2 progress bars, one for loading the data, and one for processing the data. The way I see it i have 2 options.
1. Pass some runnables into the service method. These runnables have the progress bars in their scope. The service method can use SwingUtils.invokeLater() to get the progress bars to update on the Event Dispatching Thread (EVT).
The downside to this approach is that I would be mixing concerns. The service internals would have to know how to use these runnables. Furthermore, the service is complicated; it loads a page of data and enqueues the data on ThreadPoolExecutors. The progressbar runnables would have to be passed into the runnables that process the data and they would do the updates -- very complicated.
2. Poll the service from the gui. Have a Timer that is created in the swingworker. It polls the service, and uses SwingUtils to update the bars on the EVT. The problem with this approach is that I would then have to maintain state in my service and provide access methods to get at the state. To do the updates.
Neither of these seems ideals. Is there a better way to do this?

The swingworker gets no updates from the service as to progress. I don't see how the standard way of doing it (propertychangelistener and setprogress) is going to help. The progress is made in the service method itself; the swingworker has no visibility into the method.

Similar Messages

  • Ok, does anyone know the correct way to do this

    Hi all
    would someone beable to explain the correct way of attaching dynamic text to a rotaing menu so that the text moves with the image as it rotates,
    I am now being told that in order to have dynamic text rotate/move I have to embed the font, by placing a text field on the stage outside my flash area and then set embedFonts property to true, and then apply a textformat.
    first, is this the correct way of doing it?
    second, can someone please explain(by breaking down into steps, as I am a newbie) how I go about setting embedFonts property to true and applying a textformat.
    what I have created;
    1.)I created a movieclip called 'textHolder' inside this has two dynamic text fields called 'headerText'  & 'bodyText'  <<<<< IS THIS CORRECT?
    2.)I have an xml file which will load the text in as well as the images with the rotating menu, see below;  <<<IS THIS CORRECT????
    <?xml version="1.0" encoding="utf-8"?>
    <data>
      <image name="image 1" path="img/img1.jpg"
        textHolder.headerText="Sunset"
        textHolder.bodyText="The hour of night is near, as the skies get blood-filled" />
    <data>
    3.What I am missing is what script I need for the main.as file, can anyone help here?
    so to break down.
    I have a rotating menu that is driven by xml, that loads images on the menu. I would also like to load text to the left of each image, and have the text be fixed with the image as it rotates.
    I can post the as, but I would like to know if the above is correct first, if you would like to see the main script please say.
    I have attached a jpg layout to give you an idea as to what I am trying to explain. can someone please help!!!!!!!!!
    (this is my previous post: http://forums.adobe.com/thread/463213?tstart=0  but I feel its got lost a little along the way)

    MY CURRENT SCRIPT, CAN YOU SEE HOW TO ATTACH THE TEXT WITH THE IMAGE?
    package 
    import flash.display.DisplayObject;
    import flash.display.MovieClip;
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.net.URLLoaderDataFormat;
    import soulwire.ui.CircleMenu;
    public class Main extends Sprite
      //————————————————————————————————————————————— CLASS MEMBERS  VALUE
      public var circleMenu:      CircleMenu;
      public var xmlLoader:      URLLoader;
      //——————————————————————————————————————————————— CONSTRUCTOR
      public function Main()
      circleMenu = new CircleMenu( 300, 32, 14 );
      circleMenu.x = 150;
      circleMenu.y = 300;
      addChildAt( circleMenu, 0 );
      // Use URLLoader to load XML
      xmlLoader = new URLLoader();
      xmlLoader.dataFormat = URLLoaderDataFormat.TEXT;
      // Listen for the complete event
      xmlLoader.addEventListener(Event.COMPLETE, onXMLComplete);
      xmlLoader.load(new URLRequest("data.xml"));
      /*for (var i:int = 0; i < 20; i++)
        // MyMenuItem can be a symbol from your library
        // or any class which extends DisplayObject!
        var item:MyMenuItem = new MyMenuItem();
        item.txt.text = 'Menu Item ' + (i + 1);
        item.txt.mouseEnabled = false;
        item.buttonMode = true;
        item.addEventListener( MouseEvent.CLICK, onMenuItemClick );
        circleMenu.addChild( item );
      circleMenu.currentIndex = 4;*/
      // Enable the mouse wheel
      stage.addEventListener( MouseEvent.MOUSE_WHEEL, onMouseWheel );
      // Set up the UI
      ui.spacingSlider.addEventListener( Event.CHANGE, onSliderChange );
      ui.radiusSlider.addEventListener( Event.CHANGE, onSliderChange );
      ui.minAlphaSlider.addEventListener( Event.CHANGE, onSliderChange );
      ui.minScaleSlider.addEventListener( Event.CHANGE, onSliderChange );
      ui.scaleSlider.addEventListener( Event.CHANGE, onSliderChange );
      ui.itemsSlider.addEventListener( Event.CHANGE, onSliderChange );
      ui.spacingSlider.dispatchEvent( new Event( Event.CHANGE) );
      ui.radiusSlider.dispatchEvent( new Event( Event.CHANGE) );
      ui.minAlphaSlider.dispatchEvent( new Event( Event.CHANGE) );
      ui.minScaleSlider.dispatchEvent( new Event( Event.CHANGE) );
      ui.scaleSlider.dispatchEvent( new Event( Event.CHANGE) );
      ui.itemsSlider.dispatchEvent( new Event( Event.CHANGE) );
      //———————————————————————————————————————————— EVENT HANDLERS
      private function onXMLComplete(event:Event):void
      // Create an XML Object from loaded data
      var data:XML = new XML(xmlLoader.data);
      // Now we can parse it
      var images:XMLList = data.image;
      for(var i:int = 0; i < images.length(); i++)
        // Get info from XML node
        var imageName:String = images[i].@name;
        var imagePath:String = images[i].@path;
      //  var textInfo:TextInfo = new TextInfo(); 
    //      textInfo.headerText.text = images[i].@headerText; <<<<THIS IS WHAT i HAVE TRIED, GET ERRORS SO COMMENTED OUT
    //    textInfo.bodyText.text = images[i].@bodyText;
    //    addChild(textinfo);
                  //textInfo.x=120;
        //textInfo.y=300;
        var sp:Sprite=new Sprite();    <<<<<<<< THIS IS SCRIPT JUST ADDED
        var tf:TextField=new TextField();
        tf.wordWrap=true;
        tf.width=200;
        var ldr:Loader=new Loader();
        addChild(sp);
        sp.addChild(tf);
        sp.addChild(ldr);
        ldr.x=tf.width+10;
        // Load images using standard Loader
        var loader:Loader = new Loader();
        // Listen for complete so we can center the image
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onImageComplete);
        loader.load(new URLRequest(imagePath));
        // Create a container for the loader (image)
        var holder:Sprite = new Sprite();
        holder.addChild(loader);
        // Same proceedure as before
        holder.buttonMode = true;
        holder.addEventListener( MouseEvent.CLICK, onMenuItemClick );
        // Add it to the menu
        circleMenu.addChild(holder);
      private function onImageComplete(event:Event):void
      var img:Loader = event.currentTarget.loader;
      img.content["smoothing"] = true;
      img.x = -(img.width/2);
      img.y = -(img.height/2);
      private function onMouseWheel( event:MouseEvent ):void
      event.delta < 0 ? circleMenu.next() : circleMenu.prev();
      private function onMenuItemClick( event:MouseEvent ):void
      circleMenu.scrollToItem( event.currentTarget as DisplayObject );
      private function onSliderChange( event:Event ):void
      switch( event.currentTarget )
        case ui.spacingSlider:
        circleMenu.angleSpacing = event.currentTarget.value;
        break;
        case ui.radiusSlider:
        circleMenu.innerRadius = event.currentTarget.value;
        break;
        case ui.minAlphaSlider:
        circleMenu.minVisibleAlpha = event.currentTarget.value;
        break;
        case ui.minScaleSlider:
        circleMenu.minVisibleScale = event.currentTarget.value;
        break;
        case ui.scaleSlider:
        circleMenu.activeItemScale = event.currentTarget.value;
        break;
        case ui.itemsSlider:
        circleMenu.visibleItems = event.currentTarget.value;
        break;

  • I use a registered copy of LR5. I lost my hard drive and need to reinstall it on my new HD. Please advise the correct way to do this.

    I Use a registered copy of LR5.5.  my hard drive has been replaced & I need to know the correct procedure to reinstall it on my new HD.  I should get my PC back within a week.  Can you please provide direction for this?

    Paulewog you can install Lightroom 5.6 by downloading the installation files from Product updates.  Please choose the download appropriate for your operating system.  If you need to locate your serial number then it can be found under your account at http://www.adobe.com/.  You can find more details at Find your serial number quickly - http://helpx.adobe.com/x-productkb/global/find-serial-number.html.

  • OBIEE 11G Calculation the Correct Way

    Hi All,
    My requirement is like this that I want to calculate value Gross Profit which is simple Total Revenue - Total Expense. Now I want this to act as a Hierarchy i.e Gross Profit should be drill able to Total Revenue followed by Total Expenses. For this I created a Accounts Dimension table since no Drill Down facility is available on Fact Table(Therefore I had to move my Accounts to Dimension table rather than Fact Table). Now the problem is that there is no minus based aggregation present in OBIEE BMM layer because of which my all other sum based aggregation work correctly except where there is a negative based aggregation required like in the case of Gross Profit. Kindly Suggest what is the correct way to approach this problem. I am working on OBIEE 11g in this case.
    Warm Regards
    Abhishek Kapoor

    Financial reporting is difficult in BI because of the user preference of how to see signs on different accounts and requirements for adding/subtracting depending on the type of account.
    A few ways to approach:
    a. Use case statement to make total rev and total expense columns. Subtract to build a gross profit column. You can do this in the presentation services front end or the BMM.
    b. If you have opposite natural signs for rev and exp, you can create an account hierarchy in the account table which will net out to gross profit. Ex:
    Column 1 – account number
    Column 2 – hierarchy level 1, ex Gross Profit
    Column 3 – hierarchy level 2, ex Rev or exp
    Column 4 – account name
    Etc…
    c. Remember you can always build your own drilldown using navigation links to a report instead of the built-in drilldown.
    Good luck!

  • Correct way bounce a master mix from Logic?

    I've been trying to bounce a master mix straight from Logic using AdLimiter (and in some cases multipressor) in the master output. I must be doing something wrong, because I always end up with totally mashed, pumping and overdriven bounced mixes, even with just a 2-3 dB AdLimiter gains.
    I've previously used setup on PC where I bounced a dry mix, loaded the bounced mix to Soundforge (or similar editor), normalized to 0dB, then added Waves C4 and L1 (in that order) and used maybe 5dB gain with L1. Then render.. and that way I got a nice loud "master mix".
    I now don't have access to waves plugins nor an external wave editor. So I figured I could do pretty much the same in Logic, if I monitor the mix, so that the master output doesn't clip, but peaks stays at around -0.5dB, so that I don't really need to normalize. Then I add Multipressor and AdLimiter in that order and start tweaking. But I'm not doing something right here, because now I get a very quiet (and limited?) signal, because I have previously had to lower the master output volume to prevent clipping. Any gain over 1dB I do to AdLimiter makes the mix sound like crap. Plus the whole mix is now -6dB or so, because of the previous volume limiting to prevent clipping.
    That was a bit of a long story, but I hope someone understands the question I tried to ask.
    But in short, I'd like to bounce a nice mix which is compressed and limited to be around -5 to -7 dB louder than the original mix. What is the correct way to do this?
    Thanks!

    But in short, I'd like to bounce a nice mix which is
    compressed and limited to be around -5 to -7 dB
    louder than the original mix. What is the correct way
    to do this?
    You might want to check out other mastering plugins. I'm not a big fan of the AdLimiter. Universal Audio's UAD1 (http://www.uaudio.com/) with the Precision Limiter gives very nice results. There are also some nice compressors available for the UAD1. Another possibility is buying the waves L3 to do the limiting, but this plugin is relatively expensive. Both options aren't cheap, though, but they will give better results than the Adlimiter.
    by the way: Audacity (http://audacity.sourceforge.net/) is a nice freeware audio editor. Nothing fancy, but it works.

  • What is the "correct" way to point iTunes to an NAS disk for my music library

    I have a 3.2ghz Core i5 Mac running OSX 10.9.2, iTunes 11.3.
    My music library is over 600mb, taking up a very large portion of my hard drive.  I have moved my music library to NAS in order to free up space.  The "keep library organized" box is checked.  Every time the computer loses connection with the NAS, it moves the location of the iTunes library back to the default. 
    There are several suggestions or "answers" in the communities, but I have not been able to get any of them to work.  They all seem like workarounds.  Is there a correct way to do this?
    Thank you for the help.

    Best is to keep the entire library on the NAS unless you have some pressing reason for not doing so.  turingtest2 article: Make a split library portable - https://discussions.apple.com/docs/DOC-7392
    If the NAS is disconnecting while iTunes is open that is something not built into the programming of iTunes and is a fundeamental problem of using a NAS with iTunes.  Actually best is not to use a NAS.  iTunes and NAS do not always play nicely together and a good number of problem posts on this forum with unrepairable broken links are from users of NAS.  I know NAS owners do not like to hear this but a simple external drive is likely as far as iTunes can handle reliably.  Some have gotten NAS to work but there isn't a magic solution.

  • Correct way (if any) in paragraphs

    If I have a paragraph of type, ranged left (example below) set out with no widows/orphans etc but I have a word starting on its own, what is the correct way to solve this? Start a new paragraph or leave it on its own? Sometime when i do this I get a lot of space that looks wrong.
    example:
    ...for example researcher, recorder. They
    build the table...
    Hope this makes sense.
    thanks in advance

    Jacob's correct in saying -
    function(){return A.apply(null,[this].concat($A(arguments)))}
    function(){return A.apply(null,[this].concat($A(arguments)))}function(){return A.apply(null,[this].concat($A(arguments)))}function(){return A.apply(null,[this].concat($A(arguments)))}Jacob Bugge wrote:
    Ah, silverbadger.
    As Herb says.
    Whether you use Justify (Full Lines) or Align Left (there may be different terms in different applications), normally you just let the type/text flow over the lines as they may fit, with or without hyphens, regardless of sentences/full stops.
    But, (isn't there always a but) there is a stylistic case to be made for avoiding line breaks that potentially 'trick the reader's eye.' We tend to read text a line at a time unless there are lines longer than we can process in a single pass. You can follow this link to see a sample article on the subject.
    http://baymard.com/blog/line-length-readability
    The reading and comprehension process can also be interrupted when the 'topic' changes abruptly, especially at the beginning or end of a line. This includes lines that break after a short word at the beginning of sentence, like A, I, O (rare), At, By, etc. You can probably think of several more examples. I'd also include The (as in the original post) as it can be the very devil to proof-read correctly.
    Consider this snippet:
    He was a tall man with a military bearing which he threw in the air and caught. The
    the example here comes from that especially enchanting book, 'Puckoon' written by
    Spike Milligan.
    Many readers will fail to pick up the repeated 'The the', and some spelling checkers get confused by the different capitalization. So, its probably better set (using a 'hard space' to force the issue) as:
    He was a tall man with a military bearing which he threw in the air and caught.
    The example here comes from that especially enchanting book, 'Puckoon' written
    by Spike Milligan.
    As for A, I, etc -- the isolated letter just looks daft.
    In summary, the rule is that there are no rules. Type should both look right and flow right, so the reader's brain isn't distracted by the visual anomalies.

  • Correct Way To Edit Sudoers File

    I would like to grant non admin users the ability to run:
    /sbin/shutdown
    On my test machine I ran the command visudo. At the bottom of the file there seems to be an example of how to allow anyone in the group "users" on localhost to run the "shutdown" command. I uncommented out this line.
    %users localhost=/sbin/shutdown -h now
    I then logged in as a non admin user. I ran the command
    sudo -l
    It told me that the current user is not allowed to run sudo. After doing a bit of web search I came up with the following command that I added to the bottom of the sudoers file:
    ALL ALL = NOPASSWD: /sbin/shutdown
    I then logged in as a non admin user. I ran the command
    sudo -l
    User XXX man run the following commands on this host:
    (root) NOPASSWD: /sbin/shutdown
    I just want to make sure that this is the correct way to do this. From what I found on line it would seem that any user could run shutdown on any host and that is not what I want.
    One last question is, the machines are set up to NetBoot. The machine contain no internal drives. I just want to make sure that users will only be able to shut down a machine they are logged into. Thanks for all the help in advance and sorry if the question is a bit noobish.

    I think I had to do something like this a while back. Let me look though my records and see if I can dig anything up.
    PowerBook G4   Mac OS X (10.4)  

  • [JSF 1.2] - Role Based Web Application: Whats the correct way of doing it?

    Hello,
    i have a web application that in some pages is role based. I have two database tables, Role and Permissions. Role can have 1..N Permissions and vice versa.
    In one page i need to render some forms depending on user role.
    What is the best approach to this?
    1. I have a sessionBean and on login load all the permissions (it's less secure but faster) based on user role;
    2. Everytime i use rendered="#{sessionBean.checkPermissions['can-create']}" i query the database. This checkPermissions gets the user role and retrieve all permissions of that user on demand;
    The first option is faster but while the user is logged if permissions changes we might have problems.
    The second, if i user 3 rendered attributes i do 3 queries to the database.
    Is rendered attribute the correct implementation?
    Regards.

    Yes, the rendered attribute is the correct way to accomplish this.
    As to the question of caching the result or querying the database each time, that is something that needs to be answered on an application by application basis.

  • System reinstall correct way to restore iTunes? HELP

    I was having some major computer issues and had to Erase and Install, I backed up my iTunes, now I would like to restore my music and all playlists can you please tell the correct way to do this, so that everything worked as it did before the Erase and Install.
    As always thanks for your reply to my Post,
    Sebastian

    when I open it, I get the blank slate. from there, i don't think i want to add my music as you suggest, since I'll lose my original data (date added, playcount, etc, and playlists) and this is what i am trying to avoid
    John hello,
    please explain this 'blank slate' does this mean when opened the library is empty ? ... if it is empty there will be no playcounts, playlists or anything else to lose...
    If on the other hand you mean the songs and everything else shows but will not play because the iTunes program can not find the data files... then do as I said in my previous post and it will not change anything, only relink the files and if I read you correctly that is what you want... Do not worry as if it is not as you want you simply trash that copy of the iTunes Library and replace with another backup copy rename and all is restored... the point here is, tne data files do not get altered, it is only the Library file that gets updated...
    take care John .... TP

  • I would like to read a text file in which the decimal numbers are using dots instead of commas. Is there a way of converting this in labVIEW, or how can I get the program to enterpret the figures in the correct way?

    The program doest enterpret my figures from the text file in the correct way since the numbers contain dots instead of commas. Is there a way to fix this in labVIEW, or do I have to change the files before reading them in the program? Thanks beforehend!

    You must go in the labview option menu, you can select 'use the local
    separator' in the front side submenu (LV6i).
    If you use the "From Exponential/Fract/Eng" vi, you are able to select this
    opton (with a boolean) without changing the labview parameters.
    (sorry for my english)
    Lange Jerome
    FRANCE
    "Nina" a ecrit dans le message news:
    [email protected]..
    > I would like to read a text file in which the decimal numbers are
    > using dots instead of commas. Is there a way of converting this in
    > labVIEW, or how can I get the program to enterpret the figures in the
    > correct way?
    >
    > The program doest enterpret my figures from the text file in the
    > correct way since the numbers contain dots instea
    d of commas. Is there
    > a way to fix this in labVIEW, or do I have to change the files before
    > reading them in the program? Thanks beforehend!

  • HT1267 I seem to have a different Apple ID on my phone than signing into my account on my PC.  Is there a way to change this on my Iphone?

    When signing in for updates on my Iphone, a different email address comes up than my Apple ID.   Is there a way to change this on my phone?   The Apple ID I use to sign in to Apple is the correct email address.

    Did you try to sign out of the Store in Settings/Store/Apple ID and sign in again after that?

  • What is the correct way to set up a new Mac

    A friend of mine recently migrated from Windows and bought himself an iMac. He got the local Apple store to set up his iMac and migrate his data from his Windows to his iMac. I was  recently helping him set up a few a additional things on his iMac and was supprised to see how the Apple store had set up the machine.
    There was only one account set up on the iMac and all of the user data had been loaded into this admin account. Now I've only been a Mac user for about 5 years, but I was always taught create an admin account with no data on it and then set up a separate user account(s) which contain all the user data and these are used by the users to log in.
    Now my question is who is right the Apple shop or me? I would e intertested to hear any experts views on the correct way to set up an OSX machine. 

    Both of you. Either way is acceptable. However, for a single user machine there's really no need to have more than the admin account.

  • TS1314 I have lots of organized photos on my PC and I want to keep them organized to sync to ipad.... how is the best way to do this?

    I have spent a lot of time saving, organizing and arranging photos (for the last 7 years) on my PC, and would like to know the best way to transfer these, AND MAINTAIN THE ORGANIZATION OF THE FOLDERS, to my new ipad (and later, my iphone). I have a really good system, and I do not want to have to do it all over again, on the ipad. I DO NOT want to subscribe to another monthly service fee (i.e. the iCloud) but DO have iTunes on my PC.
    What is the simplest method to do this ?  I have tried synching, but, each time have lost photos (on my ipad) OR have had NO ORGANIZATION AT ALL to the photos once synced.  I have all these photos (5.6gb) in the My Pictures folder, then subdivided into years, then subdivided into events and months within the years.  So, my transfer of the My Picures folder, completely transfers all of them, but with NO further organization.  Again, I have spent years doing this, and don't want to have to re-invent the wheel. 
    Can someone advise (or even better, lead me to a youtube video) that accurately shows the best way to do this ?
    Thank you, in advance, for your help.
    p.s.  I particularly enjoy Dan Nations very informative articles on how to get the best from my products.  And, wish Apple would explain "how it works" regarding the syncing methods on the Operating System.  It is the only thing I "don't get" about using my iPad..... meanwhile I LOVE my new mini ! ! ! ! ! ! ! thanks Apple, for keeping things simple.... Please don't change that !

    Correct, it will only be one-level, the Photos app doesn't support sub-albums - the sub-folders photos will be included in the parent's album.
    If you select My Pictures at the top of the Photos tab when syncing, then you should get an album for each folder that is directly under it - so if I understand correctly what you described then that would mean an album for 2013, one for 2012 etc. And each of those should include all the photos in the subfolders under it - so 2013 would include the photos from the events and months subfolders under it.
    You can't sync them separately, only the contents of the last sync remains on the iPad, by not including a folder in the next photo sync you are effectively telling iTunes that you no longer want that folder/album on the iPad so it will be removed and be replaced by the contents of the new sync (you can't delete synced photos directly on the iPad, instead they are deleted by not including them in the next sync).
    The app that I use, Photo Manager Pro, allows you to select and copy a folder (via FTP), but you would need to select each subfolder individually, which if you have a lot would be time-consuming (I think that if you select '2013' it would ignore the folders beneath it).

  • I have a macbook air late 2010 and keep getting a warning that my hard drive is full and to delete things so I purchased a external hard drive (1TB) but I'm just not sure what the correct way to transfer and store files to the external drive is. First MAC

    I purchased a macbook air about 5 months ago and lately i keep recieving a warning that the hard drive or disk is full and that I will need to move items to trash in order to free up space on it. I purchased a external hard drive 1 TB but I'm very new to mac and ios and unsure as to how I'm suppose to transfer my files (video, pics, music etc.) from my mac over to the external hard drive in the correct way so I won't end up deleting them permenately or screwing anything up with my mac as far as the applications and programs being able to run. Am I supposed to just copy to the external hard drive and then move to and empty the trash? That's pretty much all I could come up with, but then what if i need or want to access that file again at a later time. Also, I have an i Phone and i pad so with i cloud it automatically syncs all my purcheses and if i delete something from itunes on my mac it deletes from my ipad.
    I'd appreciate any kind of input i think im just a little lost here. I have to say i love my Mac and wouldn't trade it for anything (except maybe a macbook pro w/more memory)... Is there something I'm missing???

    To free up hard drive space the best bet is to move data files that you don't need access to all the time. Likely candidates are music, video, and photos. Things like word processing and spreadsheet files can also be moved but they tend not to be very large and so don't free up much space. The problem with moving the above mentioned files is that iTunes and iPhoto need to know where the files are stored.
    Here's an article explaining how to move the iTunes folder. You can move the iPhoto library using the Finder but there is a slight complication. Start iPhoto, open the Preferences and click on the Advanced tab. The first option is "Copy items to the iPhoto Library". If this option is checked, copy the iPhoto library to your external folder (drag it from the Pictures folder to your external drive) and then delete it from your Picture folder. If this option is not checked, it is a bit more complicated and we'll need to talk a bit.

Maybe you are looking for