--- /dev/null
+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();
+ }
+}