Реализация табличной части документа

  • Автор темы nvyush
  • Дата начала

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
А как тогда JTable на форме нарисовать? Можно ссылку на базу, плз.

Попутно возник вопрос - а в чём лучше джава-кодить? Я скачал JDK и NetBeans. В jar-проекте NetBeans подключил notes.jar. Взял пример с

На строчке
private Container contentPane;
NetBeans ругается - не знает типа (класса) Container.
swing лучше кодить в NetBeans, там рисовалка есть, для него, для Эклипса есть плага, но глюкавая
зачем вообще открывать форму - всё можно нарисовать в контейнере свинга
 
N

nvyush

swing лучше кодить в NetBeans, там рисовалка есть, для него, для Эклипса есть плага, но глюкавая
зачем вообще открывать форму - всё можно нарисовать в контейнере свинга

А можно чуть подробнее? NetBeans можно подключить к Лотусовой jvm? Если java-код помещать в агента, как это должно выглядеть - вызывать агента с передачей ему NoteId, а в агенте рисовать swing-окно со всеми прибамбасами, правильно я понял?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
-NetBeans неважно - какую жвм подключать (в общем случае) - это в опциях проекта настраивается
-да - можно передавать агенту с параметрами, а можно получить документ "контекст"
типа:
Код:
			session=getSession();
agentContext=session.getAgentContext();
curdoc=agentContext.getDocumentContext();
для тестирования (а ИДЕ) - можно писать ф-цию main, прям в коде и передавать UNID в параметрах запуска
потому как агент эту ф-цию не пользует
-рисовать (как упоминал выше) можно в нетбинсе - добавляем класс в проект с типом JPanel накидываем в него контролы и т.д.
и вот вам демка, я её подправил чуток :) - шобы перемещение по ячейкам изменить и отображение выделенного
Посмотреть вложение demo.zip
 
N

nvyush

Imike не сочтите за наглость, просто уже мозги кипят, а спросить больше не знаю у кого. Короче, слил оба файла в агента, закоменнтил package и дописал в "класс по умолчанию" три строки.
Код:
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
SimpleTableSelectionDemo tableDemo = new SimpleTableSelectionDemo();
String[] args = {""};
tableDemo.main(args);
} catch(Exception e) {
e.printStackTrace();
}
}
}
Компилится без ошибок, но работать на отрез отказывается
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
щас нет, под рукой, Нотуса...
вызывайте java console и смотрите ошибки
main вам не нужен вовсе, просто SimpleTableSelectionDemo.createAndShowGUI() (причем объект table создавать не нужно)
ф-ция статическая
 
N

nvyush

щас нет, под рукой, Нотуса...
вызывайте java console и смотрите ошибки
main вам не нужен вовсе, просто SimpleTableSelectionDemo.createAndShowGUI() (причем объект table создавать не нужно)
ф-ция статическая

Пробовал вызвать SimpleTableSelectionDemo.createAndShowGUI(), но он Private и вызываться отказывается. Я пока не рискую сильно переделывать код.
Под NetBeansom таблица открывалась, вот я и подумал, что смогу добиться того же результата просто "запихнув" всё в агента.
Java console что-то писала про security, но никаких ограничений на выполнение java я в настройка лотуса не нашёл. Сам сейчас тоже не имею доступа к лотусу, поэтому подробнее написать не могу. Агента я создавал в демо-базке, скачанной с nsftips, там есть три java-агента, которые запускаются, но сделать что-то своё по аналогии у меня пока не получается.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
секурити зависит от типа агента (там есть типы секурити, у меня рабтает с умолчальным)
тока что проверил (правда под МакОСХ, Notes 8.51) - всё работает
пакедж не было нужды убирать...
-создаем агент
-Edit project, добавляем классы (кот. я выложил)

правим ф-цию с private на public
в начале агента пишем:
import org.swingxml.*;

в коде далее
SimpleTableSelectionDemo.createAndShowGUI()
 
N

nvyush

секурити зависит от типа агента (там есть типы секурити, у меня рабтает с умолчальным)
тока что проверил (правда под МакОСХ, Notes 8.51) - всё работает
пакедж не было нужды убирать...
-создаем агент
-Edit project, добавляем классы (кот. я выложил)

правим ф-цию с private на public
в начале агента пишем:
import org.swingxml.*;

в коде далее
SimpleTableSelectionDemo.createAndShowGUI()
Мэни сэнькс, завтра попробую. С меня ++
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
скажу больше - таким "импортом в проект" удобно пользоваться, потому что разработку можно вести в любой ИДЕ, а результат реплейсит код в Нотусах (Edit Porject - кнопка Add/Replace File(s) )
 
N

nvyush

скажу больше - таким "импортом в проект" удобно пользоваться, потому что разработку можно вести в любой ИДЕ, а результат реплейсит код в Нотусах (Edit Porject - кнопка Add/Replace File(s) )
Использую NetBeans следующей версии
Product Version: NetBeans IDE 6.7.1 (Build 200907230233)
Java: 1.6.0_16; Java HotSpot(tm) Client VM 14.2-b01
System: Windows XP version 5.1 running on x86; Cp1251; ru_RU (nb)

Под NetBeans'ом всё работает, но Java-файлы получаются с некорректным переводом строки, при импорте в агента лотус их текст "вытягивается" в одну строку, а компилятор выдаёт ошибку, что нехватает '}'. Копированием в ворд и обратно сделал нормальные переводы строк. Импортнул всё без ошибок. При запуске агента окно с таблицей не появляется. Java-консоль содержит следующее:
java.lang.SecurityException: выход с кодом 0
at COM.ibm.JEmpower.applet.AppletSecurity.failSecurity(AppletSecurity.java:602)
at COM.ibm.JEmpower.applet.AppletSecurity.failSecurity(AppletSecurity.java:589)
at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1487)
at COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1455)
at java.lang.SecurityManager.checkExit(SecurityManager.java:760)
at javax.swing.JFrame.setDefaultCloseOperation(JFrame.java:393)
at org.swingxml.SimpleTableSelectionDemo.createAndShowGUI(SimpleTableSelectionDemo.
java:145)
at JavaAgent.NotesMain(JavaAgent.java:13)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
какой Нотус версии?
например для линукс 8.ххх ничего лучше - чем в секурити jvm/lib/security/java.policy написать permission java.security.AllPermission;
не нашёл
типа
grant {
permission java.security.AllPermission;
};

это "нарушит" java секурити, но ИБМ сами виноваты (уроды)

юзать 8.ххх клиентов не рекомендовалбы (очень сырые ещё и тяжёлые)

но мне кажется виной:
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
на него оно и ругаецо
at javax.swing.JFrame.setDefaultCloseOperation(JFrame.java:393)
меняем его на:
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

некорректный перевод каретки - в случ разных платформ
мои файлы, разумеется, писаны в линухах и перевод каретки там соответ. ;), тут пардона прашу (забыл совсем)
 
N

nvyush

Ура, заработало!
ЛН версии 8.0.1 (фев 07 2008), клиента поменяли на 8 волевым решением рук-ва.
Возник вопрос по переводу строк - вордом сделал нормальные для винды, но нетбинс упорно меняет их на линуховые. Нет ли там какой настройки, я чего-то никак не найду.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
не помню где (и вобще возможноли внутри)
для новых файлов - оно само делает как на платформе
а вот утили есть (перед покладеванием файлов, в нетбинс - преобразовать):

могу версию в виндовом формате сделать
 
N

nvyush

не помню где (и вобще возможноли внутри)
для новых файлов - оно само делает как на платформе
а вот утили есть (перед покладеванием файлов, в нетбинс - преобразовать):

могу версию в виндовом формате сделать

