Author: heiko.braun(a)jboss.com
Date: 2010-02-09 09:40:50 -0500 (Tue, 09 Feb 2010)
New Revision: 959
Added:
bpm-console/trunk/gui/war/src/main/java/org/jboss/bpm/console/client/process/JSONTree.java
Modified:
bpm-console/trunk/gui/war/src/main/java/org/jboss/bpm/console/client/process/InstanceDataView.java
Log:
Fix BPMC-48
Modified:
bpm-console/trunk/gui/war/src/main/java/org/jboss/bpm/console/client/process/InstanceDataView.java
===================================================================
---
bpm-console/trunk/gui/war/src/main/java/org/jboss/bpm/console/client/process/InstanceDataView.java 2010-02-08
15:58:30 UTC (rev 958)
+++
bpm-console/trunk/gui/war/src/main/java/org/jboss/bpm/console/client/process/InstanceDataView.java 2010-02-09
14:40:50 UTC (rev 959)
@@ -21,6 +21,7 @@
*/
package org.jboss.bpm.console.client.process;
+import com.google.gwt.gen2.table.client.AbstractScrollTable;
import com.google.gwt.xml.client.Document;
import com.google.gwt.xml.client.NamedNodeMap;
import com.google.gwt.xml.client.Node;
@@ -29,9 +30,11 @@
import org.gwt.mosaic.ui.client.ListBox;
import org.gwt.mosaic.ui.client.layout.MosaicPanel;
import org.gwt.mosaic.ui.client.list.DefaultListModel;
+import org.jboss.bpm.console.client.ApplicationContext;
import org.jboss.bpm.console.client.LazyPanel;
import org.jboss.bpm.console.client.util.ConsoleLog;
import org.jboss.bpm.console.client.util.DOMUtil;
+import org.jboss.errai.workspaces.client.Registry;
import java.util.ArrayList;
import java.util.List;
@@ -51,10 +54,14 @@
private boolean isInitialized;
+ boolean isRiftsawInstance = false;
+
public InstanceDataView()
{
super();
- this.setPadding(5);
+ this.setPadding(5);
+ ApplicationContext appContext = Registry.get(ApplicationContext.class);
+ isRiftsawInstance = appContext.getConfig().getProfileName().equals("BPEL
Console");
}
public void initialize()
@@ -67,6 +74,8 @@
"Key", "XSD Type", "Java Type",
"Value"}
);
+ listBox.setColumnResizePolicy(AbstractScrollTable.ColumnResizePolicy.MULTI_CELL);
+
listBox.setCellRenderer(new ListBox.CellRenderer<DataEntry>() {
public void renderCell(ListBox<DataEntry> listBox, int row, int column,
DataEntry item) {
@@ -81,7 +90,15 @@
listBox.setText(row,column, item.java);
break;
case 3:
- listBox.setText(row,column, item.value);
+ if(isRiftsawInstance)
+ {
+ JSONTree tree = new JSONTree(item.value);
+ listBox.setWidget(row,column, tree);
+ }
+ else
+ {
+ listBox.setText(row,column, item.value);
+ }
break;
default:
throw new RuntimeException("Unexpected column size");
@@ -135,13 +152,12 @@
dataEntry.xsd =
valueNodeAttributes.getNamedItem("xsi:type").getNodeValue();
List<Node> valueChildElements =
DOMUtil.getChildElements(valueNode.getChildNodes());
-
+
if(valueChildElements.isEmpty()
&& valueNode.hasChildNodes()
&& Node.TEXT_NODE ==
valueNode.getChildNodes().item(0).getNodeType())
{
- // simple type
- dataEntry.value = valueNode.getFirstChild().getNodeValue();
+ dataEntry.value = valueNode.getFirstChild().getNodeValue();
}
else
{
Added:
bpm-console/trunk/gui/war/src/main/java/org/jboss/bpm/console/client/process/JSONTree.java
===================================================================
---
bpm-console/trunk/gui/war/src/main/java/org/jboss/bpm/console/client/process/JSONTree.java
(rev 0)
+++
bpm-console/trunk/gui/war/src/main/java/org/jboss/bpm/console/client/process/JSONTree.java 2010-02-09
14:40:50 UTC (rev 959)
@@ -0,0 +1,101 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.jboss.bpm.console.client.process;
+
+import com.google.gwt.json.client.JSONObject;
+import com.google.gwt.json.client.JSONParser;
+import com.google.gwt.json.client.JSONValue;
+import com.google.gwt.user.client.ui.ScrollPanel;
+import com.google.gwt.widgetideas.client.FastTree;
+import com.google.gwt.widgetideas.client.FastTreeItem;
+import org.jboss.bpm.console.client.util.ConsoleLog;
+
+public class JSONTree extends ScrollPanel
+{
+ String json = null;
+
+ public JSONTree(String json)
+ {
+ this.json = json;
+
+ FastTree tree = new FastTree();
+ FastTreeItem root = tree.addItem("message");
+
+ parseObject(root, "root", JSONParser.parse(json));
+
+ this.add(tree);
+ }
+
+ private void parseValue(FastTreeItem root, String key, JSONValue jsonValue)
+ {
+ if(jsonValue.isBoolean()!=null)
+ {
+ FastTreeItem treeItem = root.addItem(key);
+ treeItem.addItem(jsonValue.isBoolean().toString());
+ }
+ else if(jsonValue.isNumber()!=null)
+ {
+ FastTreeItem fastTreeItem = root.addItem(key);
+ fastTreeItem.addItem(jsonValue.isNumber().toString());
+ }
+ else if(jsonValue.isString()!=null)
+ {
+ FastTreeItem treeItem = root.addItem(key);
+ treeItem.addItem(jsonValue.isString().toString());
+ }
+ else
+ {
+ ConsoleLog.warn("Unexpected JSON value: " + jsonValue);
+ }
+
+ }
+
+ private void parseArray(FastTreeItem root, String key, JSONValue jsonValue)
+ {
+
+ }
+
+ private void parseObject(FastTreeItem root, String key, JSONValue topLevel)
+ {
+ JSONObject rootJSO = topLevel.isObject();
+ if(null==rootJSO)
+ throw new IllegalArgumentException("Not a JSON object: "+topLevel);
+
+ for(String innerKey : rootJSO.keySet())
+ {
+ JSONValue jsonValue = rootJSO.get(innerKey);
+ if(jsonValue.isObject()!=null)
+ {
+ parseObject(root, innerKey, jsonValue);
+ }
+ else if (jsonValue.isArray()!=null)
+ {
+ parseArray(root, innerKey, jsonValue);
+ }
+ else
+ {
+ parseValue(root, innerKey, jsonValue);
+ }
+ }
+ }
+
+}