X-Git-Url: http://git.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/bookmark/DeleteAction.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/bookmark/DeleteAction.java new file mode 100644 index 0000000..c38ba7a --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/bookmark/DeleteAction.java @@ -0,0 +1,88 @@ +package com.quantum.view.bookmark; + +import java.util.Iterator; +import java.util.List; + +import com.quantum.ImageStore; +import com.quantum.Messages; +import com.quantum.model.BookmarkCollection; + +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.actions.SelectionListenerAction; + +/** + * @author root + * + */ +public class DeleteAction extends SelectionListenerAction { + + private IViewPart view; + + public DeleteAction(IViewPart view, ISelectionProvider selectionProvider) { + super(Messages.getString(DeleteAction.class.getName() + ".text")); + setImageDescriptor(ImageStore.getImageDescriptor(ImageStore.DELETE)); + this.view = view; + selectionProvider.addSelectionChangedListener(this); + } + + public void run() { + if (isEachSelectionInstanceOf(getSelectedNonResources().iterator(), BookmarkNode.class)) { + deleteBookmarks(); + } else if (isEachSelectionInstanceOf(getSelectedNonResources().iterator(), QueryNode.class)) { + deleteQueries(); + } + } + + /** + * + */ + private void deleteQueries() { + List nodes = getSelectedNonResources(); + for (Iterator i = nodes.iterator(); i.hasNext();) { + QueryNode queryNode = (QueryNode) i.next(); + if (queryNode != null) { + queryNode.getBookmark().removeQuery(queryNode.getQuery()); + } + } + } + + /** + * + */ + private void deleteBookmarks() { + List bookmarkNodes = getSelectedNonResources(); + boolean flag = MessageDialog.openConfirm(view.getSite().getShell(), + Messages.getString(getClass(), "confirmTitle"), + Messages.getString(getClass(), "confirmText")); + + for (Iterator i = bookmarkNodes.iterator(); flag && i.hasNext();) { + BookmarkNode bookmarkNode = (BookmarkNode) i.next(); + if (bookmarkNode != null) { + BookmarkCollection.getInstance().removeBookmark(bookmarkNode.getBookmark()); + } + } + } + + public boolean updateSelection(IStructuredSelection selection) { + return isEachSelectionInstanceOf(selection.iterator(), BookmarkNode.class) || + isEachSelectionInstanceOf(selection.iterator(), QueryNode.class); + } + + /** + * @param selection + * @param enabled + * @param selectionClass + * @return + */ + private boolean isEachSelectionInstanceOf(Iterator selection, Class selectionClass) { + boolean result = true; + for (Iterator i = selection; result && i.hasNext(); ) { + result &= (selectionClass.isInstance(i.next())); + } + return result; + } + +}