промежуточный. частичный рефакторинг с прицелом на библиотечную часть

This commit is contained in:
2024-10-07 00:58:29 +03:00
parent c211ffb82b
commit 6b1576461d
798 changed files with 3007 additions and 2344 deletions

View File

@@ -0,0 +1,45 @@
package Common_old.UI.Themes;
import org.fife.ui.rsyntaxtextarea.AbstractTokenMaker;
import org.fife.ui.rsyntaxtextarea.Token;
import org.fife.ui.rsyntaxtextarea.TokenMap;
import javax.swing.text.Segment;
//объект создается 1 раз, при установке стиля редактора.
//НИ В КОЕМ СЛУЧАЕ НЕЛЬЗЯ ПЕРЕДАВАТЬ ПО ССЫЛКЕ методам ради рефакторинга
//все переменные должны быть сугубо локальными
//иначе возможны непредсказуемые последствия.
//Метод вызывается асинхронно, причем несколькими событиями)
public abstract class ProvidedTokenMaker extends AbstractTokenMaker {
public static void fillTokenMap(TokenMap map, int type, String... words) {
for (String word : words)
map.put(word, type);
}
//сохранить не забирая текущий символ.
public void SaveCurrent(TokenProvider provider) {
addToken(provider.text, provider.currentTokenStart,
provider.i - 1, provider.currentTokenType,
provider.newStartOffset + provider.currentTokenStart);
}
//сохранить забирая текущий символ
public void SaveCurrent_(TokenProvider provider) {
addToken(provider.text, provider.currentTokenStart,
provider.i, provider.currentTokenType,
provider.newStartOffset + provider.currentTokenStart);
}
public abstract void Body(TokenProvider provider);
public abstract void performFinish(TokenProvider provider);
public Token getTokenList(Segment text, int startTokenType, int startOffset) {
resetTokenList();
//структура для хранения индексов смещений, текущего состояния и т д.
TokenProvider provider = new TokenProvider(text, startTokenType, startOffset);
// provider.checkFortranWrap();
while (provider.canRead()) {
provider.readNext();
Body(provider);
provider.gotoNext();
}
performFinish(provider);
// Return the first token in our linked list.
return firstToken;
}
}