(57)【要約】【課題】本発明は、ＧＵＩの開発を支援する開発ツールキットを提供することを課題とする。【解決手段】上記課題を解決するために、本発明に係るプログラムは、アプリケーションの開発を支援するための開発ツールキットとしてのプログラムであって、ＧＵＩ部品と、機能情報とを関連付けると、自動的にＧＵＩ部品に対して、機能情報により特定される機能の利用可否に関する情報を管理する管理手段に問い合わせを行うための命令を関連付ける関連付け工程をコンピュータに実行させることを特徴とする。【選択図】図５
2010039841.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションの開発を支援するための開発ツールキットとしてのプログラムであって、
ＧＵＩ部品と、機能情報とを関連付けると、自動的に前記ＧＵＩ部品に対して、前記機能情報により特定される機能の利用可否に関する情報を管理する管理手段に問い合わせを行うための命令を関連付ける関連付け工程をコンピュータに実行させるためのプログラム。
【請求項２】
前記関連付け工程は、ＧＵＩ部品と機能情報とを関連付けると、さらに、前記機能情報により特定される機能の利用可否に関する情報を管理する管理手段への問い合わせに対する応答の結果に応じて前記ＧＵＩ部品の表示状態を決定するための命令を、自動的に前記ＧＵＩ部品に関連付けることを特徴とする請求項１に記載のプログラム。
【請求項３】
アプリケーションの開発を支援するための開発ツールキットとしてのプログラムであって、
前記アプリケーションが表示手段に表示させる表示画面に配置されるＧＵＩ部品と、機能情報とを関連付けると、自動的に前記アプリケーションに対して、前記機能情報により特定される機能の利用可否に関する情報を管理する管理手段に問い合わせを行うための命令を関連付ける関連付け工程をコンピュータに実行させるためのプログラム。
【請求項４】
前記関連付け工程は、前記ＧＵＩ部品と機能情報を関連付けると、さらに、前記機能情報により特定される機能の利用可否に関する情報を管理する管理手段への問い合わせに対する応答の結果に応じて前記表示画面でのＧＵＩ部品の表示状態を決定するための命令を、自動的に前記アプリケーションに関連付けることを特徴とする請求項３に記載のプログラム。
【請求項５】
アプリケーションの開発を支援するための開発ツールキットとしてのプログラムであって、
ＧＵＩ部品と、機能情報と、前記機能情報により特定される機能の利用可否に関する情報を管理する管理手段に問い合わせを行うための命令とのセットを含んでおり、
前記アプリケーションが表示手段に表示させるための表示画面に、前記ＧＵＩ部品が配置されることを検知すると、自動的に、前記アプリケーションに対して、前記セットのうち前記管理手段に問い合わせを行うための命令を実行するためのソフトウェアを関連付ける関連付け工程をコンピュータに実行させるためのプログラム。
【請求項６】
機能情報と関連付けられたＧＵＩ部品を表示手段に表示させるための命令をアプリケーションから受取る受取り工程と、
前記受取り工程で前記命令を受取ると、前記機能情報により特定される機能の利用可否に関する情報を管理する管理手段に問い合わせを行う問い合わせ工程と、
前記問い合わせ工程での問い合わせに対する応答の結果に応じた表示状態のＧＵＩ部品を表示手段に表示させるように制御する制御工程とをコンピュータに実行させるためのプログラム。
【請求項７】
前記関連付け工程は、ＧＵＩ部品と機能情報とを関連付けると、さらに、過去の前記応答の結果に応じた表示状態でＧＵＩ部品を表示手段に表示させる命令を、前記ＧＵＩ部品に関連付け、今回の応答の結果を受け次第、前記応答の結果に応じた表示状態へＧＵＩ部品の表示状態を変更するための命令を、前記ＧＵＩ部品に関連付けることを特徴とする請求項２に記載のプログラム。
【請求項８】
過去の前記問い合わせ工程での問い合わせに対する応答の結果に応じた表示状態のＧＵＩ部品が表示手段に表示されるように制御する制御工程と、
今回の前記問い合わせ工程での問い合わせに対する応答の結果を受け次第、前記応答の結果に応じた表示状態のＧＵＩ部品が表示手段に表示されるように制御する制御工程とをコンピュータに実行させるための請求項６に記載のプログラム。
【請求項９】
前記問い合わせ工程は、前記機能情報により特定される機能の利用可否に関する情報を管理する管理手段が複数存在する場合に、それぞれの管理手段に問い合わせを行い、
前記複数の管理手段の一つの管理手段から応答があった場合に、
前記応答の結果と、過去の前記問い合わせ工程での問い合わせに対する応答の結果から前記機能情報により特定される機能の利用可否を判定して、ＧＵＩ部品の表示状態を決定する決定工程と、
前記決定工程により決定された表示状態のＧＵＩ部品が表示手段に表示されるように制御する制御工程と、
前記問い合わせ工程による問い合わせに応答していない管理手段から応答結果を受け次第、前記機能情報により特定される機能の利用可否を再判定して、前記再判定の結果に応じた表示状態のＧＵＩ部品を表示手段に表示させるように制御する制御工程とをコンピュータに実行させるための請求項８に記載のプログラム。
【請求項１０】
前記機能情報に関連付けられたＧＵＩ部品が複数存在する場合に、前記機能情報により特定される機能の利用可否に関する情報を管理する管理手段からの応答結果に応じて、前記ＧＵＩ部品の表示状態を決定する工程をコンピュータに実行させるための請求項１乃至９のいずれかに記載のプログラム。
【請求項１１】
前記機能情報に関連付けられたＧＵＩ部品が複数存在する場合に、前記ＧＵＩ部品の表示状態が変化した場合に、前記機能情報により特定される機能の利用可否に関する情報に応じて、前記ＧＵＩ部品に関連する他のＧＵＩ部品の表示状態を決定する工程をコンピュータに実行させるための請求項１乃至１０のいずれかに記載のプログラム。
【請求項１２】
機能情報により特定される機能の利用権限を判定する利用権限の判定工程と、
前記利用権限の判定工程において、利用権限が無いと判定された場合に、利用権限が無いことを示すエラー情報を発行する工程と、
前記エラー情報と、エラーが発生したときのＧＵＩ部品の表示状態とを関連づけてエラー履歴として保存する工程と、
前記エラー履歴を参照して、次回のＧＵＩ部品の表示状態を決定する工程とをコンピュータに実行させるためのプログラム。
【請求項１３】
利用権限の設定が変更されたこと検知すると、エラー履歴を削除する工程をコンピュータに実行させるための請求項１２に記載のプログラム。
【請求項１４】
機能の利用可否に関する情報が、ユーザ毎の機能に対する利用権限、利用可能回数のいずれかに関する情報であることを特徴とする請求項１乃至１１のいずれかに記載のプログラム。
【請求項１５】
請求項６乃至１３のいずれかに記載のプログラムをインストールした画像形成装置。
【請求項１６】
前記ＧＵＩ部品のソースコードの生成は、前記ＧＵＩ部品の表示の仕方についての情報を含むテーブルを用いて行われることを特徴とする請求項４乃至６に記載のプログラム。
【請求項１７】
機能情報と関連付けられたＧＵＩ部品を表示手段に表示させるための命令をアプリケーションから受取る受取り工程と、
前記受取り工程で前記命令を受取ると、前記ＧＵＩ部品の機能属性値を合算した情報を用いて、前記機能情報により特定される機能の利用可否に関する情報を管理する管理手段に問い合わせを行う問い合わせ工程と、
前記問い合わせ工程での問い合わせに対する応答の結果に応じた表示状態のＧＵＩ部品を表示手段に表示させるように制御する制御工程とをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーション開発を支援するための開発ツールキットとしてのプログラムおよび該プログラムをインストールした画像形成装置に関する。
【背景技術】
【０００２】
従来から、アプリケーションをインストールしたりアンインストールすることが可能な複合機が提案されている（特許文献１）。こうした複合機のうち、ハードウェアやそのハードウェア上で動作するアプリケーションプラットフォーム（ＯＳや、ＯＳ上で動作するＪＡＶＡ（登録商標）プラットフォーム）に関しては、複合機ベンダーが開発を行っている。一方、そのアプリケーションプラットフォーム上で動作するアプリケーションについては、複合機ベンダーと提携するサードパーティが中心となって開発を行っている。
【０００３】
また、従来から、複合機において、ユーザ（又は、そのユーザの所属するグループ）ごとに利用できる機能をＧＵＩ上で制限することが行われている（特許文献２〜５）。具体的には、例えば、ユーザの役職が低い場合に、白黒コピーは指示可能だがカラーコピーは指示不能なＧＵＩを表示画面に表示している。このような装置について以下で簡単に説明する。
【０００４】
上記のような機能制限が課されたＧＵＩを有する装置では、まず、ユーザ識別アプリケーションが、操作パネルからユーザにユーザコードを入力させたり、ＩＤカードを使用させたりすることでユーザを識別する。そして、その識別結果をアプリケーションプラットフォーム上で動作するアクセス制御部に送る。
【０００５】
そして、アプリケーションプラットフォームで動作するアクセス制御部は、その識別されたユーザに対して許可すべき機能をテーブル（各ユーザの役職を示すテーブル）から判断する。例えば、識別されたユーザの役職が低い場合には、白黒コピーは許可すべきだが、カラーコピーは許可すべきでないと判断する。そして、その判断した情報（機能制限判断情報）を、コピー機能を司るアプリケーションの夫々に送る。ここで、機能制限判断情報とは、ＧＵＩの機能に制限を課すか否かを判断するための情報である。
【０００６】
情報を受け取ったアプリケーションは、白黒コピーは指示可能だがカラーコピーは指示不能なＧＵＩを表示画面に表示する。
【０００７】
【特許文献１】特開２００２−２８７９９０号公報
【特許文献２】特開２０００−３５７０６４号公報
【特許文献３】特開２００２−１７８５６７号公報
【特許文献４】特開２００２−２４０３９８号公報
【特許文献５】特開平１０−５８７９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、こうした技術には、以下に示すような問題がある。例えば、コピー機能を司るアプリケーションを第三者（サードパーティ）が作成するとする。このような場合に、設計の手間の関係で、（アプリケーションプラットフォームで動作する）アクセス制御部から送られてきた機能制限判断情報を無視するような設計がなされてしまうことがある。
【０００９】
このような場合、その第三者の作成したアプリケーションを用いれば、どんなに役職の低いユーザであっても、白黒コピー、カラーコピーが許可されるＧＵＩがそのユーザの前に表示されることになってしまう。
【００１０】
本発明は、上記の課題を鑑みてなされたものである。即ち、アプリケーションプラットフォーム上から送られてくる機能制限判断情報に対応したＧＵＩの開発を支援する開発ツールキットを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明に係るプログラムは、アプリケーションの開発を支援するための開発ツールキットとしてのプログラムであって、ＧＵＩ部品と、機能情報とを関連付けると、自動的にＧＵＩ部品に対して、機能情報により特定される機能の利用可否に関する情報を管理する管理手段に問い合わせを行うための命令を関連付ける関連付け工程をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、アプリケーションプラットフォーム上から送られてくる機能制限判断情報に対応したＧＵＩの開発が容易になる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【００１４】
＜実施形態１＞
以下で、図面を参照して、実施形態１について説明する。
【００１５】
（開発ツールキットの説明）
図１は、本発明に係る開発ツールキットの概略を示す図である。開発ツールキットには、開発用アプリケーションＫ１０１、ＧＵＩ部品群Ｋ１０２、機能ＡＰＩライブラリＫ１０３が含まれる。開発用アプリケーションＫ１０１は、通常のパーソナルコンピュータ（ＰＣ）のような汎用情報処理装置上で動作する開発用のソフトウェアである。
【００１６】
図１の開発用アプリケーションＫ１０１は、単体で動作するソフトウェアとして開発者に提供されても良いが、汎用の統合開発環境のプラグインとして提供されても良い。例えば、開発用アプリケーションＫ１０１は、統合開発環境として一般に知られているＥｃｌｉｐｓｅのプラグインとして提供されても良い。
【００１７】
図１のＧＵＩ部品群Ｋ１０２は、複合機のＧＵＩ操作パネルに表示するためのソフトウェアである。例えば、ＧＵＩ部品群Ｋ１０２は、ボタン、ラジオボタン、チェックボックス、リストボックス、パネル、ウィンドウなどを含む。従って、本実施形態（及び、これ以降の実施形態）においては、ＧＵＩ部品とは、ボタン、ラジオボタン、チェックボックス、リストボックス、パネル、ウィンドウの何れかを示す。なお、本明細書において、ＧＵＩ部品とは、ユーザからの指示を受け付けるために表示される画像を意味する。例えば、ユーザは、この画像にカーソルを合わせる、あるいは、この画像の（ディスプレイ上の）表示位置をタッチすることにより、装置に対して指示を送る（受け付けさせる）ことができる。ＧＵＩ部品は、本明細書において上述の意味を有するため、アイコンなどであっても良いのは言うまでもない。ただし、ＧＵＩ部品のうち後述の主ＧＵＩ部品は、画像であると同時に様々な判断や変更の指示を行う機構を持っている。正確には、主ＧＵＩ部品をＣＰＵが処理すると、上記様々な判断や変更の指示を行うことが可能となる。
【００１８】
図１の機能ＡＰＩライブラリＫ１０３は、画像形成装置用のアプリケーションソフトが、画像形成装置のソフトウェア機能やハードウェア機能のような機能を利用するためのＡＰＩを提供するソフトウェアライブラリ群である。ここで、ＡＰＩとは、Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ Ｉｎｔｅｒｆａｃｅの略である。
【００１９】
開発者は、開発用アプリケーションＫ１０１を利用して、ＧＵＩレイアウトや、プログラムコードを作成し、コンパイルして、画像形成装置にインストール可能なアプリケーションを作成する。
【００２０】
上記のソフトウェアＫ１０１〜Ｋ１０３は、ＣＤ−ＲＯＭなどの記録媒体や、インターネットを利用したダウンロード用サイトを介して、開発者に配布されても良い。また、ソフトウェアＫ１０１〜Ｋ１０３は、一緒に配布されても、別々に配布されても良い。
【００２１】
（開発ツールの説明）
図２は、図１の開発用アプリケーションＫ１０１が汎用情報処理装置上で起動され、開発者に利用される際の表示画面を示す図である。
【００２２】
図２のＧＵＩ部品リスト表示ウィンドウＷ２０１は、ＧＵＩ部品群Ｋ１０２の一覧を表示する。
【００２３】
図２のＧＵＩレイアウト編集ウィンドウＷ２０２は、画像形成装置のＧＵＩ操作パネルに表示される画面である。開発者は、この画面を汎用情報処理装置上で編集することで、画像形成装置のＧＵＩ操作パネルを視覚的に編集するのを可能とするための画面である。
【００２４】
図２のソースコード表示ウィンドウＷ２０３は、開発用アプリケーションＫ１０１により自動的に生成されたソースコードを表示したり、開発者が直接ソースコードを編集するのを可能とするための画面である。
【００２５】
図２のプロパティ表示ウィンドウＷ２０４は、ＧＵＩレイアウト編集ウィンドウＷ２０２で選択状態のＧＵＩ部品の属性に設定された値を表示するウィンドウである。以下では、属性に設定された値のことを、属性の値、又は、属性値と称する。ＧＵＩ部品の属性の値は、ＧＵＩレイアウト編集ウィンドウＷ２０２により自動的に設定されたり、開発者の手動の指示により設定される。なお、ＧＵＩ部品に値が設定されるというのは、ＧＵＩ部品に値が関連付けられることを意味する。ＧＵＩ部品の属性の値は、ＧＵＩ部品そのものが有するのではなく、ＧＵＩ部品に関連付けられる値なのである。例えば、ＧＵＩの属性として、機能属性、グループ属性、表示名属性、表示色属性、ＧＵＩの表示形状属性、大きさ属性、表示位置属性、表示状態属性（表示、非表示、グレーアウト）がある。なお、表示状態属性のことを表示属性と呼ぶこともある。ここで、グループ属性とは、ＧＵＩ部品をグループ化するための情報で、同一属性値の関連付けられたＧＵＩ部品は、グルーピングにより互いに関係があることを示す。以降、ＧＵＩ部品の機能属性に設定される値（属性値）を、機能属性値と称する。
【００２６】
機能属性項目Ｐ２０５は、プロパティ表示ウィンドウＷ２０４の中の機能属性に設定された機能属性値（例、ＣＯＰＹ）を表示する箇所を指し示している。ユーザが、この機能属性項目Ｐ２０５内の機能属性値の変更を指示した場合、開発ツールキットは、ＧＵＩ部品の機能属性に新しい機能属性値を設定する。なお、機能属性値のことを機能情報と称することもある。なお、機能情報とは、装置の機能に関する情報である。例えば、装置が、画像形成装置であれば、機能情報には、プリント、コピー、スキャンのような機能が含まれ、機能情報により、装置の機能が特定される。
【００２７】
ここで、開発用アプリケーションＫ１０１によりソースコードが生成されたＧＵＩ部品のうち、より上位のＧＵＩ部品（例えば、図１３のパネルＧ１３０１）を示す際は、主ＧＵＩ部品と称する。また、主ＧＵＩ部品に登録された（配置するように設定された）ＧＵＩ部品（例えば、図１３のコピーボタンＧ１３０２、ＳＥＮＤボタンＧ１３０３、リストボックスＧ１３０４）を示す際は、サブＧＵＩ部品と称す。
【００２８】
なお、開発用アプリケーションＫ１０１によりソースコードが生成されたサブＧＵＩ部品は、以下のように構成されている。すなわち、サブＧＵＩ部品は、その（サブＧＵＩ部品）の機能属性に機能属性値が設定される前から、以下のような情報が関連付けられている。即ち、サブＧＵＩ部品は、そのＧＵＩ部品を管理する主ＧＵＩ部品がＮＯの情報を受け取った場合に「表示」から「グレーアウト表示」にサブＧＵＩ部品の表示属性を設定し直すべきだと主ＧＵＩ部品が判断するための情報が関連付けられている。
【００２９】
なお、本実施形態では、サブＧＵＩ部品が、ＮＯの情報を受取りうるのは以下の二つの場合である。一つ目の場合は、後述する図９の機能ライブラリ３１のＡＰＩの応答結果がＮＯ、即ち、サブＧＵＩ部品に関連付けられた機能情報により特定される機能が画像形成装置内に存在しない場合である。二つ目の場合は、後述する図９のアクセス制御部３２から送られてくる情報がＮＯ、即ち、サブＧＵＩ部品に関連付けられた機能情報により特定される機能の利用を、サブＧＵＩ部品が許されない場合である。
【００３０】
（ＧＵＩ部品の機能属性の説明）
ＧＵＩ部品の機能属性への機能属性値の設定は、例えば、図３に示すような画像形成装置ベンダーが定義した機能属性値の中から、ユーザの選択指示に従って、行われる。
【００３１】
ここで、例えば、ＰＲＩＮＴ、ＣＯＰＹ、ＳＣＡＮの機能属性値は、それぞれプリント、コピー、スキャンなど画像形成装置の機能を特定する情報である。
【００３２】
また、例えば、ＢＯＸ、ＳＥＮＤ、ＦＡＸなどの機能属性値は、それぞれスキャンデータのハードディスクへの保存、スキャンデータの電子メールのような外部送信など画像形成装置の機能を特定する情報である。
【００３３】
また、例えば、ＣＯＬＯＲ、ＢＷは、それぞれスキャンデータに対するカラー処理、白黒処理など画像形成装置の機能を特定する情報である。
【００３４】
また、機能属性に、機能属性値として、開発者が独自に定義した値を設定することも可能である。
【００３５】
画像形成装置が機能属性値を解釈できない場合にはその値は無視される。
【００３６】
図４は、ＧＵＩ部品の機能属性に特定の機能属性値を設定する際の一例を示している。
【００３７】
図４では、一例として、通常の実行スタートボタン４０１の機能属性にＣＯＰＹという機能属性値が設定され、コピースタートボタンであることが表現されている。
【００３８】
また、図４では、一例として、リストボックス４０２の「カラー」の機能属性にＣＯＬＯＲという機能属性値が設定され、「モノクロ」の機能属性にＢＷという機能属性値が設定されている。この時、ＧＵＩ部品の一種であるリストボックス４０２の機能属性には、複数の機能属性値が設定されていることになる。このように、機能属性には複数の機能属性値を設定可能であり、ＣＯＬＯＲとＣＯＰＹを設定することでカラーコピーを表現することもできる。
【００３９】
また、図４では、一例として、チェックボックス４０３の「チェック有」の場合の機能属性にＣＯＬＯＲとＣＯＰＹという機能属性値が設定されており、「チェック無」の場合の機能属性にＢＷとＣＯＰＹという機能属性値が設定されている。
【００４０】
上記のように、選択ボタン、リストボックスや、チェックボックスなどの選択状態を表現するＧＵＩ部品には、機能属性として複数の機能属性値が設定される。
【００４１】
（コードの自動生成動作の説明）
次に、本発明における、ＧＵＩ部品の機能属性にある機能属性値が設定することをユーザから指示された際の、開発用アプリケーションＫ１０１の動作を図５のフローチャートを参照して以下で説明する。
【００４２】
ここで、開発用アプリケーション（アプリケーションはソフトウェアの一種である）Ｋ１０１は、開発用アプリケーションＫ１０１がインストールされている装置上のＣＰＵが、開発用アプリケーションＫ１０１の命令を読み取ることにより動作する。また、以下で、開発用アプリケーションＫ１０１は、一例として、パーソナルコンピュータにインストールされているものとして説明を行う。
【００４３】
まず、図５のステップＳ５０１で、開発用アプリケーションＫ１０１は、以下の処理を実行する。すなわち、プロパティ表示ウィンドウＷ２０４の機能属性項目Ｐ２０５に、ＧＵＩ部品の機能属性値の関連付けがユーザから指示された（機能属性項目Ｐ２０５にユーザが機能属性値を入力した）ことを検知して、ソースコードの自動生成を開始する。なお、検知以降、ステップＳ５０５の処理が終了するまで、ユーザからの指示を受け付けることなく、自動的に処理が進んでいく。以降の処理で、開発用アプリケーションＫ１０１は、ディスプレイに表示されているＧＵＩ部品と機能情報とを関連付けることができる。
【００４４】
次に、ステップＳ５０２で、開発用アプリケーションＫ１０１は、ＧＵＩ部品に設定するようユーザから指示された機能属性値を取得する。
【００４５】
次に、ステップＳ５０３で、開発用アプリケーションＫ１０１は、ステップＳ５０２で取得した機能属性値をＧＵＩ部品に関連づけるためのソースコードを自動生成する。具体的には、ＧＵＩ部品のクラス変数に機能属性値を設定するためのソースコードを自動生成する。
【００４６】
例えば、ＧＵＩ部品は、オブジェクト指向設計におけるクラス構造体として表現され、機能属性値はそのクラスのクラス変数として表現可能であるため以下のようなソースコードが生成される。
ButtonClass  Button1;                 // ボタンクラスの生成
Button1.Name = “コピー”;              // ボタンの表示名の設定
Button1.Functions = “COPY”;           // ボタンの機能属性の機能属性値の設定
【００４７】
次に、ステップＳ５０４で、開発用アプリケーションＫ１０１は、ＧＵＩ部品の機能属性値により特定される（画像形成装置の）機能の利用可否を（アクセス制御部３２に）問い合わせるためのＡＰＩ、を呼び出すためのソースコードを自動生成する。自動生成されたソースコードは、ＧＵＩ部品がディスプレイに表示される直前に処理される。
【００４８】
これにより、ステップＳ５０４に係るソースコードは、ＧＵＩ部品に関連付けられた機能情報により特定される機能の利用可否について、その機能の利用可否を管理するアクセス制御部３２への問い合わせを自動的に行うための命令を含むこととなる。
【００４９】
そして、ステップＳ５０４において、開発用アプリケーションＫ１０１は、ステップＳ５０４に係るソースコードと、ＧＵＩ部品とを関連付ける。
【００５０】
ここで、ＧＵＩ部品は、例えば、開発用アプリケーションＫ１０１で開発中のアプリケーションがディスプレイに表示させる表示画面に配置されるＧＵＩ部品でも良い。この場合、開発用アプリケーションＫ１０１で開発中のアプリケーションとステップＳ５０４に係るソースコードが関連付けられることになる。
【００５１】
なお、画像形成装置と記載したが、上述のように、本実施形態においては、開発用アプリケーションは、画像形成装置上で動作するわけではなく、パーソナルコンピュータ上で動作する。そのため、ここでは、画像形成装置とは、本開発アプリケーションを通じて作成されたソースコードがインストールされた装置のことを示す。
【００５２】
次に、ステップＳ５０５で、開発用アプリケーションＫ１０１は、利用可否の問い合わせの応答結果に応じてＧＵＩ部品の表示状態を変更するソースコード、を自動生成する。機能の利用可否を問い合わせるＡＰＩは、前述の機能ＡＰＩライブラリＫ１０３から提供される。
【００５３】
すなわち、ステップＳ５０５に係るソースコードは、「ＧＵＩ部品の機能属性値により特定される機能の利用可否に関する情報を管理するアクセス制御部３２」への問い合わせに対する応答の結果に応じてＧＵＩ部品の表示状態を決定するための命令を含む。このソースコードには、サブＧＵＩ部品を管理する主ＧＵＩ部品がＮＯの情報を受け取った場合に「表示」から「グレーアウト表示」に、サブＧＵＩ部品の表示属性を設定し直すべきだと主ＧＵＩ部品が判断するべきである、ことが記載されている。つまり、そう主ＧＵＩ部品は、上記場合に上記判断をするように、そのソースコード上で構成されている。
【００５４】
そして、ステップＳ５０５において、開発用アプリケーションＫ１０１は、ステップＳ５０５に係るソースコードと、ＧＵＩ部品とを自動的に関連付ける。
【００５５】
ここで、ＧＵＩ部品は、例えば、開発用アプリケーションＫ１０１で開発中のアプリケーションがディスプレイに表示させる表示画面に配置されるＧＵＩ部品でも良い。この場合、開発用アプリケーションＫ１０１で開発中のアプリケーションとステップＳ５０５に係るソースコードが関連付けられることになる。
【００５６】
例えば、下記のＡＰＩ例（１）（２）ようにＧＵＩ部品のクラスそのものや、機能属性値を渡して判定を依頼するような汎用的なＡＰＩや、下記のＡＰＩ例（３）のような機能毎に用意されたＡＰＩを提供する。
【００５７】
例えば、ＡＰＩ例（３）のようなＡＰＩを使用するソースコードを自動生成する場合は、機能属性値と、機能属性値に対応したＡＰＩとを関係付けるテーブルを開発ツールキットに設ける。開発用アプリケーションＫ１０１は、上記のテーブルを参照し、ＧＵＩ部品に設定された機能属性値を元に、機能の利用可否を問い合わせるためのＡＰＩをＧＵＩ部品に関連づけることができる。
【００５８】
図２６は、一例として、開発用アプリケーションＫ１０１が後述のソースコード例（３）を自動生成する際に参照するテーブル２６０１、を示している。テーブル２６０１は、ＧＵＩ部品の表示の仕方についての情報を含んでいる。
【００５９】
開発用アプリケーションＫ１０１は、テーブル２６０１を参照する際に、ＧＵＩ部品のクラス（例えば、「ボタン」）の情報をＧＵＩ部品リスト表示ウィンドウＷ２０１から取得しても良い。また、開発用アプリケーションＫ１０１は、テーブル２６０１を参照する際に、ＧＵＩ部品の表示名（例えば、「コピー」）の情報を、プロパティ表示ウィンドウＷ２０４から取得しても良い。
ＡＰＩ例（１）
Void IsAvailableFunction(  ＧＵＩ部品クラス  ); ・・・ＧＵＩ部品に設定された機能属性から利用可否を判定し、ＧＵＩ部品の表示状態を設定するＡＰＩ。
ＡＰＩ例（２）
Bool IsAvailableFunction(  機能属性値  ); ・・・機能属性値を渡し、利用の可否を応答するＡＰＩ。
ＡＰＩ例（３）
Bool IsAvailableCopyFunction( ); ・・・コピー機能の利用の可否を応答するＡＰＩ。
【００６０】
上記ＡＰＩを使用して自動生成したソースコードは例えば以下のようになる。下記のソースコード例（２）、（３）は、ＡＰＩからの応答結果を受けてＧＵＩ部品の表示状態を変更することを示している。ＡＰＩ例（１）のＡＰＩは、機能の利用可否判定と、ＧＵＩ部品との表示状態変更処理の両方の機能を有するものとする。
ソースコード例（１）
ButtonClass  Button1;                 // ボタンクラスの生成
Button1.Name = “コピー”;              // ボタンの表示名の設定
Button1.Functions = “COPY”;           // ボタンの機能属性の機能属性値の設定
IsAvailableFunction（Button1）；       // ＧＵＩ部品の利用可否を判定した上で表示状態が設定される。
ソースコード例（２）
ButtonClass  Button1;                 // ボタンクラスの生成
Button1.Name = “コピー”;              // ボタンの表示名の設定
Button1.Functions = “COPY”;           // ボタンの機能属性の機能属性値の設定
Bool bResult = IsAvailableFunction（ Button1.Function ）；     // 機能の利用可否を問いあわせる。
If( bResult == TRUE ){ 
Button1.Visible = TRUE;    // 利用可能であれば、表示する
} else {
Button1.Visible = FALSE;              // 利用不可であれば、表示しない。
}
ソースコード例（３）
ButtonClass  Button1;                 // ボタンクラスの生成
Button1.Name = “コピー”;              // ボタンの表示名の設定
Button1.Functions = “COPY”;           // ボタンの機能属性の機能属性値の設定
Bool bResult = IsAvailableCopyFunction（）； // コピー機能の利用可否を問いあわせる。
If( bResult == TRUE ){ 
Button1.Eable= TRUE;                      // 利用可能であれば、表示する
} else {
Button1. Eable = FALSE;        // 利用不可であれば、グレーアウトに設定し直して表示する。
}
上記のソースコードはあくまでの一例であり、上記に示されたソースコードにより実行されるコンピュータの処理と同等の処理を決定するコンピュータで実行可能な命令又は命令のセットであればどのようなものでも良い。
【００６１】
ＧＵＩ部品は、利用可否の問い合わせの応答結果を１回もしくは複数回、非同期に受信し、応答結果を受信する度に、応答結果に応じて再度ＧＵＩ部品の表示状態を変更して画面の再描画を行うようなケースが存在する。この場合、ＧＵＩ部品は、非同期に応答結果を受信する必要があるため、応答結果を受信するための関数を、機能ＡＰＩライブラリの関数登録用ＡＰＩを使用して登録するソースコードを生成する。具体的なアプリケーション動作時の動作については後述の実施形態４に記載する。
【００６２】
＜実施形態２＞
以下で、図面を参照して、実施形態２について説明する。
【００６３】
実施形態１では、開発ツールキットで提供されるＧＵＩ部品群Ｋ１０２の夫々に、開発者が機能属性の機能属性値を設定する実施形態を示した。実施形態２では、開発ツールキットで提供されるＧＵＩ部品が利用目的に予め作成されており、各ＧＵＩ部品に、各機能の利用の可否を画像形成装置に対して問い合わせる為のプログラムが組み込まれている場合の実施形態を示す。
【００６４】
図６は、開発用アプリケーションＫ１０１の起動画面を示している。例えば、ＧＵＩ部品リスト表示ウィンドウＷ６０１には、コピー用のボタン、プリント用のボタン、スキャン用のボタン、スキャンデータの外部送信用ボタン、カラーや白黒を選択するためのチェックボックスや、リストボックスなどが表示される。これらのＧＵＩ部品は、開発ツールキットのＧＵＩ部品群Ｋ１０２から提供され、開発用アプリケーションＫ１０１にロードされて表示される。
【００６５】
これらのＧＵＩ部品には、機能情報と、機能情報に含まれるそれぞれの機能の利用可否を問い合わせるための命令であるＡＰＩ呼び出しを行うプログラムとがセットで組み込まれている。例えば、実施形態１で示したソースコードの例の一部が、ＧＵＩ部品の表示処理プログラムに組み込まれている。
【００６６】
次に、実施形態２における開発用アプリケーションＫ１０１の動作を図７のフローチャートを参照して以下で説明する。
【００６７】
まず、ステップＳ７０１で、開発用アプリケーションＫ１０１は、開発用アプリケーションＫ１０１で開発中のアプリケーションで表示させるための表示画面に、ＧＵＩ部品が配置されることを検知する。
【００６８】
具体的には、例えば、開発用アプリケーションＫ１０１は、開発者によってＧＵＩ部品リスト表示ウィンドウＷ６０１から、ＧＵＩレイアウト編集ウィンドウＷ６０２にＧＵＩ部品がドラッグアンドドロップして配置されたことを検知する。
【００６９】
次に、ステップＳ７０２で、開発用アプリケーションＫ１０１は、画像形成装置用のアプリケーションが、ＧＵＩ部品を利用するためのソースコードを自動生成する。
【００７０】
ここで、ステップＳ７０２に係るソースコードは、ステップＳ７０１で検知されたＧＵＩ部品に関連付けられた機能情報により特定される機能の利用可否についてアクセス制御部３２に問い合わせを行うための命令を実行するためのソフトウェアとなる。
【００７１】
そして、ステップＳ７０２において、開発用アプリケーションＫ１０１は、ステップＳ７０２に係るソフトウェアと、ＧＵＩ部品とを自動的に関連付ける。
【００７２】
例えば、開発用アプリケーションＫ１０１は、以下のようなソースコードを生成する。
CopyButton  copyButton1;        // コピーボタンの生成
copyButton1.Update();            // ボタンの表示実行
【００７３】
上記のソースコードはあくまでの一例であり、上記に示されたソースコードにより実行されるコンピュータの処理と同等の処理を決定するコンピュータで実行可能な命令又は命令のセットであればどのようなものでも良い。
【００７４】
上記、ソースコードでは、コピー機能の利用可否を問い合わせる機能を有するボタン用クラスのインスタンスを生成している。実施形態１で示した、機能の利用の可否と問い合わせや、利用可否の応答結果に応じたＧＵＩ部品の表示状態の変更処理は、copyButton.Updata() の内部処理として実行される。
【００７５】
実施形態１、２では、ＧＵＩ部品の一例として、ボタンのソースコードを生成する処理について説明したが、パネルやリストボックスのようなＧＵＩ部品のソースコードを生成する処理も、実施形態１、２に示されているのと同様の処理によって実行される。
【００７６】
また、実施形態１、２に係るソフトウェアＫ１０１〜Ｋ１０３は、ＧＵＩ部品群の相互関係を定めるソースコードを作成することができる。例えば、実施形態１、２に係るソフトウェアＫ１０１〜Ｋ１０３は、パネルの上にボタンが配置されるというソースコードを作成することができる。
【００７７】
＜実施形態３＞
以下で、図面を参照して、実施形態３について説明する。
【００７８】
本発明のユーザの機能の利用権限に応じたＧＵＩ部品表示を実施した画像形成装置（画像形成装置）における実施形態について、以下で説明する。
【００７９】
図８は、本発明のアプリケーションプラットフォームを適用した画像形成装置の概略を示すブロック図である。
【００８０】
（画像形成装置１の説明）
図８に示されているように画像形成装置１は、印刷装置１１及び画像処理装置１２からなる。
【００８１】
画像処理装置１２は、ＣＰＵ１２１と、直接記憶部１２２（例えば、ＲＡＭ）と、間接記憶部１２３（例えば、ＲＯＭやＨＤＤ）と、ユーザインターフェース１２４と、外部インターフェース１２５とからなる。
【００８２】
直接記憶部１２２は、ＣＰＵ１２１と、直接データとをやり取りする記憶部であり、間接記憶部１２３は直接記憶部１２２を介してＣＰＵ１２１と、データとをやり取りする記憶部である。直接記憶部１２２には、種々のアプリケーションプログラム及びプラットフォームプログラムが記憶されている。
【００８３】
ユーザインターフェース１２４は、例えば、キーボード、マウス、ディスプレイからなり、ユーザからの指示の受付け、データ（画面データ）の表示をすることが可能となっている。
【００８４】
外部インターフェース１２５は、外部装置からのデータの受信や外部装置へのデータの送信が可能となっている。例えば、外部装置としては、外付けＨＤＤや外付けＵＳＢメモリのような外付け記憶装置や、ネットワークを介して接続された別体のホストコンピュータ（パーソナルコンピュータ）や画像形成装置１のような別体装置が含まれる。
【００８５】
（プラットフォーム部２０の説明）
ＣＰＵ１２１は、間接記憶部１２３に記憶されたプラットフォームプログラムを直接記憶部１２２に移動する（記憶させる）ことができる。移動が完了すると、ＣＰＵ１２１がプラットフォームプログラムを実行することができる状態になる。本実施形態では、このように「ＣＰＵ１２１がプラットフォームプログラムを実行することができる状態になること」を、プラットフォーム部２０が起動すると称する。
【００８６】
なお、本実施形態では、以下の３個の装置の組み合わせをプラットフォーム部２０と称している。
・ＣＰＵ１２１
・直接記憶部１２２のうちのプラットフォームプログラムを記憶している装置
・ＣＰＵ１２１が上記プラットフォームプログラムを処理した際に得られる情報（例えば、計算結果）を記憶する（直接記憶部１２２及び間接記憶部１２３のうちの）装置
【００８７】
（アプリケーションプログラムの説明）
プラットフォーム部２０は、間接記憶部１２３に記憶された第一のアプリケーションプログラムおよび、アプリケーション実行に必要なプログラム群を直接記憶部１２２に移動する（記憶させる）ことができる。移動が完了すると、プラットフォーム部２０が第一のアプリケーションプログラムを実行することができる状態になる。本実施形態ではこのことを、プラットフォーム部２０が第一のアプリケーションプログラムを起動すると称する。
【００８８】
逆に、プラットフォーム部２０は、直接記憶部１２２に記憶された第一のアプリケーションプログラムを直接記憶部１２２から削除することができる。本実施形態ではこのことを、プラットフォーム部２０が第一のアプリケーションプログラムを停止すると称する。
【００８９】
プラットフォーム部２０は、外部インターフェース１２５を介して第一のアプリケーションプログラムであるデータを受信し記憶することができる。本実施形態ではこのことを、プラットフォーム部２０に第一のアプリケーションプログラムをインストールすると称する。
【００９０】
逆に、プラットフォーム部２０は、（プラットフォーム部２０の内部にある）間接記憶部１２３に記憶された第一のアプリケーションを間接記憶部１２３から削除することができる。本実施形態ではこのことを、プラットフォーム部２０が第一のアプリケーションをアンインストールすると呼称する。
【００９１】
尚、プラットフォーム部２０が第一のアプリケーションをアンインストールする際に、第一のアプリケーションが起動している場合には、これを停止した後にアンインストールを行う。
【００９２】
また、以上の説明は、第一のアプリケーションプログラムを例にして説明を行ったが、他のアプリケーションプログラム（例、第二のアプリケーションプログラム）であっても同様であることは当業者には明白であろう。
【００９３】
図９は、画像形成装置１におけるプラットフォーム部２０上で起動するアプリケーションおよび、アプリケーションの動作環境を示す図である。
【００９４】
図９の機能ライブラリ３１は、アプリケーションが画像形成装置のソフトウェア機能およびハードウェア機能を呼び出すためのプログラムである。
【００９５】
図９のアクセス制御部３２は、画像形成装置にログインするユーザの情報や機能利用権限などを参照して、ログイン中のユーザが、各種画像形成装置が有する機能を利用可能な否かを判定する。
【００９６】
図９のログイン処理部３３は、ディスプレイ上に、ユーザのアカウント認証情報を入力可能なログイン画面（図１０の画面１００１）を表示し、ユーザからの入力動作を受けて、ユーザ認証処理を行う。さらにログイン処理部３３は、認証したユーザに対する機能利用権限情報（図１２のテーブル１２０１）を、間接記憶部１２３や外部インターフェース１２５を介して取得し、直接記憶部１２２に記憶する。
【００９７】
図９において、アプリケーション１（４１）、アプリケーション２（４２）、アプリケーション３（４３）は、画像形成装置上で起動しているアプリケーションであり、それぞれディスプレイ上に表示するための、ＧＵＩ部品を抱えている。
【００９８】
例えば、実施形態１および実施形態２にかかるＧＵＩ部品を実現するソースコードを、プラットフォーム部２０上で起動するアプリケーション１〜３（４１〜４３）として動作するものとしてインストールすることができる。
【００９９】
図１１は、画像形成装置１にログインするユーザの管理テーブル１１０１を示す図である。管理テーブル１１０１には、ユーザ情報が記録されている。
【０１００】
管理テーブル１１０１は、間接記憶部１２３や外部装置に記憶されている。
【０１０１】
図１２は、ユーザの画像形成装置が有する機能に対する機能利用権限情報を表す図である。図１２の機能利用権限情報（テーブル１２０１）に含まれているユーザの利用権限はユーザ毎に異なり、ユーザの管理テーブル１１０１に登録されたそれぞれのユーザと関連付けて、間接記憶部１２３や外部装置に記憶される。例えば、図１２のテーブル１２０１は、白黒でのプリント、コピー、およびＢＯＸ（内部記憶装置へのスキャンデータの保存と取得）は、許可されていることを示している。そして、図１２のテーブル１２０１は、カラーのプリント、コピーおよびＢＯＸは、禁止されており、ＳＥＮＤ（外部へのスキャンデータ送信）、ＦＡＸも禁止されていることを示している。
【０１０２】
すなわち、図１２のテーブル１２０１の機能利用権限情報により、ユーザが利用可能な機能が特定される。なお、図１２に示されている機能利用権限情報は、あくまでも一例であり、機能利用権限情報に利用可能回数が含まれていても良い。ここで、利用可能回数とは、例えば、ユーザが機能を利用できる回数である。
【０１０３】
図１３は、アプリケーションのＧＵＩのレイアウト例を表す図である。ここで、パネルＧ１３０１、コピーボタンＧ１３０２、ＳＥＮＤボタンＧ１３０３、リストボックスＧ１３０４は、ＧＵＩ部品である。パネルＧ１３０１の上には、コピーボタンＧ１３０２、ＳＥＮＤボタンＧ１３０３、リストボックスＧ１３０４が配置されている。
【０１０４】
ここで、パネルＧ１３０１（主ＧＵＩ部品）は、パネルＧ１３０１を表現するソースコードがインストールされている装置上のＣＰＵが、パネルＧ１３０１を表現する命令を読み取ることにより動作する。また、以下で、パネルＧ１３０１を実現するソースコードは、一例として、画像形成装置１に接続されたパーソナルコンピュータにインストールされているものとして説明を行う。
【０１０５】
パネルＧ１３０１とその上に配置されるＧＵＩ部品は、従属関係にあり、ソースコードとして以下のようなコードで、表現することができる。
【０１０６】
なお、以下のソースコードは、実施形態１、２に係るソフトウェアＫ１０１〜Ｋ１０３により生成される。
【０１０７】
まず、実施形態１、２に係るソフトウェアＫ１０１〜Ｋ１０３は、panelG1301という名前のパネルＧ１３０１と、copyButtonG1302という名前のコピーボタンＧ１３０２とを生成する。また、実施形態１、２に係るソフトウェアＫ１０１〜Ｋ１０３は、sendButtonG1303という名前のＳＥＮＤボタン１３０３と、listBoxG1304という名前のリストボックスＧ１３０４とを生成する。
【０１０８】
ここで、ボタンＧ１３０２、１３０３の名前は、図２の表示画面のプロパティ表示ウィンドウＷ２０４の識別番号によって定められても良い。例えば、図２の表示画面のプロパティ表示ウィンドウＷ２０４の識別番号が「Ｇ１３０２」で、機能が「ＣＯＰＹ」のときには、ボタンの名前が「copyButtonG1302」と、実施形態１、２に係るソフトウェアＫ１０１〜Ｋ１０３により定められても良い。
【０１０９】
また、ボタンＧ１３０２、１３０３と同様に、パネルＧ１３０１の名前は、図２の表示画面のプロパティ表示ウィンドウＷ２０４の識別番号によって定められても良い。例えば、図２の表示画面のプロパティ表示ウィンドウＷ２０４の識別番号が「Ｇ１３０１」で、機能が「ＰＡＮＥＬ」のときには、ボタンの名前が「panelG1301」と、実施形態１、２に係るソフトウェアＫ１０１〜Ｋ１０３により定められても良い。
【０１１０】
実施形態１、２に係るソフトウェアＫ１０１〜Ｋ１０３は、ボタンＧ１３０２、１３０３、リストボックスＧ１３０３とパネルＧ１３０１との関係を定めるソースコードを作成することもできる。例えば、実施形態１、２に係るソフトウェアＫ１０１〜Ｋ１０３は、ボタンＧ１３０２、１３０３と、リストボックスＧ１３０４とをパネルＧ１３０１上に配置するソースコードを作成することができる。
【０１１１】
以上の、実施形態１、２に係るソフトウェアＫ１０１〜Ｋ１０３で生成された、ＧＵＩ部品Ｇ１３０２〜Ｇ１３０４のソースコードと、ＧＵＩ部品Ｇ１３０２〜G１３０４をパネルＧ１３０１上に配置するソースコードから以下のソースコードが生成される。
Panel  panelG1301;                // パネルＧ1301を生成せよ、という意味
panel.Add( copyButtonG1302 );   // コピーボタンG1302の登録(コピーボタンG1302を、生成されたパネルの上に配置せよ、という意味)
panel.Add( sendButtonG1303 );   // ＳＥＮＤボタンG1303の登録
panel.Add( listBoxG1304 );      // リストボックスG1304の登録
【０１１２】
上記のソースコードはあくまでの一例であり、上記に示されたソースコードにより実行されるコンピュータの処理と同等の処理を決定するコンピュータで実行可能な命令又は命令のセットであればどのようなものでも良い。
【０１１３】
以降、実施形態１、２の説明でも述べたように、より上位のＧＵＩ部品（例えば、パネルＧ１３０１）を示す際は、主ＧＵＩ部品と称する。また、主ＧＵＩ部品に登録された（配置するように設定された）ＧＵＩ部品（例えば、コピーボタンＧ１３０２、ＳＥＮＤボタンＧ１３０３、リストボックスＧ１３０４）を示す際は、サブＧＵＩ部品と称す。
【０１１４】
主ＧＵＩ部品は、サブＧＵＩ部品が有するＡＰＩを呼び出すことによりサブＧＵＩ部品の状態を取得したり、変更したりすることができる。サブＧＵＩ部品は、状態の変化（例えばボタンの押下、選択状態の変化）などを主ＧＵＩ部品が有するＡＰＩを呼び出すことによって通知することができる。また、アプリケーションは、そのアプリケーション内の主ＧＵＩ部品のＡＰＩを呼び出すことになる。この主ＧＵＩ部品のＡＰＩを呼び出す動作を、ＧＵＩ部品がアプリケーションからの表示要求を検知すると称す。なお、主ＧＵＩ部品のＡＰＩを呼び出すのは、アプリケーションの全体ではなくて、アプリケーションのうちの「ディスプレイへの表示要求の指示を」外部から受取るモジュールである。即ち、アプリケーションのうちの「プラットフォーム部２０から呼び出され、ディスプレイへの画面表示処理を促される」モジュールである。以下では、このモジュールのことを、そのままアプリケーションと称する。
【０１１５】
主ＧＵＩ部品は表示要求を検知すると、サブＧＵＩ部品の表示処理も合わせて実行する。このためアプリケーションは、主ＧＵＩ部品にのみ表示要求を行えばよく、個々のサブＧＵＩ部品に対しては表示要求を行う必要が無い。主ＧＵＩ部品は、サブＧＵＩ部品から取得した機能属性値を用いて、機能ライブラリのＡＰＩを呼び出すことによりサブＧＵＩ部品群の利用可否を問い合わせることができる。以降の説明では、このことを、単に、主ＧＵＩ部品が、サブＧＵＩ部品の利用可否を問い合わせると称す。
【０１１６】
なお、主ＧＵＩ部品は、ＮＯの情報を受取るとサブＧＵＩ部品の表示属性の値を設定し直すように構成されている。本実施形態では、表示属性の値が表示とされているようなサブＧＵＩ部品であっても、ＮＯの情報を受取ると、主ＧＵＩ部品は、サブＧＵＩ部品の表示属性の値を、例えば、グレーアウトに設定し直す（変更する）。なお、本実施形態では、ＮＯの情報を受取りうるのは以下の二つの場合である。
【０１１７】
一つ目の場合は、図９の機能ライブラリ３１のＡＰＩの応答結果がＮＯで、サブＧＵＩ部品の利用が不可能な場合である。二つ目の場合は、図９のアクセス制御部３２で利用がＮＯで、サブＧＵＩ部品の利用が不可能な場合である。
【０１１８】
以降の説明では、パネルＧ１３０１は主ＧＵＩ部品であり、コピーボタンＧ１３０２、ＳＥＮＤボタンＧ１３０３、リストボックスＧ１３０４はサブＧＵＩ部品として解説する。
【０１１９】
図１４に示されているように、機能属性値としてコピーボタンＧ１３０２にはＣＯＰＹ、ＳＥＮＤボタンＧ１３０３にはＳＥＮＤ、リストボックスＧ１３０４の『カラー』選択時は、ＣＯＬＯＲ、『モノクロ』選択時にはＢＷが設定されているものとする。これらの機能属性値は、実施形態１や実施形態２の開発ツールキットを使って、アプリケーション作成時に予め設定されていることが考えられるが、アプリケーションが動的に書き換えても良い。
【０１２０】
さらに、コピーボタンＧ１３０２、ＳＥＮＤボタンＧ１３０３、リストボックスＧ１３０４は、グルーピングにより関連付けられている。リストボックスＧ１３０４の『カラー』選択時に、コピーボタンＧ１３０２が押下された場合は、カラーコピーが実行される。
【０１２１】
『モノクロ』選択時に、コピーボタンＧ１３０２が押下された場合は、白黒コピーが実行される。リストボックスＧ１３０４の『カラー』選択時に、ＳＥＮＤボタンＧ１３０３が押下された場合は、スキャンされたカラー画像データの外部送信が実行される。一方、『モノクロ』選択時に、ＳＥＮＤボタンＧ１３０３が押下された場合は、スキャンされた白黒画像データの外部送信が実行される。
【０１２２】
次に、図１３のアプリケーションのＧＵＩを例として、図１５のフローチャートを参照して、本発明に係るＧＵＩ部品を使用したアプリケーションのＧＵＩ画面の表示時の動作について説明する。
【０１２３】
アプリケーションのＧＵＩ画面表示前に、ユーザが画像形成装置にログインしており、認証されたログイン中のユーザの情報および機能利用権限情報（図１２のテーブル１２０１）が、直接記憶部１２２に記憶されているものとする。
【０１２４】
具体的には、ユーザは、ログイン処理部３３が表示する図１０の画面１００１のようなログイン画面上で、ユーザ情報を入力することにより画像形成装置へのログイン動作を行う。
【０１２５】
ここで、ユーザ情報は、ユーザ名やパスワードのような、ユーザＩＤを含んでも良い。
【０１２６】
図９のログイン処理部３３は、ユーザのログイン動作を検知して、入力されたユーザ情報を取得し、画像形成装置の間接記憶部１２３に記録された管理テーブル１１０１と比較することによりユーザの認証処理を行う。
【０１２７】
ユーザが正規のユーザである場合は、さらに間接記憶部１２３からユーザ情報と、ユーザ情報に関連づけられた機能利用権限情報（図１２のテーブル１２０１）とを直接記憶部１２２に読み出す。直接記憶部１２２に記憶したユーザ情報およびユーザの機能利用権限は、アプリケーション１（４１）、２（４２）、３（４３）や、アクセス制御部３２が参照することができる。
【０１２８】
ログイン処理部３３は、ログイン処理の完了を、プラットフォーム部２０に通知する。プラットフォーム部２０は、ログイン処理の完了の通知を受けて、アプリケーション１（４１）、２（４２）、３（４３）に対しディスプレイへの画面表示処理を促す。そして、プラットフォーム部２０から呼び出されたアプリケーション１（４１）、２（４２）、３（４３）は、主ＧＵＩ部品に対して表示要求を行う。
【０１２９】
図１５に示されているように、まず、ステップＳ１５０１で、主ＧＵＩ部品たるパネルＧ１３０１が、アプリケーションから、表示要求を検知して、ＧＵＩ部品をディスプレイに表示させるための命令を受取ることにより動作を開始する。
【０１３０】
ここで、パネルＧ１３０１は、主ＧＵＩ部品であり、主ＧＵＩ部品上のサブＧＵＩ部品に関連付けられている機能情報を、いつでも、取得することができる。
【０１３１】
次に、ステップＳ１５０２で、パネルＧ１３０１は、パネルＧ上のサブＧＵＩ部品（コピーボタンＧ１３０２、ＳＥＮＤボタンＧ１３０３、リストボックスＧ１３０４）の機能属性値を取得する。そして、パネルＧ１３０１は、取得した機能属性値を機能ライブラリ３１のＡＰＩを介してアクセス制御部３２に通知することによりサブＧＵＩに関連付けられている機能情報により特定される各機能の利用可否を問い合わせる。
【０１３２】
この時、パネルＧ１３０１は、サブＧＵＩ部品に設定された機能属性値を合成（合算）する。例えば、パネルＧ１３０１は、合成（合算）により得られた機能属性値として、カラーコピー（ＣＯＰＹ／ＣＯＬＯＲ）、白黒コピー（ＣＯＰＹ／ＢＷ）、カラー画像データの外部送信(ＳＥＮＤ／ＣＯＬＯＲ)、白黒データの外部送信（ＳＥＮＤ／ＢＷ）を生成する。
【０１３３】
次に、ステップＳ１５０３で、パネルＧ１３０１は、アクセス制御部３２に、ログイン中のユーザのサブＧＵＩ部品に関連付けられた機能情報により特定される機能の利用権限を問い合わせる。
【０１３４】
上記のように、パネルＧ１３０１は、サブＧＵＩ部品の機能属性値の合算により得られた情報を用いて、サブＧＵＩ部品に関連付けられた機能情報により特定される機能の利用可否を、アクセス制御部３２に問い合わせる。
【０１３５】
次に、ステップＳ１５０４で、問い合わせを受けたアクセス制御部３２は、直接記憶部１２２からログイン中のユーザのサブＧＵＩ部品の機能利用権限情報（図１２のテーブル１２０１）を取得する。すなわち、ステップＳ１５０４で、アクセス制御部３２は、ユーザ情報に関連付けられた機能制限情報を取得する。
【０１３６】
そして、アクセス制御部３２は、パネルＧ１３０１から通知された機能属性値とテーブル１２０１との比較を行い、サブＧＵＩ部品の機能の利用が可能か否か（ＹＥＳ又はＮＯ）を判定する。すなわち、アクセス制御部３２は、パネルＧ１３０１から通知された機能属性値とテーブル１２０１との対応関係に基づいて、パネルＧ１３０１から通知された機能属性値がテーブル１２０１において利用が可能とされている場合には、可能と判定する。一方、アクセス制御部３２は、パネルＧ１３０１から通知された機能属性値とテーブル１２０１との対応関係に基づいて、パネルＧ１３０１から通知された機能属性値がテーブル１２０１において利用が不可能とされている場合には、不可能と判定する。
【０１３７】
例えば、図１３のリストボックスＧ１３０４で、「カラー」が選択され、コピーボタンＧ１３０２が押下された場合には、機能属性値は、「カラーコピー（ＣＯＰＹ／ＣＯＬＯＲ）」である。したがって、図１２のテーブル１２０１より、「カラーコピー（ＣＯＰＹ／ＣＯＬＯＲ）」機能の利用は不可能（ＮＯ）であると判定される。
【０１３８】
次に、ステップＳ１５０５で、アクセス制御部３２は、判定結果（ＹＥＳorＮＯ）を、パネルＧ１３０１に通知する。
【０１３９】
次に、ステップＳ１５０６で、パネルＧ１３０１は、ステップＳ１５０５で通知された判定結果（ＹＥＳ又はＮＯ）を参照して、サブＧＵＩ部品の機能の利用が可能か否か（ＹＥＳ又はＮＯ）を判定する。判定結果がＹＥＳの場合は、機能の利用はＹＥＳである。参照結果がＮＯの場合は機能の利用はＮＯである。
【０１４０】
ステップＳ１５０６で、ＹＥＳの情報を受取ったと判定した場合には、ステップＳ１５０７に進み、パネルＧ１３０１は、サブＧＵＩ部品を、表示属性の値を変更することなく、パネルＧ１３０１に表示する。そして、ステップＳ１５０９に処理が進む。
【０１４１】
一方、ステップＳ１５０６で、ＮＯの情報を受取ったと判定した場合には、ステップＳ１５０８に進み、パネルＧ１３０１は、サブＧＵＩ部品をパネルＧ１３０１で所定の表示状態になるように決定する。そして、パネルＧ１３０１は、その決定に基づく表示をする（例えば、非表示にする、グレーアウト表示する）。そして、ステップＳ１５０９に処理が進む。なお、所定の表示状態とは、例えば非表示、グレーアウト表示のように、そのサブＧＵＩ部品（又は、そのサブＧＵＩ部品の一部）をユーザに選択させないための状態のことである。ここで、例えば、サブＧＵＩ部品がリストボックスの場合には、ユーザにサブＧＵＩ部品の一部を選択させないために、サブＧＵＩ部品の一部が非表示となっても良い。また、例えば、サブＧＵＩ部品がチェックを受け付けるＧＵＩ部品の場合には、ユーザにサブＧＵＩ部品の一部を選択させないために、サブＧＵＩ部品のチェックを受け付ける部分が非表示となっても良い。
【０１４２】
このステップＳ１５０８で、パネルＧ１３０１は、図１２のテーブル１２０１において、パネルＧ１３０１は、カラー白黒に関わらず利用不可であるＳＥＮＤボタンの表示状態を表す属性（表示属性の値）をグレーアウトに設定し直すように決定し、設定し直す。そして、パネルＧ１３０１は、パネルＧ１３０１上に、ＳＥＮＤボタンをグレーアウトの状態で表示する。なお、パネルＧ１３０１は上述したように予めディスプレイに表示されている。
【０１４３】
ここで、テーブル１２０１の内容に基づいて、例えば、パネルＧ１３０１上のリストボックスＧ１３０４と、ＳＥＮＤボタンＧ１３０３とが両方ともグレーアウトの状態で表示される場合もある。また、テーブル１２０１の内容に基づいて、例えば、パネルＧ１３０１上のリストボックスＧ１３０４のうち「カラー」のみがグレーアウトの状態で表示され、ＳＥＮＤボタン１３０３はグレーアウトの状態では表示されない（通常表示される）場合もある。
【０１４４】
上記のステップＳ１５０６〜１５０８の処理により、ステップＳ１５０２に係るアクセス制御部３２への問い合わせに対する応答の結果に応じた表示状態のＧＵＩ部品をディスプレイに表示させるように制御することができる。
【０１４５】
そして、ステップＳ１５０９で、表示処理が終了する。
【０１４６】
図１５の処理により、機能情報に関連付けられたＧＵＩ部品が複数存在する場合に、機能情報により特定される機能の利用可否に関する情報を管理するアクセス制御部３２からの応答結果に応じて、ＧＵＩ部品の表示状態が決定される。
【０１４７】
また、機能情報に関連付けられたＧＵＩ部品が複数存在する場合に、ＧＵＩ部品の表示状態が変化した場合に、機能情報により特定される機能の利用可否に関する情報に応じて、ＧＵＩ部品に関連する他のＧＵＩ部品の表示状態が決定されてもよい。
【０１４８】
図１６は、ログイン中のユーザの機能利用権限情報（図１２のテーブル１２０１）を元に表示された初期表示時のＧＵＩの一例を示している。
【０１４９】
アプリケーションのＧＵＩ表示後、ユーザのＧＵＩ操作により、ＧＵＩの表示状態が変化したことを検知すると、ＧＵＩ部品は、機能の利用の可否を再判定し、再びＧＵＩ部品の表示状態を更新する。
【０１５０】
例えば、図１６の状態において、カラーコピー（ＣＯＰＹ／ＣＯＬＯＲ）が禁止である場合に、パネルＧ１３０１が、ユーザがリストボックスＧ１３０４の選択状態を『モノクロ』から『カラー』に変更したことを検知すると以下の処理が実行される。すなわち、パネルＧ１３０１は、図１７に示されているように、カラーコピー（ＣＯＰＹ／ＣＯＬＯＲ）を禁止するために、コピーボタンＧ１３０２の表示状態を表す属性をグレーアウトに設定する。
【０１５１】
このとき、パネルＧ１３０１は、初期表示時に取得したカラーコピー（ＣＯＰＹ／ＣＯＬＯＲ）の利用可否の判定結果を使用しても、再びアクセス制御部３２に問い合わせても良い。予め初期表示時に、コピー、ＳＥＮＤに関わらず利用できないリストボックスＧ１３０４の『カラー』を選択できないように、グレーアウトや非表示するといった制御も可能である。
【０１５２】
＜実施形態４＞
以下で、図面を参照して実施形態４について説明する。
【０１５３】
下記、実施形態は、画像形成装置の機能の利用可否に関する情報を管理する管理手段が複数存在する場合に、ネットワークを通じてＧＵＩ部品の機能の利用可否を問い合わせる時間を短縮するものである。上記問題を解決するため、本実施形態は、画像形成装置が格納している過去のＧＵＩ部品の機能利用可否の判定履歴（利用可否判定履歴）を利用してＧＵＩ部品の表示を速やかに行う。
【０１５４】
本実施形態では、実施形態３と同様に、例えば、実施形態１および実施形態２にかかるＧＵＩ部品を実現するソースコードを、プラットフォーム部２０上で起動するアプリケーション１〜３（４１〜４３）として動作するものとしてインストールすることができる。
【０１５５】
なお、本実施形態でも、実施形態１〜３と同様に、ＧＵＩ部品の機能は、機能情報により特定される。
【０１５６】
図１８は、本実施形態におけるネットワークを示す図である。
【０１５７】
図１８に示されているように、印刷上限管理サーバ１８０１は、ネットワークＮ１８０２を介して複数の画像形成装置Ｍ１８０３、Ｍ１８０４、Ｍ１８０５と接続されており、相互に通信が可能である。
【０１５８】
図１８の印刷上限管理サーバ１８０１は、画像形成装置のユーザと印刷上限（各ユーザが印刷可能な用紙枚数の上限値）と印刷実績（実際に印刷した用紙枚数）を図１９のテーブル１９０１を用いて管理する。
【０１５９】
図１８の画像形成装置Ｍ１８０３、Ｍ１８０４、Ｍ１８０５は、ユーザの印刷に使用した用紙枚数を印刷上限管理サーバ１８０１に通知する機能を有する。さらに、印刷上限管理サーバ１８０１は、画像形成装置からログイン中のユーザの印刷の利用可否に関する問い合わせを受けて、ユーザの印刷上限と印刷実績を比較し、印刷の利用可否を判定して、その結果を応答する。そして、印刷実績が印刷上限に達している場合は、印刷上限管理サーバ１８０１は、印刷の利用は不可と判定する。
【０１６０】
実施形態４に係る画像形成装置Ｍ１８０３〜Ｍ１８０５は、実施形態３に係る画像形成装置１と同様である。画像形成装置Ｍ１８０３〜Ｍ１８０５は、上記、印刷上限および印刷実績情報とは別に、画像形成装置の間接記憶部１２３にユーザの管理テーブル１１０１および各ユーザの機能利用権限情報（図１２のテーブル１２０１）を記憶する。そして、画像形成装置Ｍ１８０３〜Ｍ１８０５は、各ユーザの機能利用権限をアクセス制御部３２において管理する。
【０１６１】
複数の画像形成装置Ｍ１８０３〜Ｍ１８０５のうちの一つの画像形成装置のアクセス制御部３２は、プリントやコピー機能の利用の可否に関して問い合わせを受けた場合、ログイン中のユーザの機能利用権限情報（図１２のテーブル１２０１）を参照する。そしてさらに外部インターフェース１２５を介して印刷上限管理サーバ１８０１に印刷の利用可否に関する問い合わせを行う。最終的なプリントやコピー機能の利用の可否は、ログイン中のユーザのＧＵＩ部品の機能利用権限情報と、印刷上限管理サーバへの問い合わせの応答結果との両方が『可』を示す場合にのみ利用可能であると判定する。
【０１６２】
すなわち、実施形態４では、直接記憶部１２２に格納されているログイン中のユーザのＧＵＩ部品の機能利用権限情報により、印刷上限管理サーバへのネットワークＮ１８０２を通じた問い合わせの結果を待たずに、プリントやコピー機能の可否を判定できる。
【０１６３】
さらに判定結果は、ユーザ毎に利用可否判定履歴として間接記憶部１２３に記憶し、一時的な機能利用可否の判定のために使用する。利用可否判定履歴は、ユーザログアウト後も保持し、同一ユーザが再ログインする際にも利用する。
【０１６４】
次に、図２０のフローチャートを参照して、本実施形態におけるＧＵＩ部品（例えば、コピーボタン）の表示動作について説明する。
【０１６５】
まず、図２０のステップＳ２００１で、ＧＵＩ部品は、アプリケーションからの表示要求を検知することにより表示動作を開始する。
【０１６６】
次に、ステップＳ２００２で、ＧＵＩ部品は、ＧＵＩ部品の機能属性をアクセス制御部３２に通知する。そして、ＧＵＩ部品は、ＧＵＩ部品の機能（例えば、コピー機能）の利用可否を問い合わせるために機能ライブラリ３１のＡＰＩを介してアクセス制御部３２に問い合わせる。
【０１６７】
次に、ステップＳ２００３で、アクセス制御部３２は、直接記憶部１２２からログイン中のユーザのＧＵＩ部品の機能利用権限情報を取得する。ステップＳ２００３と同時に、ステップＳ２００４で、アクセス制御部３２は、外部インターフェース１２５を介して印刷上限管理サーバ１８０１にログイン中のユーザのＧＵＩ部品の機能の利用可否を問い合わせる。この際、問い合わせの応答を非同期に待つため、応答待機中に平行して後述のステップＳ２００５からステップＳ２０１１の処理が実行される。
【０１６８】
次に、ステップＳ２００５で、アクセス制御部３２は、ログイン中のユーザのＧＵＩ部品の機能の利用可否判定履歴を、間接記憶部１２３から直接記憶部１２２に読み出して取得する。
【０１６９】
次に、ステップＳ２００６で、アクセス制御部３２は、ステップＳ２００３で取得したログイン中のユーザの機能利用権限情報から、ログイン中のユーザに、ＧＵＩ部品の機能の利用権限が有るか否かを判定する。
【０１７０】
ステップＳ２００６で、ログイン中のユーザに、ＧＵＩ部品の機能の利用権限が有ると今回判定された場合には、ステップＳ２００７に処理が進む。
【０１７１】
ステップＳ２００６で、ログイン中のユーザに、ＧＵＩ部品の機能の利用権限が無いと今回判定された場合には、ステップＳ２００９に処理が進む。
【０１７２】
次に、ステップＳ２００７で、アクセス制御部３２は、ステップＳ２００５で取得したＧＵＩ部品の機能の利用可否判定履歴を参照し、過去の利用可否判定は何であったかを判定する。
【０１７３】
ここで、「過去」とは、ステップＳ２００７の処理が実行される以前を指す。
【０１７４】
ステップＳ２００７で、ログイン中のユーザの、過去のＧＵＩ部品の機能の利用判定履歴が、「可」であった場合には、ステップＳ２００８に処理が進む。
【０１７５】
ステップＳ２００７で、ログイン中のユーザの、過去のＧＵＩ部品の機能の利用判定履歴が、「否」であった場合には、ステップＳ２００９に処理が進む。
【０１７６】
ステップＳ２００７により、アクセス制御部３２は、図５および図１５に係る処理における問い合わせに対する過去の応答の結果に応じた表示状態でＧＵＩ部品をディスプレイに表示させる命令をＧＵＩ部品に関連付ける。
【０１７７】
次に、ステップＳ２００９で、ＧＵＩ部品は、ＧＵＩ部品の機能の利用が「否」であるという通知又は、ＧＵＩ部品の機能の利用権限が「無し」の通知をアクセス制御部３２から受け取り、ＧＵＩ部品をグレーアウトに設定し直して表示する処理を行う。
【０１７８】
次に、ステップＳ２００８で、ＧＵＩ部品は、ＧＵＩ部品の機能の利用が「可」という通知と、ＧＵＩ部品の機能の利用権限が「有り」という通知をアクセス制御部３２から受け取り、ＧＵＩ部品の通常の表示処理を行う。
【０１７９】
ステップＳ２００８、２００９により、アクセス制御部３２は、今回の応答の結果を受け次第、今回の応答の結果に応じた表示状態へＧＵＩ部品の表示状態を変更するための命令をＧＵＩ部品に関連付ける。そして、ステップＳ２００８、２００９により、アクセス制御部３２は、ステップ２００６、２００７で決定された表示状態のＧＵＩ部品をディスプレイに表示されるように制御する。
【０１８０】
なお、上記で、「今回の」とは、「ステップＳ２００８、２００９の処理の実行時点での」という意味である。
【０１８１】
次に、ステップＳ２０１０で、ＧＵＩ部品が受け取った通知が含むＧＵＩ部品の機能の利用可否の判定結果を、ＧＵＩ部品もしくは、アクセス制御部３２が、間接記憶部１２３に利用可否判定履歴として保存する。
【０１８２】
次に、ステップＳ２０１１で、ＧＵＩ部品は、一旦処理を終了する。
【０１８３】
上記のステップＳ２００３〜ステップＳ２０１１により、アクセス制御部３２は、図５および図１５に係る処理における過去の問い合わせ処理での問い合わせに対する応答の結果に応じた表示状態のＧＵＩ部品がディスプレイに表示されるように制御する。
【０１８４】
ステップＳ２０１２で、Ｓ２００４の印刷上限管理サーバ１８０１に印刷の利用可否に関する問い合わせに対する応答結果を受け次第、アクセス制御部３２は再び処理を開始する。
【０１８５】
次に、ステップＳ２０１３で、以下の処理が行われる。すなわち、アクセス制御部３２は、印刷上限管理サーバ１８０１に印刷の利用可否に関する問い合わせの応答結果と、ステップＳ２００３で取得したログイン中のユーザの利用権限とから、ログイン中のユーザのＧＵＩ部品の機能の利用可否を再判定する。
【０１８６】
ステップＳ２０１３で、ＧＵＩ部品の機能の利用が「可」であると再判定された場合には、ステップＳ２０１４に処理が進む。
【０１８７】
ステップＳ２０１３で、ＧＵＩ部品の機能の利用が「否」であると再判定された場合には、ステップＳ２０１５に処理が進む。
【０１８８】
ステップＳ２０１４で、ＧＵＩ部品は、ＧＵＩ部品の機能の利用が「可」であるという通知を受取り、ＧＵＩ部品を再描画して、通常の表示処理を行う。
【０１８９】
ステップＳ２０１５で、ＧＵＩ部品は、ＧＵＩ部品の機能の利用が「否」であるという通知を受取り、ＧＵＩ部品を再描画して、ＧＵＩ部品をグレーアウトに設定し直して表示する処理を行う。
【０１９０】
上記のステップＳ２０１３〜２０１５により、Ｓ２００４の印刷上限管理サーバ１８０１に印刷の利用可否に関する問い合わせに対する応答結果を受け次第、以下のような処理が実行される。すなわち、アクセス制御部３２は、機能情報により特定される機能の利用可否を再判定して、再判定の結果に応じた表示状態のＧＵＩ部品をディスプレイに表示させるように制御する。
【０１９１】
次に、ステップＳ２０１６で、ＧＵＩ部品が受取った通知に含まれるＧＵＩ部品の利用可否の判定結果は、再び、ＧＵＩ部品もしくは、アクセス制御部３２が、間接記憶部１２３に利用可否判定履歴として保存し、ステップＳ２０１７で、処理が終了する。
【０１９２】
上記のステップＳ２０１２〜ステップＳ２０１７により、アクセス制御部３２は、図５および図１５に係る処理における今回の問い合わせ処理での問い合わせに対する応答の結果を受け次第、以下のような処理を実行する。すなわち、アクセス制御部３２は、今回の問い合わせ処理での問い合わせに対する応答の結果に応じた表示状態のＧＵＩ部品が表示手段に表示されるように制御する。
【０１９３】
図２０のフローチャートでは、ステップＳ２００３以降の処理とステップＳ２００４以降の処理が並列で処理されている。しかし、ステップＳ２００３で取得されたユーザのＧＵＩ部品の機能の利用権限を参照して、利用権限がある場合にのみ、ステップＳ２００４以降の処理を実行しても良い。
【０１９４】
＜実施形態５＞
以下で、図面を参照して実施形態５について説明する。下記の実施形態５は、ＧＵＩ部品に機能属性がついていない場合に、過去のＧＵＩ操作にともなう利用不可のエラー情報の発生履歴（エラー履歴）を元に、再びエラーを発生させないように、次回のＧＵＩ部品の表示状態が変更される。実施形態５に係る動作環境は、実施形態３に係るものと同様である。
【０１９５】
本実施形態では、実施形態３と同様に、例えば、実施形態１および実施形態２にかかるＧＵＩ部品を実現するソースコードを、プラットフォーム部２０上で起動するアプリケーション１〜３（４１〜４３）として動作するものとしてインストールすることができる。
【０１９６】
以下、図２１、図２２のフローチャートを参照して本実施形態における動作について説明する。
【０１９７】
以下では、一例として、図２３に示されているように、ユーザが、アプリケーションのＧＵＩ画面操作において、リストボックスからカラーを選択した状態で、コピーボタンＧ１３０２を押下した場合を想定して説明を行う。
【０１９８】
パネルＧ１３０１は、パネル上のＧＵＩ部品の動作を監視しており、パネル上のＧＵＩ部品の状態変化や発生イベントを知ることができる。尚、以下の説明において、一例として、ユーザは事前に画像形成装置にログインしているものとする。
【０１９９】
まず、図２１のステップＳ２１０１で、画像形成装置は、コピーボタンＧ１３０２がユーザに押下されたことを検知して動作を開始する。この際、パネルＧ１３０１も、ボタンＧ１３０１の押下されたことを検知し、そのことを、直接記憶部１２２に記憶する。
【０２００】
次に、ステップＳ２１０２で、コピーボタンＧ１３０２は、ボタンに関連付けられたボタン押下時のアプリケーションプログラムを呼び出す。
【０２０１】
次に、ステップＳ２１０３で、アプリケーションプログラムは、コピーボタンＧ１３０２の機能を提供する機能ライブラリ３１を呼び出す。
【０２０２】
次に、ステップＳ２１０４で、ステップＳ２１０３で呼び出された機能ライブラリ３１は、直接記憶部１２２を参照して、ログイン中のユーザ情報を取得する。そして、ユーザ情報により指定されるユーザのコピーボタンＧ１３０２の機能の利用の可否をアクセス制御部３２に問い合わせる。
【０２０３】
次に、ステップＳ２１０５で、機能ライブラリ３１は、ログイン中のユーザが、コピーボタンＧ１３０２を利用できるか否かを判定する。
【０２０４】
ここで、機能ライブラリ３１は、コピーボタンＧ１３０２に関連付けられた機能情報により特定される機能（コピー）の利用権限がログイン中のユーザにあるか否かを判定する
ステップＳ２１０５で、コピーボタンＧ１３０２の利用が「可」であると判定された場合には、ステップＳ２１０６に処理が進む。
【０２０５】
一方、ステップＳ２１０５で、コピーボタンＧ１３０２の利用が「否」であると判定された場合には、ステップＳ２１０７に処理が進む。
【０２０６】
すなわち、ステップＳ２１０５で、ログイン中のユーザにコピーボタンＧ１３０２の利用権限が無いと判定された場合に、ステップＳ２１０７に処理が進む。
【０２０７】
ステップＳ２１０６で、機能実行ライブラリ３１は、プラットフォーム部２０を介して、画像形成装置のハードウェア機能を呼び出して、コピー処理を実行し、ステップＳ２１１３で、処理を終了する。
【０２０８】
ステップＳ２１０７で、機能ライブラリ３１は、ログイン中のユーザにコピーボタンＧ１３０２の機能の利用権限が無いことを示すエラー情報を発行する。
【０２０９】
次に、ステップＳ２１０８で、機能実行ライブラリ３１は、アプリケーションにエラー情報を通知する。
【０２１０】
次に、ステップＳ２１０９で、アプリケーションは、通知されたエラー情報をいずれかのＧＵＩ部品に通知する。本実施形態では、一例として、パネルＧ１３０１が、エラー情報の通知を受けるものとする。
【０２１１】
次に、ステップＳ２１１０で、エラー情報を受信したパネルＧ１３０１は、パネル上のＧＵＩ部品の情報（ＧＵＩ部品の識別情報および表示状態）、エラーの起因となった最後のイベント、受信したエラー情報をアクセス制御部３２に通知する。
【０２１２】
次に、ステップＳ２１１１で、アクセス制御部３２は、通知されたエラー情報を、ログイン中のユーザを識別する情報と共にエラー履歴として直接記憶部１２２および間接記憶部１２３に記憶する。
【０２１３】
また、ステップＳ２１１１で、アクセス制御部３２は、上記のエラー情報と、エラーが発生したときのＧＵＩ部品の表示状態とを関連づけてエラー履歴として直接記憶部１２２および間接記憶部１２３に保存する。
【０２１４】
例えば、記録される情報は図２４のテーブル２４０１のようになる。
【０２１５】
次に、ステップＳ２１１２で、パネルＧ１３０１は、エラー情報をパネル上に表示して、ステップＳ２１１３で、一旦、処理を終了する。
【０２１６】
次に、図２２のフローチャートを参照して、上記処理後のアプリケーションのＧＵＩ画面再表示処理について説明する。
【０２１７】
まず、図２２のステップＳ２２１４で、パネルＧ１３０１は、アプリケーションからのＧＵＩ画面表示要求、もしくはユーザの操作によるＧＵＩ部品の状態変化を検知することでＧＵＩ画面の表示処理を開始する。
【０２１８】
次に、ステップＳ２２１５で、パネルＧ１３０１は、パネル上のＧＵＩ部品の情報（ＧＵＩ種類、および識別情報）と状態をアクセス制御部３２に通知し、表示の可否を問い合わせる。ここで、ＧＵＩ部品とは、例えば、コピーボタンＧ１３０２、ＳＥＮＤボタンＧ１３０３、リストボックスＧ１３０４である。
【０２１９】
次に、ステップＳ２２１７で、ステップＳ２２１５で通知を受取ったアクセス制御部３２は、直接記憶部１２２からログイン中のユーザの情報を取得する。そして、アクセス制御部３２は、図２１のステップＳ２１１１の処理により、ユーザの情報と記憶されたエラー履歴とを比較し、現在のアプリケーションの表示状態において過去にエラーが有るか否かを判定する。
【０２２０】
次に、ステップＳ２２１７で、過去にエラーが「有り」と判定された場合には、ステップＳ２２１８に処理が進む。
【０２２１】
次に、ステップＳ２２１７で、過去にエラーが「無し」と判定された場合には、ステップＳ２２１９に処理が進む。
【０２２２】
ステップＳ２２１８で、例えば、識別子が１２３４のコピーボタンＧ１３０２の押下で権限無しエラーが発生したことがパネルＧ１３０１に通知される。そして、パネルＧ１３０１は、この通知を受けて、コピーボタンＧ１３０２をグレーアウトに設定し直して表示する処理を行い、図２５に示されているように、ディスプレイへの表示処理を行う。そして、ステップ２２２０で処理が終了する。
【０２２３】
ステップＳ２２１７で、エラー履歴が無いという通知をパネルＧ１３０１が受取り、パネルＧ１３０１は、通常のＧＵＩ部品表示処理を行い、ステップＳ２２２０で処理を終了する。
【０２２４】
上記のステップＳ２２１７〜２２１９の処理により、パネルＧ１３０２は、エラー履歴を参照して、次回のＧＵＩ部品の表示状態を決定することができる。
【０２２５】
アクセス制御部３２は、間接記憶部１２３に記憶されたユーザの管理テーブル１１０１および機能利用権限情報（図１２のテーブル１２０１）が変更されたことを検知した場合には、変更されたユーザに関するエラー履歴を削除する。
【０２２６】
本実施形態では、エラー履歴の保存と参照および現在のＧＵＩ部品の状態との比較をアクセス制御部３２が行っているが、ＧＵＩ部品が行っても良い。
【０２２７】
＜上記以外の実施形態＞
実施形態３〜５では、ＧＵＩ部品、機能ライブラリ３１、アクセス制御部３２を別々のプログラムとして分割しているが、機能ライブラリ３１やアクセス制御部３２の機能の一部もしくは全てをＧＵＩ部品に実装することも可能である。
【０２２８】
以上のように、本発明によれば、ユーザの管理テーブル１１０１およびテーブル１２０１の各ユーザの機能利用権限情報を用いることにより、アプリケーションプラットフォーム上から送られてくる機能制限判断情報に対応したＧＵＩの開発が容易となる。
【図面の簡単な説明】
【０２２９】
【図１】開発ツールキットを示す概略図である。
【図２】開発用アプリケーションのＧＵＩ画面を示す図である。
【図３】ＧＵＩ部品に設定可能な機能属性値を示す図である。
【図４】ＧＵＩ部品への機能属性値の設定例を示す図である。
【図５】実施形態１における開発用アプリケーションの動作例を表すフローチャートである。
【図６】実施形態２におけるＧＵＩ部品のドラッグアンドドロップ動作を示す図である。
【図７】実施形態２における開発用アプリケーションの動作例を表すフローチャートである。
【図８】画像形成装置を表す概略図である。
【図９】画像形成装置におけるアプリケーション動作環境をあらわすソフトウェアの概略図である。
【図１０】画像形成装置のディスプレイに表示されるユーザログイン画面を示す図である。
【図１１】画像形成装置が記憶するユーザ情報の一例を示す図である。
【図１２】画像形成装置が記憶するユーザの機能利用権限情報の一例を示す図である。
【図１３】アプリケーションのＧＵＩ部品の一例を示す図である。
【図１４】アプリケーションのＧＵＩ部品の情報の一例を表す図である。
【図１５】実施形態３における画像形成装置の動作を表すフローチャートである。
【図１６】実施形態３におけるＧＵＩ画面制御の一例を示す図である。
【図１７】実施形態３におけるＧＵＩ画面制御の一例を示す図である。
【図１８】実施形態４におけるネットワークを示す簡略図である。
【図１９】実施形態４の印刷上限管理サーバが管理する情報の一例を示す図である。
【図２０】実施形態４における画像形成装置の動作を表すフローチャートである。
【図２１】実施形態５における画像形成装置の動作を表すフローチャートである。
【図２２】実施形態５における画像形成装置の動作を表すフローチャートである。
【図２３】実施形態５におけるアプリケーションの初期画面を示す図である。
【図２４】実施形態５におけるエラー履歴の一例を示す図である。
【図２５】実施形態５におけるアプリケーションの再表示画面を示す図である。
【図２６】ＡＰＩを使用してソースコードを自動生成する際に用いられるテーブルの一例を示す図である。
【符号の説明】
【０２３０】
１  画像形成装置
１１  印刷装置
１２  画像処理装置
２０  プラットフォーム部
１２１  ＣＰＵ
１２２  直接記憶部
１２３  間接記憶部
１２４  ユーザインターフェース
１２５  外部インターフェース
【図１】
2010039841.tif 000003
【図２】
2010039841.tif 000004
【図３】
2010039841.tif 000005
【図４】
2010039841.tif 000006
【図５】
2010039841.tif 000007
【図６】
2010039841.tif 000008
【図７】
2010039841.tif 000009
【図８】
2010039841.tif 000010
【図９】
2010039841.tif 000011
【図１０】
2010039841.tif 000012
【図１１】
2010039841.tif 000013
【図１２】
2010039841.tif 000014
【図１３】
2010039841.tif 000015
【図１４】
2010039841.tif 000016
【図１５】
2010039841.tif 000017
【図１６】
2010039841.tif 000018
【図１７】
2010039841.tif 000019
【図１８】
2010039841.tif 000020
【図１９】
2010039841.tif 000021
【図２０】
2010039841.tif 000022
【図２１】
2010039841.tif 000023
【図２２】
2010039841.tif 000024
【図２３】
2010039841.tif 000025
【図２４】
2010039841.tif 000026
【図２５】
2010039841.tif 000027
【図２６】
2010039841.tif 000028