Document filter for names git-svn-id: https://taverna.googlecode.com/svn/taverna/utils/net.sf.taverna.t2.lang/branches/maintenance@16489 bf327186-88b3-11dd-a302-d386e5130c1c
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/commit/e388ce29 Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/tree/e388ce29 Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/diff/e388ce29 Branch: refs/heads/master Commit: e388ce29bae532569d5c7aca1316421cba02c9ea Parents: ddfae3f Author: [email protected] <[email protected]@bf327186-88b3-11dd-a302-d386e5130c1c> Authored: Tue Jan 7 16:53:54 2014 +0000 Committer: [email protected] <[email protected]@bf327186-88b3-11dd-a302-d386e5130c1c> Committed: Tue Jan 7 16:53:54 2014 +0000 ---------------------------------------------------------------------- .../t2/lang/ui/SanitisingDocumentFilter.java | 43 ++++++++++++++++++++ 1 file changed, 43 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/e388ce29/ui/src/main/java/net/sf/taverna/t2/lang/ui/SanitisingDocumentFilter.java ---------------------------------------------------------------------- diff --git a/ui/src/main/java/net/sf/taverna/t2/lang/ui/SanitisingDocumentFilter.java b/ui/src/main/java/net/sf/taverna/t2/lang/ui/SanitisingDocumentFilter.java new file mode 100644 index 0000000..04341d4 --- /dev/null +++ b/ui/src/main/java/net/sf/taverna/t2/lang/ui/SanitisingDocumentFilter.java @@ -0,0 +1,43 @@ +/** + * + */ +package net.sf.taverna.t2.lang.ui; + +import java.util.regex.Pattern; + +import javax.swing.text.AttributeSet; +import javax.swing.text.BadLocationException; +import javax.swing.text.DocumentFilter; + +/** + * @author alanrw + * + */ +public class SanitisingDocumentFilter extends DocumentFilter { + public void insertString(DocumentFilter.FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException { + + fb.insertString(offset, sanitiseString(string), attr); + } + + public void replace(DocumentFilter.FilterBypass fb, int offset, int length, + String text, javax.swing.text.AttributeSet attr) + + throws BadLocationException { + fb.insertString(offset, sanitiseString(text), attr); + } + + private static String sanitiseString(String text) { + String result = text; + if (Pattern.matches("\\w++", text) == false) { + result = ""; + for (char c : text.toCharArray()) { + if (Character.isLetterOrDigit(c) || c == '_') { + result += c; + } else { + result += "_"; + } + } + } + return result; + } +}
