Author: schor Date: Fri Jul 19 13:39:30 2019 New Revision: 1863391 URL: http://svn.apache.org/viewvc?rev=1863391&view=rev Log: [UIMA-6094] when switching to Tree from TableTree, the setSelection no longer silently ignores out-of-bounds indexes, so check for validity before trying to set the selection
Modified: uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/AbstractImportablePartSection.java uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/AbstractSection.java uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/CapabilitySection.java uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/IndexSection.java uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/ParameterDelegatesSection.java uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/ParameterSection.java uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/PriorityListSection.java uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/SofaMapSection.java uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/TypeSection.java Modified: uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/AbstractImportablePartSection.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/AbstractImportablePartSection.java?rev=1863391&r1=1863390&r2=1863391&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/AbstractImportablePartSection.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/AbstractImportablePartSection.java Fri Jul 19 13:39:30 2019 @@ -25,7 +25,6 @@ import org.apache.uima.resource.metadata import org.apache.uima.resource.metadata.TypeSystemDescription; import org.apache.uima.taeconfigurator.editors.MultiPageEditor; import org.apache.uima.taeconfigurator.model.BuiltInTypes; -import org.eclipse.swt.custom.TableTreeItem; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.TreeItem; Modified: uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/AbstractSection.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/AbstractSection.java?rev=1863391&r1=1863390&r2=1863391&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/AbstractSection.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/AbstractSection.java Fri Jul 19 13:39:30 2019 @@ -2552,4 +2552,20 @@ implements Listener, StandardStrings { return "sorted"; return indexKind; } + + /** + * set the selection one above this item, unless it's the top one already. + * Used when removing the item + */ + public static void setSelectionOneUp(Tree tt, TreeItem item) { + int itemIndex = tt.indexOf(item); + maybeSetSelection(tt, itemIndex - 1); + } + + public static void maybeSetSelection(Tree tt, int itemIndex) { + TreeItem[] items = tt.getItems(); + if (itemIndex >= 0 && itemIndex < items.length) { + tt.setSelection(items[itemIndex]); + } + } } Modified: uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/CapabilitySection.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/CapabilitySection.java?rev=1863391&r1=1863390&r2=1863391&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/CapabilitySection.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/CapabilitySection.java Fri Jul 19 13:39:30 2019 @@ -44,8 +44,6 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeColumn; import org.eclipse.swt.widgets.TreeItem; @@ -235,7 +233,7 @@ public class CapabilitySection extends A TreeItem item = new TreeItem(tt, SWT.NONE); item.setText(TITLE_COL, CAPABILITY_SET); item.setData(cs[i]); - tt.setSelection(new TreeItem[] { item }); // set default selection + tt.setSelection( item ); // set default selection fillCapability(item, cs[i]); // if (0 == i) { item.setExpanded(true); @@ -541,7 +539,7 @@ public class CapabilitySection extends A createSofaHeaderGui(item); item.setExpanded(true); - tt.setSelection(new TreeItem[] { item }); + tt.setSelection( item ); if (tt.getItemCount() == 1) tt.getColumn(TITLE_COL).pack(); finishAction(); @@ -769,17 +767,14 @@ public class CapabilitySection extends A * @param itemKind the item kind */ private void handleRemove(TreeItem removeItem, int itemKind) { -// Table table = tt.getTable(); -// int previousSelection = tt.getSelectionIndex() - 1; int selectionIndex = tt.indexOf(tt.getSelection()[0]); - int previousSelection = selectionIndex - 1; Capability c = getCapability(removeItem); switch (itemKind) { case CS: { if (Window.CANCEL == Utility.popOkCancel("Confirm Remove", "This action will remove an entire capability set. Please confirm.", MessageDialog.WARNING)) { - tt.setSelection(tt.getItems()[selectionIndex + 1]); + maybeSetSelection(tt, selectionIndex + 1); return; } removeCapabilitySet(c); @@ -798,7 +793,7 @@ public class CapabilitySection extends A "Confirm Removal of Sofa", "This action will remove this Sofa as a capability, and delete its mappings if no other capability set declares this Sofa." + " Please confirm.", MessageDialog.WARNING)) { - tt.setSelection(tt.getItems()[selectionIndex + 1]); + maybeSetSelection(tt, selectionIndex + 1); return; } String sofaName = removeItem.getText(NAME_COL); @@ -834,7 +829,7 @@ public class CapabilitySection extends A if (Window.CANCEL == Utility.popOkCancel("Confirm Removal of Type", "This action will remove this type as a capability. Please confirm.", MessageDialog.WARNING)) { - tt.setSelection(tt.getItems()[selectionIndex + 1]); + maybeSetSelection(tt, selectionIndex + 1); return; } TreeItem[] features = removeItem.getItems(); @@ -859,7 +854,7 @@ public class CapabilitySection extends A throw new InternalErrorCDE("invalid state"); } - tt.setSelection(tt.getItems()[previousSelection]); + maybeSetSelection(tt, selectionIndex - 1); finishAction(); } @@ -1160,7 +1155,7 @@ public class CapabilitySection extends A } parentItem.setExpanded(true); tt.getColumn(NAME_COL).pack(); - tt.setSelection(new TreeItem[] { parentItem }); + tt.setSelection( parentItem ); c.setInputs(replaceFeaturesKeepingTypes(c.getInputs(), typeName, inputsL)); c.setOutputs(replaceFeaturesKeepingTypes(c.getOutputs(), typeName, outputsL)); Modified: uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/IndexSection.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/IndexSection.java?rev=1863391&r1=1863390&r2=1863391&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/IndexSection.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/IndexSection.java Fri Jul 19 13:39:30 2019 @@ -34,7 +34,6 @@ import org.apache.uima.taeconfigurator.w import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.window.Window; import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.TableTreeItem; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Event; @@ -282,8 +281,8 @@ public class IndexSection extends Abstra updateIndexSpec(new TreeItem(tt, SWT.NONE), id); - TreeItem[] items = tt.getItems(); - tt.setSelection(items[items.length - 1]); + + maybeSetSelection(tt, tt.getItemCount() - 1); packTree(tt); setFileDirty(); } else if (event.widget == addKeyButton) { @@ -322,9 +321,8 @@ public class IndexSection extends Abstra FsIndexDescription fsid = getFsIndexDescriptionFromTableTreeItem(parent); removeFsIndexKeyDescription(fsid, (FsIndexKeyDescription) o); } - TreeItem selectionItem = tt.getSelection()[0]; + setSelectionOneUp(tt, item); // tt.setSelection(tt.getTable().getSelectionIndex() - 1); - tt.setSelection(tt.getItems()[tt.indexOf(selectionItem) - 1]); item.dispose(); setFileDirty(); } else if (event.widget == editButton || event.type == SWT.MouseDoubleClick) { @@ -549,8 +547,9 @@ public class IndexSection extends Abstra downButton.setEnabled(false); if (selected) { if (null != parent && notBuiltInSelected) { - TreeItem firstItem = parent.getItems()[0]; - TreeItem lastItem = parent.getItems()[parent.getItems().length - 1]; + TreeItem[] items = parent.getItems(); + TreeItem firstItem = items[0]; + TreeItem lastItem = items[items.length - 1]; upButton.setEnabled(item != firstItem); downButton.setEnabled(item != lastItem); } Modified: uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/ParameterDelegatesSection.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/ParameterDelegatesSection.java?rev=1863391&r1=1863390&r2=1863391&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/ParameterDelegatesSection.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/ParameterDelegatesSection.java Fri Jul 19 13:39:30 2019 @@ -137,10 +137,7 @@ public class ParameterDelegatesSection e if (null != fcd) { addDelegateToGUI(fcd.getKey(), fcd.getSpecifier()); } - TreeItem[] items = tree.getItems(); - if (items.length > 0) - // scrolls to top, also - tree.setSelection(new TreeItem[] { items[0] }); + maybeSetSelection(tree, 0); } enable(); } Modified: uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/ParameterSection.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/ParameterSection.java?rev=1863391&r1=1863390&r2=1863391&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/ParameterSection.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/ParameterSection.java Fri Jul 19 13:39:30 2019 @@ -298,7 +298,7 @@ public class ParameterSection extends Ab splitGroupNames = false; clearAndRefillTree(usingGroupsButton.getSelection()); - tree.setSelection(new TreeItem[] { tree.getItems()[0] }); + maybeSetSelection(tree, 0); enable(); // sync settings page to catch use case of switching from sourceEditor @@ -784,7 +784,7 @@ public class ParameterSection extends Ab // fill(commonParms, item); // don't add common parsm, they're added by definition addGroupToModel(cg); cg.setNames(groupNameArray); - tree.setSelection(new TreeItem[] { item }); + tree.setSelection( item ); return new ConfigGroup(cpd, cg); } @@ -858,7 +858,7 @@ public class ParameterSection extends Ab } - tree.setSelection(new TreeItem[] { item }); + tree.setSelection( item ); return true; } Modified: uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/PriorityListSection.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/PriorityListSection.java?rev=1863391&r1=1863390&r2=1863391&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/PriorityListSection.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/PriorityListSection.java Fri Jul 19 13:39:30 2019 @@ -135,8 +135,7 @@ public class PriorityListSection extends item.setExpanded(true); } } - if (tree.getItemCount() > 0) - tree.setSelection(new TreeItem[] { tree.getItems()[0] }); + maybeSetSelection(tree, 0); enable(); } @@ -172,7 +171,7 @@ public class PriorityListSection extends TreeItem item = new TreeItem(tree, SWT.NONE); item.setText(PRIORITY_LIST); - tree.setSelection(new TreeItem[] { item }); + tree.setSelection( item ); setFileDirty(); } else if (event.widget == addButton) { // add type to set if (editor.isTypePriorityDescriptor() && !editor.getIsContextLoaded()) { @@ -235,7 +234,7 @@ public class PriorityListSection extends TreeItem previousSelection = getPreviousSelection(parent == null ? tree.getItems() : parent .getItems(), item); if (null != previousSelection) - tree.setSelection(new TreeItem[] { previousSelection }); + tree.setSelection(previousSelection); item.dispose(); setFileDirty(); } @@ -257,7 +256,7 @@ public class PriorityListSection extends new TreeItem(parent, SWT.NONE, i).setText(formatName(types[i])); TreeItem t = new TreeItem(parent, SWT.NONE, i + 1); t.setText(formatName(types[i + 1])); - tree.setSelection(new TreeItem[] { t }); + tree.setSelection( t); items[i].dispose(); items[i + 1].dispose(); @@ -268,7 +267,7 @@ public class PriorityListSection extends TreeItem t = new TreeItem(parent, SWT.NONE, i - 1); t.setText(formatName(types[i - 1])); - tree.setSelection(new TreeItem[] { t }); + tree.setSelection( t); new TreeItem(parent, SWT.NONE, i).setText(formatName(types[i])); items[i - 1].dispose(); Modified: uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/SofaMapSection.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/SofaMapSection.java?rev=1863391&r1=1863390&r2=1863391&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/SofaMapSection.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/SofaMapSection.java Fri Jul 19 13:39:30 2019 @@ -146,7 +146,7 @@ public class SofaMapSection extends Abst fillMap(inputAggrSofas, INPUT); fillMap(outputSofaNames, OUTPUT); - tree.setSelection(new TreeItem[] { tree.getItems()[0] }); + maybeSetSelection(tree, 0); if (0 == (inputAggrSofas.length + outputSofaNames.length)) { getSection().setText("Sofa Mappings (No Sofas are defined)"); Modified: uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/TypeSection.java URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/TypeSection.java?rev=1863391&r1=1863390&r2=1863391&view=diff ============================================================================== --- uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/TypeSection.java (original) +++ uima/uv3/uimaj-v3/trunk/uimaj-ep-configurator/src/main/java/org/apache/uima/taeconfigurator/editors/ui/TypeSection.java Fri Jul 19 13:39:30 2019 @@ -548,7 +548,7 @@ public class TypeSection extends Abstrac TreeItem[] items = tt.getItems(); for (int i = 0; i < items.length; i++) { if (td.getName().equals(((TypeDescription) items[i].getData()).getName())) { - tt.setSelection(new TreeItem[] { items[i] }); + tt.setSelection( items[i]); return; } } @@ -1009,9 +1009,7 @@ public class TypeSection extends Abstrac removeAllowedValue(td, av); // update GUI - TreeItem selectedItem = tt.getSelection()[0]; - tt.setSelection(tt.getItems()[tt.indexOf(selectedItem) - 1]); -// tt.setSelection(tt.getTable().getSelectionIndex() - 1); + setSelectionOneUp(tt, item); item.dispose(); } else { refresh(); @@ -1028,7 +1026,7 @@ public class TypeSection extends Abstrac * @param item the item */ // same - for built-in <could be created outside of the CDE> - private void handleRemoveFeature(TreeItem item) { + private void handleRemoveFeature(final TreeItem item) { TypeDescription td = getTypeDescriptionFromTableTreeItem(item.getParentItem()); FeatureDescription fd = getFeatureDescriptionFromTableTreeItem(item); @@ -1055,8 +1053,7 @@ public class TypeSection extends Abstrac refresh(); else { // update GUI - TreeItem selectedItem = tt.getSelection()[0]; - tt.setSelection(tt.getItems()[tt.indexOf(selectedItem) - 1]); + setSelectionOneUp(tt, item); // tt.getTable().setSelection(tt.getTable().getSelectionIndex() - 1); item.dispose(); } @@ -1156,7 +1153,7 @@ public class TypeSection extends Abstrac * * @param item the item */ - private void handleRemoveType(TreeItem item) { + private void handleRemoveType(final TreeItem item) { TypeDescription td = getTypeDescriptionFromTableTreeItem(item); @@ -1190,9 +1187,7 @@ public class TypeSection extends Abstrac } else { removeType(td, getMergedTypeSystemDescription()); // update GUI - TreeItem selectedItem = tt.getSelection()[0]; - tt.setSelection(tt.getItems()[tt.indexOf(selectedItem) - 1]); -// tt.getTable().setSelection(tt.getTable().getSelectionIndex() - 1); + setSelectionOneUp(tt, item); item.dispose(); }