Código Fuente
|
Mascara para Text (SWT) |
Adaptación de un código anterior para utilizarlo con widgets de SWT.
Versión 0.2.
Este código sirve para establecer una máscara que podrá utilizarse después en cualquier Text.
Versión 0.2.
Este código sirve para establecer una máscara que podrá utilizarse después en cualquier Text.
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Text;
public class Mascara
{
String mascara = "";
public String texto = "";
int posMascara = 0;
static char caracterEspacio = '_';
public Mascara()
{
}
public Mascara (String mascara)
{
setMascara (mascara);
}
public void setMascara (String mascara)
{
this.mascara = mascara;
}
public void setPosMascara (int posicion)
{
if (posicion < mascara.length())
posMascara = posicion;
}
public int textoAPosMascara (int posMascara)
{
byte[] m = mascara.getBytes();
for (int i = 0, k = 0; i < posMascara &&
i < m.length; i++) {
while (m[k] != '#' && k < m.length)
k++;
if (k < m.length)
k++;
}
return 0;
}
public int getPosTexto ()
{
int posTexto = 0;
byte[] m = mascara.getBytes();
for (int i = 0, k = 0; i < posMascara &&
i < m.length; i++) {
if (m[i] == '#')
posTexto++;
}
return posTexto;
}
public int getPosMascara ()
{
return posMascara;
}
public String limpiar (int pos, int lon)
{
byte[] m = mascara.getBytes();
byte[] t = texto.getBytes();
for (int i = 0, k = 0; i < m.length; i++)
{
if (m[i] == '#' && i >= pos && i <(pos + lon))
t[i] = (byte)(' ');
}
texto = new String(t);
return texto;
}
public boolean mascaraAplicada ()
{
byte[] m = mascara.getBytes();
String textoLocal = texto + " ";
for (int i = 0; i < m.length; i++)
{
if (m[i] != '#')
{
if (textoLocal.charAt(i) != (char)m[i])
return false;
}
else
{
if (textoLocal.charAt(i) != ' ')
if (!Character.isDigit(textoLocal.charAt(i)))
return false;
}
}
return true;
}
public String aplicarMascara ()
{
byte[] m = mascara.getBytes();
for (int i = 0, k = 0; i < m.length && k < texto.length(); i++)
{
System.err.println(" m[" + i + "] = " + m[i]);
System.err.println("text charAt(" + k + ") = " + texto.charAt(k));
if (m[i] == '#')
{
if (Character.isDigit(texto.charAt(k)))
m[i] = (byte)((k < texto.length())? texto.charAt(k++):' ');
else
return mascara.replaceAll("#", " ");
}
else if (m[i] == texto.charAt(k))
k++;
}
return new String(m).replaceAll("#", " ");
}
public String deapplyMask()
{
StringBuffer s1 = new StringBuffer("");
byte[] m = mascara.getBytes();
for (int i = 0; i < m.length && i < texto.length(); i++)
{
if (m[i] == '#') {
s1.append(texto.charAt(i));
}
}
return s1.toString();
}
public static void textoMascaraGenerico(Event e, Mascara mascaraA)
{
Text t = (Text) e.widget;
t.setEditable(false);
String mascara = mascaraA.mascara;
String s = t.getText();
mascaraA.texto = s;
int pos = t.getCaretPosition();
int range = t.getSelectionCount();
mascaraA.setPosMascara (pos);
if (e.character != SWT.BS
&& ((Character.getNumericValue(e.character) == -1)
|| (e.keyCode == 0)))
return;
boolean moveBack =
(e.character == SWT.BS || e.keyCode == SWT.ARROW_LEFT);
if (range != 0)
s = mascaraA.limpiar (pos, range);
range = 0;
if ((mascara.length() <= pos && !moveBack) || range != 0) {
t.setText(s);
t.setSelection(pos);
return;
}
if (!mascaraA.mascaraAplicada())
{
//System.err.println("Mask NOT APPLIED");
mascaraA.texto = s;
s = mascaraA.aplicarMascara();
}
byte[] b = s.getBytes();
char replace = e.character;
if (Character.isDigit(e.character))
{
pos++;
/* not over read-only character */
if (mascara.charAt(pos - 1) != '#')
pos = mascara.indexOf('#', pos) + 1;
if (pos - 1 <= mascara.length())
{
b[pos - 1] = (byte) replace;
if (pos < mascara.length() && mascara.charAt(pos) != '#')
pos = mascara.indexOf('#', pos);
}
}
else
{
if (moveBack)
{
pos--;
if (pos < 0)
pos = 0;
if (mascara.charAt(pos) != '#') {
pos = mascara.lastIndexOf('#', pos);
if (pos < 0)
pos = mascara.indexOf('#');
}
if (e.character == SWT.BS)
b[pos] = (byte) ' ';
}
else
{
if (pos < mascara.length() && mascara.charAt(pos) != '#')
pos = mascara.indexOf('#', pos);
}
}
String out = new String(b);
t.setText(out);
t.setSelection(pos);
}
}
![]() |
Escrito por: Ivan Pablo Pedrazs Arce |
|
|
Comentarios
Anónimo dice:
Otra prueba para los comentarios en códigos
06/04/2010, a las 15:40:06
Anónimo dice:
Buen ejemplo. Justo lo que estaba buscando. Espero que me sirva de ejemplo para mi proyecto. Un Saludo
31/03/2010, a las 17:59:24
Oscar Taborga dice:
Buen ejemplo. Justo lo que estaba buscando. Espero que me sirva de ejemplo para mi proyecto. Un Saludo
31/03/2010, a las 17:57:01
Anónimo dice:
necesito que oren por un proyecto que esta por realizarse
24/04/2007, a las 08:39:39
Anónimo dice:
Podrias poner un pequeño ejemplo de la utilizacion de la Masca, desde ya muchas gracias.
15/09/2005, a las 16:46:17
Anónimo dice:
Tan solo debes llamar al método textoMascaraGenerico desde el evento de pulsación de tecla del campo de texto que quieras utilizar pasandole el objeto que genera el mismo evento y la máscara a utilizar.
31/03/2005, a las 09:52:33
Anónimo dice:
Como se debe usar
24/03/2005, a las 20:22:37
Últimas noticias
· factura
Últimos artículos














































