Categorías destacadas
programacion php    
Código Fuente
9
¡votar!

 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.

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
Recomendar
a un amigo
Compartir
en redes
 
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


 
BBDD
Entornos de desarrollo
Entretenimiento
Herramientas
Internet
Lenguajes de script
Lenguajes imperativos
Lenguajes orientados a objeto
Otros lenguajes
Plataformas
Teoría
Varios
Copyright © 1998-2011 Programación en Castellano. Todos los derechos reservados
Datos legales | Politica de privacidad | Contacte con nosotros | Publicidad

Diseño web y desarrollo web. Un proyecto de los hermanos Carrero.

Red internet:
Juegos gratis | Servidores dedicados
Más internet: Password | Directorio de weblogs | Favicon