Nexaweb English | Japanese
search

Platform 4.5.9
2007
12月リリース

 

Java 版の改良

ポップアップの変更

概要

MR版リリースの目的のひとつとして、ポップアップの改良がある。ここでは、特定のアクションのあとにつづく、イベントの順序についてアウトラインを示す。以下にあげる、不具合はコンテキストメニューとしてポップアップ(popup)とポップアップメニュー(popupMenu)を利用した場合に起きるいくつかの問題を示している。(修正されたすべての項目については、4.5.9MRに付属するリストを参照)

8694

popupMenuを閉じたあとのフォーカス遷移の異常

8695

popupMenu を閉じたあとにonBeforeActiveLostイベントが発生しない

8696

popup をクローズしたとき onBeforeActiveLostイベントがいつも発生する

8794

popup を表示したときに popup にフォーカスが遷移しない – popupMenuの異常

8871

712-5181390 712-5233153 – 他のUIウィジェットにフォーカスが移っても

popupMenu が閉じない

 

ポップアップ(popup)とポップアップメニュー(popupMenu)についての新しい機能と、イベントの発生順序についての重要な点を以下に説明する。

 

イベントハンドラの処理の改変
イベントハンドラの処理を改変した。シンタックスが間違っていても(例えば、コンテナと呼び出し処理のあいだにスペースが配置されるなど)これまでは(無視して)動作させていたが、このMR版では動作しないようにした。エラー出力もあわせて改変した。

コンポーネントでの右ボタンクリックとコンテキストボップアップの表示
ポップアップ(popup)とポップアップメニュー(popupMenu)についてイベント発生の順序は次のとおり。

1.       onBeforeActiveLost が発生する (コンポーネントで右ボタンをクリックしたとき)

2.       onActiveLost が発生する

3.       onActiveGained がコンテキストポップアップで発生する (popuppopupMenuのどちらでも発生する)

注記:

    • The onBeforeActiveLost() によってpopup popupMenuが表示されるまえに、選択されているウィジェットに関連したバリデーションを行うことができる
    • コンテキストポップアップでの activeGained イベントによってフォーカスをどのウィジェットにも遷移させることができる
    • 呼び出しもと(invoker)からもフォーカスは遷移する。例えば、textField でテキストを選択していても選択状態が解除される。バグ番号 8794では、選択状態が保持されないことについて報告されていたが、これはtextField textSelectionPolicy属性を"always"に設定することで実現できる

popupMenumenuItemの選択

イベントの発生順序は次のとおり。

1.       popup onBeforeActiveLost が発生する

2.       popup onActiveLost が発生する

3.       呼び出しもと(invoker)onActiveGained が発生する

コンテキストポップアップの境界の外でクリックされたとき

イベントの発生順序は次のとおり。

1.       popup onBeforeActiveLost が発生する

2.       popup onActiveLost が発生する

3.       フォーカスが遷移できるウィジェットが選択された場合、onActiveGained が発生する

このイベント発生の順序では、textFieldでクリックしコンテキストポップアップが表示された場合、ポップアップが消えてもtextField はフォーカスを取得し選択された状態となる。このイベントの順序はPlatform 4.5.9で改変されたため、これより前のバージョンでは、textField を選択するために、ポップアップが消すために一度クリックし、textField を選択するためもう一度クリックする必要があった。

 

popupMenuが表示されている状態でエスケープキーが押された場合
popupMenu
のイベントの発生順序は次のとおり。

1.       popup onBeforeActiveLost が発生する

2.       popup onActiveLost が発生する

3.       呼び出しもと(invoker)onActiveGained が発生する

popup
コンテキストポップアップとしてpopupが定義されている場合、エスケープキーが押されたとき、Platform 4.5.9より前のバージョンでは、なにも起こらなかったが、Platform 4.5.9では、つぎのような動作となる。

1.       エスケープキーが押されたとき、最初にフォーカスを得たウィジェットがエスケープキーをハンドリングすることができる

2.       フォーカスを得たウィジェットがイベントをハンドリングしないとき、次のイベントの発生しpopupはクローズする。

·           popup onBeforeActiveLost が発生する

·           popup onActiveLost が発生する

·           呼び出しもと(invoker)onActiveGained が発生する

コンテキストポップアップが表示されている状態でタブキーが押された場合

popupMenu
コンテキストポップアップとしてpoupMenuが定義されている場合、タブキーが押されたとき、なにも起こらない。これは、望ましい動作と考えられる。


