[162897] Handle multiple selection
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/StringArrayTableWizardSection.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/StringArrayTableWizardSection.java index 0cd33cb..0b2aead 100644 --- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/StringArrayTableWizardSection.java +++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/StringArrayTableWizardSection.java
@@ -12,6 +12,7 @@ package org.eclipse.jst.j2ee.internal.wizard; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import org.eclipse.jface.dialogs.Dialog; @@ -253,7 +254,8 @@ public void selectionChanged(SelectionChangedEvent event) { ISelection selection = event.getSelection(); if (editButton != null) { - editButton.setEnabled(!selection.isEmpty()); + boolean enabled = ((IStructuredSelection) selection).size() == 1; + editButton.setEnabled(enabled); } removeButton.setEnabled(!selection.isEmpty()); } @@ -276,10 +278,14 @@ } private void handleEditButtonSelected() { - ISelection selection = viewer.getSelection(); - if (selection.isEmpty() || !(selection instanceof IStructuredSelection)) + ISelection s = viewer.getSelection(); + if (!(s instanceof IStructuredSelection)) return; - Object selectedObj = ((IStructuredSelection) selection).getFirstElement(); + IStructuredSelection selection = (IStructuredSelection) s; + if (selection.size() != 1) + return; + + Object selectedObj = selection.getFirstElement(); String[] valuesForText = (String[]) selectedObj; EditStringArrayDialog dialog = new EditStringArrayDialog(getShell(), title, labelsForText, valuesForText); @@ -292,8 +298,8 @@ ISelection selection = viewer.getSelection(); if (selection.isEmpty() || !(selection instanceof IStructuredSelection)) return; - Object selectedObj = ((IStructuredSelection) selection).getFirstElement(); - removeStringArray(selectedObj); + List selectedObj = ((IStructuredSelection) selection).toList(); + removeStringArrays(selectedObj); } public void addStringArray(String[] stringArray) { @@ -329,6 +335,12 @@ valueList.remove(selectedStringArray); setInput(valueList); } + + public void removeStringArrays(Collection selectedStringArrays) { + List valueList = (List) viewer.getInput(); + valueList.removeAll(selectedStringArrays); + setInput(valueList); + } public void setInput(List input) { viewer.setInput(input);