- - Åñëè ÿ òîëüêî ïîìåíÿë íåêîòîðûå ôàéëû, íè÷åãî íå äîáàâëÿÿ è íå óäàëÿÿ,
- ïðîñòî ïèøó êîìàíäó svn commit.
-
- Åñëè ÿ õî÷ó äîáàâèòü êàêèå-òî ôàéëû/êàòàëîãè – ïèøó ñïåðâà . Ýòî äåéñòâèå ïðîèñõîäèò ëîêàëüíî, áåç ñâÿçè ñ ñåðâåðîì.
- Íà ñåðâåð èçìåíåíèÿ îòïðàâëÿþòñÿ òîé æå êîììàíäîé svn commit.
-
- Äëÿ óäàëåíèÿ åñòü êîìàíäà . Îíà òîæå
- ðàáîòàåò ëîêàëüíî.
-
- ×òîáû ïîñìîòðåòü, êàêèå ôàéëû ëîêàëüíî èçìåíåíû/äîáàâëåíû/ïîÿâèëèñü, íî
- åùå íå äîáàâëåíû, ñóùåñòâóåò êîìàíäà svn status.
-Êàê âçÿòü èç ðåïîçèòîðèÿ òåêóùóþ âåðñèþ êîäà.
-
- -  êàòàëîãå, ñîäåðæèìîå êîòîðîãî ÿ õî÷ó ïîëó÷èòü (îáû÷íî – â src),
- ïèøó êîìàíäó svn update.
END DOCUMENT
diff --git a/src/org/geometerplus/zlibrary/core/html/own/test/subversion.htm b/src/org/geometerplus/zlibrary/core/html/own/test/subversion.htm
deleted file mode 100644
index 4ce9b45c7..000000000
--- a/src/org/geometerplus/zlibrary/core/html/own/test/subversion.htm
+++ /dev/null
@@ -1,114 +0,0 @@
-
-
-Как иÑпользовать Subversion.
-
-
-
-Что такое Subversion.
-Subversion – ÑиÑтема ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð²ÐµÑ€Ñий файлов (в нашем Ñлучае – иÑходного
-кода). СоÑтоит из Ñервера (находÑщегоÑÑ Ð² нашей Ñитуации на Ñайте
-only.mawhrin.net) и клиентов, находÑщихÑÑ Ð½Ð° компьютерах каждого из
-пользователей.
-Ðа Ñервере хранитÑÑ Ð²ÐµÑÑŒ текущий иÑходный код и вÑÑ Ð¸ÑÑ‚Ð¾Ñ€Ð¸Ñ ÐµÐ³Ð¾ изменений. С
-Ñервера можно получить как тот набор файлов, который иÑпользуетÑÑ ÑейчаÑ, так и
-набор файлов в любой указанный момент времени. Кроме того, можно поÑмотреть,
-кто, когда и какие Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð½Ð¾Ñил, а еÑли пользователи не ленÑÑ‚ÑÑ Ð¿Ð¸Ñать
-комментарии – то и поÑÑÐ½ÐµÐ½Ð¸Ñ Ðº Ñтим изменениÑм.
-У Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð° должен быть, разумеетÑÑ, доÑтуп в Интернет.
-Пользователь может взÑть текущую (или, вообще говорÑ, любую другую) верÑию
-файлов. Пользователь может положить на Ñервер новые верÑии некоторых файлов (в
-том чиÑле, он может добавить или удалить какие-нибудь файлы и/или каталоги).
-Ðта Ñтраница Ñодержит минимум информации, наÑтоÑтельно рекомендую почитать,
-например, вот Ñту
-книжку.
-Советы по "Ñтилю иÑпользованиÑ" Subversion.
-
- - Ðе бойтеÑÑŒ выкладывать Ñвои Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² репозиторий. Их вÑегда можно
- “откатитьâ€.
-
- Ðормальный режим работы – ÑохранÑть Ñвои Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ°Ð¶Ð´Ñ‹Ð¹ раз, когда
- завершен Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ маленький куÑок кода. (Ðто означает, что типично изменениÑ
- выкладываютÑÑ Ð½Ðµ раз в день и тем более неделю, а примерно раз в чаÑ.)
-
- Ðачинайте работу Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ верÑии кода из репозиториÑ. Иначе вы
- можете потерÑть времÑ, еÑли начнете менÑть файлы, которые кто-то уже поменÑл.
- (Вам придетÑÑ Ð»Ð¸Ð±Ð¾ объединÑть изменениÑ, либо, что еще обиднее, выкидывать
- Ñвои изменениÑ, еÑли работа уже Ñделана до ваÑ.)
-
- ЕдинÑтвенное ограничение на выкладывание кода – не выкладывайте
- некомпилирующийÑÑ ÐºÐ¾Ð´, иначе вы здорово затрудните работу тем, кто Ñледует
- предыдущему Ñовету. Ðе поленитеÑÑŒ Ñкомпилировать код перед выкладыванием.
- Проверьте, что вы дейÑтвительно положили в репозиторий вÑе добавленные файлы.
- (Ðто ÑÐ°Ð¼Ð°Ñ Ð¿Ð¾Ð¿ÑƒÐ»ÑÑ€Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð°, приводÑÑ‰Ð°Ñ Ðº некомпилирующемуÑÑ ÐºÐ¾Ð´Ñƒ в
- репозитории.)
-
- Перед выкладыванием кода, возьмите текущую верÑию из репозиториÑ. Ðто
- позволит вам избежать Ñитуации, когда некомпилирующийÑÑ ÐºÐ¾Ð´ возникает из-за
- двух изменений, Ñделанных разными людьми в разных файлах. ЕÑли выÑÑнилоÑÑŒ, что
- дейÑтвительно кто-то что-то поменÑл за Ð²Ñ€ÐµÐ¼Ñ Ð²Ð°ÑˆÐµÐ¹ работы – проверьте
- компилируемоÑть еще раз.
-
- Ð’Ñегда пишите комментарий к тому, что вы выкладываете: вÑего 3 Ñлова
- “удалены неиÑпользуемые полцÑÑкономÑÑ‚ кучу времени тому, кому придетÑÑ
- понимать ваши Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ (и не в поÑледнюю очередь – автору изменений).
-
- Ðе обходитеÑÑŒ только Ñтим документом – он очень короткий и опиÑывает
- только Ñамые проÑтые Ñлучаи. Ðапример, в нем ничего не Ñказано о том, как
- объединÑть изменениÑ, Ñделанные разными людьми в одном файле.
-Как иÑпользовать Subversion из Eclipse.
-Как начать работать.
-
- - Ðужно уÑтановить plugin Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ subversion из Eclipse. Ð’ той верÑии
- Eclipse, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑƒÑтановилаÑÑŒ на моем компьютере (Ñкачана Ñ http://www.eclipse.org/, верÑÐ¸Ñ 3.2.1), по
- умолчанию такого plugin'a не было. Я уÑтановил Subclipse, на Ñайте еÑть очень близкаÑ
- к правде инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð¿Ð¾
- уÑтановке.
-
- Создание проекта.
-
- - Иду в меню: File->New->Project.... Из предложенного
- ÑпиÑка выбираю SVN->Checkout Projects from SVN. Ðажимаю на
- кнопочку Next. (Дальше про Ð½Ð°Ð¶Ð°Ñ‚Ð¸Ñ Ð½Ð° Ñту кнопку пиÑать не буду.)
-
- Выбираю Create a new repository location.
-
- ВпиÑываю URL: https://only.mawhrin.net/repos/FBReaderJ/trunk.
-
- Ввожу Ñвои Ð¸Ð¼Ñ Ð¸ пароль.
-
- Помечаю корневой каталог "to be checked out from SVN".
-
- Ð’ качеÑтве Project Name впиÑываю FBReaderJ. Теперь
- кнопка Finish.
- - Теперь Ñ Ð¼Ð¾Ð³Ñƒ открывать проект FBReaderJ (файл .project из
- ÑоответÑтвующего каталога) – и работать.
-Как положить Ñвои Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² репозиторий.
-
- - Ð’ Java Perspective вызываю контекÑтное меню Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° (или каталога),
- который Ñ Ñ…Ð¾Ñ‡Ñƒ положить в репозиторий. Выбираю пункт
- Team->Commit....
-
- ВпиÑываю комментарий, Ñтавлю галочки напротив того, что реально хочу
- закоммитить. Ðажимаю OK.
-Как взÑть из Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ñ‚ÐµÐºÑƒÑ‰ÑƒÑŽ верÑию кода.
-
- - Ð’ Java Perspective вызываю контекÑтное меню Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° (или каталога),
- который Ñ Ñ…Ð¾Ñ‡Ñƒ получить (обычно Ñто каталог src). Выбираю пункт
- Team->Synchronize with Repository.
-Как иÑпользовать Subversion из командной Ñтроки (Linux).
-Как начать работать.
-
-Как положить Ñвои Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² репозиторий.
-
- - ЕÑли Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ поменÑл некоторые файлы, ничего не добавлÑÑ Ð¸ не удалÑÑ,
- проÑто пишу команду svn commit.
-
- ЕÑли Ñ Ñ…Ð¾Ñ‡Ñƒ добавить какие-то файлы/каталоги – пишу Ñперва svn add
- <filename>. Ðто дейÑтвие проиÑходит локально, без ÑвÑзи Ñ Ñервером.
- Ðа Ñервер Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð»ÑÑŽÑ‚ÑÑ Ñ‚Ð¾Ð¹ же коммандой svn commit.
-
- Ð”Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÐµÑть команда svn remove <filename>. Она тоже
- работает локально.
-
- Чтобы поÑмотреть, какие файлы локально изменены/добавлены/поÑвилиÑÑŒ, но
- еще не добавлены, ÑущеÑтвует команда svn status.
-Как взÑть из Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ñ‚ÐµÐºÑƒÑ‰ÑƒÑŽ верÑию кода.
-
- - Ð’ каталоге, Ñодержимое которого Ñ Ñ…Ð¾Ñ‡Ñƒ получить (обычно – в src),
- пишу команду svn update.
diff --git a/src/org/geometerplus/zlibrary/core/html/own/test/test.html b/src/org/geometerplus/zlibrary/core/html/own/test/test.html
deleted file mode 100644
index d7e7448f8..000000000
--- a/src/org/geometerplus/zlibrary/core/html/own/test/test.html
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-When the world wants to talk, it speaks Unicode
-
-
-
-
-When the world wants to talk, it speaks Unicode
-ЕÑли мир хочет общатьÑÑ, он общаетÑÑ Ð½Ð° Unicode
-Cuando el mundo quiere conversar, habla Unicode
-
-
\ No newline at end of file
diff --git a/src/org/geometerplus/zlibrary/core/image/ZLImage.java b/src/org/geometerplus/zlibrary/core/image/ZLImage.java
index 0f4d01771..5fbde6cc6 100644
--- a/src/org/geometerplus/zlibrary/core/image/ZLImage.java
+++ b/src/org/geometerplus/zlibrary/core/image/ZLImage.java
@@ -17,8 +17,8 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.image;
-//TODO
-public interface ZLImage {
- byte [] byteData();
-}
+package org.geometerplus.zlibrary.core.image;
+
+public interface ZLImage {
+ byte [] byteData();
+}
diff --git a/src/org/geometerplus/zlibrary/core/language/ZLLanguageList.java b/src/org/geometerplus/zlibrary/core/language/ZLLanguageList.java
index 32c1fca78..499556dd4 100644
--- a/src/org/geometerplus/zlibrary/core/language/ZLLanguageList.java
+++ b/src/org/geometerplus/zlibrary/core/language/ZLLanguageList.java
@@ -17,54 +17,54 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.language;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.TreeSet;
-
-import org.geometerplus.zlibrary.core.filesystem.ZLDir;
-import org.geometerplus.zlibrary.core.filesystem.ZLFile;
-import org.geometerplus.zlibrary.core.library.ZLibrary;
-import org.geometerplus.zlibrary.core.resources.ZLResource;
-
-public class ZLLanguageList {
- private static ArrayList ourLanguageCodes = new ArrayList();
-
- public static ArrayList languageCodes() {
- if (ourLanguageCodes.isEmpty()) {
- TreeSet codes = new TreeSet();
- codes.add("zh");
- ZLDir dir = patternsDirectory();
- if (dir != null) {
- final ArrayList fileNames = dir.collectFiles();
- final int len = fileNames.size();
- for (int i = 0; i < len; ++i) {
- String name = (String)fileNames.get(i);
- final int index = name.indexOf("_");
- if (index != -1) {
- String str = name.substring(0, index);
- if (!codes.contains(str)) {
- codes.add(str);
- }
- }
- }
- }
-
- ourLanguageCodes.addAll(codes);
- }
-
- return ourLanguageCodes;
- }
-
- public static String languageName(String code) {
- return ZLResource.resource("language").getResource(code).getValue();
- }
-
- public static ZLDir patternsDirectory() {
- String dirName = ZLibrary.JAR_DATA_PREFIX + "data/languagePatterns.tar";
- return new ZLFile(dirName).getDirectory();
- }
-
- private ZLLanguageList() {}
-}
+package org.geometerplus.zlibrary.core.language;
+
+import java.io.File;
+import java.util.*;
+
+import org.geometerplus.zlibrary.core.filesystem.ZLDir;
+import org.geometerplus.zlibrary.core.filesystem.ZLFile;
+import org.geometerplus.zlibrary.core.library.ZLibrary;
+import org.geometerplus.zlibrary.core.resources.ZLResource;
+
+public abstract class ZLLanguageList {
+ private static ArrayList ourLanguageCodes = new ArrayList();
+
+ private ZLLanguageList() {
+ }
+
+ public static ArrayList languageCodes() {
+ if (ourLanguageCodes.isEmpty()) {
+ TreeSet codes = new TreeSet();
+ codes.add("zh");
+ ZLDir dir = patternsDirectory();
+ if (dir != null) {
+ final ArrayList fileNames = dir.collectFiles();
+ final int len = fileNames.size();
+ for (int i = 0; i < len; ++i) {
+ String name = (String)fileNames.get(i);
+ final int index = name.indexOf("_");
+ if (index != -1) {
+ String str = name.substring(0, index);
+ if (!codes.contains(str)) {
+ codes.add(str);
+ }
+ }
+ }
+ }
+
+ ourLanguageCodes.addAll(codes);
+ }
+
+ return ourLanguageCodes;
+ }
+
+ public static String languageName(String code) {
+ return ZLResource.resource("language").getResource(code).getValue();
+ }
+
+ public static ZLDir patternsDirectory() {
+ String dirName = ZLibrary.JAR_DATA_PREFIX + "data/languagePatterns.tar";
+ return new ZLFile(dirName).getDirectory();
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/optionEntries/ZLColorOptionBuilder.java b/src/org/geometerplus/zlibrary/core/optionEntries/ZLColorOptionBuilder.java
index a11562b06..c41689322 100644
--- a/src/org/geometerplus/zlibrary/core/optionEntries/ZLColorOptionBuilder.java
+++ b/src/org/geometerplus/zlibrary/core/optionEntries/ZLColorOptionBuilder.java
@@ -17,114 +17,111 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.optionEntries;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import org.geometerplus.zlibrary.core.options.ZLColorOption;
-import org.geometerplus.zlibrary.core.util.*;
-
-import org.geometerplus.zlibrary.core.dialogs.ZLColorOptionEntry;
-import org.geometerplus.zlibrary.core.dialogs.ZLComboOptionEntry;
-import org.geometerplus.zlibrary.core.dialogs.ZLOptionEntry;
-
-public class ZLColorOptionBuilder {
- private ZLColorOptionsData myData;
-
- public ZLColorOptionBuilder() {
- myData = new ZLColorOptionsData();
- myData.myComboEntry = new ZLColorComboOptionEntry(myData);
- myData.myColorEntry = new ZLMultiColorOptionEntry(myData);
- }
-
- public void addOption(final String name, ZLColorOption option) {
- myData.myOptionNames.add(name);
- myData.myCurrentColors.put(name, option.getValue());
- myData.myOptions.put(name, option);
- }
-
- public void setInitial(final String name) {
- myData.myCurrentOptionName = name;
- myData.myPreviousOptionName = name;
- }
-
- public ZLOptionEntry comboEntry() {
- return myData.myComboEntry;
- }
-
- public ZLOptionEntry colorEntry() {
- return myData.myColorEntry;
- }
-
- private static class ZLMultiColorOptionEntry extends ZLColorOptionEntry {
- private ZLColorOptionsData myData;
-
- public ZLMultiColorOptionEntry(ZLColorOptionsData data) {
- myData = data;
- }
-
- public ZLColor getColor() {
- Object color = myData.myCurrentColors.get(myData.myCurrentOptionName);
- return (color != null) ? (ZLColor)color : initialColor();
- }
-
- public ZLColor initialColor() {
- return ((ZLColorOption)myData.myOptions.get(myData.myCurrentOptionName)).getValue();
- }
-
- public void onAccept(ZLColor color) {
- onReset(color);
- final ArrayList optionNames = myData.myOptionNames;
- final HashMap options = myData.myOptions;
- final HashMap colors = myData.myCurrentColors;
- final int len = optionNames.size();
- for (int i = 0; i < len; i++) {
- Object name = optionNames.get(i);
- ((ZLColorOption)options.get(name)).setValue((ZLColor)colors.get(name));
- }
- }
-
- public void onReset(ZLColor color) {
- myData.myCurrentColors.put(myData.myPreviousOptionName, color);
- }
- }
-
- private static class ZLColorComboOptionEntry extends ZLComboOptionEntry {
- private ZLColorOptionsData myData;
-
- public ZLColorComboOptionEntry(ZLColorOptionsData data) {
- myData = data;
- }
-
- public ArrayList getValues() {
- return myData.myOptionNames;
- }
-
- public String initialValue() {
- return myData.myCurrentOptionName;
- }
-
- public void onAccept(String value) {}
-
- public void onReset() {
- myData.myCurrentColors.clear();
- }
-
- public void onValueSelected(int index) {
- myData.myCurrentOptionName = (String)getValues().get(index);
- myData.myColorEntry.resetView();
- myData.myPreviousOptionName = myData.myCurrentOptionName;
- }
- }
-
- private static class ZLColorOptionsData {
- private ZLComboOptionEntry myComboEntry;
- private ZLColorOptionEntry myColorEntry;
- private String myCurrentOptionName;
- private String myPreviousOptionName;
- private final ArrayList/**/ myOptionNames = new ArrayList();
- private final HashMap/**/ myCurrentColors = new HashMap();
- private final HashMap/**/ myOptions = new HashMap();
- }
-}
+package org.geometerplus.zlibrary.core.optionEntries;
+
+import java.util.*;
+
+import org.geometerplus.zlibrary.core.options.ZLColorOption;
+import org.geometerplus.zlibrary.core.util.*;
+
+import org.geometerplus.zlibrary.core.dialogs.*;
+
+public class ZLColorOptionBuilder {
+ private ZLColorOptionsData myData;
+
+ public ZLColorOptionBuilder() {
+ myData = new ZLColorOptionsData();
+ myData.myComboEntry = new ZLColorComboOptionEntry(myData);
+ myData.myColorEntry = new ZLMultiColorOptionEntry(myData);
+ }
+
+ public void addOption(final String name, ZLColorOption option) {
+ myData.myOptionNames.add(name);
+ myData.myCurrentColors.put(name, option.getValue());
+ myData.myOptions.put(name, option);
+ }
+
+ public void setInitial(final String name) {
+ myData.myCurrentOptionName = name;
+ myData.myPreviousOptionName = name;
+ }
+
+ public ZLOptionEntry comboEntry() {
+ return myData.myComboEntry;
+ }
+
+ public ZLOptionEntry colorEntry() {
+ return myData.myColorEntry;
+ }
+
+ private static class ZLMultiColorOptionEntry extends ZLColorOptionEntry {
+ private ZLColorOptionsData myData;
+
+ public ZLMultiColorOptionEntry(ZLColorOptionsData data) {
+ myData = data;
+ }
+
+ public ZLColor getColor() {
+ Object color = myData.myCurrentColors.get(myData.myCurrentOptionName);
+ return (color != null) ? (ZLColor)color : initialColor();
+ }
+
+ public ZLColor initialColor() {
+ return ((ZLColorOption)myData.myOptions.get(myData.myCurrentOptionName)).getValue();
+ }
+
+ public void onAccept(ZLColor color) {
+ onReset(color);
+ final ArrayList optionNames = myData.myOptionNames;
+ final HashMap options = myData.myOptions;
+ final HashMap colors = myData.myCurrentColors;
+ final int len = optionNames.size();
+ for (int i = 0; i < len; i++) {
+ Object name = optionNames.get(i);
+ ((ZLColorOption)options.get(name)).setValue((ZLColor)colors.get(name));
+ }
+ }
+
+ public void onReset(ZLColor color) {
+ myData.myCurrentColors.put(myData.myPreviousOptionName, color);
+ }
+ }
+
+ private static class ZLColorComboOptionEntry extends ZLComboOptionEntry {
+ private ZLColorOptionsData myData;
+
+ public ZLColorComboOptionEntry(ZLColorOptionsData data) {
+ myData = data;
+ }
+
+ public ArrayList getValues() {
+ return myData.myOptionNames;
+ }
+
+ public String initialValue() {
+ return myData.myCurrentOptionName;
+ }
+
+ public void onAccept(String value) {}
+
+ public void onReset() {
+ myData.myCurrentColors.clear();
+ }
+
+ public void onValueSelected(int index) {
+ myData.myCurrentOptionName = (String)getValues().get(index);
+ myData.myColorEntry.resetView();
+ myData.myPreviousOptionName = myData.myCurrentOptionName;
+ }
+ }
+
+ private static class ZLColorOptionsData {
+ private ZLComboOptionEntry myComboEntry;
+ private ZLColorOptionEntry myColorEntry;
+ private String myCurrentOptionName;
+ private String myPreviousOptionName;
+ private final ArrayList/**/ myOptionNames = new ArrayList();
+ private final HashMap/**/ myCurrentColors = new HashMap();
+ private final HashMap/**/ myOptions = new HashMap();
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/optionEntries/ZLFontFamilyOptionEntry.java b/src/org/geometerplus/zlibrary/core/optionEntries/ZLFontFamilyOptionEntry.java
index ab580a2b6..1bb915902 100644
--- a/src/org/geometerplus/zlibrary/core/optionEntries/ZLFontFamilyOptionEntry.java
+++ b/src/org/geometerplus/zlibrary/core/optionEntries/ZLFontFamilyOptionEntry.java
@@ -17,37 +17,36 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.optionEntries;
-
-import java.util.ArrayList;
-
-import org.geometerplus.zlibrary.core.dialogs.ZLComboOptionEntry;
-import org.geometerplus.zlibrary.core.options.ZLStringOption;
-import org.geometerplus.zlibrary.core.view.ZLPaintContext;
-
-public class ZLFontFamilyOptionEntry extends ZLComboOptionEntry {
- private ZLStringOption myOption;
- private final ZLPaintContext myContext;
-
- public ZLFontFamilyOptionEntry(ZLStringOption option, final ZLPaintContext context) {
- myOption = option;
- myContext = context;
- String value = option.getValue();
- if (value != null && !value.equals("")) {
- option.setValue(myContext.realFontFamilyName(value));
- }
- }
-
- public ArrayList getValues() {
- return (ArrayList) myContext.fontFamilies();
- }
-
- public String initialValue() {
- return myOption.getValue();
- }
-
- public void onAccept(String value) {
- myOption.setValue(value);
- }
-
-}
+package org.geometerplus.zlibrary.core.optionEntries;
+
+import java.util.*;
+
+import org.geometerplus.zlibrary.core.dialogs.ZLComboOptionEntry;
+import org.geometerplus.zlibrary.core.options.ZLStringOption;
+import org.geometerplus.zlibrary.core.view.ZLPaintContext;
+
+public class ZLFontFamilyOptionEntry extends ZLComboOptionEntry {
+ private final ZLStringOption myOption;
+ private final ZLPaintContext myContext;
+
+ public ZLFontFamilyOptionEntry(ZLStringOption option, ZLPaintContext context) {
+ myOption = option;
+ myContext = context;
+ String value = option.getValue();
+ if (value != null && (value.length() > 0)) {
+ option.setValue(myContext.realFontFamilyName(value));
+ }
+ }
+
+ public ArrayList getValues() {
+ return myContext.fontFamilies();
+ }
+
+ public String initialValue() {
+ return myOption.getValue();
+ }
+
+ public void onAccept(String value) {
+ myOption.setValue(value);
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/optionEntries/ZLLanguageOptionEntry.java b/src/org/geometerplus/zlibrary/core/optionEntries/ZLLanguageOptionEntry.java
index 9adcc0b91..dbea8002d 100644
--- a/src/org/geometerplus/zlibrary/core/optionEntries/ZLLanguageOptionEntry.java
+++ b/src/org/geometerplus/zlibrary/core/optionEntries/ZLLanguageOptionEntry.java
@@ -17,55 +17,53 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.optionEntries;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-
-import org.geometerplus.zlibrary.core.dialogs.ZLComboOptionEntry;
-import org.geometerplus.zlibrary.core.language.ZLLanguageList;
-import org.geometerplus.zlibrary.core.options.ZLIntegerOption;
-import org.geometerplus.zlibrary.core.options.ZLStringOption;
-
-public class ZLLanguageOptionEntry extends ZLComboOptionEntry {
- public ZLLanguageOptionEntry(ZLStringOption languageOption, ArrayList/**/ languageCodes) {
- myLanguageOption = languageOption;
- String initialCode = myLanguageOption.getValue();
- for (Iterator it = languageCodes.iterator(); it.hasNext(); ) {
- String itstr = (String)it.next();
- String name = ZLLanguageList.languageName(itstr);
- myValuesToCodes.put(name, itstr);
- if (initialCode.equals(itstr)) {
- myInitialValue = name;
- }
- }
- for (Iterator it = myValuesToCodes.keySet().iterator(); it.hasNext(); ) {
- myValues.add(it.next());
- }
- String otherCode = "other";
- String otherName = ZLLanguageList.languageName(otherCode);
- myValues.add(otherName);
- myValuesToCodes.put(otherName,otherCode);
- if ((myInitialValue == null) || (myInitialValue.length() == 0)) {
- myInitialValue = otherName;
- }
- }
-
- public String initialValue() {
- return myInitialValue;
- }
-
- public ArrayList/**/ getValues() {
- return myValues;
- }
-
- public void onAccept(String value) {
- myLanguageOption.setValue((String)myValuesToCodes.get(value));
- }
-
- private final ArrayList/**/ myValues = new ArrayList();
- private final HashMap/**/ myValuesToCodes = new HashMap();
- private String myInitialValue;
- private ZLStringOption myLanguageOption;
-}
+package org.geometerplus.zlibrary.core.optionEntries;
+
+import java.util.*;
+
+import org.geometerplus.zlibrary.core.dialogs.ZLComboOptionEntry;
+import org.geometerplus.zlibrary.core.language.ZLLanguageList;
+import org.geometerplus.zlibrary.core.options.*;
+
+public class ZLLanguageOptionEntry extends ZLComboOptionEntry {
+ private final ArrayList myValues = new ArrayList();
+ private final TreeMap myValuesToCodes = new TreeMap();
+ private String myInitialValue;
+ private ZLStringOption myLanguageOption;
+
+ public ZLLanguageOptionEntry(ZLStringOption languageOption, ArrayList languageCodes) {
+ myLanguageOption = languageOption;
+ final String initialCode = myLanguageOption.getValue();
+ final int len = languageCodes.size();
+ for (int i = 0; i < len; ++i) {
+ final String code = (String)languageCodes.get(i);
+ final String name = ZLLanguageList.languageName(code);
+ myValuesToCodes.put(name, code);
+ if (initialCode.equals(code)) {
+ myInitialValue = name;
+ }
+ }
+ for (Iterator it = myValuesToCodes.keySet().iterator(); it.hasNext(); ) {
+ myValues.add(it.next());
+ }
+ final String otherCode = "other";
+ final String otherName = ZLLanguageList.languageName(otherCode);
+ myValues.add(otherName);
+ myValuesToCodes.put(otherName,otherCode);
+ if ((myInitialValue == null) || (myInitialValue.length() == 0)) {
+ myInitialValue = otherName;
+ }
+ }
+
+ public String initialValue() {
+ return myInitialValue;
+ }
+
+ public ArrayList getValues() {
+ return myValues;
+ }
+
+ public void onAccept(String value) {
+ myLanguageOption.setValue((String)myValuesToCodes.get(value));
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/optionEntries/ZLSimpleBoolean3OptionEntry.java b/src/org/geometerplus/zlibrary/core/optionEntries/ZLSimpleBoolean3OptionEntry.java
index 0fffa1604..3eaccf89c 100644
--- a/src/org/geometerplus/zlibrary/core/optionEntries/ZLSimpleBoolean3OptionEntry.java
+++ b/src/org/geometerplus/zlibrary/core/optionEntries/ZLSimpleBoolean3OptionEntry.java
@@ -17,26 +17,23 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.optionEntries;
-
-import org.geometerplus.zlibrary.core.dialogs.ZLBoolean3OptionEntry;
-import org.geometerplus.zlibrary.core.options.ZLBoolean3Option;
-import org.geometerplus.zlibrary.core.options.ZLBooleanOption;
-import org.geometerplus.zlibrary.core.util.ZLBoolean3;
-
-public class ZLSimpleBoolean3OptionEntry extends ZLBoolean3OptionEntry {
- private ZLBoolean3Option myOption;
-
- public ZLSimpleBoolean3OptionEntry(ZLBoolean3Option option) {
- myOption = option;
- }
-
- public int initialState() {
- return myOption.getValue();
- }
-
- public void onAccept(int state) {
- myOption.setValue(state);
- }
-
-}
+package org.geometerplus.zlibrary.core.optionEntries;
+
+import org.geometerplus.zlibrary.core.dialogs.ZLBoolean3OptionEntry;
+import org.geometerplus.zlibrary.core.options.ZLBoolean3Option;
+
+public class ZLSimpleBoolean3OptionEntry extends ZLBoolean3OptionEntry {
+ private final ZLBoolean3Option myOption;
+
+ public ZLSimpleBoolean3OptionEntry(ZLBoolean3Option option) {
+ myOption = option;
+ }
+
+ public int initialState() {
+ return myOption.getValue();
+ }
+
+ public void onAccept(int state) {
+ myOption.setValue(state);
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/optionEntries/ZLSimpleBooleanOptionEntry.java b/src/org/geometerplus/zlibrary/core/optionEntries/ZLSimpleBooleanOptionEntry.java
index c390ad87d..3d8da17f7 100644
--- a/src/org/geometerplus/zlibrary/core/optionEntries/ZLSimpleBooleanOptionEntry.java
+++ b/src/org/geometerplus/zlibrary/core/optionEntries/ZLSimpleBooleanOptionEntry.java
@@ -17,23 +17,23 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.optionEntries;
-
-import org.geometerplus.zlibrary.core.dialogs.ZLBooleanOptionEntry;
-import org.geometerplus.zlibrary.core.options.ZLBooleanOption;
-
-public class ZLSimpleBooleanOptionEntry extends ZLBooleanOptionEntry {
- private ZLBooleanOption myOption;
-
- public ZLSimpleBooleanOptionEntry(ZLBooleanOption option) {
- myOption = option;
- }
-
- public boolean initialState() {
- return myOption.getValue();
- }
-
- public void onAccept(boolean state) {
- myOption.setValue(state);
- }
-}
+package org.geometerplus.zlibrary.core.optionEntries;
+
+import org.geometerplus.zlibrary.core.dialogs.ZLBooleanOptionEntry;
+import org.geometerplus.zlibrary.core.options.ZLBooleanOption;
+
+public class ZLSimpleBooleanOptionEntry extends ZLBooleanOptionEntry {
+ private final ZLBooleanOption myOption;
+
+ public ZLSimpleBooleanOptionEntry(ZLBooleanOption option) {
+ myOption = option;
+ }
+
+ public boolean initialState() {
+ return myOption.getValue();
+ }
+
+ public void onAccept(boolean state) {
+ myOption.setValue(state);
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/optionEntries/ZLSimpleSpinOptionEntry.java b/src/org/geometerplus/zlibrary/core/optionEntries/ZLSimpleSpinOptionEntry.java
index e124747b7..296a8b80d 100644
--- a/src/org/geometerplus/zlibrary/core/optionEntries/ZLSimpleSpinOptionEntry.java
+++ b/src/org/geometerplus/zlibrary/core/optionEntries/ZLSimpleSpinOptionEntry.java
@@ -17,37 +17,37 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.optionEntries;
-
-import org.geometerplus.zlibrary.core.dialogs.ZLSpinOptionEntry;
-import org.geometerplus.zlibrary.core.options.ZLIntegerRangeOption;
-
-public class ZLSimpleSpinOptionEntry extends ZLSpinOptionEntry {
- private int myStep;
- private ZLIntegerRangeOption myOption;
-
- public ZLSimpleSpinOptionEntry(ZLIntegerRangeOption option, int step) {
- myStep = step;
- myOption = option;
- }
-
- public int getStep() {
- return myStep;
- }
-
- public int initialValue() {
- return myOption.getValue();
- }
-
- public int maxValue() {
- return myOption.getMaxValue();
- }
-
- public int minValue() {
- return myOption.getMinValue();
- }
-
- public void onAccept(int value) {
- myOption.setValue(value);
- }
-}
+package org.geometerplus.zlibrary.core.optionEntries;
+
+import org.geometerplus.zlibrary.core.dialogs.ZLSpinOptionEntry;
+import org.geometerplus.zlibrary.core.options.ZLIntegerRangeOption;
+
+public class ZLSimpleSpinOptionEntry extends ZLSpinOptionEntry {
+ private final ZLIntegerRangeOption myOption;
+ private final int myStep;
+
+ public ZLSimpleSpinOptionEntry(ZLIntegerRangeOption option, int step) {
+ myOption = option;
+ myStep = step;
+ }
+
+ public int getStep() {
+ return myStep;
+ }
+
+ public int initialValue() {
+ return myOption.getValue();
+ }
+
+ public int maxValue() {
+ return myOption.MaxValue;
+ }
+
+ public int minValue() {
+ return myOption.MinValue;
+ }
+
+ public void onAccept(int value) {
+ myOption.setValue(value);
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/optionEntries/ZLSimpleStringOptionEntry.java b/src/org/geometerplus/zlibrary/core/optionEntries/ZLSimpleStringOptionEntry.java
index 536da99f0..9e9749a59 100644
--- a/src/org/geometerplus/zlibrary/core/optionEntries/ZLSimpleStringOptionEntry.java
+++ b/src/org/geometerplus/zlibrary/core/optionEntries/ZLSimpleStringOptionEntry.java
@@ -17,23 +17,23 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.optionEntries;
-
-import org.geometerplus.zlibrary.core.dialogs.ZLStringOptionEntry;
-import org.geometerplus.zlibrary.core.options.ZLStringOption;
-
-public class ZLSimpleStringOptionEntry extends ZLStringOptionEntry {
- private ZLStringOption myOption;
-
- public ZLSimpleStringOptionEntry(ZLStringOption option) {
- myOption = option;
- }
-
- public String initialValue() {
- return myOption.getValue();
- }
-
- public void onAccept(String value) {
- myOption.setValue(value);
- }
-}
+package org.geometerplus.zlibrary.core.optionEntries;
+
+import org.geometerplus.zlibrary.core.dialogs.ZLStringOptionEntry;
+import org.geometerplus.zlibrary.core.options.ZLStringOption;
+
+public class ZLSimpleStringOptionEntry extends ZLStringOptionEntry {
+ private final ZLStringOption myOption;
+
+ public ZLSimpleStringOptionEntry(ZLStringOption option) {
+ myOption = option;
+ }
+
+ public String initialValue() {
+ return myOption.getValue();
+ }
+
+ public void onAccept(String value) {
+ myOption.setValue(value);
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/optionEntries/ZLStringInfoEntry.java b/src/org/geometerplus/zlibrary/core/optionEntries/ZLStringInfoEntry.java
index 8b95af9a6..b69ef9a51 100644
--- a/src/org/geometerplus/zlibrary/core/optionEntries/ZLStringInfoEntry.java
+++ b/src/org/geometerplus/zlibrary/core/optionEntries/ZLStringInfoEntry.java
@@ -17,26 +17,26 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.optionEntries;
-
-import org.geometerplus.zlibrary.core.dialogs.ZLStringOptionEntry;
-
-public class ZLStringInfoEntry extends ZLStringOptionEntry {
- private String myValue;
-
- public ZLStringInfoEntry(String value) {
- myValue = value;
- setActive(false);
- }
-
- public ZLStringInfoEntry(int value) {
- myValue = String.valueOf(value);
- setActive(false);
- }
-
- public String initialValue() {
- return myValue;
- }
-
- public void onAccept(String value) {}
-}
+package org.geometerplus.zlibrary.core.optionEntries;
+
+import org.geometerplus.zlibrary.core.dialogs.ZLStringOptionEntry;
+
+public class ZLStringInfoEntry extends ZLStringOptionEntry {
+ private final String myValue;
+
+ public ZLStringInfoEntry(String value) {
+ myValue = value;
+ setActive(false);
+ }
+
+ public ZLStringInfoEntry(int value) {
+ this("" + value);
+ }
+
+ public String initialValue() {
+ return myValue;
+ }
+
+ public void onAccept(String value) {
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/optionEntries/ZLToggleBooleanOptionEntry.java b/src/org/geometerplus/zlibrary/core/optionEntries/ZLToggleBooleanOptionEntry.java
index 1202e7cc0..201da2b05 100644
--- a/src/org/geometerplus/zlibrary/core/optionEntries/ZLToggleBooleanOptionEntry.java
+++ b/src/org/geometerplus/zlibrary/core/optionEntries/ZLToggleBooleanOptionEntry.java
@@ -17,33 +17,33 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.optionEntries;
-
-import java.util.ArrayList;
-import org.geometerplus.zlibrary.core.util.*;
-
-import org.geometerplus.zlibrary.core.dialogs.ZLOptionEntry;
-import org.geometerplus.zlibrary.core.options.ZLBooleanOption;
-
-public class ZLToggleBooleanOptionEntry extends ZLSimpleBooleanOptionEntry {
- private final ArrayList/**/ myDependentEntries = new ArrayList();
-
- public ZLToggleBooleanOptionEntry(ZLBooleanOption option) {
- super(option);
- }
-
- public void addDependentEntry(ZLOptionEntry dependent) {
- myDependentEntries.add(dependent);
- }
-
- public void onStateChanged(boolean state) {
- final int size = myDependentEntries.size();
- for (int i = 0; i < size; i++) {
- ((ZLOptionEntry)myDependentEntries.get(i)).setVisible(state);
- }
- }
-
- public void onReset() {
- onStateChanged(initialState());
- }
-}
+package org.geometerplus.zlibrary.core.optionEntries;
+
+import java.util.*;
+
+import org.geometerplus.zlibrary.core.util.*;
+import org.geometerplus.zlibrary.core.dialogs.ZLOptionEntry;
+import org.geometerplus.zlibrary.core.options.ZLBooleanOption;
+
+public class ZLToggleBooleanOptionEntry extends ZLSimpleBooleanOptionEntry {
+ private final ArrayList myDependentEntries = new ArrayList();
+
+ public ZLToggleBooleanOptionEntry(ZLBooleanOption option) {
+ super(option);
+ }
+
+ public void addDependentEntry(ZLOptionEntry dependent) {
+ myDependentEntries.add(dependent);
+ }
+
+ public void onStateChanged(boolean state) {
+ final int size = myDependentEntries.size();
+ for (int i = 0; i < size; i++) {
+ ((ZLOptionEntry)myDependentEntries.get(i)).setVisible(state);
+ }
+ }
+
+ public void onReset() {
+ onStateChanged(initialState());
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/options/ZLBoolean3Option.java b/src/org/geometerplus/zlibrary/core/options/ZLBoolean3Option.java
index 146b66faa..29af703ab 100644
--- a/src/org/geometerplus/zlibrary/core/options/ZLBoolean3Option.java
+++ b/src/org/geometerplus/zlibrary/core/options/ZLBoolean3Option.java
@@ -17,46 +17,46 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.options;
-
-import org.geometerplus.zlibrary.core.util.ZLBoolean3;
-
-public final class ZLBoolean3Option extends ZLOption implements ZLSimpleOption {
- private int myValue;
- private final int myDefaultValue;
-
- public ZLBoolean3Option(String category, String group, String optionName, int defaultValue) {
- super(category, group, optionName);
- myDefaultValue = defaultValue;
- myValue = myDefaultValue;
- }
-
- public int getType() {
- return Type.BOOLEAN3;
- }
-
- public int getValue() {
- if (!myIsSynchronized) {
- String value = getConfigValue(null);
- if (value != null) {
- myValue = ZLBoolean3.getByString(value);
- }
- myIsSynchronized = true;
- }
- return myValue;
- }
-
- public void setValue(int value) {
- if (myIsSynchronized && (myValue == value)) {
- return;
- }
- myValue = value;
- myIsSynchronized = true;
-
- if (myValue == myDefaultValue) {
- unsetConfigValue();
- } else {
- setConfigValue(ZLBoolean3.getName(myValue));
- }
- }
-}
+package org.geometerplus.zlibrary.core.options;
+
+import org.geometerplus.zlibrary.core.util.ZLBoolean3;
+
+public final class ZLBoolean3Option extends ZLOption implements ZLSimpleOption {
+ private int myValue;
+ private final int myDefaultValue;
+
+ public ZLBoolean3Option(String category, String group, String optionName, int defaultValue) {
+ super(category, group, optionName);
+ myDefaultValue = defaultValue;
+ myValue = myDefaultValue;
+ }
+
+ public int getType() {
+ return Type.BOOLEAN3;
+ }
+
+ public int getValue() {
+ if (!myIsSynchronized) {
+ String value = getConfigValue(null);
+ if (value != null) {
+ myValue = ZLBoolean3.getByString(value);
+ }
+ myIsSynchronized = true;
+ }
+ return myValue;
+ }
+
+ public void setValue(int value) {
+ if (myIsSynchronized && (myValue == value)) {
+ return;
+ }
+ myValue = value;
+ myIsSynchronized = true;
+
+ if (myValue == myDefaultValue) {
+ unsetConfigValue();
+ } else {
+ setConfigValue(ZLBoolean3.getName(myValue));
+ }
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/options/ZLBooleanOption.java b/src/org/geometerplus/zlibrary/core/options/ZLBooleanOption.java
index 29bc5dc1a..9e88321e0 100644
--- a/src/org/geometerplus/zlibrary/core/options/ZLBooleanOption.java
+++ b/src/org/geometerplus/zlibrary/core/options/ZLBooleanOption.java
@@ -17,48 +17,47 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.options;
-
-public final class ZLBooleanOption extends ZLOption implements ZLSimpleOption {
- private final boolean myDefaultValue;
- private boolean myValue;
-
- public ZLBooleanOption(String category, String group, String optionName, boolean defaultValue) {
- super(category, group, optionName);
- myDefaultValue = defaultValue;
- myValue = myDefaultValue;
- }
-
- public int getType() {
- return Type.BOOLEAN;
- }
-
- public boolean getValue() {
- if (!myIsSynchronized) {
- String value = getConfigValue(null);
- if (value != null) {
- if ("true".equals(value)) {
- myValue = true;
- } else if ("false".equals(value)) {
- myValue = false;
- }
- }
- myIsSynchronized = true;
- }
- return myValue;
- }
-
- public void setValue(boolean value) {
- if (myIsSynchronized && (myValue == value)) {
- return;
- }
- myValue = value;
- myIsSynchronized = true;
- if (myValue == myDefaultValue) {
- unsetConfigValue();
- // System.out.println("unsett" + myValue);
- } else {
- setConfigValue(myValue ? "true" : "false");
- }
- }
-}
+package org.geometerplus.zlibrary.core.options;
+
+public final class ZLBooleanOption extends ZLOption implements ZLSimpleOption {
+ private final boolean myDefaultValue;
+ private boolean myValue;
+
+ public ZLBooleanOption(String category, String group, String optionName, boolean defaultValue) {
+ super(category, group, optionName);
+ myDefaultValue = defaultValue;
+ myValue = defaultValue;
+ }
+
+ public int getType() {
+ return Type.BOOLEAN;
+ }
+
+ public boolean getValue() {
+ if (!myIsSynchronized) {
+ String value = getConfigValue(null);
+ if (value != null) {
+ if ("true".equals(value)) {
+ myValue = true;
+ } else if ("false".equals(value)) {
+ myValue = false;
+ }
+ }
+ myIsSynchronized = true;
+ }
+ return myValue;
+ }
+
+ public void setValue(boolean value) {
+ if (myIsSynchronized && (myValue == value)) {
+ return;
+ }
+ myValue = value;
+ myIsSynchronized = true;
+ if (value == myDefaultValue) {
+ unsetConfigValue();
+ } else {
+ setConfigValue(value ? "true" : "false");
+ }
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/options/ZLColorOption.java b/src/org/geometerplus/zlibrary/core/options/ZLColorOption.java
index 6e3102699..9ec42476a 100644
--- a/src/org/geometerplus/zlibrary/core/options/ZLColorOption.java
+++ b/src/org/geometerplus/zlibrary/core/options/ZLColorOption.java
@@ -17,62 +17,62 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.options;
-
-import org.geometerplus.zlibrary.core.util.ZLColor;
-
-/**
- * êëàññ îïöèÿ öâåòà. âíóòðè îïöèè öâåò õðàíèòñÿ îäíèì ÷èñëîì, ÷òîáû óìåíüøèòü
- * çàòðàòû íà ïàìÿòü (â òðè ðàçà! =)), íî îáðàùåíèå ê ýòîé îïöèè âñå ðàâíî
- * îñóùåñòâëÿåòñÿ ñ ïîìîùüþ êëàññà ZLColor, êîòîðûé ðåàëèçóåò áîëåå ïðèâû÷íîå
- * RGB ïðåäñòàâëåíèå öâåòà.
- *
- * @author Àäìèíèñòðàòîð
- *
- */
-public final class ZLColorOption extends ZLOption {
- private final ZLColor myDefaultValue;
- private ZLColor myValue;
-
- public ZLColorOption(String category, String group, String optionName, ZLColor defaultValue) {
- super(category, group, optionName);
- myDefaultValue = (defaultValue != null) ? defaultValue : new ZLColor(0);
- myValue = myDefaultValue;
- }
-
- public ZLColor getValue() {
- if (!myIsSynchronized) {
- String value = getConfigValue(null);
- if (value != null) {
- try {
- int intValue = Integer.parseInt(value);
- if (myValue.getIntValue() != intValue) {
- myValue = new ZLColor(intValue);
- }
- } catch (NumberFormatException e) {
- // System.err.println(e);
- }
- }
- myIsSynchronized = true;
- }
- return myValue;
- }
-
- public void setValue(ZLColor colorValue) {
- if (colorValue != null) {
- final boolean sameValue = myValue.equals(colorValue);
- if (myIsSynchronized && sameValue) {
- return;
- }
- if (!sameValue) {
- myValue = colorValue;
- }
- myIsSynchronized = true;
- if (myValue.equals(myDefaultValue)) {
- unsetConfigValue();
- } else {
- setConfigValue("" + myValue.getIntValue());
- }
- }
- }
-}
+package org.geometerplus.zlibrary.core.options;
+
+import org.geometerplus.zlibrary.core.util.ZLColor;
+
+/**
+ * êëàññ îïöèÿ öâåòà. âíóòðè îïöèè öâåò õðàíèòñÿ îäíèì ÷èñëîì, ÷òîáû óìåíüøèòü
+ * çàòðàòû íà ïàìÿòü (â òðè ðàçà! =)), íî îáðàùåíèå ê ýòîé îïöèè âñå ðàâíî
+ * îñóùåñòâëÿåòñÿ ñ ïîìîùüþ êëàññà ZLColor, êîòîðûé ðåàëèçóåò áîëåå ïðèâû÷íîå
+ * RGB ïðåäñòàâëåíèå öâåòà.
+ *
+ * @author Àäìèíèñòðàòîð
+ *
+ */
+public final class ZLColorOption extends ZLOption {
+ private final ZLColor myDefaultValue;
+ private ZLColor myValue;
+
+ public ZLColorOption(String category, String group, String optionName, ZLColor defaultValue) {
+ super(category, group, optionName);
+ myDefaultValue = (defaultValue != null) ? defaultValue : new ZLColor(0);
+ myValue = myDefaultValue;
+ }
+
+ public ZLColor getValue() {
+ if (!myIsSynchronized) {
+ String value = getConfigValue(null);
+ if (value != null) {
+ try {
+ int intValue = Integer.parseInt(value);
+ if (myValue.getIntValue() != intValue) {
+ myValue = new ZLColor(intValue);
+ }
+ } catch (NumberFormatException e) {
+ // System.err.println(e);
+ }
+ }
+ myIsSynchronized = true;
+ }
+ return myValue;
+ }
+
+ public void setValue(ZLColor colorValue) {
+ if (colorValue != null) {
+ final boolean sameValue = myValue.equals(colorValue);
+ if (myIsSynchronized && sameValue) {
+ return;
+ }
+ if (!sameValue) {
+ myValue = colorValue;
+ }
+ myIsSynchronized = true;
+ if (colorValue.equals(myDefaultValue)) {
+ unsetConfigValue();
+ } else {
+ setConfigValue("" + colorValue.getIntValue());
+ }
+ }
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/options/ZLIntegerOption.java b/src/org/geometerplus/zlibrary/core/options/ZLIntegerOption.java
index a4a31a833..0b3891143 100644
--- a/src/org/geometerplus/zlibrary/core/options/ZLIntegerOption.java
+++ b/src/org/geometerplus/zlibrary/core/options/ZLIntegerOption.java
@@ -17,56 +17,48 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.options;
-
-/**
- * êëàññ öåëî÷èñëåííàÿ îïöèÿ.
- *
- * @author Àäìèíèñòðàòîð
- *
- */
-public final class ZLIntegerOption extends ZLOption {
- private final int myDefaultValue;
- private int myValue;
-
- public ZLIntegerOption(String category, String group, String optionName,
- int defaultValue) {
- super(category, group, optionName);
- myDefaultValue = defaultValue;
- myValue = myDefaultValue;
- }
-
- public void changeName(String optionName) {
- super.changeName(optionName);
- myValue = myDefaultValue;
- }
-
- public int getValue() {
- if (!myIsSynchronized) {
- String value = getConfigValue(null);
- if (value != null) {
- try {
- myValue = Integer.parseInt(value);
- } catch (NumberFormatException e) {
- // System.err.println(e);
- }
- }
- myIsSynchronized = true;
- }
- return myValue;
- }
-
- public void setValue(int value) {
- if (myIsSynchronized && (myValue == value)) {
- return;
- }
- myValue = value;
- myIsSynchronized = true;
- if (myValue == myDefaultValue) {
- // System.out.println(optionName() + " is unset");
- unsetConfigValue();
- } else {
- setConfigValue("" + myValue);
- }
- }
-}
+package org.geometerplus.zlibrary.core.options;
+
+public final class ZLIntegerOption extends ZLOption {
+ private final int myDefaultValue;
+ private int myValue;
+
+ public ZLIntegerOption(String category, String group, String optionName, int defaultValue) {
+ super(category, group, optionName);
+ myDefaultValue = defaultValue;
+ myValue = defaultValue;
+ }
+
+ public void changeName(String optionName) {
+ super.changeName(optionName);
+ myValue = myDefaultValue;
+ }
+
+ public int getValue() {
+ if (!myIsSynchronized) {
+ String value = getConfigValue(null);
+ if (value != null) {
+ try {
+ myValue = Integer.parseInt(value);
+ } catch (NumberFormatException e) {
+ // System.err.println(e);
+ }
+ }
+ myIsSynchronized = true;
+ }
+ return myValue;
+ }
+
+ public void setValue(int value) {
+ if (myIsSynchronized && (myValue == value)) {
+ return;
+ }
+ myValue = value;
+ myIsSynchronized = true;
+ if (value == myDefaultValue) {
+ unsetConfigValue();
+ } else {
+ setConfigValue("" + value);
+ }
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/options/ZLIntegerRangeOption.java b/src/org/geometerplus/zlibrary/core/options/ZLIntegerRangeOption.java
index cf4a34b13..845a86753 100644
--- a/src/org/geometerplus/zlibrary/core/options/ZLIntegerRangeOption.java
+++ b/src/org/geometerplus/zlibrary/core/options/ZLIntegerRangeOption.java
@@ -17,70 +17,64 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.options;
-
-/**
- * êëàññ ðàíæèðîâàííàÿ öåëî÷èñëåííàÿ îïöèÿ. åñòü âåðõíèé è íèæíèé ïðåäåëû,
- * êîòîðûå òóò æå è óêàçûâàþòñÿ.
- *
- * @author Àäìèíèñòðàòîð
- *
- */
-public final class ZLIntegerRangeOption extends ZLOption {
- private final int myMinValue;
- private final int myMaxValue;
-
- private final int myDefaultValue;
- private int myValue;
-
- public ZLIntegerRangeOption(String category, String group, String optionName, int minValue, int maxValue, int defaultValue) {
- super(category, group, optionName);
- myMinValue = minValue;
- myMaxValue = maxValue;
- myDefaultValue = Math.max(myMinValue, Math.min(myMaxValue, defaultValue));
- myValue = myDefaultValue;
- }
-
- public int getMinValue() {
- return myMinValue;
- }
-
- public int getMaxValue() {
- return myMaxValue;
- }
-
- public int getValue() {
- if (!myIsSynchronized) {
- String value = getConfigValue(null);
- if (value != null) {
- try {
- int intValue = Integer.parseInt(value);
- if (intValue < myMinValue) {
- intValue = myMinValue;
- } else if (intValue > myMaxValue) {
- intValue = myMaxValue;
- }
- myValue = intValue;
- } catch (NumberFormatException e) {
- // System.err.println(e);
- }
- }
- myIsSynchronized = true;
- }
- return myValue;
- }
-
- public void setValue(int value) {
- value = Math.max(myMinValue, Math.min(myMaxValue, value));
- if (myIsSynchronized && (myValue == value)) {
- return;
- }
- myValue = value;
- myIsSynchronized = true;
- if (myValue == myDefaultValue) {
- unsetConfigValue();
- } else {
- setConfigValue("" + myValue);
- }
- }
-}
+package org.geometerplus.zlibrary.core.options;
+
+public final class ZLIntegerRangeOption extends ZLOption {
+ public final int MinValue;
+ public final int MaxValue;
+
+ private final int myDefaultValue;
+ private int myValue;
+
+ public ZLIntegerRangeOption(String category, String group, String optionName, int minValue, int maxValue, int defaultValue) {
+ super(category, group, optionName);
+ MinValue = minValue;
+ MaxValue = maxValue;
+ if (defaultValue < MinValue) {
+ defaultValue = MinValue;
+ } else if (defaultValue > MaxValue) {
+ defaultValue = MaxValue;
+ }
+ myDefaultValue = defaultValue;
+ myValue = defaultValue;
+ }
+
+ public int getValue() {
+ if (!myIsSynchronized) {
+ String value = getConfigValue(null);
+ if (value != null) {
+ try {
+ int intValue = Integer.parseInt(value);
+ if (intValue < MinValue) {
+ intValue = MinValue;
+ } else if (intValue > MaxValue) {
+ intValue = MaxValue;
+ }
+ myValue = intValue;
+ } catch (NumberFormatException e) {
+ // System.err.println(e);
+ }
+ }
+ myIsSynchronized = true;
+ }
+ return myValue;
+ }
+
+ public void setValue(int value) {
+ if (value < MinValue) {
+ value = MinValue;
+ } else if (value > MaxValue) {
+ value = MaxValue;
+ }
+ if (myIsSynchronized && (myValue == value)) {
+ return;
+ }
+ myValue = value;
+ myIsSynchronized = true;
+ if (value == myDefaultValue) {
+ unsetConfigValue();
+ } else {
+ setConfigValue("" + value);
+ }
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/options/ZLOption.java b/src/org/geometerplus/zlibrary/core/options/ZLOption.java
index 2dae8e79f..3e04dbdaa 100644
--- a/src/org/geometerplus/zlibrary/core/options/ZLOption.java
+++ b/src/org/geometerplus/zlibrary/core/options/ZLOption.java
@@ -17,91 +17,60 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.options;
-
-import org.geometerplus.zlibrary.core.config.ZLConfig;
-import org.geometerplus.zlibrary.core.config.ZLConfigManager;
-
-public abstract class ZLOption {
- public static final String LOOK_AND_FEEL_CATEGORY = "ui";
- public static final String CONFIG_CATEGORY = "options";
- public static final String STATE_CATEGORY = "state";
- public static final String EMPTY = "";
- public static final String PLATFORM_GROUP = "PlatformOptions";
-
- private final String myCategory;
- private final String myGroup;
- private String myOptionName;
- protected boolean myIsSynchronized;
-
- /**
- * êîíñòðóêòîð
- *
- * @param config
- * @param category
- * @param group
- * @param optionName
- */
- protected ZLOption(String category, String group, String optionName) {
- myCategory = category.intern();
- myGroup = group.intern();
- myOptionName = optionName.intern();
- myIsSynchronized = false;
-
- /*
- * String value = myConfig.getValue(group, name, null);
- *
- *
- *
- *
- * if ((value != null)) { && (ÊÀÒÅÃÎÐÈÈ ÍÅ ÐÀÂÍÛ)
- * myConfig.setValue(group, name, value, category); }
- */
- }
-
- protected void changeName(String optionName) {
- myOptionName = optionName.intern();
- myIsSynchronized = false;
- }
-
- /**
- * @return èìÿ îïöèè. âåðîÿòíî íóæíî áóäåò âî view
- */
- public String getName() {
- return myOptionName;
- }
-
- /**
- * @return "ãðóïïó" îïöèè. âåðîÿòíî íóæíî áóäåò âî view
- */
- public String getGroup() {
- return myGroup;
- }
-
- /**
- * @return "êàòåãîðèþ" îïöèè. âåðîÿòíî íóæíî áóäåò âî view
- */
- public String getCategory() {
- return myCategory;
- }
-
- protected final String getConfigValue(String defaultValue) {
- ZLConfig config = ZLConfigManager.getConfig();
- return (config != null) ?
- config.getValue(myGroup, myOptionName, defaultValue) : defaultValue;
- }
-
- protected final void setConfigValue(String value) {
- ZLConfig config = ZLConfigManager.getConfig();
- if (config != null) {
- config.setValue(myGroup, myOptionName, value, myCategory);
- }
- }
-
- protected final void unsetConfigValue() {
- ZLConfig config = ZLConfigManager.getConfig();
- if (config != null) {
- config.unsetValue(myGroup, myOptionName);
- }
- }
-}
+package org.geometerplus.zlibrary.core.options;
+
+import org.geometerplus.zlibrary.core.config.ZLConfig;
+import org.geometerplus.zlibrary.core.config.ZLConfigManager;
+
+public abstract class ZLOption {
+ public static final String LOOK_AND_FEEL_CATEGORY = "ui";
+ public static final String CONFIG_CATEGORY = "options";
+ public static final String STATE_CATEGORY = "state";
+ public static final String EMPTY = "";
+ public static final String PLATFORM_GROUP = "PlatformOptions";
+
+ private final String myCategory;
+ private final String myGroup;
+ private String myOptionName;
+ protected boolean myIsSynchronized;
+
+ /**
+ * êîíñòðóêòîð
+ *
+ * @param config
+ * @param category
+ * @param group
+ * @param optionName
+ */
+ protected ZLOption(String category, String group, String optionName) {
+ myCategory = category.intern();
+ myGroup = group.intern();
+ myOptionName = optionName.intern();
+ myIsSynchronized = false;
+ }
+
+ protected void changeName(String optionName) {
+ myOptionName = optionName.intern();
+ myIsSynchronized = false;
+ }
+
+ protected final String getConfigValue(String defaultValue) {
+ ZLConfig config = ZLConfigManager.getConfig();
+ return (config != null) ?
+ config.getValue(myGroup, myOptionName, defaultValue) : defaultValue;
+ }
+
+ protected final void setConfigValue(String value) {
+ ZLConfig config = ZLConfigManager.getConfig();
+ if (config != null) {
+ config.setValue(myGroup, myOptionName, value, myCategory);
+ }
+ }
+
+ protected final void unsetConfigValue() {
+ ZLConfig config = ZLConfigManager.getConfig();
+ if (config != null) {
+ config.unsetValue(myGroup, myOptionName);
+ }
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/options/ZLSimpleOption.java b/src/org/geometerplus/zlibrary/core/options/ZLSimpleOption.java
index 9e56ea805..07427e699 100644
--- a/src/org/geometerplus/zlibrary/core/options/ZLSimpleOption.java
+++ b/src/org/geometerplus/zlibrary/core/options/ZLSimpleOption.java
@@ -17,14 +17,14 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.options;
-
-public interface ZLSimpleOption {
- public interface Type {
- int BOOLEAN = 1;
- int BOOLEAN3 = 2;
- int STRING = 3;
- }
-
- int getType();
-}
+package org.geometerplus.zlibrary.core.options;
+
+public interface ZLSimpleOption {
+ public interface Type {
+ int BOOLEAN = 1;
+ int BOOLEAN3 = 2;
+ int STRING = 3;
+ }
+
+ int getType();
+}
diff --git a/src/org/geometerplus/zlibrary/core/options/ZLStringOption.java b/src/org/geometerplus/zlibrary/core/options/ZLStringOption.java
index be52a4261..2322ebef2 100644
--- a/src/org/geometerplus/zlibrary/core/options/ZLStringOption.java
+++ b/src/org/geometerplus/zlibrary/core/options/ZLStringOption.java
@@ -17,57 +17,52 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.options;
-
-/**
- * êëàññ ñòðîêîâàÿ îïöèÿ.
- *
- * @author Àäìèíèñòðàòîð
- */
-public final class ZLStringOption extends ZLOption implements ZLSimpleOption {
- private final String myDefaultValue;
- private String myValue;
-
- public ZLStringOption(String category, String group, String optionName, String defaultValue) {
- super(category, group, optionName);
- myDefaultValue = (defaultValue != null) ? defaultValue.intern() : "";
- myValue = myDefaultValue;
- }
-
- public void changeName(String optionName) {
- super.changeName(optionName);
- myValue = myDefaultValue;
- }
-
- public int getType() {
- return Type.STRING;
- }
-
- public String getValue() {
- if (!myIsSynchronized) {
- String value = getConfigValue(myDefaultValue);
- if (value != null) {
- myValue = value;
- }
- myIsSynchronized = true;
- }
- return myValue;
- }
-
- public void setValue(String value) {
- if (value == null) {
- return;
- }
- value = value.intern();
- if (myIsSynchronized && (myValue == value)) {
- return;
- }
- myValue = value;
- if (value == myDefaultValue) {
- unsetConfigValue();
- } else {
- setConfigValue(value);
- }
- myIsSynchronized = true;
- }
-}
+package org.geometerplus.zlibrary.core.options;
+
+public final class ZLStringOption extends ZLOption implements ZLSimpleOption {
+ private final String myDefaultValue;
+ private String myValue;
+
+ public ZLStringOption(String category, String group, String optionName, String defaultValue) {
+ super(category, group, optionName);
+ myDefaultValue = (defaultValue != null) ? defaultValue.intern() : "";
+ myValue = myDefaultValue;
+ }
+
+ public void changeName(String optionName) {
+ super.changeName(optionName);
+ myValue = myDefaultValue;
+ }
+
+ public int getType() {
+ return Type.STRING;
+ }
+
+ public String getValue() {
+ if (!myIsSynchronized) {
+ String value = getConfigValue(myDefaultValue);
+ if (value != null) {
+ myValue = value;
+ }
+ myIsSynchronized = true;
+ }
+ return myValue;
+ }
+
+ public void setValue(String value) {
+ if (value == null) {
+ return;
+ }
+ value = value.intern();
+ if (myIsSynchronized && (myValue == value)) {
+ return;
+ }
+ myValue = value;
+ if (value == myDefaultValue) {
+ unsetConfigValue();
+ } else {
+ setConfigValue(value);
+ }
+ myIsSynchronized = true;
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/resources/ZLMissingResource.java b/src/org/geometerplus/zlibrary/core/resources/ZLMissingResource.java
index 75bfea1d0..7bfe47acc 100644
--- a/src/org/geometerplus/zlibrary/core/resources/ZLMissingResource.java
+++ b/src/org/geometerplus/zlibrary/core/resources/ZLMissingResource.java
@@ -17,25 +17,25 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.resources;
-
-final class ZLMissingResource extends ZLResource {
- static final String Value = "????????";
- static final ZLMissingResource Instance = new ZLMissingResource();
-
- private ZLMissingResource() {
- super(Value);
- }
-
- public ZLResource getResource(String key) {
- return this;
- }
-
- public boolean hasValue() {
- return false;
- }
-
- public String getValue() {
- return Value;
- }
-}
+package org.geometerplus.zlibrary.core.resources;
+
+final class ZLMissingResource extends ZLResource {
+ static final String Value = "????????";
+ static final ZLMissingResource Instance = new ZLMissingResource();
+
+ private ZLMissingResource() {
+ super(Value);
+ }
+
+ public ZLResource getResource(String key) {
+ return this;
+ }
+
+ public boolean hasValue() {
+ return false;
+ }
+
+ public String getValue() {
+ return Value;
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/resources/ZLResource.java b/src/org/geometerplus/zlibrary/core/resources/ZLResource.java
index 975915708..bd291181c 100644
--- a/src/org/geometerplus/zlibrary/core/resources/ZLResource.java
+++ b/src/org/geometerplus/zlibrary/core/resources/ZLResource.java
@@ -17,38 +17,38 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.resources;
-
-import org.geometerplus.zlibrary.core.library.ZLibrary;
-
-abstract public class ZLResource {
- public final String Name;
-
- // this static fields and set-methods were created so as to run tests
- protected static String ourApplicationDirectory = ZLibrary.JAR_DATA_PREFIX + "data/resources/application/";
- protected static String ourZLibraryDirectory = ZLibrary.JAR_DATA_PREFIX + "data/resources/zlibrary/";
-
- public static void setApplicationDirectory(String dir) {
- ourApplicationDirectory = dir;
- }
-
- public static void setZLibraryDirectory(String dir) {
- ourZLibraryDirectory = dir;
- }
-
- public static ZLResource resource(String key) {
- ZLTreeResource.buildTree();
- if (ZLTreeResource.ourRoot == null) {
- return ZLMissingResource.Instance;
- }
- return ZLTreeResource.ourRoot.getResource(key);
- }
-
- protected ZLResource(String name) {
- Name = name;
- }
-
- abstract public boolean hasValue();
- abstract public String getValue();
- abstract public ZLResource getResource(String key);
-}
+package org.geometerplus.zlibrary.core.resources;
+
+import org.geometerplus.zlibrary.core.library.ZLibrary;
+
+abstract public class ZLResource {
+ public final String Name;
+
+ // this static fields and set-methods were created so as to run tests
+ protected static String ourApplicationDirectory = ZLibrary.JAR_DATA_PREFIX + "data/resources/application/";
+ protected static String ourZLibraryDirectory = ZLibrary.JAR_DATA_PREFIX + "data/resources/zlibrary/";
+
+ public static void setApplicationDirectory(String dir) {
+ ourApplicationDirectory = dir;
+ }
+
+ public static void setZLibraryDirectory(String dir) {
+ ourZLibraryDirectory = dir;
+ }
+
+ public static ZLResource resource(String key) {
+ ZLTreeResource.buildTree();
+ if (ZLTreeResource.ourRoot == null) {
+ return ZLMissingResource.Instance;
+ }
+ return ZLTreeResource.ourRoot.getResource(key);
+ }
+
+ protected ZLResource(String name) {
+ Name = name;
+ }
+
+ abstract public boolean hasValue();
+ abstract public String getValue();
+ abstract public ZLResource getResource(String key);
+}
diff --git a/src/org/geometerplus/zlibrary/core/resources/ZLTreeResource.java b/src/org/geometerplus/zlibrary/core/resources/ZLTreeResource.java
index 06c113de3..eb97a7f54 100644
--- a/src/org/geometerplus/zlibrary/core/resources/ZLTreeResource.java
+++ b/src/org/geometerplus/zlibrary/core/resources/ZLTreeResource.java
@@ -17,120 +17,120 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.resources;
-
-import java.util.*;
-import org.geometerplus.zlibrary.core.util.*;
-
-import org.geometerplus.zlibrary.core.library.ZLibrary;
-import org.geometerplus.zlibrary.core.xml.ZLStringMap;
-import org.geometerplus.zlibrary.core.xml.ZLXMLReaderAdapter;
-
-final class ZLTreeResource extends ZLResource {
- public static ZLTreeResource ourRoot;
-
- private boolean myHasValue;
- private String myValue;
- private HashMap myChildren;
-
- public static void buildTree() {
- if (ourRoot == null) {
- ourRoot = new ZLTreeResource("", null);
- loadData("en");
- Locale locale = Locale.getDefault();
- String language = locale.getLanguage();
- if (!language.equals("en")) {
- loadData(language);
- }
- }
- }
-
- public static void loadData(String language) {
- final String fileName = language + ".xml";
- ResourceTreeReader reader = new ResourceTreeReader();
- reader.readDocument(ourRoot, ourZLibraryDirectory + fileName);
- reader.readDocument(ourRoot, ourApplicationDirectory + fileName);
- }
-
- private ZLTreeResource(String name, String value) {
- super(name);
- setValue(value);
- }
-
- private void setValue(String value) {
- myHasValue = value != null;
- myValue = value;
- }
-
- public boolean hasValue() {
- return myHasValue;
- }
-
- public String getValue() {
- return myHasValue ? myValue : ZLMissingResource.Value;
- }
-
- public ZLResource getResource(String key) {
- final HashMap children = myChildren;
- if (children != null) {
- ZLResource child = (ZLResource)children.get(key);
- if (child != null) {
- return child;
- }
- }
- return ZLMissingResource.Instance;
- }
-
- private static class ResourceTreeReader extends ZLXMLReaderAdapter {
- private static final String NODE = "node";
- private final ArrayList myStack = new ArrayList();
-
- public void readDocument(ZLTreeResource root, String fileName) {
- myStack.clear();
- myStack.add(root);
- read(fileName);
- }
-
- public boolean dontCacheAttributeValues() {
- return true;
- }
-
- public boolean startElementHandler(String tag, ZLStringMap attributes) {
- final ArrayList stack = myStack;
- if (!stack.isEmpty() && (NODE.equals(tag))) {
- String name = attributes.getValue("name");
- if (name != null) {
- String value = attributes.getValue("value");
- ZLTreeResource peek = (ZLTreeResource)stack.get(stack.size() - 1);
- ZLTreeResource node;
- HashMap children = peek.myChildren;
- if (children == null) {
- node = null;
- children = new HashMap();
- peek.myChildren = children;
- } else {
- node = (ZLTreeResource)children.get(name);
- }
- if (node == null) {
- node = new ZLTreeResource(name, value);
- children.put(name, node);
- } else {
- if (value != null) {
- node.setValue(value);
- }
- }
- stack.add(node);
- }
- }
- return false;
- }
-
- public boolean endElementHandler(String tag) {
- final ArrayList stack = myStack;
- if (!stack.isEmpty() && (NODE.equals(tag))) {
- stack.remove(stack.size() - 1);
- }
- return false;
- }
- }
-}
+package org.geometerplus.zlibrary.core.resources;
+
+import java.util.*;
+import org.geometerplus.zlibrary.core.util.*;
+
+import org.geometerplus.zlibrary.core.library.ZLibrary;
+import org.geometerplus.zlibrary.core.xml.ZLStringMap;
+import org.geometerplus.zlibrary.core.xml.ZLXMLReaderAdapter;
+
+final class ZLTreeResource extends ZLResource {
+ public static ZLTreeResource ourRoot;
+
+ private boolean myHasValue;
+ private String myValue;
+ private HashMap myChildren;
+
+ public static void buildTree() {
+ if (ourRoot == null) {
+ ourRoot = new ZLTreeResource("", null);
+ loadData("en");
+ Locale locale = Locale.getDefault();
+ String language = locale.getLanguage();
+ if (!language.equals("en")) {
+ loadData(language);
+ }
+ }
+ }
+
+ public static void loadData(String language) {
+ final String fileName = language + ".xml";
+ ResourceTreeReader reader = new ResourceTreeReader();
+ reader.readDocument(ourRoot, ourZLibraryDirectory + fileName);
+ reader.readDocument(ourRoot, ourApplicationDirectory + fileName);
+ }
+
+ private ZLTreeResource(String name, String value) {
+ super(name);
+ setValue(value);
+ }
+
+ private void setValue(String value) {
+ myHasValue = value != null;
+ myValue = value;
+ }
+
+ public boolean hasValue() {
+ return myHasValue;
+ }
+
+ public String getValue() {
+ return myHasValue ? myValue : ZLMissingResource.Value;
+ }
+
+ public ZLResource getResource(String key) {
+ final HashMap children = myChildren;
+ if (children != null) {
+ ZLResource child = (ZLResource)children.get(key);
+ if (child != null) {
+ return child;
+ }
+ }
+ return ZLMissingResource.Instance;
+ }
+
+ private static class ResourceTreeReader extends ZLXMLReaderAdapter {
+ private static final String NODE = "node";
+ private final ArrayList myStack = new ArrayList();
+
+ public void readDocument(ZLTreeResource root, String fileName) {
+ myStack.clear();
+ myStack.add(root);
+ read(fileName);
+ }
+
+ public boolean dontCacheAttributeValues() {
+ return true;
+ }
+
+ public boolean startElementHandler(String tag, ZLStringMap attributes) {
+ final ArrayList stack = myStack;
+ if (!stack.isEmpty() && (NODE.equals(tag))) {
+ String name = attributes.getValue("name");
+ if (name != null) {
+ String value = attributes.getValue("value");
+ ZLTreeResource peek = (ZLTreeResource)stack.get(stack.size() - 1);
+ ZLTreeResource node;
+ HashMap children = peek.myChildren;
+ if (children == null) {
+ node = null;
+ children = new HashMap();
+ peek.myChildren = children;
+ } else {
+ node = (ZLTreeResource)children.get(name);
+ }
+ if (node == null) {
+ node = new ZLTreeResource(name, value);
+ children.put(name, node);
+ } else {
+ if (value != null) {
+ node.setValue(value);
+ }
+ }
+ stack.add(node);
+ }
+ }
+ return false;
+ }
+
+ public boolean endElementHandler(String tag) {
+ final ArrayList stack = myStack;
+ if (!stack.isEmpty() && (NODE.equals(tag))) {
+ stack.remove(stack.size() - 1);
+ }
+ return false;
+ }
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/util/ZLColor.java b/src/org/geometerplus/zlibrary/core/util/ZLColor.java
index fb3af2639..82ef05475 100644
--- a/src/org/geometerplus/zlibrary/core/util/ZLColor.java
+++ b/src/org/geometerplus/zlibrary/core/util/ZLColor.java
@@ -17,47 +17,47 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.util;
-
-/**
- * class Color. Color is presented as the triple of short's (Red, Green, Blue components)
- * Each component should be in the range 0..255
- */
-public final class ZLColor {
- public final short Red;
- public final short Green;
- public final short Blue;
-
- public ZLColor(int r, int g, int b) {
- Red = (short)(r & 0xFF);
- Green = (short)(g & 0xFF);
- Blue = (short)(b & 0xFF);
- }
-
- public ZLColor(int intValue) {
- Red = (short)((intValue >> 16) & 0xFF);
- Green = (short)((intValue >> 8) & 0xFF);
- Blue = (short)(intValue & 0xFF);
- }
-
- public int getIntValue() {
- return (Red << 16) + (Green << 8) + Blue;
- }
-
- public boolean equals(Object o) {
- if (o == this) {
- return true;
- }
-
- if (!(o instanceof ZLColor)) {
- return false;
- }
-
- ZLColor color = (ZLColor)o;
- return (color.Red == Red) && (color.Green == Green) && (color.Blue == Blue);
- }
-
- public int hashCode() {
- return getIntValue();
- }
-}
+package org.geometerplus.zlibrary.core.util;
+
+/**
+ * class Color. Color is presented as the triple of short's (Red, Green, Blue components)
+ * Each component should be in the range 0..255
+ */
+public final class ZLColor {
+ public final short Red;
+ public final short Green;
+ public final short Blue;
+
+ public ZLColor(int r, int g, int b) {
+ Red = (short)(r & 0xFF);
+ Green = (short)(g & 0xFF);
+ Blue = (short)(b & 0xFF);
+ }
+
+ public ZLColor(int intValue) {
+ Red = (short)((intValue >> 16) & 0xFF);
+ Green = (short)((intValue >> 8) & 0xFF);
+ Blue = (short)(intValue & 0xFF);
+ }
+
+ public int getIntValue() {
+ return (Red << 16) + (Green << 8) + Blue;
+ }
+
+ public boolean equals(Object o) {
+ if (o == this) {
+ return true;
+ }
+
+ if (!(o instanceof ZLColor)) {
+ return false;
+ }
+
+ ZLColor color = (ZLColor)o;
+ return (color.Red == Red) && (color.Green == Green) && (color.Blue == Blue);
+ }
+
+ public int hashCode() {
+ return getIntValue();
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/util/ZLSearchPattern.java b/src/org/geometerplus/zlibrary/core/util/ZLSearchPattern.java
index b911c3acb..264c9a129 100644
--- a/src/org/geometerplus/zlibrary/core/util/ZLSearchPattern.java
+++ b/src/org/geometerplus/zlibrary/core/util/ZLSearchPattern.java
@@ -17,24 +17,25 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.util;
-
-public class ZLSearchPattern {
- /*package*/ boolean IgnoreCase;
- /*package*/ String LowerCasePattern;
- /*package*/ String UpperCasePattern;
-
- public ZLSearchPattern(final String pattern, boolean ignoreCase) {
- IgnoreCase = ignoreCase;
- if (IgnoreCase) {
- LowerCasePattern = pattern.toLowerCase();
- UpperCasePattern = pattern.toUpperCase();
- } else {
- LowerCasePattern = pattern;
- }
- }
-
- public int getLength() {
- return LowerCasePattern.length();
- }
-}
+package org.geometerplus.zlibrary.core.util;
+
+public class ZLSearchPattern {
+ final boolean IgnoreCase;
+ final char[] LowerCasePattern;
+ final char[] UpperCasePattern;
+
+ public ZLSearchPattern(String pattern, boolean ignoreCase) {
+ IgnoreCase = ignoreCase;
+ if (IgnoreCase) {
+ LowerCasePattern = pattern.toLowerCase().toCharArray();
+ UpperCasePattern = pattern.toUpperCase().toCharArray();
+ } else {
+ LowerCasePattern = pattern.toCharArray();
+ UpperCasePattern = null;
+ }
+ }
+
+ public int getLength() {
+ return LowerCasePattern.length;
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/util/ZLSearchUtil.java b/src/org/geometerplus/zlibrary/core/util/ZLSearchUtil.java
index d46c676f2..446ce4c72 100644
--- a/src/org/geometerplus/zlibrary/core/util/ZLSearchUtil.java
+++ b/src/org/geometerplus/zlibrary/core/util/ZLSearchUtil.java
@@ -17,59 +17,59 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.util;
-
-public class ZLSearchUtil {
- private ZLSearchUtil() {
- }
-
- public static int find(char[] text, int offset, int length, final ZLSearchPattern pattern) {
- return find(text, offset, length, pattern, 0);
- }
-
- public static int find(char[] text, int offset, int length, final ZLSearchPattern pattern, int pos) {
- if (pos < 0) {
- pos = 0;
- }
- final String lower = pattern.LowerCasePattern;
- final int last = offset + length - pattern.getLength();
- final int patternLast = lower.length() - 1;
- if (pattern.IgnoreCase) {
- final String upper = pattern.UpperCasePattern;
- final char firstCharLower = lower.charAt(0);
- final char firstCharUpper = upper.charAt(0);
- for (int i = offset + pos; i <= last; i++) {
- final char current = text[i];
- if ((current == firstCharLower) || (current == firstCharUpper)) {
- int j = 1;
- for (int k = i + 1; j <= patternLast; ++j, ++k) {
- final char symbol = text[k];
- if ((lower.charAt(j) != symbol) &&
- (upper.charAt(j) != symbol)) {
- break;
- }
- }
- if (j > patternLast) {
- return i - offset;
- }
- }
- }
- } else {
- final char firstChar = lower.charAt(0);
- for (int i = offset + pos; i <= last; i++) {
- if (text[i] == firstChar) {
- int j = 1;
- for (int k = i + 1; j <= patternLast; ++j, ++k) {
- if (lower.charAt(j) != text[k]) {
- break;
- }
- }
- if (j > patternLast) {
- return i - offset;
- }
- }
- }
- }
- return -1;
- }
-}
+package org.geometerplus.zlibrary.core.util;
+
+public abstract class ZLSearchUtil {
+ private ZLSearchUtil() {
+ }
+
+ public static int find(char[] text, int offset, int length, final ZLSearchPattern pattern) {
+ return find(text, offset, length, pattern, 0);
+ }
+
+ public static int find(char[] text, int offset, int length, final ZLSearchPattern pattern, int pos) {
+ if (pos < 0) {
+ pos = 0;
+ }
+ final char[] lower = pattern.LowerCasePattern;
+ final int patternLength = lower.length;
+ final int last = offset + length - patternLength;
+ if (pattern.IgnoreCase) {
+ final char[] upper = pattern.UpperCasePattern;
+ final char firstCharLower = lower[0];
+ final char firstCharUpper = upper[0];
+ for (int i = offset + pos; i <= last; i++) {
+ final char current = text[i];
+ if ((current == firstCharLower) || (current == firstCharUpper)) {
+ int j = 1;
+ for (int k = i + 1; j < patternLength; ++j, ++k) {
+ final char symbol = text[k];
+ if ((lower[j] != symbol) &&
+ (upper[j] != symbol)) {
+ break;
+ }
+ }
+ if (j >= patternLength) {
+ return i - offset;
+ }
+ }
+ }
+ } else {
+ final char firstChar = lower[0];
+ for (int i = offset + pos; i <= last; i++) {
+ if (text[i] == firstChar) {
+ int j = 1;
+ for (int k = i + 1; j < patternLength; ++j, ++k) {
+ if (lower[j] != text[k]) {
+ break;
+ }
+ }
+ if (j >= patternLength) {
+ return i - offset;
+ }
+ }
+ }
+ }
+ return -1;
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/util/ZLUnicodeUtil.java b/src/org/geometerplus/zlibrary/core/util/ZLUnicodeUtil.java
index 085e08b50..78396fa3d 100644
--- a/src/org/geometerplus/zlibrary/core/util/ZLUnicodeUtil.java
+++ b/src/org/geometerplus/zlibrary/core/util/ZLUnicodeUtil.java
@@ -17,24 +17,25 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.util;
-
-public class ZLUnicodeUtil {
- public static int utf8Length(byte[] buffer, int str, int len) {
- int last = str + len;
- int counter = 0;
- while (str < last) {
- if ((buffer[str] & 0x80) == 0) {
- ++str;
- } else if ((buffer[str] & 0x20) == 0) {
- str += 2;
- } else if ((buffer[str] & 0x10) == 0) {
- str += 3;
- } else {
- str += 4;
- }
- ++counter;
- }
- return counter;
- }
-}
+package org.geometerplus.zlibrary.core.util;
+
+public class ZLUnicodeUtil {
+ public static int utf8Length(byte[] buffer, int str, int len) {
+ final int last = str + len;
+ int counter = 0;
+ while (str < last) {
+ final int bt = buffer[str];
+ if ((bt & 0x80) == 0) {
+ ++str;
+ } else if ((bt & 0x20) == 0) {
+ str += 2;
+ } else if ((bt & 0x10) == 0) {
+ str += 3;
+ } else {
+ str += 4;
+ }
+ ++counter;
+ }
+ return counter;
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/core/view/ZLPaintContext.java b/src/org/geometerplus/zlibrary/core/view/ZLPaintContext.java
index 0e67630b1..910521ce9 100644
--- a/src/org/geometerplus/zlibrary/core/view/ZLPaintContext.java
+++ b/src/org/geometerplus/zlibrary/core/view/ZLPaintContext.java
@@ -165,7 +165,7 @@ abstract public class ZLPaintContext {
abstract public void fillRectangle(int x0, int y0, int x1, int y1);
abstract public void drawFilledCircle(int x, int y, int r);
- public List fontFamilies() {
+ public ArrayList fontFamilies() {
if (myFamilies.isEmpty()) {
fillFamiliesList(myFamilies);
}
@@ -175,5 +175,3 @@ abstract public class ZLPaintContext {
abstract public String realFontFamilyName(String fontFamily);
abstract protected void fillFamiliesList(ArrayList families);
}
-
-
diff --git a/src/org/geometerplus/zlibrary/core/xml/ZLXMLProcessorFactory.java b/src/org/geometerplus/zlibrary/core/xml/ZLXMLProcessorFactory.java
index 9412a3cf2..37e0f4198 100644
--- a/src/org/geometerplus/zlibrary/core/xml/ZLXMLProcessorFactory.java
+++ b/src/org/geometerplus/zlibrary/core/xml/ZLXMLProcessorFactory.java
@@ -17,18 +17,18 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.core.xml;
-
-public abstract class ZLXMLProcessorFactory {
- private static ZLXMLProcessorFactory ourInstance;
-
- public static ZLXMLProcessorFactory getInstance() {
- return ourInstance;
- }
-
- protected ZLXMLProcessorFactory() {
- ourInstance = this;
- }
-
- public abstract ZLXMLProcessor createXMLProcessor();
-}
+package org.geometerplus.zlibrary.core.xml;
+
+public abstract class ZLXMLProcessorFactory {
+ private static ZLXMLProcessorFactory ourInstance;
+
+ public static ZLXMLProcessorFactory getInstance() {
+ return ourInstance;
+ }
+
+ protected ZLXMLProcessorFactory() {
+ ourInstance = this;
+ }
+
+ public abstract ZLXMLProcessor createXMLProcessor();
+}
diff --git a/src/org/geometerplus/zlibrary/core/xml/sax/SAXHandler.java b/src/org/geometerplus/zlibrary/core/xml/sax/SAXHandler.java
deleted file mode 100644
index f9a085dff..000000000
--- a/src/org/geometerplus/zlibrary/core/xml/sax/SAXHandler.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2007-2008 Geometer Plus
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- */
-
-package org.geometerplus.zlibrary.core.xml.sax;
-
-import java.util.*;
-import org.geometerplus.zlibrary.core.util.*;
-
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-import org.geometerplus.zlibrary.core.xml.*;
-
-class SAXHandler extends DefaultHandler {
- private ZLXMLReader myXMLReader;
- private final ZLStringMap myAttributes = new ZLStringMap();
-
- SAXHandler(ZLXMLReader reader) {
- myXMLReader = reader;
- }
-
- public void endElement(String uri, String localName, String qName) throws SAXException {
- myXMLReader.endElementHandler(qName);
- }
-
- public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
- ZLStringMap attributesMap = myAttributes;
- int length = attributes.getLength();
- for (int i = 0; i < length; i++) {
- attributesMap.put(attributes.getQName(i), attributes.getValue(i));
- }
- myXMLReader.startElementHandler(qName, attributesMap);
- attributesMap.clear();
- }
-
- public void characters(char[] ch, int start, int length) throws SAXException {
- myXMLReader.characterDataHandler(ch, start, length);
- }
-
- public void endDocument() throws SAXException {
- myXMLReader.endDocumentHandler();
- }
-
- public void startDocument() throws SAXException {
- myXMLReader.startDocumentHandler();
- }
-}
diff --git a/src/org/geometerplus/zlibrary/core/xml/sax/ZLSaxXMLProcessor.java b/src/org/geometerplus/zlibrary/core/xml/sax/ZLSaxXMLProcessor.java
deleted file mode 100644
index 5673e63bc..000000000
--- a/src/org/geometerplus/zlibrary/core/xml/sax/ZLSaxXMLProcessor.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2007-2008 Geometer Plus
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- */
-
-package org.geometerplus.zlibrary.core.xml.sax;
-
-import java.io.InputStream;
-import java.io.IOException;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
-import org.xml.sax.SAXException;
-import org.geometerplus.zlibrary.core.xml.ZLXMLProcessor;
-import org.geometerplus.zlibrary.core.xml.ZLXMLReader;
-
-public class ZLSaxXMLProcessor extends ZLXMLProcessor {
- public boolean read(ZLXMLReader reader, InputStream stream) {
- try {
- SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
- parser.parse(stream, new SAXHandler(reader));
- } catch (IOException e) {
- return false;
- } catch (ParserConfigurationException e) {
- return false;
- } catch (SAXException e) {
- return false;
- }
- return true;
- }
-}
diff --git a/src/org/geometerplus/zlibrary/core/xml/sax/ZLSaxXMLProcessorFactory.java b/src/org/geometerplus/zlibrary/core/xml/sax/ZLSaxXMLProcessorFactory.java
deleted file mode 100644
index cfd553dfa..000000000
--- a/src/org/geometerplus/zlibrary/core/xml/sax/ZLSaxXMLProcessorFactory.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2007-2008 Geometer Plus
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- */
-
-package org.geometerplus.zlibrary.core.xml.sax;
-
-import org.geometerplus.zlibrary.core.xml.ZLXMLProcessorFactory;
-
-public class ZLSaxXMLProcessorFactory extends ZLXMLProcessorFactory {
- public ZLSaxXMLProcessor createXMLProcessor() {
- return new ZLSaxXMLProcessor();
- }
-}
diff --git a/src/org/geometerplus/zlibrary/text/model/ZLTextAlignmentType.java b/src/org/geometerplus/zlibrary/text/model/ZLTextAlignmentType.java
index f9619714f..a8d5b3807 100644
--- a/src/org/geometerplus/zlibrary/text/model/ZLTextAlignmentType.java
+++ b/src/org/geometerplus/zlibrary/text/model/ZLTextAlignmentType.java
@@ -17,12 +17,12 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.model;
-
-public interface ZLTextAlignmentType {
- public static final byte ALIGN_UNDEFINED = 0;
- public static final byte ALIGN_LEFT = 1;
- public static final byte ALIGN_RIGHT = 2;
- public static final byte ALIGN_CENTER = 3;
- public static final byte ALIGN_JUSTIFY = 4;
-}
+package org.geometerplus.zlibrary.text.model;
+
+public interface ZLTextAlignmentType {
+ byte ALIGN_UNDEFINED = 0;
+ byte ALIGN_LEFT = 1;
+ byte ALIGN_RIGHT = 2;
+ byte ALIGN_CENTER = 3;
+ byte ALIGN_JUSTIFY = 4;
+}
diff --git a/src/org/geometerplus/zlibrary/text/model/ZLTextModel.java b/src/org/geometerplus/zlibrary/text/model/ZLTextModel.java
index 625a7aaa3..488b20135 100644
--- a/src/org/geometerplus/zlibrary/text/model/ZLTextModel.java
+++ b/src/org/geometerplus/zlibrary/text/model/ZLTextModel.java
@@ -17,40 +17,40 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.model;
-
-import java.util.ArrayList;
-
-import org.geometerplus.zlibrary.core.util.ZLTextBuffer;
-import org.geometerplus.zlibrary.core.image.ZLImageMap;
-
-import org.geometerplus.zlibrary.text.model.impl.ZLTextForcedControlEntry;
-import org.geometerplus.zlibrary.text.model.impl.ZLTextMark;
-
-public interface ZLTextModel {
- int getParagraphsNumber();
- ZLTextParagraph getParagraph(int index);
-
- void addControl(byte textKind, boolean isStart);
- void addText(char[] text);
- void addText(char[] text, int offset, int length);
- void addText(ZLTextBuffer buffer);
-
- void addControl(ZLTextForcedControlEntry entry);
- void addHyperlinkControl(byte textKind, String label);
- void addImage(String id, ZLImageMap imageMap, short vOffset);
- void addFixedHSpace(short length);
-
- void selectParagraph(int index);
- void removeAllMarks();
- ZLTextMark getFirstMark();
- ZLTextMark getLastMark();
- ZLTextMark getNextMark(ZLTextMark position);
- ZLTextMark getPreviousMark(ZLTextMark position);
-
- ArrayList getMarks();
-
- int getParagraphTextLength(int index);
-
- void search(final String text, int startIndex, int endIndex, boolean ignoreCase);
-}
+package org.geometerplus.zlibrary.text.model;
+
+import java.util.ArrayList;
+
+import org.geometerplus.zlibrary.core.util.ZLTextBuffer;
+import org.geometerplus.zlibrary.core.image.ZLImageMap;
+
+import org.geometerplus.zlibrary.text.model.impl.ZLTextForcedControlEntry;
+import org.geometerplus.zlibrary.text.model.impl.ZLTextMark;
+
+public interface ZLTextModel {
+ int getParagraphsNumber();
+ ZLTextParagraph getParagraph(int index);
+
+ void addControl(byte textKind, boolean isStart);
+ void addText(char[] text);
+ void addText(char[] text, int offset, int length);
+ void addText(ZLTextBuffer buffer);
+
+ void addControl(ZLTextForcedControlEntry entry);
+ void addHyperlinkControl(byte textKind, String label);
+ void addImage(String id, ZLImageMap imageMap, short vOffset);
+ void addFixedHSpace(short length);
+
+ void selectParagraph(int index);
+ void removeAllMarks();
+ ZLTextMark getFirstMark();
+ ZLTextMark getLastMark();
+ ZLTextMark getNextMark(ZLTextMark position);
+ ZLTextMark getPreviousMark(ZLTextMark position);
+
+ ArrayList getMarks();
+
+ int getParagraphTextLength(int index);
+
+ void search(final String text, int startIndex, int endIndex, boolean ignoreCase);
+}
diff --git a/src/org/geometerplus/zlibrary/text/model/ZLTextParagraph.java b/src/org/geometerplus/zlibrary/text/model/ZLTextParagraph.java
index 4ca45d1be..d027ec6a2 100644
--- a/src/org/geometerplus/zlibrary/text/model/ZLTextParagraph.java
+++ b/src/org/geometerplus/zlibrary/text/model/ZLTextParagraph.java
@@ -17,50 +17,50 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.model;
-
-import org.geometerplus.zlibrary.text.model.impl.ZLImageEntry;
-
-public interface ZLTextParagraph {
- interface Entry {
- byte TEXT = 1;
- byte IMAGE = 2;
- byte CONTROL = 3;
- byte FORCED_CONTROL = 4;
- byte FIXED_HSPACE = 5;
- }
-
- interface EntryIterator {
- byte getType();
-
- char[] getTextData();
- int getTextOffset();
- int getTextLength();
-
- byte getControlKind();
- boolean getControlIsStart();
- boolean getControlIsHyperlink();
- String getHyperlinkControlLabel();
-
- ZLImageEntry getImageEntry();
-
- short getFixedHSpaceLength();
-
- boolean hasNext();
- void next();
- }
-
- public EntryIterator iterator();
-
- interface Kind {
- byte TEXT_PARAGRAPH = 0;
- byte TREE_PARAGRAPH = 1;
- byte EMPTY_LINE_PARAGRAPH = 2;
- byte BEFORE_SKIP_PARAGRAPH = 3;
- byte AFTER_SKIP_PARAGRAPH = 4;
- byte END_OF_SECTION_PARAGRAPH = 5;
- byte END_OF_TEXT_PARAGRAPH = 6;
- };
-
- byte getKind();
-}
+package org.geometerplus.zlibrary.text.model;
+
+import org.geometerplus.zlibrary.text.model.impl.ZLImageEntry;
+
+public interface ZLTextParagraph {
+ interface Entry {
+ byte TEXT = 1;
+ byte IMAGE = 2;
+ byte CONTROL = 3;
+ byte FORCED_CONTROL = 4;
+ byte FIXED_HSPACE = 5;
+ }
+
+ interface EntryIterator {
+ byte getType();
+
+ char[] getTextData();
+ int getTextOffset();
+ int getTextLength();
+
+ byte getControlKind();
+ boolean getControlIsStart();
+ boolean getControlIsHyperlink();
+ String getHyperlinkControlLabel();
+
+ ZLImageEntry getImageEntry();
+
+ short getFixedHSpaceLength();
+
+ boolean hasNext();
+ void next();
+ }
+
+ public EntryIterator iterator();
+
+ interface Kind {
+ byte TEXT_PARAGRAPH = 0;
+ byte TREE_PARAGRAPH = 1;
+ byte EMPTY_LINE_PARAGRAPH = 2;
+ byte BEFORE_SKIP_PARAGRAPH = 3;
+ byte AFTER_SKIP_PARAGRAPH = 4;
+ byte END_OF_SECTION_PARAGRAPH = 5;
+ byte END_OF_TEXT_PARAGRAPH = 6;
+ };
+
+ byte getKind();
+}
diff --git a/src/org/geometerplus/zlibrary/text/model/ZLTextPlainModel.java b/src/org/geometerplus/zlibrary/text/model/ZLTextPlainModel.java
index 6d8597734..a05cbcdb6 100644
--- a/src/org/geometerplus/zlibrary/text/model/ZLTextPlainModel.java
+++ b/src/org/geometerplus/zlibrary/text/model/ZLTextPlainModel.java
@@ -17,8 +17,8 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.model;
-
-public interface ZLTextPlainModel extends ZLTextModel {
- void createParagraph(byte kind);
-}
+package org.geometerplus.zlibrary.text.model;
+
+public interface ZLTextPlainModel extends ZLTextModel {
+ void createParagraph(byte kind);
+}
diff --git a/src/org/geometerplus/zlibrary/text/model/ZLTextTreeModel.java b/src/org/geometerplus/zlibrary/text/model/ZLTextTreeModel.java
index 64e33ec9b..e61bc31b0 100644
--- a/src/org/geometerplus/zlibrary/text/model/ZLTextTreeModel.java
+++ b/src/org/geometerplus/zlibrary/text/model/ZLTextTreeModel.java
@@ -17,14 +17,14 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.model;
-
-public interface ZLTextTreeModel extends ZLTextModel {
- ZLTextTreeParagraph getTreeParagraph(int index);
- ZLTextTreeParagraph createParagraph(ZLTextTreeParagraph parent);
- void removeParagraph(int index);
- void clear();
-
- //void search(String text, int startIndex, int endIndex, boolean ignoreCase);
- //void selectParagraph(int index);
-}
+package org.geometerplus.zlibrary.text.model;
+
+public interface ZLTextTreeModel extends ZLTextModel {
+ ZLTextTreeParagraph getTreeParagraph(int index);
+ ZLTextTreeParagraph createParagraph(ZLTextTreeParagraph parent);
+ void removeParagraph(int index);
+ void clear();
+
+ //void search(String text, int startIndex, int endIndex, boolean ignoreCase);
+ //void selectParagraph(int index);
+}
diff --git a/src/org/geometerplus/zlibrary/text/model/ZLTextTreeParagraph.java b/src/org/geometerplus/zlibrary/text/model/ZLTextTreeParagraph.java
index 9666f78ab..767ba7902 100644
--- a/src/org/geometerplus/zlibrary/text/model/ZLTextTreeParagraph.java
+++ b/src/org/geometerplus/zlibrary/text/model/ZLTextTreeParagraph.java
@@ -17,24 +17,21 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.model;
-
-import java.util.*;
-import org.geometerplus.zlibrary.core.util.*;
-
-public interface ZLTextTreeParagraph extends ZLTextParagraph {
- boolean isOpen();
- void open(boolean o);
- void openTree();
-
- int getDepth();
-
- ZLTextTreeParagraph getParent();
-
- boolean hasChildren();
- boolean isLastChild();
- ArrayList getChildren();
- int getFullSize();
-
- void removeFromParent();
-}
+package org.geometerplus.zlibrary.text.model;
+
+public interface ZLTextTreeParagraph extends ZLTextParagraph {
+ boolean isOpen();
+ void open(boolean o);
+ void openTree();
+
+ int getDepth();
+
+ ZLTextTreeParagraph getParent();
+
+ boolean hasChildren();
+ int childNumber();
+ boolean isLastChild();
+ int getFullSize();
+
+ void removeFromParent();
+}
diff --git a/src/org/geometerplus/zlibrary/text/model/impl/ZLImageEntry.java b/src/org/geometerplus/zlibrary/text/model/impl/ZLImageEntry.java
index c2ebf2de8..a65f3cab5 100644
--- a/src/org/geometerplus/zlibrary/text/model/impl/ZLImageEntry.java
+++ b/src/org/geometerplus/zlibrary/text/model/impl/ZLImageEntry.java
@@ -17,28 +17,24 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.model.impl;
-
-import org.geometerplus.zlibrary.core.image.ZLImage;
-import org.geometerplus.zlibrary.core.image.ZLImageMap;
-import org.geometerplus.zlibrary.text.model.ZLTextParagraph;
-
-public final class ZLImageEntry {
- private final ZLImageMap myImageMap;
- private final String myId;
- public final short VOffset;
-
- ZLImageEntry(ZLImageMap imageMap, String id, short vOffset) {
- myImageMap = imageMap;
- myId = id;
- VOffset = vOffset;
- }
-
- public String getId() {
- return myId;
- }
-
- public ZLImage getImage() {
- return myImageMap.getImage(myId);
- }
-}
+package org.geometerplus.zlibrary.text.model.impl;
+
+import org.geometerplus.zlibrary.core.image.ZLImage;
+import org.geometerplus.zlibrary.core.image.ZLImageMap;
+import org.geometerplus.zlibrary.text.model.ZLTextParagraph;
+
+public final class ZLImageEntry {
+ private final ZLImageMap myImageMap;
+ public final String Id;
+ public final short VOffset;
+
+ ZLImageEntry(ZLImageMap imageMap, String id, short vOffset) {
+ myImageMap = imageMap;
+ Id = id;
+ VOffset = vOffset;
+ }
+
+ public ZLImage getImage() {
+ return myImageMap.getImage(Id);
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/text/model/impl/ZLModelFactory.java b/src/org/geometerplus/zlibrary/text/model/impl/ZLModelFactory.java
index d0978f59a..d7544817a 100644
--- a/src/org/geometerplus/zlibrary/text/model/impl/ZLModelFactory.java
+++ b/src/org/geometerplus/zlibrary/text/model/impl/ZLModelFactory.java
@@ -17,48 +17,48 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.model.impl;
-
-import org.geometerplus.zlibrary.text.model.ZLTextModel;
-import org.geometerplus.zlibrary.text.model.ZLTextParagraph;
-import org.geometerplus.zlibrary.text.model.ZLTextPlainModel;
-import org.geometerplus.zlibrary.text.model.ZLTextTreeModel;
-import org.geometerplus.zlibrary.text.model.ZLTextTreeParagraph;
-
-
-public class ZLModelFactory {
- //models
- static public ZLTextPlainModel createPlainModel(int dataBlockSize) {
- return new ZLTextPlainModelImpl(dataBlockSize);
- }
-
- /*static public ZLTextPlainModel createPlainModel() {
- return new ZLTextPlainModelImpl();
- }*/
-
- static public ZLTextTreeModel createZLTextTreeModel() {
- return new ZLTextTreeModelImpl();
- }
-
- //paragraphs
- static public ZLTextParagraph createParagraph() {
- return new ZLTextParagraphImpl(new ZLTextPlainModelImpl(4096));
- }
-
- static public ZLTextParagraph createSpecialParagragraph(byte kind) {
- return new ZLTextSpecialParagraphImpl(kind, new ZLTextPlainModelImpl(4096));
- }
-
- static public ZLTextTreeParagraph createTreeParagraph(ZLTextTreeParagraph parent) {
- return new ZLTextTreeParagraphImpl(parent, new ZLTextPlainModelImpl(4096));
- }
-
- static public ZLTextTreeParagraph createTreeParagraph() {
- return new ZLTextTreeParagraphImpl(null, new ZLTextPlainModelImpl(4096));
- }
-
- //entries
- static public ZLTextForcedControlEntry createForcedControlEntry() {
- return new ZLTextForcedControlEntryImpl();
- }
-}
+package org.geometerplus.zlibrary.text.model.impl;
+
+import org.geometerplus.zlibrary.text.model.ZLTextModel;
+import org.geometerplus.zlibrary.text.model.ZLTextParagraph;
+import org.geometerplus.zlibrary.text.model.ZLTextPlainModel;
+import org.geometerplus.zlibrary.text.model.ZLTextTreeModel;
+import org.geometerplus.zlibrary.text.model.ZLTextTreeParagraph;
+
+
+public class ZLModelFactory {
+ //models
+ static public ZLTextPlainModel createPlainModel(int dataBlockSize) {
+ return new ZLTextPlainModelImpl(dataBlockSize);
+ }
+
+ /*static public ZLTextPlainModel createPlainModel() {
+ return new ZLTextPlainModelImpl();
+ }*/
+
+ static public ZLTextTreeModel createZLTextTreeModel() {
+ return new ZLTextTreeModelImpl();
+ }
+
+ //paragraphs
+ static public ZLTextParagraph createParagraph() {
+ return new ZLTextParagraphImpl(new ZLTextPlainModelImpl(4096));
+ }
+
+ static public ZLTextParagraph createSpecialParagragraph(byte kind) {
+ return new ZLTextSpecialParagraphImpl(kind, new ZLTextPlainModelImpl(4096));
+ }
+
+ static public ZLTextTreeParagraph createTreeParagraph(ZLTextTreeParagraph parent) {
+ return new ZLTextTreeParagraphImpl(parent, new ZLTextPlainModelImpl(4096));
+ }
+
+ static public ZLTextTreeParagraph createTreeParagraph() {
+ return new ZLTextTreeParagraphImpl(null, new ZLTextPlainModelImpl(4096));
+ }
+
+ //entries
+ static public ZLTextForcedControlEntry createForcedControlEntry() {
+ return new ZLTextForcedControlEntry();
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/text/model/impl/ZLTextForcedControlEntry.java b/src/org/geometerplus/zlibrary/text/model/impl/ZLTextForcedControlEntry.java
index 1a9bd7f29..3e84fb849 100644
--- a/src/org/geometerplus/zlibrary/text/model/impl/ZLTextForcedControlEntry.java
+++ b/src/org/geometerplus/zlibrary/text/model/impl/ZLTextForcedControlEntry.java
@@ -17,20 +17,59 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.model.impl;
-
-import org.geometerplus.zlibrary.text.model.ZLTextParagraph;
-
-public interface ZLTextForcedControlEntry extends ZLTextParagraph.Entry {
- boolean isLeftIndentSupported();
- short getLeftIndent();
- void setLeftIndent(short leftIndent);
-
- boolean isRightIndentSupported();
- short getRightIndent();
- void setRightIndent(short rightIndent);
-
- boolean isAlignmentTypeSupported();
- byte getAlignmentType();
- void setAlignmentType(byte alignmentType);
-}
+package org.geometerplus.zlibrary.text.model.impl;
+
+import org.geometerplus.zlibrary.text.model.ZLTextAlignmentType;
+
+public class ZLTextForcedControlEntry {
+ private final static int SUPPORTS_LEFT_INDENT = 1 << 0;
+ private final static int SUPPORTS_RIGHT_INDENT = 1 << 1;
+ private final static int SUPPORTS_ALIGNMENT_TYPE = 1 << 2;
+
+ private int myMask;
+ private short myLeftIndent;
+ private short myRightIndent;
+ private byte myAlignmentType;
+
+ ZLTextForcedControlEntry() {
+ }
+
+ public boolean isLeftIndentSupported() {
+ return (myMask & SUPPORTS_LEFT_INDENT) == SUPPORTS_LEFT_INDENT;
+ }
+
+ public short getLeftIndent() {
+ return myLeftIndent;
+ };
+
+ public void setLeftIndent(short leftIndent) {
+ myMask |= SUPPORTS_LEFT_INDENT;
+ myLeftIndent = leftIndent;
+ }
+
+ public boolean isRightIndentSupported() {
+ return (myMask & SUPPORTS_RIGHT_INDENT) == SUPPORTS_RIGHT_INDENT;
+ }
+
+ public short getRightIndent() {
+ return myRightIndent;
+ }
+
+ public void setRightIndent(short rightIndent) {
+ myMask |= SUPPORTS_RIGHT_INDENT;
+ myRightIndent = rightIndent;
+ }
+
+ public boolean isAlignmentTypeSupported() {
+ return (myMask & SUPPORTS_ALIGNMENT_TYPE) == SUPPORTS_ALIGNMENT_TYPE;
+ }
+
+ public byte getAlignmentType() {
+ return myAlignmentType;
+ }
+
+ public void setAlignmentType(byte alignmentType) {
+ myMask |= SUPPORTS_ALIGNMENT_TYPE;
+ myAlignmentType = alignmentType;
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/text/model/impl/ZLTextForcedControlEntryImpl.java b/src/org/geometerplus/zlibrary/text/model/impl/ZLTextForcedControlEntryImpl.java
deleted file mode 100644
index 3362ce7d5..000000000
--- a/src/org/geometerplus/zlibrary/text/model/impl/ZLTextForcedControlEntryImpl.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2007-2008 Geometer Plus
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- */
-
-package org.geometerplus.zlibrary.text.model.impl;
-
-import org.geometerplus.zlibrary.text.model.ZLTextAlignmentType;
-
-class ZLTextForcedControlEntryImpl implements ZLTextForcedControlEntry {
- private final static int SUPPORTS_LEFT_INDENT = 1;
- private final static int SUPPORTS_RIGHT_INDENT = 2;
- private final static int SUPPORTS_ALIGNMENT_TYPE = 4;
-
- private int myMask;
- private short myLeftIndent;
- private short myRightIndent;
- private byte myAlignmentType;
-
- ZLTextForcedControlEntryImpl() {
- myMask = 0;
- }
-
- public boolean isLeftIndentSupported() {
- return (myMask & SUPPORTS_LEFT_INDENT) == SUPPORTS_LEFT_INDENT;
- }
-
- public short getLeftIndent() {
- return myLeftIndent;
- };
-
- public void setLeftIndent(short leftIndent) {
- myMask |= SUPPORTS_LEFT_INDENT;
- myLeftIndent = leftIndent;
- }
-
- public boolean isRightIndentSupported() {
- return (myMask & SUPPORTS_RIGHT_INDENT) == SUPPORTS_RIGHT_INDENT;
- }
-
- public short getRightIndent() {
- return myRightIndent;
- }
-
- public void setRightIndent(short rightIndent) {
- myMask |= SUPPORTS_RIGHT_INDENT;
- myRightIndent = rightIndent;
- }
-
- public boolean isAlignmentTypeSupported() {
- return (myMask & SUPPORTS_ALIGNMENT_TYPE) == SUPPORTS_ALIGNMENT_TYPE;
- }
-
- public byte getAlignmentType() {
- return myAlignmentType;
- }
-
- public void setAlignmentType(byte alignmentType) {
- myMask |= SUPPORTS_ALIGNMENT_TYPE;
- myAlignmentType = alignmentType;
- }
-}
diff --git a/src/org/geometerplus/zlibrary/text/model/impl/ZLTextMark.java b/src/org/geometerplus/zlibrary/text/model/impl/ZLTextMark.java
index 7bde71b80..cca1396f4 100644
--- a/src/org/geometerplus/zlibrary/text/model/impl/ZLTextMark.java
+++ b/src/org/geometerplus/zlibrary/text/model/impl/ZLTextMark.java
@@ -17,48 +17,37 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.model.impl;
-
-public class ZLTextMark {
- public int ParagraphNumber;
- public int Offset;
- public int Length;
-
- public ZLTextMark() {
- ParagraphNumber = -1;
- Offset = -1;
- Length = -1;
- }
-
- public ZLTextMark(int paragraphNumber, int offset, int length) {
- ParagraphNumber = paragraphNumber;
- Offset = offset;
- Length = length;
- }
-
- public ZLTextMark(final ZLTextMark mark) {
- ParagraphNumber = mark.ParagraphNumber;
- Offset = mark.Offset;
- Length = mark.Length;
- }
-
- public int compareTo(ZLTextMark mark) {
- if (ParagraphNumber == mark.ParagraphNumber) {
- if (Offset == mark.Offset) {
- return 0;
- } else if (Offset < mark.Offset) {
- return -1;
- } else {
- return 1;
- }
- } else if (ParagraphNumber < mark.ParagraphNumber) {
- return -1;
- } else {
- return 1;
- }
- }
-
- public String toString() {
- return (ParagraphNumber + " " + Offset + " " + Length);
- }
-}
+package org.geometerplus.zlibrary.text.model.impl;
+
+public class ZLTextMark {
+ public final int ParagraphNumber;
+ public final int Offset;
+ public final int Length;
+
+ public ZLTextMark() {
+ ParagraphNumber = -1;
+ Offset = -1;
+ Length = -1;
+ }
+
+ public ZLTextMark(int paragraphNumber, int offset, int length) {
+ ParagraphNumber = paragraphNumber;
+ Offset = offset;
+ Length = length;
+ }
+
+ public ZLTextMark(final ZLTextMark mark) {
+ ParagraphNumber = mark.ParagraphNumber;
+ Offset = mark.Offset;
+ Length = mark.Length;
+ }
+
+ public int compareTo(ZLTextMark mark) {
+ final int diff = ParagraphNumber - mark.ParagraphNumber;
+ return (diff != 0) ? diff : Offset - mark.Offset;
+ }
+
+ public String toString() {
+ return (ParagraphNumber + " " + Offset + " " + Length);
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/text/model/impl/ZLTextModelImpl.java b/src/org/geometerplus/zlibrary/text/model/impl/ZLTextModelImpl.java
index ac7308e0a..6c5be219d 100644
--- a/src/org/geometerplus/zlibrary/text/model/impl/ZLTextModelImpl.java
+++ b/src/org/geometerplus/zlibrary/text/model/impl/ZLTextModelImpl.java
@@ -17,396 +17,396 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.model.impl;
-
-import java.util.*;
-import org.geometerplus.zlibrary.core.util.*;
-
-import org.geometerplus.zlibrary.core.image.ZLImageMap;
-import org.geometerplus.zlibrary.core.util.ZLArrayUtils;
-import org.geometerplus.zlibrary.core.util.ZLTextBuffer;
-import org.geometerplus.zlibrary.text.model.ZLTextModel;
-import org.geometerplus.zlibrary.text.model.ZLTextParagraph;
-
-abstract class ZLTextModelImpl implements ZLTextModel {
- private final ArrayList myEntries = new ArrayList();
- final static int INITIAL_CAPACITY = 1024;
- private int[] myStartEntryIndices = new int[INITIAL_CAPACITY];
- private int[] myStartEntryOffsets = new int[INITIAL_CAPACITY];
- private int[] myParagraphLengths = new int[INITIAL_CAPACITY];
- int myParagraphsNumber;
-
- private final ArrayList myData = new ArrayList(1024);
- private final ArrayList myMarks = new ArrayList();
- private final int myDataBlockSize;
- private char[] myCurrentDataBlock;
- private int myBlockOffset;
-
- final class EntryIteratorImpl implements ZLTextParagraph.EntryIterator {
- private int myCounter;
- private int myLength;
- private byte myType;
-
- int myDataIndex;
- int myDataOffset;
-
- private char[] myTextData;
- private int myTextOffset;
- private int myTextLength;
-
- private byte myControlKind;
- private boolean myControlIsStart;
- private boolean myControlIsHyperlink;
- private String myHyperlinkControlLabel;
-
- private ZLImageEntry myImageEntry;
-
- private short myFixedHSpaceLength;
-
- EntryIteratorImpl(int index) {
- myLength = myParagraphLengths[index];
- myDataIndex = myStartEntryIndices[index];
- myDataOffset = myStartEntryOffsets[index];
- }
-
- void reset(int index) {
- myCounter = 0;
- myLength = myParagraphLengths[index];
- myDataIndex = myStartEntryIndices[index];
- myDataOffset = myStartEntryOffsets[index];
- }
-
- public byte getType() {
- return myType;
- }
-
- public char[] getTextData() {
- return myTextData;
- }
- public int getTextOffset() {
- return myTextOffset;
- }
- public int getTextLength() {
- return myTextLength;
- }
-
- public byte getControlKind() {
- return myControlKind;
- }
- public boolean getControlIsStart() {
- return myControlIsStart;
- }
- public boolean getControlIsHyperlink() {
- return myControlIsHyperlink;
- }
- public String getHyperlinkControlLabel() {
- return myHyperlinkControlLabel;
- }
-
- public ZLImageEntry getImageEntry() {
- return myImageEntry;
- }
-
- public short getFixedHSpaceLength() {
- return myFixedHSpaceLength;
- }
-
- public boolean hasNext() {
- return myCounter < myLength;
- }
-
- public void next() {
- int dataOffset = myDataOffset;
- if (dataOffset == myDataBlockSize) {
- ++myDataIndex;
- dataOffset = 0;
- }
- char[] data = (char[])myData.get(myDataIndex);
- byte type = (byte)data[dataOffset];
- if (type == 0) {
- data = (char[])myData.get(++myDataIndex);
- dataOffset = 0;
- type = (byte)data[0];
- }
- myType = type;
- ++dataOffset;
- switch (type) {
- case ZLTextParagraph.Entry.TEXT:
- myTextLength =
- ((int)data[dataOffset++] << 16) +
- (int)data[dataOffset++];
- myTextData = data;
- myTextOffset = dataOffset;
- dataOffset += myTextLength;
- break;
- case ZLTextParagraph.Entry.CONTROL:
- {
- short kind = (short)data[dataOffset++];
- myControlKind = (byte)kind;
- myControlIsStart = (kind & 0x0100) == 0x0100;
- if ((kind & 0x0200) == 0x0200) {
- myControlIsHyperlink = true;
- short labelLength = (short)data[dataOffset++];
- myHyperlinkControlLabel = new String(data, dataOffset, labelLength);
- dataOffset += labelLength;
- } else {
- myControlIsHyperlink = false;
- }
- break;
- }
- case ZLTextParagraph.Entry.IMAGE:
- myImageEntry = (ZLImageEntry)myEntries.get((int)data[dataOffset++]);
- break;
- case ZLTextParagraph.Entry.FIXED_HSPACE:
- myFixedHSpaceLength = (short)data[dataOffset++];
- break;
- case ZLTextParagraph.Entry.FORCED_CONTROL:
- //entry = myEntries.get((int)code);
- break;
- }
- ++myCounter;
- myDataOffset = dataOffset;
- }
- }
-
- ZLTextModelImpl(int dataBlockSize) {
- myDataBlockSize = dataBlockSize;
- }
-
- void extend() {
- final int size = myStartEntryIndices.length;
- myStartEntryIndices = ZLArrayUtils.createCopy(myStartEntryIndices, size, size << 1);
- myStartEntryOffsets = ZLArrayUtils.createCopy(myStartEntryOffsets, size, size << 1);
- myParagraphLengths = ZLArrayUtils.createCopy(myParagraphLengths, size, size << 1);
- }
-
- final void createParagraph() {
- final int index = myParagraphsNumber++;
- int[] startEntryIndices = myStartEntryIndices;
- if (index == startEntryIndices.length) {
- extend();
- startEntryIndices = myStartEntryIndices;
- }
- final int dataSize = myData.size();
- startEntryIndices[index] = (dataSize == 0) ? 0 : (dataSize - 1);
- myStartEntryOffsets[index] = myBlockOffset;
- myParagraphLengths[index] = 0;
- }
-
- private final char[] getDataBlock(int minimumLength) {
- char[] block = myCurrentDataBlock;
- if ((block == null) || (minimumLength > block.length - myBlockOffset)) {
- int blockSize = myDataBlockSize;
- if (minimumLength > blockSize) {
- blockSize = minimumLength;
- }
- block = new char[blockSize];
- myData.add(block);
- myCurrentDataBlock = block;
- myBlockOffset = 0;
- }
- return block;
- }
-
- public final void addControl(byte textKind, boolean isStart) {
- final char[] block = getDataBlock(2);
- ++myParagraphLengths[myParagraphsNumber - 1];
- block[myBlockOffset++] = (char)ZLTextParagraph.Entry.CONTROL;
- short kind = textKind;
- if (isStart) {
- kind += 0x0100;
- }
- block[myBlockOffset++] = (char)kind;
- }
-
- public final void addText(char[] text) {
- addText(text, 0, text.length);
- }
-
- public final void addText(ZLTextBuffer buffer) {
- addText(buffer.getData(), 0, buffer.getLength());
- }
-
- public final void addText(char[] text, int offset, int length) {
- char[] block = getDataBlock(3 + length);
- ++myParagraphLengths[myParagraphsNumber - 1];
- int blockOffset = myBlockOffset;
- block[blockOffset++] = (char)ZLTextParagraph.Entry.TEXT;
- block[blockOffset++] = (char)(length >> 16);
- block[blockOffset++] = (char)length;
- System.arraycopy(text, offset, block, blockOffset, length);
- myBlockOffset = blockOffset + length;
- }
-
-
- public final void addControl(ZLTextForcedControlEntry entry) {
- final char[] block = getDataBlock(3);
- ++myParagraphLengths[myParagraphsNumber - 1];
- block[myBlockOffset++] = (char)ZLTextParagraph.Entry.FORCED_CONTROL;
- final int entryAddress = myEntries.size();
- block[myBlockOffset++] = (char)(entryAddress >> 16);
- block[myBlockOffset++] = (char)entryAddress;
- myEntries.add(entry);
- }
-
-
- public final void addHyperlinkControl(byte textKind, String label) {
- final short labelLength = (short)label.length();
- final char[] block = getDataBlock(3 + labelLength);
- ++myParagraphLengths[myParagraphsNumber - 1];
- int blockOffset = myBlockOffset;
- block[blockOffset++] = (char)ZLTextParagraph.Entry.CONTROL;
- block[blockOffset++] = (char)(0x0300 + textKind);
- block[blockOffset++] = (char)labelLength;
- label.getChars(0, labelLength, block, blockOffset);
- myBlockOffset = blockOffset + labelLength;
- }
-
- public final void addImage(String id, ZLImageMap imageMap, short vOffset) {
- final char[] block = getDataBlock(2);
- ++myParagraphLengths[myParagraphsNumber - 1];
- final ArrayList entries = myEntries;
- block[myBlockOffset++] = (char)ZLTextParagraph.Entry.IMAGE;
- block[myBlockOffset++] = (char)entries.size();
- entries.add(new ZLImageEntry(imageMap, id, vOffset));
- }
-
-
- public final void addFixedHSpace(short length) {
- final char[] block = getDataBlock(2);
- ++myParagraphLengths[myParagraphsNumber - 1];
- block[myBlockOffset++] = (char)ZLTextParagraph.Entry.FIXED_HSPACE;
- block[myBlockOffset++] = (char)length;
- }
-
- public ZLTextMark getFirstMark() {
- return myMarks.size() == 0 ? new ZLTextMark() : (ZLTextMark) myMarks.get(0);
- }
-
- public ZLTextMark getLastMark() {
- return myMarks.size() == 0 ? new ZLTextMark() : (ZLTextMark) myMarks.get(myMarks.size() - 1);
- }
-
- public ZLTextMark getNextMark(ZLTextMark position) {
- ZLTextMark mark = null;
- for (int i = 0; i < myMarks.size(); i++) {
- ZLTextMark current = (ZLTextMark) myMarks.get(i);
- if (current.compareTo(position) > 0) {
- if ((mark == null) || (mark.compareTo(current) > 0)) {
- mark = current;
- }
- }
- }
- return (mark != null) ? mark : new ZLTextMark();
- }
-
- public ZLTextMark getPreviousMark(ZLTextMark position) {
- ZLTextMark mark = null;
- for (int i = 0; i < myMarks.size(); i++) {
- ZLTextMark current = (ZLTextMark) myMarks.get(i);
- if (current.compareTo(position) < 0) {
- if ((mark == null) || (mark.compareTo(current) < 0)) {
- mark = current;
- }
- }
- }
- return (mark != null) ? mark : new ZLTextMark();
- }
-
- public final void search(final String text, int startIndex, int endIndex, boolean ignoreCase) {
- ZLSearchPattern pattern = new ZLSearchPattern(text, ignoreCase);
- myMarks.clear();
- if (startIndex > myParagraphsNumber) {
- startIndex = myParagraphsNumber;
- }
- if (endIndex > myParagraphsNumber) {
- endIndex = myParagraphsNumber;
- }
- int index = startIndex;
- for (EntryIteratorImpl it = new EntryIteratorImpl(index); index < endIndex; it.reset(++index)) {
- int offset = 0;
- while (it.hasNext()) {
- it.next();
- if (it.getType() == ZLTextParagraph.Entry.TEXT) {
- char[] textData = it.getTextData();
- int textOffset = it.getTextOffset();
- int textLength = it.getTextLength();
- for (int pos = ZLSearchUtil.find(textData, textOffset, textLength, pattern); pos != -1;
- pos = ZLSearchUtil.find(textData, textOffset, textLength, pattern, pos + 1)) {
- myMarks.add(new ZLTextMark(index, offset + pos, pattern.getLength()));
- }
- offset += textLength;
- }
- }
- }
- }
-
- public ArrayList getMarks() {
- return myMarks;
- }
-
- protected void clear() {
- myParagraphsNumber = 0;
- myEntries.clear();
- myData.clear();
- myMarks.clear();
- myCurrentDataBlock = null;
- myBlockOffset = 0;
- }
-
- public void removeAllMarks() {
- myMarks.clear();
- }
-
- public void selectParagraph(int index) {
- if (index < myParagraphsNumber) {
- myMarks.add(new ZLTextMark(index, 0, getParagraphTextLength(index)));
- }
- }
-
- public int getParagraphTextLength(int index) {
- int textLength = 0;
- int dataIndex = myStartEntryIndices[index];
- int dataOffset = myStartEntryOffsets[index];
- char[] data = (char[])myData.get(dataIndex);
-
- for (int len = myParagraphLengths[index]; len > 0; --len) {
- if (dataOffset == myDataBlockSize) {
- data = (char[])myData.get(++dataIndex);
- dataOffset = 0;
- }
- byte type = (byte)data[dataOffset];
- if (type == 0) {
- data = (char[])myData.get(++dataIndex);
- dataOffset = 0;
- type = (byte)data[0];
- }
- ++dataOffset;
- switch (type) {
- case ZLTextParagraph.Entry.TEXT:
- int entryLength =
- ((int)data[dataOffset++] << 16) +
- (int)data[dataOffset++];
- dataOffset += entryLength;
- textLength += entryLength;
- break;
- case ZLTextParagraph.Entry.CONTROL:
- {
- if ((data[dataOffset++] & 0x0200) == 0x0200) {
- dataOffset += (short)data[dataOffset++];
- }
- break;
- }
- case ZLTextParagraph.Entry.IMAGE:
- case ZLTextParagraph.Entry.FIXED_HSPACE:
- ++dataOffset;
- break;
- case ZLTextParagraph.Entry.FORCED_CONTROL:
- //entry = myEntries.get((int)code);
- break;
- }
- }
-
- return textLength;
- }
-}
+package org.geometerplus.zlibrary.text.model.impl;
+
+import java.util.*;
+import org.geometerplus.zlibrary.core.util.*;
+
+import org.geometerplus.zlibrary.core.image.ZLImageMap;
+import org.geometerplus.zlibrary.core.util.ZLArrayUtils;
+import org.geometerplus.zlibrary.core.util.ZLTextBuffer;
+import org.geometerplus.zlibrary.text.model.ZLTextModel;
+import org.geometerplus.zlibrary.text.model.ZLTextParagraph;
+
+abstract class ZLTextModelImpl implements ZLTextModel {
+ private final ArrayList myEntries = new ArrayList();
+ final static int INITIAL_CAPACITY = 1024;
+ private int[] myStartEntryIndices = new int[INITIAL_CAPACITY];
+ private int[] myStartEntryOffsets = new int[INITIAL_CAPACITY];
+ private int[] myParagraphLengths = new int[INITIAL_CAPACITY];
+ int myParagraphsNumber;
+
+ private final ArrayList myData = new ArrayList(1024);
+ private final ArrayList myMarks = new ArrayList();
+ private final int myDataBlockSize;
+ private char[] myCurrentDataBlock;
+ private int myBlockOffset;
+
+ final class EntryIteratorImpl implements ZLTextParagraph.EntryIterator {
+ private int myCounter;
+ private int myLength;
+ private byte myType;
+
+ int myDataIndex;
+ int myDataOffset;
+
+ private char[] myTextData;
+ private int myTextOffset;
+ private int myTextLength;
+
+ private byte myControlKind;
+ private boolean myControlIsStart;
+ private boolean myControlIsHyperlink;
+ private String myHyperlinkControlLabel;
+
+ private ZLImageEntry myImageEntry;
+
+ private short myFixedHSpaceLength;
+
+ EntryIteratorImpl(int index) {
+ myLength = myParagraphLengths[index];
+ myDataIndex = myStartEntryIndices[index];
+ myDataOffset = myStartEntryOffsets[index];
+ }
+
+ void reset(int index) {
+ myCounter = 0;
+ myLength = myParagraphLengths[index];
+ myDataIndex = myStartEntryIndices[index];
+ myDataOffset = myStartEntryOffsets[index];
+ }
+
+ public byte getType() {
+ return myType;
+ }
+
+ public char[] getTextData() {
+ return myTextData;
+ }
+ public int getTextOffset() {
+ return myTextOffset;
+ }
+ public int getTextLength() {
+ return myTextLength;
+ }
+
+ public byte getControlKind() {
+ return myControlKind;
+ }
+ public boolean getControlIsStart() {
+ return myControlIsStart;
+ }
+ public boolean getControlIsHyperlink() {
+ return myControlIsHyperlink;
+ }
+ public String getHyperlinkControlLabel() {
+ return myHyperlinkControlLabel;
+ }
+
+ public ZLImageEntry getImageEntry() {
+ return myImageEntry;
+ }
+
+ public short getFixedHSpaceLength() {
+ return myFixedHSpaceLength;
+ }
+
+ public boolean hasNext() {
+ return myCounter < myLength;
+ }
+
+ public void next() {
+ int dataOffset = myDataOffset;
+ if (dataOffset == myDataBlockSize) {
+ ++myDataIndex;
+ dataOffset = 0;
+ }
+ char[] data = (char[])myData.get(myDataIndex);
+ byte type = (byte)data[dataOffset];
+ if (type == 0) {
+ data = (char[])myData.get(++myDataIndex);
+ dataOffset = 0;
+ type = (byte)data[0];
+ }
+ myType = type;
+ ++dataOffset;
+ switch (type) {
+ case ZLTextParagraph.Entry.TEXT:
+ myTextLength =
+ ((int)data[dataOffset++] << 16) +
+ (int)data[dataOffset++];
+ myTextData = data;
+ myTextOffset = dataOffset;
+ dataOffset += myTextLength;
+ break;
+ case ZLTextParagraph.Entry.CONTROL:
+ {
+ short kind = (short)data[dataOffset++];
+ myControlKind = (byte)kind;
+ myControlIsStart = (kind & 0x0100) == 0x0100;
+ if ((kind & 0x0200) == 0x0200) {
+ myControlIsHyperlink = true;
+ short labelLength = (short)data[dataOffset++];
+ myHyperlinkControlLabel = new String(data, dataOffset, labelLength);
+ dataOffset += labelLength;
+ } else {
+ myControlIsHyperlink = false;
+ }
+ break;
+ }
+ case ZLTextParagraph.Entry.IMAGE:
+ myImageEntry = (ZLImageEntry)myEntries.get((int)data[dataOffset++]);
+ break;
+ case ZLTextParagraph.Entry.FIXED_HSPACE:
+ myFixedHSpaceLength = (short)data[dataOffset++];
+ break;
+ case ZLTextParagraph.Entry.FORCED_CONTROL:
+ //entry = myEntries.get((int)code);
+ break;
+ }
+ ++myCounter;
+ myDataOffset = dataOffset;
+ }
+ }
+
+ ZLTextModelImpl(int dataBlockSize) {
+ myDataBlockSize = dataBlockSize;
+ }
+
+ void extend() {
+ final int size = myStartEntryIndices.length;
+ myStartEntryIndices = ZLArrayUtils.createCopy(myStartEntryIndices, size, size << 1);
+ myStartEntryOffsets = ZLArrayUtils.createCopy(myStartEntryOffsets, size, size << 1);
+ myParagraphLengths = ZLArrayUtils.createCopy(myParagraphLengths, size, size << 1);
+ }
+
+ final void createParagraph() {
+ final int index = myParagraphsNumber++;
+ int[] startEntryIndices = myStartEntryIndices;
+ if (index == startEntryIndices.length) {
+ extend();
+ startEntryIndices = myStartEntryIndices;
+ }
+ final int dataSize = myData.size();
+ startEntryIndices[index] = (dataSize == 0) ? 0 : (dataSize - 1);
+ myStartEntryOffsets[index] = myBlockOffset;
+ myParagraphLengths[index] = 0;
+ }
+
+ private final char[] getDataBlock(int minimumLength) {
+ char[] block = myCurrentDataBlock;
+ if ((block == null) || (minimumLength > block.length - myBlockOffset)) {
+ int blockSize = myDataBlockSize;
+ if (minimumLength > blockSize) {
+ blockSize = minimumLength;
+ }
+ block = new char[blockSize];
+ myData.add(block);
+ myCurrentDataBlock = block;
+ myBlockOffset = 0;
+ }
+ return block;
+ }
+
+ public final void addControl(byte textKind, boolean isStart) {
+ final char[] block = getDataBlock(2);
+ ++myParagraphLengths[myParagraphsNumber - 1];
+ block[myBlockOffset++] = (char)ZLTextParagraph.Entry.CONTROL;
+ short kind = textKind;
+ if (isStart) {
+ kind += 0x0100;
+ }
+ block[myBlockOffset++] = (char)kind;
+ }
+
+ public final void addText(char[] text) {
+ addText(text, 0, text.length);
+ }
+
+ public final void addText(ZLTextBuffer buffer) {
+ addText(buffer.getData(), 0, buffer.getLength());
+ }
+
+ public final void addText(char[] text, int offset, int length) {
+ char[] block = getDataBlock(3 + length);
+ ++myParagraphLengths[myParagraphsNumber - 1];
+ int blockOffset = myBlockOffset;
+ block[blockOffset++] = (char)ZLTextParagraph.Entry.TEXT;
+ block[blockOffset++] = (char)(length >> 16);
+ block[blockOffset++] = (char)length;
+ System.arraycopy(text, offset, block, blockOffset, length);
+ myBlockOffset = blockOffset + length;
+ }
+
+
+ public final void addControl(ZLTextForcedControlEntry entry) {
+ final char[] block = getDataBlock(3);
+ ++myParagraphLengths[myParagraphsNumber - 1];
+ block[myBlockOffset++] = (char)ZLTextParagraph.Entry.FORCED_CONTROL;
+ final int entryAddress = myEntries.size();
+ block[myBlockOffset++] = (char)(entryAddress >> 16);
+ block[myBlockOffset++] = (char)entryAddress;
+ myEntries.add(entry);
+ }
+
+
+ public final void addHyperlinkControl(byte textKind, String label) {
+ final short labelLength = (short)label.length();
+ final char[] block = getDataBlock(3 + labelLength);
+ ++myParagraphLengths[myParagraphsNumber - 1];
+ int blockOffset = myBlockOffset;
+ block[blockOffset++] = (char)ZLTextParagraph.Entry.CONTROL;
+ block[blockOffset++] = (char)(0x0300 + textKind);
+ block[blockOffset++] = (char)labelLength;
+ label.getChars(0, labelLength, block, blockOffset);
+ myBlockOffset = blockOffset + labelLength;
+ }
+
+ public final void addImage(String id, ZLImageMap imageMap, short vOffset) {
+ final char[] block = getDataBlock(2);
+ ++myParagraphLengths[myParagraphsNumber - 1];
+ final ArrayList entries = myEntries;
+ block[myBlockOffset++] = (char)ZLTextParagraph.Entry.IMAGE;
+ block[myBlockOffset++] = (char)entries.size();
+ entries.add(new ZLImageEntry(imageMap, id, vOffset));
+ }
+
+
+ public final void addFixedHSpace(short length) {
+ final char[] block = getDataBlock(2);
+ ++myParagraphLengths[myParagraphsNumber - 1];
+ block[myBlockOffset++] = (char)ZLTextParagraph.Entry.FIXED_HSPACE;
+ block[myBlockOffset++] = (char)length;
+ }
+
+ public ZLTextMark getFirstMark() {
+ return myMarks.size() == 0 ? new ZLTextMark() : (ZLTextMark) myMarks.get(0);
+ }
+
+ public ZLTextMark getLastMark() {
+ return myMarks.size() == 0 ? new ZLTextMark() : (ZLTextMark) myMarks.get(myMarks.size() - 1);
+ }
+
+ public ZLTextMark getNextMark(ZLTextMark position) {
+ ZLTextMark mark = null;
+ for (int i = 0; i < myMarks.size(); i++) {
+ ZLTextMark current = (ZLTextMark) myMarks.get(i);
+ if (current.compareTo(position) > 0) {
+ if ((mark == null) || (mark.compareTo(current) > 0)) {
+ mark = current;
+ }
+ }
+ }
+ return (mark != null) ? mark : new ZLTextMark();
+ }
+
+ public ZLTextMark getPreviousMark(ZLTextMark position) {
+ ZLTextMark mark = null;
+ for (int i = 0; i < myMarks.size(); i++) {
+ ZLTextMark current = (ZLTextMark) myMarks.get(i);
+ if (current.compareTo(position) < 0) {
+ if ((mark == null) || (mark.compareTo(current) < 0)) {
+ mark = current;
+ }
+ }
+ }
+ return (mark != null) ? mark : new ZLTextMark();
+ }
+
+ public final void search(final String text, int startIndex, int endIndex, boolean ignoreCase) {
+ ZLSearchPattern pattern = new ZLSearchPattern(text, ignoreCase);
+ myMarks.clear();
+ if (startIndex > myParagraphsNumber) {
+ startIndex = myParagraphsNumber;
+ }
+ if (endIndex > myParagraphsNumber) {
+ endIndex = myParagraphsNumber;
+ }
+ int index = startIndex;
+ for (EntryIteratorImpl it = new EntryIteratorImpl(index); index < endIndex; it.reset(++index)) {
+ int offset = 0;
+ while (it.hasNext()) {
+ it.next();
+ if (it.getType() == ZLTextParagraph.Entry.TEXT) {
+ char[] textData = it.getTextData();
+ int textOffset = it.getTextOffset();
+ int textLength = it.getTextLength();
+ for (int pos = ZLSearchUtil.find(textData, textOffset, textLength, pattern); pos != -1;
+ pos = ZLSearchUtil.find(textData, textOffset, textLength, pattern, pos + 1)) {
+ myMarks.add(new ZLTextMark(index, offset + pos, pattern.getLength()));
+ }
+ offset += textLength;
+ }
+ }
+ }
+ }
+
+ public ArrayList getMarks() {
+ return myMarks;
+ }
+
+ protected void clear() {
+ myParagraphsNumber = 0;
+ myEntries.clear();
+ myData.clear();
+ myMarks.clear();
+ myCurrentDataBlock = null;
+ myBlockOffset = 0;
+ }
+
+ public void removeAllMarks() {
+ myMarks.clear();
+ }
+
+ public void selectParagraph(int index) {
+ if (index < myParagraphsNumber) {
+ myMarks.add(new ZLTextMark(index, 0, getParagraphTextLength(index)));
+ }
+ }
+
+ public int getParagraphTextLength(int index) {
+ int textLength = 0;
+ int dataIndex = myStartEntryIndices[index];
+ int dataOffset = myStartEntryOffsets[index];
+ char[] data = (char[])myData.get(dataIndex);
+
+ for (int len = myParagraphLengths[index]; len > 0; --len) {
+ if (dataOffset == myDataBlockSize) {
+ data = (char[])myData.get(++dataIndex);
+ dataOffset = 0;
+ }
+ byte type = (byte)data[dataOffset];
+ if (type == 0) {
+ data = (char[])myData.get(++dataIndex);
+ dataOffset = 0;
+ type = (byte)data[0];
+ }
+ ++dataOffset;
+ switch (type) {
+ case ZLTextParagraph.Entry.TEXT:
+ int entryLength =
+ ((int)data[dataOffset++] << 16) +
+ (int)data[dataOffset++];
+ dataOffset += entryLength;
+ textLength += entryLength;
+ break;
+ case ZLTextParagraph.Entry.CONTROL:
+ {
+ if ((data[dataOffset++] & 0x0200) == 0x0200) {
+ dataOffset += (short)data[dataOffset++];
+ }
+ break;
+ }
+ case ZLTextParagraph.Entry.IMAGE:
+ case ZLTextParagraph.Entry.FIXED_HSPACE:
+ ++dataOffset;
+ break;
+ case ZLTextParagraph.Entry.FORCED_CONTROL:
+ //entry = myEntries.get((int)code);
+ break;
+ }
+ }
+
+ return textLength;
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/text/model/impl/ZLTextParagraphImpl.java b/src/org/geometerplus/zlibrary/text/model/impl/ZLTextParagraphImpl.java
index e04f0378f..5e7ab5f1c 100644
--- a/src/org/geometerplus/zlibrary/text/model/impl/ZLTextParagraphImpl.java
+++ b/src/org/geometerplus/zlibrary/text/model/impl/ZLTextParagraphImpl.java
@@ -17,28 +17,28 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.model.impl;
-
-import org.geometerplus.zlibrary.text.model.ZLTextParagraph;
-
-class ZLTextParagraphImpl implements ZLTextParagraph {
- private final ZLTextModelImpl myModel;
- private final int myIndex;
-
- ZLTextParagraphImpl(ZLTextModelImpl model, int index) {
- myModel = model;
- myIndex = index;
- }
-
- ZLTextParagraphImpl(ZLTextModelImpl model) {
- this(model, model.getParagraphsNumber());
- }
-
- public EntryIterator iterator() {
- return myModel.new EntryIteratorImpl(myIndex);
- }
-
- public byte getKind() {
- return Kind.TEXT_PARAGRAPH;
- }
-}
+package org.geometerplus.zlibrary.text.model.impl;
+
+import org.geometerplus.zlibrary.text.model.ZLTextParagraph;
+
+class ZLTextParagraphImpl implements ZLTextParagraph {
+ private final ZLTextModelImpl myModel;
+ private final int myIndex;
+
+ ZLTextParagraphImpl(ZLTextModelImpl model, int index) {
+ myModel = model;
+ myIndex = index;
+ }
+
+ ZLTextParagraphImpl(ZLTextModelImpl model) {
+ this(model, model.getParagraphsNumber());
+ }
+
+ public EntryIterator iterator() {
+ return myModel.new EntryIteratorImpl(myIndex);
+ }
+
+ public byte getKind() {
+ return Kind.TEXT_PARAGRAPH;
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/text/model/impl/ZLTextPlainModelImpl.java b/src/org/geometerplus/zlibrary/text/model/impl/ZLTextPlainModelImpl.java
index 13f78a2e5..d92728138 100644
--- a/src/org/geometerplus/zlibrary/text/model/impl/ZLTextPlainModelImpl.java
+++ b/src/org/geometerplus/zlibrary/text/model/impl/ZLTextPlainModelImpl.java
@@ -17,39 +17,39 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.model.impl;
-
-import org.geometerplus.zlibrary.core.util.ZLArrayUtils;
-import org.geometerplus.zlibrary.text.model.ZLTextParagraph;
-import org.geometerplus.zlibrary.text.model.ZLTextPlainModel;
-
-public final class ZLTextPlainModelImpl extends ZLTextModelImpl implements ZLTextPlainModel {
- private byte[] myParagraphKinds = new byte[INITIAL_CAPACITY];
-
- public ZLTextPlainModelImpl(int dataBlockSize) {
- super(dataBlockSize);
- }
-
- public final int getParagraphsNumber() {
- return myParagraphsNumber;
- }
-
- public final ZLTextParagraph getParagraph(int index) {
- final byte kind = myParagraphKinds[index];
- return (kind == ZLTextParagraph.Kind.TEXT_PARAGRAPH) ?
- new ZLTextParagraphImpl(this, index) :
- new ZLTextSpecialParagraphImpl(kind, this, index);
- }
-
- void extend() {
- super.extend();
- final int size = myParagraphKinds.length;
- myParagraphKinds = ZLArrayUtils.createCopy(myParagraphKinds, size, size << 1);
- }
-
- public final void createParagraph(byte kind) {
- final int index = myParagraphsNumber;
- createParagraph();
- myParagraphKinds[index] = kind;
- }
-}
+package org.geometerplus.zlibrary.text.model.impl;
+
+import org.geometerplus.zlibrary.core.util.ZLArrayUtils;
+import org.geometerplus.zlibrary.text.model.ZLTextParagraph;
+import org.geometerplus.zlibrary.text.model.ZLTextPlainModel;
+
+public final class ZLTextPlainModelImpl extends ZLTextModelImpl implements ZLTextPlainModel {
+ private byte[] myParagraphKinds = new byte[INITIAL_CAPACITY];
+
+ public ZLTextPlainModelImpl(int dataBlockSize) {
+ super(dataBlockSize);
+ }
+
+ public final int getParagraphsNumber() {
+ return myParagraphsNumber;
+ }
+
+ public final ZLTextParagraph getParagraph(int index) {
+ final byte kind = myParagraphKinds[index];
+ return (kind == ZLTextParagraph.Kind.TEXT_PARAGRAPH) ?
+ new ZLTextParagraphImpl(this, index) :
+ new ZLTextSpecialParagraphImpl(kind, this, index);
+ }
+
+ void extend() {
+ super.extend();
+ final int size = myParagraphKinds.length;
+ myParagraphKinds = ZLArrayUtils.createCopy(myParagraphKinds, size, size << 1);
+ }
+
+ public final void createParagraph(byte kind) {
+ final int index = myParagraphsNumber;
+ createParagraph();
+ myParagraphKinds[index] = kind;
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/text/model/impl/ZLTextSpecialParagraphImpl.java b/src/org/geometerplus/zlibrary/text/model/impl/ZLTextSpecialParagraphImpl.java
index 35bc25444..3e59b39fc 100644
--- a/src/org/geometerplus/zlibrary/text/model/impl/ZLTextSpecialParagraphImpl.java
+++ b/src/org/geometerplus/zlibrary/text/model/impl/ZLTextSpecialParagraphImpl.java
@@ -17,22 +17,22 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.model.impl;
-
-class ZLTextSpecialParagraphImpl extends ZLTextParagraphImpl {
- private final byte myKind;
-
- ZLTextSpecialParagraphImpl(byte kind, ZLTextModelImpl model) {
- super(model);
- myKind = kind;
- }
-
- ZLTextSpecialParagraphImpl(byte kind, ZLTextModelImpl model, int offset) {
- super(model, offset);
- myKind = kind;
- }
-
- public byte getKind() {
- return myKind;
- }
-}
+package org.geometerplus.zlibrary.text.model.impl;
+
+class ZLTextSpecialParagraphImpl extends ZLTextParagraphImpl {
+ private final byte myKind;
+
+ ZLTextSpecialParagraphImpl(byte kind, ZLTextModelImpl model) {
+ super(model);
+ myKind = kind;
+ }
+
+ ZLTextSpecialParagraphImpl(byte kind, ZLTextModelImpl model, int offset) {
+ super(model, offset);
+ myKind = kind;
+ }
+
+ public byte getKind() {
+ return myKind;
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/text/model/impl/ZLTextTreeModelImpl.java b/src/org/geometerplus/zlibrary/text/model/impl/ZLTextTreeModelImpl.java
index 23d62486d..4ba65c596 100644
--- a/src/org/geometerplus/zlibrary/text/model/impl/ZLTextTreeModelImpl.java
+++ b/src/org/geometerplus/zlibrary/text/model/impl/ZLTextTreeModelImpl.java
@@ -17,63 +17,61 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.model.impl;
-
-import java.util.*;
-import org.geometerplus.zlibrary.core.util.*;
-
-import org.geometerplus.zlibrary.text.model.ZLTextParagraph;
-import org.geometerplus.zlibrary.text.model.ZLTextTreeModel;
-import org.geometerplus.zlibrary.text.model.ZLTextTreeParagraph;
-
-public class ZLTextTreeModelImpl extends ZLTextModelImpl implements ZLTextTreeModel {
- private final ArrayList myParagraphs = new ArrayList();
- private final ZLTextTreeParagraphImpl myRoot;
-
- public ZLTextTreeModelImpl() {
- super(4096);
- myRoot = new ZLTextTreeParagraphImpl(null, this);
- myRoot.open(true);
- }
-
- public final int getParagraphsNumber() {
- return myParagraphs.size();
- }
-
- public final ZLTextParagraph getParagraph(int index) {
- final ArrayList paragraphs = myParagraphs;
- if (index >= paragraphs.size()) {
- index = paragraphs.size() - 1;
- }
- return (ZLTextParagraph)paragraphs.get(index);
- }
-
- public final ZLTextTreeParagraph getTreeParagraph(int index) {
- final ArrayList paragraphs = myParagraphs;
- if (index >= paragraphs.size()) {
- index = paragraphs.size() - 1;
- }
- return (ZLTextTreeParagraph)paragraphs.get(index);
- }
-
- public final ZLTextTreeParagraph createParagraph(ZLTextTreeParagraph parent) {
- createParagraph();
- if (parent == null) {
- parent = myRoot;
- }
- ZLTextTreeParagraphImpl tp = new ZLTextTreeParagraphImpl(parent, this);
- myParagraphs.add(tp);
- return tp;
- }
-
- public final void removeParagraph(int index) {
- ZLTextTreeParagraph p = getTreeParagraph(index);
- p.removeFromParent();
- myParagraphs.remove(index);
- }
-
- public final void clear() {
- super.clear();
- myParagraphs.clear();
- }
-}
+package org.geometerplus.zlibrary.text.model.impl;
+
+import java.util.*;
+import org.geometerplus.zlibrary.core.util.*;
+
+import org.geometerplus.zlibrary.text.model.*;
+
+public class ZLTextTreeModelImpl extends ZLTextModelImpl implements ZLTextTreeModel {
+ private final ArrayList myParagraphs = new ArrayList();
+ private final ZLTextTreeParagraphImpl myRoot;
+
+ public ZLTextTreeModelImpl() {
+ super(4096);
+ myRoot = new ZLTextTreeParagraphImpl(null, this);
+ myRoot.open(true);
+ }
+
+ public final int getParagraphsNumber() {
+ return myParagraphs.size();
+ }
+
+ public final ZLTextParagraph getParagraph(int index) {
+ final ArrayList paragraphs = myParagraphs;
+ if (index >= paragraphs.size()) {
+ index = paragraphs.size() - 1;
+ }
+ return (ZLTextParagraph)paragraphs.get(index);
+ }
+
+ public final ZLTextTreeParagraph getTreeParagraph(int index) {
+ final ArrayList paragraphs = myParagraphs;
+ if (index >= paragraphs.size()) {
+ index = paragraphs.size() - 1;
+ }
+ return (ZLTextTreeParagraph)paragraphs.get(index);
+ }
+
+ public final ZLTextTreeParagraph createParagraph(ZLTextTreeParagraph parent) {
+ createParagraph();
+ if (parent == null) {
+ parent = myRoot;
+ }
+ ZLTextTreeParagraphImpl tp = new ZLTextTreeParagraphImpl(parent, this);
+ myParagraphs.add(tp);
+ return tp;
+ }
+
+ public final void removeParagraph(int index) {
+ ZLTextTreeParagraph p = getTreeParagraph(index);
+ p.removeFromParent();
+ myParagraphs.remove(index);
+ }
+
+ public final void clear() {
+ super.clear();
+ myParagraphs.clear();
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/text/model/impl/ZLTextTreeParagraphImpl.java b/src/org/geometerplus/zlibrary/text/model/impl/ZLTextTreeParagraphImpl.java
index 83842c72a..f76e2825f 100644
--- a/src/org/geometerplus/zlibrary/text/model/impl/ZLTextTreeParagraphImpl.java
+++ b/src/org/geometerplus/zlibrary/text/model/impl/ZLTextTreeParagraphImpl.java
@@ -17,93 +17,93 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.model.impl;
-
-import java.util.*;
-import org.geometerplus.zlibrary.core.util.*;
-import org.geometerplus.zlibrary.text.model.ZLTextTreeParagraph;
-
-final class ZLTextTreeParagraphImpl extends ZLTextParagraphImpl implements ZLTextTreeParagraph {
- private boolean myIsOpen;
- private int myDepth;
- private ZLTextTreeParagraphImpl myParent;
- private ArrayList myChildren = null;
-
- ZLTextTreeParagraphImpl(ZLTextTreeParagraph parent, ZLTextModelImpl model) {
- super(model);
- myParent = (ZLTextTreeParagraphImpl)parent;
- if (parent != null) {
- myParent.addChild(this);
- myDepth = parent.getDepth() + 1;
- }
- }
-
- public byte getKind() {
- return Kind.TREE_PARAGRAPH;
- }
-
- public boolean isOpen() {
- return myIsOpen;
- }
-
- public void open(boolean o) {
- myIsOpen = o;
- }
-
- public void openTree() {
- ZLTextTreeParagraph parent = myParent;
- while (parent != null) {
- parent.open(true);
- parent = parent.getParent();
- }
- }
-
- public int getDepth() {
- return myDepth;
- }
-
- public ZLTextTreeParagraph getParent() {
- return myParent;
- }
-
- public boolean hasChildren() {
- return (myChildren != null) && !myChildren.isEmpty();
- }
-
- public boolean isLastChild() {
- if (myParent == null) {
- return false;
- }
- ArrayList siblings = myParent.myChildren;
- return this == siblings.get(siblings.size() - 1);
- }
-
- public int getFullSize() {
- int size = 1;
- final ArrayList children = myChildren;
- if (children != null) {
- final int length = children.size();
- for (int i = 0; i < length; ++i) {
- size += ((ZLTextTreeParagraph)children.get(i)).getFullSize();
- }
- }
- return size;
- }
-
- public void removeFromParent() {
- if (myParent != null) {
- myParent.myChildren.remove(this);
- }
- }
-
- public ArrayList getChildren() {
- return myChildren;
- }
-
- private void addChild(ZLTextTreeParagraph child) {
- if (myChildren == null) {
- myChildren = new ArrayList();
- }
- myChildren.add(child);
- }
-}
+package org.geometerplus.zlibrary.text.model.impl;
+
+import java.util.*;
+import org.geometerplus.zlibrary.core.util.*;
+import org.geometerplus.zlibrary.text.model.ZLTextTreeParagraph;
+
+final class ZLTextTreeParagraphImpl extends ZLTextParagraphImpl implements ZLTextTreeParagraph {
+ private boolean myIsOpen;
+ private int myDepth;
+ private ZLTextTreeParagraphImpl myParent;
+ private ArrayList myChildren = null;
+
+ ZLTextTreeParagraphImpl(ZLTextTreeParagraph parent, ZLTextModelImpl model) {
+ super(model);
+ myParent = (ZLTextTreeParagraphImpl)parent;
+ if (parent != null) {
+ myParent.addChild(this);
+ myDepth = parent.getDepth() + 1;
+ }
+ }
+
+ public byte getKind() {
+ return Kind.TREE_PARAGRAPH;
+ }
+
+ public boolean isOpen() {
+ return myIsOpen;
+ }
+
+ public void open(boolean o) {
+ myIsOpen = o;
+ }
+
+ public void openTree() {
+ ZLTextTreeParagraph parent = myParent;
+ while (parent != null) {
+ parent.open(true);
+ parent = parent.getParent();
+ }
+ }
+
+ public int getDepth() {
+ return myDepth;
+ }
+
+ public ZLTextTreeParagraph getParent() {
+ return myParent;
+ }
+
+ public boolean hasChildren() {
+ return (myChildren != null) && !myChildren.isEmpty();
+ }
+
+ public int childNumber() {
+ return (myChildren != null) ? myChildren.size() : 0;
+ }
+
+ public boolean isLastChild() {
+ if (myParent == null) {
+ return false;
+ }
+ ArrayList siblings = myParent.myChildren;
+ return this == siblings.get(siblings.size() - 1);
+ }
+
+ public int getFullSize() {
+ int size = 1;
+ final ArrayList children = myChildren;
+ if (children != null) {
+ final int length = children.size();
+ for (int i = 0; i < length; ++i) {
+ size += ((ZLTextTreeParagraph)children.get(i)).getFullSize();
+ }
+ }
+ return size;
+ }
+
+ public void removeFromParent() {
+ if (myParent != null) {
+ myParent.myChildren.remove(this);
+ }
+ }
+
+ private void addChild(ZLTextTreeParagraph child) {
+ if (myChildren == null) {
+ myChildren = new ArrayList();
+ }
+ myChildren.add(child);
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/text/view/ZLTextAlignmentOptionEntry.java b/src/org/geometerplus/zlibrary/text/view/ZLTextAlignmentOptionEntry.java
index f82001f1d..0a15a5dd8 100644
--- a/src/org/geometerplus/zlibrary/text/view/ZLTextAlignmentOptionEntry.java
+++ b/src/org/geometerplus/zlibrary/text/view/ZLTextAlignmentOptionEntry.java
@@ -17,74 +17,67 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.view;
-
-import java.util.ArrayList;
-
-import org.geometerplus.zlibrary.core.dialogs.ZLComboOptionEntry;
-import org.geometerplus.zlibrary.core.options.ZLIntegerOption;
-import org.geometerplus.zlibrary.core.resources.ZLResource;
-
-public class ZLTextAlignmentOptionEntry extends ZLComboOptionEntry {
- private static final String KEY_LEFT = "left";
- private static final String KEY_RIGHT = "right";
- private static final String KEY_CENTER = "center";
- private static final String KEY_JUSTIFY = "justify";
- private static final String KEY_UNCHANGED = "unchanged";
-
- private static final ArrayList/**/ ourValues4 = new ArrayList();
- private static final ArrayList/**/ ourValues5 = new ArrayList();
- private final ZLResource myResource;
- private ZLIntegerOption myOption;
- private boolean myAllowUndefined;
-
- private ArrayList values4() {
- if (ourValues4.size() == 0) {
- ourValues4.add(myResource.getResource(KEY_LEFT).getValue());
- ourValues4.add(myResource.getResource(KEY_RIGHT).getValue());
- ourValues4.add(myResource.getResource(KEY_CENTER).getValue());
- ourValues4.add(myResource.getResource(KEY_JUSTIFY).getValue());
- }
- return ourValues4;
- }
-
- private ArrayList values5() {
- if (ourValues5.size() == 0) {
- ourValues5.add(myResource.getResource(KEY_UNCHANGED).getValue());
- ourValues5.add(myResource.getResource(KEY_LEFT).getValue());
- ourValues5.add(myResource.getResource(KEY_RIGHT).getValue());
- ourValues5.add(myResource.getResource(KEY_CENTER).getValue());
- ourValues5.add(myResource.getResource(KEY_JUSTIFY).getValue());
- }
- return ourValues5;
- }
-
- public ZLTextAlignmentOptionEntry(ZLIntegerOption option, final ZLResource resource,
- boolean allowUndefined) {
- myAllowUndefined = allowUndefined;
- myOption = option;
- myResource = resource;
- }
-
- public ArrayList getValues() {
- return myAllowUndefined ? values5() : values4();
- }
-
- public String initialValue() {
- int value = myOption.getValue();
- if (value >= values5().size()) {
- value = 0;
- }
- return (String) values5().get(value);
- }
-
- public void onAccept(String value) {
- for (int i = 0; i < values5().size(); ++i) {
- if (values5().get(i).equals(value)) {
- myOption.setValue(i);
- break;
- }
- }
- }
-
-}
+package org.geometerplus.zlibrary.text.view;
+
+import java.util.ArrayList;
+
+import org.geometerplus.zlibrary.core.dialogs.ZLComboOptionEntry;
+import org.geometerplus.zlibrary.core.options.ZLIntegerOption;
+import org.geometerplus.zlibrary.core.resources.ZLResource;
+
+public class ZLTextAlignmentOptionEntry extends ZLComboOptionEntry {
+ private static final String KEY_LEFT = "left";
+ private static final String KEY_RIGHT = "right";
+ private static final String KEY_CENTER = "center";
+ private static final String KEY_JUSTIFY = "justify";
+ private static final String KEY_UNCHANGED = "unchanged";
+
+ private static final ArrayList ourValues4 = new ArrayList();
+ private static final ArrayList ourValues5 = new ArrayList();
+
+ private final ZLResource myResource;
+ private final ZLIntegerOption myOption;
+ private final boolean myAllowUndefined;
+
+ public ZLTextAlignmentOptionEntry(ZLIntegerOption option, final ZLResource resource, boolean allowUndefined) {
+ myAllowUndefined = allowUndefined;
+ myOption = option;
+ myResource = resource;
+ if (ourValues5.isEmpty()) {
+ ourValues5.add(resource.getResource(KEY_UNCHANGED).getValue());
+ String value = resource.getResource(KEY_LEFT).getValue();
+ ourValues5.add(value);
+ ourValues4.add(value);
+ value = resource.getResource(KEY_RIGHT).getValue();
+ ourValues5.add(value);
+ ourValues4.add(value);
+ value = resource.getResource(KEY_CENTER).getValue();
+ ourValues5.add(value);
+ ourValues4.add(value);
+ value = resource.getResource(KEY_JUSTIFY).getValue();
+ ourValues5.add(value);
+ ourValues4.add(value);
+ }
+ }
+
+ public ArrayList getValues() {
+ return myAllowUndefined ? ourValues5 : ourValues4;
+ }
+
+ public String initialValue() {
+ int value = myOption.getValue();
+ if ((value < 0) || (value >= 5)) {
+ value = 0;
+ }
+ return (String)ourValues5.get(value);
+ }
+
+ public void onAccept(String value) {
+ for (int i = 0; i < 5; ++i) {
+ if (ourValues5.get(i).equals(value)) {
+ myOption.setValue(i);
+ break;
+ }
+ }
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/text/view/ZLTextFontFamilyWithBaseOptionEntry.java b/src/org/geometerplus/zlibrary/text/view/ZLTextFontFamilyWithBaseOptionEntry.java
index d56deac8c..d7cac5b04 100644
--- a/src/org/geometerplus/zlibrary/text/view/ZLTextFontFamilyWithBaseOptionEntry.java
+++ b/src/org/geometerplus/zlibrary/text/view/ZLTextFontFamilyWithBaseOptionEntry.java
@@ -17,40 +17,40 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.view;
-
-import java.util.ArrayList;
-
-import org.geometerplus.zlibrary.core.optionEntries.ZLFontFamilyOptionEntry;
-import org.geometerplus.zlibrary.core.options.ZLStringOption;
-import org.geometerplus.zlibrary.core.resources.ZLResource;
-import org.geometerplus.zlibrary.core.view.ZLPaintContext;
-
-public class ZLTextFontFamilyWithBaseOptionEntry extends ZLFontFamilyOptionEntry {
- private static final String KEY_UNCHANGED = "unchanged";
- private static final ArrayList /**/ ourAllFamilies = new ArrayList();
- private final ZLResource myResource;
-
- public ZLTextFontFamilyWithBaseOptionEntry(ZLStringOption option, ZLPaintContext context, ZLResource resource) {
- super(option, context);
- myResource = resource;
- }
-
- public ArrayList getValues() {
- if (ourAllFamilies.size() == 0) {
- final ArrayList families = super.getValues();
- ourAllFamilies.add(myResource.getResource(KEY_UNCHANGED).getValue());
- ourAllFamilies.addAll(families);
- }
- return ourAllFamilies;
- }
-
- public String initialValue() {
- final String value = super.initialValue();
- return (value == null || value.equals("")) ? (String) (getValues().get(0)) : value;
- }
-
- public void onAccept(String value) {
- super.onAccept((value.equals(getValues().get(0))) ? "" : value);
- }
-}
+package org.geometerplus.zlibrary.text.view;
+
+import java.util.ArrayList;
+
+import org.geometerplus.zlibrary.core.optionEntries.ZLFontFamilyOptionEntry;
+import org.geometerplus.zlibrary.core.options.ZLStringOption;
+import org.geometerplus.zlibrary.core.resources.ZLResource;
+import org.geometerplus.zlibrary.core.view.ZLPaintContext;
+
+public class ZLTextFontFamilyWithBaseOptionEntry extends ZLFontFamilyOptionEntry {
+ private static final ArrayList ourAllFamilies = new ArrayList();
+
+ private final ZLResource myResource;
+
+ public ZLTextFontFamilyWithBaseOptionEntry(ZLStringOption option, ZLPaintContext context, ZLResource resource) {
+ super(option, context);
+ myResource = resource;
+ }
+
+ public ArrayList getValues() {
+ if (ourAllFamilies.size() == 0) {
+ final ArrayList families = super.getValues();
+ ourAllFamilies.add(myResource.getResource("unchanged").getValue());
+ ourAllFamilies.addAll(families);
+ }
+ return ourAllFamilies;
+ }
+
+ public String initialValue() {
+ final String value = super.initialValue();
+ return ((value == null) || (value.length() == 0)) ? (String)(getValues().get(0)) : value;
+ }
+
+ public void onAccept(String value) {
+ super.onAccept((value.equals(getValues().get(0))) ? "" : value);
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/text/view/ZLTextLineSpaceOptionEntry.java b/src/org/geometerplus/zlibrary/text/view/ZLTextLineSpaceOptionEntry.java
index fa07a4be0..f5e7a61d7 100644
--- a/src/org/geometerplus/zlibrary/text/view/ZLTextLineSpaceOptionEntry.java
+++ b/src/org/geometerplus/zlibrary/text/view/ZLTextLineSpaceOptionEntry.java
@@ -17,62 +17,61 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.view;
-
-import java.util.ArrayList;
-import org.geometerplus.zlibrary.core.util.*;
-
-import org.geometerplus.zlibrary.core.dialogs.ZLComboOptionEntry;
-import org.geometerplus.zlibrary.core.options.ZLIntegerOption;
-import org.geometerplus.zlibrary.core.resources.ZLResource;
-
-
-public class ZLTextLineSpaceOptionEntry extends ZLComboOptionEntry {
- private static final String KEY_UNCHANGED = "unchanged";
- private static final ArrayList/**/ ourAllValues = new ArrayList();
- private static final ArrayList/**/ ourAllValuesPlusBase = new ArrayList();
- private final ZLResource myResource;
- private ZLIntegerOption myOption;
- private boolean myAllowBase;
-
- public ZLTextLineSpaceOptionEntry(ZLIntegerOption option, final ZLResource resource,
- boolean allowBase) {
- myAllowBase = allowBase;
- myResource = resource;
- myOption = option;
- if (ourAllValuesPlusBase.size() == 0) {
- for (int i = 5; i <= 20; ++i) {
- ourAllValues.add("" + (char)(i / 10 + '0') + '.' + (char)(i % 10 + '0'));
- }
- ourAllValuesPlusBase.add(myResource.getResource(KEY_UNCHANGED).getValue());
- ourAllValuesPlusBase.addAll(ourAllValues);
- }
- }
-
- public ArrayList getValues() {
- return myAllowBase ? ourAllValuesPlusBase : ourAllValues;
- }
-
- public String initialValue() {
- final int value = myOption.getValue();
- if (value == -1) {
- return (String) ourAllValuesPlusBase.get(0);
- }
- final int index = Math.max(0, Math.min(15, (value + 5) / 10 - 5));
- return (String) ourAllValues.get(index);
- }
-
- public void onAccept(String value) {
- if (ourAllValuesPlusBase.get(0).equals(value)) {
- myOption.setValue(-1);
- } else {
- for (int i = 5; i <= 20; ++i) {
- if (ourAllValues.get(i - 5).equals(value)) {
- myOption.setValue(10 * i);
- break;
- }
- }
- }
- }
-
-}
+package org.geometerplus.zlibrary.text.view;
+
+import java.util.ArrayList;
+import org.geometerplus.zlibrary.core.util.*;
+
+import org.geometerplus.zlibrary.core.dialogs.ZLComboOptionEntry;
+import org.geometerplus.zlibrary.core.options.ZLIntegerOption;
+import org.geometerplus.zlibrary.core.resources.ZLResource;
+
+
+public class ZLTextLineSpaceOptionEntry extends ZLComboOptionEntry {
+ private static final String KEY_UNCHANGED = "unchanged";
+ private static final ArrayList ourAllValues = new ArrayList();
+ private static final ArrayList ourAllValuesPlusBase = new ArrayList();
+
+ private final ZLIntegerOption myOption;
+ private final ZLResource myResource;
+ private final boolean myAllowBase;
+
+ public ZLTextLineSpaceOptionEntry(ZLIntegerOption option, final ZLResource resource, boolean allowBase) {
+ myOption = option;
+ myResource = resource;
+ myAllowBase = allowBase;
+ if (ourAllValuesPlusBase.size() == 0) {
+ for (int i = 5; i <= 20; ++i) {
+ ourAllValues.add("" + (char)(i / 10 + '0') + '.' + (char)(i % 10 + '0'));
+ }
+ ourAllValuesPlusBase.add(myResource.getResource(KEY_UNCHANGED).getValue());
+ ourAllValuesPlusBase.addAll(ourAllValues);
+ }
+ }
+
+ public ArrayList getValues() {
+ return myAllowBase ? ourAllValuesPlusBase : ourAllValues;
+ }
+
+ public String initialValue() {
+ final int value = myOption.getValue();
+ if (value == -1) {
+ return (String) ourAllValuesPlusBase.get(0);
+ }
+ final int index = Math.max(0, Math.min(15, (value + 5) / 10 - 5));
+ return (String) ourAllValues.get(index);
+ }
+
+ public void onAccept(String value) {
+ if (ourAllValuesPlusBase.get(0).equals(value)) {
+ myOption.setValue(-1);
+ } else {
+ for (int i = 5; i <= 20; ++i) {
+ if (ourAllValues.get(i - 5).equals(value)) {
+ myOption.setValue(10 * i);
+ break;
+ }
+ }
+ }
+ }
+}
diff --git a/src/org/geometerplus/zlibrary/text/view/ZLTextView.java b/src/org/geometerplus/zlibrary/text/view/ZLTextView.java
index 42c381b65..670a380d6 100644
--- a/src/org/geometerplus/zlibrary/text/view/ZLTextView.java
+++ b/src/org/geometerplus/zlibrary/text/view/ZLTextView.java
@@ -41,7 +41,7 @@ public abstract class ZLTextView extends ZLView {
public abstract void scrollPage(boolean forward, int scrollingMode, int value);
- public abstract void search(final String text, boolean ignoreCase, boolean wholeText, boolean backward, boolean thisSectionOnly);
+ public abstract void search(String text, boolean ignoreCase, boolean wholeText, boolean backward, boolean thisSectionOnly);
public abstract boolean canFindNext();
public abstract void findNext();
diff --git a/src/org/geometerplus/zlibrary/text/view/impl/ZLTextParagraphCursor.java b/src/org/geometerplus/zlibrary/text/view/impl/ZLTextParagraphCursor.java
index 8272ceb86..fdac77a6b 100644
--- a/src/org/geometerplus/zlibrary/text/view/impl/ZLTextParagraphCursor.java
+++ b/src/org/geometerplus/zlibrary/text/view/impl/ZLTextParagraphCursor.java
@@ -73,7 +73,7 @@ public abstract class ZLTextParagraphCursor {
if (image != null) {
ZLImageData data = ZLImageManager.getInstance().getImageData(image);
if (data != null) {
- elements.add(new ZLTextImageElement(imageEntry.getId(), data));
+ elements.add(new ZLTextImageElement(imageEntry.Id, data));
}
}
break;
diff --git a/src/org/geometerplus/zlibrary/text/view/impl/ZLTextSelectionModel.java b/src/org/geometerplus/zlibrary/text/view/impl/ZLTextSelectionModel.java
index a9f05c602..d7784983f 100644
--- a/src/org/geometerplus/zlibrary/text/view/impl/ZLTextSelectionModel.java
+++ b/src/org/geometerplus/zlibrary/text/view/impl/ZLTextSelectionModel.java
@@ -22,6 +22,21 @@ package org.geometerplus.zlibrary.text.view.impl;
import org.geometerplus.zlibrary.core.application.ZLApplication;
class ZLTextSelectionModel {
+ private final static class BoundElement {
+ boolean Exists;
+ int ParagraphNumber;
+ int TextElementNumber;
+ int CharNumber;
+
+ //bool operator == (const BoundElement &element) const;
+ //bool operator != (const BoundElement &element) const;
+ };
+
+ private final static class Bound {
+ final BoundElement Before = new BoundElement();
+ final BoundElement After = new BoundElement();
+ };
+
private final ZLTextViewImpl myView;
private final ZLApplication myApplication;
@@ -30,13 +45,26 @@ class ZLTextSelectionModel {
private boolean myDoUpdate;
private boolean myTextIsUpToDate = true;
+ private final Bound myFirstBound = new Bound();
+ private final Bound mySecondBound = new Bound();
+
ZLTextSelectionModel(ZLTextViewImpl view, ZLApplication application) {
myView = view;
myApplication = application;
}
void activate(int x, int y) {
- // TODO: implement
+ if (myView.myTextElementMap.isEmpty()) {
+ return;
+ }
+
+ myIsActive = true;
+ myIsEmpty = false;
+ //setBound(myFirstBound, x, y);
+ //mySecondBound = myFirstBound;
+ //myCursor.clear();
+ //myText.erase();
+ myTextIsUpToDate = true;
}
boolean extendTo(int x, int y) {
@@ -66,13 +94,7 @@ class ZLTextSelectionModel {
return false;
}
- class BoundElement {
- boolean Exists;
- int ParagraphNumber;
- int TextElementNumber;
- int CharNumber;
-
- //bool operator == (const BoundElement &element) const;
- //bool operator != (const BoundElement &element) const;
- };
+ private void setBound(Bound bound, int x, int y) {
+ // TODO: implement
+ }
}
diff --git a/src/org/geometerplus/zlibrary/text/view/impl/ZLTextViewImpl.java b/src/org/geometerplus/zlibrary/text/view/impl/ZLTextViewImpl.java
index d2cdc0c0d..377bb57a0 100644
--- a/src/org/geometerplus/zlibrary/text/view/impl/ZLTextViewImpl.java
+++ b/src/org/geometerplus/zlibrary/text/view/impl/ZLTextViewImpl.java
@@ -94,7 +94,7 @@ public abstract class ZLTextViewImpl extends ZLTextView {
private boolean myTreeStateIsFrozen = false;
- private final ZLTextRectangularAreaVector myTextElementMap
+ final ZLTextRectangularAreaVector myTextElementMap
= new ZLTextRectangularAreaVector();
private final ZLTextRectangularAreaVector myTreeNodeMap
= new ZLTextRectangularAreaVector();
@@ -511,7 +511,7 @@ public abstract class ZLTextViewImpl extends ZLTextView {
for (int wordNumber = info.RealStartWordNumber; wordNumber != endWordNumber; ++wordNumber, charNumber = 0) {
final ZLTextElement element = paragraph.getElement(wordNumber);
if ((element instanceof ZLTextWord) || (element instanceof ZLTextImageElement)) {
- ZLTextElementArea area = (ZLTextElementArea)myTextElementMap.getArea(index++);
+ final ZLTextElementArea area = (ZLTextElementArea)myTextElementMap.getArea(index++);
if (area.ChangeStyle) {
setTextStyle(area.Style);
}
@@ -519,9 +519,9 @@ public abstract class ZLTextViewImpl extends ZLTextView {
final int y = area.YEnd - getElementDescent(context, element) - myTextStyle.getVerticalShift();
context.moveXTo(x);
if (element instanceof ZLTextWord) {
- drawWord(x, y, (ZLTextWord) element, charNumber, -1, false);
+ drawWord(x, y, (ZLTextWord)element, charNumber, -1, false);
} else {
- context.drawImage(x, y, ((ZLTextImageElement) element).ImageData);
+ context.drawImage(x, y, ((ZLTextImageElement)element).ImageData);
}
}
}
@@ -673,9 +673,7 @@ public abstract class ZLTextViewImpl extends ZLTextView {
if (isFirstLine) {
ZLTextElement element = paragraphCursor.getElement(currentWordIndex);
while (element instanceof ZLTextControlElement) {
- if (element instanceof ZLTextControlElement) {
- applyControl((ZLTextControlElement) element);
- }
+ applyControl((ZLTextControlElement)element);
++currentWordIndex;
currentCharNumber = 0;
if (currentWordIndex == endIndex) {
@@ -744,7 +742,7 @@ public abstract class ZLTextViewImpl extends ZLTextView {
wordOccurred = true;
isVisible = true;
} else if (element instanceof ZLTextControlElement) {
- applyControl((ZLTextControlElement) element);
+ applyControl((ZLTextControlElement)element);
} else if (element instanceof ZLTextImageElement) {
wordOccurred = true;
isVisible = true;
@@ -894,7 +892,7 @@ public abstract class ZLTextViewImpl extends ZLTextView {
} else if ((element instanceof ZLTextWord) || (element instanceof ZLTextImageElement)) {
final int height = getElementHeight(element);
final int descent = getElementDescent(context, element);
- final int length = (element instanceof ZLTextWord) ? ((ZLTextWord) element).Length : 0;
+ final int length = (element instanceof ZLTextWord) ? ((ZLTextWord)element).Length : 0;
myTextElementMap.add(new ZLTextElementArea(paragraphNumber, wordNumber, charNumber,
length, false, changeStyle, myTextStyle, element, x, x + width - 1, y - height + 1, y + descent));
changeStyle = false;
diff --git a/src/org/geometerplus/zlibrary/text/view/style/HyperlinkStyle.java b/src/org/geometerplus/zlibrary/text/view/style/HyperlinkStyle.java
index b6aec7fb1..d1cdc0873 100644
--- a/src/org/geometerplus/zlibrary/text/view/style/HyperlinkStyle.java
+++ b/src/org/geometerplus/zlibrary/text/view/style/HyperlinkStyle.java
@@ -17,10 +17,10 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.view.style;
-
-interface HyperlinkStyle {
- byte NONE = 0;
- byte INTERNAL = 1;
- byte EXTERNAL = 2;
-}
+package org.geometerplus.zlibrary.text.view.style;
+
+interface HyperlinkStyle {
+ byte NONE = 0;
+ byte INTERNAL = 1;
+ byte EXTERNAL = 2;
+}
diff --git a/src/org/geometerplus/zlibrary/text/view/style/ZLTextBaseStyle.java b/src/org/geometerplus/zlibrary/text/view/style/ZLTextBaseStyle.java
index fba137400..565c32973 100644
--- a/src/org/geometerplus/zlibrary/text/view/style/ZLTextBaseStyle.java
+++ b/src/org/geometerplus/zlibrary/text/view/style/ZLTextBaseStyle.java
@@ -26,10 +26,10 @@ import org.geometerplus.zlibrary.text.view.ZLTextStyle;
import org.geometerplus.zlibrary.text.model.ZLTextAlignmentType;
public class ZLTextBaseStyle implements ZLTextStyle {
- private final String CATEGORY = ZLOption.LOOK_AND_FEEL_CATEGORY;
- private final String COLORS = "Colors";
- private final String GROUP = "Style";
- private final String OPTIONS = "Options";
+ private static final String CATEGORY = ZLOption.LOOK_AND_FEEL_CATEGORY;
+ private static final String COLORS = "Colors";
+ private static final String GROUP = "Style";
+ private static final String OPTIONS = "Options";
public final ZLColorOption BackgroundColorOption =
new ZLColorOption(CATEGORY, COLORS, "Background", new ZLColor(255, 255, 255));
diff --git a/src/org/geometerplus/zlibrary/text/view/style/ZLTextPositionIndicatorStyle.java b/src/org/geometerplus/zlibrary/text/view/style/ZLTextPositionIndicatorStyle.java
deleted file mode 100644
index 56657c81c..000000000
--- a/src/org/geometerplus/zlibrary/text/view/style/ZLTextPositionIndicatorStyle.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2007-2008 Geometer Plus
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- */
-
-package org.geometerplus.zlibrary.text.view.style;
-
-import org.geometerplus.zlibrary.core.options.ZLBooleanOption;
-import org.geometerplus.zlibrary.core.options.ZLColorOption;
-import org.geometerplus.zlibrary.core.options.ZLIntegerRangeOption;
-
-public class ZLTextPositionIndicatorStyle {
- public ZLBooleanOption ShowOption;
- public ZLBooleanOption IsSensitiveOption;
- public ZLBooleanOption ShowTextPositionOption;
- public ZLBooleanOption ShowTimeOption;
- public ZLColorOption ColorOption;
- public ZLIntegerRangeOption HeightOption;
- public ZLIntegerRangeOption OffsetOption;
- public ZLIntegerRangeOption FontSizeOption;
-
- public ZLTextPositionIndicatorStyle() {
-// TODO
-/* final String INDICATOR = "indicator";
- ShowOption = new ZLBooleanOption(ZLOption.LOOK_AND_FEEL_CATEGORY, INDICATOR, "Show", true);
- IsSensitiveOption = new ZLBooleanOption(ZLOption.LOOK_AND_FEEL_CATEGORY, INDICATOR, "TouchSensitive", true);
- ShowTextPositionOption = new ZLBooleanOption(ZLOption.LOOK_AND_FEEL_CATEGORY, INDICATOR, "PositionText", true);
- ShowTimeOption = new ZLBooleanOption(ZLOption.LOOK_AND_FEEL_CATEGORY, INDICATOR, "Time", true);
- ColorOption = new ZLColorOption(ZLOption.LOOK_AND_FEEL_CATEGORY, INDICATOR, "Color", ZLColor(127, 127, 127));
- HeightOption = new ZLIntegerRangeOption(ZLOption.LOOK_AND_FEEL_CATEGORY, INDICATOR, "Height", 1, 100, 16);
- OffsetOption = new ZLIntegerRangeOption(ZLOption.LOOK_AND_FEEL_CATEGORY, INDICATOR, "Offset", 0, 100, 3);
- FontSizeOption = new ZLIntegerRangeOption(ZLOption.LOOK_AND_FEEL_CATEGORY, INDICATOR, "FontSize", 4, 72, 14);
-*/
- }
-}
diff --git a/src/org/geometerplus/zlibrary/text/view/style/ZLTextStyleCollection.java b/src/org/geometerplus/zlibrary/text/view/style/ZLTextStyleCollection.java
index 83bdfaf74..5fbd00672 100644
--- a/src/org/geometerplus/zlibrary/text/view/style/ZLTextStyleCollection.java
+++ b/src/org/geometerplus/zlibrary/text/view/style/ZLTextStyleCollection.java
@@ -17,149 +17,144 @@
* 02110-1301, USA.
*/
-package org.geometerplus.zlibrary.text.view.style;
-
-import org.geometerplus.zlibrary.core.library.ZLibrary;
-import org.geometerplus.zlibrary.core.util.ZLBoolean3;
-import org.geometerplus.zlibrary.core.xml.*;
-import org.geometerplus.zlibrary.text.model.ZLTextAlignmentType;
-import org.geometerplus.zlibrary.text.view.ZLTextStyle;
-
-public class ZLTextStyleCollection {
- private static ZLTextStyleCollection ourInstance = null;
-
- private ZLTextBaseStyle myBaseStyle;
- private ZLTextPositionIndicatorStyle myIndicatorStyle;
- private final ZLTextStyleDecoration[] myDecorationMap = new ZLTextStyleDecoration[256];
-
- private ZLTextStyleCollection() {
- new TextStyleReader(this).read(ZLibrary.JAR_DATA_PREFIX + "data/default/styles.xml");
- if (myBaseStyle == null) {
- myBaseStyle = new ZLTextBaseStyle("", 20);
- }
- }
-
- public static ZLTextStyleCollection getInstance() {
- if (ourInstance == null) {
- ourInstance = new ZLTextStyleCollection();
- }
- return ourInstance;
- }
-
- public static void deleteInstance() {
- ourInstance = null;
- }
-
- public ZLTextBaseStyle getBaseStyle() {
- return myBaseStyle;
- }
-
- public ZLTextPositionIndicatorStyle getIndicatorStyle() {
- return myIndicatorStyle;
- }
-
- public ZLTextStyleDecoration getDecoration(byte kind) {
- return myDecorationMap[kind & 0xFF];
- }
-
- public ZLTextBaseStyle baseStyle() {
- return myBaseStyle;
- }
-
- private static class TextStyleReader extends ZLXMLReaderAdapter {
- private ZLTextStyleCollection myCollection;
-
- private static int intValue(ZLStringMap attributes, String name, int defaultValue) {
- int i = defaultValue;
- String value = attributes.getValue(name);
- if (value != null) {
- try {
- i = Integer.parseInt(value);
- } catch (NumberFormatException e) {
- e.printStackTrace();
- }
- }
- return i;
- }
-
- private static boolean booleanValue(ZLStringMap attributes, String name) {
- return "true" == attributes.getValue(name);
- }
-
- private static int b3Value(ZLStringMap attributes, String name) {
- return ZLBoolean3.getByString(attributes.getValue(name));
- }
-
- public TextStyleReader(ZLTextStyleCollection collection) {
- myCollection = collection;
- }
-
- public boolean startElementHandler(String tag, ZLStringMap attributes) {
- final String BASE = "base";
- final String STYLE = "style";
-
- if (BASE.equals(tag)) {
- myCollection.myBaseStyle = new ZLTextBaseStyle(attributes.getValue("family"), intValue(attributes, "fontSize", 0));
- } else if (STYLE.equals(tag)) {
- String idString = attributes.getValue("id");
- String name = attributes.getValue("name");
- if ((idString != null) && (name != null)) {
- byte id = Byte.parseByte(idString);
- ZLTextStyleDecoration decoration;
-
- int fontSizeDelta = intValue(attributes, "fontSizeDelta", 0);
- int bold = b3Value(attributes, "bold");
- int italic = b3Value(attributes, "italic");
- int verticalShift = intValue(attributes, "vShift", 0);
- int allowHyphenations = b3Value(attributes, "allowHyphenations");
- byte hyperlinkStyle = HyperlinkStyle.NONE;
- String hyperlink = attributes.getValue("hyperlink");
- if (hyperlink != null) {
- if ("internal".equals(hyperlink)) {
- hyperlinkStyle = HyperlinkStyle.INTERNAL;
- }
- if ("external".equals(hyperlink)) {
- hyperlinkStyle = HyperlinkStyle.EXTERNAL;
- }
- }
-
- if (booleanValue(attributes, "partial")) {
- decoration = new ZLTextStyleDecoration(name, fontSizeDelta, bold, italic, verticalShift, allowHyphenations);
- } else {
- int spaceBefore = intValue(attributes, "spaceBefore", 0);
- int spaceAfter = intValue(attributes, "spaceAfter", 0);
- int leftIndent = intValue(attributes, "leftIndent", 0);
- int rightIndent = intValue(attributes, "rightIndent", 0);
- int firstLineIndentDelta = intValue(attributes, "firstLineIndentDelta", 0);
-
- byte alignment = ZLTextAlignmentType.ALIGN_UNDEFINED;
- String alignmentString = attributes.getValue("alignment");
- if (alignmentString != null) {
- if (alignmentString.equals("left")) {
- alignment = ZLTextAlignmentType.ALIGN_LEFT;
- } else if (alignmentString.equals("right")) {
- alignment = ZLTextAlignmentType.ALIGN_RIGHT;
- } else if (alignmentString.equals("center")) {
- alignment = ZLTextAlignmentType.ALIGN_CENTER;
- } else if (alignmentString.equals("justify")) {
- alignment = ZLTextAlignmentType.ALIGN_JUSTIFY;
- }
- }
- final int lineSpacePercent = intValue(attributes, "lineSpacingPercent", -1);
-
- decoration = new ZLTextFullStyleDecoration(name, fontSizeDelta, bold, italic, spaceBefore, spaceAfter, leftIndent, rightIndent, firstLineIndentDelta, verticalShift, alignment, lineSpacePercent, allowHyphenations);
- }
- decoration.setHyperlinkStyle(hyperlinkStyle);
-
- String fontFamily = attributes.getValue("family");
- if (fontFamily != null) {
- decoration.FontFamilyOption.setValue(fontFamily);
- }
-
- myCollection.myDecorationMap[id & 0xFF] = decoration;
- }
- }
- return false;
- }
- }
-}
+package org.geometerplus.zlibrary.text.view.style;
+
+import org.geometerplus.zlibrary.core.library.ZLibrary;
+import org.geometerplus.zlibrary.core.util.ZLBoolean3;
+import org.geometerplus.zlibrary.core.xml.*;
+import org.geometerplus.zlibrary.text.model.ZLTextAlignmentType;
+import org.geometerplus.zlibrary.text.view.ZLTextStyle;
+
+public class ZLTextStyleCollection {
+ private static ZLTextStyleCollection ourInstance = null;
+
+ private ZLTextBaseStyle myBaseStyle;
+ private final ZLTextStyleDecoration[] myDecorationMap = new ZLTextStyleDecoration[256];
+
+ private ZLTextStyleCollection() {
+ new TextStyleReader(this).read(ZLibrary.JAR_DATA_PREFIX + "data/default/styles.xml");
+ if (myBaseStyle == null) {
+ myBaseStyle = new ZLTextBaseStyle("", 20);
+ }
+ }
+
+ public static ZLTextStyleCollection getInstance() {
+ if (ourInstance == null) {
+ ourInstance = new ZLTextStyleCollection();
+ }
+ return ourInstance;
+ }
+
+ public static void deleteInstance() {
+ ourInstance = null;
+ }
+
+ public ZLTextBaseStyle getBaseStyle() {
+ return myBaseStyle;
+ }
+
+ public ZLTextStyleDecoration getDecoration(byte kind) {
+ return myDecorationMap[kind & 0xFF];
+ }
+
+ public ZLTextBaseStyle baseStyle() {
+ return myBaseStyle;
+ }
+
+ private static class TextStyleReader extends ZLXMLReaderAdapter {
+ private ZLTextStyleCollection myCollection;
+
+ private static int intValue(ZLStringMap attributes, String name, int defaultValue) {
+ int i = defaultValue;
+ String value = attributes.getValue(name);
+ if (value != null) {
+ try {
+ i = Integer.parseInt(value);
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ }
+ }
+ return i;
+ }
+
+ private static boolean booleanValue(ZLStringMap attributes, String name) {
+ return "true" == attributes.getValue(name);
+ }
+
+ private static int b3Value(ZLStringMap attributes, String name) {
+ return ZLBoolean3.getByString(attributes.getValue(name));
+ }
+
+ public TextStyleReader(ZLTextStyleCollection collection) {
+ myCollection = collection;
+ }
+
+ public boolean startElementHandler(String tag, ZLStringMap attributes) {
+ final String BASE = "base";
+ final String STYLE = "style";
+
+ if (BASE.equals(tag)) {
+ myCollection.myBaseStyle = new ZLTextBaseStyle(attributes.getValue("family"), intValue(attributes, "fontSize", 0));
+ } else if (STYLE.equals(tag)) {
+ String idString = attributes.getValue("id");
+ String name = attributes.getValue("name");
+ if ((idString != null) && (name != null)) {
+ byte id = Byte.parseByte(idString);
+ ZLTextStyleDecoration decoration;
+
+ int fontSizeDelta = intValue(attributes, "fontSizeDelta", 0);
+ int bold = b3Value(attributes, "bold");
+ int italic = b3Value(attributes, "italic");
+ int verticalShift = intValue(attributes, "vShift", 0);
+ int allowHyphenations = b3Value(attributes, "allowHyphenations");
+ byte hyperlinkStyle = HyperlinkStyle.NONE;
+ String hyperlink = attributes.getValue("hyperlink");
+ if (hyperlink != null) {
+ if ("internal".equals(hyperlink)) {
+ hyperlinkStyle = HyperlinkStyle.INTERNAL;
+ }
+ if ("external".equals(hyperlink)) {
+ hyperlinkStyle = HyperlinkStyle.EXTERNAL;
+ }
+ }
+
+ if (booleanValue(attributes, "partial")) {
+ decoration = new ZLTextStyleDecoration(name, fontSizeDelta, bold, italic, verticalShift, allowHyphenations);
+ } else {
+ int spaceBefore = intValue(attributes, "spaceBefore", 0);
+ int spaceAfter = intValue(attributes, "spaceAfter", 0);
+ int leftIndent = intValue(attributes, "leftIndent", 0);
+ int rightIndent = intValue(attributes, "rightIndent", 0);
+ int firstLineIndentDelta = intValue(attributes, "firstLineIndentDelta", 0);
+
+ byte alignment = ZLTextAlignmentType.ALIGN_UNDEFINED;
+ String alignmentString = attributes.getValue("alignment");
+ if (alignmentString != null) {
+ if (alignmentString.equals("left")) {
+ alignment = ZLTextAlignmentType.ALIGN_LEFT;
+ } else if (alignmentString.equals("right")) {
+ alignment = ZLTextAlignmentType.ALIGN_RIGHT;
+ } else if (alignmentString.equals("center")) {
+ alignment = ZLTextAlignmentType.ALIGN_CENTER;
+ } else if (alignmentString.equals("justify")) {
+ alignment = ZLTextAlignmentType.ALIGN_JUSTIFY;
+ }
+ }
+ final int lineSpacePercent = intValue(attributes, "lineSpacingPercent", -1);
+
+ decoration = new ZLTextFullStyleDecoration(name, fontSizeDelta, bold, italic, spaceBefore, spaceAfter, leftIndent, rightIndent, firstLineIndentDelta, verticalShift, alignment, lineSpacePercent, allowHyphenations);
+ }
+ decoration.setHyperlinkStyle(hyperlinkStyle);
+
+ String fontFamily = attributes.getValue("family");
+ if (fontFamily != null) {
+ decoration.FontFamilyOption.setValue(fontFamily);
+ }
+
+ myCollection.myDecorationMap[id & 0xFF] = decoration;
+ }
+ }
+ return false;
+ }
+ }
+}