IteratorTest.java Source code

Java tutorial

Introduction

Here is the source code for IteratorTest.java

Source

import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.BreakIterator;
import java.util.Locale;
import java.util.Vector;

import javax.swing.ButtonGroup;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class IteratorTest extends JPanel {
    protected JComboBox localeButton = new JComboBox(Locale.getAvailableLocales());

    protected JTextArea textArea = new JTextArea(5, 20);

    protected JRadioButton charButton = new JRadioButton("Character", true);

    protected JRadioButton wordButton = new JRadioButton("Word");

    protected JRadioButton lineButton = new JRadioButton("Line");

    protected JRadioButton sentButton = new JRadioButton("Sentence");

    protected JButton refreshButton = new JButton("Refresh");

    protected JList itemList = new JList();

    public static void main(String[] args) {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setContentPane(new IteratorTest());
        f.pack();
        f.setVisible(true);
    }

    public IteratorTest() {
        localeButton.setRenderer(new LocaleListCellRenderer());
        localeButton.setSelectedItem(Locale.getDefault());
        add(localeButton);
        textArea.setLineWrap(true);
        textArea.setWrapStyleWord(true);

        add(new JScrollPane(textArea));

        add(getTypePanel());
        add(getCountPanel());

        add(new JScrollPane(itemList));
        refreshDisplay();
    }

    protected JPanel getTypePanel() {
        JPanel panel = new JPanel();

        panel.add(charButton);
        panel.add(wordButton);
        panel.add(lineButton);
        panel.add(sentButton);

        ButtonGroup group = new ButtonGroup();
        group.add(charButton);
        group.add(wordButton);
        group.add(lineButton);
        group.add(sentButton);
        return panel;
    }

    protected JPanel getCountPanel() {
        JPanel panel = new JPanel();
        JLabel label = new JLabel("Count:", JLabel.RIGHT);
        panel.add(label);

        Dimension size = panel.getPreferredSize();
        size.width = Math.min(size.width, 100);

        refreshButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                refreshDisplay();
            }
        });
        panel.add(refreshButton);
        return panel;
    }

    protected void refreshDisplay() {
        int startIndex, nextIndex;
        Vector items = new Vector();
        String msgText = textArea.getText();
        Locale locale = (Locale) (localeButton.getSelectedItem());
        BreakIterator iterator = null;
        if (charButton.isSelected()) {
            iterator = BreakIterator.getCharacterInstance(locale);
        } else if (wordButton.isSelected()) {
            iterator = BreakIterator.getWordInstance(locale);
        } else if (lineButton.isSelected()) {
            iterator = BreakIterator.getLineInstance(locale);
        } else if (sentButton.isSelected()) {
            iterator = BreakIterator.getSentenceInstance(locale);
        }
        iterator.setText(msgText);
        startIndex = iterator.first();
        nextIndex = iterator.next();

        while (nextIndex != BreakIterator.DONE) {
            items.addElement(msgText.substring(startIndex, nextIndex));
            startIndex = nextIndex;
            nextIndex = iterator.next();
        }
        itemList.setListData(items);
    }

}

class LocaleListCellRenderer extends DefaultListCellRenderer {
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
            boolean hasFocus) {
        Locale locale = (Locale) (value);
        return super.getListCellRendererComponent(list, locale.getDisplayName(), index, isSelected, hasFocus);
    }
}