1 14 package org.compiere.grid.ed; 15 16 import java.awt.*; 17 import java.awt.event.*; 18 import javax.swing.*; 19 import javax.swing.table.*; 20 import javax.swing.event.*; 21 import javax.swing.border.*; 22 import java.util.*; 23 import java.beans.*; 24 25 import org.compiere.util.*; 26 import org.compiere.apps.*; 27 import org.compiere.plaf.*; 28 import org.compiere.swing.*; 29 30 36 public class VText extends CText 37 implements VEditor, KeyListener, ActionListener 38 { 39 42 public VText() 43 { 44 this("", false, false, true, 60, 2000); 45 } 47 56 public VText (String columnName, boolean mandatory, boolean isReadOnly, boolean isUpdateable, 57 int displayLength, int fieldLength) 58 { 59 super (fieldLength < 300 ? 2 : 3, 50); 60 super.setName(columnName); 61 LookAndFeel.installBorder(this, "TextField.border"); 62 63 setColumns(displayLength>VString.MAXDISPLAY_LENGTH ? VString.MAXDISPLAY_LENGTH : displayLength); setForeground(CompierePLAF.getTextColor_Normal()); 66 setBackground(CompierePLAF.getFieldBackground_Normal()); 67 68 setLineWrap(true); 69 setWrapStyleWord(true); 70 setMandatory(mandatory); 71 m_columnName = columnName; 72 73 if (isReadOnly || !isUpdateable) 74 setReadWrite(false); 75 addKeyListener(this); 76 77 addMouseListener(new VText_mouseAdapter(this)); 79 if (columnName.equals("Script")) 80 menuEditor = new JMenuItem(Msg.getMsg(Env.getCtx(), "Script"), Env.getImageIcon("Script16.gif")); 81 else 82 menuEditor = new JMenuItem(Msg.getMsg(Env.getCtx(), "Editor"), Env.getImageIcon("Editor16.gif")); 83 menuEditor.addActionListener(this); 84 popupMenu.add(menuEditor); 85 } 87 90 public void dispose() 91 { 92 } 94 JPopupMenu popupMenu = new JPopupMenu(); 95 private JMenuItem menuEditor; 96 97 private String m_columnName; 98 private String m_oldText; 99 private String m_initialText; 100 private volatile boolean m_setting = false; 101 102 106 public void setValue(Object value) 107 { 108 if (value == null) 109 m_oldText = ""; 110 else 111 m_oldText = value.toString(); 112 if (m_setting) 113 return; 114 super.setValue(m_oldText); 115 m_initialText = m_oldText; 116 } 118 122 public void propertyChange (PropertyChangeEvent evt) 123 { 124 if (evt.getPropertyName().equals(org.compiere.model.MField.PROPERTY)) 125 setValue(evt.getNewValue()); 126 } 128 132 public void actionPerformed(ActionEvent e) 133 { 134 if (e.getSource() == menuEditor) 135 { 136 menuEditor.setEnabled(false); 137 String s = null; 138 if (m_columnName.equals("Script")) 139 s = ScriptEditor.start (Msg.translate(Env.getCtx(), m_columnName), getText(), isEditable(), 0); 140 else 141 s = Editor.startEditor (this, Msg.translate(Env.getCtx(), m_columnName), getText(), isEditable()); 142 menuEditor.setEnabled(true); 143 setValue(s); 144 } 145 try 147 { 148 fireVetoableChange(m_columnName, m_oldText, getText()); 149 } 150 catch (PropertyVetoException pve) {} 151 } 153 157 public void addActionListener(ActionListener listener) 158 { 159 } 161 165 public void keyTyped(KeyEvent e) {} 166 public void keyPressed(KeyEvent e) {} 167 168 173 public void keyReleased(KeyEvent e) 174 { 175 if (e.getKeyCode() == KeyEvent.VK_ESCAPE) 177 setText(m_initialText); 178 m_setting = true; 179 try 180 { 181 fireVetoableChange(m_columnName, m_oldText, getText()); 182 } 183 catch (PropertyVetoException pve) {} 184 m_setting = false; 185 } 187 191 public void setField (org.compiere.model.MField mField) 192 { 193 } 195 } 197 198 199 202 final class VText_mouseAdapter extends MouseAdapter 203 { 204 208 VText_mouseAdapter(VText adaptee) 209 { 210 this.adaptee = adaptee; 211 } 213 private VText adaptee; 214 215 219 public void mouseClicked(MouseEvent e) 220 { 221 if (SwingUtilities.isRightMouseButton(e)) 223 adaptee.popupMenu.show((Component)e.getSource(), e.getX(), e.getY()); 224 } 226 } | Popular Tags |