diff --git a/app/src/processing/app/contrib/UpdateContributionTab.java b/app/src/processing/app/contrib/UpdateContributionTab.java
index 57d2cd152..3ec79d0a9 100644
--- a/app/src/processing/app/contrib/UpdateContributionTab.java
+++ b/app/src/processing/app/contrib/UpdateContributionTab.java
@@ -1,53 +1,32 @@
package processing.app.contrib;
import java.awt.Color;
-import java.awt.Component;
-import java.awt.EventQueue;
-import java.awt.Font;
import java.awt.Graphics;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.Set;
-import java.util.TreeMap;
-import javax.swing.BorderFactory;
import javax.swing.GroupLayout;
-import javax.swing.Icon;
-import javax.swing.JButton;
-import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
-import javax.swing.JScrollPane;
-import javax.swing.JTable;
-import javax.swing.LayoutStyle;
-import javax.swing.ListSelectionModel;
-import javax.swing.SwingConstants;
-import javax.swing.table.DefaultTableCellRenderer;
-import javax.swing.table.DefaultTableModel;
-import javax.swing.table.JTableHeader;
-import javax.swing.table.TableCellRenderer;
-import processing.app.Base;
import processing.app.ui.Editor;
import processing.app.ui.Toolkit;
public class UpdateContributionTab extends ContributionTab {
- public UpdateContributionTab(ContributionType type,ContributionManagerDialog contributionManagerDialog) {
+ public UpdateContributionTab(ContributionType type,
+ ContributionManagerDialog contributionManagerDialog) {
super();
filter = ContributionType.createUpdateFilter();
contributionListPanel = new UpdateContributionListPanel(this, filter);
- statusPanel = new UpdateStatusPanel(650, this);
+ statusPanel = new UpdateStatusPanel(this, 650, this);
this.contributionType = type;
this.contributionManagerDialog = contributionManagerDialog;
contribListing = ContributionListing.getInstance();
contribListing.addContributionListener(contributionListPanel);
}
+
@Override
public void setLayout(Editor editor, boolean activateErrorPanel,
boolean isLoading) {
@@ -89,263 +68,5 @@ public class UpdateContributionTab extends ContributionTab {
layout.setHonorsVisibility(contributionListPanel, false);
panel.setBackground(Color.WHITE);
-// panel.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2));
-
- }
-
- public class UpdateContributionListPanel extends ContributionListPanel {
-
- public UpdateContributionListPanel(ContributionTab contributionTab,
- ContributionFilter filter) {
- this.contributionTab = contributionTab;
- this.filter = filter;
-
- setOpaque(true);
- setBackground(Color.WHITE);
-
- model = new DefaultTableModel() {
- @Override
- public boolean isCellEditable(int row, int column) {
- return false;
- }
-
- @Override
- public Class> getColumnClass(int columnIndex) {
- return (columnIndex == 0) ? Icon.class : String.class;
- }
- };
-
- model.setColumnIdentifiers(new String[] {
- "", "Name", "Author", "Installed", "Update To"
- });
-
- table = new JTable(model) {
- @Override
- public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
- Component c = super.prepareRenderer(renderer, row, column);
- String title = (String) getValueAt(row, 1);
- if (title.equals("Library") || title.equals("Tools")
- || title.equals("Modes") || title.equals("Examples")) {
- ((JComponent) c).setBorder(BorderFactory
- .createMatteBorder(row == 0 ? 0 : 2, 0, 2, 0, Color.BLACK));
- }
- return c;
- }
-
- @Override
- public void changeSelection(int rowIndex, int columnIndex,
- boolean toggle, boolean extend) {
- String title = (String) getValueAt(rowIndex, 1);
- if (title.equals("Library") ||
- title.equals("Tools") ||
- title.equals("Modes") ||
- title.equals("Examples")){
- return;
- }
- super.changeSelection(rowIndex, columnIndex, toggle, extend);
- }
- };
-
- scrollPane = new JScrollPane(table);
- table.setFillsViewportHeight(true);
- table.setSelectionBackground(new Color(0xe0fffd));
- table.setSelectionForeground(table.getForeground());
- table.setFont(Toolkit.getSansFont(14, Font.PLAIN));
- table.setRowHeight(30);
- table.setRowMargin(6);
- table.getColumnModel().setColumnMargin(-1);
- table.getColumnModel().getColumn(0).setMaxWidth(60);
- table.setShowGrid(false);
- table.setCellSelectionEnabled(false);
- table.setRowSelectionAllowed(true);
- table.setAutoCreateColumnsFromModel(true);
- table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
-
- table.setDefaultRenderer(String.class, new DefaultTableCellRenderer() {
- @Override
- public Component getTableCellRendererComponent(JTable table,
- Object value,
- boolean isSelected,
- boolean hasFocus,
- int row, int column) {
- return super.getTableCellRendererComponent(table, value, isSelected,
- false, row, column);
- }
- });
-
- table.getTableHeader().setDefaultRenderer(new ContribHeaderRenderer() {
- @Override
- public Component getTableCellRendererComponent(JTable table,
- Object value,
- boolean isSelected,
- boolean hasFocus, int row,
- int column) {
- // TODO this doesn't do anything with the returned value? [fry]
- super.getTableCellRendererComponent(table, value, isSelected,
- hasFocus, row, column);
- JTableHeader tableHeader = table.getTableHeader();
- if (tableHeader != null) {
- setForeground(tableHeader.getForeground());
- }
- setIcon(getIcon(table, column));
- setBackground(new Color(0xebebeb));
- return this;
- }
- });
-
- GroupLayout layout = new GroupLayout(this);
- layout.setHorizontalGroup(layout.createParallelGroup().addComponent(scrollPane));
- layout.setVerticalGroup(layout.createSequentialGroup().addComponent(scrollPane));
-
- setLayout(layout);
- table.setVisible(true);
-
- panelByContribution = new TreeMap(new Comparator() {
- @Override
- public int compare(Contribution o1, Contribution o2) {
- int diff =
- ContributionManagerDialog.getTypeIndex(o1.getType()) -
- ContributionManagerDialog.getTypeIndex(o2.getType());
- if (diff == 0) {
- diff = o1.getName().toLowerCase().compareTo(o2.getName().toLowerCase());
- }
- return diff;
- }
- });
- }
-
- @Override
- void updatePanelOrdering(Set contributionsSet) {
- JLabel label = contributionTab.contributionManagerDialog.numberLabel;
- if (getNoOfRows() == 0) {
- label.setVisible(false);
- } else {
- label.setVisible(true);
- label.setText(Integer.toString(panelByContribution.size()));
- }
- model.getDataVector().removeAllElements();
- model.fireTableDataChanged();
- ContributionType temp = null;
-
- // Avoid ugly synthesized bold
- Font boldFont = Toolkit.getSansFont(table.getFont().getSize(), Font.BOLD);
- String fontFace = "";
-
- for (Contribution entry : contributionsSet) {
- if (entry.getType() != temp) {
- temp = entry.getType();
- model.addRow(new Object[] {
- null,
- "" + temp.getTitle() + "",
- null, null, null
- });
- }
- //TODO Make this into a function
- StringBuilder name = new StringBuilder("");
- String authorList = entry.getAuthorList();
- if (authorList != null) {
- for (int i = 0; i < authorList.length(); i++) {
- if (authorList.charAt(i) == '[' || authorList.charAt(i) == ']') {
- continue;
- }
- if (authorList.charAt(i) == '(') {
- i++;
- while (authorList.charAt(i) != ')') {
- i++;
- }
- } else {
- name.append(authorList.charAt(i));
- }
- }
- }
- Icon icon = null;
- if (entry.isInstalled()) {
- icon = upToDateIcon;
- if (contribListing.hasUpdates(entry)) {
- icon = updateAvailableIcon;
- }
- if (!entry.isCompatible(Base.getRevision())) {
- icon = incompatibleIcon;
- }
- }
- model.addRow(new Object[] {
- icon,
- "" + fontFace + entry.getName() + "",
- name,
- entry.getPrettyVersion(),
- contributionTab.contribListing.getLatestVersion(entry)
- });
- }
- ((UpdateStatusPanel)statusPanel).update();
- }
-
- @Override
- public void contributionAdded(final Contribution contribution) {
- if (filter.matches(contribution)) {
- EventQueue.invokeLater(new Runnable() {
- public void run() {
- ContributionPanel newPanel = contributionManagerDialog
- .getTab(contribution.getType()).contributionListPanel.panelByContribution
- .get(contribution);
- if (newPanel == null) {
- newPanel = new ContributionPanel(UpdateContributionListPanel.this);
- }
- if (!panelByContribution.containsKey(contribution)) {
- synchronized (panelByContribution) {
- panelByContribution.put(contribution, newPanel);
- }
- }
- if (newPanel != null) {
- newPanel.setContribution(contribution);
- add(newPanel);
- updatePanelOrdering(panelByContribution.keySet());
- updateColors(); // XXX this is the place
- }
- }
- });
- }
- }
- }
-
-
- public class UpdateStatusPanel extends StatusPanel {
-
- public UpdateStatusPanel(int width, final ContributionTab contributionTab) {
- super();
-
- updateButton = new JButton("Update All", Toolkit.getLibIconX("manager/update"));
- updateButton.setFont(Toolkit.getSansFont(14, Font.PLAIN));
- updateButton.setHorizontalAlignment(SwingConstants.LEFT);
- updateButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- Collection c =
- contributionTab.contributionListPanel.panelByContribution.values();
- for (ContributionPanel contributionPanel : c) {
- contributionPanel.update();
- }
- }
- });
- setBackground(new Color(0xebebeb));
- layout = new GroupLayout(this);
- this.setLayout(layout);
-
- layout.setAutoCreateContainerGaps(true);
- layout.setAutoCreateGaps(true);
-
- layout.setHorizontalGroup(layout
- .createSequentialGroup()
- .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED,
- GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE)
- .addComponent(updateButton, BUTTON_WIDTH, BUTTON_WIDTH, BUTTON_WIDTH));
- layout.setVerticalGroup(layout.createParallelGroup()
- .addComponent(updateButton));
- updateButton.setVisible(true);
- updateButton.setEnabled(false);
- }
-
- public void update() {
- updateButton.setEnabled(contributionListPanel.getNoOfRows() > 0);
- }
}
}