Динамическое задание параметров апплета из JavaScript

Для вставки в HTML Java-апплетов используются теги <APPLET> ... </APPLET>.  (См. "Статическое описание параметров апплета. Тег <APPLET>"). В тег <APPLET> необходимо добавить атрибут "mayscript". Это означает, что к этому апплету можно обращаться из JavaScript. Для задания параметров апплету вместо тега <PARAM> используются public методы, которые предоставляет апплет. 

В этом разделе описываются методы, с помощью которых можно создать новый слой, задать его элементы, создать список слоев для отображения и задать группу слоев для поиска активных элементов.

(Описание всех методов апплета можно посмотреть в разделе 
"Взаимодействие с апплетом из JavaScript"
.)

Перед началом редактирования параметров апплета необходимо открыть режим редактирования

отрытие режима редактирования
open_change_mode( int bflag ),
параметр bflag задает признак блокировки реакции 
на движение мыши и перерисовку,
  =0 реакция на движение мыши и перерисовка разрешаются, 
  =1 запрещаются. 

После изменения элементов слоя режим редактирования нужно закрыть

конец режима изменения элементов слоя
int close_change_mode( int redraw_flag ) 
redraw_flag    - задает режим перерисовки изображения при
                 снятии режима изменения слоев:
bit00(0x00001) - переопределение активных элементов по новому
                 положения курсора
bit01(0x00002) - отказ от всех активных элементов и стирание
                 из отображения
bit02(0x00004) - перепоказ изображения и определенных к данному
                 моменту активных элементов
bit04(0x00010) - изменение изображения без снятия режима изменеия
                 слоев
возвращает:  0   если изображение полностью построено
            -1   если имеются не загруженные растровые изображения.

Для создания нового слоя и описания его атрибутов апплет предоставляет метод

создание нового слоя и установка его в качестве текущего,
если слой уже имеется, то выполняется изменение атрибутов слоя 
add_layer( String layer_name, String layer_attribs_list )
layer_name - имя слоя,
layer_attribs_list - описание атрибутов слоя

Изменять элементы слоя  можно только для установленного текущего слоя. Он устанавливается методами add_layer или  set_current_layer и сбрасывается методом close_change_mode.

начало изменения элементов слоя
int set_current_layer( String layer_name ) 
layer_name - имя слоя
возвращает номер слоя, если слой существует, иначе -1

Элементы в созданный слой добавляются с помощью методов:

изменение элемента слоя по номеру элемента
set_layer_element_num( int num, String atr_name, String atr_value )
num - номер элемента,
    если num < 0, или > максимального,
    то при значении atr_name  "object" выполняется добавление нового элемента,
    иначе замена существующего элемента,
atr_name - "object"  - переопределение объекта,
           "attribs" - переопределение общих атрибутов (ключевых параметров)
atr_value - значение определяемых атрибутов или полное описание элемента слоя
изменение элемента слоя по идентификатору элемента
int set_layer_element_id( int element_id, String atr_name, String atr_value )
element_id - идентификатор элемента слоя
atr_name - "object" - переопределение объекта,
           "attribs" - переопределение общих атрибутов 
           (ключевых параметров)объекта и любых атрибутов текстового элемента
atr_value - значение определяемых атрибутов или полное описание элемента слоя
возвращает номер элемента, или -1 если элемент не найден

Установка списка слоев для отображения осуществляется методом  set_layers_draw , который измененяет состав слоев в группе с именем $$draw_list и включает ее  в список групп слоев для отображения, и методом set_draw_groups.

установка нового списка слоев для отображения 
set_layers_draw( String list )
list - список элементов группы (см. "Задание списка элементов группы") 
задание списка групп слоев для отображения
set_draw_groups( String groups_list )
groups_list - список групп

Множество активных зон задается как список групп слоев и затем эти группы объявляются активными.

создание новой группы и задание для нее списка объектов, если группа уже
существует, то происходит установка для нее нового списка объектов
int add_group( String group_name, String list )
group_name - имя группы
list - список элементов группы (см. "Задание списка элементов группы")
возвращает 0 если группа успешно создана или существует,
          -1 если группу создать не удалось 
             (уже существует объект с заданным именем.
задание списка групп слоев для поиска активных элементов
set_active_groups( String groups_list )
groups_list - список групп

<html>
<head>
<title>Пример динамического задания параметров апплета</title>
<script language="JavaScript">
<!--
var app = null;
function load_applet_params()
{
   app = document.applets.red;
   if( app != null )
   {
               // апплет загружен и к нему можно обращаться

               // открытие режима редактирования
      app.open_change_mode(0);
               // создание слоя layer1, установка его в качестве текущего
               // и описание его атрибутов
      app.add_layer("layer1", "описание атрибутов слоя layer1");
               // добавление 1-го элемента в слой
      app.set_layer_element_num(0, "object",
                 "описание первого элемента слоя layer1");
               // добавление второго элемента в слой
      app.set_layer_element_num(1, "object",
                 "описание второго элемента слоя layer1");
               // создание слоя layer2 и описание его атрибутов
      app.add_layer("layer2","описание атрибутов слоя layer2");
              // добавление 1-го элемента в слой
      app.set_layer_element_num(0, "object",
                 "описание первого элемента слоя layer2");
              // установка списка слоев для отображения
      app.set_layers_draw("#layer1 #layer2");
              // создание группы с именем active, в которую
              // входят элементы слоя layer2
      app.add_group( "active", "#layer2");
             // задание списка групп слоев для поиска активных элементов
      app.set_active_groups("active");
             // конец режима редактирования, сброс текущего слоя
      app.close_change_mode(5);
   }
}
// -->
</script>
</head>

<body onLoad="load_applet_params();">
   <applet code=map_view.class  name=red
           width=250  height=250 
           archive=map_view.zip codebase="../"  mayscript>
   </applet>
</body>
</html>

На главную страницу
Наверх