001    /*
002     * Copyright (C) 2008-2010 by Holger Arndt
003     *
004     * This file is part of the Universal Java Matrix Package (UJMP).
005     * See the NOTICE file distributed with this work for additional
006     * information regarding copyright ownership and licensing.
007     *
008     * UJMP is free software; you can redistribute it and/or modify
009     * it under the terms of the GNU Lesser General Public License as
010     * published by the Free Software Foundation; either version 2
011     * of the License, or (at your option) any later version.
012     *
013     * UJMP is distributed in the hope that it will be useful,
014     * but WITHOUT ANY WARRANTY; without even the implied warranty of
015     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
016     * GNU Lesser General Public License for more details.
017     *
018     * You should have received a copy of the GNU Lesser General Public
019     * License along with UJMP; if not, write to the
020     * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
021     * Boston, MA  02110-1301  USA
022     */
023    
024    package org.ujmp.gui.plot;
025    
026    import java.awt.Graphics;
027    import java.awt.Graphics2D;
028    
029    import javax.swing.ListSelectionModel;
030    
031    public class Selection {
032    
033            private PlotSettings plotSettings = null;
034    
035            public Selection(PlotSettings plotSettings) {
036                    this.plotSettings = plotSettings;
037            }
038    
039            public void paintComponent(Graphics g) {
040                    Graphics2D g2d = (Graphics2D) g;
041    
042                    ListSelectionModel lsm = plotSettings.getMatrixGUIObject().getRowSelectionModel();
043                    int min = lsm.getMinSelectionIndex();
044                    int max = lsm.getMaxSelectionIndex();
045    
046                    if (min != -1 && max != -1) {
047                            double xf = plotSettings.getXFactor();
048    
049                            int y1 = 0;
050                            int y2 = plotSettings.getHeight() - 1;
051                            int h = y2 - y1;
052    
053                            int x1 = (int) (min * xf);
054                            int x2 = (int) (max * xf);
055                            int w = x2 - x1;
056    
057                            g2d.setColor(plotSettings.getSelectionLineColor());
058                            g2d.drawLine(x1, y1, x1, y2);
059                            g2d.drawLine(x2, y1, x2, y2);
060                            g2d.setColor(plotSettings.getSelectionColor());
061                            if (w != 0) {
062                                    g2d.fillRect(x1, y1, w, h);
063                            }
064                    }
065    
066            }
067    
068    }