use of org.jkiss.dbeaver.ui.editors.entity.EntityEditor in project dbeaver by serge-rider.
the class UndoChangesHandler method updateElement.
@Override
public void updateElement(UIElement element, Map parameters) {
IWorkbenchWindow workbenchWindow = element.getServiceLocator().getService(IWorkbenchWindow.class);
if (workbenchWindow == null || workbenchWindow.getActivePage() == null) {
return;
}
final IEditorPart activeEditor = workbenchWindow.getActivePage().getActiveEditor();
if (activeEditor instanceof EntityEditor) {
final DBECommandContext commandContext = ((EntityEditor) activeEditor).getCommandContext();
String text = WorkbenchMessages.Workbench_undo;
if (commandContext != null && commandContext.getUndoCommand() != null) {
text += " " + commandContext.getUndoCommand().getTitle();
}
element.setText(text);
}
}
use of org.jkiss.dbeaver.ui.editors.entity.EntityEditor in project dbeaver by serge-rider.
the class NavigatorHandlerObjectOpen method openEntityEditor.
public static IEditorPart openEntityEditor(@NotNull DBNNode selectedNode, @Nullable String defaultPageId, @Nullable String defaultFolderId, @Nullable Map<String, Object> attributes, IWorkbenchWindow workbenchWindow, boolean activate) {
if (selectedNode instanceof DBNDataSource) {
final DBPDataSourceContainer dataSourceContainer = ((DBNDataSource) selectedNode).getDataSourceContainer();
openConnectionEditor(workbenchWindow, dataSourceContainer);
return null;
}
try {
if (selectedNode instanceof DBNDatabaseFolder && !(selectedNode.getParentNode() instanceof DBNDatabaseFolder) && selectedNode.getParentNode() instanceof DBNDatabaseNode) {
if (defaultFolderId == null) {
defaultFolderId = selectedNode.getNodeType();
}
selectedNode = selectedNode.getParentNode();
}
IEditorPart editor = findEntityEditor(workbenchWindow, selectedNode);
if (editor != null) {
boolean settingsChanged = false;
IEditorInput editorInput = editor.getEditorInput();
if (editorInput instanceof DatabaseEditorInput) {
settingsChanged = setInputAttributes((DatabaseEditorInput<?>) editorInput, defaultPageId, defaultFolderId, attributes);
}
if (editor instanceof EntityEditor && defaultPageId != null) {
// Set active page
IEditorPart pageEditor = ((EntityEditor) editor).getPageEditor(defaultPageId);
if (pageEditor != null && pageEditor != ((EntityEditor) editor).getActiveEditor()) {
((EntityEditor) editor).setActiveEditor(pageEditor);
}
}
if (editor instanceof ITabbedFolderContainer && defaultFolderId != null) {
// Activate default folder
if (((ITabbedFolderContainer) editor).switchFolder(defaultFolderId)) {
settingsChanged = true;
}
}
if (settingsChanged) {
if (editor instanceof IRefreshablePart) {
((IRefreshablePart) editor).refreshPart(selectedNode, true);
}
}
if (workbenchWindow.getActivePage().getActiveEditor() != editor || activate) {
workbenchWindow.getActivePage().activate(editor);
}
return editor;
}
if (selectedNode instanceof DBNDatabaseNode) {
DBNDatabaseNode dnNode = (DBNDatabaseNode) selectedNode;
DBSObject databaseObject = dnNode.getObject();
if (databaseObject != null) {
if (!databaseObject.isPersisted()) {
return null;
}
try {
DBUtils.getOrOpenDefaultContext(databaseObject, false);
} catch (DBCException ignored) {
return null;
}
if (selectedNode instanceof DBNDatabaseObject) {
DBNDatabaseObject objectNode = (DBNDatabaseObject) selectedNode;
if (!objectNode.isPersisted()) {
return null;
}
ObjectEditorInput objectInput = new ObjectEditorInput(objectNode);
setInputAttributes(objectInput, defaultPageId, defaultFolderId, attributes);
return workbenchWindow.getActivePage().openEditor(objectInput, objectNode.getMeta().getEditorId());
} else {
DatabaseNodeEditorInput editorInput = new DatabaseNodeEditorInput(dnNode);
if (DBWorkbench.getPlatform().getPreferenceStore().getBoolean(NavigatorPreferences.NAVIGATOR_REFRESH_EDITORS_ON_OPEN)) {
refreshDatabaseNode(dnNode);
}
setInputAttributes(editorInput, defaultPageId, defaultFolderId, attributes);
return workbenchWindow.getActivePage().openEditor(editorInput, EntityEditor.class.getName());
}
} else {
DBWorkbench.getPlatformUI().showError("No object", "Node has no associated database object");
return null;
}
} else {
NodeEditorInput folderInput = new NodeEditorInput(selectedNode);
return workbenchWindow.getActivePage().openEditor(folderInput, FolderEditor.class.getName());
}
} catch (Exception ex) {
DBWorkbench.getPlatformUI().showError(UINavigatorMessages.actions_navigator_error_dialog_open_entity_title, "Can't open entity '" + selectedNode.getNodeName() + "'", ex);
return null;
}
}
use of org.jkiss.dbeaver.ui.editors.entity.EntityEditor in project dbeaver by serge-rider.
the class SQLEditorNested method refreshPart.
@Override
public void refreshPart(Object source, boolean force) {
// Check if we are in saving process
// If so then no refresh needed (source text was updated during save)
IEditorSite editorSite = getEditorSite();
if (editorSite instanceof MultiPageEditorSite && ((MultiPageEditorSite) editorSite).getMultiPageEditor() instanceof EntityEditor && ((EntityEditor) ((MultiPageEditorSite) editorSite).getMultiPageEditor()).isSaveInProgress()) {
return;
}
final IDocumentProvider documentProvider = getDocumentProvider();
if (documentProvider instanceof SQLEditorNested.ObjectDocumentProvider) {
((SQLEditorNested.ObjectDocumentProvider) documentProvider).sourceText = null;
}
if (force) {
int caretOffset = getEditorControl().getCaretOffset();
super.setInput(getEditorInput());
// Try to keep cursor position
if (caretOffset < getEditorControl().getCharCount()) {
getEditorControl().setCaretOffset(caretOffset);
}
}
reloadSyntaxRules();
}
use of org.jkiss.dbeaver.ui.editors.entity.EntityEditor in project dbeaver by dbeaver.
the class RedoChangesHandler method updateElement.
@Override
public void updateElement(UIElement element, Map parameters) {
IWorkbenchWindow workbenchWindow = element.getServiceLocator().getService(IWorkbenchWindow.class);
if (workbenchWindow == null || workbenchWindow.getActivePage() == null) {
return;
}
final IEditorPart activeEditor = workbenchWindow.getActivePage().getActiveEditor();
if (activeEditor instanceof EntityEditor) {
final DBECommandContext commandContext = ((EntityEditor) activeEditor).getCommandContext();
String text = WorkbenchMessages.Workbench_redo;
if (commandContext != null && commandContext.getRedoCommand() != null) {
text += " " + commandContext.getRedoCommand().getTitle();
}
element.setText(text);
}
}
use of org.jkiss.dbeaver.ui.editors.entity.EntityEditor in project dbeaver by dbeaver.
the class NavigatorHandlerObjectOpen method openEntityEditor.
public static IEditorPart openEntityEditor(@NotNull DBNNode selectedNode, @Nullable String defaultPageId, @Nullable String defaultFolderId, @Nullable Map<String, Object> attributes, IWorkbenchWindow workbenchWindow, boolean activate) {
if (selectedNode instanceof DBNDataSource) {
final DBPDataSourceContainer dataSourceContainer = ((DBNDataSource) selectedNode).getDataSourceContainer();
openConnectionEditor(workbenchWindow, dataSourceContainer);
return null;
}
try {
if (selectedNode instanceof DBNDatabaseFolder && !(selectedNode.getParentNode() instanceof DBNDatabaseFolder) && selectedNode.getParentNode() instanceof DBNDatabaseNode) {
if (defaultFolderId == null) {
defaultFolderId = selectedNode.getNodeType();
}
selectedNode = selectedNode.getParentNode();
}
IEditorPart editor = findEntityEditor(workbenchWindow, selectedNode);
if (editor != null) {
boolean settingsChanged = false;
IEditorInput editorInput = editor.getEditorInput();
if (editorInput instanceof DatabaseEditorInput) {
settingsChanged = setInputAttributes((DatabaseEditorInput<?>) editorInput, defaultPageId, defaultFolderId, attributes);
}
if (editor instanceof EntityEditor && defaultPageId != null) {
// Set active page
IEditorPart pageEditor = ((EntityEditor) editor).getPageEditor(defaultPageId);
if (pageEditor != null && pageEditor != ((EntityEditor) editor).getActiveEditor()) {
((EntityEditor) editor).setActiveEditor(pageEditor);
}
}
if (editor instanceof ITabbedFolderContainer && defaultFolderId != null) {
// Activate default folder
if (((ITabbedFolderContainer) editor).switchFolder(defaultFolderId)) {
settingsChanged = true;
}
}
if (settingsChanged) {
if (editor instanceof IRefreshablePart) {
((IRefreshablePart) editor).refreshPart(selectedNode, true);
}
}
if (workbenchWindow.getActivePage().getActiveEditor() != editor || activate) {
workbenchWindow.getActivePage().activate(editor);
}
return editor;
}
if (selectedNode instanceof DBNDatabaseNode) {
DBNDatabaseNode dnNode = (DBNDatabaseNode) selectedNode;
DBSObject databaseObject = dnNode.getObject();
if (databaseObject != null) {
if (!databaseObject.isPersisted()) {
return null;
}
try {
DBUtils.getOrOpenDefaultContext(databaseObject, false);
} catch (DBCException ignored) {
return null;
}
if (selectedNode instanceof DBNDatabaseObject) {
DBNDatabaseObject objectNode = (DBNDatabaseObject) selectedNode;
if (!objectNode.isPersisted()) {
return null;
}
ObjectEditorInput objectInput = new ObjectEditorInput(objectNode);
setInputAttributes(objectInput, defaultPageId, defaultFolderId, attributes);
return workbenchWindow.getActivePage().openEditor(objectInput, objectNode.getMeta().getEditorId());
} else {
DatabaseNodeEditorInput editorInput = new DatabaseNodeEditorInput(dnNode);
if (DBWorkbench.getPlatform().getPreferenceStore().getBoolean(NavigatorPreferences.NAVIGATOR_REFRESH_EDITORS_ON_OPEN)) {
refreshDatabaseNode(dnNode);
}
setInputAttributes(editorInput, defaultPageId, defaultFolderId, attributes);
return workbenchWindow.getActivePage().openEditor(editorInput, EntityEditor.class.getName());
}
} else {
DBWorkbench.getPlatformUI().showError("No object", "Node has no associated database object");
return null;
}
} else {
NodeEditorInput folderInput = new NodeEditorInput(selectedNode);
return workbenchWindow.getActivePage().openEditor(folderInput, FolderEditor.class.getName());
}
} catch (Exception ex) {
DBWorkbench.getPlatformUI().showError(UINavigatorMessages.actions_navigator_error_dialog_open_entity_title, "Can't open entity '" + selectedNode.getNodeName() + "'", ex);
return null;
}
}
Aggregations