diff src/treecms/gui/GUIEditor.java @ 9:17ed97ca9960

commit
author shoshi
date Mon, 18 Apr 2011 01:07:27 +0900
parents f96193babac0
children bb9760760744
line wrap: on
line diff
--- a/src/treecms/gui/GUIEditor.java	Thu Mar 31 02:08:44 2011 +0900
+++ b/src/treecms/gui/GUIEditor.java	Mon Apr 18 01:07:27 2011 +0900
@@ -31,6 +31,7 @@
 import treecms.api.Tree;
 import treecms.api.TreeEditor;
 import treecms.memory.OnMemoryForest;
+import treecms.tree.util.PathNotFoundException;
 
 public class GUIEditor
 {
@@ -38,7 +39,7 @@
 	
 	//GUIコンポーネント
 	private JFrame m_frame;
-	private JTree m_nodeTree;
+	private NodeViewerTree m_nodeTree;
 	private AttributeEditorTable m_attrTable;
 	private JButton m_commit,m_pull,m_check,m_merge;
 	private JButton m_attrSave,m_attrCancel;
@@ -164,17 +165,29 @@
 					NodeData data = new NodeData();
 					data.putAll(result);
 					
-					DefaultMutableTreeNode node = (DefaultMutableTreeNode)m_nodeTree.getLastSelectedPathComponent();
-					
-					Node parent = (Node)node.getUserObject();
-					Node child = parent.getForest().create(data);
-					parent.add(child);
+					//パスの取得
+					Object[] treePath = m_nodeTree.getSelectionPath().getPath();
+					Node[] nodePath = new Node[treePath.length];
+					for(int i = 0;i < treePath.length;i ++){
+						System.out.println(treePath[i].getClass().toString());
+						DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode)treePath[i];
+						nodePath[i] = (Node)treeNode.getUserObject();
+					}
 					
-					DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(child);
-					node.add(newNode);
+					Node target = nodePath[nodePath.length-1];
+					Node child = target.getForest().create(data);
+					NodeData newData = target.getData();
+					newData.add(child);
+					try{
+						m_editor.updateTree(target,newData,nodePath);
+					}catch(PathNotFoundException _err){
+						_err.printStackTrace();
+						JOptionPane.showMessageDialog(m_frame,"追加に失敗しました:"+_err.getMessage());
+						return;
+					}
 					
-					DefaultTreeModel model = (DefaultTreeModel)m_nodeTree.getModel();
-					model.reload();
+					NodeViewerTree.NVTreeModel model = (NodeViewerTree.NVTreeModel)m_nodeTree.getModel();
+					model.setTree(m_editor.getRoot(),true);
 				}
 			}