From b58f3739b26740d161522646c4d3413e31cbade6 Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Wed, 18 Jan 2023 23:13:21 -0500 Subject: [PATCH] cannot do direct remove/add because StatusDetail must be preserved --- app/src/processing/app/contrib/ContributionListing.java | 7 +++---- app/src/processing/app/contrib/ContributionTab.java | 2 +- app/src/processing/app/contrib/ListPanel.java | 4 +--- app/src/processing/app/contrib/StatusDetail.java | 8 ++++++-- app/src/processing/app/contrib/StatusPanel.java | 2 +- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/app/src/processing/app/contrib/ContributionListing.java b/app/src/processing/app/contrib/ContributionListing.java index 37b08ac26..438295a61 100644 --- a/app/src/processing/app/contrib/ContributionListing.java +++ b/app/src/processing/app/contrib/ContributionListing.java @@ -129,9 +129,9 @@ public class ContributionListing { // This could just be a remove followed by an add, but contributionChanged() // is a little weird, so that should be cleaned up first [fry 230114] protected void replaceContribution(Contribution oldContrib, Contribution newContrib) { - removeContribution(oldContrib); - addContribution(newContrib); - /* +// removeContribution(oldContrib); +// addContribution(newContrib); + if (oldContrib != null && newContrib != null) { if (oldContrib.getImports() != null) { for (String importName : oldContrib.getImports()) { @@ -150,7 +150,6 @@ public class ContributionListing { listener.contributionChanged(oldContrib, newContrib); } } - */ } diff --git a/app/src/processing/app/contrib/ContributionTab.java b/app/src/processing/app/contrib/ContributionTab.java index 466280145..83230cfcc 100644 --- a/app/src/processing/app/contrib/ContributionTab.java +++ b/app/src/processing/app/contrib/ContributionTab.java @@ -389,7 +389,7 @@ public class ContributionTab extends JPanel { } - protected void updateStatusDetail(StatusDetail detail) { + protected void applyDetail(StatusDetail detail) { statusPanel.applyDetail(detail); } diff --git a/app/src/processing/app/contrib/ListPanel.java b/app/src/processing/app/contrib/ListPanel.java index 30b3658a2..fc9c9e93d 100644 --- a/app/src/processing/app/contrib/ListPanel.java +++ b/app/src/processing/app/contrib/ListPanel.java @@ -725,7 +725,6 @@ public class ListPanel extends JPanel implements Scrollable { } - /* // Thread: EDT protected void contributionChanged(final Contribution oldContrib, final Contribution newContrib) { @@ -737,7 +736,6 @@ public class ListPanel extends JPanel implements Scrollable { // model.fireTableDataChanged(); } } - */ // Thread: EDT @@ -756,7 +754,7 @@ public class ListPanel extends JPanel implements Scrollable { // Thread: EDT private void setSelectedDetail(StatusDetail contribDetail) { - contributionTab.updateStatusDetail(contribDetail); + contributionTab.applyDetail(contribDetail); if (selectedDetail != contribDetail) { selectedDetail = contribDetail; diff --git a/app/src/processing/app/contrib/StatusDetail.java b/app/src/processing/app/contrib/StatusDetail.java index aa25da2ec..078352cf9 100644 --- a/app/src/processing/app/contrib/StatusDetail.java +++ b/app/src/processing/app/contrib/StatusDetail.java @@ -108,8 +108,12 @@ class StatusDetail { StatusAnimator(ListPanel listPanel) { thread = new Thread(() -> { while (Thread.currentThread() == thread) { - //listPanel.repaint(); - listPanel.table.repaint(); + // Should be ok to call this from any Thread (EDT or otherwise) + // https://www.oracle.com/java/technologies/painting.html#mgr + listPanel.repaint(); +// System.out.println("calling repaint() " + System.currentTimeMillis()); +// listPanel.table.repaint(); +// listPanel.contributionTab.repaint(); // TODO Ideally this should be only calling update on the relevant // cell with model.fireTableCellUpdated(), but that requires // more state housekeeping that's already broken. [fry 230115] diff --git a/app/src/processing/app/contrib/StatusPanel.java b/app/src/processing/app/contrib/StatusPanel.java index ff2511b5a..3a8c6ab3e 100644 --- a/app/src/processing/app/contrib/StatusPanel.java +++ b/app/src/processing/app/contrib/StatusPanel.java @@ -443,7 +443,7 @@ class StatusPanel extends JPanel { } removeButton.setEnabled(contrib.isInstalled() && !detail.removeInProgress); - + if (detail.updateInProgress || detail.installInProgress || detail.removeInProgress) { // progressBar.setUI(new PdeProgressBarUI("manager.progress")); // System.out.println(progressBar.getUI());