renaming DetailPanel because it is no longer a standalone Panel

This commit is contained in:
Ben Fry
2022-01-17 21:05:22 -05:00
parent 508cc9dc5d
commit cc5ffd7b02
6 changed files with 51 additions and 54 deletions
@@ -393,16 +393,16 @@ public class ContributionTab extends JPanel {
}
public void updateStatusPanel(DetailPanel contributionPanel) {
statusPanel.update(contributionPanel);
public void updateStatusDetail(StatusPanelDetail detail) {
statusPanel.updateDetail(detail);
}
protected void updateAll() {
Collection<DetailPanel> collection =
contributionListPanel.panelByContribution.values();
for (DetailPanel detailPanel : collection) {
detailPanel.update();
Collection<StatusPanelDetail> collection =
contributionListPanel.detailForContrib.values();
for (StatusPanelDetail detail : collection) {
detail.update();
}
contributionListPanel.model.fireTableDataChanged();
}
+23 -28
View File
@@ -42,11 +42,11 @@ import processing.app.ui.Toolkit;
public class ListPanel extends JPanel
implements Scrollable, ContributionListing.ChangeListener {
ContributionTab contributionTab;
TreeMap<Contribution, DetailPanel> panelByContribution = new TreeMap<>(ContributionListing.COMPARATOR);
TreeMap<Contribution, StatusPanelDetail> detailForContrib = new TreeMap<>(ContributionListing.COMPARATOR);
Contribution.Filter filter;
private DetailPanel selectedPanel;
private StatusPanelDetail selectedDetail;
protected ContributionRowFilter rowFilter;
protected JTable table;
protected TableRowSorter<ContributionTableModel> sorter;
@@ -147,7 +147,7 @@ implements Scrollable, ContributionListing.ChangeListener {
int row = table.getSelectedRow();
if (row != -1) {
Contribution contrib = (Contribution) table.getValueAt(row, 0);
setSelectedPanel(panelByContribution.get(contrib));
setSelectedDetail(detailForContrib.get(contrib));
// Preventing the focus to move out of filterField after typing every character
if (!contributionTab.filterHasFocus()) {
table.requestFocusInWindow();
@@ -335,11 +335,11 @@ implements Scrollable, ContributionListing.ChangeListener {
private void configureStatusColumnLabel(JLabel label, Contribution contribution) {
Icon icon = null;
label.setFont(ManagerFrame.NORMAL_PLAIN);
DetailPanel panel = panelByContribution.get(contribution);
if (panel == null) {
System.out.println("no panel for " + contribution.name + " inside " + contributionTab.contribType);
}
if (panel.updateInProgress || panel.installInProgress) {
StatusPanelDetail detail = detailForContrib.get(contribution);
// if (detail == null) {
// System.out.println("no panel for " + contribution.name + " inside " + contributionTab.contribType);
// }
if (detail.updateInProgress || detail.installInProgress) {
// Display "loading" icon if download/install in progress
icon = downloadingIcon;
} else if (contribution.isInstalled()) {
@@ -347,7 +347,7 @@ implements Scrollable, ContributionListing.ChangeListener {
icon = incompatibleIcon;
} else if (ContributionListing.getInstance().hasUpdates(contribution)) {
icon = updateAvailableIcon;
} else if (panel.installInProgress || panel.updateInProgress) {
} else if (detail.installInProgress || detail.updateInProgress) {
icon = downloadingIcon;
} else {
icon = upToDateIcon;
@@ -566,11 +566,11 @@ implements Scrollable, ContributionListing.ChangeListener {
// Thread: EDT
public void contributionAdded(final Contribution contribution) {
if (true || filter.matches(contribution)) {
if (!panelByContribution.containsKey(contribution)) {
if (!detailForContrib.containsKey(contribution)) {
// new Exception().printStackTrace(System.out);
// long t1 = System.currentTimeMillis();
DetailPanel newPanel = new DetailPanel(this);
panelByContribution.put(contribution, newPanel);
StatusPanelDetail newPanel = new StatusPanelDetail(this);
detailForContrib.put(contribution, newPanel);
newPanel.setContrib(contribution);
// add(newPanel);
model.fireTableDataChanged();
@@ -586,9 +586,9 @@ implements Scrollable, ContributionListing.ChangeListener {
// Thread: EDT
public void contributionRemoved(final Contribution contribution) {
if (true || filter.matches(contribution)) {
DetailPanel panel = panelByContribution.get(contribution);
StatusPanelDetail panel = detailForContrib.get(contribution);
if (panel != null) {
panelByContribution.remove(contribution);
detailForContrib.remove(contribution);
}
model.fireTableDataChanged();
updateUI();
@@ -600,13 +600,13 @@ implements Scrollable, ContributionListing.ChangeListener {
public void contributionChanged(final Contribution oldContrib,
final Contribution newContrib) {
if (true || filter.matches(oldContrib)) {
DetailPanel panel = panelByContribution.get(oldContrib);
StatusPanelDetail panel = detailForContrib.get(oldContrib);
if (panel == null) {
contributionAdded(newContrib);
} else {
panelByContribution.remove(oldContrib);
detailForContrib.remove(oldContrib);
panel.setContrib(newContrib);
panelByContribution.put(newContrib, panel);
detailForContrib.put(newContrib, panel);
model.fireTableDataChanged();
}
}
@@ -622,15 +622,15 @@ implements Scrollable, ContributionListing.ChangeListener {
// Thread: EDT
protected void setSelectedPanel(DetailPanel contributionPanel) {
contributionTab.updateStatusPanel(contributionPanel);
protected void setSelectedDetail(StatusPanelDetail contribDetail) {
contributionTab.updateStatusDetail(contribDetail);
if (selectedPanel == contributionPanel) {
if (selectedDetail == contribDetail) {
// selectedPanel.setSelected(true);
} else {
// DetailPanel lastSelected = selectedPanel;
selectedPanel = contributionPanel;
selectedDetail = contribDetail;
// if (lastSelected != null) {
// lastSelected.setSelected(false);
@@ -643,8 +643,8 @@ implements Scrollable, ContributionListing.ChangeListener {
}
protected DetailPanel getSelectedPanel() {
return selectedPanel;
protected StatusPanelDetail getSelectedDetail() {
return selectedDetail;
}
@@ -689,11 +689,6 @@ implements Scrollable, ContributionListing.ChangeListener {
int bottomOfScrollArea = visibleRect.y + visibleRect.height;
for (Component c : getComponents()) {
// "if not a visible DetailPanel"
// (will never be true, b/c DetailPanel never visible)
// if (!(c.isVisible() && c instanceof DetailPanel)) {
// continue;
// }
Dimension d = c.getPreferredSize();
int nextHeight = height + d.height;
+12 -12
View File
@@ -99,10 +99,10 @@ class StatusPanel extends JPanel {
installButton.setHorizontalAlignment(SwingConstants.LEFT);
installButton.addActionListener(e -> {
installButton.setEnabled(false);
DetailPanel currentPanel =
contributionTab.contributionListPanel.getSelectedPanel();
currentPanel.install();
StatusPanel.this.update(currentPanel);
StatusPanelDetail currentDetail =
contributionTab.contributionListPanel.getSelectedDetail();
currentDetail.install();
updateDetail(currentDetail);
});
progressPanel = new JPanel();
progressPanel.setLayout(new BorderLayout());
@@ -117,10 +117,10 @@ class StatusPanel extends JPanel {
updateButton.setHorizontalAlignment(SwingConstants.LEFT);
updateButton.addActionListener(e -> {
updateButton.setEnabled(false);
DetailPanel currentPanel =
contributionTab.contributionListPanel.getSelectedPanel();
currentPanel.update();
StatusPanel.this.update(currentPanel);
StatusPanelDetail currentDetail =
contributionTab.contributionListPanel.getSelectedDetail();
currentDetail.update();
updateDetail(currentDetail);
});
removeButton = Toolkit.createIconButton("Remove", removeIcon);
@@ -128,10 +128,10 @@ class StatusPanel extends JPanel {
removeButton.setHorizontalAlignment(SwingConstants.LEFT);
removeButton.addActionListener(e -> {
removeButton.setEnabled(false);
DetailPanel currentPanel =
contributionTab.contributionListPanel.getSelectedPanel();
StatusPanelDetail currentPanel =
contributionTab.contributionListPanel.getSelectedDetail();
currentPanel.remove();
StatusPanel.this.update(currentPanel);
updateDetail(currentPanel);
});
int labelWidth = (width != 0) ?
@@ -305,7 +305,7 @@ class StatusPanel extends JPanel {
}
void update(DetailPanel panel) {
void updateDetail(StatusPanelDetail panel) {
// System.out.println("rebuilding status panel for " + panel.getContrib().name);
// new Exception("rebuilding status panel for " + panel.getContrib().name).printStackTrace(System.out);
progressPanel.removeAll();
@@ -36,7 +36,7 @@ import processing.app.ui.Toolkit;
* Vestigial class that was formerly a detail panel, but since 3.x
* has only been used to track install/remove state information.
*/
class DetailPanel {
class StatusPanelDetail {
private final ListPanel listPanel;
private final ContributionListing contribListing = ContributionListing.getInstance();
@@ -51,7 +51,7 @@ class DetailPanel {
boolean removeInProgress;
DetailPanel(ListPanel contributionListPanel) {
StatusPanelDetail(ListPanel contributionListPanel) {
// System.out.println("DetailPanel.<init>");
// new Exception().printStackTrace(System.out);
listPanel = contributionListPanel;
@@ -68,8 +68,9 @@ public class UpdateContributionTab extends ContributionTab {
setBackground(Color.WHITE);
}
@Override
public void updateStatusPanel(DetailPanel contributionPanel) {
public void updateStatusDetail(StatusPanelDetail detail) {
// Do nothing
}
}
@@ -1,7 +1,6 @@
package processing.app.contrib;
public class UpdateListPanel extends ListPanel {
Contribution.Filter contribFilter;
public UpdateListPanel(ContributionTab contributionTab,
@@ -17,6 +16,7 @@ public class UpdateListPanel extends ListPanel {
table.getTableHeader().setEnabled(false);
}
// Thread: EDT
@Override
public void contributionAdded(final Contribution contribution) {
@@ -27,6 +27,7 @@ public class UpdateListPanel extends ListPanel {
}
}
// Thread: EDT
@Override
public void contributionRemoved(final Contribution contribution) {
@@ -34,17 +35,17 @@ public class UpdateListPanel extends ListPanel {
((UpdateStatusPanel) contributionTab.statusPanel).update(); // Disables update button on last contribution
}
// Thread: EDT
@Override
public void contributionChanged(final Contribution oldContrib,
final Contribution newContrib) {
DetailPanel panel = panelByContribution.get(oldContrib);
if (panel == null) {
StatusPanelDetail detail = detailForContrib.get(oldContrib);
if (detail == null) {
contributionAdded(newContrib);
} else if (newContrib.isInstalled()) {
panelByContribution.remove(oldContrib);
detailForContrib.remove(oldContrib);
}
model.fireTableDataChanged();
}
}