popup
Platform 4.5.9
より前のバージョンではpopupは、タブキーを押した場合フォーカスが他のウィジェットに遷移していた。この問題は、バグ番号 8871として報告されていた。 4.5.9 では、popupが表示されているときにタブキーが押されてもフォーカスはpopupに保持されるよう修正された。

 

メニューバーのメニュー


問題点

4.5.9より前のバージョンでは、フォーカスマネージャで定義された動作としてmenuItemを選択するとフォーカスは次のウィジェットに遷移していた。しかし、この動作は混乱をまねくことがあった。4.5.9では、メニューの呼び出しもと(invoker)のウィジェットの次の遷移先にフォーカスが移るようになった。

 

注記:

menuBarはデフォルトではフォーカス遷移しないため、上記の動作ではクライアントのパネルにフォーカスが遷移する。menuBarにフォーカスを遷移させるには、menuBar focusableにするか、menuBarfocusable であるpanelに配置する。デフォルトではmenuBarfocusableではない。このような設定はアプリケーションのアクセシビリティのために行われる。

 

サブコンポーネントのコンテキストポップアップ

 

問題点
4.5.9
より前のバージョンでは、サブコンポーネント(tableheadercolumnなどがサブコンポーネント)のコンテキストポップアップに問題があった。4.5.9では、次の遷移先のウィジェットにフォーカスが移るようになった。


修正
menuBar
と同様に、メニューの呼び出しもと(invoker)のウィジェットの次の遷移先にフォーカスが移るようになった。headercolumnのコンテキストポップアップでは、tableにフォーカスが移る。

 

Java 版での改良

 

マウスの右ボタンをクリックした場合の振る舞いの選択
マウスの右ボタンをクリックした場合の振る舞いとして、つぎの点が改良された。

  • 選択したcellrowcolumnでマウスの右ボタンをクリックした場合、選択状態を変えずコンテキストポップアップを表示する。コントロールキーやシフトキーが押されていても同様である。
  • 選択されているウィジェットの外でマウスの右ボタンをクリックした場合、クリックした場所にあるcellrowあるいはcolumnが選択されコンテキストメニューが表示される。
  • コントロールキーを押してマウスの右ボタンをクリックした場合、あるいはシフトキーを押してマウスの右ボタンをクリックした場合、クリックした場所にあるcellrowあるいはcolumn を選択中のウィジェットとして追加する。

comboBoxwidthの設定が有効となる
comboBox
widthを設定した場合、リストアイテムのコンテンツの長さに影響されず設定した値が有効となる。

 

window centered="true" を指定した場合の改良
window
centered="true" を指定した場合、windowが描画されるときに中央に再配置されることがなくなった。

 

table (XAL) でのヘビーウエイトコンポーネントのスタイルが改良された
table
でのヘビーウエイトコンポーネントのスタイル(fontbackground color)が正しく描画されるようになった。この問題は、 XAL で発生していた。

 

onMouseDrag のサポート
onMouseDrag
panelwidgetcelllistItemなどのウィジェットで利用できるようになった。

 

dialog window のリサイズについての注記

dialogwindowなどコンテナウィジェットでpanelが表示される場合、panelの内容を表示するため自動的にリサイズされる。コンテナウィジェットのリサイズを手動(マウス)で行った場合、表示されていないpanelが表示されるとき(panelが自動的にリサイズされる前に)、コンテナは自動的にリサイズされない。これは、panelが表示されるときにユーザが指定したリサイズが自動的なリサイズより優先されることになり、動作して正しい。 このため、アプリケーションでpanelを表示するときに適切にリサイズされるにはresizable=”false”とする必要がある。こうすることで、ユーザがコンテナをリサイズできなくなり、コンテナはつねにアプリケーションの仕様どおり自動的にリサイズされることになる。

 

XAL ではlistItem row height "px" がサポートされた
XAL
を利用する場合、listItem row height "px" が指定できるようになった。

 

Ctrl-X onTextChange イベントが生成される
onTextChange
イベントが Ctrl-X (テキストの切り取り) で生成されるようになった。

 

イベントをスタイルシートに保存することができる

スタイルシートのエレメントにイベントを追加することができる。

:

stylesheet.xss:

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

<styleSheet>

<style applyTo="cell">

