Refactor WarningDialog list cell renderer
This commit is contained in:
parent
6b64f8e7f5
commit
811305201f
@ -2,23 +2,21 @@ package net.sf.openrocket.gui.dialogs;
|
|||||||
|
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
import net.sf.openrocket.gui.components.StyledLabel;
|
import net.sf.openrocket.gui.components.StyledLabel;
|
||||||
|
import net.sf.openrocket.gui.util.BetterListCellRenderer;
|
||||||
import net.sf.openrocket.logging.Error;
|
import net.sf.openrocket.logging.Error;
|
||||||
import net.sf.openrocket.logging.ErrorSet;
|
import net.sf.openrocket.logging.ErrorSet;
|
||||||
import net.sf.openrocket.logging.Warning;
|
import net.sf.openrocket.logging.Warning;
|
||||||
import net.sf.openrocket.logging.WarningSet;
|
import net.sf.openrocket.logging.WarningSet;
|
||||||
|
|
||||||
import javax.swing.DefaultListCellRenderer;
|
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JList;
|
import javax.swing.JList;
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
import javax.swing.JSeparator;
|
import javax.swing.JSeparator;
|
||||||
import javax.swing.JViewport;
|
|
||||||
import javax.swing.ListSelectionModel;
|
import javax.swing.ListSelectionModel;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Component;
|
import java.awt.Component;
|
||||||
import java.awt.Rectangle;
|
|
||||||
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseAdapter;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
|
|
||||||
@ -58,7 +56,7 @@ public abstract class ErrorWarningDialog {
|
|||||||
|
|
||||||
Warning[] w = warnings.toArray(new Warning[0]);
|
Warning[] w = warnings.toArray(new Warning[0]);
|
||||||
final JList<Warning> warningList = new JList<>(w);
|
final JList<Warning> warningList = new JList<>(w);
|
||||||
warningList.setCellRenderer(new WarningListCellRenderer());
|
warningList.setCellRenderer(new BetterListCellRenderer());
|
||||||
JScrollPane warningPane = new JScrollPane(warningList);
|
JScrollPane warningPane = new JScrollPane(warningList);
|
||||||
content.add(warningPane, "wrap, growx");
|
content.add(warningPane, "wrap, growx");
|
||||||
|
|
||||||
@ -78,50 +76,19 @@ public abstract class ErrorWarningDialog {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class ErrorListCellRenderer extends DefaultListCellRenderer {
|
private static class ErrorListCellRenderer extends BetterListCellRenderer {
|
||||||
@Override
|
@Override
|
||||||
public Component getListCellRendererComponent(JList<?> list, Object value, int index,
|
public Component getListCellRendererComponent(JList<?> list, Object value, int index,
|
||||||
boolean isSelected, boolean cellHasFocus) {
|
boolean isSelected, boolean cellHasFocus) {
|
||||||
JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
|
JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
|
||||||
|
|
||||||
// Alternating row colors
|
|
||||||
if (!isSelected) {
|
|
||||||
if (index % 2 == 0) {
|
|
||||||
label.setBackground(Color.WHITE);
|
|
||||||
} else {
|
|
||||||
label.setBackground(new Color(245, 245, 245));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Text color
|
// Text color
|
||||||
if (isSelected) {
|
if (isSelected) {
|
||||||
label.setForeground(Color.WHITE);
|
label.setForeground(Color.WHITE);
|
||||||
} else {
|
} else {
|
||||||
label.setForeground(net.sf.openrocket.util.Color.DARK_RED.toAWTColor());
|
label.setForeground(net.sf.openrocket.util.Color.DARK_RED.toAWTColor());
|
||||||
}
|
}
|
||||||
return label;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class WarningListCellRenderer extends DefaultListCellRenderer {
|
|
||||||
@Override
|
|
||||||
public Component getListCellRendererComponent(JList<?> list, Object value, int index,
|
|
||||||
boolean isSelected, boolean cellHasFocus) {
|
|
||||||
JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
|
|
||||||
|
|
||||||
// Alternating row colors
|
|
||||||
if (!isSelected) {
|
|
||||||
if (index % 2 == 0) {
|
|
||||||
label.setBackground(Color.WHITE);
|
|
||||||
} else {
|
|
||||||
label.setBackground(new Color(245, 245, 245));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Text color
|
|
||||||
if (isSelected) {
|
|
||||||
label.setForeground(Color.WHITE);
|
|
||||||
} else {
|
|
||||||
label.setForeground(Color.BLACK);
|
|
||||||
}
|
|
||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,11 @@ package net.sf.openrocket.gui.dialogs;
|
|||||||
|
|
||||||
import java.awt.Component;
|
import java.awt.Component;
|
||||||
|
|
||||||
import javax.swing.JDialog;
|
|
||||||
import javax.swing.JList;
|
import javax.swing.JList;
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
|
|
||||||
|
import net.sf.openrocket.gui.util.BetterListCellRenderer;
|
||||||
import net.sf.openrocket.logging.Warning;
|
import net.sf.openrocket.logging.Warning;
|
||||||
import net.sf.openrocket.logging.WarningSet;
|
import net.sf.openrocket.logging.WarningSet;
|
||||||
|
|
||||||
@ -17,6 +17,7 @@ public abstract class WarningDialog {
|
|||||||
|
|
||||||
Warning[] w = warnings.toArray(new Warning[0]);
|
Warning[] w = warnings.toArray(new Warning[0]);
|
||||||
final JList<Warning> list = new JList<Warning>(w);
|
final JList<Warning> list = new JList<Warning>(w);
|
||||||
|
list.setCellRenderer(new BetterListCellRenderer());
|
||||||
JScrollPane pane = new JScrollPane(list);
|
JScrollPane pane = new JScrollPane(list);
|
||||||
|
|
||||||
JOptionPane.showMessageDialog(parent, new Object[] { message, pane },
|
JOptionPane.showMessageDialog(parent, new Object[] { message, pane },
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
package net.sf.openrocket.gui.util;
|
||||||
|
|
||||||
|
import javax.swing.DefaultListCellRenderer;
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JList;
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An improved list cell renderer, with alternating row background colors.
|
||||||
|
*
|
||||||
|
* @author Sibo Van Gool <sibo.vangool@hotmail.com>
|
||||||
|
*/
|
||||||
|
public class BetterListCellRenderer extends DefaultListCellRenderer {
|
||||||
|
@Override
|
||||||
|
public Component getListCellRendererComponent(JList<?> list, Object value, int index,
|
||||||
|
boolean isSelected, boolean cellHasFocus) {
|
||||||
|
JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
|
||||||
|
|
||||||
|
// Alternating row colors
|
||||||
|
if (!isSelected) {
|
||||||
|
if (index % 2 == 0) {
|
||||||
|
label.setBackground(Color.WHITE);
|
||||||
|
} else {
|
||||||
|
label.setBackground(new Color(245, 245, 245));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Text color
|
||||||
|
if (isSelected) {
|
||||||
|
label.setForeground(Color.WHITE);
|
||||||
|
} else {
|
||||||
|
label.setForeground(Color.BLACK);
|
||||||
|
}
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user