Skip to content

Commit

Permalink
dbeaver#7776 ERD persisted state management UI
Browse files Browse the repository at this point in the history
  • Loading branch information
serge-rider committed Feb 11, 2020
1 parent 3cbc4df commit 9141e42
Show file tree
Hide file tree
Showing 4 changed files with 107 additions and 8 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2019 Serge Rider ([email protected])
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* Created on Jul 23, 2004
*/
package org.jkiss.dbeaver.ext.erd.action;

import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jface.action.Action;
import org.jkiss.dbeaver.ext.erd.editor.ERDEditorEmbedded;
import org.jkiss.dbeaver.ui.DBeaverIcons;
import org.jkiss.dbeaver.ui.UIIcon;
import org.jkiss.dbeaver.ui.UIUtils;

/**
* Action to toggle diagram persistence
*/
public class DiagramTogglePersistAction extends Action {
private final ERDEditorEmbedded editor;

public DiagramTogglePersistAction(ERDEditorEmbedded editor) {
super("Persist diagram", AS_CHECK_BOX);
setImageDescriptor(DBeaverIcons.getImageDescriptor(UIIcon.SAVE_TO_DATABASE));
this.editor = editor;
}

@Override
public boolean isChecked() {
return editor.isStateSaved();
}

@Override
public void run() {
if (isChecked()) {
boolean refreshDiagram = UIUtils.confirmAction("Refresh diagram", "Diagram persisted state was reset.\nDo you want to reload diagram view?");
editor.resetSavedState(refreshDiagram);
} else {
editor.doSave(new NullProgressMonitor());
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,14 @@
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.jobs.IJobChangeEvent;
import org.eclipse.core.runtime.jobs.JobChangeAdapter;
import org.eclipse.jface.action.IContributionManager;
import org.eclipse.swt.widgets.Composite;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ext.erd.ERDActivator;
import org.jkiss.dbeaver.ext.erd.ERDConstants;
import org.jkiss.dbeaver.ext.erd.action.DiagramTogglePersistAction;
import org.jkiss.dbeaver.ext.erd.model.DiagramLoader;
import org.jkiss.dbeaver.ext.erd.model.ERDEntity;
import org.jkiss.dbeaver.ext.erd.model.EntityDiagram;
Expand All @@ -37,6 +39,7 @@
import org.jkiss.dbeaver.model.virtual.DBVObject;
import org.jkiss.dbeaver.model.virtual.DBVUtils;
import org.jkiss.dbeaver.runtime.DBWorkbench;
import org.jkiss.dbeaver.ui.ActionUtils;
import org.jkiss.dbeaver.ui.IActiveWorkbenchPart;
import org.jkiss.dbeaver.ui.LoadingJob;
import org.jkiss.dbeaver.ui.editors.IDatabaseEditor;
Expand Down Expand Up @@ -87,6 +90,13 @@ public boolean isReadOnly()
return false;
}

@Override
protected void fillDefaultEditorContributions(IContributionManager toolBarManager) {
super.fillDefaultEditorContributions(toolBarManager);

toolBarManager.add(ActionUtils.makeActionContribution(new DiagramTogglePersistAction(this), true));
}

@Override
public void activatePart()
{
Expand Down Expand Up @@ -355,6 +365,27 @@ public void doSave(IProgressMonitor monitor) {
} catch (Exception e) {
log.error("Error saving diagram", e);
}
updateToolbarActions();
}

public boolean isStateSaved() {
DBVObject vObject = this.getVirtualObject();
return (vObject != null && vObject.getProperty(PROP_DIAGRAM_STATE) != null);
}

public void resetSavedState(boolean refreshDiagram) {
try {
DBVObject vObject = this.getVirtualObject();
if (vObject != null && vObject.getProperty(PROP_DIAGRAM_STATE) != null) {
vObject.setProperty(PROP_DIAGRAM_STATE, null);
vObject.persistConfiguration();
}
} catch (Exception e) {
log.error("Error resetting diagram state", e);
}
if (refreshDiagram) {
refreshDiagram(true, true);
}
}

@Nullable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,13 @@ public void createPartControl(Composite parent)
}
}

protected void updateToolbarActions() {
if (progressControl != null) {
progressControl.updateActions();

}
}

/**
* The <code>CommandStackListener</code> that listens for
* <code>CommandStack </code> changes.
Expand Down Expand Up @@ -275,10 +282,7 @@ public String getLabel(Object o)
}

@Override
public void doSave(IProgressMonitor monitor)
{

}
public abstract void doSave(IProgressMonitor monitor);

/**
* Save as not allowed
Expand Down Expand Up @@ -876,17 +880,25 @@ public void removePartListener(IPartListener2 listener)
toolBarManager.add(new DiagramRefreshAction(ERDEditorPart.this));
toolBarManager.add(new Separator());
{
toolBarManager.add(ActionUtils.makeCommandContribution(
getSite(),
IWorkbenchCommandConstants.FILE_PRINT,
ERDMessages.erd_editor_control_action_print_diagram,
UIIcon.PRINT));

toolBarManager.add(ActionUtils.makeCommandContribution(
getSite(),
IWorkbenchCommandConstants.FILE_SAVE_AS,
ERDMessages.erd_editor_control_action_save_external_format,
UIIcon.PICTURE_SAVE));

toolBarManager.add(ActionUtils.makeCommandContribution(
getSite(),
IWorkbenchCommandConstants.FILE_PRINT,
ERDMessages.erd_editor_control_action_print_diagram,
UIIcon.PRINT));
IWorkbenchCommandConstants.FILE_SAVE,
null,
UIIcon.SAVE));
}
toolBarManager.add(new Separator());
{
Action configAction = new Action(ERDMessages.erd_editor_control_action_configuration) {
@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ public void fillCustomActions(IContributionManager contributionManager)
}
}

protected void updateActions() {
public void updateActions() {
UIUtils.updateContributionItems(defaultToolbarManager);
UIUtils.updateContributionItems(customToolbarManager);
}
Expand Down

0 comments on commit 9141e42

Please sign in to comment.