スタンプエディターの右矢印 (2)
スタンプエディターの右矢印機能を少し充実させた。
|
client/StampBoxPlugin.java
class EditorValueListener implements PropertyChangeListener { public void propertyChange(PropertyChangeEvent e) { Object obj = e.getNewValue(); if (obj != null && obj instanceof ModuleModel) { // 傷病名以外の場合 ModuleModel stamp = (ModuleModel) obj; String entity = stamp.getModuleInfo().getEntity(); final StampTree tree = userBox.getStampTree(entity); // tree.addStamp(stamp, null); // ←オリジナル //pns^ StampTreeNode target = tree.getSelectedNode(); if (target == null) { tree.addStamp(stamp, null); } else { if (target.isLeaf()) { // Leaf の場合,上書きするか確認 String targetName = target.getStampInfo().getStampName(); String sourceName = stamp.getModuleInfo().getStampName(); if (targetName.equals(sourceName)) { // 名前が同じなら置き換えるかどうか確認 int confirm = MyJSheet.showConfirmDialog(frame, targetName + "を上書きしますか?", "上書き確認", JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE ); if(confirm == JOptionPane.OK_OPTION) { ((StampTreeTransferHandler)tree.getTransferHandler()).setPosition (StampTreeTransferHandler.Insert.AFTER); tree.replaceStamp(stamp, target); } } else { // 名前が違えば選択された項目の下に入れる ((StampTreeTransferHandler)tree.getTransferHandler()).setPosition(StampTreeTransferHandler.Insert.AFTER); tree.addStamp(stamp, target); } } else { // Folder ならその中に入れる ((StampTreeTransferHandler)tree.getTransferHandler()).setPosition(StampTreeTransferHandler.Insert.INTO_FOLDER); tree.addStamp(stamp, target); } } // 終わったら tree にフォーカスを取る tree.requestFocusInWindow(); } else if (obj != null && obj instanceof ArrayList) { // 傷病名の場合 StampTree tree = getStampTree(IInfoModel.ENTITY_DIAGNOSIS); tree.addDiagnosis((ArrayList) obj); } } //pns$ }
client/StampTree.java
/** * KartePaneから drop されたスタンプをツリーに加える。 * replace 対応 by pns */ public boolean addStamp(ModuleModel droppedStamp, StampTreeNode selected) { return addStamp(droppedStamp, selected, false); } public boolean replaceStamp(ModuleModel droppedStamp, StampTreeNode selected) { return addStamp(droppedStamp, selected, true); } public boolean addStamp(ModuleModel droppedStamp, final StampTreeNode selected, final boolean isReplace) { ・ ・ @Override protected void succeeded(String result) { logger.debug("addStamp succeeded"); if (sdl.isNoError() && result.equals(stampId)) { //pns replace 対応 addInfoToTree(info, selected, isReplace); } else { ・ ・ /** * StampTree に新しいノードを加える。 * replace 対応 by pns * @param info 追加するノードの情報 * @param selected カーソルの下にあるノード(Drop 位置のノード) */ public void addInfoToTree(ModuleInfoBean info, StampTreeNode selected) { addInfoToTree(info, selected, false); } public void addInfoToTree(ModuleInfoBean info, StampTreeNode selected, boolean isReplace) { //pns^ selected = targetNode or null StampTreeTransferHandler handler = (StampTreeTransferHandler) this.getTransferHandler(); StampTreeTransferHandler.Insert insertPosition = handler.getInsertPosition(); //pns$ // // StampInfo から新しい StampTreeNode を生成する // StampTreeNode node = new StampTreeNode(info); // // Drop 位置のノードによって追加する位置を決める // //pns^ if (selected != null) { StampTreeNode newParent = (StampTreeNode) selected.getParent(); int index = newParent.getIndex(selected); DefaultTreeModel model = (DefaultTreeModel) this.getModel(); switch(insertPosition) { case BEFORE: model.insertNodeInto(node, newParent, index); break; case AFTER: model.insertNodeInto(node, newParent, index+1); break; default: // INTO_FOLDER model.insertNodeInto(node, selected, selected.getChildCount()); } // replace if (isReplace) deleteNode(); // 追加したノードを選択する TreeNode[] path = model.getPathToRoot(node); ((JTree)this).setSelectionPath(new TreePath(path)); //pns$ ・ ・ public void addDiagnosis(ArrayListlist) { ・ ・ @Override protected void succeeded(List result) { logger.debug("addDiagnosis succeeded"); if (sdl.isNoError()) { for(ModuleInfoBean info : infoList) { // addInfoToTree(info, null); //pns^ 選択されているとき StampTreeNode target = getSelectedNode(); if (target != null) { if (target.isLeaf()) { // 葉の時は後ろに挿入する ((StampTreeTransferHandler) getTransferHandler()).setPosition(StampTreeTransferHandler.Insert.AFTER); } else { // フォルダの時は中に挿入する ((StampTreeTransferHandler) getTransferHandler()).setPosition(StampTreeTransferHandler.Insert.INTO_FOLDER); } } addInfoToTree(info, getSelectedNode()); //pns$ } } else {
« メモが保存されなかった | トップページ | 病名エディタの左矢印 »
「OpenDolphin」カテゴリの記事
- Java 17 への移行(7) - OpenDolphin client の対応 (2023.02.04)
- Java 17 への移行(6) - Hibernate 6 でやらかす(2023.02.03)
- Java 17 への移行(5) - OpenDolphin server の対応(2023.02.02)
- Java 17 への移行(4) - OpenSearch の準備 [ubuntu 編](2023.02.01)
- Java 17 への移行(3) - OpenSearch の準備 [mac 編](2023.01.31)