/* FilterNotValidPanel.java created 2011-02-22 * */ package org.signalml.app.view.montage.filters; import java.awt.Color; import java.awt.Dimension; import java.awt.GridLayout; import java.util.ArrayList; import java.util.List; import javax.swing.JLabel; import javax.swing.JPanel; /** * This class represents a panel which shows filter not valid red messages. * * @author Piotr Szachewicz */ public class FilterNotValidPanel extends JPanel { /** * An array of labels used to show error messages. */ private List<JLabel> labels = new ArrayList<JLabel>(); /** * Number of labels in this panel. */ private int numberOfLabels = 2; /** * The index of the first empty label in labels. */ private int firstEmptyLabelIndex = 0; public FilterNotValidPanel() { createInterface(); } /** * Creates the panel and all components. */ private void createInterface() { this.setLayout(new GridLayout(numberOfLabels, 1)); this.setPreferredSize(new Dimension(1050, 50)); createLabels(); for (JLabel label: labels) this.add(label); } /** * Creates all labels and puts them in the labels list. */ protected void createLabels() { for (int i = 0; i < numberOfLabels; i++) labels.add(createLabel()); } /** * Create a single label. * @return a new label */ private JLabel createLabel() { JLabel label = new JLabel(); label.setForeground(Color.red); label.setHorizontalAlignment(JLabel.CENTER); return label; } /** * Clears all error messages from the panel. */ public void clearMessages() { for (JLabel label: labels) label.setText(""); firstEmptyLabelIndex = 0; } /** * Adds a new error message to be shown in this panel. If no label * is empty, the message will be not shown. * @param text the message to be shown */ protected void addMessage(String text) { if (!areAnyLabelsEmpty()) return; labels.get(firstEmptyLabelIndex).setText(text); firstEmptyLabelIndex++; } /** * Sets the list of messages to be shown on this panel. * @param messages messages to be shown */ public void setMessages(List<String> messages) { clearMessages(); for (String message: messages) addMessage(message); } /** * Returns true if there is any empty label in the labels list, * false otherwise. * @return true if there is any empty label in the labels list, * false otherwise. */ protected boolean areAnyLabelsEmpty() { if (firstEmptyLabelIndex == numberOfLabels) return false; return true; } }