editorTable.removeAll();
FileEditorMapping resourceType = getSelectedResourceType();
if (resourceType != null) {
IEditorDescriptor[] array = resourceType.getEditors();
for (int i = 0; i < array.length; i++) {
IEditorDescriptor editor = array[i];
TableItem item = new TableItem(editorTable, SWT.NULL);
item.setData(DATA_EDITOR, editor);
// Check if it is the default editor
String defaultString = null;
if (resourceType != null) {
if (resourceType.getDefaultEditor() == editor && resourceType.isDeclaredDefaultEditor(editor)) {
defaultString = WorkbenchMessages.FileEditorPreference_defaultLabel;
}
}
if (defaultString != null) {
item.setText(editor.getLabel() + " " + defaultString); //$NON-NLS-1$
} else {
item.setText(editor.getLabel());
}
item.setImage(getImage(editor));
}
// now add any content type editors
EditorRegistry registry = (EditorRegistry) WorkbenchPlugin
.getDefault().getEditorRegistry();
IContentType[] contentTypes = Platform.getContentTypeManager()
.findContentTypesFor(resourceType.getLabel());
for (int i = 0; i < contentTypes.length; i++) {
array = registry.getEditorsForContentType(contentTypes[i]);
for (int j = 0; j < array.length; j++) {
IEditorDescriptor editor = array[j];
// don't add duplicates
TableItem[] items = editorTable.getItems();
TableItem foundItem = null;
for (int k = 0; k < items.length; k++) {
if (items[k].getData(DATA_EDITOR).equals(editor)) {
foundItem = items[k];
break;
}
}
if (foundItem == null) {
TableItem item = new TableItem(editorTable, SWT.NULL);
item.setData(DATA_EDITOR, editor);
item.setData(DATA_FROM_CONTENT_TYPE, contentTypes[i]);
setLockedItemText(item, editor.getLabel());
item.setImage(getImage(editor));
} else { // update the item to reflect its origin
foundItem.setData(DATA_FROM_CONTENT_TYPE, contentTypes[i]);
setLockedItemText(foundItem, foundItem.getText());
}