1 26 27 package swingwtx.custom.validation; 28 29 import swingwtx.swing.*; 30 import swingwtx.swing.event.*; 31 import swingwt.awt.*; 32 import swingwt.awt.event.*; 33 34 import java.util.*; 35 36 44 public abstract class ValidatableComponent extends JPanel { 45 46 47 protected JComponent comp = null; 48 49 protected JLabel errorOutput = new JLabel(); 50 51 protected ValidationGroup validationGroup = null; 52 53 54 protected boolean isValid = true; 55 protected String errorMessage = ""; 56 57 58 protected Vector validationListeners = new Vector(); 59 60 public void dispose() { 61 comp.dispose(); 62 errorOutput.dispose(); 63 super.dispose(); 64 } 65 66 public JComponent getComponent() { return comp; } 67 68 public void addValidationListener(ValidationListener l) { 69 validationListeners.add(l); 70 } 71 72 public void removeValidationListener(ValidationListener l) { 73 validationListeners.remove(l); 74 } 75 76 77 public void setupComponent() { 78 79 setLayout(new BorderLayout()); 80 add(comp, BorderLayout.CENTER); 81 add(errorOutput, BorderLayout.EAST); 82 83 errorOutput.setIcon(new ImageIcon(getClass().getResource("/swingwtx/custom/validation/blankicon.gif"))); 85 86 comp.addFocusListener(new FocusAdapter() { 89 public void focusLost(FocusEvent e) { 90 fireValidation(false); 91 } 92 }); 93 94 } 95 96 public void setIsValid(boolean b) { isValid = b; } 97 public boolean isValid() { return isValid; } 98 public void setErrorMessage(String s) { errorMessage = s; } 99 public String getErrorMessage() { return errorMessage; } 100 101 109 protected void fireValidation(boolean forcePass) { 110 for (int i = 0; i < validationListeners.size(); i++) { 111 ValidationEvent e = new ValidationEvent(this); 112 if (!forcePass) { 113 ((ValidationListener) validationListeners.get(i)).validating(e); 114 isValid = e.isValid(); 115 errorMessage = e.getErrorMessage(); 116 } 117 else 118 isValid = true; 119 if (isValid) { 120 errorOutput.setIcon(new ImageIcon(getClass().getResource("/swingwtx/custom/validation/blankicon.gif"))); 121 errorOutput.setToolTipText(""); 122 } 123 else { 124 errorOutput.setIcon(validationGroup.getIcon()); 125 errorOutput.setToolTipText(errorMessage); 126 } 127 invalidate(); 129 } 130 } 131 132 public void setVisible(final boolean b) { comp.setVisible(b); } 133 public boolean isVisible() { return comp.isVisible(); } 134 public void setEnabled(final boolean b) { comp.setEnabled(b); } 135 public boolean isEnabled() { return comp.isEnabled(); } 136 public void requestFocus() { comp.requestFocus(); } 137 public void grabFocus() { comp.grabFocus(); } 138 public swingwt.awt.Color getBackground() { return comp.getBackground(); } 139 public void setBackground(swingwt.awt.Color c) { comp.setBackground(c); } 140 public swingwt.awt.Color getForeground() { return comp.getForeground(); } 141 public void setForeground(swingwt.awt.Color c) { comp.setForeground(c); } 142 public swingwt.awt.Font getFont() { return comp.getFont(); } 143 public void setFont(swingwt.awt.Font f) { comp.setFont(f); } 144 public String getToolTipText() { return comp.getToolTipText(); } 145 public void setToolTipText(final String text) { comp.setToolTipText(text); } 146 public void addActionListener(ActionListener l) { comp.addActionListener(l); } 147 public void removeActionListener(ActionListener l) { comp.removeActionListener(l); } 148 public void addMouseListener(MouseListener l) { comp.addMouseListener(l); } 149 public void removeMouseListener(MouseListener l) { comp.removeMouseListener(l); } 150 public void addKeyListener(KeyListener l) { comp.addKeyListener(l); } 151 public void removeKeyListener(KeyListener l) { comp.removeKeyListener(l); } 152 public void addFocusListener(FocusListener l) { comp.addFocusListener(l); } 153 public void removeFocusListener(FocusListener l) { comp.removeFocusListener(l); } 154 155 159 public swingwtx.custom.validation.ValidationGroup getValidationGroup() { 160 return validationGroup; 161 } 162 163 167 public void setValidationGroup(swingwtx.custom.validation.ValidationGroup validationGroup) { 168 this.validationGroup = validationGroup; 169 } 170 171 } 172 | Popular Tags |