From 75f8d37df75ec9bbdc810aa1cd6eeee2c465ab85 Mon Sep 17 00:00:00 2001 From: Jakub Valtar Date: Mon, 28 Sep 2015 16:24:57 -0400 Subject: [PATCH] CM: Reload contributions before counting updates --- .../app/contrib/ContributionManager.java | 44 +++++++++++++------ .../app/contrib/LocalContribution.java | 3 +- 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/app/src/processing/app/contrib/ContributionManager.java b/app/src/processing/app/contrib/ContributionManager.java index 40538f34d..c7cfa93c7 100644 --- a/app/src/processing/app/contrib/ContributionManager.java +++ b/app/src/processing/app/contrib/ContributionManager.java @@ -171,6 +171,15 @@ public class ContributionManager { @Override public void run() { listing.replaceContribution(ad, contribution); + /* + if (contribution.getType() == ContributionType.MODE) { + List contribModes = editor.getBase().getModeContribs(); + if (!contribModes.contains(contribution)) { + contribModes.add((ModeContribution) contribution); + } + } + */ + base.refreshContribs(contribution.getType()); base.setUpdatesAvailable(listing.countUpdates(base)); } }); @@ -179,15 +188,6 @@ public class ContributionManager { } catch (InvocationTargetException e) { throw (Exception) e.getCause(); } - /* - if (contribution.getType() == ContributionType.MODE) { - List contribModes = editor.getBase().getModeContribs(); - if (!contribModes.contains(contribution)) { - contribModes.add((ModeContribution) contribution); - } - } - */ - base.refreshContribs(contribution.getType()); } installProgress.finished(); } @@ -270,6 +270,7 @@ public class ContributionManager { public void run() { listing.replaceContribution(ad, contribution); base.refreshContribs(contribution.getType()); + base.setUpdatesAvailable(listing.countUpdates(base)); } }); } catch (InterruptedException e) { @@ -366,7 +367,7 @@ public class ContributionManager { // to give the user an idea about progress being made. boolean isPrevDone = false; - for (AvailableContribution contrib : list) { + for (final AvailableContribution contrib : list) { if (contrib.getType() != ContributionType.LIBRARY) { continue; } @@ -401,12 +402,29 @@ public class ContributionManager { String arg = "contrib.import.progress.install"; editor.statusNotice(Language.interpolate(arg,contrib.name)); - LocalContribution contribution = + final LocalContribution contribution = contrib.install(base, contribZip, false, null); if (contribution != null) { - listing.replaceContribution(contrib, contribution); - base.refreshContribs(contribution.getType()); + try { + EventQueue.invokeAndWait(new Runnable() { + @Override + public void run() { + listing.replaceContribution(contrib, contribution); + base.refreshContribs(contribution.getType()); + base.setUpdatesAvailable(listing.countUpdates(base)); + } + }); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + Throwable cause = e.getCause(); + if (cause instanceof RuntimeException) { + throw (RuntimeException) cause; + } else { + cause.printStackTrace(); + } + } } contribZip.delete(); diff --git a/app/src/processing/app/contrib/LocalContribution.java b/app/src/processing/app/contrib/LocalContribution.java index 9e9534515..8e23416ab 100644 --- a/app/src/processing/app/contrib/LocalContribution.java +++ b/app/src/processing/app/contrib/LocalContribution.java @@ -473,6 +473,7 @@ public abstract class LocalContribution extends Contribution { } else { contribListing.replaceContribution(LocalContribution.this, advertisedVersion); } + base.refreshContribs(LocalContribution.this.getType()); base.setUpdatesAvailable(contribListing.countUpdates(base)); } }); @@ -498,6 +499,7 @@ public abstract class LocalContribution extends Contribution { public void run() { contribListing.replaceContribution(LocalContribution.this, LocalContribution.this); + base.refreshContribs(LocalContribution.this.getType()); base.setUpdatesAvailable(contribListing.countUpdates(base)); } }); @@ -516,7 +518,6 @@ public abstract class LocalContribution extends Contribution { status.setErrorMessage("Could not delete the contribution's files"); } } - base.refreshContribs(this.getType()); if (success) { pm.finished(); } else {