Quantum version 2.4.1
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / view / driver / DeleteDriverAction.java
diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/driver/DeleteDriverAction.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/driver/DeleteDriverAction.java
new file mode 100644 (file)
index 0000000..324ff6d
--- /dev/null
@@ -0,0 +1,86 @@
+package com.quantum.view.driver;
+
+import java.util.List;
+
+import com.quantum.ImageStore;
+import com.quantum.Messages;
+import com.quantum.model.Bookmark;
+import com.quantum.model.BookmarkCollection;
+import com.quantum.model.JDBCDriver;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.actions.SelectionListenerAction;
+
+/**
+ * This action deletes JDBC Drivers from the JDBC Driver collection.
+ * 
+ * @author BC Holmes
+ */
+public class DeleteDriverAction extends SelectionListenerAction {
+
+       private final IViewPart viewPart;
+
+       /**
+        * @param text
+        */
+       protected DeleteDriverAction(IViewPart viewPart, ISelectionProvider selectionProvider) {
+               super(Messages.getString(DeleteDriverAction.class, "text"));
+               this.viewPart = viewPart;
+               selectionProvider.addSelectionChangedListener(this);
+               setImageDescriptor(ImageStore.getImageDescriptor(ImageStore.DELETE));
+       }
+       
+       public void run() {
+               JDBCDriver driver = getJDBCDriver();
+
+               if (driver != null) {
+                       Bookmark[] bookmarks = BookmarkCollection.getInstance().getBookmarks();
+                       boolean found = false;
+                       for (int i = 0, length = bookmarks == null ? 0 : bookmarks.length; 
+                                       driver != null && !found && i < length; i++) {
+                               found |= driver.equals(bookmarks[i].getJDBCDriver());
+                       }
+                       
+                       if (found) {
+                               MessageDialog.openWarning(getShell(), 
+                                               Messages.getString(DeleteDriverAction.class, "failed"),
+                                               Messages.getString(DeleteDriverAction.class, "inUse"));
+                       } else {
+                               if (MessageDialog.openConfirm(getShell(), 
+                                       Messages.getString(DeleteDriverAction.class, "confirm"),
+                                       Messages.getString(DeleteDriverAction.class, "confirmText", 
+                                                       new Object[] { driver.getName() }))) {
+               
+                                       if (!BookmarkCollection.getInstance().removeDriver(driver)) {
+                                               MessageDialog.openWarning(getShell(), 
+                                                               Messages.getString(DeleteDriverAction.class, "failed"),
+                                                               Messages.getString(DeleteDriverAction.class, "cant"));
+                                       } 
+                               }
+                       }
+               }
+       }
+       
+       /**
+        * @return
+        */
+       private Shell getShell() {
+               return this.viewPart.getViewSite().getShell();
+       }
+
+       /**
+        * @return
+        */
+       private JDBCDriver getJDBCDriver() {
+               List list = getSelectedNonResources();
+               return list == null || list.size() == 0 ? null : (JDBCDriver) list.get(0);
+       }
+
+       protected boolean updateSelection(IStructuredSelection selection) {
+               return selection != null && !selection.isEmpty();
+       }
+}