/* * 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 StringSelectorSetting extends Canvas implements MouseListener { public StringSelector ss; public Manager M; public SettingsObject sobj; private ListenString LS[]; private static int padding=4; public StringSelectorSetting(Manager M, SettingsObject sobj, Field F) { this.M=M; this.sobj=sobj; try { //System.out.println(F.getName()); //System.out.println(sobj.); ss=(StringSelector)(sobj.evalField(F)); } catch (Throwable T) { T.printStackTrace(); System.exit(0); } 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(ss.get(), ss.getArray(), 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(new Color(0,0,70)); this.addMouseListener(this); } public Dimension getPreferredSize() { return new Dimension((int)(LS[1].getRight()+padding), (int)(LS[1].getBottom()+padding)); } public void paint(Graphics gfx) { Graphics2D g=(Graphics2D) gfx; g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g.setColor(new Color(0,127,255)); g.draw(new Line2D.Float((float)0,(float)0, (float)(getWidth()-1),(float)0)); g.draw(new Line2D.Float((float)0,(float)(getHeight()-1), (float)(getWidth()-1),(float)(getHeight()-1))); for (int i=0; i<2; i++) { LS[i].render(g); } } public void mouseClicked(MouseEvent e) { if (LS[1].contains(e)) { ss.toggle(); LS[1].str=ss.get(); repaint(); M.mcbSend(sobj.getObject()); } } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } }