summaryrefslogtreecommitdiff
path: root/src/plugins/db.core/src/com/motorolamobility/studio/android/db/core/command/UnmapDatabaseHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/db.core/src/com/motorolamobility/studio/android/db/core/command/UnmapDatabaseHandler.java')
-rw-r--r--src/plugins/db.core/src/com/motorolamobility/studio/android/db/core/command/UnmapDatabaseHandler.java107
1 files changed, 107 insertions, 0 deletions
diff --git a/src/plugins/db.core/src/com/motorolamobility/studio/android/db/core/command/UnmapDatabaseHandler.java b/src/plugins/db.core/src/com/motorolamobility/studio/android/db/core/command/UnmapDatabaseHandler.java
new file mode 100644
index 0000000..6ce8ea8
--- /dev/null
+++ b/src/plugins/db.core/src/com/motorolamobility/studio/android/db/core/command/UnmapDatabaseHandler.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.motorolamobility.studio.android.db.core.command;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.ElementListSelectionDialog;
+
+import com.motorola.studio.android.common.utilities.EclipseUtils;
+import com.motorolamobility.studio.android.db.core.i18n.DbCoreNLS;
+import com.motorolamobility.studio.android.db.core.ui.IDbMapperNode;
+import com.motorolamobility.studio.android.db.core.ui.IDbNode;
+import com.motorolamobility.studio.android.db.core.ui.ITreeNode;
+
+public class UnmapDatabaseHandler extends AbstractHandler implements IHandler
+{
+
+ private IDbMapperNode dbMapperNode;
+
+ public UnmapDatabaseHandler()
+ {
+
+ }
+
+ public UnmapDatabaseHandler(IDbMapperNode node)
+ {
+ this.dbMapperNode = node;
+ }
+
+ public Object execute(ExecutionEvent event) throws ExecutionException
+ {
+ List<ITreeNode> mappedDbNodes = dbMapperNode.getChildren();
+ List<ITreeNode> dbNodesToUnmap = null;
+ if (!mappedDbNodes.isEmpty())
+ {
+ dbNodesToUnmap = queryDbPath(mappedDbNodes);
+ }
+ IStatus status = dbMapperNode.unmap(dbNodesToUnmap);
+ if ((status.getCode() != IStatus.CANCEL) && !status.isOK())
+ {
+ EclipseUtils.showErrorDialog(DbCoreNLS.UnmapDatabaseHandler_Error_Title,
+ DbCoreNLS.UnmapDatabaseHandler_Error_Description, status);
+ }
+
+ return null;
+ }
+
+ @SuppressWarnings(
+ {
+ "unchecked", "rawtypes"
+ })
+ private List<ITreeNode> queryDbPath(List<ITreeNode> mappedDbNodes)
+ {
+ Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+
+ ElementListSelectionDialog listDialog =
+ new ElementListSelectionDialog(shell, new LabelProvider()
+ {
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
+ */
+ @Override
+ public String getText(Object element)
+ {
+ if (element instanceof IDbNode)
+ {
+ IDbNode dbNode = (IDbNode) element;
+ return dbNode.getName();
+ }
+ return super.getText(element);
+ }
+ });
+ listDialog.setElements(mappedDbNodes.toArray());
+ listDialog.setTitle(DbCoreNLS.UI_UnmapDatabaseAction_Title);
+ listDialog.setBlockOnOpen(true);
+ listDialog.setMultipleSelection(true);
+ listDialog.open();
+ Object[] result = listDialog.getResult();
+ List asList = Arrays.asList(result);
+ List<ITreeNode> checkedList = Collections.checkedList(asList, ITreeNode.class);
+ return checkedList;
+ }
+
+}