package net.sourceforge.fidocadj.dialogs;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import net.sourceforge.fidocadj.globals.*;
import net.sourceforge.fidocadj.primitives.*;
import java.util.*;
/** The class CellArrow is a simple panel showing the dash style
characteristics.
To be used with ArrowCellRenderer.
@author Davide Bucci
<pre>
This file is part of FidoCadJ.
FidoCadJ 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 3 of the License, or
(at your option) any later version.
FidoCadJ 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 FidoCadJ. If not,
@see <a href=http://www.gnu.org/licenses/>http://www.gnu.org/licenses/</a>.
</pre>
Copyright 2009-2014 by Davide Bucci
*/
public class CellDash extends JPanel
{
private final boolean isSelected;
private final DashInfo dash;
private final JList list;
/** Constructor. The user should provide the list in which the element is
used, information about the dashing style as well as the selection
state
@param la the dashing style to be used
@param l the JList in which the element is used
@param is the selection state which will be used for the background
*/
CellDash(DashInfo la,JList l, boolean is)
{
dash=la;
list=l;
isSelected=is;
//Box b=Box.createHorizontalBox();
setPreferredSize(new Dimension(50,18));
}
/** This routine is called by the callback system when there is the need
to draw on the screen the element.
@param g the graphic context on which to draw.
*/
public void paintComponent(Graphics g)
{
// Show the dashing styles in a list.
g.setColor(isSelected ? list.getSelectionBackground():
list.getBackground());
// We draw the background with the correct color depending wether
// the element is selected or not.
g.fillRect(0,0, getWidth(), getHeight());
g.setColor(isSelected ? list.getSelectionForeground():
list.getForeground());
// We then proceed by drawing an horisontal line showing the dashing
// style corresponding to the element
// Maybe just applyStroke of the GraphicsSwing object can be enough?
BasicStroke dashed = new BasicStroke(1,
BasicStroke.CAP_BUTT,
BasicStroke.JOIN_MITER,
10.0f, Globals.dash[dash.style],
0.0f);
((Graphics2D) g).setStroke(dashed);
g.drawLine(getWidth()/3, getHeight()/2,2*getWidth()/3, getHeight()/2);
}
}