Skip to content
This repository has been archived by the owner on Dec 9, 2018. It is now read-only.

Commit

Permalink
safely refresh from model fixes #1500
Browse files Browse the repository at this point in the history
Signed-off-by: Gregory Amerson <gregory.amerson@liferay.com>
  • Loading branch information
gamerson committed Aug 24, 2016
1 parent 802f299 commit b2a9b50
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 2 deletions.
2 changes: 1 addition & 1 deletion bndtools.core/src/bndtools/editor/BndEditor.java
Expand Up @@ -97,7 +97,7 @@
public class BndEditor extends ExtendedFormEditor implements IResourceChangeListener {

private static final ILogger logger = Logger.getLogger(BndEditor.class);
private static final String SYNC_MESSAGE = "Workspace is loading, please wait...";
public static final String SYNC_MESSAGE = "Workspace is loading, please wait...";

public static final String WORKSPACE_EDITOR = "bndtools.bndWorkspaceConfigEditor";

Expand Down
34 changes: 33 additions & 1 deletion bndtools.core/src/bndtools/editor/common/BndEditorPart.java
Expand Up @@ -6,13 +6,22 @@
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;

import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.SectionPart;
import org.eclipse.ui.forms.editor.IFormPage;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.osgi.util.promise.Promise;
import org.osgi.util.promise.Promises;
import org.osgi.util.promise.Success;

import aQute.bnd.build.Workspace;
import aQute.bnd.build.model.BndEditModel;
import bndtools.central.Central;
import bndtools.editor.BndEditor;

public abstract class BndEditorPart extends SectionPart implements PropertyChangeListener {

Expand Down Expand Up @@ -53,7 +62,30 @@ public void dispose() {

@Override
public final void refresh() {
refreshFromModel();
if (!Central.hasWorkspaceDirectory()) {
refreshFromModel();
} else {
Central.onWorkspaceInit(new Success<Workspace,Void>() {
@Override
public Promise<Void> call(Promise<Workspace> resolved) throws Exception {
try {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
refreshFromModel();

ScrolledForm form = getManagedForm().getForm();

if (BndEditor.SYNC_MESSAGE.equals(form.getMessage())) {
form.setMessage(null, IMessageProvider.NONE);
}
}
});
} catch (Exception e) {}
return Promises.resolved(null);
}
});
}
super.refresh();
}

Expand Down

0 comments on commit b2a9b50

Please sign in to comment.