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:
@ -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
|
||||||
|
Reference in New Issue
Block a user