1 package org.weda.model;
2
3 import org.weda.property.PropertyDescriptor;
4 import org.weda.property.SetValue;
5 import org.weda.store.impl.ObjectSet;
6 import org.weda.store.impl.ObjectSetException;
7
8 /**
9 *
10 * @author tim
11 */
12 public interface EditorModel<T extends EditorModelGroup> {
13 /**Имя модели уникальное внутри группы.
14 */
15 public String getName();
16 /**Вернет <code>true</code> если значение модели можно изменять
17 * с пользовательского интерфейса.
18 */
19 public boolean isEditable() throws EditorModelException;
20 /**Метод должен вернуть <code>TRUE</code> если значение модели необходимо
21 * преобразовывать для того чтобы привести к строке. Если метод вернет
22 * <code>true</code> тогда значение будет приведено при помощи метода
23 * <code>toString()</code>.
24 * @see #setValue(Object)
25 * @see #getValue()
26 */
27 public boolean isNeedConversion();
28 /**Метод возвращает описание свойства
29 */
30 public PropertyDescriptor getPropertyDescriptor()
31 throws EditorModelException;
32 /**Метод устанавливает путь до свойства. ???
33 */
34 public void setPropertyPath(String propertyPath);
35 /**Метод возвращает значение свойства.
36 */
37 public Object getValue() throws EditorModelException;
38 /**Метод устанавливает значение свойства.
39 */
40 public void setValue(Object value) throws Exception;
41 /**Метод вернет <code>TRUE</code> если хотя бы один раз вызывался
42 * метод {@link #setValuePretindent(Object)}, иначе <code>FALSE</code>
43 */
44 public boolean isValuePretenderSetted();
45 /**Метод устанавливает претиндента на значение.
46 */
47 public void setValuePretender(Object value);
48 /**Метод возвращает претиндента на значение.
49 */
50 public Object getValuePretender();
51 /**Метод устанавливает группу к которой принадлежит модель.
52 */
53 public void setModelGroup(T modelGroup);
54 /**Метод возвращает список значений в одно из которых может быть установлено
55 * значение модели. Если перед вызовом метода был вызван метод
56 * {@link #resetValuesList()} тогда
57 * @see #hasValuesList()
58 * @see #refreshValuesList()
59 * @see #resetValuesList()
60 */
61 public SetValue[] getValuesList() throws EditorModelException;
62 /**Метод вернет <code>true</code> если значение модели ограничено списком
63 * возвращаемым методом {@link #getValuesList()}
64 * @see #refreshValuesList()
65 * @see #resetValuesList()
66 */
67 public boolean hasValuesList() throws EditorModelException;
68 /**Метод обновляет список возвращаемый методом {@link #getValuesList()}
69 * @see #hasValuesList()
70 * @see #resetValuesList()
71 */
72 public void refreshValuesList() throws EditorModelException;
73 /**Метод "сбрасывает" список допустимых значений для значения модели.
74 * Список будет доступен после вызова метода {@link #refreshValuesList()}
75 * @see #getValuesList()
76 * @see #hasValuesList()
77 * @see #resetValuesList()
78 */
79 public void resetValuesList();
80 /**Метод вернет <code>true</code> если допустимые значения проименованы.
81 * @see org.weda.property.SetValue#getAlias()
82 * @see #getValuesList()
83 * @see #hasValuesList()
84 * @see #resetValuesList()
85 * @see #refreshValuesList()
86 */
87 public boolean isValuesListAliased() throws EditorModelException;
88 /**Метод освобождает ресурсы.
89 */
90 public void resetModel() throws EditorModelException;
91 /**Метод вернет <code>true</code> если значения всех слоев одинаковы.
92 * Имеет смысл использовать только в том случае если метод
93 * {@link EditorModelGroup#isMultiLeveledModelValues()} возвращает
94 * <code>TRUE</code>.
95 */
96 public boolean isLevelsValuesUniq() throws EditorModelException;
97 }