提交 7176cb48 编写于 作者: S Serge Rider

#12899 Entity editor refresh fix. Refresh model refactoring.

上级 16e2b8c1
......@@ -680,9 +680,10 @@ public abstract class ERDEditorPart extends GraphicalEditorWithFlyoutPalette
}
@Override
public void refreshPart(Object source, boolean force)
public RefreshResult refreshPart(Object source, boolean force)
{
refreshDiagram(force, true);
return RefreshResult.REFRESHED;
}
public void saveDiagramAs()
......
......@@ -204,9 +204,10 @@ public class MySQLUserEditorGeneral extends MySQLUserEditorAbstract
}
@Override
public void refreshPart(Object source, boolean force)
public RefreshResult refreshPart(Object source, boolean force)
{
// do nothing
return RefreshResult.IGNORED;
}
private class PageControl extends UserPageControl {
......
......@@ -363,9 +363,10 @@ public class MySQLUserEditorPrivileges extends MySQLUserEditorAbstract
}
@Override
public void refreshPart(Object source, boolean force)
public RefreshResult refreshPart(Object source, boolean force)
{
// do nothing
return RefreshResult.IGNORED;
}
private class PageControl extends UserPageControl {
......
......@@ -472,7 +472,7 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor<P
}
@Override
public void refreshPart(Object source, boolean force)
public RefreshResult refreshPart(Object source, boolean force)
{
if (force ||
(source instanceof DBNEvent && ((DBNEvent) source).getSource() == DBNEvent.UPDATE_ON_SAVE) ||
......@@ -481,7 +481,9 @@ public class PostgresRolePrivilegesEditor extends AbstractDatabaseObjectEditor<P
isLoaded = false;
UIUtils.syncExec(() -> updateObjectPermissions(null));
activatePart();
return RefreshResult.REFRESHED;
}
return RefreshResult.IGNORED;
}
private static class DatabaseObjectFilter extends DatabaseNavigatorTreeFilter {
......
......@@ -56,8 +56,9 @@ public abstract class AbstractLockEditor extends SinglePageDatabaseEditor<IEdito
protected abstract LockManagerViewer createLockViewer(DBCExecutionContext executionContext, Composite parent);
@Override
public void refreshPart(Object source, boolean force) {
public RefreshResult refreshPart(Object source, boolean force) {
lockViewer.refreshLocks(null);
return RefreshResult.REFRESHED;
}
@Override
......
......@@ -425,7 +425,7 @@ public abstract class ObjectACLEditor<PRIVILEGE extends DBAPrivilege, PRIVILEGE_
}
@Override
public void refreshPart(Object source, boolean force)
public RefreshResult refreshPart(Object source, boolean force)
{
if (force ||
(source instanceof DBNEvent && ((DBNEvent) source).getSource() == DBNEvent.UPDATE_ON_SAVE) ||
......@@ -434,7 +434,9 @@ public abstract class ObjectACLEditor<PRIVILEGE extends DBAPrivilege, PRIVILEGE_
isLoaded = false;
UIUtils.syncExec(() -> updateObjectPermissions(null));
activatePart();
return RefreshResult.REFRESHED;
}
return RefreshResult.IGNORED;
}
private static class DatabaseObjectFilter extends DatabaseNavigatorTreeFilter {
......
......@@ -557,9 +557,10 @@ public class ContentEditor extends MultiPageAbstractEditor implements IValueEdit
}
@Override
public void refreshPart(Object source, boolean force) {
public RefreshResult refreshPart(Object source, boolean force) {
getEditorInput().refreshContentParts(source);
fireContentChanged();
return RefreshResult.REFRESHED;
}
public void fireContentChanged() {
......
......@@ -242,10 +242,12 @@ public abstract class AbstractDataEditor<OBJECT_TYPE extends DBSObject> extends
}
@Override
public void refreshPart(Object source, boolean force) {
public RefreshResult refreshPart(Object source, boolean force) {
if (force && resultSetView != null && resultSetView.hasData() && !resultSetView.isRefreshInProgress()) {
refreshWithFilters();
return RefreshResult.REFRESHED;
}
return RefreshResult.IGNORED;
}
private void refreshWithFilters() {
......
......@@ -82,7 +82,7 @@ public class VirtualStructureEditor extends AbstractDatabaseObjectEditor<DBSEnti
}
@Override
public void refreshPart(Object source, boolean force) {
public RefreshResult refreshPart(Object source, boolean force) {
new AbstractJob(DataEditorsMessages.virtual_structure_editor_abstract_job_load_entity) {
@Override
......@@ -99,6 +99,8 @@ public class VirtualStructureEditor extends AbstractDatabaseObjectEditor<DBSEnti
return Status.OK_STATUS;
}
}.schedule();
return RefreshResult.REFRESHED;
}
private void refreshVisuals() {
......
......@@ -125,18 +125,14 @@ public class ImageEditorPart extends EditorPart implements IRefreshablePart {
}
@Override
public void refreshPart(Object source, boolean force) {
public RefreshResult refreshPart(Object source, boolean force) {
refreshImage();
return RefreshResult.REFRESHED;
}
private void refreshImage() {
// Refresh editor
UIUtils.asyncExec(new Runnable() {
@Override
public void run() {
loadImage();
}
});
UIUtils.asyncExec(this::loadImage);
}
}
\ No newline at end of file
......@@ -64,9 +64,10 @@ public abstract class AbstractSessionEditor extends SinglePageDatabaseEditor<IEd
protected abstract SessionManagerViewer createSessionViewer(DBCExecutionContext executionContext, Composite parent);
@Override
public void refreshPart(Object source, boolean force)
public RefreshResult refreshPart(Object source, boolean force)
{
sessionsViewer.refreshSessions();
return RefreshResult.REFRESHED;
}
@Override
......
......@@ -196,7 +196,7 @@ public abstract class SQLEditorNested<T extends DBSObject>
}
@Override
public void refreshPart(Object source, boolean force) {
public RefreshResult 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();
......@@ -204,7 +204,7 @@ public abstract class SQLEditorNested<T extends DBSObject>
((MultiPageEditorSite) editorSite).getMultiPageEditor() instanceof EntityEditor &&
((EntityEditor) ((MultiPageEditorSite) editorSite).getMultiPageEditor()).isSaveInProgress())
{
return;
return RefreshResult.IGNORED;
}
final IDocumentProvider documentProvider = getDocumentProvider();
......@@ -220,6 +220,8 @@ public abstract class SQLEditorNested<T extends DBSObject>
}
}
reloadSyntaxRules();
return RefreshResult.REFRESHED;
}
protected String getCompileCommandId()
......
......@@ -873,10 +873,10 @@ public class EntityEditor extends MultiPageDatabaseEditor
}
@Override
public void refreshPart(final Object source, boolean force)
public RefreshResult refreshPart(final Object source, boolean force)
{
if (getContainer() == null || getContainer().isDisposed() || isSaveInProgress()) {
return;
return RefreshResult.IGNORED;
}
if (force && isDirty()) {
......@@ -887,7 +887,7 @@ public class EntityEditor extends MultiPageDatabaseEditor
ConfirmationDialog.QUESTION,
getTitle()) != IDialogConstants.YES_ID)
{
return;
return RefreshResult.CANCELED;
}
}
......@@ -941,6 +941,8 @@ public class EntityEditor extends MultiPageDatabaseEditor
// Update main editor image
setPageImage(0, DBeaverIcons.getImage(getEditorInput().getNavigatorNode().getNodeIconDefault()));
}
return RefreshResult.REFRESHED;
}
@Override
......
......@@ -26,7 +26,6 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.IWorkbenchCommandConstants;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.menus.CommandContributionItem;
import org.eclipse.ui.part.EditorPart;
import org.jkiss.code.Nullable;
......@@ -53,7 +52,7 @@ public class FolderEditor extends EditorPart implements INavigatorModelView, IRe
private static final Log log = Log.getLog(FolderEditor.class);
private FolderListControl itemControl;
private List<String> history = new ArrayList<>();
private final List<String> history = new ArrayList<>();
private int historyPosition = 0;
@Override
......@@ -88,7 +87,7 @@ public class FolderEditor extends EditorPart implements INavigatorModelView, IRe
}
@Override
public void init(IEditorSite site, IEditorInput input) throws PartInitException {
public void init(IEditorSite site, IEditorInput input) {
setSite(site);
setInput(input);
if (input != null) {
......@@ -121,16 +120,14 @@ public class FolderEditor extends EditorPart implements INavigatorModelView, IRe
}
@Override
public void refreshPart(Object source, boolean force)
public RefreshResult refreshPart(Object source, boolean force)
{
UIUtils.asyncExec(new Runnable() {
@Override
public void run() {
if (!itemControl.isDisposed()) {
itemControl.loadData(false);
}
UIUtils.asyncExec(() -> {
if (!itemControl.isDisposed()) {
itemControl.loadData(false);
}
});
return RefreshResult.REFRESHED;
}
@Override
......
......@@ -500,17 +500,22 @@ public class ObjectPropertiesEditor extends AbstractDatabaseObjectEditor<DBSObje
}
@Override
public void refreshPart(Object source, boolean force) {
public RefreshResult refreshPart(Object source, boolean force) {
if (propertiesPanel != null) {
propertiesPanel.refreshPart(source, force);
if (propertiesPanel.refreshPart(source, force) == RefreshResult.CANCELED) {
return RefreshResult.CANCELED;
}
}
if (folderComposite != null && folderComposite.getFolders() != null) {
for (TabbedFolderInfo folder : folderComposite.getFolders()) {
if (folder.getContents() instanceof IRefreshablePart) {
((IRefreshablePart) folder.getContents()).refreshPart(source, force);
if (((IRefreshablePart) folder.getContents()).refreshPart(source, force) == RefreshResult.CANCELED) {
return RefreshResult.CANCELED;
}
}
}
}
return RefreshResult.REFRESHED;
}
@Override
......
......@@ -182,14 +182,11 @@ public class TabbedFolderPageEditor extends TabbedFolderPage implements IDatabas
}
@Override
public void refreshPart(Object source, boolean force) {
public RefreshResult refreshPart(Object source, boolean force) {
if (editor instanceof IRefreshablePart) {
((IRefreshablePart) editor).refreshPart(source, force);
return ((IRefreshablePart) editor).refreshPart(source, force);
}
// Reload sources
// if (editor instanceof IReusableEditor) {
// ((IReusableEditor) editor).setInput(editorDescriptor.getNestedEditorInput(mainEditor.getEditorInput()));
// }
return RefreshResult.IGNORED;
}
@Override
......
......@@ -379,12 +379,14 @@ public class TabbedFolderPageForm extends TabbedFolderPage implements IRefreshab
}
@Override
public void refreshPart(Object source, boolean force) {
public RefreshResult refreshPart(Object source, boolean force) {
// Refresh props only on force refresh (manual)
if (force) {
refreshProperties();
updateEditButtonsState();
return RefreshResult.REFRESHED;
}
return RefreshResult.IGNORED;
}
@Override
......
......@@ -153,10 +153,10 @@ class TabbedFolderPageNode extends TabbedFolderPage implements ISearchContextPro
}
@Override
public void refreshPart(Object source, boolean force)
public RefreshResult refreshPart(Object source, boolean force)
{
if (!activated || itemControl == null || itemControl.isDisposed()) {
return;
return RefreshResult.IGNORED;
}
// Check - do we need to load new content in editor
// If this is DBM event then check node change type
......@@ -178,7 +178,10 @@ class TabbedFolderPageNode extends TabbedFolderPage implements ISearchContextPro
}
if (loadNewData) {
itemControl.loadData(false);
return RefreshResult.REFRESHED;
}
return RefreshResult.IGNORED;
}
private boolean isRefreshingEvent(DBNEvent event) {
......
......@@ -146,14 +146,16 @@ public class TabbedFolderPageProperties extends TabbedFolderPage implements IRef
}
@Override
public void refreshPart(Object source, boolean force) {
public RefreshResult refreshPart(Object source, boolean force) {
if (force) {
curPropertySource = input.getPropertySource();
if (propertyTree != null) {
propertyTree.loadProperties(curPropertySource);
refreshProperties();
return RefreshResult.REFRESHED;
}
}
return RefreshResult.IGNORED;
}
@Override
......
......@@ -61,8 +61,10 @@ public class NavigatorHandlerRefresh extends AbstractHandler {
// Try to refresh as refreshable part
if (workbenchPart instanceof IRefreshablePart) {
((IRefreshablePart) workbenchPart).refreshPart(this, true);
return null;
if (((IRefreshablePart) workbenchPart).refreshPart(this, true) == IRefreshablePart.RefreshResult.CANCELED) {
return null;
}
//return null;
}
// Try to get navigator view and refresh node
......@@ -102,7 +104,9 @@ public class NavigatorHandlerRefresh extends AbstractHandler {
for (Iterator<DBNNode> iter = refreshObjects.iterator(); iter.hasNext(); ) {
DBNNode nextNode = iter.next();
if (nextNode == editorNode || editorNode.isChildOf(nextNode) || nextNode.isChildOf(editorNode)) {
((IRefreshablePart) editorPart).refreshPart(this, true);
if (((IRefreshablePart) editorPart).refreshPart(this, true) == IRefreshablePart.RefreshResult.CANCELED) {
return null;
}
iter.remove();
}
}
......
......@@ -22,5 +22,11 @@ package org.jkiss.dbeaver.ui;
*/
public interface IRefreshablePart
{
void refreshPart(Object source, boolean force);
enum RefreshResult {
REFRESHED,
IGNORED,
CANCELED,
}
RefreshResult refreshPart(Object source, boolean force);
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册