Imake, спасибо огромное, более-менее стало получаться.
NetBeens упорно делает переводы строк линуксовыми, так что я написал пакетник, который копирует java-файлы в другую папку и утилиткой конвертит виндовые переводы строк. Запускаю пакетник перед импортом файлов в агента Лотус.
Наткнулся на проблему - получаю ошибку "package javax.swing.GroupLayout does not exist". Как я понял, такого пакета в Лотусовом swing нет, но убрать его из кода не получается - в NetBeens данные участки кода нередактируемые. "Выкусывать" вручную в Лотусе все ссылки на него тоже не очень здорово - слишком часто встречается. Можно ли это победить "малой кровью"?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
ну по поводу пакаджей - надо ВМ для проекта назначить версии 1.4 и придется без этих контролов обходиться
странно что переводы каретки не виндовые...
это для новых файлов?
 
N

nvyush

ну по поводу пакаджей - надо ВМ для проекта назначить версии 1.4 и придется без этих контролов обходиться
странно что переводы каретки не виндовые...
это для новых файлов?

ВМ назначен 1.4.
Проблема в том, что пакидж отвечает за выравниевание элементов на форме, код под него NetBeens генерит сам (на голубом фоне) и редактировать не даёт.
Пробовал у формы менять свойство "Layout Generation Style" с "Standard Java 6 code" на "Swing Layout Extensions Library" при этом пакидж поменялся на org.jdesktop.layout.GroupLayout, но Лотус и его не видит. Комментрирую все ссылки на пакидж в Лотусе, тогда компилируется без ошибок, но стоит чуть подправить расположение элементов на форме, приходится импортировать и соответсвенно комментировать по новой.

Проект создвал "с нуля", но NetBeens упорно не удаляет CR. Переводы каретки уже не считаю большой проблемой, борюсь как указал выше.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
проект д.б. обычный, а не jdesktop
достаточно добывить визуальный класс в проект (новый класс, JFrame типа или JPanel)
и далее накидывать контролы
др. словами не вставлять контейнер, кот. отсут. в Нотусёвой java
и можно подправить темплэйт (в т.ч. генеримый код)

свинг лэйаут - это отдельный jar, совместимость его с jvm 1.4 я не знаю

проверил про темплэйт - действительно низя обойти (иначе визуальность пропадет)
увы - условной компиляции в 1.4 нету :)
можно попробобвать подкласс организовать, но пока не придумал как (типа вынести чать кода, кот. меняется)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
проверил - библа swing-layout-1.0.3.jar работает (кладем в jvm/lib/ext)
нотуса 7.0.4
тока в темлейте надо исправить на DISPOSE_ON_CLOSE (шоб руками не править в нотусах)
 
N

nvyush

проверил - библа swing-layout-1.0.3.jar работает (кладем в jvm/lib/ext)
нотуса 7.0.4
тока в темлейте надо исправить на DISPOSE_ON_CLOSE (шоб руками не править в нотусах)

DISPOSE_ON_CLOSE стоит, контролы использую стандартные swing'овые. Когда выбираю Layout типа Null, код влетает в Лотус на ура (с учётом конвертации, но это мелочи). Одна проблема - в этом случае окно открывается минимального размера, т.е. не свёрнутое в панели задач, а как окно, границы которого уменьшили до нельзя. То же самое впрочем и в NetBeens'е. Нормальный размер только если layout Absolute или Free Design, но их Лотус не понимает. Пытаюсь указать размеры вручную, но пока не соображу как.

Подкладывать библиотеки в jvm/lib/ext пока не научился, а озадачивать этим сервис-деск очень нехочется - юзеров много, сложно отслеживать.
В любом случае премного благодарен за оказанную помощь
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
просто положите в базу (в любой док) jar
при старте агента - проверяйте его присут. в пути ${java.home}/lib/ext
типа: System.getProperty("java.home");
ежели его там нет - детачте туда его и просите юзера передернуть нотес (диалоговое окошко)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!