1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-06-25 06:22:11 +03:00

Boards/Lib manager: added "Close" button at lower right corner, so users with ungrateful window managers can close that modal using the mouse. Fixes #2884

This commit is contained in:
Federico Fissore
2015-06-05 14:40:06 +02:00
parent 9b8a26e324
commit c754481e33

View File

@ -28,7 +28,6 @@
*/ */
package cc.arduino.contributions.ui; package cc.arduino.contributions.ui;
import cc.arduino.contributions.packages.ui.ContributionIndexTableModel;
import cc.arduino.contributions.ui.listeners.AbstractKeyListener; import cc.arduino.contributions.ui.listeners.AbstractKeyListener;
import com.google.common.base.Predicate; import com.google.common.base.Predicate;
import com.google.common.base.Predicates; import com.google.common.base.Predicates;
@ -44,7 +43,6 @@ import java.awt.*;
import java.awt.event.*; import java.awt.event.*;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.LinkedList;
import static cc.arduino.contributions.packages.ui.ContributionIndexTableModel.DESCRIPTION_COL; import static cc.arduino.contributions.packages.ui.ContributionIndexTableModel.DESCRIPTION_COL;
import static processing.app.I18n._; import static processing.app.I18n._;
@ -65,9 +63,11 @@ public abstract class InstallerJDialog<T> extends JDialog {
// Real contribution table // Real contribution table
protected JTable contribTable; protected JTable contribTable;
// Model behind the table // Model behind the table
protected FilteredAbstractTableModel<T> contribModel; protected final FilteredAbstractTableModel<T> contribModel;
private final JButton closeButton;
private final JButton dismissErrorMessageButton;
abstract protected FilteredAbstractTableModel createContribModel(); abstract protected FilteredAbstractTableModel<T> createContribModel();
abstract protected InstallerTableCell createCellRenderer(); abstract protected InstallerTableCell createCellRenderer();
@ -76,8 +76,8 @@ public abstract class InstallerJDialog<T> extends JDialog {
// Bottom: // Bottom:
// - Progress bar // - Progress bar
protected final ProgressJProgressBar progressBar; protected final ProgressJProgressBar progressBar;
protected final Box progressBox; private final Box progressBox;
protected final Box errorMessageBox; private final Box errorMessageBox;
private final JLabel errorMessage; private final JLabel errorMessage;
public InstallerJDialog(Frame parent, String title, ModalityType applicationModal, String noConnectionErrorMessage) { public InstallerJDialog(Frame parent, String title, ModalityType applicationModal, String noConnectionErrorMessage) {
@ -184,11 +184,20 @@ public abstract class InstallerJDialog<T> extends JDialog {
progressBox.add(Box.createHorizontalStrut(5)); progressBox.add(Box.createHorizontalStrut(5));
progressBox.add(cancelButton); progressBox.add(cancelButton);
JButton dismissErrorMessageButton = new JButton(_("OK")); dismissErrorMessageButton = new JButton(_("OK"));
dismissErrorMessageButton.addActionListener(new ActionListener() { dismissErrorMessageButton.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent arg0) { public void actionPerformed(ActionEvent arg0) {
clearErrorMessage(); clearErrorMessage();
setErrorMessageVisible(false);
}
});
closeButton = new JButton(_("Close"));
closeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
InstallerJDialog.this.dispatchEvent(new WindowEvent(InstallerJDialog.this, WindowEvent.WINDOW_CLOSING));
} }
}); });
@ -197,12 +206,13 @@ public abstract class InstallerJDialog<T> extends JDialog {
errorMessageBox.add(errorMessage); errorMessageBox.add(errorMessage);
errorMessageBox.add(Box.createHorizontalGlue()); errorMessageBox.add(Box.createHorizontalGlue());
errorMessageBox.add(dismissErrorMessageButton); errorMessageBox.add(dismissErrorMessageButton);
errorMessageBox.add(closeButton);
errorMessageBox.setVisible(false); errorMessageBox.setVisible(false);
} }
{ {
JPanel progressPanel = new JPanel(); JPanel progressPanel = new JPanel();
progressPanel.setBorder(new EmptyBorder(7, 7, 7, 7)); progressPanel.setBorder(new EmptyBorder(7, 10, 7, 10));
progressPanel.setLayout(new BoxLayout(progressPanel, BoxLayout.Y_AXIS)); progressPanel.setLayout(new BoxLayout(progressPanel, BoxLayout.Y_AXIS));
progressPanel.add(progressBox); progressPanel.add(progressBox);
progressPanel.add(errorMessageBox); progressPanel.add(errorMessageBox);
@ -236,12 +246,12 @@ public abstract class InstallerJDialog<T> extends JDialog {
public void setErrorMessage(String message) { public void setErrorMessage(String message) {
errorMessage.setText("<html><body>" + message + "</body></html>"); errorMessage.setText("<html><body>" + message + "</body></html>");
errorMessageBox.setVisible(true); setErrorMessageVisible(true);
} }
public void clearErrorMessage() { public void clearErrorMessage() {
errorMessage.setText(""); errorMessage.setText("");
errorMessageBox.setVisible(false); setErrorMessageVisible(false);
} }
public void setProgressVisible(boolean visible, String status) { public void setProgressVisible(boolean visible, String status) {
@ -250,18 +260,25 @@ public abstract class InstallerJDialog<T> extends JDialog {
} else { } else {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
} }
errorMessageBox.setVisible(!visible);
progressBox.setVisible(visible); progressBox.setVisible(visible);
filterField.setEnabled(!visible); filterField.setEnabled(!visible);
categoryChooser.setEnabled(!visible); categoryChooser.setEnabled(!visible);
contribTable.setEnabled(!visible); contribTable.setEnabled(!visible);
errorMessageBox.setVisible(false);
if (contribTable.getCellEditor() != null) { if (contribTable.getCellEditor() != null) {
((InstallerTableCell) contribTable.getCellEditor()).setEnabled(!visible); ((InstallerTableCell) contribTable.getCellEditor()).setEnabled(!visible);
((InstallerTableCell) contribTable.getCellEditor()).setStatus(status); ((InstallerTableCell) contribTable.getCellEditor()).setStatus(status);
} }
} }
private void setErrorMessageVisible(boolean visible) {
errorMessage.setVisible(visible);
dismissErrorMessageButton.setVisible(visible);
closeButton.setVisible(!visible);
errorMessageBox.setVisible(true);
}
protected final ActionListener categoryChooserActionListener = new ActionListener() { protected final ActionListener categoryChooserActionListener = new ActionListener() {
@Override @Override