001    /*
002     * Copyright (c) 2005 Einar Pehrson <einar@pehrson.nu>.
003     *
004     * This file is part of
005     * CleanSheets - a spreadsheet application for the Java platform.
006     *
007     * CleanSheets is free software; you can redistribute it and/or modify
008     * it under the terms of the GNU General Public License as published by
009     * the Free Software Foundation; either version 2 of the License, or
010     * (at your option) any later version.
011     *
012     * CleanSheets is distributed in the hope that it will be useful,
013     * but WITHOUT ANY WARRANTY; without even the implied warranty of
014     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
015     * GNU General Public License for more details.
016     *
017     * You should have received a copy of the GNU General Public License
018     * along with CleanSheets; if not, write to the Free Software
019     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
020     */
021    package csheets.ui.sheet;
022    
023    import java.awt.Dimension;
024    
025    import javax.swing.JComboBox;
026    import javax.swing.JLabel;
027    import javax.swing.JTextField;
028    import javax.swing.SwingConstants;
029    
030    import csheets.core.Cell;
031    import csheets.ui.ctrl.SelectionEvent;
032    import csheets.ui.ctrl.SelectionListener;
033    import csheets.ui.ctrl.UIController;
034    
035    /**
036     * A text field in which cell addresses are displayed, and can be named.
037     * @author Einar Pehrson
038     */
039    @SuppressWarnings("serial")
040    public class AddressBox extends JComboBox implements SelectionListener {
041    
042            /** The user interface controller */
043            // private UIController uiController;
044    
045            /**
046             * Creates a cell content field.
047             * @param uiController the user interface controller
048             */
049            public AddressBox(UIController uiController) {
050                    // Stores user interface controller
051                    // this.uiController = uiController;
052                    uiController.addSelectionListener(this);
053    
054                    // Configures box
055                    setPreferredSize(new Dimension(80, 20));
056                    setEditable(false); // Change!
057                    if (getRenderer() instanceof JLabel)
058                            ((JLabel)getRenderer()).setHorizontalAlignment(SwingConstants.CENTER);
059                    if (getEditor().getEditorComponent() instanceof JTextField)
060                            ((JTextField)getEditor().getEditorComponent()).setHorizontalAlignment(SwingConstants.CENTER);
061                    // setAction(new RegisterNameAction());
062            }
063    
064            /**
065             * Updates the text field with the content of the new active cell.
066             * @param event the selection event that was fired
067             */
068            public void selectionChanged(SelectionEvent event) {
069                    Cell cell = event.getCell();
070                    if (cell != null) {
071                            if (getItemCount() > 0)
072                                    removeItemAt(0);
073                            insertItemAt(cell, 0);
074                            setSelectedIndex(0);
075                    }
076            }
077    }