Dragging and Dropping in iPhoto Events

Hi
When I try to drag and drop an event into another (mergin events) the event I try and move doesn't merge and the thumbnail changes to a mosaic preview - 9 photos minimized on the thumbnail - the only way I can merge is to select two events and then use merge button.
Has anyone else experienced this and if so is there a way to fix it - it would seem much easier to be able to drag and drop. My macbook works both ways but my iMac is the one causing the problem?

Are you able to drag individual photos to the desktop to into other events or an album? When you select an Event or photo and try to drag do you get a green dot with the number of photo in the Event so show? If not then open Font Book and make sure you have the Helvetica font. If it's there make sure it's activated. If it is, deactivate and then reactivate it. See if that won't jump start the dragging.
Do you Twango?
TIP: For insurance against the iPhoto database corruption that many users have experienced I recommend making a backup copy of the Library6.iPhoto database file and keep it current. If problems crop up where iPhoto suddenly can't see any photos or thinks there are no photos in the library, replacing the working Library6.iPhoto file with the backup will often get the library back. By keeping it current I mean backup after each import and/or any serious editing or work on books, slideshows, calendars, cards, etc. That insures that if a problem pops up and you do need to replace the database file, you'll retain all those efforts. It doesn't take long to make the backup and it's good insurance.
I've written an Automator workflow application (requires Tiger), iPhoto dB File Backup, that will copy the selected Library6.iPhoto file from your iPhoto Library folder to the Pictures folder, replacing any previous version of it. It's compatible with iPhoto 08 libraries. You can download it at Toad's Cellar. Be sure to read the Read Me pdf file.

