пятница, 4 июня 2010 г.

JavaFX + Swing + Composer. Как встроить swing-контрол в форму JavaFX с использованием плагина Composer для NetBeans

JavaFX представляет собой достаточно новую и перспективную платформу создания визуальных интерфейсов с возможностью их использования как в web-приложения, так и в dektop. Палитра визуальных компонентов на данный момент в JavaFX весьма скудна и сами разработчики JavaFX рекомендуют использовать в качестве недостающих компоненты Swing. Встал вопрос: как добавить на форму JavaFX обычный компонент Swing. Для ускорения разработки визуальной части в NetBeans существует плагин Composer. Я использую этот плагин и отказываться от него мне не хотелось. Посмотрим что же в итоге получилось.

1. Как подготовить компонент Swing для размещения его на форме JavaFX.
//Создание нашего Swing контрола
var myB = new JButton();
//Сделаем наш контрол встраиваемым в приложение JavaFX с графической сценой
var myJavaFXB = SwingComponent.wrap(myB);
2. Как поместить наш подготовленный контрол в JavaFX сцену.
Класс сцены javafx.scene.Scene имеет поле content, который является списком всех контролов, лежащих в этой сцене. Наша задача поместить подготовленный нами Swing контрол в этот список.

3. Что делать если используем Composer.
Этот плагин помогает конструировать визуальную часть, при этом он генерирует часть кода, которая не доступна для редактирования из NetBeans. По моему, это очень замечательно, но требует изучения мысли разработчиков этого самого плагина. Найдем код, среди того что редактировать нельзя, который отвечает за класс нашей сцены с компонентом Swing. Выглядеть он может примерно так:
masterScene = javafx.scene.Scene {
            width: 640.0
            height: 480.0
            content: javafx.scene.layout.Panel {
                content: getDesignRootNodes ()
            }
};
Тут masterScene это моя визуальная сцена, куда требуется поместить контрол Swing. Прочитаем еще раз пункт 2 этой статьи. Мы имеем content, но не можем дописать эту часть кода прямо здесь, она не редактируемая.
Теперь откроем визуальный редактор Composer для редактирования нашей формы. В инспекторе объектов создаем метод, отрабатывающий по завершению создания нашей сцены. См. рис.
Теперь мы имеем метод, в который необходимо поместить логику добавления нашего подготовленного контрола в сцену. Примерно так.
 //нередактируемый код
masterScene = javafx.scene.Scene {
            width: 640.0
            height: 480.0
            content: javafx.scene.layout.Panel {
                content: getDesignRootNodes ()
            }
};
scenePost_CreationCode(); // <-- вызов нашего только что добавленного метода

... ... ...
// наш только что добавленный метод
function scenePost_CreationCode(): Void {
        // Предварительно установим некоторый значения и расположение на форме
        myB.setText("Нажми меня");
        myJavaFXB.height = 25;
        myJavaFXB.width = 75;
        myJavaFXB.layoutX = 10;
        myJavaFXB.layoutY =10;
        // Добавим наш подготовленный контрол в список сцены.
        insert myJavaFXB into getDesignScene().content;
}
Вот, собственно, и все.

четверг, 8 апреля 2010 г.

Sun Tech Days 2010. День первый.

И так. Вот и случилась международная конференция STD-2010. Первый день уже минул. Давайте попробуем вспомнить что же происходило в этот день и какие результаты и выводы имеем в итоге.

Все началось с обозначения целей мероприятия:
  1. Рассказать сообществу о новых тенденциях в IT
  2. Живое общение специалистов
  3. Дать толчок для разработки, получить новый импульс.
И так по пунктам в конце первого дня. Что нового у нас в тенденциях? Может для кого-то это не новость, но мне сильно бросилось в глаза агрессивное поведение Oracle. Не скажу что это плохо, наверное, даже хорошо для бизнеса такого уровня. А конкретно тенденции следующие. Java активно приобретает черты и механизмы коммерции. Набирает обороты JavaStore, естественно начиная с Америки. Для нас с вами уже существует Java Warehouse, пока в тестовом режиме и без коммерческой составляющей, но всё же. Второй момент это активное развитие JavaFX. Я так скажу, все это мероприятие в основном направлено дать мощный толчок развитию программирования с применением JavaFX. Эта технология становится прямым конкурентом SilverLight. Развиваются средства разработки UI с применением JavaFX. Короче, главная тема сегодня - JavaFX повсюду. Лично я возвращаюсь в Москву и ныряю с головой в эту тему.
А как с общением? Разумеется, основные доклады на английском языке, это несколько осложняет общение с докладчиками. Но мне не понравилось следующее: поговорить особо не с кем. В основном на конференции одни студенты и сама обстановка не располагает к общению между посетителями. Но вот на тематических сдендах можно было поговорить со специалистами и выяснить все интересующие вас вопросы. Думаю этого не мало, но живых дискуссий по темам я что-то не заметил, возможно такой задачи организаторами и не ставилось.
Теперь посмотрим какие импульсы были даны в первый день. Я вам не скажу за всю Одессу, вся Одесса очень велика, но я пару таких импульсов получил однозначно. Во первых это JavaFX. Во вторых это пересмотр своего отношения к UI . Конкретных и бесповоротных выводов делать рано, но обдумать и попробовать применить уже пора.

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

Завтра продолжение. Посмотрим, послушаем. Вполне вероятно что можно будет услышать еще про какую-нибудь очень интересную вещь, если такая попадется,то я обязательно про нее напишу.

