|
From: <lo...@us...> - 2010-04-13 13:33:33
|
Revision: 2456
http://qtitools.svn.sourceforge.net/qtitools/?rev=2456&view=rev
Author: loccy
Date: 2010-04-13 13:33:27 +0000 (Tue, 13 Apr 2010)
Log Message:
-----------
Validatr: MQ-specific alterations for Validatr added.
Modified Paths:
--------------
trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/AttributePanel.java
trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/AttributeTable.java
trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/SourcePanel.java
trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/TreePanel.java
Modified: trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/AttributePanel.java
===================================================================
--- trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/AttributePanel.java 2010-04-13 10:17:59 UTC (rev 2455)
+++ trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/AttributePanel.java 2010-04-13 13:33:27 UTC (rev 2456)
@@ -35,6 +35,7 @@
package org.qtitools.validatr.panel;
import java.awt.BorderLayout;
+import java.io.StringWriter;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
@@ -44,8 +45,15 @@
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
import org.qtitools.qti.attribute.Attribute;
+import org.qtitools.qti.node.XmlNode;
import org.qtitools.validatr.model.AssessmentDocument;
import org.qtitools.validatr.model.AssessmentDocumentAdapter;
import org.qtitools.validatr.model.AssessmentDocumentEvent;
@@ -54,6 +62,7 @@
import org.qtitools.validatr.settings.Settings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.w3c.dom.Node;
/**
* This panel handles attributes.
@@ -184,8 +193,11 @@
if (row != -1)
{
String attrName = (String) table.getModel().getValueAt(row, AttributeTable.COLUMN_NAME_INDEX);
- Attribute attribute = getSelectedDocument().getSelectedNode().getAttributes().get(attrName);
- getSelectedDocument().setSelectedAttribute(this, attribute);
+ if (!attrName.equals("*value*"))
+ {
+ Attribute attribute = getSelectedDocument().getSelectedNode().getAttributes().get(attrName);
+ getSelectedDocument().setSelectedAttribute(this, attribute);
+ }
}
}
@@ -194,10 +206,50 @@
String attrName = (String) model.getValueAt(row, AttributeTable.COLUMN_NAME_INDEX);
String attrValue = (String) model.getValueAt(row, AttributeTable.COLUMN_VALUE_INDEX);
+
try
{
- if (attrValue != null)
+ // it's not really a real attribute - it's a fake one representing the text value of the
+ // node
+ if (attrName.equals("*value*"))
{
+ XmlNode currentNode = getSelectedDocument().getSelectedNode();
+ Node realNode = currentNode.getSourceNode();
+
+
+ // empty node - no existing text, no attributes
+ if (realNode == null)
+ {
+ getSelectedDocument().loadNode(AttributePanel.this, currentNode, "<baseValue>"+attrValue+"</baseValue>");
+ }
+ else // not empty node
+ {
+ realNode.setTextContent(attrValue);
+ // there has to be a less convoluted way of doing this. Hey ho.
+
+
+ // turn realNode into an XML string
+ StringWriter sw = new StringWriter();
+ try {
+ Transformer t = TransformerFactory.newInstance().newTransformer();
+ t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+ t.transform(new DOMSource(realNode), new StreamResult(sw));
+ } catch (TransformerException te) {
+ // should never happen
+ }
+ String finalXml = sw.toString();
+
+
+ // we end up with the bloody QTI namespace in our XML fragment, so strip it
+ finalXml = finalXml.replace(" xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\"","");
+
+
+ // and finally we can load the node with the new XML value. Whew.
+ getSelectedDocument().loadNode(AttributePanel.this, currentNode, finalXml);
+ }
+ }
+ else if (attrValue != null)
+ {
Attribute attribute = getSelectedDocument().getSelectedNode().getAttributes().get(attrName);
getSelectedDocument().loadAttribute(AttributePanel.this, attribute, attrValue);
@@ -214,4 +266,4 @@
JOptionPane.showMessageDialog(AttributePanel.this, message, "Error", JOptionPane.ERROR_MESSAGE);
}
}
-}
+}
\ No newline at end of file
Modified: trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/AttributeTable.java
===================================================================
--- trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/AttributeTable.java 2010-04-13 10:17:59 UTC (rev 2455)
+++ trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/AttributeTable.java 2010-04-13 13:33:27 UTC (rev 2456)
@@ -218,18 +218,30 @@
SingleEnumAttributeEditor editor = new SingleEnumAttributeEditor((EnumerateAttribute) attribute);
editors.put(i, editor);
// Different height for all rows. Looks ugly.
-// setRowHeight(i, editor.getComponent().getPreferredSize().height);
+ // setRowHeight(i, editor.getComponent().getPreferredSize().height);
// Same height for all rows. Looks even more ugly.
-// int height = getRowHeight();
-// int newHeight = editor.getComponent().getPreferredSize().height;
-// if (newHeight > height)
-// setRowHeight(newHeight);
+ // int height = getRowHeight();
+ // int newHeight = editor.getComponent().getPreferredSize().height;
+ // if (newHeight > height)
+ // setRowHeight(newHeight);
}
if (document.getSelectedAttribute() == attribute)
getSelectionModel().setSelectionInterval(i, i);
}
+ if (!actualNode.hasChildNodes())
+ {
+ String value = "";
+ try
+ {
+ value = actualNode.getSourceNode().getTextContent();
+ } catch (NullPointerException e)
+ {
+ // do nothing - we know
+ }
+ model.addRow(new Object[] {null, "*value*",value, false});
+ }
}
}
Modified: trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/SourcePanel.java
===================================================================
--- trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/SourcePanel.java 2010-04-13 10:17:59 UTC (rev 2455)
+++ trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/SourcePanel.java 2010-04-13 13:33:27 UTC (rev 2456)
@@ -151,7 +151,17 @@
{
try
{
- getSelectedDocument().loadNode(SourcePanel.this, sourceEditor.getActualNode(), sourceEditor.getText());
+ String changeValue = sourceEditor.getText();
+ if (changeValue.contains("baseValue baseType=\"string\""))
+ {
+ changeValue = changeValue.replace("baseValue baseType=\"string\">","baseValue baseType=\"string\"><![CDATA[");
+ changeValue = changeValue.replace("</baseValue>","]]></baseValue>");
+
+ //changeValue = "<![CDATA["+changeValue+"]]>";
+ }
+ System.out.println(changeValue);
+ getSelectedDocument().loadNode(SourcePanel.this, sourceEditor.getActualNode(), /* sourceEditor.getText() */ changeValue);
+ //System.out.println(changeValue);
}
catch (Throwable ex)
{
Modified: trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/TreePanel.java
===================================================================
--- trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/TreePanel.java 2010-04-13 10:17:59 UTC (rev 2455)
+++ trunk/projects/validatr/src/main/java/org/qtitools/validatr/panel/TreePanel.java 2010-04-13 13:33:27 UTC (rev 2456)
@@ -180,9 +180,20 @@
NodeGroup group = parentXmlNode.getNodeGroups().get(i);
for (XmlNode childXmlNode : group.getChildren())
{
- XmlTreeNode childTreeNode = new XmlTreeNode(childXmlNode);
- parentTreeNode.add(childTreeNode);
- updateTreeNode(childTreeNode);
+ // MQ-specific tweak - for the purposes of MQ, we're only interested in
+ // template processing and response processing. Anything else would
+ // just be noise.
+
+ if ((childXmlNode.getFullName().contains("templateProcessing")) ||
+ (childXmlNode.getFullName().contains("responseProcessing")))
+
+ // uncomment below and comment out above two IF lines for original Validatr behaviour
+ //if (true)
+ {
+ XmlTreeNode childTreeNode = new XmlTreeNode(childXmlNode);
+ parentTreeNode.add(childTreeNode);
+ updateTreeNode(childTreeNode);
+ }
}
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|