Erste Version von PersistentScale
Folgende Punkte funktionieren: * Hinzufügen, Editieren, Verschieben und Löschen des Widgets * Bearbeiten der Optionen für die Skalen (Hinzufügen, Editieren, Löschen) Funktioniert noch nicht: * Hinzufügen von Fragen - Zur Zeit sind da 3 Dummy-Texte eingebaut, um die eigentliche Ausgabe zu testen * Ausgabe der Zeilen (Frage plus Skala) erfolgt noch nicht im richtigen Format * Noch keine Anzeige auf der Webseite (keine Ahnung warum, ich dachte, daß sollte funktionieren, wenn die Ausgabe im Form-Editor funktioniert) * vermutlich viele andere Dinge git-svn-id: https://svn.libreccm.org/ccm/trunk@381 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
6a00eb6cb5
commit
dba3db1439
|
|
@ -0,0 +1,166 @@
|
||||||
|
/*
|
||||||
|
* PersistentScale
|
||||||
|
*
|
||||||
|
* This is a persistent scale widget, which will create a checkbox group with a
|
||||||
|
* configurable number of automatically created options.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package com.arsdigita.cms.contenttypes;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.Component;
|
||||||
|
import com.arsdigita.bebop.Label;
|
||||||
|
import com.arsdigita.bebop.SimpleContainer;
|
||||||
|
import com.arsdigita.bebop.form.OptionGroup;
|
||||||
|
import com.arsdigita.bebop.form.RadioGroup;
|
||||||
|
import com.arsdigita.domain.DataObjectNotFoundException;
|
||||||
|
import com.arsdigita.formbuilder.PersistentRadioGroup;
|
||||||
|
import com.arsdigita.formbuilder.PersistentWidget;
|
||||||
|
import com.arsdigita.persistence.DataObject;
|
||||||
|
import com.arsdigita.persistence.OID;
|
||||||
|
import com.arsdigita.persistence.metadata.ObjectType;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Sören Bernstein
|
||||||
|
*/
|
||||||
|
public class PersistentScale extends PersistentWidget {
|
||||||
|
|
||||||
|
public static final String BASE_DATA_OBJECT_TYPE = "com.arsdigita.formbuilder.Widget";
|
||||||
|
private static final String OPTION_LIST = "optionList";
|
||||||
|
private static final String QUESTION_LIST = "questionList";
|
||||||
|
private ArrayList m_questions = new ArrayList();
|
||||||
|
|
||||||
|
// *** Constructors -------------
|
||||||
|
/**
|
||||||
|
* Constructor that creates a new CheckboxGroup domain object that
|
||||||
|
* can be saved to the database later on.
|
||||||
|
*/
|
||||||
|
public PersistentScale() {
|
||||||
|
this(BASE_DATA_OBJECT_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor that creates a new CheckboxGroup domain object that
|
||||||
|
* can be saved to the database later on.
|
||||||
|
*/
|
||||||
|
public PersistentScale(String typeName) {
|
||||||
|
super(typeName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PersistentScale(ObjectType type) {
|
||||||
|
super(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PersistentScale(DataObject obj) {
|
||||||
|
super(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor that retrieves an existing CheckboxGroup domain object
|
||||||
|
* from the database.
|
||||||
|
*
|
||||||
|
* @param id The object id of the CheckboxGroup domain object to retrieve
|
||||||
|
*/
|
||||||
|
public PersistentScale(BigDecimal id)
|
||||||
|
throws DataObjectNotFoundException {
|
||||||
|
|
||||||
|
this(new OID(BASE_DATA_OBJECT_TYPE, id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extending classes can use this constructor to set the sub class
|
||||||
|
* id and object type.
|
||||||
|
*/
|
||||||
|
public PersistentScale(OID oid)
|
||||||
|
throws DataObjectNotFoundException {
|
||||||
|
|
||||||
|
super(oid);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PersistentScale create(String parameterName) {
|
||||||
|
PersistentScale c = new PersistentScale();
|
||||||
|
c.setup(parameterName);
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Component createComponent() {
|
||||||
|
|
||||||
|
// HACK For testing only
|
||||||
|
addScaleEntry("HACK For testing only 1:");
|
||||||
|
addScaleEntry("HACK For testing only 2:");
|
||||||
|
addScaleEntry("HACK For testing only 3:");
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
Iterator questionIter = m_questions.listIterator();
|
||||||
|
|
||||||
|
// Component
|
||||||
|
SimpleContainer container = new SimpleContainer();
|
||||||
|
|
||||||
|
// For every question generate a checkbox group with the defined options
|
||||||
|
while (questionIter.hasNext()) {
|
||||||
|
|
||||||
|
// Question
|
||||||
|
container.add(new Label((String) questionIter.next()));
|
||||||
|
|
||||||
|
// OptionGroup
|
||||||
|
container.add(generateScaleOptionGroup(i));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return container;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create the RadioGroup whose persistence is managed
|
||||||
|
* by this domain object.
|
||||||
|
*/
|
||||||
|
protected OptionGroup generateScaleOptionGroup(int nr) {
|
||||||
|
|
||||||
|
RadioGroup radioGroup = null;
|
||||||
|
|
||||||
|
// RadioGroup radioGroup = new RadioGroup(getParameterName() + "_" + nr);
|
||||||
|
|
||||||
|
// m_options.addDataToComponent(radioGroup);
|
||||||
|
// copyValuesToWidget(radioGroup);
|
||||||
|
|
||||||
|
try {
|
||||||
|
radioGroup = (RadioGroup) getOptionList().createOptionGroup(getParameterName() + "_" + nr);
|
||||||
|
radioGroup.setClassAttr("horizontal");
|
||||||
|
} catch (NullPointerException ex) {
|
||||||
|
radioGroup = new RadioGroup(getParameterName() + "_" + nr);
|
||||||
|
}
|
||||||
|
|
||||||
|
return radioGroup;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create the CheckboxGroup whose persistence is managed
|
||||||
|
* by this domain object.
|
||||||
|
*/
|
||||||
|
public void addScaleEntry(String scaleEntry) {
|
||||||
|
m_questions.add(scaleEntry);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeScaleEntry(int idx) {
|
||||||
|
m_questions.remove(idx);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getScaleEntry(int idx) {
|
||||||
|
return (String) m_questions.get(idx);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PersistentRadioGroup getOptionList() {
|
||||||
|
|
||||||
|
try {
|
||||||
|
return new PersistentRadioGroup(new BigDecimal(getComponentAttribute(OPTION_LIST)));
|
||||||
|
} catch (NullPointerException ex) {
|
||||||
|
// Create the PersistentRadioGroup
|
||||||
|
PersistentRadioGroup prg = PersistentRadioGroup.create(this.getParameterName() + "_options");
|
||||||
|
setComponentAttribute(OPTION_LIST, prg.getID().toString());
|
||||||
|
return prg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue