From 901ee6f6574ccd90d5d0ef6732a08849eadf9a8f Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Wed, 8 Oct 2014 14:34:10 +0200 Subject: Support single-element schemas and outcomes --- .../gui/tabs/outcome/form/DataRecord.java | 43 ++++------------------ .../cristalise/gui/tabs/outcome/form/Field.java | 34 +++++++++++++++++ .../gui/tabs/outcome/form/OutcomePanel.java | 7 +++- 3 files changed, 47 insertions(+), 37 deletions(-) diff --git a/src/main/java/org/cristalise/gui/tabs/outcome/form/DataRecord.java b/src/main/java/org/cristalise/gui/tabs/outcome/form/DataRecord.java index 32070ca..881645b 100644 --- a/src/main/java/org/cristalise/gui/tabs/outcome/form/DataRecord.java +++ b/src/main/java/org/cristalise/gui/tabs/outcome/form/DataRecord.java @@ -105,42 +105,13 @@ public class DataRecord extends OutcomeStructure implements ChangeListener { else { DRPanel = null;// have to make a new tabbed pane now deferChild = false; - if (newElement instanceof Field) { - Field newField = (Field)newElement; - // make some nice columns - position.gridwidth=1; - position.gridy++; - position.gridx=0; - position.weightx=2; - position.weighty=0; - position.fill=GridBagConstraints.NONE; - gridbag.setConstraints(newField.getLabel(), position); - this.add(newField.getLabel()); - position.gridy++; - position.weighty=1; - position.fill = GridBagConstraints.HORIZONTAL; - gridbag.setConstraints(newField.getCData(), position); - this.add(newField.getCData()); - position.gridx++; - position.gridy--; - position.gridheight=2; - position.weightx=0; - position.fill=GridBagConstraints.NONE; - gridbag.setConstraints(newField.getAttributes(), position); - this.add(newField.getAttributes()); - position.gridx=0; - position.gridheight=1; - position.gridy++; - } - else { - position.fill=GridBagConstraints.HORIZONTAL; - position.gridwidth=3; - position.weightx=1.0; - position.gridy++; - position.weighty=1.0; - gridbag.setConstraints(newElement, position); - add(newElement); - } + position.fill=GridBagConstraints.HORIZONTAL; + position.gridwidth=3; + position.weightx=1.0; + position.gridy++; + position.weighty=1.0; + gridbag.setConstraints(newElement, position); + add(newElement); } } diff --git a/src/main/java/org/cristalise/gui/tabs/outcome/form/Field.java b/src/main/java/org/cristalise/gui/tabs/outcome/form/Field.java index 9a043d1..da310ba 100644 --- a/src/main/java/org/cristalise/gui/tabs/outcome/form/Field.java +++ b/src/main/java/org/cristalise/gui/tabs/outcome/form/Field.java @@ -1,5 +1,8 @@ package org.cristalise.gui.tabs.outcome.form; import java.awt.Component; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.Insets; import javax.swing.JComponent; import javax.swing.JLabel; @@ -42,6 +45,37 @@ public class Field extends OutcomeStructure { tagName = new JLabel(model.getName()); tagName.setVerticalAlignment(SwingConstants.BOTTOM); + setupPanel(); + } + + private void setupPanel() { + GridBagLayout gridbag = new java.awt.GridBagLayout(); + setLayout(gridbag); + GridBagConstraints position = new GridBagConstraints(); + position.anchor = GridBagConstraints.NORTHWEST; + position.ipadx = 5; position.ipady = 5; + position.insets = new Insets(5,5,0,0); + position.gridwidth=1; + position.gridy=0; position.gridx=0; + position.weightx=2; position.weighty=0; + position.fill=GridBagConstraints.NONE; + gridbag.setConstraints(getLabel(), position); + this.add(getLabel()); + position.gridy++; + position.weighty=1; + position.fill = GridBagConstraints.HORIZONTAL; + gridbag.setConstraints(getCData(), position); + this.add(getCData()); + position.gridx++; + position.gridy--; + position.gridheight=2; + position.weightx=0; + position.fill=GridBagConstraints.NONE; + gridbag.setConstraints(getAttributes(), position); + this.add(getAttributes()); + position.gridx=0; + position.gridheight=1; + position.gridy++; } public JComponent getLabel() { diff --git a/src/main/java/org/cristalise/gui/tabs/outcome/form/OutcomePanel.java b/src/main/java/org/cristalise/gui/tabs/outcome/form/OutcomePanel.java index e3f4622..cf2ed0e 100644 --- a/src/main/java/org/cristalise/gui/tabs/outcome/form/OutcomePanel.java +++ b/src/main/java/org/cristalise/gui/tabs/outcome/form/OutcomePanel.java @@ -28,6 +28,7 @@ import org.cristalise.gui.tabs.outcome.OutcomeNotInitialisedException; import org.cristalise.kernel.persistency.outcome.Outcome; import org.cristalise.kernel.utils.FileStringUtility; import org.cristalise.kernel.utils.Logger; +import org.exolab.castor.xml.schema.ComplexType; import org.exolab.castor.xml.schema.ElementDecl; import org.exolab.castor.xml.schema.Schema; import org.exolab.castor.xml.schema.reader.SchemaReader; @@ -283,7 +284,11 @@ public class OutcomePanel extends JPanel implements OutcomeHandler if (rootElementDecl == null) throw new InvalidSchemaException("No root elements defined"); - documentRoot = new DataRecord(rootElementDecl, readOnly, help, false); + + if (rootElementDecl.getType().isSimpleType() || ((ComplexType)rootElementDecl.getType()).isSimpleContent()) + documentRoot = new Field(rootElementDecl, readOnly, help); + else + documentRoot = new DataRecord(rootElementDecl, readOnly, help, false); Logger.msg(5, "Finished structure. Populating..."); if (docElement == null) -- cgit v1.2.3