понедельник, 1 марта 2010 г.

Как начать использовать C++, Qt4, MinGW и NetBeans для программирования

Иногда случается так что приходится возвращаться в технологиям, которыми не пользовался уже давно. Так случилось и в этот раз. Было предложено реанимировать проект на Qt. С тех времен когда я программировал на С++ с использованием Qt3 прошло несколько лет. Многие вещи забылись или вовсе перестали существовать, а многое изменилось до неузнаваемости.

Вопросы возникли сразу и не отличались от вопросов, которые задают новички программирования. А именно какие библиотеки взять, где взять, как использовать, какую среду разработки применять и т.д. Для разработки текущих проектов я использую NetBeans6.8, по этому очень хотелось остаться именно в этой среде. Реанимируемый проект разрабатывался с использованием какой-то версии Qt4 и компилировался MinGW. И так, цель статьи описать телодвижения по подготовке рабочего инструментария для работы в этих условиях дабы не забыть что и как если придется устанавливать все заново.

1. Качаем и ставим необходимые библиотеки и прочий инструментарий

Что нам понадобится:
  1. Библиотека Qt4
  2. Компилятор MinGW
  3. MSYS
  4. NetBeans
Разберем что где взять и для чего.
Qt. Это кросссплатформенный фреймфорк для разработки приложений с графическим пользовательским интерфейсом. По-Русски это библиотеки графических контролов(и не только), используя которые, программу можно компилировать под разные операционные системы. Изначально это были просто библиотеки, сейчас разрослись до фреймворка и владеет им Nokia. Есть версия для бесплатного использования под лицензией LGPL и есть коммерческая версия. Здесь речь пойдет о бесплатной версии. И так. Идем на сайт Qt. Переходим в раздел скачивания бесплатной версии (Загрузки -> LGPL). Видим множество ресурсов для загрузки.  Можно скачать отдельно библиотеку(Qt:Framework Only), а можно SDK. Там же можно скачать прочие полезные приложения, утилиты и библиотеки, но речь не о них. С поправкой на вашу операционную систему качаем SDK, т.к. это тот минимальный набор "для счастья". Если есть желание, то можно все качать по отдельности. В SDK входит: a) Qt4 включая Qt Designer-визуальный редактор формочек, b)компилятор MinGW, с) Qt Creator IDE - редактор и отладчик исходного кода.
Качаем, инсталлируем. Путь для установки можно выбрать любой. После установки можете запускать Qt Creator IDE(...\bin\qtcreator.exe) и ударно программировать. Qt Creator - редактор как редактор, практически все что необходимо умеет, описывать не стану, достаточно внешнего вида.

Компилятор MinGW. Один из компиляторов для С++. отдельно про него почитать и скачать его можно на официальном сайте. Там же есть система интерпретации консольных команд MSYS.
MSYS.( "Minimal SYStem") Представляет собой систему интерпретатора командной строки Bourne Shell. Предложена в качестве альтернативы Майкрософта cmd.exe, предоставляет среду командной строки общего назначения. Без нее никак при использовании NetBeans. Идем сюда, читаем, качаем. Или просто качаем последнюю версию 1.0.11 на момент написания статьи. Инсталлируем. Внимание! При установки открывается консольное окно(о ужас) в котором что-то написано по-англицки. Читаем, жмем "y", когда попросит ввести путь к библиотеке Qt, то вводим путь установки Qt на этапе, когда вы ставили SDK(без bin, просто путь к Qt, к примеру "<куда поставили SDK>\qt"). Если путь правильный, то все пройдет удачно и в конце выведется веселая фраза об отсутствии make.exe.
NetBeans. Если еще не установлен, то заходим на страницу скачки NetBeans. Качаем, ставим, указываем при установке что хотим писать код С++. Если же у вас уже давно стоит NetBeans, но без плагина С++, то запустите инсталяшку и доставте необходимую галочку.

Теперь все готово чотбы запустить NetBeans, поднастроить его и приступить наконец-то к работе.

2. Настройка NetBeans.

Стартуем нашу любимую среду. Заходим "Tools -> Options". Выбираем закладочку "С++". Нужно создать новый Tools Collection в списке слева. Нажимаем "Add...". В Base Directory указываем директорию "bin", где стоит наш компилятор MinGW, который установился совместно с SDK в самом начале(<куда поставили SDK>\mingw\bin). Выберите в Tool Collection Family требуемый компилятор, в нашем случае это MinGW. Жмем ОК и видим что создался нужный итем в коллекциях и NetBeans подтянул все требуемые пути для компилятора. Но поле Make Command осталось пустое. Этот make используем из MSYS. Укажите make.exe, который лежит в bin там где у вас стоит MSYS(<куда поставили MSYS>\msys\1.0\bin\make.exe).
Вот примерно и все. На картинке можете посмотреть как примерно это должно выглядеть.

3. Добавление путей в операционную систему

Для того, чтобы Windows(в моем случае) видела требуемые библиотеки для запуска готовых приложений, а NetBeans смог запускать Qt Designer(<куда поставили SDK>\qt\bin\designer.exe) для редактирования визуальных форм, нужно в переменных среды в системную переменную Path прописать путь к папке bin в Qt(<куда поставили SDK>\qt\bin\).

4. Программирование

Теперь можно приступить к тому, ради чего все это затевалось. Тут все стандартно. В NetBeans заходим "File -> New Project... -> (C++ / QtApplication)".