Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lotus Notes/Domino: Программирование
Войти
Регистрация
Восстановить пароль
 
 
zum
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 3
#1

Ls2j ответ от диалогового окна - Lotus

11.01.2010, 10:37. Просмотров 50056. Ответов 34
Метки нет (Все метки)

Из Лостус скрипта вызывается диалоговое окно на java
и из него надо получить какую строчку выбрал пользователь
почему java? потому что используется jtree дерево.
Вот только проблема в следущем:


Код
Sub Initialize
Dim s As New NotesSession
Dim Java As JavaClass
Dim strP As String, attr As Integer, FileNume As Integer

Dim HomeObj As JavaObject

Dim jSession As New JavaSession
Set jpgClass = jSession.GetClass("Tree")
Set Obj = jpgClass.CreateObject()
Call Obj.run()

Messagebox "!",,"!"
End Sub
после вызова Call Obj.run() окно появляется и сразу сообщение "!"
тобишь запускает отдельным потоком
как отловить нажитие на кнопочку на диалоговом окне и вернуть результат выбора?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2010, 10:37
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ls2j ответ от диалогового окна (Lotus):

Обработка закрытия диалогового окна
Я открываю некий документ в определенной форме в диалоговом окне...

Не обрабатывается событие QueryClose при закрытии диалогового окна
Есть диалоговое окно - когда мы его вызываем из одной формы, то событие,...

вызов Ls-агента с показом диалогового окна из Java-агента
есть Java-агент, надо в нем показать диалоговое окно (картинку в нем показать и...

Ls2j не находит метод
Всем привет, уже второй день воюю с лотусом. Силы на исходе... Сначала общая...

Ls2j Как Подключить На Форму
Подскажите как использовать на форме класс на Java в LS2J.

Jar, агент, ls2j, deployment
Суть есть готовое ява - приложение как запустить его агентом на клиенте От...

34
Xotyt
0 / 0 / 0
Регистрация: 04.08.2008
Сообщений: 408
11.01.2010, 10:48 #2
А в каком месте должен быть возврат стринга? Если ран возвращает, то и используйте вместо колл сразу присваивание.
0
zum
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 3
11.01.2010, 11:20 #3
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
///тут вернуть)
}
});

както так...
токо как так чтото я не соображу. те надо отловить закрытия окна
0
K-Fyry
0 / 0 / 0
Регистрация: 15.12.2006
Сообщений: 641
11.01.2010, 11:37 #4
Вообще лотус-скрипт должен ждать завершения ява-кода. Значит отдельным потоком запускается что-то внутри явы.
Там в ява-коде (в классе Tree, это же кастомный класс?) надо добавить цикл в котором ждать пока AWT/Swing тред не завершится.
0
mvyush
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 2,219
11.01.2010, 11:37 #5
zum
Может в джаве сделать статичную функцию, возвращающую стринг, которая создаёт модальное окно, возвращающее нужное значение в "глобальной переменной"? Типа так:


Код
String result;
public static String getResult() {
//создаём диалоговое окно
//...
return result;
}

//
public void windowClosing(WindowEvent e) {
dispose();
///тут вернуть)
result = что-то нужное
}
});
p.s. Подразумевается, что класс модального окна является внутренним классом для класса с методом getResult
На LS получать так:

Код
Set Obj = jpgClass.CreateObject()
str = Obj.getResult()
0
zum
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 3
11.01.2010, 14:02 #6
Цитата Сообщение от K-Fire
Вообще лотус-скрипт должен ждать завершения ява-кода. Значит отдельным потоком запускается что-то внутри явы.
Там в ява-коде (в классе Tree, это же кастомный класс?) надо добавить цикл в котором ждать пока AWT/Swing тред не завершится.
Ага именно это и надо)
А примерчик моно?

nvy ну у меня почти так и сделанно токо вот лотус не ждет)
0
mvyush
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 2,219
11.01.2010, 14:09 #7
Цитата Сообщение от zum
nvy ну у меня почти так и сделанно токо вот лотус не ждет)
А окно модальное? Если делать так, как я описал выше, то если окно не модальное, функция getResult вернёт пустую строку, а окно останется висеть в параллельном потоке.
0
zum
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 3
11.01.2010, 15:20 #8
попробовал модальное эфект тотже


Код
public class TreeSample extends JDialog
{
String result="";
DefaultMutableTreeNode level0 = new DefaultMutableTreeNode("Корень дерева");
JTree jt = new JTree(level0);
public TreeSample()
{
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
try{
result=jt.getLastSelectedPathComponent().toString();
}
catch (Exception ex) {}
dispose();
}
});
init();
}
public String run()
{
System.out.println("Starting TreeApplic...");
TreeSample mainFrame = new TreeSample();
mainFrame.setSize(400, 300);
mainFrame.setVisible(true);
thys.setModal(true);
return result;
}

