[Jsxe-cvs] SF.net SVN: jsxe: [1125] trunk/treeview/src/treeview/action
Status: Inactive
Brought to you by:
ian_lewis
From: <ian...@us...> - 2006-08-08 20:39:38
|
Revision: 1125 Author: ian_lewis Date: 2006-08-08 13:39:34 -0700 (Tue, 08 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1125&view=rev Log Message: ----------- Fixed when adding nodes specified in a DTD/Schema Modified Paths: -------------- trunk/treeview/src/treeview/action/AddNodeAction.java trunk/treeview/src/treeview/action/EditNodeAction.java Modified: trunk/treeview/src/treeview/action/AddNodeAction.java =================================================================== --- trunk/treeview/src/treeview/action/AddNodeAction.java 2006-08-08 20:38:58 UTC (rev 1124) +++ trunk/treeview/src/treeview/action/AddNodeAction.java 2006-08-08 20:39:34 UTC (rev 1125) @@ -52,6 +52,7 @@ import net.sourceforge.jsxe.LocalizedAction; import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.gui.TabbedView; +import net.sourceforge.jsxe.dom.XMLDocument; import net.sourceforge.jsxe.dom.AdapterNode; import net.sourceforge.jsxe.dom.completion.ElementDecl; import net.sourceforge.jsxe.dom.completion.EntityDecl; @@ -117,26 +118,41 @@ if (selectedNode != null) { try { if (m_element != null) { - if (m_element.getAttributes().size() > 0) { - EditTagDialog dialog = new EditTagDialog(jsXe.getActiveView(), - m_element, - new HashMap(), - m_element.empty, - m_element.completionInfo.getEntityHash(), - new ArrayList(), //don't support IDs for now. - selectedNode.getOwnerDocument()); - dialog.show(); - addedNode = selectedNode.addAdapterNode(dialog.getNewNode()); - } else { - addedNode = selectedNode.addAdapterNode(m_element.name, null, AdapterNode.ELEMENT_NODE, selectedNode.childCount()); + XMLDocument document = selectedNode.getOwnerDocument(); + boolean isOk = true; + try { + document.beginCompoundEdit(); + if (m_element.getAttributes().size() > 0) { + EditTagDialog dialog = new EditTagDialog(jsXe.getActiveView(), + m_element, + new HashMap(), + m_element.empty, + m_element.completionInfo.getEntityHash(), + new ArrayList(), //don't support IDs for now. + document); + dialog.show(); + isOk = (dialog.getNewNode() != null); + if (isOk) { + addedNode = selectedNode.addAdapterNode(dialog.getNewNode()); + } + } else { + addedNode = selectedNode.addAdapterNode(m_element.name, null, AdapterNode.ELEMENT_NODE, selectedNode.childCount()); + } + } finally { + document.endCompoundEdit(); } } else { //add the node of the correct type to the end of the children of this node addedNode = selectedNode.addAdapterNode(m_name, m_value, m_nodeType, selectedNode.childCount()); } - tree.expandPath(tree.getLeadSelectionPath()); - //The TreeModel doesn't automatically call treeNodesInserted() yet - tree.updateUI(); + + //if we hit cancel in the dialog we don't want to do this. + if (isOk) { + tree.expandPath(tree.getLeadSelectionPath()); + //The TreeModel doesn't automatically call treeNodesInserted() yet + tree.updateUI(); + } + } catch (DOMException dome) { JOptionPane.showMessageDialog(tree, dome, "XML Error", JOptionPane.WARNING_MESSAGE); Modified: trunk/treeview/src/treeview/action/EditNodeAction.java =================================================================== --- trunk/treeview/src/treeview/action/EditNodeAction.java 2006-08-08 20:38:58 UTC (rev 1124) +++ trunk/treeview/src/treeview/action/EditNodeAction.java 2006-08-08 20:39:34 UTC (rev 1125) @@ -54,6 +54,7 @@ import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.TabbedView; import net.sourceforge.jsxe.dom.AdapterNode; +import net.sourceforge.jsxe.dom.XMLDocument; import net.sourceforge.jsxe.dom.completion.ElementDecl; //}}} @@ -86,18 +87,24 @@ AdapterNode addedNode = null; if (selectedNode != null && selectedNode.getNodeType() == AdapterNode.ELEMENT_NODE) { try { - ElementDecl element = selectedNode.getOwnerDocument().getElementDecl(selectedNode.getNodeName()); + XMLDocument document = selectedNode.getOwnerDocument(); + ElementDecl element = document.getElementDecl(selectedNode.getNodeName()); if (element != null) { - //Edit tag dialog needs to be reworked - EditTagDialog dialog = new EditTagDialog(jsXe.getActiveView(), - element, - new HashMap(), - element.empty, - element.completionInfo.getEntityHash(), - new ArrayList(), //don't support IDs for now. - selectedNode.getOwnerDocument(), - selectedNode); - dialog.show(); + + try { + document.beginCompoundEdit(); + EditTagDialog dialog = new EditTagDialog(jsXe.getActiveView(), + element, + new HashMap(), + element.empty, + element.completionInfo.getEntityHash(), + new ArrayList(), //don't support IDs for now. + selectedNode.getOwnerDocument(), + selectedNode); + dialog.show(); + } finally { + document.endCompoundEdit(); + } //The TreeModel doesn't automatically call treeNodesInserted() yet tree.updateUI(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |