Как я могу добавить функциональность пользовательского ввода в мой плагин eclipse?

Я разрабатываю плагин в eclipse, который может генерировать текстовый файл (на основе пользовательского ввода) и запускать сценарий Perl. Я могу легко создать простой плагин (например, Hello World) и добавить к нему новые меню и команды. Я понимаю, как эти вещи связаны друг с другом, но место, где я застреваю, — это пользовательский ввод.

Как я могу попросить пользователя ввести свой выбор? Я имею в виду, какую точку расширения я должен использовать, чтобы пригласить его на свидание? Я не могу найти ничего, что могло бы попросить пользователя ввести данные. Как только я смогу заставить его ввести необходимую информацию, я могу легко получить доступ к этой информации, чтобы двигаться дальше.

ПЛЗ. ПРИМЕЧАНИЕ: я впервые в онлайн-сообществе, поэтому я постарался быть как можно более подробным в своем описании. Я новичок в eclipse и имею очень базовые знания Java. Я взял несколько уроков Java онлайн от Марка Декстера. У меня есть твердое понимание и опыт работы в C++.


person user4252523    schedule 26.01.2012    source источник
comment
Возможно, я неправильно понимаю ваш вопрос, но вы должны иметь возможность зарегистрировать действие в рабочей среде, а затем использовать этот хук действия, чтобы открыть диалоговое окно или предоставить пользователю другой способ взаимодействия с вашим плагином.   -  person TK Gospodinov    schedule 27.01.2012
comment
Прежде всего спасибо за ответ. Я не знаю, что означает регистрация действия в верстаке? Я считаю, что это происходит автоматически, когда вы добавляете точку расширения в свой плагин. И я думаю, что могу легко вызвать диалог, используя org.eclipse.ui.menus. Ты согласен со мной??   -  person user4252523    schedule 27.01.2012


Ответы (3)


Продолжение моего комментария выше (извините, я не уложился в ограничение в 600 символов для комментариев, поэтому я добавляю это как возможный ответ на ваш вопрос) - Быстрый поиск привел меня к этому - http://www.eclipse.org/articles/article.php?file=Article-action-contribution/index.html. Вы можете использовать действия, чтобы легко добавлять кнопки панели инструментов, пункты меню и т. д., которые обрабатываются вашим плагином. Короче говоря, так вы подключаете функциональность к рабочему месту. Я рекомендую проверить ссылку выше, чтобы лучше понять. Что касается сбора входных данных, вы можете использовать диалог JFace (http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse% 2Fjface%2Fdialogs%2FDialog.html). Существует множество готовых диалогов, которые могут оказаться полезными, поэтому я рекомендую провести небольшое исследование, чтобы увидеть, что лучше всего подойдет для вашего варианта использования. Удачи!

person TK Gospodinov    schedule 27.01.2012
comment
не могли бы вы предложить мне что-нибудь о SWT? Я создал класс Java (SWT) и теперь хочу интегрировать его с моим существующим плагином. Как вы думаете, если это возможно? Можете ли вы пролить свет на это? Спасибо ТК. 8) - person user4252523; 01.03.2012

Начало разработки подключаемого модуля Eclipse может быть немного сложным.

Типовой ответ: я предполагаю, что вы создали новый проект плагина с шаблоном «hello, world command». Если нет, вы можете легко это сделать. Это поможет вам начать работу. В этом примере проекта eclipse создал для вас простое меню. Я не буду вдаваться в подробности, но, по сути, вы создаете команду (org.eclipse.ui.commands) и связываете ее с каким-либо местом в рабочей среде, например, с меню или значком на панели инструментов (org.eclipse.ui.menus). ). Затем вам нужно создать что-то, что будет обрабатывать эту команду, например, когда она выполняется (пользователь щелкает меню). Это делается с помощью обработчиков (org.eclipse.ui.handlers), а обработчики — это когда вы хотите, чтобы ваш код вошел.

  1. Откройте файл «plugin.xml» в вашем плагине и перейдите в раздел «Расширение».
  2. Разверните ветку "org.eclipse.ui.handlers" и выберите единственный элемент "(handler)".
  3. Нажмите на ссылку «класс» в правой части редактора, и вы перейдете к сгенерированному классу.
  4. Ваш код переходит к методу «выполнить». Это то, что будет запущено, когда пользователь выполнит команду. В вашем случае, если вы хотите запросить ввод, вы можете использовать диалог ввода:

