putValue(AbstractAction.NAME, "部位・指示...");
}
@Override
public void actionPerformed(ActionEvent e) {
BundleMed srcBundle = (BundleMed)ctx.getStamp().getModel();
RegionView dialog = new RegionView(null, true);
dialog.setValue(srcBundle.getClaimItem());
// ダイアログ表示位置計算 できればスタンプの上に,上にスペースがなければ下に
Point p = ctx.getLocationOnScreen();
int y; p.y = (y = p.y - dialog.getHeight() - 10)>30? y: p.y + ctx.getHeight() + 10;
dialog.setLocation(p);
dialog.setVisible(true);
// キャンセルされた場合はそのまま帰る
if (dialog.isCancelled()) {
dialog.dispose();
return;
}
// 新たなスタンプ作成
ModuleModel stamp = createModuleModel(ctx.getStamp());
BundleMed bundle = (BundleMed) stamp.getModel();
// あらたな ClaimItem を作る
ArrayList<ClaimItem> list = new ArrayList<ClaimItem>();
// 部位 ClaimItem 以外をコピー 001000607,608,001,002 はマスター設定の問題で別扱い
for (ClaimItem src : srcBundle.getClaimItem()) {
if (!src.getCode().startsWith("0010008")
&& !src.getCode().startsWith("0010009")
&& !src.getCode().equals("001000607")
&& !src.getCode().equals("001000608")
&& !src.getCode().equals("001000001")
&& !src.getCode().equals("001000002")
) {
list.add(createClaimItem(src));
}
}
// 部位 ClaimItem は dialog からデータを取り込む
list.addAll(dialog.getValue());
// できた list を srcBundle に登録
bundle.setClaimItem(list.toArray(new ClaimItem[list.size()]));
dialog.dispose();
propertyChanged(stamp);
}