Как расширить функциональность eclipse java editor с помощью плагинов? - PullRequest
1 голос
/ 16 февраля 2011

Надеюсь, кто-нибудь может мне помочь, давая подсказку и выход. Прямо сейчас я участвую в амбициозном проекте по созданию смешанной математической и программной IDE. После огромного предварительного изучения мы решили использовать затмение в качестве основы и каким-то образом добавить Mathematica, функциональность клена. Вообще говоря, мы хотим сделать возможным ввод математических выражений (a = sin (Pi) + 10 ^ 2) в код Java. Также эти выражения должны быть показаны в виде LaTex, прямо в коде, чтобы сделать его более читаемым для инженеров, чтобы проиллюстрировать код, который мы хотим реализовать, вставляя изображения в комментарии. Поскольку нам нужны все функции редактора Java, на мой взгляд, правильно использовать стандартный редактор Java Eclipse и научить его работать с другими объектами, e. г. изображения.

Итак, мои вопросы: - Может ли кто-нибудь поделиться опытом разработки подобных продуктов? - Может быть, есть что-то вроде того, что мы собираемся развивать?

Вероятно, я напишу больше вопросов, особенно более острых.

Ответы [ 4 ]

3 голосов
/ 17 февраля 2011

Это, безусловно, интересный проект. Как отмечает Гилберт Ле Блан, редактор Java высоко оптимизирован для редактирования кода Java и не предназначен для расширения.

При этом я могу порекомендовать два варианта (один, который играет по правилам, и другой, который идет против них).

  1. Вместо встраивания ваших изображений непосредственно в редактор Java, вы можете реализовать свое собственное наведение курсора через точку расширения org.eclipse.jdt.ui.JavaEditorTextHovers (так, чтобы оно работало как при наведении курсора JavaDoc), или в отдельном представлении, которое сидит рядом с редактором (так что он будет работать как представление JavaDoc). (Это игра по правилам.)
  2. Некоторое время назад я реализовал редактор прототипов, который позволяет редактировать код Java с помощью фрагментов CAL (функциональный язык JVM), встроенных в него. Фрагменты были сохранены в собственном маленьком окошке внутри редактора. Это был прототип, и не все работало гладко, и он также использовал Eclipse 3.2, но это именно то, что вы хотите сделать. Скомпилировать и запустить код будет непросто, но вы можете взглянуть на него ... ну, может быть. Я должен найти вариант исходного кода EPL. А пока просто осознайте, что для того, чтобы взломать Java-редактор, как это, требуются некоторые специальные знания о JDT, и вам нужно быть осторожным с тем, как вы это делаете, чтобы случайно не сломать другие вещи.

Редактировать

Вот zip проекта, который я описал. Он не скомпилируется как есть, но вы можете посмотреть исходный код:

Попробуйте эту ссылку . Это должно быть видно миру.

Необходимо понять, что виджеты SWT StyledText могут сами содержать другие виджеты. Этот проект использует это в редакторах Java.

В частности, посмотрите на класс org.openquark.cal.eclipse.embedded.containing.ContainingEditor, который является подклассом CompilaitonUnitEditor. Этот конкретный класс внедряет второй текстовый редактор (содержащийся редактор) внутри другого редактора (содержащий редактор).

Кроме того, взгляните на org.openquark.cal.eclipse.embedded.conisting.ControlManager. Этот класс управляет различными элементами управления внутри стилизованного текста содержащего CompilationUnitEditor.

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

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

Прошло несколько лет с тех пор, как я посмотрел этот код, но если у вас есть какие-либо вопросы, напишите мне или добавьте к этому вопросу.

0 голосов
/ 26 апреля 2013

Хорошо, как продолжение моего поста выше, вот проект Eclipse Plug-In Development Environment (PDE), который я разработал для этого.Плагин называется LaTeXHover и будет всплывать всплывающая подсказка всякий раз, когда вы наводите курсор мыши на строку комментария, содержащую LaTeX, например:

// $ latex i \ hbar \ frac {\ part} {\частичное t} \ left | \ Psi (t) \ right> = H \ left | \ Psi (t) \ right> $ // $ latex x = \ frac {-b \ pm \ sqrt {b ^ 2-4ac}} {2a} $

LaTeX должен быть разделен с использованием $ latex и $ без лишних пробелов.Он использует jlatexmath для рендеринга.

Я постараюсь лучше упаковать плагин и добавить его в репозиторий Git, и, возможно, добавить его в один из проектов плагинов Eclipse.Как и в прошлый раз, у меня сейчас нет времени на это, но по крайней мере сейчас.Любой желающий продолжить проект отсюда может это сделать.JD

git://github.com/jdbertron/latexhover.git
0 голосов
/ 22 апреля 2013

Я точно знаю, что вы можете сделать. Во-первых, вы можете включить набор символов Unicode. Это позволит вам иметь такие переменные, как greeks, что делает код намного более читабельным. [General-> WorkSpace-> Text Encoding = UTF-8].

// Apply spring soft constraint using Erin Catto's method with Semi-Implicit Euler :
// Figure out (ω,ζ) from node sizes, then k=mEff.ω², c=2.mEff.ω.ζ 
double ω = 2.0*π*f;         // ω (angular frequency) 
double k = meff * ω*ω;      // spring stiffness 
double ζ = (b1.ζ + b2.ζ)/2;         // Average out the damping coefficients
double d = 2.0 * meff * ω * ζ;  // damping coefficient
double γ=h*(d+h*k);             // CFM (Constraint Force Mixing)

Во-вторых, ваше предложение о том, чтобы в коде была видимая формула LaTeX, также является следующим лучшим решением. Я знаю, что это возможно, потому что я написал 3 года назад, но я нигде не могу найти код. Я разместил его на форуме для плагинов Eclipse, но теперь его нет. Хорошей новостью является то, что я пишу это снова, потому что мне это нужно - вот как я нашел ваш пост. На этот раз я использую jlatexmath, который лучше, чем в прошлый раз. Идея была / заключается в том, что вы можете встроить формулу в комментарий как LaTeX, и плагин отображает LaTeX во всплывающей подсказке, когда вы наводите на нее курсор.

Я опубликую ссылку или код здесь, когда я закончу. Большая часть работы заключается в выяснении того, как заставить затмение принять новый элемент управления парением. J.D.

0 голосов
/ 16 февраля 2011

Редактор Java Eclipse состоит из сотен классов Java.В этих сотнях классов Java есть неявное предположение, что представление редактора предназначено только для кода.

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

Если мои комментарии не отговорили вас, вот документация Eclipse для Eclipse Helios, также известная как Eclipse 3.6

.раздел, с которого вы начинаете, называется Руководством разработчика подключаемого модуля JDT.

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

Help -> Help Contents
...