Код:

public Object execute(ExecutionEvent event) throws ExecutionException {
       InputDialog dlg = new InputDialog(
          HandlerUtil.getActiveShellChecked(event), "Title",
          "Enter text", "Initial value", null);
      if (dlg.open() == Window.OK) {
        // User clicked OK; run perl
        String input = dlg.getValue();
        // TODO:do something with value
      }
      return null; 
 }  

Нет, чтобы запросить у пользователя ввод, вам нужно будет показать диалог. Я предлагаю вам просмотреть этот хороший учебник: http://www.vogella.de/articles/EclipseDialogs/article.html, в котором это описано очень подробно.

Длинный ответ — посмотреть на http://www.vogella.de/articles/EclipsePlugIn/article.html и http://www.vogella.de/articles/EclipseCommands/article.html, чтобы ознакомиться с основами Eclipse RPC и команд.

Наконец, вам также нужно будет заглянуть сюда http://www.vogella.de/articles/EclipseJobs/article.html, чтобы понять, как выполнять более длительные задачи, такие как Perl-скрипт, о котором вы говорите.

person fikovnik    schedule 03.02.2012
comment
У меня, кажется, проблема с форматированием — здесь оно хорошо отформатировано: gist.github.com/1733662 - person fikovnik; 04.02.2012
comment
огромное спасибо за фиковник.... это действительно помогает подтвердить многие вещи, которые я читал... я не могу дать вам оценки, потому что мой представитель недостаточно хорош, чтобы оценить... еще раз спасибо - person user4252523; 06.02.2012
comment
Вы так мне помогли, что у меня нет слов, чтобы описать, как я вам благодарен. Но откуда вы взяли всю эту информацию о разработке плагинов? Я занимаюсь этим уже несколько недель, но так сложно собрать воедино все кусочки информации, которые я нахожу в Интернете. Пожалуйста, порекомендуйте. Спасибо - person user4252523; 08.02.2012
comment
Добро пожаловать (может быть, вы можете пометить вопрос как отвеченный). Книга RCP — хорошее начало: eclipsercp.org, которая поможет вам начать и понять основы. Затем я бы порекомендовал проверить исходный код eclipse и просмотреть код. Я использую плагин Eclipse Spy (eclipse.org/pde/incubator/spy) каждый раз, когда я нахожу функциональность, которую я хотел бы иметь, а затем смотрю в соответствующий источник. Здесь также много информации: toedter.com - person fikovnik; 10.02.2012
comment
привет fikovnik, недавно я узнал о SWT (набор программных виджетов). Он имеет довольно много отличных функций, которые могут быть действительно полезны для меня. Мне было интересно, есть ли способ включить этот Java-класс, который я написал (т.е. SWT), в мой существующий плагин? Можете дать какие-нибудь ссылки на меня? Благодарность!!!! - person user4252523; 01.03.2012

В Eclipse нет точек расширения, используемых для ввода информации от пользователя. Для этого вы обычно используете диалоговое окно или представление в зависимости от конкретного варианта использования.

person Tonny Madsen    schedule 26.01.2012
comment
Скажите, пожалуйста, что именно вы имеете в виду под просмотром? Я просто поражен всеми новыми вещами, с которыми сталкиваюсь. Относится ли представление к обычным представлениям, таким как проводник пакетов, журналы ошибок, проблемы и т. д.?? Было бы здорово, если бы вы могли просто дать мне ссылку на просмотры, о которых вы говорите. БЛАГОДАРНОСТЬ!!!! - person user4252523; 27.01.2012
comment
В некоторых случаях может потребоваться, чтобы область ввода была открыта все время, чтобы в любой момент можно было вносить изменения в значения в этой области. Это можно сделать, открыв диалоговое окно для внесения изменений в существующие значения, но это также можно сделать с помощью представления в Eclipse, в котором текущие значения могут быть изменены напрямую. Всякий раз, когда вы вносите изменения, они немедленно отражаются в результатах. В Eclipse представление свойств можно рассматривать как пример, так как вы можете напрямую изменить значение для вспомогательного объекта. - person Tonny Madsen; 27.01.2012