Java tutorial
/* * jMemorize - Learning made easy (and fun) - A Leitner flashcards tool * Copyright(C) 2004-2008 Riad Djemili and contributors * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 1, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package jmemorize.gui.swing.panels; import java.awt.BorderLayout; import java.text.MessageFormat; import java.util.List; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import jmemorize.core.Card; import jmemorize.gui.LC; import jmemorize.gui.Localization; import com.jgoodies.forms.builder.DefaultFormBuilder; import com.jgoodies.forms.layout.CellConstraints; import com.jgoodies.forms.layout.FormLayout; /** * A status bar that can be linked to card tables and other objects to display * additional data about them. * * @author djemili */ public class StatusBar extends JPanel { // TODO use cards provider private JLabel m_leftLabel = new JLabel(); private JLabel m_rightLabel = new JLabel(); public StatusBar() { setLayout(new BorderLayout()); add(buildStatusBar(), BorderLayout.CENTER); } /** * Sets the text that should appear on the left part of the status bar. The * right side is always reserved to show the number of cards. * * @param text */ public void setLeftText(String text) { m_leftLabel.setText(text); } /** * Sets currently shown cards. This is used for the right part of the status * bar that shows the number of currently displayed cards. * * @param cards The cards that are currently displayed. */ public void setCards(List<Card> cards) { int unlearned = 0; int learned = 0; int expired = 0; for (Card card : cards) { if (card.isUnlearned()) { unlearned++; } else if (card.isLearned()) { learned++; } else //if (card.isExpired()) { expired++; } } Object[] args = { Localization.get(LC.STATUS_CARDS), new Integer(cards.size()), Localization.get(LC.STATUS_LEARNED), new Integer(learned), Localization.get(LC.STATUS_EXPIRED), new Integer(expired), Localization.get(LC.STATUS_UNLEARNED), new Integer(unlearned) }; MessageFormat form = new MessageFormat("{0}: {1} ({2}: {3} {4}: {5} {6}: {7})"); //$NON-NLS-1$ m_rightLabel.setText(form.format(args)); } private JPanel buildStatusBar() { FormLayout layout = new FormLayout("3dlu, p, 9dlu:grow, p, 3dlu", // columns //$NON-NLS-1$ "p"); // rows //$NON-NLS-1$ CellConstraints cc = new CellConstraints(); DefaultFormBuilder builder = new DefaultFormBuilder(layout); builder.setBorder(new EmptyBorder(4, 5, 2, 5)); builder.add(m_leftLabel, cc.xy(2, 1)); builder.add(m_rightLabel, cc.xy(4, 1)); return builder.getPanel(); } }