JP4526354B2 - 画面作成装置 - Google Patents
画面作成装置 Download PDFInfo
- Publication number
- JP4526354B2 JP4526354B2 JP2004329005A JP2004329005A JP4526354B2 JP 4526354 B2 JP4526354 B2 JP 4526354B2 JP 2004329005 A JP2004329005 A JP 2004329005A JP 2004329005 A JP2004329005 A JP 2004329005A JP 4526354 B2 JP4526354 B2 JP 4526354B2
- Authority
- JP
- Japan
- Prior art keywords
- screen
- event
- layout
- component
- parent
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
- User Interface Of Digital Computer (AREA)
Description
この種の開発ツールを用いてビジュアルユーザインタフェースを構築する場合、目的とする機能を満たす画面を順次に作成し、その画面中の部品情報に基づいて、対応する処理プログラムを記述するという手法が用いられる。
またこの他の開発ツールを用いてこのような画面を作成する場合に、まず画面レイアウトを決定し、その画面レイアウトの中に入力部品や表示部品等の部品を配置することによってレイアウトと部品の積層構造をもつ画面を作成する手法がある。従来、この種の画面を作成する装置として、下記の特許文献1〜3に開示されたものがある。
特許文献2に開示された画面遷移表示装置は、画面の遷移関係を、それぞれの画面と各画面内で画面遷移を引き起こすボタン、各ボタンに関連する遷移先画面の関係をGUI表示し、複雑な画面遷移状況を判り易く表示するようにしたものである。
特許文献3に開示された画面遷移図編集装置は、画面遷移図で使用される画面レイアウト図と画面遷移図とを別個に保存することにより、ある階層の画面レイアウト図を参照して別の階層の画面レイアウト図を作成する場合の労力を削減するようにしたものである。
そこで、1つの画面のレイアウトを決定する際に、1つの画面を複数の相対分割領域に分割し、さらに各分割領域を相対的に再分割して入力部品や表示部品を容易に相対配置可能にする技術が求められている。
また、ビジュアルプログラムは、イベント駆動型プログラムであり、イベント駆動型プログラムは、次のような特徴をもっている。
(1)ユーザが操作を行っていないときは、プログラムは内部処理を行っているか、待機している。
(2)ユーザが何か操作をした時、プログラムはユーザが行った操作(イベント)に対応する処理を行う。
なお、イベントとは、「マウスをクリックする」、「selectキーを押す」、「タイマ割り込みが入る」などのプログラムに対する外部からのアクションを指す。
図18において、1801はサンプル画面であり、次のような構造になっている。まず、画面全体に透明な上下相対2分割部品1803を配置し、画面を2分割する。その後、上の領域にはbitmap部品1804を、下の領域にはリスト部品1805を配置している。なお、リスト部品1805とは携帯電話機の電話帳のように複数の内容をリスト表示するための部品である。
この例では、イベントは画面のトップ1802から子部品(Bitmap部品,リスト部品)へ伝達される。イベントが発生すると、まず画面のトップ1802がイベント処理を試みる。自分の部品でイベントを処理するコードが記述されていない場合は、子部品へイベントを伝達する。
図18の例では、親部品から子部品へイベントが伝達されるようになっているが、子部品から親部品へイベントが伝達されるような実行環境や、任意の順番でイベントが伝達される実行環境もある。
この環境では、特定のキーイベントを複数の部品が処理するコードの記述が存在することになる。
ここで、図18のサンプル画面1801において、リスト部品1805が処理するイベントの重複についてチェックする。
リスト部品1805にイベントが伝達されてくる経路上にある部品は、「画面のトップ」1802と「上下相対2分割部品」1803の2つである。
リスト部品1805が処理するイベントは、図19により「上移動キー押下」、「下移動キー押下」、「選択キー押下」の3種類であることが分る。
リスト部品1805が処理するイベントのうち「選択キー」は経路上の部品が処理していないので、重複は無い。
しかし、「上移動キー」イベントについては、経路上の部品のうち、「上下相対2分割部品」1803が処理しているため、「リスト部品」1805まで「上移動キー」イベントが伝達されない。
「下移動キー」イベントについても「上移動キー」の場合と同じ理由で、「リスト部品」1805まで「下移動キー」イベントが伝達されない。
以上のことから図18のサンプル画面1801では、リスト部品1805の項目間の上下移動が出来ないという現象が発生してしまう。
この現象は、画面上の部品へイベントが渡ってくる経路上に「同一イベント」を「重複して処理する部品が存在する」という条件を満たす場合に発生する。
実行環境の仕様に詳しくない人がプログラムを作成すると、同一イベントを複数の部品で重複して処理する記述をしてしまうという、このような問題に陥りやすい。
各画面に配置された部品について、当該部品が応答するイベント情報と当該部品のイベント受取り順序の上で親子関係にある他の部品識別情報を格納したテーブルと、前記テーブルに格納された情報のうちイベント受け取り順序の方向に存在する親子関係の部品をチェック対象とし、当該イベントに応答する部品が前記テーブルに存在するかをチェックする手段と、チェック結果により、当該イベントに応答する部品を所定の形式で表示する手段とを備えることを特徴とする。
図1は、本発明に係る画面作成装置の実施の形態を示すブロック構成図であり、入力装置を構成するキーボード101及びマウス102、レイアウト対象の画面を表示する表示装置103、メモリ104、レイアウト対象の画面を作成するための処理を行うCPU105を備えている。
メモリ106には、各種テーブル群の記憶領域とプログラム群の記憶領域が設けられ、テーブル群の記憶領域にはイベントテーブル1061、レイアウトテーブル1062、部品テーブル1063、画面構造テーブル1064、部品構造テーブル1065、イベント重複テーブル1066が設けられている。
プログラム群の記憶領域には、画面作成エディタ1071と部品作成エディタ1072、イベント重複チェック部1073、ソースコード生成部1074が記憶されている。
画面作成エディタ1071は、携帯電話機等の情報端末に搭載するビジュアルユーザインタフェースで用いる画面を作成・編集するプログラムである。
部品作成エディタ1072は、所望のレイアウトの画面内に配置するボタンなどの入力部品や表示部品を作成および編集するプログラムである。この部品作成エディタ1072は、新規に部品を作成する場合や、既に1つの画面内に配置されている部品を変更あるいは修正する場合に使用するものである。
イベント重複チェック部1073は、ユーザによって行われたイベントが渡ってくる経路上に同一イベントを処理しようとしている部品がないかをチェックするものである。
ソースコード生成部1074は、画面作成エディタ1071および部品作成エディタ1072で作成された画面を有するビジュアルプログラムのソースコードを生成するものである。
図2において、画面左上には、複数種類の画面レイアウトのアイコンを表示するレイアウトウインドウ201が表示され、その下部には、入力部品や表示部品などの部品を表示する部品ウインドウ202が表示されている。
また、画面右上には、ビジュアルユーザインタフェースにおける画面を編集するための画面編集ウインドウ203が表示され、その下部には画面編集ウインドウ203内の画面における部品を分割領域単位で編集(変更または修正)するための部品編集ウインドウ204が表示されている。
画面編集ウインドウ203は作成・編集対象の画面における相対画面分割の積層構造を表示するツリービューウインドウ2031と、1つの画面の内容を表示するプレビューウインドウ2032で構成されている。
部品編集ウインドウ204は、編集対象の1つの相対分割領域の部品をツリービューウインドウ2031から移動させてその相対分割領域内に配置されている部品を階層構造で表示するツリーウインドウ2041と、このツリーウインドウ2041内の1つの部品の内容を表示するプレビューウインドウ2042から構成されている。
イベントテーブル1061は、ビジュアルユーザインタフェースにおいて何らかの処理を引き起こす契機となるイベントの種別を登録したテーブルであり、例えば図3に示すように構成されている。
例えば携帯電話機のファンクションキーの「上キー押下」操作についてはイベントID=EVT_KEY_UPが登録されている。
レイアウトテーブル1062は、1つの画面を複数に相対分割する分割領域のレイアウトが異なる複数種類の画面レイアウトの定義情報を格納したものであり、その格納情報は図4に示すようにレイアウトNo.10621、レイアウトID10622、分割方向10623の情報が登録されている。
本発明においては、図4の定義の他に、各種の分割の仕方を定義することができる。なお、ベースとなる分割していない画面を“TOP”と定義している。
部品テーブル1063は、画面に配置する複数種類の入力部品等の部品定義情報を格納したものであり、例えば図5に示すように、部品No.10631、部品ID10632、部品名、ビットマップデータの先頭アドレス10634の情報が格納されている。
ここで例示する部品には、コマンドボタン、リスト、ビットマップ、テキスト、テキストボックス、ラジオボタン、チェックボックス、タブといったものが用意されている。
そして、それぞれの部品はビットマップデータ108としてメモリ106内に格納されている。
すなわち、図6(a)に示すように、部品No.10641、部品名10642、部品種別10643、部品No.またはレイアウトNo.10644,処理イベント数10645、イベントID(1)10646〜(n)および親部分No.10650の情報で構成され、各画面分割階層における分割領域および部品毎に、これらの情報が格納されるようになっている。
この画面構造テーブル1064および後述の部品構造テーブル1065では、画面を分割するアイコンも部品(レイアウト部品)として扱っている。例えば、図2の上下方向に画面を相対的に2分割するアイコン2012については、レイアウトNo.10644として「2」が登録され、応答する外部操作イベントとしてイベントID=1(上キー押下)、イベントID=2(下キー押下)が登録されている。
部品構造テーブル1065は、各画面分割階層の各分割領域に配置した部品の種別の情報を画面分割階層別に格納するものであり、例えば図6(b)に示すように、画面分割階層別の部品種別を親子関係で格納するようになっている。
図6(b)においては、部品No.10651、親部品No.10652、子部品数10653、子部品No.(1)10654〜(m)10657の情報を格納するようになっている。
図6(a),(b)に示す画面構造テーブル1064および部品構造テーブル1065の格納内容であった場合、図7(a)に示すような階層構造のレイアウトで部品が配置されていることになる。なお、部品No.は図5の部品テーブル1063で定義されたものである。
また、矢印701は外部操作のイベントの伝達方向を示している。
本発明では、1つの画面について、図7(b)に示すように、必要な部品を積層構造で積み重ねる形式で作成する。
なお、部品(レイアウト用の部品を含む)がそれぞれ処理するイベントは、例えば前述の図19に示したように対応している。
まず、図8に示すように、レイアウトウインドウ201から例えば画面を上下方向に2分割するアイコン2012を選択しドラッグアンドドロップ操作によって画面編集ウインドウ203のツリービューウインドウ2031に配置する。
すると、図9に示すように、ツリービューウインドウ2031に画面分割の積層構造が表示され、上下の分割領域に「部品を置いて下さい」というメッセージが表示される。
また、プレビューウインドウ2032には分割した画面の境界が破線2033で表示され、それぞれの分割領域に部品の配置を促すメッセージ「ドラッグアンドドロップして下さい」が表示される。
そこで、図10に示すように、部品ウインドウ202から例えばビットマップ部品2021をツリービューウインドウ2031内の上側分割領域の「部品を置いて下さい」という表示位置に配置するドラッグアンドドロップ操作を行う。
すると、図11に示すように、ツリービューウインドウ2031の上側の分割領域の「部品を置いて下さい」に代わってビットマップ部品が配置されたことが表示され、またプレビューウインドウ2032には、配置されたビットマップ部品2031のプレビュー画像が表示される。
以上によって、前述の図18に示したような積層構造の画面が作成される。
図13は、レイアウトを作成した時に、内部データが作成され、プレビュー画面とツリービューに反映されるまでの処理手順を示すフローチャートである。
まず、図8におけるレイアウトウインドウ201から画面編集ウインドウ中のツリービューウインドウ2031へレイアウト用のアイコンをドラッグアンドドロップする(ステップ1301)。
次に、変数curDragにドラッグしたレイアウトのレイアウトNoを設定し、更に変数curDropにドロップした部品(もしくはレイアウト)の親部品Noを設定する(ステップ1302)。
そして、図6の画面構造テーブル1064にレコードを1件追加する(ステップ1303)。この確保したテーブルをcurTableとする。
次に、curTable内の部品名として画面内で一意なIDを設定し、更に部品種別として”レイアウト”、レイアウトNoとしてcurDrag、親部品No10650としてcurDropをそれぞれ設定する(ステップ1304)。
次に、図9に示すように画面編集ウインドウ203のツリービューウインドウ2031に追加したレイアウトを追加表示する(ステップ1305)。
次に、curDrop(親部品)がレイアウト用の部品であるかを判定し(ステップ1306)、そうであれば、親の画面領域は、すでに分割表示されているので、今回のレイアウト配置で、親のレイアウトが分割表示された領域の片側を更に分割する。すなわち、プレビューウインドウ2032上で、すでに分割されている親の画面領域の片側を更に分割し、分割した領域の境界を点線で区切る(ステップ1307)。またcurDrop(親部品)がレイアウト用の部品でなかった場合には、親部品領域は分割されていない。このため、プレビューウインドウ2032上で、親画面領域を分割し、境界を点線で区切る(ステップ1308)。
次に、分割した領域上に例えば「部品を置いて下さい。」というメッセージを表示する(ステップ1309)。
以上により、レイアウト配置処理が終了する。
まず、図10に示すように部品ウインドウ202から画面編集ウインドウ203へ、必要な部品をドラッグアンドドロップする(ステップ1401)。
そして、変数curDragにドラッグした部品の部品Noを設定し、また変数curDropにドロップした部品(もしくはレイアウト)の親部品Noを設定する(ステップ1402)。
次に、画面構造テーブル1064にレコードを1件追加する(ステップ1403)。ここでは、確保したテーブルをcurTableとする。
次に、curTableの部品名に画面内で一意なIDを設定し、また部品種別に”部品”、レイアウトNoにcurDrag、親部品No10650にcurDropを設定する(ステップ1404)。
次に、図11に示すように画面編集ウインドウ203のツリービューウインドウ2031に、追加した部品を表示する(ステップ1405)。
次に、プレビューウインドウ2032の部品を配置する階層位置に表示されている「ドラッグアンドドロップして下さい」というメッセージを削除し、ステップ1401でドラッグアンドドロップした部品をプレビューウインドウ2032に表示する(ステップ1406)。
図15は、イベント重複チェック処理関数の例、Node_checkの概要を示すフローチャートである。
この処理はある部品に関して、特定のイベントを処理するプログラムコードを記述しようとする際に、その特定のイベントを先に受取って処理してしまう他の部品が既に存在するかどうかを確認する処理である。
図15に示すフローチャートでは、引数として現在処理を記述しようとしている部品の部品IDとイベントIDを指定する。また本関数例では、図6の部品構造テーブル1065における親部品が子部品より先にイベントを受取るものとし、その親部品がそのイベントに対する処理を持っていなければ、その子部品にイベントを渡すものとする。この例では示さないが、この逆に子部品から親部品へイベントを渡すプログラム開発環境でも同様の処理が適用できる。
図15のフローチャートにおいて、この関数の引数には部品No.とイベントIDを指定する(ステップ1500)。これらは、ツリービューウインドウ2031上でユーザが部品をクリックすることにより、対応する部品No.を画面構造テーブル1065から取得し、ユーザが現在どのイベントに対する処理を記述しようとしているのか指定させることによって、イベントIDを図3のイベントテーブル1061から取得することによって指定する。
この後、イベント重複フラグを初期化し(ステップ1501)、引数により指定された部品に親部品があるかどうか、部品構造テーブル1065により確認する(ステップ1502)。親部品が無ければ、指定された部品が最初にイベントを受取るので、イベント重複がない意味の戻り値=0を設定して、図16に示すイベント重複テーブル1066にその戻り値=0を設定して終了する(ステップ1503)。
しかし、親部品が存在する場合、ステップ1504〜1509のループ(1)の処理において、その親部品が引数で指定されたイベントを処理しているかどうか画面構造テーブル1064の当該部品No.のレコード中の当該イベントIDを確認し(ステップ1505)、対応する処理があれば、イベント重複テーブル1066に部品ID、該当する親部品ID、重複フラグに戻り値=1を設定し、さらに重複イベントIDを設定する(ステップ1506)。
また、図17に示すように、画面編集ウインドウのツリービューウインドウ2031内にイベント重複メッセージ1703を出力し(ステップ1507)、さらにイベント重複がある意味の戻り値として重複フラグ=1を設定し(ステップ1508)、全ての親部品、つまり親の親をTOPまでたどって確認する。戻り値が1の時、イベント重複テーブル1066の、重複フラグが1になっている最後のレコードにある部品IDを持つ部品がこのイベントを処理することになる。
ツリービューウインドウ2031上で、このイベントを処理する部品を図17に示すような特定のマーク1701により表示し、引数に指定された部品は、引数で指定されたイベントを処理できない旨を図17で示すような「×印」のマーク1702で表示し(ステップ1510)、イベント重複チェック用の関数を終了する。
104 メモリ
105 CPU
201 レイアウトウインドウ
202 部品ウインドウ
203 画面編集ウインドウ
204 部品編集ウインドウ
1061 イベントテーブル
1062 レイアウトテーブル
1063 部品テーブル
1064 画面構造テーブル
1065 部品構造テーブル
1066 イベント重複テーブル
1071 画面作成エディタ
1072 部品作成エディタ
1073 イベント重複チェック部
2011 レイアウト用のアイコン
2021 ビットマップ部品
Claims (1)
- 所望の画面レイアウトを決定し、その画面レイアウトの画面中に、イベントの発生に対し親部品が当該イベントに対する処理を備えていなければ子部品に当該イベントを渡すように構成された親子関係にある表示部品及び入力部品を配置して目的とする機能を満たす画面を作成する画面作成装置であって、
前記画面中に配置された部品について、当該部品が応答するイベント情報と当該部品のイベント受取り順序の上で親子関係にある他の部品識別情報を格納したテーブルと、
部品識別情報とイベント識別情報の指定を受付け、指定された部品識別情報に対する親部品の識別情報が前記テーブルに格納されているかをチェックし、格納されていた場合は当該親部品が前記指定されたイベント識別情報に対する処理を備えているかをチェックし、前記指定されたイベント識別情報に対する処理を備えている場合には当該親部品に前記指定されたイベント識別情報に対する処理を備えていることを示すマークを付して表示すると共に、前記指定されたイベント識別情報に対する処理を実行できない子部品をその旨が判るようなマークを付して表示する手段と
を備えることを特徴とする画面作成装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004329005A JP4526354B2 (ja) | 2004-11-12 | 2004-11-12 | 画面作成装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004329005A JP4526354B2 (ja) | 2004-11-12 | 2004-11-12 | 画面作成装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006139569A JP2006139569A (ja) | 2006-06-01 |
JP4526354B2 true JP4526354B2 (ja) | 2010-08-18 |
Family
ID=36620353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004329005A Expired - Fee Related JP4526354B2 (ja) | 2004-11-12 | 2004-11-12 | 画面作成装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4526354B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8677272B2 (en) | 2005-12-13 | 2014-03-18 | International Business Machines Corporation | Graphical user interface design utility |
JP5044811B2 (ja) * | 2006-12-11 | 2012-10-10 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータ・プログラムのメニュー設計を検証する方法及びプログラム |
JP6107337B2 (ja) * | 2012-04-17 | 2017-04-05 | 富士電機株式会社 | 操作記録装置、操作記録方法及び操作記録プログラム |
JP7308343B2 (ja) * | 2018-10-31 | 2023-07-13 | 株式会社オービック | 画面レイアウト作製装置、画面レイアウト作製方法、および、画面レイアウト作製プログラム |
CN112297842A (zh) * | 2019-07-31 | 2021-02-02 | 宝马股份公司 | 具有多种显示模式的自动驾驶车辆 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07200278A (ja) * | 1993-12-28 | 1995-08-04 | Fujitsu Ltd | 図形を用いたプログラミングシステム |
JP2000112738A (ja) * | 1999-11-01 | 2000-04-21 | Hitachi Ltd | メモリ |
-
2004
- 2004-11-12 JP JP2004329005A patent/JP4526354B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07200278A (ja) * | 1993-12-28 | 1995-08-04 | Fujitsu Ltd | 図形を用いたプログラミングシステム |
JP2000112738A (ja) * | 1999-11-01 | 2000-04-21 | Hitachi Ltd | メモリ |
Also Published As
Publication number | Publication date |
---|---|
JP2006139569A (ja) | 2006-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7490314B2 (en) | System and method for exposing tasks in a development environment | |
WO2019204566A1 (en) | Interactive event creation control console | |
CN102033710B (zh) | 用于管理文件夹的方法和相关设备 | |
US8312383B2 (en) | Mashup application processing system | |
KR102118223B1 (ko) | 크로스 윈도우 애니메이션 | |
CN105408885A (zh) | 用于对话框定制的系统和方法 | |
CN109478152B (zh) | 云内容状态框架 | |
US20080244424A1 (en) | Source code generating device | |
CN108369514B (zh) | 用于可执行内容和可执行内容流创建的系统和方法 | |
WO2013109858A1 (en) | Design canvas | |
JP2008203912A (ja) | 画面作成装置及び方法並びにプログラム | |
US20100057770A1 (en) | System and method of file management, and recording medium storing file management program | |
CN109523610A (zh) | 海报的生成方法、装置和存储介质 | |
CN112352214A (zh) | 显示控制装置、显示控制方法和显示控制程序 | |
JP2012064207A (ja) | ホスト装置及びホスト装置のコンテンツ表示方法 | |
US7577912B2 (en) | Suggestive form factors | |
US11922110B2 (en) | Responsive document authoring | |
JP4526354B2 (ja) | 画面作成装置 | |
JP4582701B2 (ja) | 画面作成方法及び装置並びにプログラム | |
JP6668868B2 (ja) | 情報処理装置及び情報処理プログラム | |
JP2007066077A (ja) | Gui生成方法、gui生成装置、コンピュータプログラム及び記憶媒体 | |
CN115237387A (zh) | 一种数字孪生应用的快速开发方法及系统 | |
JP2006113705A (ja) | 情報処理システム及びプログラム | |
KR101933886B1 (ko) | 프로그램 개발 장치 및 객체 편집 방법 | |
JP2004086774A (ja) | 画面構造図モデリング装置、プログラム、画面構造図モデリング方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070703 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100215 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100315 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100514 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100601 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100601 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130611 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |