package com.vci.client.ui.swing.components; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.event.FocusEvent; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JTextField; import javax.swing.text.Document; import com.vci.client.ui.swing.VCISwingUtil; /** * *
Title:
*Description:
*Copyright: Copyright (c) 2012
*Company: VCI
* @author xchao * @time 2012-5-10 * @version 1.0 */ public class VCIJTextField extends JTextField implements MouseListener{ /** * */ private static final long serialVersionUID = 2046222954902184262L; private VCIJPanel pal = null; private boolean isSupportRightClick = true; public VCIJTextField(Document doc, String text, int columns) { super(doc, text, columns); customConstructor(); } public VCIJTextField(Document doc, String text, int columns, boolean isSupportRightClick) { super(doc, text, columns); this.setSupportRightClick(isSupportRightClick); customConstructor(); } public VCIJTextField(Document doc, String text, int columns,VCIJPanel pal) { super(doc, text, columns); customConstructor(pal); } public VCIJTextField(int columns) { this(null, null, columns); } public VCIJTextField(String text, boolean isSupportRightClick) { this(null, text, 0, isSupportRightClick); } public VCIJTextField(String text, int columns) { this(null, text, columns); } public VCIJTextField(String text) { this(null, text, 0); } public VCIJTextField(VCIJPanel pal,boolean required){ this(null, "", 0,pal); setRequired(required); } public VCIJTextField(boolean required){ this(""); setRequired(required); } private void customConstructor(){ setFont(VCISwingUtil.FONT_SONTTI_PLAN_13); setBorder(VCISwingUtil.JTEXT_FIELD_BORDER_DEFAULT); setPreferredSize(new Dimension(VCISwingUtil.JTEXT_FIELD_DEFAULT_WIDTH, VCISwingUtil.JTEXT_FIELD_DEFAULT_HEIGHT)); this.addMouseListener(this); if (this.isSupportRightClick) { VCIJTextContextMenu.register(this,null); } } private void customConstructor(VCIJPanel pal){ setFont(VCISwingUtil.FONT_SONTTI_PLAN_13); setBorder(VCISwingUtil.JTEXT_FIELD_BORDER_DEFAULT); setPreferredSize(new Dimension(VCISwingUtil.JTEXT_FIELD_DEFAULT_WIDTH, VCISwingUtil.JTEXT_FIELD_DEFAULT_HEIGHT)); this.addMouseListener(this); if (this.isSupportRightClick) { VCIJTextContextMenu.register(this,pal); } } public void mouseClicked(MouseEvent e) { if(!canResponse()) return; hasFocus = true; setBackground(VCISwingUtil.JTEXT_FIELD_MOUSE_CLICK_BACKGROUND_COLOR); setBorder(VCISwingUtil.JTEXT_FIELD_BORDER_MOUSE_CLICKED); } public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } public void mouseEntered(MouseEvent e) { if(!canResponse()) return; setBorder(VCISwingUtil.JTEXT_FIELD_BORDER_MOUSE_ENTERED); } @Override public void processFocusEvent(FocusEvent event){ super.processFocusEvent(event); if(!canResponse()) return; if(hasFocus) { hasFocus = false; setBorder(VCISwingUtil.JTEXT_FIELD_BORDER_MOUSE_EXITED); setBackground(VCISwingUtil.JTEXT_FIELD_MOUSE_EXITED_BACKGROUND_COLOR); } } public void mouseExited(MouseEvent e) { if(!canResponse()) return; if(hasFocus){ setBorder(VCISwingUtil.JTEXT_FIELD_BORDER_MOUSE_ENTERED); }else{ setBorder(VCISwingUtil.JTEXT_FIELD_BORDER_MOUSE_EXITED); } } @Override public void paint(Graphics g){ super.paint(g); if(isRequired()) { drawRequiredFlag(g); } } private void drawRequiredFlag(Graphics g){ int x = getWidth() - 9; int y = 1; g.setColor(Color.RED); g.fillArc(x, y, 7, 7, 0, 360); // int x = getWidth() - 10; // int y = 10; // g.setColor(Color.RED); // g.drawString("*", x, y); } private boolean canResponse(){ return (isEditable() && isEnabled() && isVisible()); } private boolean required = false; public boolean isRequired() { return required; } public void setRequired(boolean required) { this.required = required; } private boolean hasFocus = false; private Object obj = null; public Object getObj() { return obj; } public void setObj(Object obj) { this.obj = obj; } public boolean isSupportRightClick() { return isSupportRightClick; } public void setSupportRightClick(boolean isSupportRightClick) { this.isSupportRightClick = isSupportRightClick; } }