Img_9_lg

ユーザインタフェース・ダイアログ


コントロールプランはノードのタスクプログラムのコントロールされたダイアログボックスを表示することで、ユーザとの相互動作ができます。下記に述べるタイプのユーザインタフェースのコンポーネントが使用できます。サンプルは、Control Plan EditorのTemplates、UIセクションの下にあります。

入力

下記のJavaコードは入力をうながすダイアログボックスを表示します。このサンプルでは、タイトルとパラメータの名前がParameter Specification の中で定義されています。その後、この情報はパラメータ名をキーとしてトークンのデータエンベロープの中に置かれます。

UI_input.png
param = myself.getString("Dialog Title");
key = myself.getString("ParamName");

myself.blinkOn();
ans = JOptionPane.showInputDialog(null, param);
myself.blinkOff();

myself.add(key,ans);

入力が整数(integer)の場合、入力整数を変換するため下記の行を使用する必要があります。
ans = Integer.parseInt(ans);    // Convert to Integer type


パスワード入力

下記のJavaコードは入力をうながすパスワードダイアログボックスを表示します。このサンプルでは、タイトルとパラメータの名前がParameter Specification の中で定義されています。その後、この情報はパラメータ名をキーとしてトークンのデータエンベロープの中に置かれます。

UI_password.png

param = myself.getString("Dialog Title");

key = myself.getString("ParamName");
 
jpf = new JPasswordField();

jop = new JOptionPane(jpf,
  JOptionPane.QUESTION_MESSAGE,
  JOptionPane.OK_CANCEL_OPTION);
dialog = jop.createDialog(param);

dialog.addComponentListener(new ComponentAdapter(){
  public void componentShown(ComponentEvent e){
    SwingUtilities.invokeLater(new Runnable(){

      public void run(){
        jpf.requestFocusInWindow();
      }
    });

  }
});
myself.blinkOn();
dialog.setVisible(true);
result = (Integer)jop.getValue();

dialog.dispose();
myself.blinkOff();
password = null;
if(result == JOptionPane.OK_OPTION){

  password = new String(jpf.getPassword());
}
myself.add(key,password);

メッセージ表示

下記のJavaコードはメッセージボックスを表示します。このサンプルでは、タイトルとパラメータの名前がParameter Specification の中で定義されています。

UI_panel.png

title = myself.getString("Dialog Title");

message = myself.getString("Message");
mtype = myself.getString("Type");
 

type = JOptionPane.PLAIN_MESSAGE;
if (mtype.equalsIgnoreCase("ERROR"))
    type = JOptionPane.ERROR_MESSAGE;

if (mtype.equalsIgnoreCase("WARNING"))
    type = JOptionPane.WARNING_MESSAGE;
if (mtype.equalsIgnoreCase("INFO"))

    type = JOptionPane.INFORMATION_MESSAGE;
myself.blinkOn();
 
JOptionPane.showMessageDialog(null,
    message,
    title,
    type);

 
myself.blinkOff();


オプション表示

下記のJavaコードは、ユーザがいくつかのオプション選択をできるようにするダイアログボックスを表示します。このサンプルでは、タイトルとパラメータの名前がParameter Specification の中で定義されています。

UI_options.png
title = myself.getString("Dialog Title");
message = myself.getString("Message");
 

print(message);
Object[] options = {"Yes, please",
                    "No, thanks",
                    "Maybe!"};
defaultButton = 2;

 
n = JOptionPane.showOptionDialog(null,
    message,
    title,
    JOptionPane.YES_NO_CANCEL_OPTION,
    JOptionPane.QUESTION_MESSAGE,
    null,
    options,
    options[defaultButton]);



リスト選択

下記のJavaコードは、選択可能なアイテムリストのダイアログボックスを表示します。この関数では、リストへのアイテムの追加と削除も行えます。このオプションは、下記のようにリストaddButtonとdataFieldメソッドと一緒に定義できます。選択はgetSelectionsメソッドで割り当てられます。

UI_select.png

title = myself.getString("DialogTitle");

