This is an automated email from the ASF dual-hosted git repository.
skygo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 66a6ca3 Using activateModules for download as well as activate
buttons. Making the activateModules more stateless
new 5c4ce62 Merge pull request #2062 from jtulach/FoDUseModuleActivation
66a6ca3 is described below
commit 66a6ca36324acf0e8ed834ab32d82e1005ddbfe5
Author: Jaroslav Tulach <[email protected]>
AuthorDate: Sun Apr 5 06:53:16 2020 +0200
Using activateModules for download as well as activate buttons. Making the
activateModules more stateless
---
ergonomics/ide.ergonomics/java.properties | 2 +-
.../ide/ergonomics/fod/ConfigurationPanel.java | 100 ++++++++++-----------
.../ide/ergonomics/fod/ModulesInstaller.java | 51 +++++++----
3 files changed, 86 insertions(+), 67 deletions(-)
diff --git a/ergonomics/ide.ergonomics/java.properties
b/ergonomics/ide.ergonomics/java.properties
index c7c7252..d4041e4 100644
--- a/ergonomics/ide.ergonomics/java.properties
+++ b/ergonomics/ide.ergonomics/java.properties
@@ -20,7 +20,7 @@
project.file.../java.base/share/classes/java/lang/Object.java=org.netbeans.modul
projectImporter=Eclipse
mainModule=org.netbeans.modules.java.kit
-extra.modules=org.netbeans.modules.nbjavac
+extra.modules=org.netbeans.modules.nbjavac.*
extra.modules.recommended.min.jdk=9
extra.modules.1=org\\.netbeans\\.libs\\.javafx\\.(linux|win|macosx)
extra.modules.1.recommended.max.jdk=11
diff --git
a/ergonomics/ide.ergonomics/src/org/netbeans/modules/ide/ergonomics/fod/ConfigurationPanel.java
b/ergonomics/ide.ergonomics/src/org/netbeans/modules/ide/ergonomics/fod/ConfigurationPanel.java
index be78b57..6d27312 100644
---
a/ergonomics/ide.ergonomics/src/org/netbeans/modules/ide/ergonomics/fod/ConfigurationPanel.java
+++
b/ergonomics/ide.ergonomics/src/org/netbeans/modules/ide/ergonomics/fod/ConfigurationPanel.java
@@ -42,14 +42,10 @@ import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.SwingUtilities;
-import org.netbeans.api.autoupdate.InstallSupport;
-import org.netbeans.api.autoupdate.OperationContainer;
import org.netbeans.api.autoupdate.UpdateElement;
import org.netbeans.api.progress.ProgressHandle;
import org.netbeans.api.progress.ProgressHandleFactory;
-import org.netbeans.modules.autoupdate.ui.api.PluginManager;
import org.openide.awt.Mnemonics;
-import org.openide.modules.SpecificationVersion;
import org.openide.util.Exceptions;
import org.openide.util.NbBundle;
import org.openide.util.RequestProcessor.Task;
@@ -65,7 +61,7 @@ import org.openide.util.Lookup;
* @author Tomas Mysik
* @author Pavel Flaska
*/
-public class ConfigurationPanel extends JPanel implements Runnable {
+public class ConfigurationPanel extends JPanel {
private static final long serialVersionUID = 27938464212508L;
@@ -93,7 +89,7 @@ public class ConfigurationPanel extends JPanel implements
Runnable {
public void setInfo(FeatureInfo info, String displayName,
Collection<UpdateElement> toInstall,
Collection<FeatureInfo.ExtraModuleInfo> missingModules,
Map<FeatureInfo.ExtraModuleInfo, FeatureInfo> extrasMap, boolean
required) {
- this.extrasFilter = new HashSet<FeatureInfo.ExtraModuleInfo>();
+ this.extrasFilter = new HashSet<>();
this.featureInfo = info;
this.featureInstall = toInstall;
boolean activateNow = toInstall.isEmpty() && missingModules.isEmpty();
@@ -306,60 +302,64 @@ public class ConfigurationPanel extends JPanel implements
Runnable {
);
}// </editor-fold>//GEN-END:initComponents
- public void run() {
- ModulesInstaller.installModules(progressMonitor, featureInfo,
featureInstall, extrasFilter);
- }
-
private void activateButtonActionPerformed(ActionEvent evt)
{//GEN-FIRST:event_activateButtonActionPerformed
FeatureManager.logUI("ERGO_DOWNLOAD");
activateButton.setEnabled(false);
downloadButton.setEnabled(false);
- Task task = FeatureManager.getInstance().create(this);
- task.addTaskListener(new TaskListener() {
-
- public void taskFinished(org.openide.util.Task task) {
- if (!progressMonitor.error) {
- SwingUtilities.invokeLater(new Runnable() {
- private String msg;
-
- public void run() {
- ConfigurationPanel.this.removeAll();
- ConfigurationPanel.this.setLayout(new
BorderLayout());
- try {
- ConfigurationPanel.this.add(callable.call(),
BorderLayout.CENTER);
- } catch (Exception ex) {
- // TODO: add warning panel
- Exceptions.printStackTrace(ex);
- }
- ConfigurationPanel.this.invalidate();
- ConfigurationPanel.this.revalidate();
- ConfigurationPanel.this.repaint();
- if (featureInfo != null &&
featureInfo.isPresent()) {
- msg =
NbBundle.getMessage(ConfigurationPanel.class, "MSG_EnableFailed");
- } else {
- msg =
NbBundle.getMessage(ConfigurationPanel.class, "MSG_DownloadFailed");
- }
- setError(msg);
- activateButton.setEnabled(true);
- progressPanel.removeAll();
- progressPanel.revalidate();
- progressPanel.repaint();
- }
- });
- }
- }
+ selectionsPanel.setEnabled(false);
+ Task task = FeatureManager.getInstance().create(() -> {
+ ModulesInstaller.activateModules(false, progressMonitor,
featureInfo, featureInstall, extrasFilter);
});
+ task.addTaskListener(onActivationFinished());
task.schedule(0);
}//GEN-LAST:event_activateButtonActionPerformed
private void downloadButtonActionPerformed(ActionEvent evt)
{//GEN-FIRST:event_downloadButtonActionPerformed
- OperationContainer<InstallSupport> op =
OperationContainer.createForInstall();
- op.add(featureInstall);
- if (PluginManager.openInstallWizard(op)) {
- activateButtonActionPerformed(null);
- }
+ FeatureManager.logUI("ERGO_DOWNLOAD");
+ activateButton.setEnabled(false);
+ downloadButton.setEnabled(false);
+ selectionsPanel.setEnabled(false);
+ Task task = FeatureManager.getInstance().create(() -> {
+ ModulesInstaller.activateModules(true, progressMonitor,
featureInfo, Collections.emptyList(), extrasFilter);
+ });
+ task.addTaskListener(onActivationFinished());
+ task.schedule(0);
}//GEN-LAST:event_downloadButtonActionPerformed
+ private TaskListener onActivationFinished() {
+ return (task) -> {
+ if (!progressMonitor.error) {
+ SwingUtilities.invokeLater(new Runnable() {
+ private String msg;
+
+ public void run() {
+ ConfigurationPanel.this.removeAll();
+ ConfigurationPanel.this.setLayout(new BorderLayout());
+ try {
+ ConfigurationPanel.this.add(callable.call(),
BorderLayout.CENTER);
+ } catch (Exception ex) {
+ // TODO: add warning panel
+ Exceptions.printStackTrace(ex);
+ }
+ ConfigurationPanel.this.invalidate();
+ ConfigurationPanel.this.revalidate();
+ ConfigurationPanel.this.repaint();
+ if (featureInfo != null && featureInfo.isPresent()) {
+ msg =
NbBundle.getMessage(ConfigurationPanel.class, "MSG_EnableFailed");
+ } else {
+ msg =
NbBundle.getMessage(ConfigurationPanel.class, "MSG_DownloadFailed");
+ }
+ setError(msg);
+ activateButton.setEnabled(true);
+ progressPanel.removeAll();
+ progressPanel.revalidate();
+ progressPanel.repaint();
+ }
+ });
+ }
+ };
+ }
+
// Variables declaration - do not modify//GEN-BEGIN:variables
private JButton activateButton;
private JButton downloadButton;
@@ -372,7 +372,7 @@ public class ConfigurationPanel extends JPanel implements
Runnable {
private final class DownloadProgressMonitor implements ProgressMonitor {
- private boolean error = false;
+ boolean error = false;
public void onDownload(ProgressHandle progressHandle) {
updateProgress(progressHandle);
diff --git
a/ergonomics/ide.ergonomics/src/org/netbeans/modules/ide/ergonomics/fod/ModulesInstaller.java
b/ergonomics/ide.ergonomics/src/org/netbeans/modules/ide/ergonomics/fod/ModulesInstaller.java
index 04ec5c9..8d65cd7 100644
---
a/ergonomics/ide.ergonomics/src/org/netbeans/modules/ide/ergonomics/fod/ModulesInstaller.java
+++
b/ergonomics/ide.ergonomics/src/org/netbeans/modules/ide/ergonomics/fod/ModulesInstaller.java
@@ -23,7 +23,9 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Collection;
import java.util.HashSet;
+import java.util.LinkedHashSet;
import java.util.Set;
+import java.util.function.Function;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
@@ -75,34 +77,51 @@ public class ModulesInstaller {
}
}
- static boolean success = false;
- public static boolean installModules (
- ProgressMonitor monitor, FeatureInfo info, Collection<UpdateElement>
alreadyOffered, Set<FeatureInfo.ExtraModuleInfo> filter
+ static boolean activateModules(
+ boolean askForInstall, ProgressMonitor monitor, FeatureInfo info,
+ Collection<UpdateElement> alreadyOffered,
Set<FeatureInfo.ExtraModuleInfo> filter
) {
assert ! SwingUtilities.isEventDispatchThread () : "Cannot run in EQ!";
+
+ Function<FindComponentModules,Collection<UpdateElement>> toInstall =
(state) -> {
+ Collection<UpdateElement> tmp = new
LinkedHashSet<>(state.getModulesForInstall());
+ tmp.removeAll(alreadyOffered);
+ return tmp;
+ };
+ Function<FindComponentModules,Collection<UpdateElement>> toEnable =
(state) -> {
+ return state.getModulesForEnable();
+ };
FindComponentModules findModules = new FindComponentModules(info,
filter);
- Collection<UpdateElement> toInstall =
findModules.getModulesForInstall();
- toInstall.removeAll(alreadyOffered);
- Collection<UpdateElement> toEnable = findModules.getModulesForEnable();
- if (toInstall != null && !toInstall.isEmpty()) {
- ModulesInstaller installer = new ModulesInstaller(toInstall,
findModules, monitor);
+ if (askForInstall && !toInstall.apply(findModules).isEmpty()) {
+ OperationContainer<InstallSupport> op =
OperationContainer.createForInstall();
+ op.add(toInstall.apply(findModules));
+ if (!PluginManager.openInstallWizard(op)) {
+ return false;
+ }
+ findModules = new FindComponentModules(info, filter);
+ if (!toInstall.apply(findModules).isEmpty()) {
+ return false;
+ }
+ }
+ if (!toInstall.apply(findModules).isEmpty()) {
+ ModulesInstaller installer = new
ModulesInstaller(toInstall.apply(findModules), findModules, monitor);
installer.getInstallTask ().schedule (10);
installer.getInstallTask ().waitFinished();
findModules = new FindComponentModules(info, filter);
- success = findModules.getModulesForInstall ().isEmpty ();
- } else if (toEnable != null && !toEnable.isEmpty()) {
- ModulesActivator enabler = new ModulesActivator(toEnable,
findModules, monitor);
+ if (!findModules.getModulesForInstall ().isEmpty ()) {
+ return false;
+ }
+ }
+ if (!toEnable.apply(findModules).isEmpty()) {
+ ModulesActivator enabler = new
ModulesActivator(toEnable.apply(findModules), findModules, monitor);
enabler.getEnableTask ().schedule (100);
enabler.getEnableTask ().waitFinished();
- success = true;
}
- if (success) {
- FoDLayersProvider.getInstance().refreshForce();
- }
+ FoDLayersProvider.getInstance().refreshForce();
- return success;
+ return true;
}
public void assignDownloadHandle (ProgressHandle handle) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists