if (foolingAroundWithAnnotationIndex(parent))
return;
FsIndexDescription fsid = getFsIndexDescriptionFromTableTreeItem(parent);
AddIndexKeyDialog dialog = new AddIndexKeyDialog(this, fsid.getTypeName(),
handleDefaultIndexKind(fsid.getKind()), getAlreadyUsedFeatures(fsid));
FsIndexKeyDescription newKey = addOrEditIndexKey(dialog, null);
if (null != newKey) {
addFsIndexKeyDescription(fsid, newKey);
updateKeySpec(new TableTreeItem(parent, SWT.NONE), newKey);
parent.setExpanded(true);
setFileDirty();
}
} else if (event.widget == removeButton) {
TableTreeItem item = tt.getSelection()[0];
if (foolingAroundWithAnnotationIndex(item))
return;
Object o = item.getData();
if (o instanceof FsIndexDescription) {
if (Window.CANCEL == Utility.popOkCancel("Confirm Remove",
"Do you want to remove this index?", MessageDialog.WARNING))
return;
removeFsIndexDescription((FsIndexDescription) o);
} else {
if (Window.CANCEL == Utility.popOkCancel("Confirm Remove",
"Do you want to remove this key?", MessageDialog.WARNING))
return;
TableTreeItem parent = item.getParentItem();
FsIndexDescription fsid = getFsIndexDescriptionFromTableTreeItem(parent);
removeFsIndexKeyDescription(fsid, (FsIndexKeyDescription) o);
}
tt.getTable().setSelection(tt.getTable().getSelectionIndex() - 1);
item.dispose();
setFileDirty();
} else if (event.widget == editButton || event.type == SWT.MouseDoubleClick) {
if (notAllowed("Adding an Index"))
return;
if (tt.getSelectionCount() != 1)
return;
TableTreeItem item = tt.getSelection()[0];
if (foolingAroundWithAnnotationIndex(item))
return;
Object o = item.getData();
if (o instanceof FsIndexDescription) {
FsIndexDescription fsid = (FsIndexDescription) o;
AddIndexDialog dialog = new AddIndexDialog(this, fsid);
if (dialog.open() == Window.CANCEL)
return;
valueChanged = false;
fsid.setLabel(setValueChanged(dialog.indexName, fsid.getLabel()));
fsid.setTypeName(setValueChanged(dialog.indexType, fsid.getTypeName()));
fsid.setKeys(setValueChangedKeys(dialog.keys, fsid.getKeys()));
fsid.setKind(setValueChanged(dialog.indexKind, handleDefaultIndexKind(fsid.getKind())));
updateIndexSpec(item, fsid);
if (valueChanged) {
packTable(tt.getTable());
setFileDirty();
}
} else { // editing a key
if (notAllowed("Adding an Index"))
return;
FsIndexKeyDescription key = (FsIndexKeyDescription) o;
TableTreeItem parent = item.getParentItem();
FsIndexDescription fsid = getFsIndexDescriptionFromTableTreeItem(parent);
AddIndexKeyDialog dialog = new AddIndexKeyDialog(this, fsid.getTypeName(),
handleDefaultIndexKind(fsid.getKind()), getAlreadyUsedFeatures(fsid), key);
valueChanged = false;