package com.quantum.view.bookmark;

import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.actions.SelectionListenerAction;

import com.quantum.ImageStore;
import com.quantum.Messages;
import com.quantum.model.Bookmark;
import com.quantum.model.BookmarkCollection;


final class PasteAction extends SelectionListenerAction {
    private BookmarkClipboard bookmarkClipboard;
    /**
     * @param BookmarkView
     */
    public PasteAction(IViewPart view, BookmarkClipboard bookmarkClipboard, 
        ISelectionProvider selectionProvider) {
        super(Messages.getString(PasteAction.class.getName() + ".text"));
        setImageDescriptor(ImageStore.getImageDescriptor(ImageStore.PASTE));
        selectionProvider.addSelectionChangedListener(this);
        this.bookmarkClipboard = bookmarkClipboard;
    }
    public void run() {
		if (this.bookmarkClipboard.getBookmark() != null) {
			Bookmark bookmark = new Bookmark(this.bookmarkClipboard.getBookmark());
			String copyName = BookmarkCollection.getInstance().getCopyName(bookmark.getName());
			bookmark.setName(copyName); //$NON-NLS-1$
			BookmarkCollection.getInstance().addBookmark(bookmark);
		}
	}
    
    /* (non-Javadoc)
     * @see org.eclipse.ui.actions.SelectionListenerAction#updateSelection(org.eclipse.jface.viewers.IStructuredSelection)
     */
    protected boolean updateSelection(IStructuredSelection selection) {
        boolean enabled = super.updateSelection(selection);
        enabled &= this.bookmarkClipboard.getBookmark() != null;
        return enabled;
    }

}