Код
    Set Obj = jpgClass.CreateObject()
strP=Obj.run()
Messagebox strP,,"!"
Одно и тож что не так?
0
K-Fyry
0 / 0 / 0
Регистрация: 15.12.2006
Сообщений: 641
11.01.2010, 15:23 #9
Цитата Сообщение от zum
Ага именно это и надо)
А примерчик моно?

nvy ну у меня почти так и сделанно токо вот лотус не ждет)
Примерчика у меня нет. Код класса Tree скиньте сюда, может что посоветуем.
0
zum
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 3
11.01.2010, 16:12 #10
выше класс
0
K-Fyry
0 / 0 / 0
Регистрация: 15.12.2006
Сообщений: 641
11.01.2010, 18:40 #11
В JDialog проблема. Надо его делать модальным. Но setModal(true) если я правильно помню не работает как надо.
Дело в том что должен замораживаться owner диалога (JFrame из которого диалог вызывается). А кто будет owner в Notes, да еще через LS2J, фиг его знает. Явно не главный процесс Notes.

В общем стоит во-первых изменить вызов конструктора на JDialog(Dialog owner, String title, boolean modal), и затем поиграться с нахождением owner-a самого верхнего уровня. Приду завтра на работу, посмотрю у себя в коде, где-то был похожий кусок.
0
zum
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 3
12.01.2010, 11:19 #12
Уже завтра? :KillMe:
0
K-Fyry
0 / 0 / 0
Регистрация: 15.12.2006
Сообщений: 641
12.01.2010, 11:24 #13
Максимум что нашел, это :
dialog = new JDialog(JOptionPane.getFrameForComponent(thys)); , где thys у меня JApplet.

Больше ничего нету
0
zum
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 3
12.01.2010, 14:12 #14
даже если делать через фрейм то замараживается собсвено фрейм
а сам главный процесс Notes идет дальше... запущает и забывает
надо остановить как то именно его... =\
0
K-Fyry
0 / 0 / 0
Регистрация: 15.12.2006
Сообщений: 641
12.01.2010, 14:33 #15
Значит все таки в яве пускать бесконечный цикл в основном треде. Условие выхода из него можно уже сделать как-то в зависимости от завершения диалога.
0
zum
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 3
13.01.2010, 15:03 #16
так и не получилось =\
0
mvyush
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 2,219
13.01.2010, 15:08 #17
А если так:

Код
public class TreeSample extends JDialog
{
String result="";
int toExit = 0; //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
DefaultMutableTreeNode level0 = new DefaultMutableTreeNode("Корень дерева");
JTree jt = new JTree(level0);
public TreeSample()
{
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
try{
result=jt.getLastSelectedPathComponent().toString();
toExit = 1; //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
catch (Exception ex) {}
dispose();
}
});
init();
}
public String run()
{
System.out.println("Starting TreeApplic...");
TreeSample mainFrame = new TreeSample();
mainFrame.setSize(400, 300);
mainFrame.setVisible(true);
thys.setModal(true);
while(toExit == 0){;}//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
return result;
}
p.s. дополнения отмечены комментарием //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
0
zum
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 3
13.01.2010, 16:08 #18
уже лучше =)
так ждет
я бы сказал так лотус зависает на строчке

strP=Obj.run()

Ну можно считать что ждет)
0
mvyush
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 2,219
13.01.2010, 16:27 #19
Цитата Сообщение от zum
уже лучше =)
так ждет
я бы сказал так лотус зависает на строчке

strP=Obj.run()

Ну можно считать что ждет)
Можно сказать, что лотус зависает при открытии любого модального окна :KillMe:. Причём все клиенты разом.
0
zum
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 3
13.01.2010, 17:03 #20
:KillMe: есть у кого-нить еще идеи?
0
13.01.2010, 17:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2010, 17:03
Привет! Вот еще темы с решениями:

Не находит метод при вызове из LS2J
Создал библу в библиотеках. Описал метод как public static boolean...

Использование Библиотеки "base64 Ls2j" И "base64java&qu
Вопрос 1. Как с библитеки "Base64 LS2J" вызвать функцию EncodeBase64? В...

Postgres+JDBC+Connection pool+LS2J
В одном Web прикладе активно используются LS агенты, которые через LS2J...

Ls2j Передача Параметра Notesdocument В Конструктор Javaclass
Добрый день! Возможно ли, если да, то как?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru