Skip to content

Commit

Permalink
Move long running operations to the activation of the PluginsTab
Browse files Browse the repository at this point in the history
- Inline value and delete some outdated JavaDoc
- Skip calls to AbstractpluginBlock::performApply before the block is
even created to avoid NPEs

Contributes to eclipse-pde#1232

Co-authored-by: Hannes Wellmann <[email protected]>
  • Loading branch information
fedejeanne and HannesWell committed Apr 22, 2024
1 parent b8c244d commit bc7b0df
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 11 deletions.
2 changes: 1 addition & 1 deletion org.eclipse.pde.doc.user/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.pde.doc.user; singleton:=true
Bundle-Version: 3.15.100.qualifier
Bundle-Version: 3.15.200.qualifier
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Require-Bundle: org.eclipse.help;bundle-version="[3.2.0,4.0.0)"
2 changes: 1 addition & 1 deletion org.eclipse.pde.doc.user/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<version>4.32.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.pde.doc.user</artifactId>
<version>3.15.100-SNAPSHOT</version>
<version>3.15.200-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>

<properties>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ public class PluginsTab extends AbstractLauncherTab {
private Combo fDefaultAutoStart;
private Spinner fDefaultStartLevel;
private final Listener fListener;
private boolean fActivated;

private static final int DEFAULT_SELECTION = 0;
private static final int PLUGIN_SELECTION = 1;
Expand Down Expand Up @@ -156,6 +157,16 @@ public void createControl(Composite parent) {

@Override
public void initializeFrom(ILaunchConfiguration configuration) {
// Long-running initialization happens on first activation of this tab
}

@Override
public void activated(ILaunchConfigurationWorkingCopy configuration) {
if (fActivated) {
// Since this method can be expensive, only activate this tab once.
return;
}

try {
int index = DEFAULT_SELECTION;
if (configuration.getAttribute(IPDELauncherConstants.USE_CUSTOM_FEATURES, false)) {
Expand All @@ -171,6 +182,9 @@ public void initializeFrom(ILaunchConfiguration configuration) {
fDefaultAutoStart.setText(Boolean.toString(auto));
int level = configuration.getAttribute(IPDELauncherConstants.DEFAULT_START_LEVEL, 4);
fDefaultStartLevel.setSelection(level);

// If everything ran smoothly, this tab is activated
fActivated = true;
} catch (CoreException e) {
PDEPlugin.log(e);
}
Expand All @@ -188,7 +202,9 @@ public void performApply(ILaunchConfigurationWorkingCopy configuration) {
int index = fSelectionCombo.getSelectionIndex();
configuration.setAttribute(IPDELauncherConstants.USE_DEFAULT, index == DEFAULT_SELECTION);
configuration.setAttribute(IPDELauncherConstants.USE_CUSTOM_FEATURES, index == FEATURE_SELECTION);
fBlock.performApply(configuration);
if (fActivated) {
fBlock.performApply(configuration);
}
// clear default values for auto-start and start-level if default
String autoText = fDefaultAutoStart.getText();
if (Boolean.toString(false).equals(autoText)) {
Expand Down Expand Up @@ -217,16 +233,9 @@ public Image getImage() {
return fImage;
}

/**
* Validates the tab. If the feature option is chosen, and the workspace is not correctly set up,
* the error message is set.
*
* @see org.eclipse.pde.ui.launcher.AbstractLauncherTab#validateTab()
*/
@Override
public void validateTab() {
String errorMessage = null;
setErrorMessage(errorMessage);
setErrorMessage(null);
}

@Override
Expand Down

0 comments on commit bc7b0df

Please sign in to comment.