1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-04 10:19:33 +02:00

git-svn-id: https://only.mawhrin.net/repos/FBReaderJ/trunk@50 6a642e6f-84f6-412e-ac94-c4a38d5a04b0

This commit is contained in:
EugeniyVlasov 2007-10-25 18:00:52 +00:00
parent 7c29843d11
commit a55acf97f3
14 changed files with 338 additions and 109 deletions

View file

@ -2,6 +2,12 @@ package org.zlibrary.options;
import org.zlibrary.options.util.*; import org.zlibrary.options.util.*;
/**
* класс опция со значением из трехзначной логики
* значения бывают "истина", "ложь" и "не знаю".
* @author Администратор
*
*/
public final class ZLBoolean3Option extends ZLSimpleOption{ public final class ZLBoolean3Option extends ZLSimpleOption{
private ZLBoolean3 myValue; private ZLBoolean3 myValue;
@ -16,7 +22,11 @@ public final class ZLBoolean3Option extends ZLSimpleOption{
} }
public void setValue(ZLBoolean3 value){ public void setValue(ZLBoolean3 value){
//TODO установка значения myValue = value;
}
public void setValueToDefault(){
myValue = myDefaultValue;
} }
public ZLBoolean3Option(String category, String group, String optionName, ZLBoolean3 defaultValue){ public ZLBoolean3Option(String category, String group, String optionName, ZLBoolean3 defaultValue){

View file

@ -1,5 +1,10 @@
package org.zlibrary.options; package org.zlibrary.options;
/**
* êëàññ ëîãè÷åñêàÿ îïöèÿ.
* @author Àäìèíèñòðàòîð
*
*/
public final class ZLBooleanOption extends ZLSimpleOption{ public final class ZLBooleanOption extends ZLSimpleOption{
private boolean myValue; private boolean myValue;
@ -14,7 +19,11 @@ public final class ZLBooleanOption extends ZLSimpleOption{
} }
public void setValue(boolean value){ public void setValue(boolean value){
//TODO установка значения myValue = value;
}
public void setValueToDefault(){
myValue = myDefaultValue;
} }
public ZLBooleanOption (String category, String group, String optionName, boolean defaultValue){ public ZLBooleanOption (String category, String group, String optionName, boolean defaultValue){

View file

@ -2,6 +2,14 @@ package org.zlibrary.options;
import org.zlibrary.options.util.*; import org.zlibrary.options.util.*;
/**
* класс опция цвета. внутри опции цвет хранится одним числом,
* чтобы уменьшить затраты на память (в три раза! =)), но обращение
* к этой опции все равно осуществляется с помощью класса ZLColor, который
* реализует более привычное RGB представление цвета.
* @author Администратор
*
*/
public final class ZLColorOption extends ZLOption{ public final class ZLColorOption extends ZLOption{
private long myIntValue; private long myIntValue;
@ -12,12 +20,15 @@ public final class ZLColorOption extends ZLOption{
} }
public void setValue(ZLColor value){ public void setValue(ZLColor value){
//TODO установка значения myIntValue = value.getIntValue();
}
public void setValueToDefault(){
myIntValue = myDefaultIntValue;
} }
public ZLColorOption (String category, String group, String optionName, ZLColor defaultValue){ public ZLColorOption (String category, String group, String optionName, ZLColor defaultValue){
super(category, group, optionName); super(category, group, optionName);
//convert?
myDefaultIntValue = defaultValue.getIntValue(); myDefaultIntValue = defaultValue.getIntValue();
myIntValue = myDefaultIntValue; myIntValue = myDefaultIntValue;
} }

View file

@ -1,5 +1,10 @@
package org.zlibrary.options; package org.zlibrary.options;
/**
* êëàññ äðîáíàÿ îïöèÿ.
* @author Àäìèíèñòðàòîð
*
*/
public final class ZLDoubleOption extends ZLOption{ public final class ZLDoubleOption extends ZLOption{
private double myValue; private double myValue;
@ -10,7 +15,11 @@ public final class ZLDoubleOption extends ZLOption{
} }
public void setValue(double value){ public void setValue(double value){
//TODO установка значения myValue = value;
}
public void setValueToDefault(){
myValue = myDefaultValue;
} }
public ZLDoubleOption (String category, String group, String optionName, double defaultValue){ public ZLDoubleOption (String category, String group, String optionName, double defaultValue){

View file

@ -1,5 +1,10 @@
package org.zlibrary.options; package org.zlibrary.options;
/**
* êëàññ öåëî÷èñëåííàÿ îïöèÿ.
* @author Àäìèíèñòðàòîð
*
*/
public final class ZLIntegerOption extends ZLOption{ public final class ZLIntegerOption extends ZLOption{
private long myValue; private long myValue;
private long myDefaultValue; private long myDefaultValue;
@ -9,10 +14,14 @@ public final class ZLIntegerOption extends ZLOption{
} }
public void setValue(long value){ public void setValue(long value){
// TODO óñòàíîâêà çíà÷åíèÿ myValue = value;
} }
public ZLIntegerOption (String category, String group, String optionName, int defaultValue){ public void setValueToDefault(){
myValue = myDefaultValue;
}
public ZLIntegerOption (String category, String group, String optionName, long defaultValue){
super(category, group, optionName); super(category, group, optionName);
myDefaultValue = defaultValue; myDefaultValue = defaultValue;
myValue = myDefaultValue; myValue = myDefaultValue;

View file

@ -1,5 +1,11 @@
package org.zlibrary.options; package org.zlibrary.options;
/**
* êëàññ ðàíæèðîâàííàÿ öåëî÷èñëåííàÿ îïöèÿ. åñòü âåðõíèé è íèæíèé
* ïðåäåëû, êîòîðûå òóò æå è óêàçûâàþòñÿ.
* @author Àäìèíèñòðàòîð
*
*/
public final class ZLIntegerRangeOption extends ZLOption{ public final class ZLIntegerRangeOption extends ZLOption{
private long myValue; private long myValue;
private long myDefaultValue; private long myDefaultValue;
@ -19,14 +25,23 @@ public final class ZLIntegerRangeOption extends ZLOption{
} }
public void setValue(long value){ public void setValue(long value){
// TODO óñòàíîâêà çíà÷åíèÿ if ((myMinValue <= value) && (myMaxValue >= value))
myValue = value;
}
public void setValueToDefault(){
myValue = myDefaultValue;
} }
public ZLIntegerRangeOption (String category, String group, String optionName, long minValue, long maxValue, long defaultValue){ public ZLIntegerRangeOption (String category, String group, String optionName, long minValue, long maxValue, long defaultValue){
super(category, group, optionName); super(category, group, optionName);
myDefaultValue = defaultValue;
myMinValue = minValue; myMinValue = minValue;
myMaxValue = maxValue; myMaxValue = maxValue;
//ñòðàõóåìñÿ îò îøèáêè ïðîãðàììèñòà =)
if ((myMinValue <= defaultValue) && (myMaxValue >= defaultValue))
myDefaultValue = defaultValue;
else
myDefaultValue = myMinValue;
myValue = myDefaultValue; myValue = myDefaultValue;
} }

View file

@ -5,25 +5,35 @@ public abstract class ZLOption {
public static final String CONFIG_CATEGORY = "options"; public static final String CONFIG_CATEGORY = "options";
public static final String STATE_CATEGORY = "state"; public static final String STATE_CATEGORY = "state";
public String myCategory; protected String myCategory;
public String myGroup; protected String myGroup;
public String myOptionName; protected String myOptionName;
public boolean myIsSynchronized; //protected boolean myIsSynchronized;
public void clearGroup(String group){ /**
* ÷òîáû íå çàáûòü îïðåäåëèòü ýòîò ìåòîä âî âñåõ final íàñëåäíèêàõ.
} * óñòàíîâêà çíà÷åíèÿ â äåôîëò. ïîëåçíûé ìåòîä.
*/
//private final ZLOption& operator = (final ZLOptions options); public abstract void setValueToDefault();
/**
* êîíñòðóêòîð.
* @param category
* @param group
* @param optionName
*/
//TODO êîãäà ðàçáåðóñü íàïèñàòü ñþäà äæàâàäîê
public ZLOption (String category, String group, String optionName){ public ZLOption (String category, String group, String optionName){
myCategory = category;
myGroup = group;
myOptionName = optionName;
} }
//public void clearGroup(String group){}
//private final ZLOption& operator = (final ZLOptions options);
//public boolean isAutoSavingSupported(); //public boolean isAutoSavingSupported();
//public void startAutoSave(int seconds); //public void startAutoSave(int seconds);
//protected ZLOption(String category, String group, String optionName); //protected ZLOption(String category, String group, String optionName);
//private ZLOption(const ZLOption&);
/*private ZLOption(const ZLOption&); //private final ZLOption& operator = (const ZLOption&);
*private final ZLOption& operator = (const ZLOption&);*/
} }

View file

@ -0,0 +1,25 @@
package org.zlibrary.options;
/**
* êëàññ ïðîñòàÿ îïöèÿ. îïèñûâàåò îïöèè, âûâîä êîòîðûõ íà ýêðàí
* äåëàåòñÿ áîëåå èëè ìåíåå îäíîé ñòðî÷êîé
* @author Àäìèíèñòðàòîð
*
*/
abstract class ZLSimpleOption extends ZLOption {
/**
* âî âñåõ final íàñëåäíèêàõ äîëæåí áûòü ìåòîä,
* îòäàþùèé òèï ýòîãî íàñëåäíèêà.
* @return
*/
public abstract OptionType getType();
/**
* êîíñòðóêòîð. ñîçäàåòñÿ òàê æå êàê è ëþáàÿ îïöèÿ
* @see ZLOption
*/
public ZLSimpleOption(String category, String group, String optionName){
super(category, group, optionName);
}
}

View file

@ -1,17 +0,0 @@
package org.zlibrary.options;
abstract class ZLSimpleOption extends ZLOption {
public abstract OptionType getType();
public ZLSimpleOption(String category, String group, String optionName){
super(category, group, optionName);
}
/*public void clearGroup(String group) {
// TODO Auto-generated method stub
}*/
}

View file

@ -1,9 +1,11 @@
package org.zlibrary.options; package org.zlibrary.options;
/**
* êëàññ ñòðîêîâàÿ îïöèÿ.
* @author Àäìèíèñòðàòîð
*/
public final class ZLStringOption extends ZLSimpleOption { public final class ZLStringOption extends ZLSimpleOption {
private String myValue; private String myValue;
private String myDefaultValue; private String myDefaultValue;
@ -16,7 +18,11 @@ public final class ZLStringOption extends ZLSimpleOption {
} }
public void setValue(String value){ public void setValue(String value){
// TODO установка значения myValue = value;
}
public void setValueToDefault(){
myValue = myDefaultValue;
} }
public ZLStringOption (String category, String group, String optionName, String defaultValue){ public ZLStringOption (String category, String group, String optionName, String defaultValue){

View file

@ -1,5 +1,9 @@
package org.zlibrary.options.util; package org.zlibrary.options.util;
/**
* сущность "значение трехзначной логики"
* @author Администратор
*/
public enum ZLBoolean3 { public enum ZLBoolean3 {
B3_FALSE, B3_FALSE,
B3_TRUE, B3_TRUE,

View file

@ -2,93 +2,59 @@ package org.zlibrary.options.util;
import java.awt.Color; import java.awt.Color;
/**
* сущность "цвет". представление здесь - стандартные RGB компоненты
* @author Администратор
*
*/
public class ZLColor { public class ZLColor {
private int myRed; private int myRed = 0;
private int myGreen; private int myGreen = 0;
private int myBlue; private int myBlue = 0;
public int getBlue() {
return myBlue;
}
public int getGreen() {
return myGreen;
}
public int getRed() {
return myRed;
}
public void setBlue(int mask){
setColor(myRed, myGreen, mask);
}
public void setGreen(int mask){
setColor(myRed, mask, myBlue);
}
public void setRed(int mask){
setColor(mask, myGreen, myBlue);
}
public boolean isInitialized(){
return (myRed != -1);
}
/** /**
* ïåðåêðûâàåì ìåòîä toString, * ïåðåêðûâàåì ìåòîä toString,
* ïî ñóòè - êîäèðîâêà â äåñÿòè÷íóþ çàïèñü * ïî ñóòè - êîäèðîâêà â äåñÿòè÷íóþ çàïèñü
*/ */
public String toString(){ public String toString(){
if (!isInitialized()){ return "" + myRed + ", " + myGreen + ", " + myBlue;
return "not initialized";
} else {
return "" + myRed + ", " + myGreen + ", " + myBlue;
}
} }
/** /**
* конструктор по умолчанию делает цвет черным * является ли число корректным значением компоненты ргб цвета.
*/ */
public ZLColor (){ private boolean isCorrectComponent(int value){
myRed = 0; return (value >=0 && value <= 255);
myGreen = 0;
myBlue = 0;
} }
/** /**
* с инициализацией сразу трех компонент цвета есть одна проблема * устанавливаем только те компоненты, которые заданы корректно,
* она состоит в том что если мы сначала удачно прочли красный * то есть являются неотрицательным числом < 256
* а потом неудачно прочли синий, то красный то мы уже успели
* поменять а вот на синем вылетели с иксепшоном и таким образом
* получили полуторный непонятный цвет, явно не то чего хотели
* поэтому приходится определять такой метод, а остальные через него
* @param red
* @param green
* @param blue
*/ */
public void setColor (int red, int green, int blue){ public void setColor (int red, int green, int blue){
myRed = red; if (isCorrectComponent(red))
myGreen = green; myRed = red;
myBlue = blue; if (isCorrectComponent(green))
} myGreen = green;
/** if (isCorrectComponent(blue))
* конструктор с параметрами myBlue = blue;
*/
public ZLColor (int red, int green, int blue){
setColor(red, green, blue);
} }
/** /**
* этот метод отлично отражает бессмысленность * конвертирование в АВТшный цвет.
* данной структуры. когда выяснилось что RGBColor надо рисовать
* пришлось научиться приводить мой цвет в авт-шный
* @param color * @param color
*/ */
//TODO решить нужно ли это вообще
public void convertFromColor(Color color){ public void convertFromColor(Color color){
myRed = (int)color.getRed(); myRed = (int)color.getRed();
myGreen = (int)color.getGreen(); myGreen = (int)color.getGreen();
myBlue = (int)color.getBlue(); myBlue = (int)color.getBlue();
} }
public Color convertToColor(){
return new Color(myRed, myGreen, myBlue);
}
/** /**
* è êîíñòðóêòîð ñîîòâåòñòâåííî äëÿ óäîáñòâà * è êîíñòðóêòîð ñîîòâåòñòâåííî äëÿ óäîáñòâà
* @param color * @param color
@ -99,14 +65,24 @@ public class ZLColor {
} }
/** /**
* @return наш цвет как человеческий цвет из awt * @return цвет одним числом, чтобы хранить в памяти меньше =)
*/ */
public Color convertToColor(){ public int getIntValue(){
return new Color(myRed, myGreen, myBlue); return myRed*1000000 + myGreen*1000 + myBlue;
} }
public int getIntValue(){ /**
//TODO возвращение цвета одним числом * конструктор по умолчанию делает цвет черным
return 0; */
public ZLColor (){
} }
/**
* конструктор с параметрами
*/
public ZLColor (int red, int green, int blue){
setColor(red, green, blue);
}
} }

View file

@ -0,0 +1,150 @@
package org.test.zlibrary.options;
import junit.framework.*;
import org.zlibrary.options.*;
import org.zlibrary.options.util.*;
/**
* òåñòû íà ìîäåëü îïöèé.
* @author Àäìèíèñòðàòîð
* òåñòû 01 - ýòî òåñòû íà ãåòòåðû çíà÷åíèé
* òåñòû 02 - ýòî òåñòû íà ñåòòåðû ïðè óñëîâèè êîððåêòîñòè ãåòòåðîâ
* òåñòû 03 - ýòî òåñòû íà setValueToDefault
*/
public class ModelTests extends TestCase{
private ZLColorOption myColorOption;
private ZLDoubleOption myDoubleOption;
private ZLIntegerOption myIntegerOption;
private ZLIntegerRangeOption myIntegerRangeOption;
private ZLBoolean3Option myBoolean3Option;
private ZLBooleanOption myBooleanOption;
private ZLStringOption myStringOption;
private final long myDefaultColor = 176255000L;
private final long myDefaultIntRange = 75L;
private final long myDefaultInt = 15L;
private final ZLBoolean3 myDefaultBoolean3 = ZLBoolean3.B3_UNDEFINED;
private final boolean myDefaultBoolean = true;
private final String myDefaultString = "Hello World";
private final double myDefaultDouble = 1.2;
public void setUp(){
myColorOption = new ZLColorOption("","","my Color", new ZLColor (176, 255, 0));
myDoubleOption = new ZLDoubleOption("","","My Double", myDefaultDouble);
myIntegerOption = new ZLIntegerOption("","","I", myDefaultInt);
myIntegerRangeOption = new ZLIntegerRangeOption("","","IR", -90L, 90L, myDefaultIntRange);
myBoolean3Option = new ZLBoolean3Option("","","my Boolean 3", myDefaultBoolean3);
myBooleanOption = new ZLBooleanOption("","","my Boolean", myDefaultBoolean);
myStringOption = new ZLStringOption("","","my String", myDefaultString);
}
public void test01_color(){
assertEquals(myColorOption.getValue(), myDefaultColor);
}
public void test01_double(){
assertEquals(myDoubleOption.getValue(), myDefaultDouble);
}
public void test01_integer(){
assertEquals(myIntegerOption.getValue(), myDefaultInt);
}
public void test01_integerRange(){
assertEquals(myIntegerRangeOption.getValue(), myDefaultIntRange);
}
public void test01_boolean3(){
assertEquals(myBoolean3Option.getValue(), myDefaultBoolean3);
}
public void test01_boolean(){
assertEquals(myBooleanOption.getValue(), myDefaultBoolean);
}
public void test01_string(){
assertEquals(myStringOption.getValue(), myDefaultString);
}
public void test02_color(){
myColorOption.setValue(new ZLColor());
assertEquals(myColorOption.getValue(), 0L);
}
public void test02_double(){
myDoubleOption.setValue(0.1);
assertEquals(myDoubleOption.getValue(), 0.1);
}
public void test02_integer(){
myIntegerOption.setValue(10000000);
assertEquals(myIntegerOption.getValue(), 10000000);
}
public void test02_integerRangeRight(){
myIntegerRangeOption.setValue(-1L);
assertEquals(myIntegerRangeOption.getValue(), -1L);
}
public void test02_integerRangeWrong(){
myIntegerRangeOption.setValue(10000000L);
assertEquals(myIntegerRangeOption.getValue(), 75L);
}
public void test02_boolean3(){
myBoolean3Option.setValue(ZLBoolean3.B3_TRUE);
assertEquals(myBoolean3Option.getValue(), ZLBoolean3.B3_TRUE);
}
public void test02_boolean(){
myBooleanOption.setValue(false);
assertEquals(myBooleanOption.getValue(), false);
}
public void test02_string(){
myColorOption.setValue(new ZLColor());
assertEquals(myStringOption.getValue(), "Hello World");
}
public void test03_color(){
myColorOption.setValueToDefault();
assertEquals(myColorOption.getValue(), myDefaultColor);
}
public void test03_double(){
myDoubleOption.setValueToDefault();
assertEquals(myDoubleOption.getValue(), myDefaultDouble);
}
public void test03_integer(){
myIntegerOption.setValueToDefault();
assertEquals(myIntegerOption.getValue(), myDefaultInt);
}
public void test03_integerRangeRight(){
myIntegerRangeOption.setValueToDefault();
assertEquals(myIntegerRangeOption.getValue(), myDefaultIntRange);
}
public void test03_integerRangeWrong(){
myIntegerRangeOption.setValueToDefault();
assertEquals(myIntegerRangeOption.getValue(), 75L);
}
public void test03_boolean3(){
myBoolean3Option.setValueToDefault();
assertEquals(myBoolean3Option.getValue(), myDefaultBoolean3);
}
public void test03_boolean(){
myBooleanOption.setValueToDefault();
assertEquals(myBooleanOption.getValue(), myDefaultBoolean);
}
public void test03_string(){
myColorOption.setValueToDefault();
assertEquals(myStringOption.getValue(), myDefaultString);
}
}

View file

@ -0,0 +1,12 @@
package org.test.zlibrary.options;
import junit.framework.Test;
import junit.framework.TestSuite;
public class TestAll {
public static Test suite() {
TestSuite suite = new TestSuite();
suite.addTestSuite(ModelTests.class);
return suite;
}
}