Статьи

Секреты оконной системы NetBeans

Сегодня я узнал о некоторых скрытых параметрах оконной системы NetBeans. Их нельзя установить с помощью элементов пользовательского интерфейса в поддержке графического интерфейса IDE NetBeans для платформы NetBeans, хотя, возможно, так и должно быть. Это очень помогло бы их обнаружению. Насколько я знаю, это настройки, которые использовались годами, поэтому не относятся к 6.5. Я попробовал все ниже успешно с IDE NetBeans 6.1.

  1. Анимационные эффекты для минимизации / максимизации окон. Либо потому, что вам нравится, как окна закрываются / открываются на Mac, либо потому, что вам нравятся косметические эффекты, которые улучшают «крутой фактор» вашего приложения, либо потому, что вы обнаружили, что ваши пользователи сворачивают свои окна, а затем не знают, где они минимизированы, чтобы … минимизировать / максимизировать анимацию, может быть полезно для вас.

    Попробуйте это: поместите следующее в файл «netbeans.conf» (или в файл xxx.conf, где xxx — подходящее имя для вашего приложения) в качестве одного из «netbeans_default_options»:

    -J-Dnb.winsys.sliding.effects = TRUE

    Затем перезапустите приложение, и когда вы свернете / развернете окно, вы увидите небольшой Mac-подобный эффект. Он не работает идеально, и это только начало, очевидно, есть немного кода API, который уже был добавлен в core.windows, но еще не реализован. Если вы обнаружите, что вышеуказанное переключение неудовлетворительно и / или если вам нужны дополнительные похожие на Mac эффекты, вы можете проголосовать за эту новую проблему, которую я создал вокруг всего этого сегодня.

  2. Закрепите любой TopComponent в любом режиме. Режим — это позиция, где TopComponent может быть пристыкован. Режимы бывают трех видов (т. Е. «Типы»): «редактор», «просмотр» и «скольжение». TopComponents, которые закрепляются в режиме «редактора», представляют собой, например, документы редактора в IDE. Они не могут быть свернуты в «скользящий» режим, а затем не могут быть перетащены в режим «просмотра». Попытайся. Например, попробуйте открыть исходный файл Java, а затем перетащите документ редактора, представляющий исходный файл, в окно «Проекты». Когда вы уроните его, документ редактора вернется в режим «редактор». Однако если вы перетащите окно «Свойства» в окно «Проекты», оно останется там, потому что оба компонента TopComponents были назначены режиму «просмотра». (Обратное тоже верно:попробуйте перетащить окно «Свойства» в документ редактора, и вы увидите, что при перетаскивании документ редактора будет возвращаться из того места, откуда он пришел, а не в режим редактирования документа редактора.) Это потому, что окно «Проекты» и окно «Свойства» «просматривать» TopComponents, в то время как редактор документа является «редактором» TopComponent.

    Однако, если вы добавите это в конструктор TopComponent, пользователь сможет перетащить этот конкретный TopComponent в любой режим, независимо от того, какой это TopComponent, и независимо от режима, в который пользователь перетаскивает его. Будьте осторожны, если вы установите это и убедитесь, что вы действительно хотите, чтобы пользователь мог это сделать. Т.е., если ваше приложение является редактором, вы действительно хотите, чтобы пользователь, например, перетащил документ редактора в окно «Вывод»? Итак, просто убедитесь, что вы не получите непреднамеренные эффекты. Тем не менее, если это то, что вам действительно нужно, вот что вам нужно добавить в конструктор TopComponent:

    putClientProperty («TopComponentAllowDockAnywhere», Boolean.TRUE);

    Опять же, если вы установите указанное выше свойство в конструкторе TopComponent, то этот конкретный TopComponent не будет различать, куда пользователь сможет его удалить.

  3. Открыть TopComponent отстыкованным по умолчанию. Допустим, у вас есть TopComponent, который должен быть отстыкован по умолчанию. Как вы этого добиваетесь? Что ж, для этого нам нужно снова взглянуть на режимы. Все режимы по умолчанию имеют свой тип состояния, установленный как «присоединенный», как можно видеть здесь в строке 6 режима редактора (вы можете увидеть «тип вида», о котором я говорил в предыдущем пункте, в строке 5 ниже) :

    <?xml version="1.0" encoding="UTF-8"?>

    <mode version="2.3">
      <name unique="editor" />
      <kind type="editor" />
      <state type="joined" />
      <bounds x="0" y="0" width="0" height="0" />
      <frame state="0"/>
      <active-tc  prev-id="MultiView-java#007Cform#007C_2" />
      <empty-behavior permanent="true"/>
    </mode>

    Если вы хотите, чтобы TopComponent по умолчанию был отстыкован, вам нужно, чтобы «тип состояния» режима, в котором он устанавливается, был установлен как «разделенный», а не как «присоединенный». Кроме того, вам нужно установить в файле «.wstcref» рассматриваемого TopComponent режим, в котором будет пристыкован TopComponent, предполагая, что пользователь закрепляет TopComponent вместо его закрытия. Для этого у вас есть элемент «previousMode» в файле «.wstcref» TopComponent, который вообще не определен по умолчанию, а только когда TopComponent отстыкован, чтобы помнить, куда он должен идти, когда он снова пристыкован :

    <tc-ref version="2.2">
        <tc-id id="DemoWindow6TopComponent">
        <state opened="true">
        <previousmode name="leftSlidingSide" index="0"></previousmode>
    </state>

    Таким образом, в приведенном выше случае, благодаря элементу «предыдущий режим», когда TopComponent пристыкован, он будет подключен к режиму «leftSlidingSide», который является одним из нескольких существующих режимов, которые по умолчанию предоставляет платформа NetBeans.

    Итак, вопрос в том, что вы должны делать физическичтобы создать новый режим (тот, который «отделен», то есть тот, который поддерживает расстыковку), назначить этот режим TopComponent, а затем убедиться, что установлен вышеупомянутый элемент «previousMode»? Выполнение этой XML-конфигурации намного сложнее, чем может показаться на первый взгляд. Сначала запустите ваше приложение, а затем отсоедините TopComponent, который вы хотите отменить по умолчанию. Во-вторых, закройте приложение. Правильный режим и файл wstcref теперь автоматически создаются в папке build / testuserdir / config / Windows2Local приложения (откройте окно «Файлы», чтобы увидеть их). «Анонимные» папки и файлы — это те, которые NetBeans Platform создала при завершении работы, что означает, что эти папки и файлы не являются стандартными режимами в приложении.Содержимое этих файлов — это то, что вам нужно включить в ваше приложение. Итак, в-третьих, в окне «Проекты» разверните узел «этот слой» файла layer.xml и посмотрите в папку Windows2. Вот куда должен идти «анонимный» контент. Наконец, замените содержимое в приложении соответствующим содержимым в папке «build» приложения. Затем очистите, соберите и запустите приложение.

    <?xml version="1.0" encoding="UTF-8"?>
    <mode version="2.3">
        <name unique="undockedEditor" />
        <kind type="editor" />
        <state type="separated" />
        <bounds x="50" y="50" width="536" height="436" />
        <frame state="0"/>
        <active-tc  id="DemoWindowTopComponent" />
        <empty-behavior permanent="false"/>
    </mode>

    Например, выше вы видите определение режима, называемого «undockedEditor». Его «тип состояния» установлен как «разделенный», так что режим является «плавающим режимом», который позволяет отсоединять его TopComponents по умолчанию. Также обратите внимание, что элемент ‘bounds’ полезен для установки начального размера и местоположения плавающего режима. TopComponents, которые будут стыковаться в этом режиме, будут использовать начальные границы, указанные выше. В приведенном выше случае вы можете видеть, что режим будет довольно маленьким. И как режим назначается TopComponent? В файле слоя TopComponent. Когда вы используете «Мастер компонентов окна» для создания TopComponent, там будут созданы необходимые записи. Убедитесь, что, если вы создаете свой собственный режим,Вы проверяете файл слоя, чтобы убедиться, что указан правильный режим (и другие вспомогательные файлы). Вы можете сделать много других вещей, например, например, разрешить сворачивание TopComponent по умолчанию, а затем перевести его в определенный режим по умолчанию, когда пользователь решит его закрепить.

Выше приведены некоторые из многих способов предоставления пользователю большей свободы при использовании оконной системы вашего приложения. Вы также можете ограничить эту свободу, которая является одной из основных областей, в которых оконная система платформы NetBeans изменилась в следующем выпуске 6.5, как подробно описано здесь . На сегодня все! Спасибо Стэну Обрехту, инженеру NetBeans, ответственному за создание многих частей оконной системы, за то, что он рассказал мне об этом сегодня. А теперь развлекайтесь с оконной системой NetBeans.