<normal fontItalic="true" onCreate="macro://addRow.execute('Create')" onDoubleClick="macro://addRow.execute('DoubleClick')" onMouseDown="macro://addRow.execute('MouseDown')" onMouseUp="macro://addRow.execute('MouseUp')"/>

</style>

</styleSheet>

table内のcellのコンテンツを垂直に配置できるようになった

table内のcellのコンテンツを垂直に配置できるようになった。属性名は、"alignVertical" (NXML) "verticalAlignment" (XAL)で、値は"top|bottom|center"を指定する。詳細については、スキーマ定義のドキュメントに記載している。

 

回避策

 

管理番号 8851 - AttributeChangeListener による情報の更新でServerDOMが同期しない

 

つぎのクラス (ドキュメント化はされていないクラス) を利用してこの問題を回避できる。com.nexaweb.client.xml.ThreadBasedSynchronizer

UI DOMが更新される部分を、”push synchronization””pop synchronizations”で囲む。pushのあとに必ずpopを呼ぶ必要がある。

:

 

public void onAttributeSet(AttributeChangeEvent arg0) {

try {

ThreadBasedSynchronizer.pushSynchronizationState(true);

// change some attributes... }

finally {

ThreadBasedSynchronizer.popSynchronizationState(true);

}

}


修正された不具合 (Java)

6882

クライアント: table row height "px"を指定しても有効にならない

7004

712-3701912 - on drop down list scrollbarでなにも表示しない

7711

quickEdit が指定されたtableで、エディターとして指定したcomboBoxで選択した値が表示されない

7955

cell listItem でスタイルが有効とならない

7972

cell alignVertical 属性が機能しない

7973

スタイルシートのエレメントにイベントが設定できない

8026

rowの位置を変更するとNullPointerExceptionが発生する

8032

quickEdit が指定されたtableで、エディターとして指定したcomboBoxで選択した値がcellに反映されない

8234

チャイルドペインのサイズを変更しても、dialog width heightが自動的に更新されない。

8350

Ctrl+X でテキストを切り取り編集しても onTextChange イベントが発生しない

8351

menuItemを選択した後、マウスホイールが正常に動作しなくなる

8369

"selectedStyle"を持つエレメントが UI Documentに追加されたときNullPointerExceptionが発生する

8448

712-4905380 - listItem height "px"が指定されたとき、InvalidXmlExceptionが発生する

8639

onBeforeActiveLostのハンドラでsetTextを使ったとき、コミットしていない状態のIMEのテキストがクリアされない

8694

popupMenuをクローズしたあとのフォーカスの遷移がおかしい

8695

popupMenu をクローズしたあとonBeforeActiveLostイベントが発生しない

8696

popup がクローズしたとき, onBeforeActiveLost イベントが常に発生する

8707

lockedColumn treeTable で指定されたとき、ツリーが展開できない

8715

Undo/RedoonTextChangeイベントが発生しない

8727

macro XModifytableを更新したときテキストが表示されない

8787

712-5056583 - onMouseDrag イベントがスキーマドキュメントにない

8793

tablecell以外のウィジェットのスタイルが正しく反映されない

8794

popup を表示したときフォーカスが取得できない- popupMenuの動作と矛盾する

8795

gridPane (gridLayout) "gridColumnSpan"を設定した場合、必要ないスペースが表示される

8822

712-5072564 - horizontalFlowPane でペアレントとなるウィジェットが垂直に並ばない

8827

FocusService getCurrentFocus() comboBox が取得できない

8836

comboBox にフォーカスが遷移したとき、buttononCommand イベントがaccessKey で複数回呼び出される

8837

comboBoxにフォーカスが遷移したあと、マウスホイールが正常に動作しない

8839

treeTable でマウスがはなれたあともlinkの色が元に戻らない

8851

AttributeChangeListenerで更新された内容が、ServerDOMに同期されない

8855

サーバからのレスポンスでクライアントのDOMが更新されたあと、その内容がServerDOMに同期されない

8858

comboBox width 属性を設定しても反映されない

8863

treetable lockedColumnを指定するとツリーが展開されない

8871

712-5181390 712-5233153 - popMenu 表示後、フォーカスが他のUIウィジェットに遷移してもpopMenuが閉じない

8993

712-5328616 - 右ボタンクリックで選択状態となる

9019

ペインを再描画するとwindow が中央に再配置される


© Copyright 2005-2009 Nexaweb Technologies Inc. One Van de Graaff Drive Burlington, MA 01803 | プライベートポリシー | お問合せ