1
0
mirror of https://github.com/arduino/Arduino.git synced 2025-02-20 14:54:31 +01:00

Extract ContributionIndexTableModel as outer class

This commit is contained in:
Cristian Maglie 2015-12-29 15:58:27 +01:00
parent d598f0cfa7
commit 2b9483b6e6
4 changed files with 108 additions and 65 deletions

View File

@ -0,0 +1,103 @@
/*
* This file is part of Arduino.
*
* Copyright 2015 Arduino LLC (http://www.arduino.cc/)
*
* Arduino is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* As a special exception, you may use this file as part of a free software
* library without restriction. Specifically, if other files instantiate
* templates or use macros or inline functions from this file, or you compile
* this file and link it with other files to produce an executable, this
* file does not by itself cause the resulting executable to be covered by
* the GNU General Public License. This exception does not however
* invalidate any other reasons why the executable file might be covered by
* the GNU General Public License.
*/
package cc.arduino.contributions.packages.ui;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
import cc.arduino.contributions.DownloadableContributionBuiltInAtTheBottomComparator;
import cc.arduino.contributions.filters.InstalledPredicate;
import cc.arduino.contributions.packages.ContributedPackage;
import cc.arduino.contributions.packages.ContributedPlatform;
public class ContributedPlatformReleases {
public final ContributedPackage packager;
public final String arch;
public final List<ContributedPlatform> releases;
public final List<String> versions;
public ContributedPlatform selected = null;
public ContributedPlatformReleases(ContributedPlatform platform) {
packager = platform.getParentPackage();
arch = platform.getArchitecture();
releases = new LinkedList<>();
versions = new LinkedList<>();
add(platform);
}
public boolean shouldContain(ContributedPlatform platform) {
if (platform.getParentPackage() != packager)
return false;
return platform.getArchitecture().equals(arch);
}
public void add(ContributedPlatform platform) {
releases.add(platform);
String version = platform.getParsedVersion();
if (version != null) {
versions.add(version);
}
selected = getLatest();
}
public ContributedPlatform getInstalled() {
List<ContributedPlatform> installedReleases = releases.stream()
.filter(new InstalledPredicate()).collect(Collectors.toList());
Collections
.sort(installedReleases,
new DownloadableContributionBuiltInAtTheBottomComparator());
if (installedReleases.isEmpty()) {
return null;
}
return installedReleases.get(0);
}
public ContributedPlatform getLatest() {
return ContributionIndexTableModel.getLatestOf(releases);
}
public ContributedPlatform getSelected() {
return selected;
}
public void select(ContributedPlatform value) {
for (ContributedPlatform plat : releases) {
if (plat == value) {
selected = plat;
return;
}
}
}
}

View File

@ -147,7 +147,7 @@ public class ContributedPlatformTableCell extends JPanel {
void update(JTable parentTable, Object value, boolean isSelected,
boolean hasBuiltInRelease) {
ContributionIndexTableModel.ContributedPlatformReleases releases = (ContributionIndexTableModel.ContributedPlatformReleases) value;
ContributedPlatformReleases releases = (ContributedPlatformReleases) value;
JTextPane description = makeNewDescription();

View File

@ -51,7 +51,7 @@ import cc.arduino.utils.ReverseComparator;
public class ContributedPlatformTableCellEditor extends InstallerTableCell {
private ContributedPlatformTableCell editorCell;
private ContributionIndexTableModel.ContributedPlatformReleases editorValue;
private ContributedPlatformReleases editorValue;
@Override
public Object getCellEditorValue() {
@ -77,7 +77,7 @@ public class ContributedPlatformTableCellEditor extends InstallerTableCell {
.select((ContributedPlatform) editorCell.versionToInstallChooser
.getSelectedItem()));
editorValue = (ContributionIndexTableModel.ContributedPlatformReleases) value;
editorValue = (ContributedPlatformReleases) value;
setEnabled(true);
final ContributedPlatform installed = editorValue.getInstalled();

View File

@ -38,74 +38,14 @@ import cc.arduino.contributions.ui.FilteredAbstractTableModel;
import processing.app.BaseNoGui;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@SuppressWarnings("serial")
public class ContributionIndexTableModel extends FilteredAbstractTableModel<ContributedPlatform> {
public static class ContributedPlatformReleases {
public final ContributedPackage packager;
public final String arch;
public final List<ContributedPlatform> releases;
public final List<String> versions;
public ContributedPlatform selected = null;
public ContributedPlatformReleases(ContributedPlatform platform) {
this.packager = platform.getParentPackage();
this.arch = platform.getArchitecture();
this.releases = new LinkedList<>();
this.versions = new LinkedList<>();
add(platform);
}
public boolean shouldContain(ContributedPlatform platform) {
if (platform.getParentPackage() != packager)
return false;
return platform.getArchitecture().equals(arch);
}
public void add(ContributedPlatform platform) {
releases.add(platform);
String version = platform.getParsedVersion();
if (version != null) {
versions.add(version);
}
selected = getLatest();
}
public ContributedPlatform getInstalled() {
List<ContributedPlatform> installedReleases = releases.stream().filter(new InstalledPredicate()).collect(Collectors.toList());
Collections.sort(installedReleases, new DownloadableContributionBuiltInAtTheBottomComparator());
if (installedReleases.isEmpty()) {
return null;
}
return installedReleases.get(0);
}
public ContributedPlatform getLatest() {
return getLatestOf(releases);
}
public ContributedPlatform getSelected() {
return selected;
}
public void select(ContributedPlatform value) {
for (ContributedPlatform plat : releases) {
if (plat == value) {
selected = plat;
return;
}
}
}
}
public class ContributionIndexTableModel
extends FilteredAbstractTableModel<ContributedPlatform> {
private final List<ContributedPlatformReleases> contributions = new ArrayList<>();