Similar Messages

  • When I try to drag and drop to combine events in iPhoto, the drag accelerates out of control when it reaches the top or bottom of the screen. How can I slow it down?

    When I try to drag and drop to combine events in iPhoto, the drag accelerates out of control when it reaches the top or bottom of the screen. How can I slow it down?

    from iphoto  Help
    Album overview
    A photo album in iPhoto is just like one you would create with printed photos: It’s a collection of photos you select from your library and arrange in the order you want.
    You can create photo albums to:
    Focus on a particular subject, such as your favorite nature photos
    Group pictures that you want to send to a friend, post on a webpage, or burn to a CD or DVD
    Gather a decade of anniversary photos
    iPhoto has two kinds of photo albums:
    Standard photo albums: You create these albums (B, shown below) by selecting particular photos. You can add new photos by dragging them to the album (or using the Add To button), and you can remove photos at any time. All adding and removing is done manually; iPhoto doesn’t update standard albums automatically as you import new photos.
    Smart Albums: iPhoto creates these albums for you, based on criteria your specify. iPhoto then updates Smart Albums (A, shown above) for you as your library changes. For example, you could create a Smart Album containing:
    Photos of specific people, such as your family members. As you import new photos, iPhoto uses Faces to detect your family members, and automatically adds new photos of them to the Smart Album (after you’ve confirmed the matches in Faces).
    All the photos of your daughter taken on school field trips in third grade. Use Faces (to name your daughter) and keywords (to mark certain photos or events as “field trips”) to help specify the photos you want iPhoto to place in that Smart Album.
    Only photos taken with a specific camera, or photos matching other Exchangeable Image File (EXIF) information.
    You can make as many albums as you like, and you can include the same photo in several albums without making multiple copies of it.
    After you create an album, such as “Australia Adventures,” it appears in your Source list below Albums.
    In full-screen view, the album appears as a stack of photos below Albums.
    To further organize your library, you can group several albums (along with slideshows and projects) into a folder. For example, you could create a folder containing several years of birthday albums or a collection of albums with photos of your camping trips.
    To create a folder, see “Create a folder in the Source list and move items into it” in “Customize the Source list”.
    Folders appear only in the Source list, not in full-screen view.
    Note: A photo album is different from a photo book, which is a collection of photos you create to get professionally printed and bound. See this topic: Photo book overview.
    Copyright © 2014 Apple Inc. All rights reserved.
    LN

  • Is there any way of dragging and dropping an iCal event showing in week view across to a date in the left sidebar monthly calendar?

    Hi, Im not a frequent forum poster, as most of my questions can be found already answered on them!
    This is a question Ive had for a long time and it amazes me that no-one else seems to ask it. I check at each OS upgrade but its never there...
    Is there any way of dragging and dropping an iCal event showing in week view across to a date in the left sidebar monthly calendar?
    I was able to do this years ago in MS Outlook, and utilized it all the time when I needed to push things back, now I have to open the event and select an new date in the drop-down calendar for each & every event I want to move to a new month at the end of the month.
    If its definitely not possible, how to you ask apple to consider including it - it doesnt seem like a particularly difficult task.
    Thankyou
    Andrew.

    Andrew,
    Is there any way of dragging and dropping an iCal event showing in week view across to a date in the left sidebar monthly calendar?
    No, but you can use cut/paste. Cut (⌘X) the event, then click on the week where you want to move the event, and Paste (⌘V).
    If you have a suggestion for Apple to change that method use: Apple - Mac OS X - Feedback.

  • Can NOT drag and drop to combine Events

    I've combined Events zillions of times in iPhoto and drag-'n-drop in Aperture 3 also. Today, when I tried to drag one Event into another, it didn't work. It didn't 'release' into the new event when I let go of the mouse button. I restarted iPhoto - same problem. Rebooted my MBP, same problem.
    Tried to drag and drop a new photo into my Photostream (from Aperture this time) and the same problem. I click to drag, move the event, and then it appears 'ghosted' and will not release.
    I even went into my Sys Prefs to see if it was my mouse, but that looked OK, and I could not replicate this problems in other applications.
    I'd love to know why it does this (did I inadvertently check something somewhere) but more importantly, how do I fix this?
    Oh yes - I got an error message the first few time about repairing iPhoto, which I let it do - took about 10 minutes, and I've never seen that before in iPhoto. (Aperture, yes, a LOT...)
    Oh yes - I can 'Merge Events' from the Menu - that works, but seems cumbersome and the drag-and-drop has worked fine until today...
    I am stumpped...
    Thanks!
    Greg

    Option 1
    Back Up and try rebuild the library: hold down the command and option (or alt) keys while launching iPhoto. Use the resulting dialogue to rebuild. Choose to Repair Database. If that doesn't help, then try again, this time using Rebuild Database.
    If that fails:
    Option 2
    Download iPhoto Library Manager and use its rebuild function. (In Library Manager it's the FIle -> Rebuild command)
    This will create an entirely new library. It will then copy (or try to) your photos and all the associated metadata and versions to this new Library, and arrange it as close as it can to what you had in the damaged Library. It does this based on information it finds in the iPhoto sharing mechanism - but that means that things not shared won't be there, so no slideshows, books or calendars, for instance - but it should get all your events, albums and keywords, faces and places back.
    Because this process creates an entirely new library and leaves your old one untouched, it is non-destructive, and if you're not happy with the results you can simply return to your old one. 
    Regards
    TD 

  • Drag and drop in iphoto library

    My MacBookPro from 2006 died this week so I got a new 2013 MacBookAir. I am a digital artist and my iphoto library contains over 13000 images in it which I work with daily. I had them in a specific order but when the files were all loaded onto my new Mac they are all in a huge jumble. I'm at wits end trying to figure out how to make sense of them. In my old iphoto I could drag and drop them wherever I wanted them. I'm not sure what I'm doing now. I don't seem to be able to drag and drop in the library like I used to. I used to ignore the events thing, I didn't like it. Now it seems like events are more important. I was trying to work with them but I have 13000 events too - I started out trying to merge them but it will take forever. This is a real problem for me, for one thing I had them ordered by what rights I had purchased and where I got them from - that's all lost now but I would at least like to get them in order of subject. Any help out there? Maureen

    You can sort manually in the Photos mode if you uncheck the option to view the Event titles in the View menu.
    You would be best served by using albums and keywords to group the images as you need them.  Smart albums can be created to display all images with a particular keyword assigned to them.  Makes for quicker access to a specific group.
    A little extra work up front can save a lot of effort later on.
    OT

  • Drag and drop in iPhoto '11

    For almost thirty years drag-and-drop has been an Apple standard. Now, in iPhoto '11 I want to create a so-called "Album" of some photos chosen from an "Event." Naturally I create an album, select a number of photos and drag them into the new Album. What? I can't do this? Please tell me I'm doing something wrong. I'd hate to see another data point for Mac OS becoming the new Windows. Surely I can drag-and-drop photos into an Album, yes? Thanks for any help on this. If you can't put photos into Albums what are Albums for? By the way, when I created the Album it was automatically loaded with the photos in the Event I happened to have visible. What is up with that? Is this a preference to toggle?

    What happens when you try?
    Yes. You can still drag photos from an event to an album in the source list, only not to a smart album, and the dragging will be unresponsive, if the album already contains the photos.

  • Can't drag and drop my iPhoto library on to an external hard drive (Seagate Go Flex).

    I am trying to move my iPhoto library to an external hard drive (Seagate Go Flex wireless) but it won't let me drag and drop. When I drag the iphoto icon over the 'drop files here' it just disappears. No error message. I am running mountain lion. What can I do?

    Susie,
    (Seagate Go Flex wireless)
    What is your iPhoto version? And your Mac OS X version?
    With iPhoto '11 your iPhoto library needs to be on a drive formatted Mac OS X Extended (Journaled). Is your external drive formatted this way? If your drive is formatted differently, iPhoto will not be able to open the iPhoto library there.
    When I drag the iphoto icon
    And are you really trying to drag your photo library (from your "Pictures" folder) or your iPhoto application from the "Applications" folder? On MAcoS X 10.7 or later you will not be able to drag the application from the Applications folder.
    Regards
    Léonie

  • Image size too big after drag and drop from iphoto

    I capture around 30 images/day with a point and shoot digital camera (5 MB/image). These images are used as content for about 10 documents/day that I create in Pages. After importing them into the computer I convert to grayscale and resize (via batch processing) in photoshop, so that each image is about 2x2.67 inches, 300ppi, and drop into iphoto. This is the size/resolution that i want them to be when i import them into the pages documents I am creating. When i drag them into pages though they resize to 72 ppi, as if the default is that the document will be seen on the screen and not printed. I then have to resize them again from within pages, which is a pain. Does anybody know what I am doing wrong?
    Thank you.

    You'll get best help on a question like that on Adobe's InDesign forum.

  • Can't drag and drop from iPhoto

    For what ever reason my iPhoto will no longer allow me to drag photos and drop them into files on my desktop. It was letting my do it this morning so I would assume it is more a glitch than a permanent problem, if anyone could give me any suggestions as to how I could get it back in working order that would be great thank you.
    It is a
    Mac OS X Lion 10.7.3
    and Iphoto '11 version 9.1.5 (615)

    Hey Pencarnan, let's try to isolate this down a bit as there could be a few factors in play here.
    Would you create a new iPhoto library (hold down option and click "new library"), add a couple pictures to it, and try to drag/drop from that one? I want to see if this is going to be an issue with iPhoto, or with the OS.
    Let me know how it goes!

  • Can't drag and drop from iPhoto to iWeb anymore!

    I used to be able to drag photos from iPhoto into a photo page in iWeb. Now when I do so, large versions of the photos show up, overlapping one another instead of fitting neatly into little boxes on the photo page like they used to do. Does anyone have any idea what would cause this and how to fix it? I have the latest versions of iWeb and iPhoto.
    Thanks in advance.

    Never mind (duh). I was trying to put more than 99 pix on a page.
    Duh.

  • Drag and drop in Iphoto 6

    I am trying to import a folder with several sub folders into IPhoto 6. It seems to import into the library ok, but does not create the folder names. The help section says that a film folder by the same name should be created upon import. Any ideas
    From the help section:
    You can also drag individual photos or an entire folder from the Finder into iPhoto's photo viewing area. If you drag a folder, a film roll is created with the folder's name. If the folder you import contains subfolders, film rolls are created with each subfolder's name
    emac   Mac OS X (10.4.3)  

    RandyP:
    Welcome to the Apple Discussions. What roll title gets created and are there any unusual characters used in the folder names?
    Do you Twango?
    TIP: For insurance against the iPhoto database corruption that many users have experienced I recommend making a backup copy of the Library6.iPhoto database file and keep it current. If problems crop up where iPhoto suddenly can't see any photos or thinks there are no photos in the library, replacing the working Library6.iPhoto file with the backup will often get the library back. By keeping it current I mean backup after each import and/or any serious editing or work on books, slideshows, calendars, cards, etc. That insures that if a problem pops up and you do need to replace the database file, you'll retain all those efforts. It doesn't take long to make the backup and it's good insurance.
    I've written an Automator workflow application, iPhoto dB file backup, that will copy the selected Library6.iPhoto file from your iPhoto Library folder to the Pictures folder, replacing any previous version of it. You can download it at Toad's Cellar

  • Drag and Drop not working in iPhoto

    I have a brand new MacBook Pro running Lion, and recently when I try to drag and drop in iPhoto, it stops working.  I want to drag photos from iPhoto to a folder on my desktop in order to upload those pictures online.  I have never had a problem with drag and drop in Snow Leopard, but suddenly Lion does not want to let me do it.
    I checked around and found out about repair permissions, which I did, then I restarted the computer.  Drag and Drop worked for a few minutes, then all the sudden it wouldn't let me again.  I was in the same album, trying to drag and drop the same group of pictures, and nothing had changed when it just stopped working again.  I really don't want to have to restart the computer EVERY time it wont let me do this.  Does anyone have any other advice?  Command copy/paste works for now, but drag and drop is just easier so I'd like to get the issue resolved!  Oh, and my software is completely up to date as well.

    Does anybody have any ideas?
    I've updated to the new version of iTunes since I originally posted this,
    but the drag and drop feature is still not working. This is making it
    impossible for me to update anything on my iPod.
    Thanks!

  • Drag and Drop in custom components..

    hello friends,
    I am trying to devlop a schedule component. on part of this i trying to develop a functionality where the user can reschedure the appointment by drag and drop.  the dragdrop event in the container component is not triggered when ther user drag the appointment and drop it in the another container. can any one help me on this please. i have given below my source codes.
    Testbox.as
    package layouts.DayViewControl.containers
        import mx.core.Container;
        public class TestBox extends Container
            private var __timeAndXYCoOrdArray:Array;
            private var __xyDiff:int=0;
            public function TestBox()
                super();
                __timeAndXYCoOrdArray=new Array();
            protected override function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
                super.updateDisplayList(unscaledWidth,unscaledHeight);
                var totalSlots:int=24*2;
                var __lineThickness:int=1;
                var __lineAlpha:int=0.2;
                var boxHeight:uint=unscaledHeight/totalSlots;
                graphics.clear();
                var xPos:int=0;
                var ypos:int=0;
                graphics.lineStyle(2,0x000000,0.5);
                graphics.drawRect(0,0,unscaledWidth,unscaledHeight);
                var __boxHeight:int=unscaledHeight/totalSlots;
                var __minusCount:int=1;
                for(var i:int=0;i<totalSlots;i++){
                    var timeStr:String="";
                    if(i%2 == 0){
                        __lineThickness=2;
                        graphics.lineStyle(__lineThickness,0x000000,0.4);               
                    }else{
                        __lineThickness=1;
                        graphics.lineStyle(__lineThickness,0x000000,0.2);   
                    graphics.moveTo(xPos,ypos);
                    var tempYpos:int=ypos;
                    if(__xyDiff == 0){
                        __xyDiff=ypos-xPos;
                    graphics.lineTo(xPos+unscaledWidth,tempYpos);
                    ypos+=boxHeight;
                    var newYPos:int=0;
                    if(i == 0){
                        timeStr="00:00";
                    }else if(i%2 != 0){
                        if(i<=9){
                            timeStr="0"+(i-__minusCount).toString()+":30";
                        }else{
                            timeStr=(i-__minusCount).toString()+":30";                       
                        newYPos=ypos-__xyDiff;
                    }else if(i%2 == 0){
                        if(i<=9){
                            timeStr="0"+(i-__minusCount).toString()+":00";
                        }else{
                            timeStr=(i-__minusCount).toString()+":00";                       
                        __minusCount+=1;
                        newYPos=ypos-__xyDiff;
                    __timeAndXYCoOrdArray.push({XPos:xPos,YPos:newYPos,Time:timeStr});
            public function getXFromtime(inputTime:String):int{
                var returnVal:int=0;
                if(inputTime && inputTime != ""){
                    for (var j:int=0;j<__timeAndXYCoOrdArray.length;j++){
                        if(__timeAndXYCoOrdArray[j].Time.toString() == inputTime){
                            returnVal=parseInt(__timeAndXYCoOrdArray[j].XPos)
                            break;
                return returnVal;
            public function getYFromtime(inputTime:String):int{
                var returnVal:int=0;
                if(inputTime && inputTime != ""){
                    for (var j:int=0;j<__timeAndXYCoOrdArray.length;j++){
                        if(__timeAndXYCoOrdArray[j].Time.toString() == inputTime){
                            returnVal=parseInt(__timeAndXYCoOrdArray[j].YPos)
                            break;
                return returnVal;
            public function getTimeDifference():int{
                return __xyDiff;
    TimeDividerLines.as
    package layouts.DayViewControl
        import flash.events.MouseEvent;
        import flash.utils.Dictionary;
        import layouts.DayViewControl.containers.TestBox;
        import mx.collections.ArrayCollection;
        import mx.core.DragSource;
        import mx.core.EventPriority;
        import mx.core.UIComponent;
        import mx.events.DragEvent;
        import mx.managers.DragManager;
        public class TimeDividerLines extends TestBox
            private var __linesPerHour:int=4;
            private var __currentDate:Date;
            private var __timeAndXYCoOrdArray:Array;
            private var __dataComponentArry:Array;
            private var __totalAppointment:int=5;
            private var __xyDiff:int=0;
            private var __apptDataInfoArry:Array;
            private var __dataProviderChanged:Boolean=false;
            private var __reArrangeDataArrayCol:ArrayCollection;
            private var __sortedArrayCollection:ArrayCollection;
            private var __dragDropEnabled:Boolean=false;
            public function TimeDividerLines()
                super();
                //__timeAndXYCoOrdArray=new Array();
                __dataComponentArry=new Array();
                __apptDataInfoArry=new Array();
                __sortedArrayCollection=new ArrayCollection();   
            public function set dragDropEnabled(inputVal:Boolean):void{
                if(inputVal){
                    //set youself for drag and drop event
                    this.addEventListener(DragEvent.DRAG_ENTER,dragEnterEventHandler,false,EventPriority.DEFA ULT_HANDLER);
                    this.addEventListener(DragEvent.DRAG_OVER,dragOverEventHandler,false,EventPriority.DEFAUL T_HANDLER);
                    this.addEventListener(DragEvent.DRAG_DROP,dragDropEventHandler,false,EventPriority.DEFAUL T_HANDLER);
                    this.addEventListener(DragEvent.DRAG_COMPLETE,dropCompleteHandler);               
                }else{
                    this.removeEventListener(DragEvent.DRAG_ENTER,dragEnterEventHandler,false);
                    this.removeEventListener(DragEvent.DRAG_OVER,dragOverEventHandler,false);
                    this.removeEventListener(DragEvent.DRAG_DROP,dragDropEventHandler,false);               
                __dragDropEnabled=inputVal;
            private function dropCompleteHandler(event:DragEvent):void{
                trace("inside drop complete handler");
            private function dragEnterEventHandler(event:DragEvent):void{
                if(event.dragSource.hasFormat("Appointment")){
                    var dropTarget:UIComponent=UIComponent(event.currentTarget);
                    DragManager.acceptDragDrop(dropTarget);           
                    DragManager.showFeedback(event.ctrlKey ? DragManager.COPY : DragManager.MOVE);   
                    return;
                DragManager.showFeedback(DragManager.NONE);
            private function dragOverEventHandler(event:DragEvent):void{
                /* if(event.dragSource.hasFormat("Appointment")){
                    if(event.ctrlKey){
                        DragManager.showFeedback(DragManager.COPY);
                        return
                    }else{
                        DragManager.showFeedback(DragManager.MOVE);
                        return
                DragManager.showFeedback(DragManager.NONE); */
            private function dragDropEventHandler(event:DragEvent):void{
                //We need to do two things here. you need to add the dropped data to the data provider list.
                //and need need to update this entry to DB
                 /* if(event.dragSource.hasFormat("Appointment")){
                     var draggedbox:AppointmentDisplayBox=event.dragSource.dataForFormat("Appointment") as AppointmentDisplayBox;
                     var dropBox:TimeDividerLines=event.currentTarget as TimeDividerLines;
                     //create a new copy
                     var newBox:AppointmentDisplayBox=new AppointmentDisplayBox();
                     newBox=draggedbox;
                     newBox.x=dropBox.mouseX;
                     newBox.y=dropBox.mouseY;
                     this.addChild(newBox);
                 trace("11111111111111111111111111111111111111111")
            private function mouseDownHandler(event:MouseEvent):void{
                var draginit:AppointmentDisplayBox=AppointmentDisplayBox(event.currentTarget);
                var ds:DragSource=new DragSource();
                ds.addData(draginit,"Appointment");
                DragManager.doDrag(draginit,ds,event);
            override protected function createChildren():void{
                super.createChildren();
            override protected function commitProperties():void{
                 if(__dataProviderChanged){
                     __dataComponentArry=new Array();
                    for (var k:int=0;k<__apptDataInfoArry.length;k++){
                        var tempDispBox:AppointmentDisplayBox=new AppointmentDisplayBox();
                        tempDispBox.currentDate=this.currentDate;
                        tempDispBox.startTime=__apptDataInfoArry[k].StartTime.toString();
                        tempDispBox.endTime=__apptDataInfoArry[k].EndTime.toString();
                        tempDispBox.apptDataXml=__apptDataInfoArry[k].Data as XML;       
                        tempDispBox.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler);           
                        this.addChild(tempDispBox);
                        __dataComponentArry.push(tempDispBox);
                    __dataProviderChanged=false;
            private function sortTheCollectionValues(__inputArrayCol:ArrayCollection):ArrayCollection{
                var returnArrayCollection:ArrayCollection=new ArrayCollection();
                var tempArray:Array=new Array();
                for(var i:int=0;i<__inputArrayCol.length;i++){
                    tempArray.push({Length:(__inputArrayCol[i] as Array).length,Index:i});
                tempArray.sortOn("Length",Array.DESCENDING|Array.NUMERIC);
                for(var j:int=0;j<tempArray.length;j++){
                    returnArrayCollection.addItem(__inputArrayCol[tempArray[j].Index]);
                return returnArrayCollection;
            override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
                super.updateDisplayList(unscaledWidth,unscaledHeight);
                if(__dataComponentArry.length > 0){
                    __sortedArrayCollection=new ArrayCollection();
                    sortArray(__dataComponentArry);
                if(__sortedArrayCollection.length > 0 ){
                    //you need to sort the arraycollection based on the length first to draw the highest no. child array first
                    __sortedArrayCollection=sortTheCollectionValues(__sortedArrayCollection);
                    var appGap:int=2;
                    var endGap:int=10;
                    //var drawnApptObj:Array=new Array();
                    var existingChildArray:Array=new Array();   
                    var drawnApptObj:Dictionary=new Dictionary();
                    for(var l:int=0;l<__sortedArrayCollection.length;l++){
                        var apptWidth:int=0;
                        var innerArry:Array=__sortedArrayCollection[l] as Array;
                        existingChildArray=new Array();
                        //you need to recalculate the width
                        //for the first iteration you need to sort by height
                        //if(l == 0){
                        //    innerArry.sortOn("apptHeight",Array.NUMERIC|Array.DESCENDING);
                        //}else{
                            innerArry.sortOn(["isChild","apptHeight"],Array.NUMERIC|Array.DESCENDING);   
                        //innerArry.sortOn("apptHeight",Array.NUMERIC|Array.DESCENDING);
                        //first we need to find out any intersection appointment is there
                        var count:int=0;
                         for each(var tempApptDispBox:AppointmentDisplayBox in innerArry){
                            if(drawnApptObj[tempApptDispBox] == tempApptDispBox){
                                if(apptWidth < tempApptDispBox.width){
                                    apptWidth=tempApptDispBox.width;
                                    existingChildArray.push({index:count,object:tempApptDispBox});
                            count++;
                        if(apptWidth == 0){
                            apptWidth=(unscaledWidth - (endGap + (appGap*innerArry.length)))/innerArry.length;
                        //now you need to layout the childrens
                        var canDraw:Boolean=false;
                        var ismatch:Boolean=false;
                        for (var childCnt:int=0;childCnt < innerArry.length;childCnt++){
                             var tempDispBox:AppointmentDisplayBox=innerArry[childCnt] as AppointmentDisplayBox;
                             for (var i:int=0;i<existingChildArray.length;i++){
                                 if(existingChildArray[i].index == childCnt){
                                     ismatch=true;
                                     break;
                            if(childCnt == 0 && !ismatch){
                                tempDispBox.x=this.getXFromtime(tempDispBox.startTime.toString())+2;
                                canDraw=true;
                            }else if(existingChildArray.indexOf(childCnt) > -1 && childCnt != 0){
                                //tempDispBox.x=(existingChildArray[childCnt] as AppointmentDisplayBox).x+apptWidth+appGap;
                                canDraw=false;
                            }else if(childCnt != 0 && !ismatch){
                                tempDispBox.x=((existingChildArray[childCnt-1].object) as AppointmentDisplayBox).x+apptWidth+appGap;
                                canDraw=true;
                            if(canDraw){
                                tempDispBox.y=this.getYFromtime(tempDispBox.startTime.toString());   
                                tempDispBox.width=apptWidth;
                                tempDispBox.height=tempDispBox.apptHeight-2;
                                if(tempDispBox.isChild){
                                    drawnApptObj[tempDispBox]=tempDispBox;
                                existingChildArray.push({index:childCnt,object:tempDispBox});
                            canDraw=false;
                            ismatch=false;
                //first we need to sort the component array based on the height property to position the biggest appointment first
            private function sortArray(tempArry:Array):void{
                //var tempArry:Array=arrayClone(__datacompArray);
                 for(var i:int=0;i<tempArry.length;i++){
                     var tempDispBox:AppointmentDisplayBox=tempArry[i] as AppointmentDisplayBox;
                    var start:int=this.getYFromtime(tempDispBox.startTime.toString());
                    var end:int=this.getYFromtime(tempDispBox.endTime.toString());
                    tempDispBox.apptHeight=end-start;
                var indexArray:Array=new Array();
                var canContinue:Boolean=false;
                var loopArray:Array=new Array();
                loopArray=tempArry.concat(); // this will copy the array to loopArray
                var copyArry:Array=new Array();
                var k:int=0;
                while(k<loopArray.length){
                    loopArray.sortOn("apptHeight",Array.NUMERIC|Array.DESCENDING);
                    if(indexArray.length > 0){
                        if(indexArray.indexOf(k) >= 0){
                            canContinue=false;
                        }else{
                            canContinue=true;
                    }else{
                        canContinue=true;
                    if(canContinue){
                        var newArry:Array=new Array();
                        //newArry.push(tempArry[k]);                   
                        for (var innerCnt:int=0;innerCnt<loopArray.length;innerCnt++){
                            var locCanContinue:Boolean=false;
                            if(indexArray.length > 0){
                                if(indexArray.indexOf(innerCnt) >= 0){
                                    locCanContinue=false;
                                }else{
                                    locCanContinue=true;
                            }else{
                                locCanContinue=true;
                            if(locCanContinue && k != innerCnt){
                                var outerstartTime:Number=parseFloat(loopArray[k].startTime.toString().replace(":","."));
                                var outerendtime:Number=parseFloat(loopArray[k].endTime.toString().replace(":","."));
                                var innerStartTime:Number=parseFloat(loopArray[innerCnt].startTime.toString().replace(":","." ));
                                var innerEndtime:Number=parseFloat(loopArray[innerCnt].endTime.toString().replace(":","."));
                                if(outerstartTime == innerStartTime && outerendtime == innerEndtime){
                                    //newArry.push(tempArry.splice(innerCnt,1));
                                    newArry.push(loopArray[innerCnt]);
                                    indexArray.push(innerCnt);
                                }else if(outerstartTime == innerStartTime && outerendtime > innerEndtime){
                                    //newArry.push(tempArry.splice(innerCnt,1));
                                    newArry.push(loopArray[innerCnt]);
                                    indexArray.push(innerCnt);
                                }else if(outerstartTime  < innerStartTime && outerendtime == innerEndtime){
                                    //newArry.push(tempArry.splice(innerCnt,1));
                                    newArry.push(loopArray[innerCnt]);
                                    indexArray.push(innerCnt);
                                }else if(outerstartTime  < innerStartTime && outerendtime > innerEndtime){
                                    //newArry.push(tempArry.splice(innerCnt,1));
                                    newArry.push(loopArray[innerCnt]);
                                    indexArray.push(innerCnt);
                                }else if(outerstartTime > innerStartTime && outerendtime > innerEndtime && innerEndtime > outerstartTime){
                                    //newArry.push(tempArry.splice(innerCnt,1));
                                    newArry.push(loopArray[innerCnt]);
                                    loopArray[innerCnt].isChild=true;
                                    //indexArray.push(innerCnt);
                                }else if(outerstartTime < innerStartTime && outerendtime < innerEndtime && innerStartTime < outerendtime){
                                    //newArry.push(tempArry.splice(innerCnt,1));
                                    newArry.push(loopArray[innerCnt]);
                                    loopArray[innerCnt].isChild=true;
                                    //indexArray.push(innerCnt);
                                }else if(outerstartTime == innerStartTime && outerendtime < innerEndtime){
                                    newArry.push(loopArray[innerCnt]);
                                    loopArray[innerCnt].isChild=true;
                                }else if(outerstartTime > innerStartTime && outerendtime == innerEndtime){
                                    newArry.push(loopArray[innerCnt]);
                                    loopArray[innerCnt].isChild=true;
                        //newArry.push(tempArry.splice(k,1));
                        indexArray.push(k);
                        newArry.push(loopArray[k]);
                        __sortedArrayCollection.addItem(newArry);                   
                    copyArry=loopArray.concat();
                    loopArray=new Array();
                    for (var j:int=0;j<copyArry.length;j++){
                        if(indexArray.indexOf(j) < 0){
                            loopArray.push(copyArry[j]);
                    indexArray=new Array();               
            private function arrayClone(source:Array):Array{
                var returnArray:Array=new Array();
                for(var j:int=0;j<source.length;j++){
                    returnArray.push(source[j]);
                return returnArray;
            public function set currentDate(inputVal:Date):void{
                if(__currentDate != inputVal){
                    __currentDate=inputVal;
            public function get currentDate():Date{
                return __currentDate;
            public function set apptDataArray(inputVal:Array):void{
                if(!__dataProviderChanged && inputVal.length > 0){
                    __apptDataInfoArry=inputVal;
                    __dataProviderChanged=true;
                    invalidateProperties();
                    invalidateDisplayList();
    AppointmentDisplayBox.as
    package layouts.DayViewControl
        import mx.controls.TextInput;
        import mx.core.UIComponent;
        public class AppointmentDisplayBox extends UIComponent
            private var __startTime:String;
            private var __EndTime:String;
            private var __currentDate:Date;
            private var __apptData:XML;
            private var __height:Number;
            private var __isChild:Boolean=false;
            private var __modifiedWidth:Boolean=false;
            private var __docNameLable:TextInput;
            private var __appDetails:TextInput;
            public function AppointmentDisplayBox()
                super();
                this.setStyle("horizontalScrollPolicy","off");
                this.setStyle("verticalScrollPolicy","off");
                this.setStyle("borderStyle","solid");
                this.setStyle("verticalGap","0");
                this.setStyle("borderStyle","outset");       
                this.buttonMode=true;           
            protected override function createChildren():void{
                super.createChildren();
                if(!__docNameLable){
                    __docNameLable=new TextInput();
                    __docNameLable.editable=false;
                    __docNameLable.setStyle("horizontalScrollPolicy","off");
                    __docNameLable.setStyle("verticalScrollPolicy","off");
                    __docNameLable.setStyle("borderStyle","none");
                    //__docNameLable.setStyle("borderThickness","0");
                    __docNameLable.buttonMode=true;
                    addChild(__docNameLable);
                if(!__appDetails){
                    __appDetails=new TextInput();
                    __appDetails.editable=false;   
                    __appDetails.setStyle("horizontalScrollPolicy","off");
                    __appDetails.setStyle("verticalScrollPolicy","off");
                    __appDetails.setStyle("borderStyle","none");
                     __appDetails.setStyle("backgroundColor","0xB1FB17");
                     __appDetails.buttonMode=true;
                //    __appDetails.setStyle("borderThickness","0");
                    addChild(__appDetails);
            protected override function commitProperties():void{
                super.commitProperties();
                 if(__apptData != null){
                    __docNameLable.text=__apptData.DocName.toString();
                    __appDetails.text=__apptData.PatientID.toString()+"\n"+__apptData.Description.toString();                
                    invalidateDisplayList();
            protected override function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
                super.updateDisplayList(unscaledWidth,unscaledHeight);
                __docNameLable.setActualSize(unscaledWidth-1,20);
                __docNameLable.move(1,1);
                graphics.clear();
                var lineColor:uint=0x000000;
                graphics.lineStyle(1,lineColor,1);
                graphics.beginFill(0xFEFDFD,1)
                graphics.drawRect(0,0,unscaledWidth,22);
                graphics.endFill();
                __appDetails.setActualSize(unscaledWidth-1,unscaledHeight-22);
                __appDetails.move(1,23);
                graphics.drawRect(0,22,unscaledWidth,unscaledHeight-20);
            public function set startTime(inputVal:String):void{
                __startTime=inputVal;
            public function get startTime():String{
                return __startTime;
            public function set endTime(inputVal:String):void{
                __EndTime=inputVal;
            public function get endTime():String{
                return __EndTime;
            public function set currentDate(inputVal:Date):void{
                __currentDate=inputVal;
            public function get currentDate():Date{
                return __currentDate;
            public function set apptHeight(inputVal:Number):void{
                __height=inputVal;
            public function get apptHeight():Number{
                return __height;
            public function set isChild(inputVal:Boolean):void{
                __isChild=inputVal;
            public function get isChild():Boolean{
                return __isChild;
            public function set isModifiedWidth(inputVal:Boolean):void{
                __modifiedWidth=inputVal;
            public function get isModifiedWidth():Boolean{
                return __modifiedWidth;
            public function set apptDataXml(inputVal:XML):void{
                if(__apptData != inputVal){
                    __apptData=inputVal;
                    invalidateProperties();
                    invalidateDisplayList();
            public function get apptDataXml():XML{
                return __apptData;
    Test.mxml
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" xmlns:layouts="layouts.*"
        xmlns:DayViewControl="layouts.DayViewControl.*" xmlns:test="layouts.DayViewControl.containers.*">
        <mx:Script>
            <![CDATA[
                import mx.controls.TextInput;
                import layouts.DayViewControl.TimeDividerLines;
                import mx.events.DragEvent;
                import mx.managers.DragManager;
                import mx.core.DragSource;
                import layouts.DayViewControl.AppointmentDisplayBox;
                private function mouseDownHandler(event:MouseEvent):void{
                    var dragint:AppointmentDisplayBox=AppointmentDisplayBox(event.currentTarget);
                    //var dragint:TextInput=TextInput(event.currentTarget);
                    var ds:DragSource=new DragSource();
                    ds.addData(dragint,"Appoitment");
                    DragManager.doDrag(dragint,ds,event);               
                private function dragEnterHandler(event:DragEvent):void{
                    if(event.dragSource.hasFormat("Appoitment")){
                        var droptarget:TimeDividerLines=TimeDividerLines(event.currentTarget);
                        DragManager.acceptDragDrop(droptarget);
                        DragManager.showFeedback(event.ctrlKey?DragManager.COPY:DragManager.MOVE);
                        return;
                    DragManager.showFeedback(DragManager.NONE);
                private function dragDropHandler(event:DragEvent):void{
                    if(event.dragSource.hasFormat("Appoitment")){
                        var droppedObj:AppointmentDisplayBox=AppointmentDisplayBox(event.dragSource.dataForFormat("Ap poitment"));
                        //var droppedObj:TextInput=TextInput(event.dragSource.dataForFormat("Appoitment"));
                        var dropTarget:TimeDividerLines=TimeDividerLines(event.currentTarget);
                        droppedObj.x=dropTarget.mouseX;
                        droppedObj.y=dropTarget.mouseY;
                        dropTarget.addChild(droppedObj);
            ]]>
        </mx:Script>
        <mx:HBox width="100%" height="100%">
            <DayViewControl:TimeDividerLines width="50%" height="100%">
                <DayViewControl:AppointmentDisplayBox width="50" height="100" mouseDown="mouseDownHandler(event)"/>
            </DayViewControl:TimeDividerLines>
            <DayViewControl:TimeDividerLines width="50%" height="100%" dragEnter="dragEnterHandler(event)" dragDrop="dragDropHandler(event)"/>
        </mx:HBox>
    </mx:Application>

    First 3 .as are the component
    source. in the last test.mxml file i have written the drag and drop functionality.
    can any help me?? please

  • Drag and drop mapping UI element/functionality

    Hi All,
    we are searching for functionality, in which the UI should contain drag and drop mapping options.
    e.g.
    we have ztableA(cities) containing values:
    NewYork
    London
    Tokyo
    Moscow
    we have ztableB(countries) containing values:
    Russia
    UnitedStates
    Germany
    England
    the UI should contain above two table values vertically (cities on left side, countries on right), and the user should be able to map by dragging and dropping the cities with appropriate countries.
    initially, the screen will look like:
    NewYork     Russia
    London      UnitedStates
    Tokyo       Germany
    Moscow      England
    after drag and drop actions by the user, it will look like:
    NewYork     UnitedStates
    London      England
    Tokyo      
    Moscow      Russia
                Germany    
    after the mapping is saved by the user, i can save the paired values in 3rd ztable.  
    for this UI, how can we achive, are what is the preferred way to get this, using webdynpro abap or fpm or any other?.
    which UI elements we can use. We are on SAP ECC6, EHP7
    thanks in advance.
    Madhu_1980

    Hi,
    You can use Table UI with drag and Drop. create an Event handler for onDrop and read the drag source and drop target then you can append those to new table.
    Drag and Drop - Web Dynpro for ABAP - SAP Library
    Hope this helps u,
    Regards,
    Kiran

  • Dragging and dropping Cal invitations.

    Hi,
    I used to be able to drag and drop Cals into an e-mail (and it'd appear as a clear .ics card attachment). Now if I drag and drop a Cal event into the body, it looks like:
    Title of Event
    Scheduled: Oct 22, 2014, 11:00 AM to 12:00 PM
    Location: X Address
    The person receiving this e-mail would need to click on the time/downward arrow to add to the Cal. I'm afraid maybe some people who don't use Yosemite won't know the invitation is attached? Or am I getting this wrong?
    Thanks!

    I don't know why but this code doesnt work for me too.
    I am able to drag out only one mc and have a duplicate being
    positioned at the same position. But i am not able to drag the
    duplicate out from the same position.
    Here's what i want actually:
    1) when a movieclip starts to be dragged, create a duplicate
    of it located at its start position
    2) the duplicate can be dragged as well and when it is being
    dragged, there will be another duplicate of it at its start
    position.
    3 ) 2 version of the dragged movieclip; (a) should be above
    the other movieclips & (b) are not above of the other
    movieclips
    Is it possible to do it?
    X_x

Maybe you are looking for