mirror of
https://github.com/mitb-archive/filebot
synced 2024-11-04 08:25:03 -05:00
* forgot to add some files
This commit is contained in:
parent
0a80002230
commit
07ff02c0a5
BIN
source/net/sourceforge/filebot/resources/action.properties.png
Normal file
BIN
source/net/sourceforge/filebot/resources/action.properties.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 561 B |
@ -0,0 +1,95 @@
|
||||
|
||||
package net.sourceforge.filebot.ui.panel.rename;
|
||||
|
||||
|
||||
import javax.swing.event.DocumentEvent;
|
||||
import javax.swing.text.AttributeSet;
|
||||
import javax.swing.text.BadLocationException;
|
||||
import javax.swing.text.Document;
|
||||
import javax.swing.text.PlainDocument;
|
||||
|
||||
|
||||
class ExpressionFormatDocument extends PlainDocument {
|
||||
|
||||
private Completion lastCompletion;
|
||||
|
||||
|
||||
@Override
|
||||
public void insertString(int offset, String text, AttributeSet attributes) throws BadLocationException {
|
||||
if (text == null || text.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// ignore user input that matches the last auto-completion
|
||||
if (lastCompletion != null && lastCompletion.didComplete(this, offset, text)) {
|
||||
lastCompletion = null;
|
||||
|
||||
// behave as if something was inserted (e.g. update caret position)
|
||||
fireInsertUpdate(new DefaultDocumentEvent(offset, text.length(), DocumentEvent.EventType.INSERT));
|
||||
return;
|
||||
}
|
||||
|
||||
// try to auto-complete input
|
||||
lastCompletion = Completion.getCompletion(this, offset, text);
|
||||
|
||||
if (lastCompletion != null) {
|
||||
text = lastCompletion.complete(this, offset, text);
|
||||
}
|
||||
|
||||
super.insertString(offset, text, attributes);
|
||||
}
|
||||
|
||||
|
||||
public Completion getLastCompletion() {
|
||||
return lastCompletion;
|
||||
}
|
||||
|
||||
|
||||
public enum Completion {
|
||||
RoundBrackets("()"),
|
||||
SquareBrackets("[]"),
|
||||
CurlyBrackets("{}"),
|
||||
RegexLiteral("//"),
|
||||
SingleQuoteStringLiteral("''"),
|
||||
DoubleQuoteStringLiteral("\"\"");
|
||||
|
||||
public final String pattern;
|
||||
|
||||
|
||||
private Completion(String pattern) {
|
||||
this.pattern = pattern;
|
||||
}
|
||||
|
||||
|
||||
public boolean canComplete(Document document, int offset, String input) {
|
||||
return pattern.startsWith(input);
|
||||
}
|
||||
|
||||
|
||||
public boolean didComplete(Document document, int offset, String input) {
|
||||
try {
|
||||
return document.getText(0, offset).concat(input).endsWith(pattern);
|
||||
} catch (BadLocationException e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public String complete(Document document, int offset, String input) {
|
||||
return pattern;
|
||||
}
|
||||
|
||||
|
||||
public static Completion getCompletion(Document document, int offset, String input) {
|
||||
for (Completion completion : values()) {
|
||||
if (completion.canComplete(document, offset, input)) {
|
||||
return completion;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user