multi = myself.getBoolean("Multi");
add = myself.getBoolean("EnableAdd");
del = myself.getBoolean("EnableDelete");

height = myself.getInt("height");
width = myself.getInt("width");
 

print("Title = " + title);
print("Multi = " + multi);
print("Add = " + add);

print("Del = " + del);
 
if (inputList == void)
    input = null;

 
 
list = new com.tapin.petri.net.tools.DynaList(title,inputList);

list.multiSelect(multi);
if (add == false) {
    list.addButton.setVisible(false);

    list.dataField.setVisible(false);
}
list.removeButton.setVisible(del);
list.setSize(width,height);

list.setLocationRelativeTo(null);
myself.blinkOn();
list.show();
ok = list.isOk();

print("OK = " + ok);
selections = list.getSelections();
myself.blinkOff();


データテーブル表示

データテーブル表示は、表形式のデータ表示を提供します。コントロールプランはイン-メモリのSQLテーブルのオブジェクトをサポートします。一度作成されると、このオブジェクトはトークンのデータエンベロープを介してモデル内のノードに渡すことができます。このオブジェクトは、異なるノードでアクセスされる大量のデータがある場合に便利かもしれません。

データテーブルオブジェクトがある場合そのダイアログボックスのビューも作成できます。このビューの簡単な例を下記に示します。

UI_dataview_1.png.

このビューは下記のJavaコードで作成されます。 "ws"という名前のデータテーブルを作成するのに、一つのSQLステートメントが使用されます。データベース名 "junk" としてテーブルを作成するのに、 MemoryDatabaseメソッドが使用されます。 "dv" という名前のデータビューが、DataViewDialogメソッドを使って作成されます。この例では、ダイアログボックスの座標は420x500とセットされています。データベースを入れるのにSQLステートメントが使用されます。データビューのsetVisibleメソッドはダイアログボックスを表示します。テーブルの行は選択可能で、下記のサンプルのようにして、読み出すことができます。
str = "create table ws (id int identity," +
            "name varchar," +
            "image_id varchar," +

            "state varchar," +
            "time int)";
index = new String[1];

index[0] = "ID";
 
db = new com.tapin.petri.net.MemoryDatabase("junk","ws",str);

dv = new com.tapin.petri.net.DataViewDialog(db,index,"ws",420,500,null,null, index, null,true);

db.execute("insert into ws (name) values('ben')");
dv.refresh();
dv.setVisible(true);
 
isOk = db.isOk;

if (isOk) {
    rows = dv.getSelectedRows();
    for (i=0;i<rows.length;i++) {

         print("Selected: " + dv.getValueAt(rows[i],1));
    }
}
Rubyを使用したい場合、書きのRuby コードで同様なテーブル表示ができます。
str = "create table ws (id int identity," +
            "name varchar," +
            "image_id varchar," +

            "state varchar," +
            "time int)";
index = Array.new;
index[0] = "ID";
index = index.to_java(:String)

db = com.tapin.petri.net.MemoryDatabase.new("junk","ws",str);
dv = com.tapin.petri.net.DataViewDialog.new(db,index,"ws",420,500,nil,nil, index, nil,true);
db.execute("insert into ws (name) values('ben')");
dv.refresh();
dv.setVisible(true);

 
isOk = db.isOk;
if (isOk) then
    rows = dv.getSelectedRows();
    for i in 0..rows.length

         puts "Selected: " + dv.getValueAt(rows[i],1);
    end
end

注:このメソッドは大量のデータ表示に便利です。下記に示すデータビューは、各インスタンス毎のAWS メタデータと監視情報(CPU使用率のパーセンテージ)Amazonインスタンスのリストです。

UI_dataview_2.png
 
Tap In クラウド管理サービス 特徴とメリット 活用事例 Tap In クラウドコントロールサービス
イベント管理アーキテクチャ 管理対象テクノロジー ビューア Amazon CloudWatch との統合 3tera Applogic との統合 GoGrid との統合 プロセス自動化
Tap In Systems について 経営 コンタクト
ドキュメント ダウンロード 技術論文 技術ウィッキサイト フォーラム