/* * ColorSetting.java * * Created on May 12, 2006, 1:40 PM */ package Current.popups.Settings.Items; import java.awt.*; import java.awt.event.*; import java.awt.geom.Rectangle2D; import java.awt.geom.Line2D; import java.lang.reflect.*; import org.pat.graphics.boxed.ListenString; import Current.manage.*; /** * * @author pat */ public class ColorSetting extends Canvas implements MouseListener { public SettingsObject sobj; public Field F; public Manager M; private ListenString LS[]; private static int padding=4; /** Creates a new instance of ColorSetting * @param M the Manager */ public ColorSetting(Manager M, SettingsObject sobj, Field F) { this.M=M; this.sobj=sobj; this.F=F; LS=new ListenString[2]; String name=null; try { name=(String) (sobj.getType().getDeclaredField(F.getName()+"_name").get(sobj.getObject())); } catch (Throwable T) { name=F.getName(); } LS=new ListenString[2]; setFont(new Font("sanserif", Font.PLAIN, 12)); LS[0]=new ListenString(name,this); LS[1]=new ListenString("grab",this); LS[0].setColors(Color.black,Color.white); LS[1].setColors(Color.black,Color.orange); LS[0].setLeft(padding); LS[0].setTop(padding); LS[1].setLeft(LS[0].getRight()+padding); LS[1].setTop(padding); setSize((int)(LS[1].getRight()+padding), (int)(LS[1].getBottom()+padding)); setBackground(Color.white); this.addMouseListener(this); } public Dimension getPreferredSize() { return new Dimension((int)(LS[1].getRight()+padding), (int)(LS[1].getBottom()+padding)); } public Color getColor() { try { return (Color)(sobj.evalField(F)); } catch (Throwable T) { T.printStackTrace(); System.exit(0); } return null; } public void setColor(Color c) { try { sobj.setField(F, c); } catch (Throwable T) { T.printStackTrace(); System.exit(0); } M.mcbSend(sobj.getObject()); } public void paint(Graphics gfx) { Graphics2D g=(Graphics2D) gfx; g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g.setColor(Color.black); g.draw(new Line2D.Float((float)0,(float)0, (float)getWidth(),(float)getHeight())); g.draw(new Line2D.Float((float)0,(float)getHeight(), (float)getWidth(),(float)0)); Rectangle2D.Float rect= new Rectangle2D.Float((float)0,(float)0,(float)getWidth(),(float)getHeight()); g.setColor(getColor()); g.fill(rect); for (int i=0; i<2; i++) { LS[i].render(g); } } public void mouseClicked(MouseEvent e) { if (LS[1].contains(e)) { setColor(M.getColor()); repaint(); } } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } }