You can subscribe to this list here.
| 2008 | Jan | Feb | Mar | Apr | May (128) | Jun (97) | Jul (13) | Aug (40) | Sep (50) | Oct (27) | Nov (7) | Dec (15) | 
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2009 | Jan (18) | Feb (47) | Mar (7) | Apr | May | Jun | Jul (32) | Aug | Sep (14) | Oct (22) | Nov | Dec | 
| 
      
      
      From: <se...@us...> - 2008-05-22 20:21:09
      
     | 
| Revision: 156
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=156&view=rev
Author:   sem62
Date:     2008-05-22 13:21:05 -0700 (Thu, 22 May 2008)
Log Message:
-----------
Added AnswerStatus class and subclasses.
Must be use for determining for score calculation. By default - without server (Internally. Beside on ItemData).
Modified Paths:
--------------
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Lecture/LectureModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SummaryPageModel/SummaryPageModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java
Added Paths:
-----------
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/LectureUserAnswerStatus.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ScoredUserAnswerStatus.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownModelAnswerStatus.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UserAnswerStatus.java
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterModel.java	2008-05-20 21:40:05 UTC (rev 155)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterModel.java	2008-05-22 20:21:05 UTC (rev 156)
@@ -8,152 +8,160 @@
 import edu.lnu.FireFly.WebEditor.ItemModels.ItemModel;
 import edu.lnu.FireFly.WebEditor.ItemModels.ItemModels;
 import edu.lnu.FireFly.WebEditor.ItemModels.ResourcedItemModel;
+import edu.lnu.FireFly.WebEditor.ItemModels.UserAnswerStatus;
 import edu.lnu.FireFly.WebEditor.ItemModels.SummaryPageModel.SummaryPageModel;
 import edu.lnu.FireFly.WebEditor.WSClients.WebEditorServiceClient;
 
 public class ChapterModel extends ResourcedItemModel {
 
-	public ChapterModel() {
-		super();
-		modelName = "ChapterModel";
-		isContainerItem = true;
-		
-		registerConfigDlg(new ChapterPropertiestsDlg());
-	}
+    @Override
+    protected UserAnswerStatus createUserAnswerInstance(TreeItem anItem) {
+	return null;
+    }
 
-	@Override
-	public boolean canAddToItem(TreeItem parent) {
-		// TODO Auto-generated method stub
-		return true;
-	}
+    public ChapterModel() {
+	super();
+	modelName = "ChapterModel";
+	isContainerItem = true;
 
-	@Override
-	public boolean canConvertItem(TreeItem parent) {
-		// TODO Auto-generated method stub
-		return false;
-	}
+	registerConfigDlg(new ChapterPropertiestsDlg());
+    }
 
-	@Override
-	protected ItemData createItemDataInstance() {
-		return new ChapterItemData();
-	}
+    @Override
+    public boolean canAddToItem(TreeItem parent) {
+	// TODO Auto-generated method stub
+	return true;
+    }
 
-	@Override
-	protected String getConfFileName(TreeItem anItem) {
-		return getIdentifier(anItem);
-	}
+    @Override
+    public boolean canConvertItem(TreeItem parent) {
+	// TODO Auto-generated method stub
+	return false;
+    }
 
-	private ChapterItemData getData(TreeItem anItem) {
-		return (ChapterItemData) getItemData(anItem);
-	}
+    @Override
+    protected ItemData createItemDataInstance() {
+	return new ChapterItemData();
+    }
 
-	@Override
-	protected String getDefaultTitle() {
-		return "New chapter";
-	}
+    @Override
+    protected String getConfFileName(TreeItem anItem) {
+	return getIdentifier(anItem);
+    }
 
-	@Override
-	public boolean getLimitConditionsMenuVisible(TreeItem anItem) {
-		return false;
-	}
+    private ChapterItemData getData(TreeItem anItem) {
+	return (ChapterItemData) getItemData(anItem);
+    }
 
-	@Override
-	public boolean getShowOnSummaryPageMenuVisible() {
-		return true;
-	}
+    @Override
+    protected String getDefaultTitle() {
+	return "New chapter";
+    }
 
-	public boolean getShowSummaryPage(TreeItem anItem) {
-		ChapterItemData itemData = getData(anItem);
+    @Override
+    public boolean getLimitConditionsMenuVisible(TreeItem anItem) {
+	return false;
+    }
 
-		if (itemData == null) {
-			System.out
-					.println("Warning: ItemData is null at ItemModel.getShowOnSummaryPage()");
+    @Override
+    public boolean getShowOnSummaryPageMenuVisible() {
+	return true;
+    }
 
-			return false;
-		}
+    public boolean getShowSummaryPage(TreeItem anItem) {
+	ChapterItemData itemData = getData(anItem);
 
-		return itemData.isShowSummaryPage();
-	}
+	if (itemData == null) {
+	    System.out
+		    .println("Warning: ItemData is null at ItemModel.getShowOnSummaryPage()");
 
-	@Override
-	public boolean getShowSummaryPageMenuVisible() {
-		return true;
+	    return false;
 	}
 
-	@Override
-	public boolean isRemovable() {
-		return true;
+	return itemData.isShowSummaryPage();
+    }
+
+    @Override
+    public boolean getShowSummaryPageMenuVisible() {
+	return true;
+    }
+
+    @Override
+    public boolean isRemovable() {
+	return true;
+    }
+
+    @Override
+    public void remove(TreeItem aChapter) {
+	if (!canDeleteChapter(aChapter)) {
+	    System.out
+		    .print("This chapter contains items. Please, remove all childs and try again.\n");
+	    return;
 	}
 
-	@Override
-	public void remove(TreeItem aChapter) {
-		if (!canDeleteChapter(aChapter)) {
-			System.out
-					.print("This chapter contains items. Please, remove all childs and try again.\n");
-			return;
-		}
-		
-		for (int i=0; i < aChapter.getChildCount(); i++){
-			TreeItem item = aChapter.getChild(i);
-			ItemModel model = ItemModels.getModelFromItem(item);
-			
-			model.remove(item);
-		}
+	for (int i = 0; i < aChapter.getChildCount(); i++) {
+	    TreeItem item = aChapter.getChild(i);
+	    ItemModel model = ItemModels.getModelFromItem(item);
 
-		TreeDataModel.getInstance().treeNodesDeleted(aChapter);
-		aChapter.getParent().removeChild(aChapter);
-		
-		WebEditorServiceClient.getInstance().deleteFile(getConfFileName(aChapter));
-		SummaryPageManager.getInstance().updateSummaryPages();
+	    model.remove(item);
 	}
 
-	/**
-	 * Determine if this chapter can deleted.<br>
-	 * Chapter can be deleted, if it have no childs or it containe only summary page. 
-	 * 
-	 * @param aChapter
-	 * @return true, if this chapter can be deleted.
-	 */
-	private boolean canDeleteChapter(TreeItem aChapter) {
-		boolean result = aChapter.getChildCount() == 0;
-		
-		if (!result){
-			if (aChapter.getChildCount() == 1){
-				TreeItem child = aChapter.getChild(0);
-				ItemModel model = ItemModels.getModelFromItem(child);
-				
-				if (model.getClass() == SummaryPageModel.class){
-					return true;
-				}
-			}
+	TreeDataModel.getInstance().treeNodesDeleted(aChapter);
+	aChapter.getParent().removeChild(aChapter);
+
+	WebEditorServiceClient.getInstance().deleteFile(
+		getConfFileName(aChapter));
+	SummaryPageManager.getInstance().updateSummaryPages();
+    }
+
+    /**
+     * Determine if this chapter can deleted.<br>
+     * Chapter can be deleted, if it have no childs or it containe only summary
+     * page.
+     * 
+     * @param aChapter
+     * @return true, if this chapter can be deleted.
+     */
+    private boolean canDeleteChapter(TreeItem aChapter) {
+	boolean result = aChapter.getChildCount() == 0;
+
+	if (!result) {
+	    if (aChapter.getChildCount() == 1) {
+		TreeItem child = aChapter.getChild(0);
+		ItemModel model = ItemModels.getModelFromItem(child);
+
+		if (model.getClass() == SummaryPageModel.class) {
+		    return true;
 		}
-		
-		return result;
+	    }
 	}
 
-	public void setShowSummaryPage(TreeItem anItem, boolean state) {
-		ChapterItemData itemData = getData(anItem);
+	return result;
+    }
 
-		if (itemData == null) {
-			ItemData data = new ChapterItemData();
-			setItemData(anItem, data);
-			itemData = (ChapterItemData) getItemData(anItem);
-		}
+    public void setShowSummaryPage(TreeItem anItem, boolean state) {
+	ChapterItemData itemData = getData(anItem);
 
-		if (itemData.isShowSummaryPage() != state) {
-			itemData.setShowSummaryPage(state);
-			updateItemResource(anItem, true);
-		}
+	if (itemData == null) {
+	    ItemData data = new ChapterItemData();
+	    setItemData(anItem, data);
+	    itemData = (ChapterItemData) getItemData(anItem);
 	}
 
-	@Override
-	protected void updateResourceFile(TreeItem anItem) {
-		// do nothing.
-		// Chapter currently haven't resource file
+	if (itemData.isShowSummaryPage() != state) {
+	    itemData.setShowSummaryPage(state);
+	    updateItemResource(anItem, true);
 	}
+    }
 
-	@Override
-	public boolean modelHasResource() {
-		return false;
-	}
+    @Override
+    protected void updateResourceFile(TreeItem anItem) {
+	// do nothing.
+	// Chapter currently haven't resource file
+    }
+
+    @Override
+    public boolean modelHasResource() {
+	return false;
+    }
 }
\ No newline at end of file
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java	2008-05-20 21:40:05 UTC (rev 155)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java	2008-05-22 20:21:05 UTC (rev 156)
@@ -9,84 +9,93 @@
 import edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ.CompileQPropertiestsDlg;
 import edu.lnu.FireFly.WebEditor.ItemModels.ItemData;
 import edu.lnu.FireFly.WebEditor.ItemModels.ResourcedItemModel;
+import edu.lnu.FireFly.WebEditor.ItemModels.ScoredUserAnswerStatus;
 import edu.lnu.FireFly.WebEditor.ItemModels.Template;
+import edu.lnu.FireFly.WebEditor.ItemModels.UserAnswerStatus;
 
 public class CompileQModel extends ResourcedItemModel {
-    
-	@Override
-	protected String getDefaultTitle() {
-		return "New compile question";
-	}
 
-	@Override
-	public boolean getLimitConditionsMenuVisible(TreeItem anItem) {
-		return true;
-	}
+    @Override
+    protected UserAnswerStatus createUserAnswerInstance(TreeItem anItem) {
+	return new ScoredUserAnswerStatus(anItem);
+    }
 
-	@Override
-	public boolean getShowOnSummaryPageMenuVisible() {
-		return true;
-	}
+    @Override
+    protected String getDefaultTitle() {
+	return "New compile question";
+    }
 
-	public CompileQModel() {
-		modelName = "CompileQModel";
-		registerConfigDlg(new CompileQPropertiestsDlg());
-	}
+    @Override
+    public boolean getLimitConditionsMenuVisible(TreeItem anItem) {
+	return true;
+    }
 
-	@Override
-	public boolean canAddToItem(TreeItem parent) {
-		// TODO Auto-generated method stub
-		return true;
-	}
+    @Override
+    public boolean getShowOnSummaryPageMenuVisible() {
+	return true;
+    }
 
-	@Override
-	public boolean canConvertItem(TreeItem parent) {
-		// TODO Auto-generated method stub
-		return false;
-	}
+    public CompileQModel() {
+	modelName = "CompileQModel";
+	registerConfigDlg(new CompileQPropertiestsDlg());
+    }
 
-	public CompileQData getData(TreeItem item) {
-		return ((CompileQData) getItemData(item));
-	}
+    @Override
+    public boolean canAddToItem(TreeItem parent) {
+	// TODO Auto-generated method stub
+	return true;
+    }
 
-	@Override
-	public boolean isRemovable() {
-		return true;
-	}
+    @Override
+    public boolean canConvertItem(TreeItem parent) {
+	// TODO Auto-generated method stub
+	return false;
+    }
 
-	protected ItemData createItemDataInstance() {
-		return new CompileQData();
-	}
+    public CompileQData getData(TreeItem item) {
+	return ((CompileQData) getItemData(item));
+    }
 
-	@Override
-	protected void updateResourceFile(TreeItem anItem) {
-		Resource resource = WebEditor.instance.getManifest().resources
-				.findResourceByIdentifier(((Item) anItem).identifierref);
+    @Override
+    public boolean isRemovable() {
+	return true;
+    }
 
-		Template template = new Template(resource.getFullHref(), this);
+    protected ItemData createItemDataInstance() {
+	return new CompileQData();
+    }
 
-		CompileQData itemData = getData(anItem);
+    @Override
+    protected void updateResourceFile(TreeItem anItem) {
+	Resource resource = WebEditor.instance.getManifest().resources
+		.findResourceByIdentifier(((Item) anItem).identifierref);
 
-		template.setProperty("Caption", itemData.getCaption());
+	Template template = new Template(resource.getFullHref(), this);
 
-		Iterator<CompileQPart> iter = itemData.getParts().questionParts.iterator();
-		String answers = "\r\nsetProgrammingLanguage(\""
-				+ itemData.getLanguge() + "\");\r\n";
+	CompileQData itemData = getData(anItem);
 
-		while (iter.hasNext()) {
-			CompileQPart part = iter.next();
-			answers += "addPart(\"" + part.getAnswerText().replace("\"", "\\\"") + "\", "
-					+ part.getPartAttributes().isAnswer() + ", "
-					+ part.getPartAttributes().isReadOnly() + ", "
-					+ part.getPartAttributes().isVisible() + ");" + "\r\n";
-		}
+	template.setProperty("Caption", itemData.getCaption());
 
-		template.setProperty("parts", answers);
-		template.updateResource();
+	Iterator<CompileQPart> iter = itemData.getParts().questionParts
+		.iterator();
+	String answers = "\r\nsetProgrammingLanguage(\""
+		+ itemData.getLanguge() + "\");\r\n";
+
+	while (iter.hasNext()) {
+	    CompileQPart part = iter.next();
+	    answers += "addPart(\""
+		    + part.getAnswerText().replace("\"", "\\\"") + "\", "
+		    + part.getPartAttributes().isAnswer() + ", "
+		    + part.getPartAttributes().isReadOnly() + ", "
+		    + part.getPartAttributes().isVisible() + ");" + "\r\n";
 	}
 
-	@Override
-	public boolean getShowSummaryPageMenuVisible() {
-		return false;
-	}
+	template.setProperty("parts", answers);
+	template.updateResource();
+    }
+
+    @Override
+    public boolean getShowSummaryPageMenuVisible() {
+	return false;
+    }
 }
\ No newline at end of file
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java	2008-05-20 21:40:05 UTC (rev 155)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java	2008-05-22 20:21:05 UTC (rev 156)
@@ -15,6 +15,8 @@
 import edu.lnu.FireFly.FFManifest.item.sequencing.objectives.Objectives;
 import edu.lnu.FireFly.FFManifest.resource.Resource;
 import edu.lnu.FireFly.Rte.Activity;
+import edu.lnu.FireFly.Rte.Cmi;
+import edu.lnu.FireFly.Rte.CmiManager;
 import edu.lnu.FireFly.WebEditor.WebEditor;
 import edu.lnu.FireFly.WebEditor.Data.ManifestFactory;
 import edu.lnu.FireFly.WebEditor.Data.SummaryPageManager;
@@ -23,249 +25,268 @@
 import edu.lnu.FireFly.WebEditor.ItemModels.SummaryPageModel.SummaryPageModel;
 
 public abstract class ItemModel {
-	protected static HashMap<TreeItem, ItemData> questionsData = new HashMap<TreeItem, ItemData>();
+    protected static HashMap<TreeItem, ItemData> questionsData = new HashMap<TreeItem, ItemData>();
 
-	protected String modelName = "Abstract model";
+    protected String modelName = "Abstract model";
 
-	protected abstract String getDefaultTitle();  
-	
-	public void setItemData(TreeItem anItem, ItemData data) {
-		questionsData.put(anItem, data);
-	}
+    protected abstract String getDefaultTitle();
 
-	protected boolean isContainerItem = false;
+    public void setItemData(TreeItem anItem, ItemData data) {
+	questionsData.put(anItem, data);
+    }
 
-	private PropertyDlg propertyDlg = null;
+    protected boolean isContainerItem = false;
 
-	public final boolean getShowOnSummaryPage(TreeItem anItem) {
-		if (this.getClass() == SummaryPageModel.class){
-			return false;
-		}
-		
-		ItemData itemData = getItemData(anItem);
+    private PropertyDlg propertyDlg = null;
 
-		if (itemData == null) {
-			System.out
-					.println("Warning: ItemData is null at ItemModel.getShowOnSummaryPage()");
+    public final boolean getShowOnSummaryPage(TreeItem anItem) {
+	if (this.getClass() == SummaryPageModel.class) {
+	    return false;
+	}
 
-			return false;
-		}
+	ItemData itemData = getItemData(anItem);
 
-		return itemData.getShowOnSummaryPage();
+	if (itemData == null) {
+	    System.out
+		    .println("Warning: ItemData is null at ItemModel.getShowOnSummaryPage()");
+
+	    return false;
 	}
 
-	protected abstract void initializeDataForItem(Item anItem);
-	
-	public final void setShowOnSummaryPage(TreeItem anItem, boolean aValue) {
-		ItemData itemData = getItemData(anItem);
-		
-		if (itemData == null){
-			System.out.println("Warning: itemData is null.");
-			return;
-		}
-		
-		if (itemData.getShowOnSummaryPage() != aValue) {
-			itemData.setShowOnSummaryPage(aValue);
+	return itemData.getShowOnSummaryPage();
+    }
 
-			updateItemResource(anItem, true);
-		}
+    protected abstract void initializeDataForItem(Item anItem);
+
+    public final void setShowOnSummaryPage(TreeItem anItem, boolean aValue) {
+	ItemData itemData = getItemData(anItem);
+
+	if (itemData == null) {
+	    System.out.println("Warning: itemData is null.");
+	    return;
 	}
 
-	public abstract void addItem(TreeItem parent);
+	if (itemData.getShowOnSummaryPage() != aValue) {
+	    itemData.setShowOnSummaryPage(aValue);
 
-	public abstract boolean canAddToItem(TreeItem parent);
+	    updateItemResource(anItem, true);
+	}
+    }
 
-	public abstract boolean canConvertItem(TreeItem parent);
-	
-	public final void ConfigureItem(TreeItem item) {
-	    if (propertyDlg != null){
-	    	propertyDlg.showDialog(item);
-	    }
+    public abstract void addItem(TreeItem parent);
 
-//	    In SimpleQModel
-//	    WebEditor.tree.setSelectionPath(null);
-//	    WebEditor.tree.setSelectionPath(TreeDataModel.getInstance()
-//				.getItemPath(item));
+    public abstract boolean canAddToItem(TreeItem parent);
 
-	    TreeDataModel.getInstance().treeNodesChanged(item);
-	    
-	    Activity.synchronizeActivitiesStructure(SummaryPageManager.getInstance().getManifest());
-	}
+    public abstract boolean canConvertItem(TreeItem parent);
 
-	public final void registerConfigDlg(PropertyDlg dlg){
-	    this.propertyDlg  = dlg;
+    public final void ConfigureItem(TreeItem item) {
+	if (propertyDlg != null) {
+	    propertyDlg.showDialog(item);
 	}
 
-	protected String createNewResource() {
-		if (modelHasResource()){
-		
-		Resource resource = new Resource();
-		resource.identifier = this.getClass().getSimpleName() + "_res_"
-				+ UUID.randomUUID().toString();
-		resource.scormType = "sco";
-		resource.type = "webcontent";
+	// In SimpleQModel
+	// WebEditor.tree.setSelectionPath(null);
+	// WebEditor.tree.setSelectionPath(TreeDataModel.getInstance()
+	// .getItemPath(item));
 
-		String fName = resource.identifier + ".html";
-		resource.setHref(fName);
+	TreeDataModel.getInstance().treeNodesChanged(item);
 
-		WebEditor.instance.getManifest().resources.resources.add(resource);
+	Activity.synchronizeActivitiesStructure(SummaryPageManager
+		.getInstance().getManifest());
+    }
 
-		return resource.identifier;
-		}
-		
-		return null;
-	}
+    public final void registerConfigDlg(PropertyDlg dlg) {
+	this.propertyDlg = dlg;
+    }
 
-	public boolean modelHasResource() {
-		return true;
-	}
+    protected String createNewResource() {
+	if (modelHasResource()) {
 
-	public ItemData getItemData(TreeItem anItem) {
-		if (questionsData.containsKey(anItem)) {
-			return questionsData.get(anItem);
-		}
+	    Resource resource = new Resource();
+	    resource.identifier = this.getClass().getSimpleName() + "_res_"
+		    + UUID.randomUUID().toString();
+	    resource.scormType = "sco";
+	    resource.type = "webcontent";
 
-		return null;
+	    String fName = resource.identifier + ".html";
+	    resource.setHref(fName);
+
+	    WebEditor.instance.getManifest().resources.resources.add(resource);
+
+	    return resource.identifier;
 	}
 
-	public final String getModelName() {
-		return modelName;
+	return null;
+    }
+
+    public boolean modelHasResource() {
+	return true;
+    }
+
+    public ItemData getItemData(TreeItem anItem) {
+	if (questionsData.containsKey(anItem)) {
+	    return questionsData.get(anItem);
 	}
 
-	public final String getResource(URL url) {
-		try {
-			InputStream stream = url.openStream();
+	return null;
+    }
 
-			InputStreamReader reader = new InputStreamReader(stream);
+    public final String getModelName() {
+	return modelName;
+    }
 
-			BufferedReader br = new BufferedReader(reader);
+    public final String getResource(URL url) {
+	try {
+	    InputStream stream = url.openStream();
 
-			String line = "";
-			String result = "";
-			while ((line = br.readLine()) != null) {
-				result += line;
-			}
+	    InputStreamReader reader = new InputStreamReader(stream);
 
-			stream.close();
+	    BufferedReader br = new BufferedReader(reader);
 
-			return result;
-		} catch (Exception e) {
-			e.printStackTrace();
-			return null;
-		}
-	}
+	    String line = "";
+	    String result = "";
+	    while ((line = br.readLine()) != null) {
+		result += line;
+	    }
 
-	public boolean isApplaingForItem(TreeItem treeItem) {
-		if (treeItem.getClass() != Item.class) {
-			return false;
-		}
+	    stream.close();
 
-		Item item = (Item) treeItem;
-		if (item.parameters != null
-				&& item.parameters.contains("pageType=" + modelName)) {
-			return true;
-		}
+	    return result;
+	} catch (Exception e) {
+	    e.printStackTrace();
+	    return null;
+	}
+    }
 
-		return false;
+    public boolean isApplaingForItem(TreeItem treeItem) {
+	if (treeItem.getClass() != Item.class) {
+	    return false;
 	}
-	
-	public final boolean isContainer() {
-		return isContainerItem;
+
+	Item item = (Item) treeItem;
+	if (item.parameters != null
+		&& item.parameters.contains("pageType=" + modelName)) {
+	    return true;
 	}
 
-	public abstract boolean isRemovable();
+	return false;
+    }
 
-	public abstract void remove(TreeItem anItem);
+    public final boolean isContainer() {
+	return isContainerItem;
+    }
 
-	public void rename(TreeItem item, String newTitle) {
-		((Item) item).title = newTitle;
-		TreeDataModel.getInstance().treeNodesChanged(item);
-	}
+    public abstract boolean isRemovable();
 
-	public abstract boolean synchronizeItemWithResource(TreeItem anItem, String location);
-	
-	public abstract boolean updateItemResource(TreeItem item, boolean updateSummaryPages);
+    public abstract void remove(TreeItem anItem);
 
-	public abstract boolean getLimitConditionsMenuVisible(TreeItem anItem);
+    public void rename(TreeItem item, String newTitle) {
+	((Item) item).title = newTitle;
+	TreeDataModel.getInstance().treeNodesChanged(item);
+    }
 
-	public abstract boolean getShowOnSummaryPageMenuVisible();
+    public abstract boolean synchronizeItemWithResource(TreeItem anItem,
+	    String location);
 
-	public abstract boolean getShowSummaryPageMenuVisible();
+    public abstract boolean updateItemResource(TreeItem item,
+	    boolean updateSummaryPages);
 
-	public final String getIdentifierRef(TreeItem anItem) {
-		if (anItem.getClass() == Item.class){
-			return ((Item)anItem).identifierref;
-		}
-		
-		return null;
-	}
+    public abstract boolean getLimitConditionsMenuVisible(TreeItem anItem);
 
-	public final String getIdentifier(TreeItem anItem) {
-		if (anItem.getClass() == Item.class){
-			return ((Item)anItem).identifier;
-		}
+    public abstract boolean getShowOnSummaryPageMenuVisible();
 
-		if (anItem.getClass() == Organization.class){
-			return ((Organization)anItem).identifier;
-		}
-		
-		return null;
+    public abstract boolean getShowSummaryPageMenuVisible();
+
+    public final String getIdentifierRef(TreeItem anItem) {
+	if (anItem.getClass() == Item.class) {
+	    return ((Item) anItem).identifierref;
 	}
 
-	public Objectives getObjectivesInstance(Item summaryPage) {
-		ItemModel model = ItemModels.getModelFromItem(summaryPage);
-		Sequencing sequencing = model.getSequencingInstance(summaryPage);
+	return null;
+    }
 
-		if (sequencing.objectives == null) {
-			sequencing.objectives = ManifestFactory.createObjectives();
-		}
+    public final String getIdentifier(TreeItem anItem) {
+	if (anItem.getClass() == Item.class) {
+	    return ((Item) anItem).identifier;
+	}
 
-		return sequencing.objectives;
+	if (anItem.getClass() == Organization.class) {
+	    return ((Organization) anItem).identifier;
 	}
 
-	public void updateItemObjectives(TreeItem anItem) {
-		Sequencing sequencing = getSequencingInstance(anItem);
+	return null;
+    }
 
-		if (sequencing.objectives == null) {
-			sequencing.objectives = ManifestFactory.createObjectives();
-		}
+    public Objectives getObjectivesInstance(Item summaryPage) {
+	ItemModel model = ItemModels.getModelFromItem(summaryPage);
+	Sequencing sequencing = model.getSequencingInstance(summaryPage);
 
-		sequencing.objectives.primaryObjective = ManifestFactory
-				.createObjective();
-		sequencing.objectives.primaryObjective.objectiveID = getIdentifier(anItem);
-		sequencing.objectives.primaryObjective.satisfiedByMeasure = true;
+	if (sequencing.objectives == null) {
+	    sequencing.objectives = ManifestFactory.createObjectives();
+	}
 
-		MapInfo mapInfo = ManifestFactory.createMapInfo();
-		mapInfo.writeNormalizedMeasure = true;
-		mapInfo.writeSatisfiedStatus = true;
-		mapInfo.targetObjectiveID = sequencing.objectives.primaryObjective.objectiveID;
+	return sequencing.objectives;
+    }
 
-		sequencing.objectives.primaryObjective.mapInfo = ManifestFactory
-				.createMapInfos();
-		sequencing.objectives.primaryObjective.mapInfo.add(mapInfo);
+    public void updateItemObjectives(TreeItem anItem) {
+	Sequencing sequencing = getSequencingInstance(anItem);
+
+	if (sequencing.objectives == null) {
+	    sequencing.objectives = ManifestFactory.createObjectives();
 	}
 
-	private Sequencing getSequencingInstance(TreeItem anItem) {
-		Sequencing sequencing = null;
+	sequencing.objectives.primaryObjective = ManifestFactory
+		.createObjective();
+	sequencing.objectives.primaryObjective.objectiveID = getIdentifier(anItem);
+	sequencing.objectives.primaryObjective.satisfiedByMeasure = true;
 
-		if (anItem.getClass() == Organization.class) {
-			if (((Organization) anItem).sequencing == null) {
-				((Organization) anItem).sequencing = ManifestFactory
-						.createSequencing();
-			}
+	MapInfo mapInfo = ManifestFactory.createMapInfo();
+	mapInfo.writeNormalizedMeasure = true;
+	mapInfo.writeSatisfiedStatus = true;
+	mapInfo.targetObjectiveID = sequencing.objectives.primaryObjective.objectiveID;
 
-			sequencing = ((Organization) anItem).sequencing;
-		}
+	sequencing.objectives.primaryObjective.mapInfo = ManifestFactory
+		.createMapInfos();
+	sequencing.objectives.primaryObjective.mapInfo.add(mapInfo);
+    }
 
-		if (anItem.getClass() == Item.class) {
-			if (((Item) anItem).sequencing == null) {
-				((Item) anItem).sequencing = ManifestFactory.createSequencing();
-			}
+    private Sequencing getSequencingInstance(TreeItem anItem) {
+	Sequencing sequencing = null;
 
-			sequencing = ((Item) anItem).sequencing;
-		}
-		return sequencing;
+	if (anItem.getClass() == Organization.class) {
+	    if (((Organization) anItem).sequencing == null) {
+		((Organization) anItem).sequencing = ManifestFactory
+			.createSequencing();
+	    }
+
+	    sequencing = ((Organization) anItem).sequencing;
 	}
 
-	protected abstract ItemData createItemDataInstance();
+	if (anItem.getClass() == Item.class) {
+	    if (((Item) anItem).sequencing == null) {
+		((Item) anItem).sequencing = ManifestFactory.createSequencing();
+	    }
+
+	    sequencing = ((Item) anItem).sequencing;
+	}
+	return sequencing;
+    }
+
+    protected abstract ItemData createItemDataInstance();
+
+    public void handleUserAnswer(String answer, TreeItem anItem){
+	Activity activity = Activity.findActivityByIdentifier(anItem.getIdentifier()); 
+	
+	Cmi cmi =CmiManager.getInstance().getModelForActivity(activity);
+	if (cmi == null){
+	    throw new NullPointerException("Cmi model for activity is null at ItemModel.handleUserAnswer()");
+	}
+	
+	UserAnswerStatus userAnswer = createUserAnswerInstance(anItem);
+	userAnswer.setRawAnswer(answer);
+	
+	userAnswer.updateRteFields(cmi);
+    }
+
+    protected abstract UserAnswerStatus createUserAnswerInstance(TreeItem anItem);
 }
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Lecture/LectureModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Lecture/LectureModel.java	2008-05-20 21:40:05 UTC (rev 155)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Lecture/LectureModel.java	2008-05-22 20:21:05 UTC (rev 156)
@@ -6,68 +6,75 @@
 import edu.lnu.FireFly.WebEditor.WebEditor;
 import edu.lnu.FireFly.WebEditor.GUI.Dialogs.LecturePropertiestsDlg;
 import edu.lnu.FireFly.WebEditor.ItemModels.ItemData;
+import edu.lnu.FireFly.WebEditor.ItemModels.LectureUserAnswerStatus;
 import edu.lnu.FireFly.WebEditor.ItemModels.ResourcedItemModel;
 import edu.lnu.FireFly.WebEditor.ItemModels.Template;
+import edu.lnu.FireFly.WebEditor.ItemModels.UserAnswerStatus;
 
 public class LectureModel extends ResourcedItemModel {
-	@Override
-	protected String getDefaultTitle() {
-		return "New lecture";
-	}
+    @Override
+    protected UserAnswerStatus createUserAnswerInstance(TreeItem anItem) {
+	return new LectureUserAnswerStatus(anItem);
+    }
 
-	@Override
-	public boolean getShowSummaryPageMenuVisible() {
-		return false;
-	}
+    @Override
+    protected String getDefaultTitle() {
+	return "New lecture";
+    }
 
-	@Override
-	public boolean getLimitConditionsMenuVisible(TreeItem anItem) {
-		return true;
-	}
+    @Override
+    public boolean getShowSummaryPageMenuVisible() {
+	return false;
+    }
 
-	@Override
-	public boolean getShowOnSummaryPageMenuVisible() {
-		return true;
-	}
+    @Override
+    public boolean getLimitConditionsMenuVisible(TreeItem anItem) {
+	return true;
+    }
 
-	public LectureModel() {
-		modelName = "LectureModel";
-		registerConfigDlg(new LecturePropertiestsDlg());
-	}
+    @Override
+    public boolean getShowOnSummaryPageMenuVisible() {
+	return true;
+    }
 
-	@Override
-	public boolean canAddToItem(TreeItem parent) {
-		// TODO Auto-generated method stub
-		return true;
-	}
+    public LectureModel() {
+	modelName = "LectureModel";
+	registerConfigDlg(new LecturePropertiestsDlg());
+    }
 
-	@Override
-	public boolean canConvertItem(TreeItem parent) {
-		// TODO Auto-generated method stub
-		return false;
-	}
+    @Override
+    public boolean canAddToItem(TreeItem parent) {
+	// TODO Auto-generated method stub
+	return true;
+    }
 
-	private LectureData getData(TreeItem item) {
-		return (LectureData) getItemData(item);
-	}
+    @Override
+    public boolean canConvertItem(TreeItem parent) {
+	// TODO Auto-generated method stub
+	return false;
+    }
 
-	@Override
-	protected void updateResourceFile(TreeItem anItem) {
-		Resource resource = WebEditor.instance.getManifest().resources
-				.findResourceByIdentifier(((Item) anItem).identifierref);
+    private LectureData getData(TreeItem item) {
+	return (LectureData) getItemData(item);
+    }
 
-		Template template = new Template(resource.getFullHref(), this);
+    @Override
+    protected void updateResourceFile(TreeItem anItem) {
+	Resource resource = WebEditor.instance.getManifest().resources
+		.findResourceByIdentifier(((Item) anItem).identifierref);
 
-		LectureData itemData = getData(anItem);
+	Template template = new Template(resource.getFullHref(), this);
 
-		template.setProperty("caption", itemData.getCaption());
-		template.setProperty("content", itemData.getContent());
+	LectureData itemData = getData(anItem);
 
-		template.updateResource();
-	}
+	template.setProperty("caption", itemData.getCaption());
+	template.setProperty("content", itemData.getContent());
 
-	@Override
-	protected ItemData createItemDataInstance() {
-		return new LectureData();
-	}
+	template.updateResource();
+    }
+
+    @Override
+    protected ItemData createItemDataInstance() {
+	return new LectureData();
+    }
 }
\ No newline at end of file
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/LectureUserAnswerStatus.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/LectureUserAnswerStatus.java	                        (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/LectureUserAnswerStatus.java	2008-05-22 20:21:05 UTC (rev 156)
@@ -0,0 +1,24 @@
+package edu.lnu.FireFly.WebEditor.ItemModels;
+
+import edu.lnu.FireFly.FFManifest.TreeItem;
+import edu.lnu.FireFly.Rte.Cmi;
+
+public class LectureUserAnswerStatus extends UserAnswerStatus {
+
+    public LectureUserAnswerStatus(TreeItem anItem) {
+	super(anItem);
+    }
+
+    @Override
+    public void updateRteFields(Cmi cmi) {
+	// TODO Auto-generated method stub
+
+    }
+
+    @Override
+    protected void updateValues() {
+	// TODO Auto-generated method stub
+
+    }
+
+}
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ScoredUserAnswerStatus.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ScoredUserAnswerStatus.java	                        (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ScoredUserAnswerStatus.java	2008-05-22 20:21:05 UTC (rev 156)
@@ -0,0 +1,50 @@
+package edu.lnu.FireFly.WebEditor.ItemModels;
+
+import edu.lnu.FireFly.FFManifest.TreeItem;
+import edu.lnu.FireFly.Rte.Cmi;
+
+public class ScoredUserAnswerStatus extends UserAnswerStatus{
+    public ScoredUserAnswerStatus(TreeItem anItem) {
+	super(anItem);
+    }
+
+    @Override
+    public void updateRteFields(Cmi cmi) {
+	// TODO Auto-generated method stub
+	
+    }
+
+    @Override
+    protected void updateValues() {
+	// TODO Auto-generated method stub
+	
+    }
+
+    private int minScore = 0;
+    private int maxScore = 0;
+    private int rawScore = 0;
+
+    public int getMinScore() {
+	return minScore;
+    }
+
+    public void setMinScore(int minScore) {
+	this.minScore = minScore;
+    }
+
+    public int getMaxScore() {
+	return maxScore;
+    }
+
+    public void setMaxScore(int maxScore) {
+	this.maxScore = maxScore;
+    }
+
+    public int getRawScore() {
+	return rawScore;
+    }
+
+    public void setRawScore(int rawScore) {
+	this.rawScore = rawScore;
+    }
+}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionModel.java	2008-05-20 21:40:05 UTC (rev 155)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionModel.java	2008-05-22 20:21:05 UTC (rev 156)
@@ -9,10 +9,17 @@
 import edu.lnu.FireFly.WebEditor.GUI.Dialogs.SimpleQuestionPropertiestsDlg;
 import edu.lnu.FireFly.WebEditor.ItemModels.ItemData;
 import edu.lnu.FireFly.WebEditor.ItemModels.ResourcedItemModel;
+import edu.lnu.FireFly.WebEditor.ItemModels.ScoredUserAnswerStatus;
 import edu.lnu.FireFly.WebEditor.ItemModels.Template;
+import edu.lnu.FireFly.WebEditor.ItemModels.UserAnswerStatus;
 
 public class SimpleQuestionModel extends ResourcedItemModel {
 	@Override
+    protected UserAnswerStatus createUserAnswerInstance(TreeItem anItem) {
+	return new ScoredUserAnswerStatus(anItem);
+    }
+
+	@Override
 	protected String getDefaultTitle() {
 		return "New simple question";
 	}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SummaryPageModel/SummaryPageModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SummaryPageModel/SummaryPageModel.java	2008-05-20 21:40:05 UTC (rev 155)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SummaryPageModel/SummaryPageModel.java	2008-05-22 20:21:05 UTC (rev 156)
@@ -10,115 +10,121 @@
 import edu.lnu.FireFly.WebEditor.ItemModels.OrganizationModel;
 import edu.lnu.FireFly.WebEditor.ItemModels.ResourcedItemModel;
 import edu.lnu.FireFly.WebEditor.ItemModels.Template;
+import edu.lnu.FireFly.WebEditor.ItemModels.UserAnswerStatus;
 import edu.lnu.FireFly.WebEditor.ItemModels.Chapter.ChapterModel;
 import edu.lnu.FireFly.WebEditor.ItemModels.Lecture.LectureModel;
 import edu.lnu.FireFly.WebEditor.ItemModels.SimpleQuestion.SimpleQuestionModel;
 
 public class SummaryPageModel extends ResourcedItemModel {
-	@Override
-	protected String getDefaultTitle() {
-		return "New summary page";
-	}
+    @Override
+    protected UserAnswerStatus createUserAnswerInstance(TreeItem anItem) {
+	return null;
+    }
 
-	@Override
-	public boolean getLimitConditionsMenuVisible(TreeItem anItem) {
-		return false;
-	}
+    @Override
+    protected String getDefaultTitle() {
+	return "New summary page";
+    }
 
-	@Override
-	public boolean getShowOnSummaryPageMenuVisible() {
-		return false;
-	}
+    @Override
+    public boolean getLimitConditionsMenuVisible(TreeItem anItem) {
+	return false;
+    }
 
-	public SummaryPageModel() {
-		modelName = "SummaryPageModel";
-	}
+    @Override
+    public boolean getShowOnSummaryPageMenuVisible() {
+	return false;
+    }
 
-	private String getSummaryPageContent(TreeItem parent) {
-		int childsCount = parent.getChildCount();
+    public SummaryPageModel() {
+	modelName = "SummaryPageModel";
+    }
 
-		ItemModel model = ItemModels.getModelFromItem(parent);
-		String res = "openBlock(\"" + parent.getTitle() + "\", \""
-				+ model.getModelName() + "\", \"" + model.getIdentifier(parent)
-				+ "\");\n";
+    private String getSummaryPageContent(TreeItem parent) {
+	int childsCount = parent.getChildCount();
 
-		for (int i = 0; i < childsCount; i++) {
-			TreeItem item = parent.getChild(i);
-			model = ItemModels.getModelFromItem(item);
+	ItemModel model = ItemModels.getModelFromItem(parent);
+	String res = "openBlock(\"" + parent.getTitle() + "\", \""
+		+ model.getModelName() + "\", \"" + model.getIdentifier(parent)
+		+ "\");\n";
 
-			if (model.getShowOnSummaryPage(item)) {
-				res += getSummaryPageContentItem(item);
-			}
-		}
+	for (int i = 0; i < childsCount; i++) {
+	    TreeItem item = parent.getChild(i);
+	    model = ItemModels.getModelFromItem(item);
 
-		res += "closeBlock(\"" + parent.getTitle() + "\");\n";
-		return res;
+	    if (model.getShowOnSummaryPage(item)) {
+		res += getSummaryPageContentItem(item);
+	    }
 	}
 
-	private String getSummaryPageContentItem(TreeItem anItem) {
-		ItemModel model = ItemModels.getModelFromItem(anItem);
+	res += "closeBlock(\"" + parent.getTitle() + "\");\n";
+	return res;
+    }
 
-		if (!model.getShowOnSummaryPage(anItem)) {
-			return "";
-		}
+    private String getSummaryPageContentItem(TreeItem anItem) {
+	ItemModel model = ItemModels.getModelFromItem(anItem);
 
-		if (model.getClass() == SimpleQuestionModel.class
-				|| model.getClass() == LectureModel.class) {
+	if (!model.getShowOnSummaryPage(anItem)) {
+	    return "";
+	}
 
-			return "add(\"" + anItem.getTitle() + "\", \""
-					+ model.getModelName() + "\", \""
-					+ ((Item) anItem).identifier + "\");\n";
-		}
+	if (model.getClass() == SimpleQuestionModel.class
+		|| model.getClass() == LectureModel.class) {
 
-		if (model.getClass() == ChapterModel.class
-				|| model.getClass() == OrganizationModel.class) {
+	    return "add(\"" + anItem.getTitle() + "\", \""
+		    + model.getModelName() + "\", \""
+		    + ((Item) anItem).identifier + "\");\n";
+	}
 
-			return getSummaryPageContent(anItem);
-		}
+	if (model.getClass() == ChapterModel.class
+		|| model.getClass() == OrganizationModel.class) {
 
-		return null;
+	    return getSummaryPageContent(anItem);
 	}
 
-	protected SummaryPageData getData(TreeItem anItem) {
-		return (SummaryPageData) getItemData(anItem);
-	}
+	return null;
+    }
 
-	@Override
-	public boolean canAddToItem(TreeItem parent) {
-		// It can be added to any item because it must generated automatically.
-		return false;
-	}
+    protected SummaryPageData getData(TreeItem anItem) {
+	return (SummaryPageData) getItemData(anItem);
+    }
 
-	@Override
-	public boolean canConvertItem(TreeItem parent) {
-		// It can't be converted from any other model
-		return false;
-	}
+    @Override
+    public boolean canAddToItem(TreeItem parent) {
+	// It can be added to any item because it must generated automatically.
+	return false;
+    }
 
-	@Override
-	public boolean getShowSummaryPageMenuVisible() {
-		return false;
-	}
+    @Override
+    public boolean canConvertItem(TreeItem parent) {
+	// It can't be converted from any other model
+	return false;
+    }
 
-	@Override
-	protected ItemData createItemDataInstance() {
-		return new SummaryPageData();
-	}
+    @Override
+    public boolean getShowSummaryPageMenuVisible() {
+	return false;
+    }
 
-	@Override
-	protected void updateResourceFile(TreeItem anItem) {
-		Resource resource = WebEditor.instance.getManifest().resources
-				.findResourceByIdentifier(((Item) anItem).identifierref);
+    @Override
+    protected ItemData createItemDataInstance() {
+	return new SummaryPageData();
+    }
 
-		Template template = new Template(resource.getFullHref(), this);
+    @Override
+    protected void updateResourceFile(TreeItem anItem) {
+	Resource resource = WebEditor.instance.getManifest().resources
+		.findResourceByIdentifier(((Item) anItem).identifierref);
 
-		String content = "<script type=\"text/javascript\">"
-				+ getSummaryPageContent(anItem.getParent()) + "</script>";
+	Template template = new Template(resource.getFullHref(), this);
 
-		template.setProperty("content", content);
-		template.setProperty("title", anItem.getTitle());
+	String content = "<script type=\"text/javascript\">"
+		+ getSummaryPageContent(anItem.getParent()) + "</script>";
 
-		template.updateResource();
-	}
+	template.setProperty("content", content);
+	template.setProperty("title", anItem.getTitle());
 
+	template.updateResource();
+    }
+
 }
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java	2008-05-20 21:40:05 UTC (rev 155)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java	2008-05-22 20:21:05 UTC (rev 156)
@@ -6,71 +6,79 @@
 
 public class UnknownItemModel extends ItemModel {
 
-	@Override
-	public void addItem(TreeItem parent) {
-		System.out.println("Can't doing this operation with unknown item model");
-	}
+    @Override
+    protected UserAnswerStatus createUserAnswerInstance(TreeItem anItem) {
+	return new UnknownModelAnswerStatus(anItem);
+    }
 
-	@Override
-	public boolean canAddToItem(TreeItem parent) {
-		return false;
-	}
+    @Override
+    public void addItem(TreeItem parent) {
+	System.out
+		.println("Can't doing this operation with unknown item model");
+    }
 
-	@Override
-	public boolean canConvertItem(TreeItem parent) {
-		return false;
-	}
+    @Override
+    public boolean canAddToItem(TreeItem parent) {
+	return false;
+    }
 
-	@Override
-	protected ItemData createItemDataInstance() {
-		System.out.println("Can't doing this operation with unknown item model");
-		return null;
-	}
+    @Override
+    public boolean canConvertItem(TreeItem parent) {
+	return false;
+    }
 
-	@Override
-	protected String getDefaultTitle() {
-		return "Unknown";
-	}
+    @Override
+    protected ItemData createItemDataInstance() {
+	System.out
+		.println("Can't doing this operation with unknown item model");
+	return null;
+    }
 
-	@Override
-	public boolean getLimitConditionsMenuVisible(TreeItem anItem) {
-		return anItem.getChildCount() == 0;
-	}
+    @Override
+    protected String getDefaultTitle() {
+	return "Unknown";
+    }
 
-	@Override
-	public boolean getShowOnSummaryPageMenuVisible() {
-		return false;
-	}
+    @Override
+    public boolean getLimitConditionsMenuVisible(TreeItem anItem) {
+	return anItem.getChildCount() == 0;
+    }
 
-	@Override
-	public boolean getShowSummaryPageMenuVisible() {
-		return false;
-	}
+    @Override
+    public boolean getShowOnSummaryPageMenuVisible() {
+	return false;
+    }
 
-	@Override
-	protected void initializeDataForItem(Item anItem) {
-		System.out.println("Can't doing this operation with unknown item model");
-	}
+    @Override
+    public boolean getShowSummaryPageMenuVisible() {
+	return false;
+    }
 
-	@Override
-	public boolean isRemovable() {
-		return true;
-	}
+    @Override
+    protected void initializeDataForItem(Item anItem) {
+	System.out
+		.println("Can't doing this operation with unknown item model");
+    }
 
-	@Override
-	public void remove(TreeItem anItem) {
-		anItem.getParent().removeChild(anItem);
-		TreeDataModel.getInstance().treeNodesDeleted(anItem);
-	}
+    @Override
+    public boolean isRemovable() {
+	return true;
+    }
 
-	@Override
-	public boolean synchronizeItemWithResource(TreeItem anItem, String location) {
-		return false;
-	}
+    @Override
+    public void remove(TreeItem anItem) {
+	anItem.getParent().removeChild(anItem);
+	TreeDataModel.getInstance().treeNodesDeleted(anItem);
+    }
 
-	@Override
-	public boolean updateItemResource(TreeItem item, boolean updateSummaryPages) {
-		return false;
-	}
+    @Override
+    public boolean synchronizeItemWithResource(TreeItem anItem, String location) {
+	return false;
+    }
 
+    @Override
+    public boolean updateItemResource(TreeItem item, boolean updateSummaryPages) {
+	return false;
+    }
+
 }
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownModelAnswerStatus.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownModelAnswerStatus.java	                        (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownModelAnswerStatus.java	2008-05-22 20:21:05 UTC (rev 156)
@@ -0,0 +1,24 @@
+package edu.lnu.FireFly.WebEditor.ItemModels;
+
+import edu.lnu.FireFly.FFManifest.TreeItem;
+import edu.lnu.FireFly.Rte.Cmi;
+
+public class UnknownModelAnswerStatus extends UserAnswerStatus {
+    
+    public UnknownModelAnswerStatus(TreeItem anItem) {
+	super(anItem);
+    }
+
+    @Override
+    public void updateRteFields(Cmi cmi){
+	int interaction = 0;
+	String cmiElement = "interactions." + interaction + ".learner_response";
+	cmi.setValue(cmiElement, getRawAnswer());
+    }
+
+    @Override
+    protected void updateValues() {
+	// TODO Auto-generated method stub
+	
+    }
+}
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UserAnswerStatus.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UserAnswerStatus.java	                        (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UserAnswerStatus.java	2008-05-22 20:21:05 UTC (rev 156)
@@ -0,0 +1,27 @@
+package edu.lnu.FireFly.WebEditor.ItemModels;
+
+import edu.lnu.FireFly.FFManifest.TreeItem;
+import edu.lnu.FireFly.Rte.Cmi;
+
+public abstract class UserAnswerStatus {
+    private String rawAnswer = "";
+    protected TreeItem item = null;
+    
+    public UserAnswerStatus(TreeItem anItem){
+	item = anItem;
+    }
+
+    public String getRawAnswer() {
+	return rawAnswer;
+    }
+
+    public void setRawAnswer(String rawAnswer) {
+	this.rawAnswer = rawAnswer;
+	
+	updateValues();
+    }
+    
+    protected abstract void updateValues();
+
+    public abstract void updateRteFields(Cmi cmi);
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-20 21:40:26
      
     | 
| Revision: 155
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=155&view=rev
Author:   sem62
Date:     2008-05-20 14:40:05 -0700 (Tue, 20 May 2008)
Log Message:
-----------
Called synchronizing activities methods if needed.
Global objectives not synchronizing properly.
Modified Paths:
--------------
    WebEditor/src/edu/lnu/FireFly/WebEditor/AppletWithApiHandle.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/WebEditor.java
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/AppletWithApiHandle.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/AppletWithApiHandle.java	2008-05-20 21:37:32 UTC (rev 154)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/AppletWithApiHandle.java	2008-05-20 21:40:05 UTC (rev 155)
@@ -36,7 +36,7 @@
 	System.out.print("GetValue(" + parameter + ");\n");
 
 	Cmi cmi = getCmiModel();	
-
+	
 	if (parameter.toLowerCase().startsWith("cmi.")){
 	    return cmi.getValue(parameter.substring(4));
 	} else {
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java	2008-05-20 21:37:32 UTC (rev 154)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java	2008-05-20 21:40:05 UTC (rev 155)
@@ -14,8 +14,10 @@
 import edu.lnu.FireFly.FFManifest.item.sequencing.objectives.MapInfo;
 import edu.lnu.FireFly.FFManifest.item.sequencing.objectives.Objectives;
 import edu.lnu.FireFly.FFManifest.resource.Resource;
+import edu.lnu.FireFly.Rte.Activity;
 import edu.lnu.FireFly.WebEditor.WebEditor;
 import edu.lnu.FireFly.WebEditor.Data.ManifestFactory;
+import edu.lnu.FireFly.WebEditor.Data.SummaryPageManager;
 import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel;
 import edu.lnu.FireFly.WebEditor.GUI.Dialogs.PropertyDlg;
 import edu.lnu.FireFly.WebEditor.ItemModels.SummaryPageModel.SummaryPageModel;
@@ -86,6 +88,8 @@
 //				.getItemPath(item));
 
 	    TreeDataModel.getInstance().treeNodesChanged(item);
+	    
+	    Activity.synchronizeActivitiesStructure(SummaryPageManager.getInstance().getManifest());
 	}
 
 	public final void registerConfigDlg(PropertyDlg dlg){
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java	2008-05-20 21:37:32 UTC (rev 154)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java	2008-05-20 21:40:05 UTC (rev 155)
@@ -6,6 +6,7 @@
 import edu.lnu.FireFly.FFManifest.Manifest;
 import edu.lnu.FireFly.FFManifest.TreeItem;
 import edu.lnu.FireFly.FFManifest.item.Item;
+import edu.lnu.FireFly.FFManifest.parser.TestDocException;
 import edu.lnu.FireFly.FFManifest.resource.Resource;
 import edu.lnu.FireFly.WebEditor.WebEditor;
 import edu.lnu.FireFly.WebEditor.Data.SummaryPageManager;
@@ -14,137 +15,168 @@
 
 public abstract class ResourcedItemModel extends ItemModel {
 
-	@Override
-	public final void addItem(TreeItem parent) {
-		
-		if (this.getClass() == OrganizationModel.class){
-			System.out.println("Can't add Organization into course.");
-			return ;
-		}
-		
-		Item item = new Item();
-		item.setParent(parent);
+    @Override
+    public final void addItem(TreeItem parent) {
 
-		item.identifier = this.getClass().getSimpleName() + "_Item_"
-				+ UUID.randomUUID().toString();
-		item.title = getDefaultTitle();
-		item.parameters = "pageType=" + modelName;
+	if (this.getClass() == OrganizationModel.class) {
+	    System.out.println("Can't add Organization into course.");
+	    return;
+	}
 
-		item.identifierref = createNewResource();
+	Item item = new Item();
+	item.setParent(parent);
 
-		initializeDataForItem(item);
+	item.identifier = this.getClass().getSimpleName() + "_Item_"
+		+ UUID.randomUUID().toString();
+	item.title = getDefaultTitle();
+	item.parameters = "pageType=" + modelName;
 
-		try {
-			parent.addChild(item);
-			TreeDataModel.getInstance().treeNodesInserted(item);
-		} catch (Exception e) {
-			e.printStackTrace();
-			return;
-		}
+	item.identifierref = createNewResource();
 
-		ConfigureItem(item);		
+	initializeDataForItem(item);
+
+	try {
+	    parent.addChild(item);
+	    TreeDataModel.getInstance().treeNodesInserted(item);
+	} catch (Exception e) {
+	    e.printStackTrace();
+	    return;
 	}
 
-	protected final String loadResource(String location, TreeItem anItem) {
-		String res = "";
+	ConfigureItem(item);
+    }
 
-		if (location.equalsIgnoreCase("course")) {
-			res = WebEditorServiceClient.getInstance().getFileContent(getConfFileName(anItem),
-					location);
-		} else {
-			res = WebEditorServiceClient.getInstance().getFileContent(modelName + ".conf",
-					location);
-		}
-		return res;
+    protected final String loadResource(String location, TreeItem anItem) {
+	String res = "";
+
+	if (location.equalsIgnoreCase("course")) {
+	    res = WebEditorServiceClient.getInstance().getFileContent(
+		    getConfFileName(anItem), location);
+	} else {
+	    res = WebEditorServiceClient.getInstance().getFileContent(
+		    modelName + ".conf", location);
 	}
+	return res;
+    }
 
-	@Override
-	public boolean isRemovable() {
+    @Override
+    public boolean isRemovable() {
+	return true;
+    }
+
+    @Override
+    public void remove(TreeItem anItem) {
+	TreeDataModel.getInstance().treeNodesDeleted(anItem);
+	anItem.getParent().removeChild(anItem);
+
+	deleteResource(anItem);
+    }
+
+    private void deleteResource(TreeItem anItem) {
+	if (canDeleteResource(anItem)) {
+	    Manifest manifest = SummaryPageManager.getInstance().getManifest();
+
+	    String identifier = getIdentifierRef(anItem);
+	    Resource resource = manifest.resources
+		    .findResourceByIdentifier(identifier);
+
+	    WebEditorServiceClient.getInstance().deleteFile(
+		    resource.getFullHref());
+	    WebEditorServiceClient.getInstance().deleteFile(
+		    getConfFileName(anItem));
+
+	    manifest.resources.deleteResource(identifier);
+
+	    SummaryPageManager.getInstance().updateSummaryPages();
+	}
+    }
+    
+    private boolean isSubTreeUsingResource(TreeItem root, String identifierref, TreeItem exceptItem){
+	if (root != exceptItem){
+	    if (getIdentifierRef(root).equals(identifierref)){
 		return true;
+	    }
 	}
+	
+	for (int i=0; i < root.getChildCount(); i++){
+	    TreeItem newRoot = root.getChild(i);
+	    
+	    if (isSubTreeUsingResource(newRoot, identifierref, exceptItem)){
+		return true;
+	    }
+	}
+	
+	return false;
+    }
 
-	@Override
-	public void remove(TreeItem anItem) {
-		TreeDataModel.getInstance().treeNodesDeleted(anItem);
-		anItem.getParent().removeChild(anItem);
-		
-		deleteResource(anItem);
+    private boolean canDeleteResource(TreeItem anItem) {
+	// TODO need check links to resource from other items in course tree.
+
+	Manifest manifest = SummaryPageManager.getInstance().getManifest();
+	
+	TreeItem root = null;
+	try{
+	    root = manifest.getRoot();
 	}
+	catch (TestDocException e) {
+	    e.printStackTrace();
+	}
+	
+	return !isSubTreeUsingResource(root, getIdentifier(anItem), anItem);
+    }
 
-	private void deleteResource(TreeItem anItem) {
-		if (canDeleteResource(anItem)){
-			Manifest manifest = SummaryPageManager.getInstance().getManifest();
+    public final boolean synchronizeItemWithResource(TreeItem anItem,
+	    String location) {
+	String res = loadResource(location, anItem);
 
-			String identifier = getIdentifierRef(anItem);
-			Resource resource = manifest.resources.findResourceByIdentifier(identifier);
-			
-			WebEditorServiceClient.getInstance().deleteFile(resource.getFullHref());
-			WebEditorServiceClient.getInstance().deleteFile(getConfFileName(anItem));
-			
-			manifest.resources.deleteResource(identifier);
+	ItemData itemData = getItemData(anItem);
 
-			SummaryPageManager.getInstance().updateSummaryPages();
-		}
+	if (itemData == null) {
+	    itemData = createItemDataInstance();
+	    setItemData(anItem, itemData);
 	}
 
-	private boolean canDeleteResource(TreeItem anItem) {
-		// TODO need check links to resource from other items in course tree. 
-		
-		return true;
+	if (res == null || res.trim().equals("")) {
+	    return false;
 	}
 
-	public final boolean synchronizeItemWithResource(TreeItem anItem, String location)
-	{
-		String res = loadResource(location, anItem);
+	itemData.unmarshal(new StringReader(res), anItem);
 
-		ItemData itemData = getItemData(anItem);
+	return true;
+    }
 
-		if (itemData == null) {
-			itemData = createItemDataInstance();
-			setItemData(anItem, itemData);
-		}
+    protected String getConfFileName(TreeItem anItem) {
+	Resource resource = WebEditor.instance.getManifest().resources
+		.findResourceByIdentifier(getIdentifierRef(anItem));
 
-		if (res == null || res.trim().equals("")) {
-			return false;
-		}
+	return resource.identifier + ".conf";
+    }
 
-		itemData.unmarshal(new StringReader(res), anItem);
+    protected final void initializeDataForItem(Item anItem) {
+	ItemData itemData = createItemDataInstance();
 
-		return true;
-	}
+	String res = loadResource("template", anItem);
 
-	protected String getConfFileName(TreeItem anItem) {
-		Resource resource = WebEditor.instance.getManifest().resources
-		.findResourceByIdentifier(getIdentifierRef(anItem));
-		
-		return resource.identifier + ".conf";
-	}
+	itemData.unmarshal(new StringReader(res), anItem);
 
-	protected final void initializeDataForItem(Item anItem){
-		ItemData itemData = createItemDataInstance();
-		
-		String res = loadResource("template", anItem); 
-		
-		itemData.unmarshal(new StringReader(res), anItem);
-		
-		setItemData(anItem, itemData);
-	}
+	setItemData(anItem, itemData);
+    }
 
-	protected abstract void updateResourceFile(TreeItem anItem);
+    protected abstract void updateResourceFile(TreeItem anItem);
 
-	public boolean updateItemResource(TreeItem anItem,
-			boolean updateSummaryPages) {
+    public boolean updateItemResource(TreeItem anItem,
+	    boolean updateSummaryPages) {
 
-		updateResourceFile(anItem);
-		ItemData itemData = getItemData(anItem);
+	updateResourceFile(anItem);
+	ItemData itemData = getItemData(anItem);
 
-		WebEditorServiceClient.getInstance().setFileContent(
-				getConfFileName(anItem), itemData.marshal(anItem));
+	WebEditorServiceClient.getInstance().setFileContent(
+		getConfFileName(anItem), itemData.marshal(anItem));
 
-		if (updateSummaryPages) {
-			SummaryPageManager.getInstance().updateSummaryPages();
-		}
+	if (updateSummaryPages) {
+	    SummaryPageManager.getInstance().updateSummaryPages();
+	}
 
-		return true;
-	}
+	return true;
+    }
 }
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/WebEditor.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/WebEditor.java	2008-05-20 21:37:32 UTC (rev 154)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/WebEditor.java	2008-05-20 21:40:05 UTC (rev 155)
@@ -86,7 +86,7 @@
 		ItemModels.synchronizeAllItemDatas(manifest.getRoot());
 		SummaryPageManager.getInstance().setManifest(manifest);
 		
-		Activity.fullUpdate(manifest);
+		Activity.fullsynchronizeActivitiesStructure(manifest);
 	}
 
 	public Manifest getManifest() {
@@ -152,7 +152,7 @@
 			model.synchronizeItemWithResource(root, "template");
 			SummaryPageManager.getInstance().updateSummaryPages();
 			
-			Activity.fullUpdate(manifest);
+			Activity.fullsynchronizeActivitiesStructure(manifest);
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-20 21:37:49
      
     | 
| Revision: 154
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=154&view=rev
Author:   sem62
Date:     2008-05-20 14:37:32 -0700 (Tue, 20 May 2008)
Log Message:
-----------
Added synchronizing with course tree methods into Activity.
Modified Paths:
--------------
    RTE/src/edu/lnu/FireFly/Rte/Activity.java
Modified: RTE/src/edu/lnu/FireFly/Rte/Activity.java
===================================================================
--- RTE/src/edu/lnu/FireFly/Rte/Activity.java	2008-05-20 21:04:34 UTC (rev 153)
+++ RTE/src/edu/lnu/FireFly/Rte/Activity.java	2008-05-20 21:37:32 UTC (rev 154)
@@ -2,11 +2,14 @@
 
 import java.util.ArrayList;
 
-import edu.lnu.FireFly.FFManifest.*;
-import edu.lnu.FireFly.FFManifest.item.*;
-import edu.lnu.FireFly.FFManifest.item.sequencing.*;
+import edu.lnu.FireFly.FFManifest.Manifest;
+import edu.lnu.FireFly.FFManifest.Organization;
+import edu.lnu.FireFly.FFManifest.TreeItem;
+import edu.lnu.FireFly.FFManifest.item.Item;
+import edu.lnu.FireFly.FFManifest.item.Presentation;
+import edu.lnu.FireFly.FFManifest.item.sequencing.Sequencing;
 import edu.lnu.FireFly.FFManifest.parser.TestDocException;
-import edu.lnu.FireFly.FFManifest.resource.*;
+import edu.lnu.FireFly.FFManifest.resource.Resource;
 
 public class Activity {
 	// from Organization
@@ -84,17 +87,38 @@
 		return rootActivity;
 	}
 	
-	public static void updateActivitiesStructure(Manifest manifest){
+	public static void synchronizeActivitiesStructure(TreeItem anItem){
+		Activity activity = Activity.findActivityByIdentifier(anItem.getIdentifier());
+		for (int i=0; i<anItem.getChildCount(); i++){
+			Item newRoot = (Item)anItem.getChild(i);
+			
+			Activity newActivity = Activity.findActivityByIdentifier(newRoot.getIdentifier());
+			if (newActivity == null){
+				newActivity = new Activity(manifest, newRoot, activity);
+				
+				activity.items.add(newActivity);
+			} else {
+				newActivity.copyDataFromItem(newRoot);
+				synchronizeActivitiesStructure(newRoot);
+			}
+		}
+	}
+	
+	public static void synchronizeActivitiesStructure(Manifest manifest){
 		if (manifest != Activity.manifest){
-			fullUpdate(manifest);
+			fullsynchronizeActivitiesStructure(manifest);
 			
 			return;
 		}
 		
-		
+		try {
+			synchronizeActivitiesStructure(manifest.getRoot());
+		} catch (TestDocException e) {
+			e.printStackTrace();
+		}
 	}
 
-	public static void fullUpdate(Manifest manifest) {
+	public static void fullsynchronizeActivitiesStructure(Manifest manifest) {
 		Activity.manifest = manifest;
 
 		try {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-20 21:04:31
      
     | 
| Revision: 153
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=153&view=rev
Author:   sem62
Date:     2008-05-20 14:04:34 -0700 (Tue, 20 May 2008)
Log Message:
-----------
* Added method getIdentifier to TreeItem
Modified Paths:
--------------
    FFManifest/src/edu/lnu/FireFly/FFManifest/TreeItem.java
Modified: FFManifest/src/edu/lnu/FireFly/FFManifest/TreeItem.java
===================================================================
--- FFManifest/src/edu/lnu/FireFly/FFManifest/TreeItem.java	2008-05-20 20:25:50 UTC (rev 152)
+++ FFManifest/src/edu/lnu/FireFly/FFManifest/TreeItem.java	2008-05-20 21:04:34 UTC (rev 153)
@@ -1,5 +1,6 @@
 package edu.lnu.FireFly.FFManifest;
 
+import edu.lnu.FireFly.FFManifest.item.Item;
 import edu.lnu.FireFly.FFManifest.parser.TestDocException;
 import edu.lnu.FireFly.FFManifest.parser.XMLNode;
 
@@ -72,6 +73,18 @@
 		return true;
 	}
 
+	public String getIdentifier(){
+		if (getClass() == Item.class){
+			return ((Item)this).identifier;
+		}
+		
+		if (getClass() == Organization.class){
+			return ((Organization)this).identifier;
+		}
+		
+		return null;
+	}
+	
 	public abstract void removeChild(TreeItem child);
 
 	public void setParent(TreeItem item) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-20 20:25:42
      
     | 
| Revision: 152
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=152&view=rev
Author:   sem62
Date:     2008-05-20 13:25:50 -0700 (Tue, 20 May 2008)
Log Message:
-----------
Integrated rte.jar
Modified Paths:
--------------
    WebEditor/resources/index.html
    WebEditor/src/edu/lnu/FireFly/WebEditor/AppletWithApiHandle.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/CourseTree.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/CourseTreePopupMenu.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/WebEditor.java
Modified: WebEditor/resources/index.html
===================================================================
--- WebEditor/resources/index.html	2008-05-20 20:25:02 UTC (rev 151)
+++ WebEditor/resources/index.html	2008-05-20 20:25:50 UTC (rev 152)
@@ -85,7 +85,7 @@
 							</tr>
 							<tr height='*'>
 							 	<td class='side-body'>
-					        		<applet mayscript="" name="webeditor" archive="webeditor.jar,RTEValidators.jar,FFManifest.jar, dom4j.jar" code=edu.lnu.FireFly.WebEditor.WebEditor.class width="100%" height="100%">
+					        		<applet mayscript="" name="webeditor" archive="webeditor.jar,RTEValidators.jar,FFManifest.jar,dom4j.jar,rte.jar" code=edu.lnu.FireFly.WebEditor.WebEditor.class width="100%" height="100%">
 										<PARAM NAME="courseLocation" VALUE="http://127.0.0.1/sem/course/">
 										<PARAM NAME="serviceLocation" VALUE="http://127.0.0.1/sem/WebEditor/service/">
 										<PARAM NAME="templateLocation" VALUE="http://127.0.0.1/sem/WebEditor/template/">
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/AppletWithApiHandle.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/AppletWithApiHandle.java	2008-05-20 20:25:02 UTC (rev 151)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/AppletWithApiHandle.java	2008-05-20 20:25:50 UTC (rev 152)
@@ -2,6 +2,11 @@
 
 import javax.swing.JApplet;
 
+import edu.lnu.FireFly.Rte.Activity;
+import edu.lnu.FireFly.Rte.Cmi;
+import edu.lnu.FireFly.Rte.CmiManager;
+import edu.lnu.FireFly.Rte.GlobalStateInformation;
+
 /**
  * It is an Applet, but it contain API handlers.
  * 
@@ -14,43 +19,64 @@
     private static final long serialVersionUID = 5396705469025038804L;
     public static boolean initialized = false;
     public static boolean terminated = false;
-
-    static public String Initialize(String parameter) {
+    
+    public String Initialize(String parameter) {
 	System.out.print("Initialize(" + parameter + ");\n");
+	
 	return "true";
     }
 
-    static public String Terminate(String parameter) {
+    public String Terminate(String parameter) {
 	System.out.print("Terminate(" + parameter + ");\n");
+
 	return "true";
     }
 
-    static public String GetValue(String parameter) {
+    public String GetValue(String parameter) {
 	System.out.print("GetValue(" + parameter + ");\n");
 
-	if (parameter.endsWith("completionStatus")) {
-	    return "incomplete";
+	Cmi cmi = getCmiModel();	
+
+	if (parameter.toLowerCase().startsWith("cmi.")){
+	    return cmi.getValue(parameter.substring(4));
+	} else {
+	    return "";
 	}
+    }
 
-	return "6";
+    private Cmi getCmiModel() {
+	
+	Activity activity = GlobalStateInformation.getCurrentActivity();	
+	
+	Cmi cmi = CmiManager.getInstance().getModelForActivity(activity);
+	return cmi;
     }
 
-    static public boolean SetValue(String parameter, String value) {
+    public boolean SetValue(String parameter, String value) {
 	System.out.print("SetValue(" + parameter + ", " + value + ");\n");
-	return true;
+	
+	Cmi cmi = getCmiModel();	
+
+	if (parameter.toLowerCase().startsWith("cmi.")){
+	    cmi.setValue(parameter.substring(4), value);
+		return true; 
+	} else {
+	    return false;
+	}
+	
     }
 
-    static public String Commit(String parameter) {
+    public String Commit(String parameter) {
 	System.out.print("Commit(" + parameter + ");\n");
 	return "true";
     }
 
-    static public int GetLastError() {
+    public int GetLastError() {
 	System.out.print("GetLastError();\n");
 	return 0;
     }
 
-    static public String GetErrorString(String parameter) {
+    public String GetErrorString(String parameter) {
 	int code = Integer.parseInt(parameter);
 
 	String result = "";
@@ -60,7 +86,7 @@
 	return result;
     }
 
-    static public String GetDiagnostic(String parameter) {
+    public String GetDiagnostic(String parameter) {
 	System.out.print("GetDiagnostic(" + parameter + ");\n");
 	return "";
     }
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/CourseTree.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/CourseTree.java	2008-05-20 20:25:02 UTC (rev 151)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/CourseTree.java	2008-05-20 20:25:50 UTC (rev 152)
@@ -9,6 +9,8 @@
 
 import edu.lnu.FireFly.FFManifest.item.Item;
 import edu.lnu.FireFly.FFManifest.resource.Resource;
+import edu.lnu.FireFly.Rte.Activity;
+import edu.lnu.FireFly.Rte.GlobalStateInformation;
 import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel;
 
 public class CourseTree extends JTree implements TreeSelectionListener {
@@ -38,6 +40,7 @@
     public void valueChanged(TreeSelectionEvent e) {
 	if (e.getNewLeadSelectionPath() == null) {
 	    try {
+		GlobalStateInformation.setCurrentActivity(null);
 		getAppletContext().showDocument(
 			new URL(Settings.getInstance().getResourceLocation()
 				+ "/empty.htm"), "ContentFrame");
@@ -53,6 +56,9 @@
 	if (e.getNewLeadSelectionPath().getLastPathComponent().getClass() == Item.class) {
 	    Item item = (Item) e.getNewLeadSelectionPath()
 		    .getLastPathComponent();
+	    
+	    GlobalStateInformation.setCurrentActivity(Activity.findActivityByIdentifier(item.identifier));
+
 	    try {
 		Resource resource = WebEditor.instance.getManifest().resources
 			.findResourceByIdentifier(item.identifierref);
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/CourseTreePopupMenu.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/CourseTreePopupMenu.java	2008-05-20 20:25:02 UTC (rev 151)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/CourseTreePopupMenu.java	2008-05-20 20:25:50 UTC (rev 152)
@@ -181,9 +181,9 @@
 	private void displayMenu(MouseEvent e) {
 		if (e.isPopupTrigger()) {
 			Point pt = e.getPoint();
-			TreePath path = WebEditor.tree
+			TreePath path = WebEditor.getCourseTree()
 					.getClosestPathForLocation(pt.x, pt.y);
-			WebEditor.tree.setSelectionPath(path);
+			WebEditor.getCourseTree().setSelectionPath(path);
 			manifestItem = (TreeItem) path.getLastPathComponent();
 
 			ItemModel model = ItemModels.getModelFromItem(manifestItem);
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/WebEditor.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/WebEditor.java	2008-05-20 20:25:02 UTC (rev 151)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/WebEditor.java	2008-05-20 20:25:50 UTC (rev 152)
@@ -7,12 +7,12 @@
 import javax.swing.JMenuBar;
 import javax.swing.JMenuItem;
 import javax.swing.JScrollPane;
-import javax.swing.JTree;
 
 import edu.lnu.FireFly.FFManifest.Manifest;
 import edu.lnu.FireFly.FFManifest.TreeItem;
 import edu.lnu.FireFly.FFManifest.parser.Parser;
 import edu.lnu.FireFly.FFManifest.parser.TestDocException;
+import edu.lnu.FireFly.Rte.Activity;
 import edu.lnu.FireFly.WebEditor.Data.AutoSaveThread;
 import edu.lnu.FireFly.WebEditor.Data.ManifestFactory;
 import edu.lnu.FireFly.WebEditor.Data.SummaryPageManager;
@@ -30,7 +30,7 @@
 	 */
 	private static final long serialVersionUID = 1144429894709918030L;
 
-	public static JTree tree;
+	protected static CourseTree courseTree;
 
 	public static WebEditor instance = null;
 
@@ -85,6 +85,8 @@
 
 		ItemModels.synchronizeAllItemDatas(manifest.getRoot());
 		SummaryPageManager.getInstance().setManifest(manifest);
+		
+		Activity.fullUpdate(manifest);
 	}
 
 	public Manifest getManifest() {
@@ -110,10 +112,10 @@
 			CreateNewCourse();
 		}
 
-		tree = new CourseTree(TreeDataModel.getInstance(), getAppletContext());
-		this.add(new JScrollPane(tree));
+		courseTree = new CourseTree(TreeDataModel.getInstance(), getAppletContext());
+		this.add(new JScrollPane(courseTree));
 
-		tree.addMouseListener(new CourseTreePopupMenu());
+		courseTree.addMouseListener(new CourseTreePopupMenu());
 	}
 
 	private void parseParameter() {
@@ -149,6 +151,8 @@
 
 			model.synchronizeItemWithResource(root, "template");
 			SummaryPageManager.getInstance().updateSummaryPages();
+			
+			Activity.fullUpdate(manifest);
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
@@ -179,4 +183,8 @@
 		// Install the menu bar in the frame
 		this.setJMenuBar(menuBar);
 	}
+
+	public static CourseTree getCourseTree() {
+	    return courseTree;
+	}
 }
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-20 20:25:07
      
     | 
| Revision: 151
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=151&view=rev
Author:   sem62
Date:     2008-05-20 13:25:02 -0700 (Tue, 20 May 2008)
Log Message:
-----------
Extracted this model from webPlayer.
Removed AnswersManager because it dosn't working properly at this time.
Modified Paths:
--------------
    RTE/.classpath
    RTE/src/edu/lnu/FireFly/Rte/Cmi.java
Added Paths:
-----------
    RTE/src/edu/lnu/FireFly/Rte/Activity.java
    RTE/src/edu/lnu/FireFly/Rte/CmiElement.java
    RTE/src/edu/lnu/FireFly/Rte/CmiManager.java
    RTE/src/edu/lnu/FireFly/Rte/GlobalObjectivesManager.java
    RTE/src/edu/lnu/FireFly/Rte/GlobalStateInformation.java
    RTE/src/edu/lnu/FireFly/Rte/ObjectiveMap.java
    RTE/src/edu/lnu/FireFly/Rte/Utils.java
    RTE/src/edu/lnu/FireFly/Rte/elements/
    RTE/src/edu/lnu/FireFly/Rte/elements/AnswersElement.java
    RTE/src/edu/lnu/FireFly/Rte/elements/CommentsFromLMSElement.java
    RTE/src/edu/lnu/FireFly/Rte/elements/CommentsFromLearnerElement.java
    RTE/src/edu/lnu/FireFly/Rte/elements/IElementGetter.java
    RTE/src/edu/lnu/FireFly/Rte/elements/InteractionsCorrectResponsesElement.java
    RTE/src/edu/lnu/FireFly/Rte/elements/InteractionsElement.java
    RTE/src/edu/lnu/FireFly/Rte/elements/InteractionsObjectivesElement.java
    RTE/src/edu/lnu/FireFly/Rte/elements/LearnerPreferenceElement.java
    RTE/src/edu/lnu/FireFly/Rte/elements/ObjectivesElement.java
    RTE/src/edu/lnu/FireFly/Rte/elements/ScoreElement.java
Modified: RTE/.classpath
===================================================================
--- RTE/.classpath	2008-05-20 17:16:21 UTC (rev 150)
+++ RTE/.classpath	2008-05-20 20:25:02 UTC (rev 151)
@@ -2,5 +2,7 @@
 <classpath>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="lib" path="S:/WebEditor/dom4j.jar"/>
+	<classpathentry kind="lib" path="S:/WebEditor/FFManifest.jar" sourcepath="S:/WebEditor/FFManifest.jar"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
Added: RTE/src/edu/lnu/FireFly/Rte/Activity.java
===================================================================
--- RTE/src/edu/lnu/FireFly/Rte/Activity.java	                        (rev 0)
+++ RTE/src/edu/lnu/FireFly/Rte/Activity.java	2008-05-20 20:25:02 UTC (rev 151)
@@ -0,0 +1,187 @@
+package edu.lnu.FireFly.Rte;
+
+import java.util.ArrayList;
+
+import edu.lnu.FireFly.FFManifest.*;
+import edu.lnu.FireFly.FFManifest.item.*;
+import edu.lnu.FireFly.FFManifest.item.sequencing.*;
+import edu.lnu.FireFly.FFManifest.parser.TestDocException;
+import edu.lnu.FireFly.FFManifest.resource.*;
+
+public class Activity {
+	// from Organization
+    public String structure;
+    public boolean objectivesGlobalToSystem;
+    // from Item
+    public String identifierref;
+    public boolean isvisible;
+    public String parameters; 
+    public String timeLimitAction;
+    public String dataFromLMS;
+    public Double completionThreshold;
+    public Presentation presentation;
+    // both
+    public String identifier;
+    public String title;
+    public ArrayList<Activity> items;
+    public String metadata_adlcp_location = "";
+    public Sequencing sequencing;
+    // other
+    public Activity parent;
+    public boolean isRoot = false;
+    private static Activity rootActivity;
+
+    private static Manifest manifest = null; 
+    
+    public Activity(Manifest manifest, Item item, Activity parentActivity){
+    	Activity.manifest = manifest;
+    	
+		copyDataFromItem(item);
+		
+		parent = parentActivity;
+		
+		items = new ArrayList<Activity>();
+		int i;
+        if (item.items != null){
+            for (i = 0; i < item.items.size(); i++){
+                items.add(new Activity(manifest, item.items.get(i), this));
+            }
+        }
+	}
+
+	private void copyDataFromItem(Item item) {
+		identifierref = item.identifierref;
+		isvisible = item.isvisible;
+		parameters = item.parameters;
+		timeLimitAction = item.timeLimitAction;
+		dataFromLMS = item.dataFromLMS;
+		completionThreshold = item.completionThreshold;
+		presentation = item.presentation;
+		identifier = item.identifier;
+		title = item.title;
+		sequencing = item.sequencing;
+	}
+	
+	public Activity(Manifest manifest, Organization organization){
+		Activity.manifest = manifest;
+		
+        structure = organization.structure;
+		objectivesGlobalToSystem = organization.objectivesGlobalToSystem;
+		identifier = organization.identifier;
+		title = organization.title;
+		sequencing = organization.sequencing;
+		
+		isRoot = true;
+		items = new ArrayList<Activity>();
+		int i;
+		for (i = 0; i < organization.items.size(); i++){
+			items.add(new Activity(manifest, organization.items.get(i), this));
+		}
+		rootActivity = this;
+    }
+    
+	public static Activity getRoot(){
+		return rootActivity;
+	}
+	
+	public static void updateActivitiesStructure(Manifest manifest){
+		if (manifest != Activity.manifest){
+			fullUpdate(manifest);
+			
+			return;
+		}
+		
+		
+	}
+
+	public static void fullUpdate(Manifest manifest) {
+		Activity.manifest = manifest;
+
+		try {
+			new Activity(manifest, (Organization)manifest.organizations.getDefaultOrganization());
+		} catch (TestDocException e) {
+			e.printStackTrace();
+		}
+	}
+    
+    public Resource getResource(){
+    	if (identifierref == null){
+    		return null;
+    	}
+    	
+    	for (int i=0; i < manifest.resources.resources.size(); i++){
+    		if (manifest.resources.resources.get(i).identifier.equals(identifierref)){
+    			return manifest.resources.resources.get(i);
+    		}
+    	}
+        return null;
+    }
+    
+    public boolean isLeaf(){
+    	return items.size() == 0;
+    }
+    
+    public int getChildIndex(String id){
+    	int i;
+    	for (i = 0; i < items.size(); i++){
+    		if (id.equals(items.get(i).identifier)){
+    			break;
+    		}
+    	}
+    	return i;
+    }
+    
+    public static Activity findActivityByIdentifier(String identifier){
+    	return rootActivity.findActivityByIdentifier2(identifier);
+    }
+    
+    public Activity findActivityByIdentifier2(String identifier){
+    	if (this.identifier.equals(identifier)){
+    		return this;
+    	}
+    	
+		for (int i=0; i<items.size(); i++){
+			Activity item = items.get(i).findActivityByIdentifier2(identifier);
+			if (item != null){
+				return item;
+			}
+		}
+		return null;
+    }
+    
+    public Activity getLastLeafInCluester(boolean ignoreForvarOnlyControlMode, boolean use_flow_control_mode_attribute){
+
+        if (isLeaf()){
+            return this;
+        }
+
+        if (!ignoreForvarOnlyControlMode && sequencing.controlMode.forwardOnly){
+            return null;
+        }
+
+        if (use_flow_control_mode_attribute && sequencing.controlMode.flow){
+            return items.get(items.size() - 1).getLastLeafInCluester(ignoreForvarOnlyControlMode, use_flow_control_mode_attribute);
+        }
+
+        return this;
+    }
+
+    public Activity getFirstLeafInCluester(boolean use_flow_control_mode_attribute){
+        if (isLeaf()){
+            return this;
+        }
+
+        if (use_flow_control_mode_attribute){
+        }
+
+        if (use_flow_control_mode_attribute && sequencing.controlMode.flow){
+            return items.get(0).getFirstLeafInCluester(use_flow_control_mode_attribute);
+        } else {
+            return this;
+        }
+    }
+
+    public String toString(){
+    	return title;
+    }
+}
Modified: RTE/src/edu/lnu/FireFly/Rte/Cmi.java
===================================================================
--- RTE/src/edu/lnu/FireFly/Rte/Cmi.java	2008-05-20 17:16:21 UTC (rev 150)
+++ RTE/src/edu/lnu/FireFly/Rte/Cmi.java	2008-05-20 20:25:02 UTC (rev 151)
@@ -1,47 +1,276 @@
 package edu.lnu.FireFly.Rte;
-import java.util.Hashtable;
 
+import java.util.ArrayList;
+
+import edu.lnu.FireFly.FFManifest.item.sequencing.objectives.Objective;
+import edu.lnu.FireFly.Rte.elements.AnswersElement;
+import edu.lnu.FireFly.Rte.elements.CommentsFromLMSElement;
+import edu.lnu.FireFly.Rte.elements.CommentsFromLearnerElement;
+import edu.lnu.FireFly.Rte.elements.InteractionsElement;
+import edu.lnu.FireFly.Rte.elements.LearnerPreferenceElement;
+import edu.lnu.FireFly.Rte.elements.ObjectivesElement;
+import edu.lnu.FireFly.Rte.elements.ScoreElement;
+
 public class Cmi {
+    private CmiElement _version = new CmiElement("1.0");
+    private ArrayList<CommentsFromLearnerElement> commentsFromLearner = new ArrayList<CommentsFromLearnerElement>();
+	private ArrayList<CommentsFromLMSElement> commentsFromLMS = new ArrayList<CommentsFromLMSElement>();
+    public CmiElement completionStatus = new CmiElement("unknown", new String[]{"completed", "incomplete", "not attempted", "unknown"});
+	private CmiElement completionThreshold = new CmiElement("");
+	private CmiElement credit = new CmiElement("credit", new String[]{"credit", "no-credit"});
+	private CmiElement entry = new CmiElement("ab-initio", new String[]{"ab-initio", "resume", ""});
+	private CmiElement exit = new CmiElement("", new String[]{"time-out", "suspend", "logout", "normal", ""});
+	private ArrayList<InteractionsElement> interactions = new ArrayList<InteractionsElement>();
+	private CmiElement launchData = new CmiElement("");
+	private CmiElement learnerId = new CmiElement("");
+	private CmiElement learnerName = new CmiElement("");
+	private LearnerPreferenceElement learnerPreference = new LearnerPreferenceElement();
+	private CmiElement location = new CmiElement("");
+	private CmiElement maxTimeAllowed = new CmiElement("");
+	private CmiElement mode = new CmiElement("normal", new String[]{"normal", "browse", "review"});
+	private ArrayList<ObjectivesElement> objectives = new ArrayList<ObjectivesElement>();
+	private CmiElement progressMeasure = new CmiElement("");
+	private CmiElement scaledPassingScore = new CmiElement("");
+	private ScoreElement score = new ScoreElement();
+	private CmiElement sessionTime = new CmiElement("");
+	private CmiElement successStatus = new CmiElement("unknown", new String[]{"passed", "failed", "unknown"});
+	private CmiElement suspendData = new CmiElement("");
+	private CmiElement timeLimitAction = new CmiElement("");
+	private CmiElement totalTime = new CmiElement("");
 	
-	protected Hashtable<String, String> values = new Hashtable<String, String>();
+	public ArrayList<AnswersElement> answers = new ArrayList<AnswersElement>();
 	
-	private int state = NOT_INITIALIZED_NOT_TERMINATED;
+	private ArrayList<CmiElement> queryQueue = new ArrayList<CmiElement>();
+			
+	public Cmi(Activity activity){
+		addManifestObjectives(activity);
+	}
 	
-	public void Initialize(String param){
-		values.clear();
-		
-		initDefaultValues();
-		
-		state = INITIALIZED_NOT_TERMINATED;
-	}
+	private void addManifestObjectives(Activity activity){
+        if (activity == null || activity.sequencing == null || activity.sequencing.objectives == null){
+            return;
+        }
 
-	private void initDefaultValues() {
-		values.put("cmi.completionStatus", "incomplete");
+        Objective primaryObjective = activity.sequencing.objectives.primaryObjective;
+        ObjectivesElement oe = new ObjectivesElement();
+		oe.id.value = primaryObjective.objectiveID;
+		objectives.add(oe);
+		if (primaryObjective.mapInfo.size() > 0){
+			CmiManager.getInstance().getGlobalObjectivesManager().setGlobalObjectives(activity, primaryObjective);
+		}
+		int i;
+		for (i = 0; i < activity.sequencing.objectives.objective.size(); i++){
+			primaryObjective = activity.sequencing.objectives.objective.get(i);
+			oe = new ObjectivesElement();
+			oe.id.value = primaryObjective.objectiveID;
+			objectives.add(oe);
+			if (primaryObjective.mapInfo.size() > 0){
+				CmiManager.getInstance().getGlobalObjectivesManager().setGlobalObjectives(activity, primaryObjective);
+			}
+		}
 	}
-
-	public void Terminate(String param){
-		state = INITIALIZED_TERMINATED;
+			
+	public void setValue(String element, String value){
+		CmiElement current = getCmiElement(element);
+		if (current != null){
+			current.value = value;
+			int i;
+			for (i = 0; i < queryQueue.size(); i++){
+				queryQueue.get(i).value = value;
+			}
+			queryQueue.clear();
+		}
 	}
 	
-	public boolean setValue(String param, String value){
-		values.put(param, value);
-		
-		return true;
+	public String getValue(String element){
+		String result = "";
+		CmiElement current = getCmiElement(element);
+		if (current != null){
+			result = current.value;
+			if (!queryQueue.isEmpty()){
+				result = queryQueue.get(queryQueue.size() - 1).value;
+			}
+			queryQueue.clear();
+		}
+		return result;
 	}
 	
-	public String getValue(String param){
-		return values.get(param);
+	private CmiElement getCmiElement(String element){
+		String first = element;
+		String second;
+		int number = 0;
+		if (element.indexOf(".") != -1){
+			first = Utils.getFirst(element);
+			element = Utils.removeFirst(element);
+		}
+		if (element.indexOf(".") != -1){
+			number = Integer.parseInt(Utils.getFirst(element));
+			element = Utils.removeFirst(element);
+		}
+		second = element; 
+		CmiElement returnElement = null;	
+		if (first.equals("_version")){
+			returnElement = _version;
+		}
+		if (first.equals("comments_from_learner")){
+			if (second.equals("_count")){
+				returnElement = new CmiElement("");
+				returnElement.value = String.valueOf(commentsFromLearner.size());
+			}
+			else{
+				CommentsFromLearnerElement cfle;
+				if (number < commentsFromLearner.size()){
+					cfle = commentsFromLearner.get(number);
+					
+				}
+				else{
+					cfle = new CommentsFromLearnerElement();
+					commentsFromLearner.add(cfle);
+				}
+				returnElement = cfle.getCmiElement(second);
+			}
+		}
+		if (first.equals("comments_from_LMS")){
+			if (second.equals("_count")){
+				returnElement = new CmiElement("");
+				returnElement.value = String.valueOf(commentsFromLMS.size());
+			}
+			else{
+				CommentsFromLMSElement cfle;
+				if (number < commentsFromLMS.size()){
+					cfle = commentsFromLMS.get(number);
+					
+				}
+				else{
+					cfle = new CommentsFromLMSElement();
+					commentsFromLMS.add(cfle);
+				}
+				returnElement = cfle.getCmiElement(second);
+			}
+		}
+		if (first.equals("completion_status")){
+			returnElement = completionStatus;
+		}
+		if (first.equals("completion_threshold")){
+			returnElement = completionThreshold;
+		}
+		if (first.equals("credit")){
+			returnElement = credit;
+		}
+		if (first.equals("entry")){
+			returnElement = entry;
+		}
+		if (first.equals("exit")){
+			returnElement = exit;
+		}
+		if (first.equals("interactions")){
+			if (second.equals("_count")){
+				returnElement = new CmiElement("");
+				returnElement.value = String.valueOf(interactions.size());
+			}
+			else{
+				InteractionsElement ie;
+				if (number < interactions.size()){
+					ie = interactions.get(number);
+					
+				}
+				else{
+					ie = new InteractionsElement();
+					interactions.add(ie);
+				}
+				returnElement = ie.getCmiElement(second);
+			}
+		}
+		if (first.equals("launch_data")){
+			returnElement = launchData;
+		}
+		if (first.equals("learner_id")){
+			returnElement = learnerId;
+		}
+		if (first.equals("learner_name")){
+			returnElement = learnerName;
+		}
+		if (first.equals("learner_preference")){
+			returnElement = learnerPreference.getCmiElement(second);
+		}
+		if (first.equals("location")){
+			returnElement = location;
+		}	
+		if (first.equals("max_time_allowed")){
+			returnElement = maxTimeAllowed;
+		}
+		if (first.equals("mode")){
+			returnElement = mode;
+		}		
+		if (first.equals("objectives")){
+			if (second.equals("_count")){
+				returnElement = new CmiElement("");
+				returnElement.value = String.valueOf(objectives.size());
+			}	
+			else{
+				ObjectivesElement oe;
+				if (number < objectives.size()){
+                    if (number < 0){
+                        return null;
+                    }
+                    
+                    oe = objectives.get(number);
+					CmiManager.getInstance().getGlobalObjectivesManager().getGlobalObjectives(oe, second, queryQueue);
+				}
+				else{
+					oe = new ObjectivesElement();
+					objectives.add(oe);
+				}
+				returnElement = oe.getCmiElement(second);
+			}
+		}	
+		if (first.equals("progress_measure")){
+			returnElement = progressMeasure;
+		}	
+		if (first.equals("scaled_passing_score")){
+			returnElement = scaledPassingScore;
+		}	
+		if (first.equals("score")){
+			returnElement = score.getCmiElement(second);
+		}	
+		if (first.equals("session_time")){
+			returnElement = sessionTime;
+		}
+		if (first.equals("success_status")){
+			returnElement = successStatus;
+		}	
+		if (first.equals("suspend_data")){
+			returnElement = suspendData;
+		}	
+		if (first.equals("time_limit_action")){
+			returnElement = timeLimitAction;
+		}
+		if (first.equals("total_time")){
+			returnElement = totalTime;
+		}
+		if (first.equals("answers")){
+			if (second.equals("_count")){
+				returnElement = new CmiElement("");
+				returnElement.value = String.valueOf(answers.size());
+			}
+			else{
+				AnswersElement ae;
+				if (number < answers.size()){
+					ae = answers.get(number);
+					
+				}
+				else{
+					ae = new AnswersElement();
+					answers.add(ae);
+				}
+				returnElement = ae.getCmiElement(second);
+			}
+		}
+		return returnElement;
 	}
-	
-	public int getState() {
-		return state;
-	}
-
-	public void setState(int state) {
-		this.state = state;
-	}
-
-	public static final int NOT_INITIALIZED_NOT_TERMINATED = 0;
-	public static final int INITIALIZED_NOT_TERMINATED = 1;
-	public static final int INITIALIZED_TERMINATED = 2;
+		
+//	public void checkResult(){
+//		AnswersManager answersManager = new AnswersManager(GlobalStateInformation.getCurrentActivity());
+//		answersManager.checkResult();
+//	}
 }
Added: RTE/src/edu/lnu/FireFly/Rte/CmiElement.java
===================================================================
--- RTE/src/edu/lnu/FireFly/Rte/CmiElement.java	                        (rev 0)
+++ RTE/src/edu/lnu/FireFly/Rte/CmiElement.java	2008-05-20 20:25:02 UTC (rev 151)
@@ -0,0 +1,19 @@
+package edu.lnu.FireFly.Rte;
+
+public class CmiElement {
+	public String value;
+	public String[] tokens;
+	
+	public CmiElement(String v){
+		value = v;
+	}
+	
+	public CmiElement(String v, String[] t){
+		value = v;
+		tokens = new String[t.length];
+		int i;
+		for (i = 0; i < t.length; i++){
+			tokens[i] = t[i];
+		}
+	}
+}
Added: RTE/src/edu/lnu/FireFly/Rte/CmiManager.java
===================================================================
--- RTE/src/edu/lnu/FireFly/Rte/CmiManager.java	                        (rev 0)
+++ RTE/src/edu/lnu/FireFly/Rte/CmiManager.java	2008-05-20 20:25:02 UTC (rev 151)
@@ -0,0 +1,50 @@
+package edu.lnu.FireFly.Rte;
+
+import java.util.HashMap;
+
+/**
+ * Manager of Cmi models
+ * 
+ * @author Yuryj Semen
+ */
+public class CmiManager {
+	private static CmiManager obj = null;
+	private CmiManager(){}
+	
+	public static CmiManager getInstance(){
+		
+		if (obj == null){
+			obj = new CmiManager();
+		}
+		
+		return obj;
+	}
+	
+
+    /**
+     * This hashmap containe pairs activity_id <==> CmiModel.
+     */
+    private HashMap<String, Cmi> activitiesVSModels = new HashMap<String, Cmi>();
+
+    /**
+     * Global objectives models manager for managing global objectives.
+     * It is under CMI models.
+     */
+    private GlobalObjectivesManager globalObjectivesManager = new GlobalObjectivesManager();
+    public GlobalObjectivesManager getGlobalObjectivesManager() {
+        return globalObjectivesManager;
+    }
+
+    /**
+     * It give a requested Tracking model for specified activity
+     * @param activity A specified activity for getting Cmi model
+     * @return Cmi model for specified activity
+     */
+    public Cmi getModelForActivity(Activity activity){
+        if (!activitiesVSModels.containsKey(activity.identifier)){
+            activitiesVSModels.put(activity.identifier, new Cmi(activity));
+        }
+
+        return activitiesVSModels.get(activity.identifier);
+    }
+}
Added: RTE/src/edu/lnu/FireFly/Rte/GlobalObjectivesManager.java
===================================================================
--- RTE/src/edu/lnu/FireFly/Rte/GlobalObjectivesManager.java	                        (rev 0)
+++ RTE/src/edu/lnu/FireFly/Rte/GlobalObjectivesManager.java	2008-05-20 20:25:02 UTC (rev 151)
@@ -0,0 +1,50 @@
+package edu.lnu.FireFly.Rte;
+
+import java.util.ArrayList;
+
+import edu.lnu.FireFly.FFManifest.item.sequencing.objectives.Objective;
+import edu.lnu.FireFly.Rte.elements.ObjectivesElement;
+
+public class GlobalObjectivesManager {
+    private ArrayList<ObjectivesElement> globalObjectives = new ArrayList<ObjectivesElement>();
+	private ArrayList<ObjectiveMap> objectiveMaps = new ArrayList<ObjectiveMap>();
+	
+		public void setGlobalObjectives(Activity activity, Objective objective){
+		int i;
+		for (i = 0; i < objective.mapInfo.size(); i++){
+			if (getObjectiveById(objective.mapInfo.get(i).targetObjectiveID) == null){
+				ObjectivesElement oe = new ObjectivesElement();
+				oe.id.value = objective.mapInfo.get(i).targetObjectiveID;
+				globalObjectives.add(oe);
+			}
+			ObjectiveMap om = new ObjectiveMap(activity.identifier + objective.objectiveID, objective.mapInfo.get(i).targetObjectiveID);
+			objectiveMaps.add(om);
+		}
+	}
+	
+	public void getGlobalObjectives(ObjectivesElement oe, String element, ArrayList<CmiElement> list){
+		String id = GlobalStateInformation.getCurrentActivity().identifier + oe.id.value;
+		int i;
+		for (i = 0; i < objectiveMaps.size(); i++){
+			ObjectiveMap current = objectiveMaps.get(i);
+			if (current.activityObjectiveID.equals(id)){
+				ObjectivesElement global = getObjectiveById(current.targetObjectiveID);
+				CmiElement ce = global.getCmiElement(element);
+				list.add(ce);
+			}
+		}
+
+	}
+	
+	private ObjectivesElement getObjectiveById(String id){
+		ObjectivesElement result = null;
+		int i;
+		for (i = 0; i < globalObjectives.size(); i++){
+			if (globalObjectives.get(i).id.value.equals(id)){
+				result = globalObjectives.get(i);
+				break;
+			}
+		}
+		return result;
+	}
+}
Added: RTE/src/edu/lnu/FireFly/Rte/GlobalStateInformation.java
===================================================================
--- RTE/src/edu/lnu/FireFly/Rte/GlobalStateInformation.java	                        (rev 0)
+++ RTE/src/edu/lnu/FireFly/Rte/GlobalStateInformation.java	2008-05-20 20:25:02 UTC (rev 151)
@@ -0,0 +1,20 @@
+package edu.lnu.FireFly.Rte;
+
+public class GlobalStateInformation {
+	protected static Activity currentActivity = null;
+	protected static Activity suspendedActivity = null;
+	
+	public static Activity getCurrentActivity(){
+		return currentActivity;
+	}
+	public static void setCurrentActivity(Activity value){
+		currentActivity = value;
+	}
+	
+	public static Activity getSuspendedActivity(){
+		return suspendedActivity;
+	}
+	public static void setSuspendedActivity(Activity value){
+		suspendedActivity = value;
+	}
+}
Added: RTE/src/edu/lnu/FireFly/Rte/ObjectiveMap.java
===================================================================
--- RTE/src/edu/lnu/FireFly/Rte/ObjectiveMap.java	                        (rev 0)
+++ RTE/src/edu/lnu/FireFly/Rte/ObjectiveMap.java	2008-05-20 20:25:02 UTC (rev 151)
@@ -0,0 +1,16 @@
+package edu.lnu.FireFly.Rte;
+
+public class ObjectiveMap {
+	public String activityObjectiveID = "";
+	public String targetObjectiveID = "";
+	public boolean readObjectiveSatisfiedStatus = true;
+	public boolean writeObjectiveSatisfiedStatus = false;
+	public boolean readObjectiveNormalizedMeasure = true;
+	public boolean writeObjectiveNormalizedMeasure = false;
+
+	public ObjectiveMap(String localId, String globalId){
+		activityObjectiveID = localId;
+		targetObjectiveID = globalId;
+	}
+	
+}
Added: RTE/src/edu/lnu/FireFly/Rte/Utils.java
===================================================================
--- RTE/src/edu/lnu/FireFly/Rte/Utils.java	                        (rev 0)
+++ RTE/src/edu/lnu/FireFly/Rte/Utils.java	2008-05-20 20:25:02 UTC (rev 151)
@@ -0,0 +1,32 @@
+package edu.lnu.FireFly.Rte;
+
+public class Utils {
+	public static String getFirst(String s){
+		return s.substring(0, s.indexOf("."));
+	}
+	
+	public static String removeFirst(String s){
+		int index = s.indexOf(".") + 1;
+		return s.substring(index, s.length());	
+	}
+	
+	public static String getActivityType(Activity activity){
+		if (activity == null || activity.getResource() == null){
+            return "asset";
+        }
+
+        if (activity.getResource().scormType.equals("sco")){
+            return "sco";
+        }
+		return "asset";
+	}
+	
+	public static String getChoiceTarget(String choice){
+		choice = choice.substring(choice.indexOf("choice") + 6, choice.length());
+		choice = choice.trim();
+		choice = choice.substring(choice.indexOf("target") + 6, choice.length() - 1);
+		choice = choice.trim();
+		choice = choice.substring(choice.indexOf("=") + 1, choice.length());
+		return choice.trim();
+	}
+}
Added: RTE/src/edu/lnu/FireFly/Rte/elements/AnswersElement.java
===================================================================
--- RTE/src/edu/lnu/FireFly/Rte/elements/AnswersElement.java	                        (rev 0)
+++ RTE/src/edu/lnu/FireFly/Rte/elements/AnswersElement.java	2008-05-20 20:25:02 UTC (rev 151)
@@ -0,0 +1,11 @@
+package edu.lnu.FireFly.Rte.elements;
+
+import edu.lnu.FireFly.Rte.CmiElement;
+
+public class AnswersElement implements IElementGetter{
+	public CmiElement value = new CmiElement("");
+	
+	public CmiElement getCmiElement(String element){
+		return value;
+	}
+}
Added: RTE/src/edu/lnu/FireFly/Rte/elements/CommentsFromLMSElement.java
===================================================================
--- RTE/src/edu/lnu/FireFly/Rte/elements/CommentsFromLMSElement.java	                        (rev 0)
+++ RTE/src/edu/lnu/FireFly/Rte/elements/CommentsFromLMSElement.java	2008-05-20 20:25:02 UTC (rev 151)
@@ -0,0 +1,23 @@
+package edu.lnu.FireFly.Rte.elements;
+
+import edu.lnu.FireFly.Rte.CmiElement;
+
+public class CommentsFromLMSElement implements IElementGetter {
+	public CmiElement comment = new CmiElement("");
+	public CmiElement location = new CmiElement("");
+	public CmiElement timestamp = new CmiElement("");
+	
+	public CmiElement getCmiElement(String element){
+		CmiElement returnElement = null;
+		if (element.equals("comment")){
+			returnElement = comment;
+		}
+		if (element.equals("location")){
+			returnElement = location;
+		}
+		if (element.equals("timestamp")){
+			returnElement = timestamp;
+		}
+		return returnElement;
+	}
+}
Added: RTE/src/edu/lnu/FireFly/Rte/elements/CommentsFromLearnerElement.java
===================================================================
--- RTE/src/edu/lnu/FireFly/Rte/elements/CommentsFromLearnerElement.java	                        (rev 0)
+++ RTE/src/edu/lnu/FireFly/Rte/elements/CommentsFromLearnerElement.java	2008-05-20 20:25:02 UTC (rev 151)
@@ -0,0 +1,23 @@
+package edu.lnu.FireFly.Rte.elements;
+
+import edu.lnu.FireFly.Rte.CmiElement;
+
+public class CommentsFromLearnerElement implements IElementGetter{
+	public CmiElement comment = new CmiElement("");
+	public CmiElement location = new CmiElement("");
+	public CmiElement timestamp = new CmiElement("");
+	
+	public CmiElement getCmiElement(String element){
+		CmiElement returnElement = null;
+		if (element.equals("comment")){
+			returnElement = comment;
+		}
+		if (element.equals("location")){
+			returnElement = location;
+		}
+		if (element.equals("timestamp")){
+			returnElement = timestamp;
+		}
+		return returnElement;
+	}
+}
Added: RTE/src/edu/lnu/FireFly/Rte/elements/IElementGetter.java
===================================================================
--- RTE/src/edu/lnu/FireFly/Rte/elements/IElementGetter.java	                        (rev 0)
+++ RTE/src/edu/lnu/FireFly/Rte/elements/IElementGetter.java	2008-05-20 20:25:02 UTC (rev 151)
@@ -0,0 +1,7 @@
+package edu.lnu.FireFly.Rte.elements;
+
+import edu.lnu.FireFly.Rte.CmiElement;
+
+public interface IElementGetter {
+	public CmiElement getCmiElement(String element);
+}
Added: RTE/src/edu/lnu/FireFly/Rte/elements/InteractionsCorrectResponsesElement.java
===================================================================
--- RTE/src/edu/lnu/FireFly/Rte/elements/InteractionsCorrectResponsesElement.java	                        (rev 0)
+++ RTE/src/edu/lnu/FireFly/Rte/elements/InteractionsCorrectResponsesElement.java	2008-05-20 20:25:02 UTC (rev 151)
@@ -0,0 +1,11 @@
+package edu.lnu.FireFly.Rte.elements;
+
+import edu.lnu.FireFly.Rte.CmiElement;
+
+public class InteractionsCorrectResponsesElement implements IElementGetter {
+	public CmiElement pattern = new CmiElement("");
+	
+	public CmiElement getCmiElement(String element){
+		return pattern;
+	}
+}
Added: RTE/src/edu/lnu/FireFly/Rte/elements/InteractionsElement.java
===================================================================
--- RTE/src/edu/lnu/FireFly/Rte/elements/InteractionsElement.java	                        (rev 0)
+++ RTE/src/edu/lnu/FireFly/Rte/elements/InteractionsElement.java	2008-05-20 20:25:02 UTC (rev 151)
@@ -0,0 +1,96 @@
+package edu.lnu.FireFly.Rte.elements;
+
+import java.util.ArrayList;
+
+import edu.lnu.FireFly.Rte.CmiElement;
+import edu.lnu.FireFly.Rte.Utils;
+
+public class InteractionsElement implements IElementGetter {
+	public CmiElement id = new CmiElement("");
+	public CmiElement type = new CmiElement("");
+	public ArrayList<InteractionsObjectivesElement> objectives = new ArrayList<InteractionsObjectivesElement>();
+	public CmiElement timestamp = new CmiElement("");
+	public ArrayList<InteractionsCorrectResponsesElement> correctResponses = new ArrayList<InteractionsCorrectResponsesElement>();
+	public CmiElement weighting = new CmiElement("");
+	public CmiElement learnerResponse = new CmiElement("");
+	public CmiElement result = new CmiElement("", new String[]{"correct", "incorrect", "unanticipated", "neutral", "real (10,7)"});
+	public CmiElement latency = new CmiElement("");
+	public CmiElement description = new CmiElement("");
+	
+	public CmiElement getCmiElement(String element){
+		CmiElement returnElement = null;
+		if (element.equals("id")){
+			returnElement = id;
+		}
+		if (element.equals("type")){
+			returnElement = type;
+		}
+		if (element.startsWith("objectives")){
+			element = Utils.removeFirst(element);
+			int number = 0;
+			if (element.indexOf(".") != -1){
+				number = Integer.parseInt(Utils.getFirst(element));
+				element = Utils.removeFirst(element);
+			}
+			if (element.equals("_count")){
+				returnElement = new CmiElement("");
+				returnElement.value = String.valueOf(objectives.size());
+			}
+			else{
+				InteractionsObjectivesElement ioe;
+				if (number < objectives.size()){
+					ioe = objectives.get(number);
+					
+				}
+				else{
+					ioe = new InteractionsObjectivesElement();
+					objectives.add(ioe);
+				}
+				returnElement = ioe.getCmiElement(element);
+			}
+		}
+		if (element.equals("timestamp")){
+			returnElement = timestamp;
+		}
+		if (element.equals("correct_responses")){
+			element = Utils.removeFirst(element);
+			int number = 0;
+			if (element.indexOf(".") != -1){
+				number = Integer.parseInt(Utils.getFirst(element));
+				element = Utils.removeFirst(element);
+			}
+			if (element.equals("_count")){
+				returnElement = new CmiElement("");
+				returnElement.value = String.valueOf(correctResponses.size());
+			}
+			else{
+				InteractionsCorrectResponsesElement icre;
+				if (number < correctResponses.size()){
+					icre = correctResponses.get(number);
+					
+				}
+				else{
+					icre = new InteractionsCorrectResponsesElement();
+					correctResponses.add(icre);
+				}
+				returnElement = icre.getCmiElement(element);
+			}
+		}
+		if (element.equals("weighting")){
+			returnElement = weighting;
+		}
+		if (element.equals("learner_response")){
+			returnElement = learnerResponse;
+		}
+		if (element.equals("result")){
+			returnElement = result;
+		}
+		if (element.equals("latency")){
+			returnElement = latency;
+		}
+		if (element.equals("description")){
+			returnElement = description;
+		}
+		return returnElement;		
+	}
+}
Added: RTE/src/edu/lnu/FireFly/Rte/elements/InteractionsObjectivesElement.java
===================================================================
--- RTE/src/edu/lnu/FireFly/Rte/elements/InteractionsObjectivesElement.java	                        (rev 0)
+++ RTE/src/edu/lnu/FireFly/Rte/elements/InteractionsObjectivesElement.java	2008-05-20 20:25:02 UTC (rev 151)
@@ -0,0 +1,11 @@
+package edu.lnu.FireFly.Rte.elements;
+
+import edu.lnu.FireFly.Rte.CmiElement;
+
+public class InteractionsObjectivesElement implements IElementGetter {
+	public CmiElement id = new CmiElement("");
+	
+	public CmiElement getCmiElement(String element){
+		return id;
+	}
+}
Added: RTE/src/edu/lnu/FireFly/Rte/elements/LearnerPreferenceElement.java
===================================================================
--- RTE/src/edu/lnu/FireFly/Rte/elements/LearnerPreferenceElement.java	                        (rev 0)
+++ RTE/src/edu/lnu/FireFly/Rte/elements/LearnerPreferenceElement.java	2008-05-20 20:25:02 UTC (rev 151)
@@ -0,0 +1,27 @@
+package edu.lnu.FireFly.Rte.elements;
+
+import edu.lnu.FireFly.Rte.CmiElement;
+
+public class LearnerPreferenceElement implements IElementGetter {
+	public CmiElement audioLevel = new CmiElement("0");
+	public CmiElement language = new CmiElement("");
+	public CmiElement deliverySpeed = new CmiElement("0");
+	public CmiElement audioCaptioning = new CmiElement("");
+	
+	public CmiElement getCmiElement(String element) {
+		CmiElement returnElement = null;
+		if (element.equals("audio_level")){
+			returnElement = audioLevel;
+		}
+		if (element.equals("language")){
+			returnElement = language;
+		}
+		if (element.equals("delivery_speed")){
+			returnElement = deliverySpeed;
+		}
+		if (element.equals("audio_captioning")){
+			returnElement = audioCaptioning;
+		}
+		return returnElement;
+	}
+}
Added: RTE/src/edu/lnu/FireFly/Rte/elements/ObjectivesElement.java
===================================================================
--- RTE/src/edu/lnu/FireFly/Rte/elements/ObjectivesElement.java	                        (rev 0)
+++ RTE/src/edu/lnu/FireFly/Rte/elements/ObjectivesElement.java	2008-05-20 20:25:02 UTC (rev 151)
@@ -0,0 +1,34 @@
+package edu.lnu.FireFly.Rte.elements;
+
+import edu.lnu.FireFly.Rte.CmiElement;
+import edu.lnu.FireFly.Rte.Utils;
+
+public class ObjectivesElement implements IElementGetter {
+
+    public CmiElement id = new CmiElement("");
+	public ScoreElement score = new ScoreElement();
+	public CmiElement completionStatus = new CmiElement("unknown", new String[]{"completed", "incomplete", "not attempted", "unknown"});
+	public CmiElement progressMeasure = new CmiElement("");
+	public CmiElement description = new CmiElement("");
+	
+	public CmiElement getCmiElement(String element){
+		CmiElement returnElement = null;
+		if (element.equals("id")){
+			returnElement = id;
+		}
+		if (element.startsWith("score")){
+			element = Utils.removeFirst(element);
+			returnElement = score.getCmiElement(element);
+		}
+		if (element.equals("completion_status")){
+			returnElement = completionStatus;
+		}
+		if (element.equals("progress_measure")){
+			returnElement = progressMeasure;
+		}
+		if (element.equals("description")){
+			returnElement = description;
+		}
+		return returnElement;
+	}
+}
Added: RTE/src/edu/lnu/FireFly/Rte/elements/ScoreElement.java
===================================================================
--- RTE/src/edu/lnu/FireFly/Rte/elements/ScoreElement.java	                        (rev 0)
+++ RTE/src/edu/lnu/FireFly/Rte/elements/ScoreElement.java	2008-05-20 20:25:02 UTC (rev 151)
@@ -0,0 +1,27 @@
+package edu.lnu.FireFly.Rte.elements;
+
+import edu.lnu.FireFly.Rte.CmiElement;
+
+public class ScoreElement implements IElementGetter {
+	public CmiElement scaled = new CmiElement("");
+    public CmiElement raw = new CmiElement("");
+    public CmiElement max = new CmiElement("");
+	public CmiElement min = new CmiElement("");
+	
+	public CmiElement getCmiElement(String element){
+		CmiElement returnElement = null;
+		if (element.equals("scaled")){
+			returnElement = scaled;
+		}
+		if (element.equals("raw")){
+			returnElement = raw;
+		}
+		if (element.equals("max")){
+			returnElement = max;
+		}
+		if (element.equals("min")){
+			returnElement = min;
+		}
+		return returnElement;
+	}
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-20 17:16:19
      
     | 
| Revision: 150
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=150&view=rev
Author:   sem62
Date:     2008-05-20 10:16:21 -0700 (Tue, 20 May 2008)
Log Message:
-----------
Created base version of this library. Using very poor method (HashTable).
Added Paths:
-----------
    RTE/src/edu/
    RTE/src/edu/lnu/
    RTE/src/edu/lnu/FireFly/
    RTE/src/edu/lnu/FireFly/Rte/
    RTE/src/edu/lnu/FireFly/Rte/Cmi.java
    RTE/src/rte.jardesc
Removed Paths:
-------------
    RTE/src/Cmi.java
Deleted: RTE/src/Cmi.java
===================================================================
--- RTE/src/Cmi.java	2008-05-20 16:06:25 UTC (rev 149)
+++ RTE/src/Cmi.java	2008-05-20 17:16:21 UTC (rev 150)
@@ -1,4 +0,0 @@
-
-public class Cmi {
-
-}
Copied: RTE/src/edu/lnu/FireFly/Rte/Cmi.java (from rev 149, RTE/src/Cmi.java)
===================================================================
--- RTE/src/edu/lnu/FireFly/Rte/Cmi.java	                        (rev 0)
+++ RTE/src/edu/lnu/FireFly/Rte/Cmi.java	2008-05-20 17:16:21 UTC (rev 150)
@@ -0,0 +1,47 @@
+package edu.lnu.FireFly.Rte;
+import java.util.Hashtable;
+
+public class Cmi {
+	
+	protected Hashtable<String, String> values = new Hashtable<String, String>();
+	
+	private int state = NOT_INITIALIZED_NOT_TERMINATED;
+	
+	public void Initialize(String param){
+		values.clear();
+		
+		initDefaultValues();
+		
+		state = INITIALIZED_NOT_TERMINATED;
+	}
+
+	private void initDefaultValues() {
+		values.put("cmi.completionStatus", "incomplete");
+	}
+
+	public void Terminate(String param){
+		state = INITIALIZED_TERMINATED;
+	}
+	
+	public boolean setValue(String param, String value){
+		values.put(param, value);
+		
+		return true;
+	}
+	
+	public String getValue(String param){
+		return values.get(param);
+	}
+	
+	public int getState() {
+		return state;
+	}
+
+	public void setState(int state) {
+		this.state = state;
+	}
+
+	public static final int NOT_INITIALIZED_NOT_TERMINATED = 0;
+	public static final int INITIALIZED_NOT_TERMINATED = 1;
+	public static final int INITIALIZED_TERMINATED = 2;
+}
Added: RTE/src/rte.jardesc
===================================================================
--- RTE/src/rte.jardesc	                        (rev 0)
+++ RTE/src/rte.jardesc	2008-05-20 17:16:21 UTC (rev 150)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="WINDOWS-1251" standalone="no"?>
+<jardesc>
+    <jar path="S:/WebEditor/rte.jar"/>
+    <options buildIfNeeded="true" compress="true" descriptionLocation="/RTE/src/rte.jardesc" exportErrors="true" exportWarnings="true" includeDirectoryEntries="false" overwrite="false" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/>
+    <storedRefactorings deprecationInfo="true" structuralOnly="false"/>
+    <selectedProjects/>
+    <manifest generateManifest="true" manifestLocation="" manifestVersion="1.0" reuseManifest="false" saveManifest="false" usesManifest="true">
+        <sealing sealJar="false">
+            <packagesToSeal/>
+            <packagesToUnSeal/>
+        </sealing>
+    </manifest>
+    <selectedElements exportClassFiles="true" exportJavaFiles="false" exportOutputFolder="false">
+        <javaElement handleIdentifier="=RTE"/>
+    </selectedElements>
+</jardesc>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-20 16:07:14
      
     | 
| Revision: 149
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=149&view=rev
Author:   sem62
Date:     2008-05-20 09:06:25 -0700 (Tue, 20 May 2008)
Log Message:
-----------
Initial import.
Added Paths:
-----------
    RTE/.classpath
    RTE/.project
    RTE/src/
    RTE/src/Cmi.java
Added: RTE/.classpath
===================================================================
--- RTE/.classpath	                        (rev 0)
+++ RTE/.classpath	2008-05-20 16:06:25 UTC (rev 149)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
Added: RTE/.project
===================================================================
--- RTE/.project	                        (rev 0)
+++ RTE/.project	2008-05-20 16:06:25 UTC (rev 149)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>RTE</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
Added: RTE/src/Cmi.java
===================================================================
--- RTE/src/Cmi.java	                        (rev 0)
+++ RTE/src/Cmi.java	2008-05-20 16:06:25 UTC (rev 149)
@@ -0,0 +1,4 @@
+
+public class Cmi {
+
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-20 16:02:53
      
     | 
| Revision: 148
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=148&view=rev
Author:   sem62
Date:     2008-05-20 09:01:14 -0700 (Tue, 20 May 2008)
Log Message:
-----------
Initial import.
Added Paths:
-----------
    RTE/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-20 15:56:15
      
     | 
| Revision: 147
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=147&view=rev
Author:   sem62
Date:     2008-05-20 08:54:30 -0700 (Tue, 20 May 2008)
Log Message:
-----------
* Creating method registerPropertyDlg(PropertyDlg dlg). It must be called from constructor of current model or somethig else.
It must set an instance of property dialog for this model.
* remove all methods Configure because they was the same.
* Deleted all constructors from subclasses of PropertyDlg and added the same constructor to they parent class.
Modified Paths:
--------------
    WebEditor/src/edu/lnu/FireFly/WebEditor/CourseTree.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/ChapterPropertiestsDlg.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/LecturePropertiestsDlg.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/PropertyDlg.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/SimpleQuestionPropertiestsDlg.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Lecture/LectureModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SummaryPageModel/SummaryPageModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/CourseTree.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/CourseTree.java	2008-05-19 21:30:10 UTC (rev 146)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/CourseTree.java	2008-05-20 15:54:30 UTC (rev 147)
@@ -29,6 +29,7 @@
     }
 
     public CourseTree(TreeDataModel dataModel, AppletContext appletContext) {
+	super(dataModel);
 	this.appletContext = appletContext;
 	this.addTreeSelectionListener(this);
     }
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/ChapterPropertiestsDlg.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/ChapterPropertiestsDlg.java	2008-05-19 21:30:10 UTC (rev 146)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/ChapterPropertiestsDlg.java	2008-05-20 15:54:30 UTC (rev 147)
@@ -16,569 +16,566 @@
  */
 public class ChapterPropertiestsDlg extends PropertyDlg implements ItemListener {
 
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = -4476966699237610316L;
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -4476966699237610316L;
 
-	private javax.swing.JCheckBox flowCheckBox;
-	private javax.swing.JCheckBox choiceCheckBox;
-	private javax.swing.JCheckBox choiceExitCheckBox;
-	private javax.swing.JCheckBox forwarOnlyCheckBox;
-	private javax.swing.JComboBox configurationComboBox;
-	private javax.swing.JLabel titleLabel;
-	private javax.swing.JLabel jLabel2;
-	private javax.swing.JLabel jLabel3;
-	private javax.swing.JLabel jLabel4;
-	private javax.swing.JLabel jLabel5;
-	private javax.swing.JLabel jLabel6;
-	private javax.swing.JPanel generalPanel;
-	private javax.swing.JPanel controlModesPanel;
-	private javax.swing.JPanel jPanel3;
-	private javax.swing.JPanel jPanel4;
-	private javax.swing.JPanel jPanel5;
-	private javax.swing.JPanel jPanel6;
-	private javax.swing.JTextField titleTextField;
+    private javax.swing.JCheckBox flowCheckBox;
+    private javax.swing.JCheckBox choiceCheckBox;
+    private javax.swing.JCheckBox choiceExitCheckBox;
+    private javax.swing.JCheckBox forwarOnlyCheckBox;
+    private javax.swing.JComboBox configurationComboBox;
+    private javax.swing.JLabel titleLabel;
+    private javax.swing.JLabel jLabel2;
+    private javax.swing.JLabel jLabel3;
+    private javax.swing.JLabel jLabel4;
+    private javax.swing.JLabel jLabel5;
+    private javax.swing.JLabel jLabel6;
+    private javax.swing.JPanel generalPanel;
+    private javax.swing.JPanel controlModesPanel;
+    private javax.swing.JPanel jPanel3;
+    private javax.swing.JPanel jPanel4;
+    private javax.swing.JPanel jPanel5;
+    private javax.swing.JPanel jPanel6;
+    private javax.swing.JTextField titleTextField;
 
-	/** Creates new form ChapterPropertiests */
-	public ChapterPropertiestsDlg() {
-		obj = this;
+    protected void initComponents() {
+	setDefaultCloseOperation(HIDE_ON_CLOSE);
+	setTitle("Propertiests...");
 
-		initComponents();
-	}
+	generalPanel = new javax.swing.JPanel();
+	titleLabel = new javax.swing.JLabel();
+	titleTextField = new javax.swing.JTextField();
+	controlModesPanel = new javax.swing.JPanel();
+	jPanel3 = new javax.swing.JPanel();
+	flowCheckBox = new javax.swing.JCheckBox();
+	jLabel2 = new javax.swing.JLabel();
+	jPanel4 = new javax.swing.JPanel();
+	choiceCheckBox = new javax.swing.JCheckBox();
+	jLabel3 = new javax.swing.JLabel();
+	jPanel5 = new javax.swing.JPanel();
+	choiceExitCheckBox = new javax.swing.JCheckBox();
+	jLabel4 = new javax.swing.JLabel();
+	jPanel6 = new javax.swing.JPanel();
+	forwarOnlyCheckBox = new javax.swing.JCheckBox();
+	jLabel5 = new javax.swing.JLabel();
+	jLabel6 = new javax.swing.JLabel();
 
-	private void initComponents() {
-		setDefaultCloseOperation(HIDE_ON_CLOSE);
-		setTitle("Propertiests...");
+	configurationComboBox = new javax.swing.JComboBox();
+	configurationComboBox.addItemListener(this);
 
-		generalPanel = new javax.swing.JPanel();
-		titleLabel = new javax.swing.JLabel();
-		titleTextField = new javax.swing.JTextField();
-		controlModesPanel = new javax.swing.JPanel();
-		jPanel3 = new javax.swing.JPanel();
-		flowCheckBox = new javax.swing.JCheckBox();
-		jLabel2 = new javax.swing.JLabel();
-		jPanel4 = new javax.swing.JPanel();
-		choiceCheckBox = new javax.swing.JCheckBox();
-		jLabel3 = new javax.swing.JLabel();
-		jPanel5 = new javax.swing.JPanel();
-		choiceExitCheckBox = new javax.swing.JCheckBox();
-		jLabel4 = new javax.swing.JLabel();
-		jPanel6 = new javax.swing.JPanel();
-		forwarOnlyCheckBox = new javax.swing.JCheckBox();
-		jLabel5 = new javax.swing.JLabel();
-		jLabel6 = new javax.swing.JLabel();
+	cancelButton = new javax.swing.JButton("Cancel");
+	okButton = new javax.swing.JButton("Ok");
+	okButton.addActionListener(this);
+	cancelButton.addActionListener(this);
 
-		configurationComboBox = new javax.swing.JComboBox();
-		configurationComboBox.addItemListener(this);
+	cancelButton.setPreferredSize(new java.awt.Dimension(65, 23));
+	okButton.setPreferredSize(new java.awt.Dimension(65, 23));
 
-		cancelButton = new javax.swing.JButton("Cancel");
-		okButton = new javax.swing.JButton("Ok");
-		okButton.addActionListener(this);
-		cancelButton.addActionListener(this);
+	setName("Propertiests...");
 
-		cancelButton.setPreferredSize(new java.awt.Dimension(65, 23));
-		okButton.setPreferredSize(new java.awt.Dimension(65, 23));
+	generalPanel.setBorder(javax.swing.BorderFactory
+		.createTitledBorder("General"));
+	titleLabel.setText("Title");
 
-		setName("Propertiests...");
-
-		generalPanel.setBorder(javax.swing.BorderFactory
-				.createTitledBorder("General"));
-		titleLabel.setText("Title");
-
-		javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(
-				generalPanel);
-		generalPanel.setLayout(jPanel1Layout);
-		jPanel1Layout
-				.setHorizontalGroup(jPanel1Layout
-						.createParallelGroup(
+	javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(
+		generalPanel);
+	generalPanel.setLayout(jPanel1Layout);
+	jPanel1Layout
+		.setHorizontalGroup(jPanel1Layout
+			.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING)
+			.addGroup(
+				jPanel1Layout
+					.createSequentialGroup()
+					.addContainerGap()
+					.addGroup(
+						jPanel1Layout
+							.createParallelGroup(
 								javax.swing.GroupLayout.Alignment.LEADING)
-						.addGroup(
+							.addComponent(
+								titleTextField,
+								javax.swing.GroupLayout.DEFAULT_SIZE,
+								588,
+								Short.MAX_VALUE)
+							.addGroup(
 								jPanel1Layout
-										.createSequentialGroup()
-										.addContainerGap()
-										.addGroup(
-												jPanel1Layout
-														.createParallelGroup(
-																javax.swing.GroupLayout.Alignment.LEADING)
-														.addComponent(
-																titleTextField,
-																javax.swing.GroupLayout.DEFAULT_SIZE,
-																588,
-																Short.MAX_VALUE)
-														.addGroup(
-																jPanel1Layout
-																		.createSequentialGroup()
-																		.addComponent(
-																				titleLabel)
-																		.addContainerGap(
-																				568,
-																				Short.MAX_VALUE)
-																				))
-																				.addContainerGap()));
-		jPanel1Layout
-				.setVerticalGroup(jPanel1Layout
-						.createParallelGroup(
-								javax.swing.GroupLayout.Alignment.LEADING)
-						.addGroup(
-								jPanel1Layout
-										.createSequentialGroup()
-										.addComponent(titleLabel)
-										.addPreferredGap(
-												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-										.addComponent(
-												titleTextField,
-												javax.swing.GroupLayout.PREFERRED_SIZE,
-												javax.swing.GroupLayout.DEFAULT_SIZE,
-												javax.swing.GroupLayout.PREFERRED_SIZE)
-										.addContainerGap()));
+									.createSequentialGroup()
+									.addComponent(
+										titleLabel)
+									.addContainerGap(
+										568,
+										Short.MAX_VALUE)))
+					.addContainerGap()));
+	jPanel1Layout
+		.setVerticalGroup(jPanel1Layout
+			.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING)
+			.addGroup(
+				jPanel1Layout
+					.createSequentialGroup()
+					.addComponent(titleLabel)
+					.addPreferredGap(
+						javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+					.addComponent(
+						titleTextField,
+						javax.swing.GroupLayout.PREFERRED_SIZE,
+						javax.swing.GroupLayout.DEFAULT_SIZE,
+						javax.swing.GroupLayout.PREFERRED_SIZE)
+					.addContainerGap()));
 
-		controlModesPanel.setBorder(javax.swing.BorderFactory
-				.createTitledBorder("Control modes"));
+	controlModesPanel.setBorder(javax.swing.BorderFactory
+		.createTitledBorder("Control modes"));
 
-		jPanel3.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+	jPanel3.setBorder(javax.swing.BorderFactory.createEtchedBorder());
 
-		flowCheckBox.setText("Flow");
+	flowCheckBox.setText("Flow");
 
-		jLabel2
-				.setText("Indicates the flow sequencing requests is permitted to the children of this activity."); // NOI18N
+	jLabel2
+		.setText("Indicates the flow sequencing requests is permitted to the children of this activity."); // NOI18N
 
-		javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(
-				jPanel3);
-		jPanel3.setLayout(jPanel3Layout);
-		jPanel3Layout
-				.setHorizontalGroup(jPanel3Layout
-						.createParallelGroup(
+	javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(
+		jPanel3);
+	jPanel3.setLayout(jPanel3Layout);
+	jPanel3Layout
+		.setHorizontalGroup(jPanel3Layout
+			.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING)
+			.addGroup(
+				jPanel3Layout
+					.createSequentialGroup()
+					.addContainerGap()
+					.addGroup(
+						jPanel3Layout
+							.createParallelGroup(
 								javax.swing.GroupLayout.Alignment.LEADING)
-						.addGroup(
-								jPanel3Layout
-										.createSequentialGroup()
-										.addContainerGap()
-										.addGroup(
-												jPanel3Layout
-														.createParallelGroup(
-																javax.swing.GroupLayout.Alignment.LEADING)
-														.addComponent(
-																flowCheckBox)
-														.addComponent(jLabel2))
-										.addContainerGap(180, Short.MAX_VALUE)));
-		jPanel3Layout
-				.setVerticalGroup(jPanel3Layout
-						.createParallelGroup(
-								javax.swing.GroupLayout.Alignment.LEADING)
-						.addGroup(
-								jPanel3Layout
-										.createSequentialGroup()
-										.addContainerGap(
-												javax.swing.GroupLayout.DEFAULT_SIZE,
-												Short.MAX_VALUE)
-										.addComponent(flowCheckBox)
-										.addPreferredGap(
-												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-										.addComponent(jLabel2)));
+							.addComponent(
+								flowCheckBox)
+							.addComponent(jLabel2))
+					.addContainerGap(180, Short.MAX_VALUE)));
+	jPanel3Layout
+		.setVerticalGroup(jPanel3Layout
+			.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING)
+			.addGroup(
+				jPanel3Layout
+					.createSequentialGroup()
+					.addContainerGap(
+						javax.swing.GroupLayout.DEFAULT_SIZE,
+						Short.MAX_VALUE)
+					.addComponent(flowCheckBox)
+					.addPreferredGap(
+						javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+					.addComponent(jLabel2)));
 
-		jPanel4.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+	jPanel4.setBorder(javax.swing.BorderFactory.createEtchedBorder());
 
-		choiceCheckBox.setText("Choice");
+	choiceCheckBox.setText("Choice");
 
-		jLabel3
-				.setText("Indicates that a choice sequencing request is permitted to target the children of the activity."); // NOI18N
+	jLabel3
+		.setText("Indicates that a choice sequencing request is permitted to target the children of the activity."); // NOI18N
 
-		javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(
-				jPanel4);
-		jPanel4.setLayout(jPanel4Layout);
-		jPanel4Layout
-				.setHorizontalGroup(jPanel4Layout
-						.createParallelGroup(
+	javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(
+		jPanel4);
+	jPanel4.setLayout(jPanel4Layout);
+	jPanel4Layout
+		.setHorizontalGroup(jPanel4Layout
+			.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING)
+			.addGroup(
+				jPanel4Layout
+					.createSequentialGroup()
+					.addContainerGap()
+					.addGroup(
+						jPanel4Layout
+							.createParallelGroup(
 								javax.swing.GroupLayout.Alignment.LEADING)
-						.addGroup(
-								jPanel4Layout
-										.createSequentialGroup()
-										.addContainerGap()
-										.addGroup(
-												jPanel4Layout
-														.createParallelGroup(
-																javax.swing.GroupLayout.Alignment.LEADING)
-														.addComponent(
-																choiceCheckBox)
-														.addComponent(jLabel3))
-										.addContainerGap(130, Short.MAX_VALUE)));
-		jPanel4Layout
-				.setVerticalGroup(jPanel4Layout
-						.createParallelGroup(
-								javax.swing.GroupLayout.Alignment.LEADING)
-						.addGroup(
-								jPanel4Layout
-										.createSequentialGroup()
-										.addContainerGap()
-										.addComponent(choiceCheckBox)
-										.addPreferredGap(
-												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-										.addComponent(jLabel3).addContainerGap(
-												3, Short.MAX_VALUE)));
+							.addComponent(
+								choiceCheckBox)
+							.addComponent(jLabel3))
+					.addContainerGap(130, Short.MAX_VALUE)));
+	jPanel4Layout
+		.setVerticalGroup(jPanel4Layout
+			.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING)
+			.addGroup(
+				jPanel4Layout
+					.createSequentialGroup()
+					.addContainerGap()
+					.addComponent(choiceCheckBox)
+					.addPreferredGap(
+						javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+					.addComponent(jLabel3).addContainerGap(
+						3, Short.MAX_VALUE)));
 
-		jPanel5.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+	jPanel5.setBorder(javax.swing.BorderFactory.createEtchedBorder());
 
-		choiceExitCheckBox.setText("Choice exit");
+	choiceExitCheckBox.setText("Choice exit");
 
-		jLabel4
-				.setText("Indicates that an active child of this activity is permitted to terminate if a choice sequencing request is processed."); // NOI18N
+	jLabel4
+		.setText("Indicates that an active child of this activity is permitted to terminate if a choice sequencing request is processed."); // NOI18N
 
-		javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(
-				jPanel5);
-		jPanel5.setLayout(jPanel5Layout);
-		jPanel5Layout
-				.setHorizontalGroup(jPanel5Layout
-						.createParallelGroup(
+	javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(
+		jPanel5);
+	jPanel5.setLayout(jPanel5Layout);
+	jPanel5Layout
+		.setHorizontalGroup(jPanel5Layout
+			.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING)
+			.addGroup(
+				jPanel5Layout
+					.createSequentialGroup()
+					.addContainerGap()
+					.addGroup(
+						jPanel5Layout
+							.createParallelGroup(
 								javax.swing.GroupLayout.Alignment.LEADING)
-						.addGroup(
-								jPanel5Layout
-										.createSequentialGroup()
-										.addContainerGap()
-										.addGroup(
-												jPanel5Layout
-														.createParallelGroup(
-																javax.swing.GroupLayout.Alignment.LEADING)
-														.addComponent(
-																choiceExitCheckBox)
-														.addComponent(jLabel4))
-										.addContainerGap(30, Short.MAX_VALUE)));
-		jPanel5Layout
-				.setVerticalGroup(jPanel5Layout
-						.createParallelGroup(
-								javax.swing.GroupLayout.Alignment.LEADING)
-						.addGroup(
-								jPanel5Layout
-										.createSequentialGroup()
-										.addContainerGap(
-												javax.swing.GroupLayout.DEFAULT_SIZE,
-												Short.MAX_VALUE)
-										.addComponent(choiceExitCheckBox)
-										.addPreferredGap(
-												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-										.addComponent(jLabel4)));
+							.addComponent(
+								choiceExitCheckBox)
+							.addComponent(jLabel4))
+					.addContainerGap(30, Short.MAX_VALUE)));
+	jPanel5Layout
+		.setVerticalGroup(jPanel5Layout
+			.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING)
+			.addGroup(
+				jPanel5Layout
+					.createSequentialGroup()
+					.addContainerGap(
+						javax.swing.GroupLayout.DEFAULT_SIZE,
+						Short.MAX_VALUE)
+					.addComponent(choiceExitCheckBox)
+					.addPreferredGap(
+						javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+					.addComponent(jLabel4)));
 
-		jPanel6.setBorder(javax.swing.BorderFactory.createEtchedBorder());
-		forwarOnlyCheckBox.setText("Forward only");
-		jLabel5
-				.setText("Indicates that backward targets (in terms of activity tree traversal) are not permitted for the children of this activity. ");
+	jPanel6.setBorder(javax.swing.BorderFactory.createEtchedBorder());
+	forwarOnlyCheckBox.setText("Forward only");
+	jLabel5
+		.setText("Indicates that backward targets (in terms of activity tree traversal) are not permitted for the children of this activity. ");
 
-		javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(
-				jPanel6);
-		jPanel6.setLayout(jPanel6Layout);
-		jPanel6Layout
-				.setHorizontalGroup(jPanel6Layout
-						.createParallelGroup(
+	javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(
+		jPanel6);
+	jPanel6.setLayout(jPanel6Layout);
+	jPanel6Layout
+		.setHorizontalGroup(jPanel6Layout
+			.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING)
+			.addGroup(
+				jPanel6Layout
+					.createSequentialGroup()
+					.addContainerGap()
+					.addGroup(
+						jPanel6Layout
+							.createParallelGroup(
 								javax.swing.GroupLayout.Alignment.LEADING)
-						.addGroup(
-								jPanel6Layout
-										.createSequentialGroup()
-										.addContainerGap()
-										.addGroup(
-												jPanel6Layout
-														.createParallelGroup(
-																javax.swing.GroupLayout.Alignment.LEADING)
-														.addComponent(
-																forwarOnlyCheckBox)
-														.addComponent(jLabel5))
-										.addContainerGap(
-												javax.swing.GroupLayout.DEFAULT_SIZE,
-												Short.MAX_VALUE)));
-		jPanel6Layout
-				.setVerticalGroup(jPanel6Layout
-						.createParallelGroup(
-								javax.swing.GroupLayout.Alignment.LEADING)
-						.addGroup(
-								jPanel6Layout
-										.createSequentialGroup()
-										.addContainerGap()
-										.addComponent(forwarOnlyCheckBox)
-										.addPreferredGap(
-												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-										.addComponent(jLabel5)
-												));
+							.addComponent(
+								forwarOnlyCheckBox)
+							.addComponent(jLabel5))
+					.addContainerGap(
+						javax.swing.GroupLayout.DEFAULT_SIZE,
+						Short.MAX_VALUE)));
+	jPanel6Layout
+		.setVerticalGroup(jPanel6Layout
+			.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING)
+			.addGroup(
+				jPanel6Layout
+					.createSequentialGroup()
+					.addContainerGap()
+					.addComponent(forwarOnlyCheckBox)
+					.addPreferredGap(
+						javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+					.addComponent(jLabel5)));
 
-		configurationComboBox.setModel(new javax.swing.DefaultComboBoxModel(
-				new String[] { "User defined", "Lecture materials",
-						"Examinations materials" }));
-		jLabel6.setText("Choose configuration");
+	configurationComboBox.setModel(new javax.swing.DefaultComboBoxModel(
+		new String[] { "User defined", "Lecture materials",
+			"Examinations materials" }));
+	jLabel6.setText("Choose configuration");
 
-		javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(
-				controlModesPanel);
-		controlModesPanel.setLayout(jPanel2Layout);
-		jPanel2Layout.setHorizontalGroup(jPanel2Layout.createParallelGroup(
-				javax.swing.GroupLayout.Alignment.LEADING).addGroup(
-				jPanel2Layout.createSequentialGroup()
-						.addContainerGap().addGroup(
-						jPanel2Layout.createParallelGroup(
+	javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(
+		controlModesPanel);
+	controlModesPanel.setLayout(jPanel2Layout);
+	jPanel2Layout
+		.setHorizontalGroup(jPanel2Layout
+			.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING)
+			.addGroup(
+				jPanel2Layout
+					.createSequentialGroup()
+					.addContainerGap()
+					.addGroup(
+						jPanel2Layout
+							.createParallelGroup(
 								javax.swing.GroupLayout.Alignment.LEADING)
-								.addComponent(jPanel6,
-										javax.swing.GroupLayout.DEFAULT_SIZE,
-										javax.swing.GroupLayout.DEFAULT_SIZE,
-										Short.MAX_VALUE).addComponent(jPanel5,
-										javax.swing.GroupLayout.DEFAULT_SIZE,
-										javax.swing.GroupLayout.DEFAULT_SIZE,
-										Short.MAX_VALUE).addComponent(jPanel4,
-										javax.swing.GroupLayout.DEFAULT_SIZE,
-										javax.swing.GroupLayout.DEFAULT_SIZE,
-										Short.MAX_VALUE).addComponent(jPanel3,
-										javax.swing.GroupLayout.DEFAULT_SIZE,
-										javax.swing.GroupLayout.DEFAULT_SIZE,
-										Short.MAX_VALUE).addComponent(
-										configurationComboBox, 0, 588,
-										Short.MAX_VALUE).addComponent(jLabel6))
-						.addContainerGap()));
-		jPanel2Layout
-				.setVerticalGroup(jPanel2Layout
-						.createParallelGroup(
-								javax.swing.GroupLayout.Alignment.LEADING)
-						.addGroup(
-								javax.swing.GroupLayout.Alignment.TRAILING,
-								jPanel2Layout
-										.createSequentialGroup()
-										.addComponent(jLabel6)
-										.addPreferredGap(
-												javax.swing.LayoutStyle.ComponentPlacement.RELATED,
-												javax.swing.GroupLayout.DEFAULT_SIZE,
-												Short.MAX_VALUE)
-										.addComponent(
-												configurationComboBox,
-												javax.swing.GroupLayout.PREFERRED_SIZE,
-												javax.swing.GroupLayout.DEFAULT_SIZE,
-												javax.swing.GroupLayout.PREFERRED_SIZE)
-										.addPreferredGap(
-												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-										.addComponent(
-												jPanel3,
-												javax.swing.GroupLayout.PREFERRED_SIZE,
-												javax.swing.GroupLayout.DEFAULT_SIZE,
-												javax.swing.GroupLayout.PREFERRED_SIZE)
-										.addPreferredGap(
-												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-										.addComponent(
-												jPanel4,
-												javax.swing.GroupLayout.PREFERRED_SIZE,
-												53,
-												javax.swing.GroupLayout.PREFERRED_SIZE)
-										.addPreferredGap(
-												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-										.addComponent(
-												jPanel5,
-												javax.swing.GroupLayout.PREFERRED_SIZE,
-												javax.swing.GroupLayout.DEFAULT_SIZE,
-												javax.swing.GroupLayout.PREFERRED_SIZE)
-										.addPreferredGap(
-												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-										.addComponent(
-												jPanel6,
-												javax.swing.GroupLayout.PREFERRED_SIZE,
-												javax.swing.GroupLayout.DEFAULT_SIZE,
-												javax.swing.GroupLayout.PREFERRED_SIZE)
-												.addContainerGap(10, Short.MAX_VALUE)
-										));
+							.addComponent(
+								jPanel6,
+								javax.swing.GroupLayout.DEFAULT_SIZE,
+								javax.swing.GroupLayout.DEFAULT_SIZE,
+								Short.MAX_VALUE)
+							.addComponent(
+								jPanel5,
+								javax.swing.GroupLayout.DEFAULT_SIZE,
+								javax.swing.GroupLayout.DEFAULT_SIZE,
+								Short.MAX_VALUE)
+							.addComponent(
+								jPanel4,
+								javax.swing.GroupLayout.DEFAULT_SIZE,
+								javax.swing.GroupLayout.DEFAULT_SIZE,
+								Short.MAX_VALUE)
+							.addComponent(
+								jPanel3,
+								javax.swing.GroupLayout.DEFAULT_SIZE,
+								javax.swing.GroupLayout.DEFAULT_SIZE,
+								Short.MAX_VALUE)
+							.addComponent(
+								configurationComboBox,
+								0, 588,
+								Short.MAX_VALUE)
+							.addComponent(jLabel6))
+					.addContainerGap()));
+	jPanel2Layout
+		.setVerticalGroup(jPanel2Layout
+			.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING)
+			.addGroup(
+				javax.swing.GroupLayout.Alignment.TRAILING,
+				jPanel2Layout
+					.createSequentialGroup()
+					.addComponent(jLabel6)
+					.addPreferredGap(
+						javax.swing.LayoutStyle.ComponentPlacement.RELATED,
+						javax.swing.GroupLayout.DEFAULT_SIZE,
+						Short.MAX_VALUE)
+					.addComponent(
+						configurationComboBox,
+						javax.swing.GroupLayout.PREFERRED_SIZE,
+						javax.swing.GroupLayout.DEFAULT_SIZE,
+						javax.swing.GroupLayout.PREFERRED_SIZE)
+					.addPreferredGap(
+						javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+					.addComponent(
+						jPanel3,
+						javax.swing.GroupLayout.PREFERRED_SIZE,
+						javax.swing.GroupLayout.DEFAULT_SIZE,
+						javax.swing.GroupLayout.PREFERRED_SIZE)
+					.addPreferredGap(
+						javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+					.addComponent(
+						jPanel4,
+						javax.swing.GroupLayout.PREFERRED_SIZE,
+						53,
+						javax.swing.GroupLayout.PREFERRED_SIZE)
+					.addPreferredGap(
+						javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+					.addComponent(
+						jPanel5,
+						javax.swing.GroupLayout.PREFERRED_SIZE,
+						javax.swing.GroupLayout.DEFAULT_SIZE,
+						javax.swing.GroupLayout.PREFERRED_SIZE)
+					.addPreferredGap(
+						javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+					.addComponent(
+						jPanel6,
+						javax.swing.GroupLayout.PREFERRED_SIZE,
+						javax.swing.GroupLayout.DEFAULT_SIZE,
+						javax.swing.GroupLayout.PREFERRED_SIZE)
+					.addContainerGap(10, Short.MAX_VALUE)));
 
-		javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
-				getContentPane());
-		getContentPane().setLayout(layout);
-		layout
-				.setHorizontalGroup(layout
-						.createParallelGroup(
-								javax.swing.GroupLayout.Alignment.LEADING)
-						.addGroup(
-								javax.swing.GroupLayout.Alignment.TRAILING,
+	javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
+		getContentPane());
+	getContentPane().setLayout(layout);
+	layout
+		.setHorizontalGroup(layout
+			.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING)
+			.addGroup(
+				javax.swing.GroupLayout.Alignment.TRAILING,
+				layout
+					.createSequentialGroup()
+					.addContainerGap()
+					.addGroup(
+						layout
+							.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.TRAILING)
+							.addComponent(
+								controlModesPanel,
+								javax.swing.GroupLayout.Alignment.LEADING,
+								javax.swing.GroupLayout.DEFAULT_SIZE,
+								javax.swing.GroupLayout.DEFAULT_SIZE,
+								Short.MAX_VALUE)
+							.addComponent(
+								generalPanel,
+								javax.swing.GroupLayout.Alignment.LEADING,
+								javax.swing.GroupLayout.DEFAULT_SIZE,
+								javax.swing.GroupLayout.DEFAULT_SIZE,
+								Short.MAX_VALUE)
+							.addGroup(
 								layout
-										.createSequentialGroup()
-										.addContainerGap()
-										.addGroup(
-												layout
-														.createParallelGroup(
-																javax.swing.GroupLayout.Alignment.TRAILING)
-														.addComponent(
-																controlModesPanel,
-																javax.swing.GroupLayout.Alignment.LEADING,
-																javax.swing.GroupLayout.DEFAULT_SIZE,
-																javax.swing.GroupLayout.DEFAULT_SIZE,
-																Short.MAX_VALUE)
-														.addComponent(
-																generalPanel,
-																javax.swing.GroupLayout.Alignment.LEADING,
-																javax.swing.GroupLayout.DEFAULT_SIZE,
-																javax.swing.GroupLayout.DEFAULT_SIZE,
-																Short.MAX_VALUE)
-														.addGroup(
-																layout
-																		.createSequentialGroup()
-																		.addComponent(
-																				okButton,
-																				javax.swing.GroupLayout.PREFERRED_SIZE,
-																				86,
-																				javax.swing.GroupLayout.PREFERRED_SIZE)
-																		.addPreferredGap(
-																				javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-																		.addComponent(
-																				cancelButton,
-																				javax.swing.GroupLayout.PREFERRED_SIZE,
-																				91,
-																				javax.swing.GroupLayout.PREFERRED_SIZE)))
-										.addContainerGap()));
-		layout
-				.setVerticalGroup(layout
-						.createParallelGroup(
-								javax.swing.GroupLayout.Alignment.LEADING)
-						.addGroup(
-								layout
-										.createSequentialGroup()
-										.addContainerGap()
-										.addComponent(
-												generalPanel,
-												javax.swing.GroupLayout.PREFERRED_SIZE,
-												javax.swing.GroupLayout.DEFAULT_SIZE,
-												javax.swing.GroupLayout.PREFERRED_SIZE)
-										.addPreferredGap(
-												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-										.addComponent(
-												controlModesPanel,
-												javax.swing.GroupLayout.PREFERRED_SIZE,
-												javax.swing.GroupLayout.DEFAULT_SIZE,
-												javax.swing.GroupLayout.PREFERRED_SIZE)
-										.addPreferredGap(
-												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-										.addGroup(
-												layout
-														.createParallelGroup(
-																javax.swing.GroupLayout.Alignment.BASELINE)
-														.addComponent(
-																okButton,
-																javax.swing.GroupLayout.PREFERRED_SIZE,
-																javax.swing.GroupLayout.DEFAULT_SIZE,
-																javax.swing.GroupLayout.PREFERRED_SIZE)
-														.addComponent(
-																cancelButton,
-																javax.swing.GroupLayout.PREFERRED_SIZE,
-																javax.swing.GroupLayout.DEFAULT_SIZE,
-																javax.swing.GroupLayout.PREFERRED_SIZE))
-										.addContainerGap(
-												javax.swing.GroupLayout.DEFAULT_SIZE,
-												Short.MAX_VALUE)));
+									.createSequentialGroup()
+									.addComponent(
+										okButton,
+										javax.swing.GroupLayout.PREFERRED_SIZE,
+										86,
+										javax.swing.GroupLayout.PREFERRED_SIZE)
+									.addPreferredGap(
+										javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+									.addComponent(
+										cancelButton,
+										javax.swing.GroupLayout.PREFERRED_SIZE,
+										91,
+										javax.swing.GroupLayout.PREFERRED_SIZE)))
+					.addContainerGap()));
+	layout
+		.setVerticalGroup(layout
+			.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING)
+			.addGroup(
+				layout
+					.createSequentialGroup()
+					.addContainerGap()
+					.addComponent(
+						generalPanel,
+						javax.swing.GroupLayout.PREFERRED_SIZE,
+						javax.swing.GroupLayout.DEFAULT_SIZE,
+						javax.swing.GroupLayout.PREFERRED_SIZE)
+					.addPreferredGap(
+						javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+					.addComponent(
+						controlModesPanel,
+						javax.swing.GroupLayout.PREFERRED_SIZE,
+						javax.swing.GroupLayout.DEFAULT_SIZE,
+						javax.swing.GroupLayout.PREFERRED_SIZE)
+					.addPreferredGap(
+						javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+					.addGroup(
+						layout
+							.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.BASELINE)
+							.addComponent(
+								okButton,
+								javax.swing.GroupLayout.PREFERRED_SIZE,
+								javax.swing.GroupLayout.DEFAULT_SIZE,
+								javax.swing.GroupLayout.PREFERRED_SIZE)
+							.addComponent(
+								cancelButton,
+								javax.swing.GroupLayout.PREFERRED_SIZE,
+								javax.swing.GroupLayout.DEFAULT_SIZE,
+								javax.swing.GroupLayout.PREFERRED_SIZE))
+					.addContainerGap(
+						javax.swing.GroupLayout.DEFAULT_SIZE,
+						Short.MAX_VALUE)));
 
-		this.getRootPane().setDefaultButton(okButton);
-		pack();
-	}
+	this.getRootPane().setDefaultButton(okButton);
+	pack();
+    }
 
-	@Override
-	public void itemStateChanged(ItemEvent arg0) {
-		if (arg0.getStateChange() == ItemEvent.SELECTED) {
-			ChapterPropertiestsDlg dlg = (ChapterPropertiestsDlg) obj;
+    @Override
+    public void itemStateChanged(ItemEvent arg0) {
+	if (arg0.getStateChange() == ItemEvent.SELECTED) {
+	    switch (configurationComboBox.getSelectedIndex()) {
+	    case 0:
+		flowCheckBox.setSelected(false);
+		choiceCheckBox.setSelected(true);
+		forwarOnlyCheckBox.setSelected(false);
+		choiceExitCheckBox.setSelected(true);
 
-			switch (configurationComboBox.getSelectedIndex()) {
-			case 0:
-				dlg.flowCheckBox.setSelected(false);
-				dlg.choiceCheckBox.setSelected(true);
-				dlg.forwarOnlyCheckBox.setSelected(false);
-				dlg.choiceExitCheckBox.setSelected(true);
+		flowCheckBox.setEnabled(true);
+		choiceCheckBox.setEnabled(true);
+		forwarOnlyCheckBox.setEnabled(true);
+		choiceExitCheckBox.setEnabled(true);
 
-				dlg.flowCheckBox.setEnabled(true);
-				dlg.choiceCheckBox.setEnabled(true);
-				dlg.forwarOnlyCheckBox.setEnabled(true);
-				dlg.choiceExitCheckBox.setEnabled(true);
+		break;
+	    case 1:
+		flowCheckBox.setSelected(true);
+		choiceCheckBox.setSelected(true);
+		forwarOnlyCheckBox.setSelected(false);
+		choiceExitCheckBox.setSelected(true);
 
-				break;
-			case 1:
-				dlg.flowCheckBox.setSelected(true);
-				dlg.choiceCheckBox.setSelected(true);
-				dlg.forwarOnlyCheckBox.setSelected(false);
-				dlg.choiceExitCheckBox.setSelected(true);
+		flowCheckBox.setEnabled(false);
+		choiceCheckBox.setEnabled(false);
+		forwarOnlyCheckBox.setEnabled(false);
+		choiceExitCheckBox.setEnabled(false);
 
-				dlg.flowCheckBox.setEnabled(false);
-				dlg.choiceCheckBox.setEnabled(false);
-				dlg.forwarOnlyCheckBox.setEnabled(false);
-				dlg.choiceExitCheckBox.setEnabled(false);
+		break;
+	    case 2:
+		flowCheckBox.setSelected(true);
+		choiceCheckBox.setSelected(false);
+		forwarOnlyCheckBox.setSelected(true);
+		choiceExitCheckBox.setSelected(false);
 
-				break;
-			case 2:
-				dlg.flowCheckBox.setSelected(true);
-				dlg.choiceCheckBox.setSelected(false);
-				dlg.forwarOnlyCheckBox.setSelected(true);
-				dlg.choiceExitCheckBox.setSelected(false);
+		flowCheckBox.setEnabled(false);
+		choiceCheckBox.setEnabled(false);
+		forwarOnlyCheckBox.setEnabled(false);
+		choiceExitCheckBox.setEnabled(false);
 
-				dlg.flowCheckBox.setEnabled(false);
-				dlg.choiceCheckBox.setEnabled(false);
-				dlg.forwarOnlyCheckBox.setEnabled(false);
-				dlg.choiceExitCheckBox.setEnabled(false);
-
-				break;
-			}
-		}
+		break;
+	    }
 	}
+    }
 
-	@Override
-	protected void fillFields() {
-		ChapterPropertiestsDlg dlg = (ChapterPropertiestsDlg) obj;
+    @Override
+    protected void fillFields() {
+	titleTextField.setText(manifestItem.getTitle());
+	titleTextField.selectAll();
 
-		dlg.titleTextField.setText(manifestItem.getTitle());
-		dlg.titleTextField.selectAll();
+	Sequencing sequencing = null;
+	if (manifestItem.getClass() == Item.class) {
+	    sequencing = ((Item) manifestItem).sequencing;
+	}
 
-		Sequencing sequencing = null;
-		if (manifestItem.getClass() == Item.class) {
-			sequencing = ((Item) manifestItem).sequencing;
-		}
+	if (manifestItem.getClass() == Organization.class) {
+	    sequencing = ((Organization) manifestItem).sequencing;
+	}
 
-		if (manifestItem.getClass() == Organization.class) {
-			sequencing = ((Organization) manifestItem).sequencing;
-		}
-
-		if (sequencing != null && sequencing.controlMode != null) {
-			dlg.flowCheckBox.setSelected(sequencing.controlMode.flow);
-			dlg.choiceCheckBox.setSelected(sequencing.controlMode.choice);
-			dlg.forwarOnlyCheckBox
-					.setSelected(sequencing.controlMode.forwardOnly);
-			dlg.choiceExitCheckBox
-					.setSelected(sequencing.controlMode.choiceExit);
-		} else {
-			dlg.flowCheckBox.setSelected(false);
-			dlg.choiceCheckBox.setSelected(true);
-			dlg.forwarOnlyCheckBox.setSelected(false);
-			dlg.choiceExitCheckBox.setSelected(true);
-		}
+	if (sequencing != null && sequencing.controlMode != null) {
+	    flowCheckBox.setSelected(sequencing.controlMode.flow);
+	    choiceCheckBox.setSelected(sequencing.controlMode.choice);
+	    forwarOnlyCheckBox.setSelected(sequencing.controlMode.forwardOnly);
+	    choiceExitCheckBox.setSelected(sequencing.controlMode.choiceExit);
+	} else {
+	    flowCheckBox.setSelected(false);
+	    choiceCheckBox.setSelected(true);
+	    forwarOnlyCheckBox.setSelected(false);
+	    choiceExitCheckBox.setSelected(true);
 	}
+    }
 
-	@Override
-	protected void saveChanges() {
-		ChapterPropertiestsDlg dlg = (ChapterPropertiestsDlg) obj;
+    @Override
+    protected void saveChanges() {
+	manifestItem.setTitle(titleTextField.getText());
 
-		manifestItem.setTitle(dlg.titleTextField.getText());
+	Sequencing sequencing = null;
+	if (manifestItem.getClass() == Item.class) {
+	    sequencing = ((Item) manifestItem).sequencing;
 
-		Sequencing sequencing = null;
-		if (manifestItem.getClass() == Item.class) {
-			sequencing = ((Item) manifestItem).sequencing;
+	    if (sequencing == null) {
+		sequencing = new Sequencing();
+		((Item) manifestItem).sequencing = sequencing;
+	    }
+	}
 
-			if (sequencing == null) {
-				sequencing = new Sequencing();
-				((Item) manifestItem).sequencing = sequencing;
-			}
-		}
+	if (manifestItem.getClass() == Organization.class) {
+	    sequencing = ((Organization) manifestItem).sequencing;
+	    if (sequencing == null) {
+		sequencing = new Sequencing();
+		((Organization) manifestItem).sequencing = sequencing;
+	    }
+	}
 
-		if (manifestItem.getClass() == Organization.class) {
-			sequencing = ((Organization) manifestItem).sequencing;
-			if (sequencing == null) {
-				sequencing = new Sequencing();
-				((Organization) manifestItem).sequencing = sequencing;
-			}
-		}
+	if (sequencing.controlMode == null) {
+	    sequencing.controlMode = new ControlMode();
+	}
 
-		if (sequencing.controlMode == null) {
-			sequencing.controlMode = new ControlMode();
-		}
+	sequencing.controlMode.flow = flowCheckBox.isSelected();
+	sequencing.controlMode.choice = choiceCheckBox.isSelected();
+	sequencing.controlMode.forwardOnly = forwarOnlyCheckBox.isSelected();
+	sequencing.controlMode.choiceExit = choiceExitCheckBox.isSelected();
 
-		sequencing.controlMode.flow = dlg.flowCheckBox.isSelected();
-		sequencing.controlMode.choice = dlg.choiceCheckBox.isSelected();
-		sequencing.controlMode.forwardOnly = dlg.forwarOnlyCheckBox
-				.isSelected();
-		sequencing.controlMode.choiceExit = dlg.choiceExitCheckBox.isSelected();
+	setVisible(false);
 
-		obj.setVisible(false);
-
-		((ResourcedItemModel) ItemModels.getModelFromItem(manifestItem))
-				.updateItemResource(manifestItem, true);
-	}
+	((ResourcedItemModel) ItemModels.getModelFromItem(manifestItem))
+		.updateItemResource(manifestItem, true);
+    }
 }
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java	2008-05-19 21:30:10 UTC (rev 146)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java	2008-05-20 15:54:30 UTC (rev 147)
@@ -52,12 +52,6 @@
     private MultiLineTableCellEditor multiLineTableCellEditor = new MultiLineTableCellEditor();
     private PartAttributesCellEditor partAttributesCellEditor = new PartAttributesCellEditor();
 
-    public CompileQPropertiestsDlg() {
-	obj = this;
-
-	initComponents();
-    }
-
     @Override
     public void actionPerformed(ActionEvent arg0) {
 	super.actionPerformed(arg0);
@@ -168,28 +162,27 @@
 
     @Override
     protected void fillFields() {
-	CompileQPropertiestsDlg dlg = (CompileQPropertiestsDlg) obj;
-	dlg.titleTextField.setText(manifestItem.getTitle());
+	titleTextField.setText(manifestItem.getTitle());
 
 	CompileQModel itemModel = new CompileQModel();
 
-	dlg.captionTextField.setText(itemModel.getData(manifestItem)
+	captionTextField.setText(itemModel.getData(manifestItem)
 		.getCaption());
 	
-	dlg.sameAsTitleCheckBox.setSelected(dlg.titleTextField.getText()
-		.equals(dlg.captionTextField.getText()));
+	sameAsTitleCheckBox.setSelected(titleTextField.getText()
+		.equals(captionTextField.getText()));
 
-	dlg.compileQTableDataModel = itemModel.getData(manifestItem).getParts();
+	compileQTableDataModel = itemModel.getData(manifestItem).getParts();
 
-	dlg.programmingLanguage.addItem("Any");
-	dlg.programmingLanguage.addItem("C++");
-	dlg.programmingLanguage.addItem("Pascal");
+	programmingLanguage.addItem("Any");
+	programmingLanguage.addItem("C++");
+	programmingLanguage.addItem("Pascal");
 	
-	dlg.programmingLanguage.setSelectedItem(itemModel.getData(manifestItem).getLanguge());
+	programmingLanguage.setSelectedItem(itemModel.getData(manifestItem).getLanguge());
 
-	dlg.partsTable.setModel(dlg.compileQTableDataModel);
+	partsTable.setModel(compileQTableDataModel);
 
-	DefaultTableColumnModel columnModel = (DefaultTableColumnModel) dlg.partsTable
+	DefaultTableColumnModel columnModel = (DefaultTableColumnModel) partsTable
 		.getColumnModel();
 
 	columnModel.getColumn(1).setCellEditor(multiLineTableCellEditor);
@@ -205,7 +198,7 @@
 	columnModel.getColumn(2).setMinWidth(100);
 	columnModel.getColumn(2).setResizable(false);
 
-	dlg.titleTextField.selectAll();
+	titleTextField.selectAll();
     }
 
     @Override
@@ -217,7 +210,7 @@
 	partsTable.getModel().setValueAt(text, selectedRow, 1);
     }
 
-    private void initComponents() {
+    protected void initComponents() {
 	setTitle("Propertiests...");
 
 	generalPanel = new javax.swing.JPanel();
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/LecturePropertiestsDlg.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/LecturePropertiestsDlg.java	2008-05-19 21:30:10 UTC (rev 146)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/LecturePropertiestsDlg.java	2008-05-20 15:54:30 UTC (rev 147)
@@ -49,13 +49,6 @@
 
 	private JLabel titleLabel;
 
-	/** Creates new form NewJFrame */
-	public LecturePropertiestsDlg() {
-		obj = this;
-
-		initComponents();
-	}
-
 	@Override
 	public void actionPerformed(ActionEvent arg0) {
 		super.actionPerformed(arg0);
@@ -69,7 +62,7 @@
 		}
 	}
 
-	private void initComponents() {
+	protected void initComponents() {
 		setTitle("Propertiests...");
 		titlePanel = new javax.swing.JPanel();
 		titleLabel = new JLabel("Title");
@@ -380,21 +373,20 @@
 
 	@Override
 	protected void fillFields() {
-		LecturePropertiestsDlg dlg = (LecturePropertiestsDlg) obj;
 		LectureModel model = new LectureModel();
 
 		String title = manifestItem.getTitle();
 		String caption = ((LectureData) model.getItemData(manifestItem))
 				.getCaption();
 
-		dlg.sameAsTitleCheckbox.setSelected(title.equals(caption));
+		sameAsTitleCheckbox.setSelected(title.equals(caption));
 
-		dlg.titleTextField.setText(title);
-		dlg.titleTextField.selectAll();
+		titleTextField.setText(title);
+		titleTextField.selectAll();
 
-		dlg.captionTextField.setText(caption);
+		captionTextField.setText(caption);
 
-		dlg.contentEditorPane.setText(((LectureData) model
+		contentEditorPane.setText(((LectureData) model
 				.getItemData(manifestItem)).getContent());
 	}
 }
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/PropertyDlg.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/PropertyDlg.java	2008-05-19 21:30:10 UTC (rev 146)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/PropertyDlg.java	2008-05-20 15:54:30 UTC (rev 147)
@@ -15,24 +15,28 @@
 	 */
 	private static final long serialVersionUID = -6002603750731392120L;
 	
+	public PropertyDlg(){
+	    initComponents();
+	}
+	
 	protected void editTextFieldInHtmlEditor(JTextComponent textComponent) {
 		WebEditor.instance.htmlEdit(textComponent, this);
 	}
+	
+	protected abstract void initComponents();
 
 	@Override
 	public void actionPerformed(ActionEvent e) {
 		if (e.getSource() == okButton) {
 			saveChanges();
-			obj.setVisible(false);
+			setVisible(false);
 		}
 
 		if (e.getSource() == cancelButton) {
-			obj.setVisible(false);
+			setVisible(false);
 		}
 	}
 
-	protected PropertyDlg obj;
-
 	protected TreeItem manifestItem;
 
 	protected abstract void saveChanges();
@@ -45,10 +49,10 @@
 	public void showDialog(TreeItem item) {
 		manifestItem = item;
 
-		obj.fillFields();
+		fillFields();
 
-		obj.setModal(true);
-		obj.setVisible(true);
+		setModal(true);
+		setVisible(true);
 	}
 
 	public void editedHtmlTextWasSet() {
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/SimpleQuestionPropertiestsDlg.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/SimpleQuestionPropertiestsDlg.java	2008-05-19 21:30:10 UTC (rev 146)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/SimpleQuestionPropertiestsDlg.java	2008-05-20 15:54:30 UTC (rev 147)
@@ -45,12 +45,6 @@
 
 	private javax.swing.JTextField currentAnswerVariant;
 
-	public SimpleQuestionPropertiestsDlg() {
-		obj = this;
-
-		initComponents();
-	}
-
 	@Override
 	public void actionPerformed(ActionEvent arg0) {
 		super.actionPerformed(arg0);
@@ -132,29 +126,28 @@
 
 	@Override
 	protected void fillFields() {
-		SimpleQuestionPropertiestsDlg dlg = (SimpleQuestionPropertiestsDlg) obj;
-		dlg.titleTextField.setText(manifestItem.getTitle());
+		titleTextField.setText(manifestItem.getTitle());
 
 		SimpleQuestionModel itemModel = new SimpleQuestionModel();
 
-		dlg.captionTextField.setText(itemModel.getData(manifestItem)
+		captionTextField.setText(itemModel.getData(manifestItem)
 				.getCaption());
-		dlg.sameAsTitleCheckBox.setSelected(dlg.titleTextField.getText()
-				.equals(dlg.captionTextField.getText()));
-		dlg.questionTextField.setText(itemModel.getData(manifestItem)
+		sameAsTitleCheckBox.setSelected(titleTextField.getText()
+				.equals(captionTextField.getText()));
+		questionTextField.setText(itemModel.getData(manifestItem)
 				.getQuestion());
 
-		dlg.simpleQuestionAnswersDataModel = itemModel.getData(manifestItem)
+		simpleQuestionAnswersDataModel = itemModel.getData(manifestItem)
 				.getAnswers();
-		dlg.answersTable.setModel(dlg.simpleQuestionAnswersDataModel);
+		answersTable.setModel(simpleQuestionAnswersDataModel);
 
-		DefaultTableColumnModel columnModel = (DefaultTableColumnModel) dlg.answersTable
+		DefaultTableColumnModel columnModel = (DefaultTableColumnModel) answersTable
 				.getColumnModel();
 		columnModel.getColumn(0).setPreferredWidth(1);
 		columnModel.getColumn(1).setPreferredWidth(300);
 		columnModel.getColumn(2).setPreferredWidth(1);
 
-		dlg.titleTextField.selectAll();
+		titleTextField.selectAll();
 	}
 
 	@Override
@@ -166,7 +159,7 @@
 		answersTable.getModel().setValueAt(text, selectedRow, 1);
 	}
 
-	private void initComponents() {
+	protected void initComponents() {
 		setTitle("Propertiests...");
 
 		generalPanel = new javax.swing.JPanel();
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterModel.java	2008-05-19 21:30:10 UTC (rev 146)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterModel.java	2008-05-20 15:54:30 UTC (rev 147)
@@ -17,6 +17,8 @@
 		super();
 		modelName = "ChapterModel";
 		isContainerItem = true;
+		
+		registerConfigDlg(new ChapterPropertiestsDlg());
 	}
 
 	@Override
@@ -32,13 +34,6 @@
 	}
 
 	@Override
-	public void ConfigureItem(TreeItem item) {
-		new ChapterPropertiestsDlg().showDialog(item);
-
-		TreeDataModel.getInstance().treeNodesChanged(item);
-	}
-
-	@Override
 	protected ItemData createItemDataInstance() {
 		return new ChapterItemData();
 	}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java	2008-05-19 21:30:10 UTC (rev 146)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java	2008-05-20 15:54:30 UTC (rev 147)
@@ -6,13 +6,13 @@
 import edu.lnu.FireFly.FFManifest.item.Item;
 import edu.lnu.FireFly.FFManifest.resource.Resource;
 import edu.lnu.FireFly.WebEditor.WebEditor;
-import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel;
 import edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ.CompileQPropertiestsDlg;
 import edu.lnu.FireFly.WebEditor.ItemModels.ItemData;
 import edu.lnu.FireFly.WebEditor.ItemModels.ResourcedItemModel;
 import edu.lnu.FireFly.WebEditor.ItemModels.Template;
 
 public class CompileQModel extends ResourcedItemModel {
+    
 	@Override
 	protected String getDefaultTitle() {
 		return "New compile question";
@@ -30,6 +30,7 @@
 
 	public CompileQModel() {
 		modelName = "CompileQModel";
+		registerConfigDlg(new CompileQPropertiestsDlg());
 	}
 
 	@Override
@@ -44,16 +45,6 @@
 		return false;
 	}
 
-	@Override
-	public void ConfigureItem(TreeItem item) {
-		new CompileQPropertiestsDlg().showDialog(item);
-		
-		TreeDataModel.getInstance().treeNodesChanged(item);
-		WebEditor.tree.setSelectionPath(null);
-		WebEditor.tree.setSelectionPath(TreeDataModel.getInstance()
-				.getItemPath(item));
-	}
-
 	public CompileQData getData(TreeItem item) {
 		return ((CompileQData) getItemData(item));
 	}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java	2008-05-19 21:30:10 UTC (rev 146)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java	2008-05-20 15:54:30 UTC (rev 147)
@@ -17,6 +17,7 @@
 import edu.lnu.FireFly.WebEditor.WebEditor;
 import edu.lnu.FireFly.WebEditor.Data.ManifestFactory;
 import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel;
+import edu.lnu.FireFly.WebEditor.GUI.Dialogs.PropertyDlg;
 import edu.lnu.FireFly.WebEditor.ItemModels.SummaryPageModel.SummaryPageModel;
 
 public abstract class ItemModel {
@@ -32,6 +33,8 @@
 
 	protected boolean isContainerItem = false;
 
+	private PropertyDlg propertyDlg = null;
+
 	public final boolean getShowOnSummaryPage(TreeItem anItem) {
 		if (this.getClass() == SummaryPageModel.class){
 			return false;
@@ -71,9 +74,24 @@
 	public abstract boolean canAddToItem(TreeItem parent);
 
 	public abstract boolean canConvertItem(TreeItem parent);
+	
+	public final void ConfigureItem(TreeItem item) {
+	    if (propertyDlg != null){
+	    	propertyDlg.showDialog(item);
+	    }
 
-	public abstract void ConfigureItem(TreeItem item);
+//	    In SimpleQModel
+//	    WebEditor.tree.setSelectionPath(null);
+//	    WebEditor.tree.setSelectionPath(TreeDataModel.getInstance()
+//				.getItemPath(item));
 
+	    TreeDataModel.getInstance().treeNodesChanged(item);
+	}
+
+	public final void registerConfigDlg(PropertyDlg dlg){
+	    this.propertyDlg  = dlg;
+	}
+
 	protected String createNewResource() {
 		if (modelHasResource()){
 		
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Lecture/LectureModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Lecture/LectureModel.java	2008-05-19 21:30:10 UTC (rev 146)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Lecture/LectureModel.java	2008-05-20 15:54:30 UTC (rev 147)
@@ -4,7 +4,6 @@
 import edu.lnu.FireFly.FFManifest.item.Item;
 import edu.lnu.FireFly.FFManifest.resource.Resource;
 import edu.lnu.FireFly.WebEditor.WebEditor;
-import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel;
 import edu.lnu.FireFly.WebEditor.GUI.Dialogs.LecturePropertiestsDlg;
 import edu.lnu.FireFly.WebEditor.ItemModels.ItemData;
 import edu.lnu.FireFly.WebEditor.ItemModels.ResourcedItemModel;
@@ -33,6 +32,7 @@
 
 	public LectureModel() {
 		modelName = "LectureModel";
+		registerConfigDlg(new LecturePropertiestsDlg());
 	}
 
 	@Override
@@ -47,17 +47,6 @@
 		return false;
 	}
 
-	@Override
-	public void ConfigureItem(TreeItem item) {
-		new LecturePropertiestsDlg().showDialog(item);
-		TreeDataModel.getInstance().treeNodesChanged(item);
-		WebEditor.tree.setSelectionPath(null);
-		WebEditor.tree.setSelectionPath(TreeDataModel.getInstance()
-				.getItemPath(item));
-
-		TreeDataModel.getInstance().treeNodesChanged(item);
-	}
-
 	private LectureData getData(TreeItem item) {
 		return (LectureData) getItemData(item);
 	}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionModel.java	2008-05-19 21:30:10 UTC (rev 146)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionModel.java	2008-05-20 15:54:30 UTC (rev 147)
@@ -6,7 +6,6 @@
 import edu.lnu.FireFly.FFManifest.item.Item;
 import edu.lnu.FireFly.FFManifest.resource.Resource;
 import edu.lnu.FireFly.WebEditor.WebEditor;
-import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel;
 import edu.lnu.FireFly.WebEditor.GUI.Dialogs.SimpleQuestionPropertiestsDlg;
 import edu.lnu.FireFly.WebEditor.ItemModels.ItemData;
 import edu.lnu.FireFly.WebEditor.ItemModels.ResourcedItemModel;
@@ -30,6 +29,7 @@
 
 	public SimpleQuestionModel() {
 		modelName = "SimpleQuestionModel";
+		registerConfigDlg(new SimpleQuestionPropertiestsDlg());
 	}
 
 	@Override
@@ -44,15 +44,6 @@
 		return false;
 	}
 
-	@Override
-	public void ConfigureItem(TreeItem item) {
-		new SimpleQuestionPropertiestsDlg().showDialog(item);
-		TreeDataModel.getInstance().treeNodesChanged(item);
-		WebEditor.tree.setSelectionPath(null);
-		WebEditor.tree.setSelectionPath(TreeDataModel.getInstance()
-				.getItemPath(item));
-	}
-
 	public SimpleQuestionData getData(TreeItem item) {
 		return ((SimpleQuestionData) getItemData(item));
 	}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SummaryPageModel/SummaryPageModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SummaryPageModel/SummaryPageModel.java	2008-05-19 21:30:10 UTC (rev 146)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SummaryPageModel/SummaryPageModel.java	2008-05-20 15:54:30 UTC (rev 147)
@@ -84,11 +84,6 @@
 	}
 
 	@Override
-	public void ConfigureItem(TreeItem item) {
-		// Currently this model doesn't configurable.
-	}
-
-	@Override
 	public boolean canAddToItem(TreeItem parent) {
 		// It can be added to any item because it must generated automatically.
 		return false;
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java	2008-05-19 21:30:10 UTC (rev 146)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java	2008-05-20 15:54:30 UTC (rev 147)
@@ -7,11 +7,6 @@
 public class UnknownItemModel extends ItemModel {
 
 	@Override
-	public void ConfigureItem(TreeItem item) {
-		System.out.println("Can't doing this operation with unknown item model");
-	}
-
-	@Override
 	public void addItem(TreeItem parent) {
 		System.out.println("Can't doing this operation with unknown item model");
 	}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-19 21:35:49
      
     | 
| Revision: 146
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=146&view=rev
Author:   sem62
Date:     2008-05-19 14:30:10 -0700 (Mon, 19 May 2008)
Log Message:
-----------
* added template for cimpileQ model
* Moved all logic for tree into new class CourseTree
Modified Paths:
--------------
    WebEditor/src/edu/lnu/FireFly/WebEditor/AppletWithApiHandle.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/Settings.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/WebEditor.java
Added Paths:
-----------
    WebEditor/src/edu/lnu/FireFly/WebEditor/CourseTree.java
    WebEditor/template/CompileQModel.html
    WebEditor/template/global/compileQ.js
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/AppletWithApiHandle.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/AppletWithApiHandle.java	2008-05-18 17:35:26 UTC (rev 145)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/AppletWithApiHandle.java	2008-05-19 21:30:10 UTC (rev 146)
@@ -9,58 +9,59 @@
  */
 public class AppletWithApiHandle extends JApplet {
     /**
-	 * 
-	 */
-	private static final long serialVersionUID = 5396705469025038804L;
-	public static boolean initialized = false;
+     * 
+     */
+    private static final long serialVersionUID = 5396705469025038804L;
+    public static boolean initialized = false;
     public static boolean terminated = false;
 
-    static public String Initialize(String parameter){
-    	System.out.print("Initialize(" + parameter + ");\n");
-    	return "true";
+    static public String Initialize(String parameter) {
+	System.out.print("Initialize(" + parameter + ");\n");
+	return "true";
     }
 
-    static public String Terminate(String parameter){
-    	System.out.print("Terminate(" + parameter + ");\n");
-        return "true";
+    static public String Terminate(String parameter) {
+	System.out.print("Terminate(" + parameter + ");\n");
+	return "true";
     }
 
-    static public String GetValue(String parameter){
-    	System.out.print("GetValue(" + parameter + ");\n");
-    	
-    	if (parameter.endsWith("completionStatus")){
-    		return "incomplete";
-    	}
-    	
-        return "6";
+    static public String GetValue(String parameter) {
+	System.out.print("GetValue(" + parameter + ");\n");
+
+	if (parameter.endsWith("completionStatus")) {
+	    return "incomplete";
+	}
+
+	return "6";
     }
 
-    static public boolean SetValue(String parameter, String value){
-    	System.out.print("SetValue(" + parameter + ", " + value + ");\n");
-        return true;
+    static public boolean SetValue(String parameter, String value) {
+	System.out.print("SetValue(" + parameter + ", " + value + ");\n");
+	return true;
     }
 
-    static public String Commit(String parameter){
-    	System.out.print("Commit(" + parameter + ");\n");
-        return "true";
+    static public String Commit(String parameter) {
+	System.out.print("Commit(" + parameter + ");\n");
+	return "true";
     }
 
-    static public int GetLastError(){
-    	System.out.print("GetLastError();\n");
-        return 0;
+    static public int GetLastError() {
+	System.out.print("GetLastError();\n");
+	return 0;
     }
 
-    static public String GetErrorString(String parameter){
-        int code = Integer.parseInt(parameter);
+    static public String GetErrorString(String parameter) {
+	int code = Integer.parseInt(parameter);
 
-        String result = "";
-        if (code == 0) result = "No Error";
+	String result = "";
+	if (code == 0)
+	    result = "No Error";
 
-        return result;
+	return result;
     }
 
-    static public String GetDiagnostic(String parameter){
-    	System.out.print("GetDiagnostic(" + parameter + ");\n");
-        return "";
+    static public String GetDiagnostic(String parameter) {
+	System.out.print("GetDiagnostic(" + parameter + ");\n");
+	return "";
     }
 }
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/CourseTree.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/CourseTree.java	                        (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/CourseTree.java	2008-05-19 21:30:10 UTC (rev 146)
@@ -0,0 +1,69 @@
+package edu.lnu.FireFly.WebEditor;
+
+import java.applet.AppletContext;
+import java.net.URL;
+
+import javax.swing.JTree;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeSelectionListener;
+
+import edu.lnu.FireFly.FFManifest.item.Item;
+import edu.lnu.FireFly.FFManifest.resource.Resource;
+import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel;
+
+public class CourseTree extends JTree implements TreeSelectionListener {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -8762602746961040949L;
+
+    private AppletContext appletContext;
+
+    public AppletContext getAppletContext() {
+	return appletContext;
+    }
+
+    public void setAppletContext(AppletContext appletContext) {
+	this.appletContext = appletContext;
+    }
+
+    public CourseTree(TreeDataModel dataModel, AppletContext appletContext) {
+	this.appletContext = appletContext;
+	this.addTreeSelectionListener(this);
+    }
+
+    @Override
+    public void valueChanged(TreeSelectionEvent e) {
+	if (e.getNewLeadSelectionPath() == null) {
+	    try {
+		getAppletContext().showDocument(
+			new URL(Settings.getInstance().getResourceLocation()
+				+ "/empty.htm"), "ContentFrame");
+		System.out.print("browse to empty document.\n");
+		Thread.sleep(300);
+	    } catch (Exception e1) {
+		// TODO Auto-generated catch block
+		e1.printStackTrace();
+	    }
+	    return;
+	}
+
+	if (e.getNewLeadSelectionPath().getLastPathComponent().getClass() == Item.class) {
+	    Item item = (Item) e.getNewLeadSelectionPath()
+		    .getLastPathComponent();
+	    try {
+		Resource resource = WebEditor.instance.getManifest().resources
+			.findResourceByIdentifier(item.identifierref);
+		if (resource != null) {
+		    getAppletContext().showDocument(
+			    new URL(Settings.getInstance().getCourseLocation()
+				    + resource.getFullHref()), "ContentFrame");
+		    System.out.print("redirected\n");
+		}
+	    } catch (Exception exc) {
+		exc.printStackTrace();
+	    }
+	}
+    }
+}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java	2008-05-18 17:35:26 UTC (rev 145)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java	2008-05-19 21:30:10 UTC (rev 146)
@@ -1,11 +1,16 @@
 package edu.lnu.FireFly.WebEditor.ItemModels.CompileQ;
 
+import java.util.Iterator;
+
 import edu.lnu.FireFly.FFManifest.TreeItem;
+import edu.lnu.FireFly.FFManifest.item.Item;
+import edu.lnu.FireFly.FFManifest.resource.Resource;
 import edu.lnu.FireFly.WebEditor.WebEditor;
 import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel;
 import edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ.CompileQPropertiestsDlg;
 import edu.lnu.FireFly.WebEditor.ItemModels.ItemData;
 import edu.lnu.FireFly.WebEditor.ItemModels.ResourcedItemModel;
+import edu.lnu.FireFly.WebEditor.ItemModels.Template;
 
 public class CompileQModel extends ResourcedItemModel {
 	@Override
@@ -64,29 +69,29 @@
 
 	@Override
 	protected void updateResourceFile(TreeItem anItem) {
-//		Resource resource = WebEditor.instance.getManifest().resources
-//				.findResourceByIdentifier(((Item) anItem).identifierref);
-//
-//		Template template = new Template(resource.getFullHref(), this);
-//
-//		CompileQData itemData = getData(anItem);
-//
-//		template.setProperty("Caption", itemData.getCaption());
-//		template.setProperty("Question", itemData.getQuestion());
-//
-//		Iterator<CompileQPart> iter = itemData.getAnswers().questionParts
-//				.iterator();
-//		String answers = "\r\nsetSingleVariant("
-//				+ itemData.getAnswers().getSingleVariant() + ");\r\n";
-//
-//		while (iter.hasNext()) {
-//			CompileQPart answer = iter.next();
-//			answers += "addAnswer(\"" + answer.getAnswerText().replace("\"", "\\\"") + "\", "
-//					+ answer.getAnswerPoint() + ");" + "\r\n";
-//		}
-//
-//		template.setProperty("answers", answers);
-//		template.updateResource();
+		Resource resource = WebEditor.instance.getManifest().resources
+				.findResourceByIdentifier(((Item) anItem).identifierref);
+
+		Template template = new Template(resource.getFullHref(), this);
+
+		CompileQData itemData = getData(anItem);
+
+		template.setProperty("Caption", itemData.getCaption());
+
+		Iterator<CompileQPart> iter = itemData.getParts().questionParts.iterator();
+		String answers = "\r\nsetProgrammingLanguage(\""
+				+ itemData.getLanguge() + "\");\r\n";
+
+		while (iter.hasNext()) {
+			CompileQPart part = iter.next();
+			answers += "addPart(\"" + part.getAnswerText().replace("\"", "\\\"") + "\", "
+					+ part.getPartAttributes().isAnswer() + ", "
+					+ part.getPartAttributes().isReadOnly() + ", "
+					+ part.getPartAttributes().isVisible() + ");" + "\r\n";
+		}
+
+		template.setProperty("parts", answers);
+		template.updateResource();
 	}
 
 	@Override
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/Settings.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/Settings.java	2008-05-18 17:35:26 UTC (rev 145)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/Settings.java	2008-05-19 21:30:10 UTC (rev 146)
@@ -9,7 +9,7 @@
 	private long autoSaveInterval = 5 * 60 * 1000;
 	private long nopInterval = 60 * 1000;
 	
-	public static Settings obj = null;
+	private static Settings obj = null;
 	
 	public static Settings getInstance(){
 		
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/WebEditor.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/WebEditor.java	2008-05-18 17:35:26 UTC (rev 145)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/WebEditor.java	2008-05-19 21:30:10 UTC (rev 146)
@@ -2,22 +2,17 @@
 
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
-import java.net.URL;
 
 import javax.swing.JMenu;
 import javax.swing.JMenuBar;
 import javax.swing.JMenuItem;
 import javax.swing.JScrollPane;
 import javax.swing.JTree;
-import javax.swing.event.TreeSelectionEvent;
-import javax.swing.event.TreeSelectionListener;
 
 import edu.lnu.FireFly.FFManifest.Manifest;
 import edu.lnu.FireFly.FFManifest.TreeItem;
-import edu.lnu.FireFly.FFManifest.item.Item;
 import edu.lnu.FireFly.FFManifest.parser.Parser;
 import edu.lnu.FireFly.FFManifest.parser.TestDocException;
-import edu.lnu.FireFly.FFManifest.resource.Resource;
 import edu.lnu.FireFly.WebEditor.Data.AutoSaveThread;
 import edu.lnu.FireFly.WebEditor.Data.ManifestFactory;
 import edu.lnu.FireFly.WebEditor.Data.SummaryPageManager;
@@ -28,7 +23,7 @@
 import edu.lnu.FireFly.WebEditor.WSClients.WebEditorServiceClient;
 
 public class WebEditor extends AppletWithWYSIWYGEditor implements
-		ActionListener, TreeSelectionListener {
+		ActionListener {
 
 	/**
 	 * 
@@ -115,11 +110,9 @@
 			CreateNewCourse();
 		}
 
-		tree = new JTree(TreeDataModel.getInstance());
+		tree = new CourseTree(TreeDataModel.getInstance(), getAppletContext());
 		this.add(new JScrollPane(tree));
 
-		tree.addTreeSelectionListener(this);
-
 		tree.addMouseListener(new CourseTreePopupMenu());
 	}
 
@@ -186,38 +179,4 @@
 		// Install the menu bar in the frame
 		this.setJMenuBar(menuBar);
 	}
-
-	@Override
-	public void valueChanged(TreeSelectionEvent e) {
-		if (e.getNewLeadSelectionPath() == null) {
-			try {
-				getAppletContext().showDocument(
-						new URL(Settings.getInstance().getResourceLocation()
-								+ "/empty.htm"), "ContentFrame");
-				System.out.print("browse to empty document.\n");
-				Thread.sleep(300);
-			} catch (Exception e1) {
-				// TODO Auto-generated catch block
-				e1.printStackTrace();
-			}
-			return;
-		}
-
-		if (e.getNewLeadSelectionPath().getLastPathComponent().getClass() == Item.class) {
-			Item item = (Item) e.getNewLeadSelectionPath()
-					.getLastPathComponent();
-			try {
-				Resource resource = manifest.resources
-						.findResourceByIdentifier(item.identifierref);
-				if (resource != null) {
-					getAppletContext().showDocument(
-							new URL(Settings.getInstance().getCourseLocation()
-									+ resource.getFullHref()), "ContentFrame");
-					System.out.print("redirected\n");
-				}
-			} catch (Exception exc) {
-				exc.printStackTrace();
-			}
-		}
-	}
 }
Added: WebEditor/template/CompileQModel.html
===================================================================
--- WebEditor/template/CompileQModel.html	                        (rev 0)
+++ WebEditor/template/CompileQModel.html	2008-05-19 21:30:10 UTC (rev 146)
@@ -0,0 +1,26 @@
+<html>
+<head>
+	<title>title</title>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
+	<script type="text/javascript" src="global/APIWrapper.js"></script>
+        <script type="text/javascript" src="global/compileQ.js"></script>
+</head>
+
+<body onLoad="Initialize()" onunload="Terminate();">
+	<div id="compileQ_caption">
+		<!--caption start-->New caption<!--caption end-->
+	</div>
+	<div id="compileQ_content">
+	<form onsubmit="return checkAnswer(this);">
+		<div id="compileQ_part">
+			<script language="javascript">
+			<!--parts start-->
+			<!--parts end-->
+			show();
+			</script>			
+		</div>
+		<input type=submit value="Check">
+	</form>
+	</div>
+</body>
+</html>
\ No newline at end of file
Added: WebEditor/template/global/compileQ.js
===================================================================
--- WebEditor/template/global/compileQ.js	                        (rev 0)
+++ WebEditor/template/global/compileQ.js	2008-05-19 21:30:10 UTC (rev 146)
@@ -0,0 +1,38 @@
+var singlepart = false;
+var parts = new Array();
+
+function setProgrammingLanguage(language){
+}
+
+function addPart(_text, _ispart, _isReadOnly, _isVisible){
+    var part = {
+        text: _text,
+        ispart: _ispart,
+        isReadOnly: _isReadOnly,
+        isVisible: _isVisible,
+        id: "part" + parts.length
+    };
+    parts.push(part);
+}
+
+function show(){
+    for (i=0; i < parts.length; i++){        
+        if (parts[i].isVisible){
+            document.write("<div name='" + parts[i].id + "' id='" + parts[i].id + "'>");
+            if (!parts[i].isReadOnly){
+	            document.write("<textarea rows='15' cols='60' id='part" + parts[i].id + "' name='part" + parts[i].id + "'>");
+            }
+	        document.write(parts[i].text);
+            if (!parts[i].isReadOnly){
+	            document.write("</textarea>");
+	        }
+	        document.write("<div>");
+	    }
+    }
+}
+
+function check7Answer(frm){
+    Terminate();
+
+    return false;
+}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-18 17:35:24
      
     | 
| Revision: 145
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=145&view=rev
Author:   sem62
Date:     2008-05-18 10:35:26 -0700 (Sun, 18 May 2008)
Log Message:
-----------
Normally marshal and unmarshal compileQ propertiests.
Modified Paths:
--------------
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPart.java
    WebEditor/template/CompileQModel.conf
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java	2008-05-18 15:27:58 UTC (rev 144)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java	2008-05-18 17:35:26 UTC (rev 145)
@@ -173,16 +173,19 @@
 
 	CompileQModel itemModel = new CompileQModel();
 
-	// dlg.captionTextField.setText(itemModel.getData(manifestItem)
-	// .getCaption());
+	dlg.captionTextField.setText(itemModel.getData(manifestItem)
+		.getCaption());
+	
 	dlg.sameAsTitleCheckBox.setSelected(dlg.titleTextField.getText()
 		.equals(dlg.captionTextField.getText()));
 
 	dlg.compileQTableDataModel = itemModel.getData(manifestItem).getParts();
-	
+
 	dlg.programmingLanguage.addItem("Any");
 	dlg.programmingLanguage.addItem("C++");
 	dlg.programmingLanguage.addItem("Pascal");
+	
+	dlg.programmingLanguage.setSelectedItem(itemModel.getData(manifestItem).getLanguge());
 
 	dlg.partsTable.setModel(dlg.compileQTableDataModel);
 
@@ -219,7 +222,8 @@
 
 	generalPanel = new javax.swing.JPanel();
 	titleLabel = new javax.swing.JLabel();
-	programminglanguageLabel = new javax.swing.JLabel("Programming language:");
+	programminglanguageLabel = new javax.swing.JLabel(
+		"Programming language:");
 	titleTextField = new javax.swing.JTextField();
 	captionPanel = new javax.swing.JPanel();
 	captionTextField = new javax.swing.JTextField();
@@ -356,8 +360,7 @@
 								captionTextField,
 								javax.swing.GroupLayout.PREFERRED_SIZE,
 								javax.swing.GroupLayout.DEFAULT_SIZE,
-								javax.swing.GroupLayout.PREFERRED_SIZE
-								))
+								javax.swing.GroupLayout.PREFERRED_SIZE))
 					.addContainerGap()));
 
 	oneAnswerCheckBox.setText("Only one correct answer");
@@ -366,47 +369,36 @@
 		.createTitledBorder("Variants of answer"));
 
 	jScrollPane1.setViewportView(partsTable);
-	jScrollPane1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
+	jScrollPane1
+		.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
 
 	javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(
 		partsPanel);
 	partsPanel.setLayout(jPanel4Layout);
-	jPanel4Layout.setHorizontalGroup(
-		jPanel4Layout
-			.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
-        			.addGroup(jPanel4Layout.createSequentialGroup()
-        				.addComponent(moveUpAnswerVariantBtn)
-                			.addContainerGap(10, 10)
-                			.addComponent(moveDownAnswerVariantBtn)
-                			.addContainerGap(10, 10)
-                			.addComponent(insertAnswerVariantBtn)
-                			.addContainerGap(10, 10)
-                			.addComponent(deleteAnswerVariantBtn)
-                			.addContainerGap(10, 10)
-                			.addComponent(editAnswerVariantInHtmlEditor)
-                			.addContainerGap()
-        			)
-                		.addGroup(
-                			jPanel4Layout.createSequentialGroup().addContainerGap()
-                        			.addComponent(jScrollPane1,
-                        				javax.swing.GroupLayout.DEFAULT_SIZE, 364,
-                        				Short.MAX_VALUE)
-                        			.addContainerGap()
-                		)
-                		.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
-                			 jPanel4Layout
-                			 	.createSequentialGroup()
-                			 	.addContainerGap()
-                				.addComponent(programminglanguageLabel, 
-							javax.swing.GroupLayout.PREFERRED_SIZE,
-							javax.swing.GroupLayout.DEFAULT_SIZE,
-							javax.swing.GroupLayout.PREFERRED_SIZE
-                					)
-                				.addContainerGap(10, 10)
-                				.addComponent(programmingLanguage, 118, 118, 118)
-                				.addContainerGap()
-                		)
-	);
+	jPanel4Layout.setHorizontalGroup(jPanel4Layout.createParallelGroup(
+		javax.swing.GroupLayout.Alignment.TRAILING).addGroup(
+		jPanel4Layout.createSequentialGroup().addComponent(
+			moveUpAnswerVariantBtn).addContainerGap(10, 10)
+			.addComponent(moveDownAnswerVariantBtn)
+			.addContainerGap(10, 10).addComponent(
+				insertAnswerVariantBtn).addContainerGap(10, 10)
+			.addComponent(deleteAnswerVariantBtn).addContainerGap(
+				10, 10).addComponent(
+				editAnswerVariantInHtmlEditor)
+			.addContainerGap()).addGroup(
+		jPanel4Layout.createSequentialGroup().addContainerGap()
+			.addComponent(jScrollPane1,
+				javax.swing.GroupLayout.DEFAULT_SIZE, 364,
+				Short.MAX_VALUE).addContainerGap()).addGroup(
+		javax.swing.GroupLayout.Alignment.TRAILING,
+		jPanel4Layout.createSequentialGroup().addContainerGap()
+			.addComponent(programminglanguageLabel,
+				javax.swing.GroupLayout.PREFERRED_SIZE,
+				javax.swing.GroupLayout.DEFAULT_SIZE,
+				javax.swing.GroupLayout.PREFERRED_SIZE)
+			.addContainerGap(10, 10).addComponent(
+				programmingLanguage, 118, 118, 118)
+			.addContainerGap()));
 
 	jPanel4Layout
 		.setVerticalGroup(jPanel4Layout
@@ -420,16 +412,20 @@
 						jPanel4Layout
 							.createParallelGroup(
 								javax.swing.GroupLayout.Alignment.BASELINE)
-					.addGroup(
-						jPanel4Layout
-							.createParallelGroup(
-								javax.swing.GroupLayout.Alignment.BASELINE)
-							.addComponent(programminglanguageLabel,
-								20, 20, 20)
-							.addComponent(programmingLanguage,
-								20, 20, 20)
-						)
-					)
+							.addGroup(
+								jPanel4Layout
+									.createParallelGroup(
+										javax.swing.GroupLayout.Alignment.BASELINE)
+									.addComponent(
+										programminglanguageLabel,
+										20,
+										20,
+										20)
+									.addComponent(
+										programmingLanguage,
+										20,
+										20,
+										20)))
 					.addContainerGap(10, 10)
 					.addComponent(
 						jScrollPane1,
@@ -558,6 +554,7 @@
 	}
 
 	data.setParts(compileQTableDataModel);
+	data.setLanguge(programmingLanguage.getSelectedItem().toString());
 
 	itemModel.updateItemResource(manifestItem, true);
     }
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java	2008-05-18 15:27:58 UTC (rev 144)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java	2008-05-18 17:35:26 UTC (rev 145)
@@ -1,44 +1,47 @@
 package edu.lnu.FireFly.WebEditor.ItemModels.CompileQ;
 
 import java.io.Reader;
+import java.util.Iterator;
 
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+
 import edu.lnu.FireFly.FFManifest.TreeItem;
 import edu.lnu.FireFly.WebEditor.ItemModels.ItemData;
 
 public class CompileQData extends ItemData {
 	@Override
 	public String marshal(TreeItem anItem) {
-		return "";
+		Document doc = DocumentHelper.createDocument();
+		Element root = doc.addElement("CompileQuestion");
+		root.addElement("caption").setText(getCaption());
 
-		//		Document doc = DocumentHelper.createDocument();
-//		Element root = doc.addElement("SimpleQuestion");
-//		root.addElement("caption").setText(getCaption());
-//		root.addElement("question").setText(getQuestion());
-//
-//		root.addElement("ShowOnSummaryPage").setText(
-//				String.valueOf(getShowOnSummaryPage()));
-//
-//		Element ans = root.addElement("answers");
-//
-//		ans.addAttribute("singleVariant", String.valueOf(getAnswers()
-//				.getSingleVariant()));
-//
-//		Iterator<CompileQPart> iter = getAnswers().answers.iterator();
-//
-//		while (iter.hasNext()) {
-//			CompileQPart answer = iter.next();
-//
-//			Element ansEl = ans.addElement("answer");
-//			ansEl
-//					.addAttribute("point", String.valueOf(answer
-//							.getAnswerPoint()));
-//			ansEl.setText(answer.getAnswerText());
-//		}
-//		
-//		return doc.asXML();
+		root.addElement("ShowOnSummaryPage").setText(String.valueOf(getShowOnSummaryPage()));
+
+		Element parts = root.addElement("parts");
+
+		parts.addAttribute("language", String.valueOf(getLanguge()));
+
+		Iterator<CompileQPart> iter = getParts().questionParts.iterator();
+
+		while (iter.hasNext()) {
+			CompileQPart part = iter.next();
+
+			Element partElement = parts.addElement("part");
+			partElement.addAttribute("isAnswer", String.valueOf(part.getPartAttributes().isAnswer()));
+			partElement.addAttribute("isReadOnly", String.valueOf(part.getPartAttributes().isReadOnly()));
+			partElement.addAttribute("isVivsble", String.valueOf(part.getPartAttributes().isVisible()));
+
+			partElement.setText(part.getAnswerText());
+		}
+		
+		return doc.asXML();
 	}
 
 	private String caption = "";
+	private String languge = "Any";
 	
 	public String getCaption() {
 		return caption;
@@ -53,42 +56,40 @@
 
 	@SuppressWarnings("unchecked")
 	public boolean unmarshal(Reader res, TreeItem anItem) {
-//		SAXReader reader = new SAXReader();
-//
-//		Document doc = null;
-//		try {
-//			doc = reader.read(res);
-//
-//			Element root = doc.getRootElement();
-//			Element answers = root.element("answers");
-//
-//			setCaption(root.elementTextTrim("caption"));
-//			setQuestion(root.elementTextTrim("question"));
-//			
-//			boolean showOnSP = Boolean.valueOf(root
-//					.elementTextTrim("ShowOnSummaryPage"));
-//			setShowOnSummaryPage(showOnSP);
-//
-//			getAnswers().setSingleVariant(
-//					answers.attributeValue("singleVariant").equalsIgnoreCase(
-//							"true"));
-//
-//			getAnswers().answers.clear();
-//
-//			Iterator<Element> iter = answers.elementIterator("answer");
-//			while (iter.hasNext()) {
-//				Element answer = iter.next();
-//				CompileQPart ans = new CompileQPart(answer
-//						.getText());
-//				ans.setAnswerPoint(Double.valueOf(answer
-//						.attributeValue("point")));
-//				getAnswers().answers.add(ans);
-//			}
-//		} catch (Exception e) {
-//			e.printStackTrace();
-//			return false;
-//		}
-//
+		SAXReader reader = new SAXReader();
+
+		Document doc = null;
+		try {
+			doc = reader.read(res);
+
+			Element root = doc.getRootElement();
+			Element answers = root.element("parts");
+
+			setCaption(root.elementTextTrim("caption"));
+			
+			boolean showOnSP = Boolean.valueOf(root.elementTextTrim("ShowOnSummaryPage"));
+			setShowOnSummaryPage(showOnSP);
+
+			setLanguge(answers.attributeValue("language"));
+
+			getParts().questionParts.clear();
+
+			Iterator<Element> iter = answers.elementIterator("part");
+			while (iter.hasNext()) {
+				Element partElement = iter.next();
+				CompileQPart part = new CompileQPart(partElement.getText());
+
+				part.getPartAttributes().setAnswer(partElement.attributeValue("isAnswer").equalsIgnoreCase("true"));
+				part.getPartAttributes().setReadOnly(partElement.attributeValue("isReadOnly").equalsIgnoreCase("true"));
+				part.getPartAttributes().setVisible(partElement.attributeValue("isVivsble").equalsIgnoreCase("true"));
+				
+				getParts().questionParts.add(part);
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+			return false;
+		}
+
 		return true;
 	}
 
@@ -99,4 +100,12 @@
 	public void setParts(CompileQPartsTableModel parts) {
 		this.parts = parts;
 	}
+
+	public String getLanguge() {
+	    return languge;
+	}
+
+	public void setLanguge(String languge) {
+	    this.languge = languge;
+	}
 }
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPart.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPart.java	2008-05-18 15:27:58 UTC (rev 144)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPart.java	2008-05-18 17:35:26 UTC (rev 145)
@@ -9,7 +9,6 @@
 	private static final long serialVersionUID = 1L;
 	
 	private String answerText = "";
-	private double answerPoint = 0;
 
 	private PartAttributes partAttributes = new PartAttributes();  
 
@@ -25,18 +24,10 @@
 		this.answerText = answerText;
 	}
 
-	public double getAnswerPoint() {
-		return answerPoint;
-	}
-
 	public String getAnswerText() {
 		return answerText;
 	}
 
-	public void setAnswerPoint(double answerPoint) {
-		this.answerPoint = answerPoint;
-	}
-
 	public void setAnswerText(String answerText) {
 		this.answerText = answerText;
 	}
Modified: WebEditor/template/CompileQModel.conf
===================================================================
--- WebEditor/template/CompileQModel.conf	2008-05-18 15:27:58 UTC (rev 144)
+++ WebEditor/template/CompileQModel.conf	2008-05-18 17:35:26 UTC (rev 145)
@@ -1,10 +1,2 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<SimpleQuestion>
-<caption>New simple question</caption>
-<question>Answer "Yes" to question, please.</question>
-<ShowOnSummaryPage>true</ShowOnSummaryPage>
-<answers singleVariant="false">
-<answer point="0.0">Yes</answer>
-<answer point="1.0">No</answer>
-</answers>
-</SimpleQuestion>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<CompileQuestion><caption>New compile question</caption><ShowOnSummaryPage>false</ShowOnSummaryPage><parts language="null"><part isAnswer="false" isReadOnly="true" isVivsble="true">Please write program.</part><part isAnswer="true" isReadOnly="false" isVivsble="true">...</part></parts></CompileQuestion>
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-18 15:27:56
      
     | 
| Revision: 144
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=144&view=rev
Author:   sem62
Date:     2008-05-18 08:27:58 -0700 (Sun, 18 May 2008)
Log Message:
-----------
deleted unnecessary files
Removed Paths:
-------------
    WebEditor/resources/spaw2/uploads/files/180px-UniwersytetJanaKazimierzaLw?\208?\147_w1.jpg
    WebEditor/resources/spaw2/uploads/files/banner.GIF
Property Changed:
----------------
    WebEditor/
Property changes on: WebEditor
___________________________________________________________________
Name: svn:ignore
   - *.classpath
*.project
   + *.classpath
*.project
.settings
Deleted: WebEditor/resources/spaw2/uploads/files/180px-UniwersytetJanaKazimierzaLw?\208?\147_w1.jpg
===================================================================
(Binary files differ)
Deleted: WebEditor/resources/spaw2/uploads/files/banner.GIF
===================================================================
(Binary files differ)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-18 15:05:01
      
     | 
| Revision: 143
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=143&view=rev
Author:   sem62
Date:     2008-05-18 08:05:01 -0700 (Sun, 18 May 2008)
Log Message:
-----------
Full designed CompileQPropertyDlg
Modified Paths:
--------------
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartsTable.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java
Added Paths:
-----------
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartNumber.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartNumberCellRenderer.java
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java	2008-05-18 13:47:32 UTC (rev 142)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java	2008-05-18 15:05:01 UTC (rev 143)
@@ -4,6 +4,8 @@
 import java.awt.event.ActionListener;
 
 import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.ScrollPaneConstants;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 import javax.swing.table.DefaultTableColumnModel;
@@ -25,7 +27,9 @@
 
     private javax.swing.JCheckBox sameAsTitleCheckBox;
     private javax.swing.JCheckBox oneAnswerCheckBox;
+    private javax.swing.JComboBox programmingLanguage;
     private javax.swing.JLabel titleLabel;
+    private javax.swing.JLabel programminglanguageLabel;
     private javax.swing.JPanel generalPanel;
     private javax.swing.JPanel captionPanel;
     private javax.swing.JPanel partsPanel;
@@ -175,20 +179,29 @@
 		.equals(dlg.captionTextField.getText()));
 
 	dlg.compileQTableDataModel = itemModel.getData(manifestItem).getParts();
+	
+	dlg.programmingLanguage.addItem("Any");
+	dlg.programmingLanguage.addItem("C++");
+	dlg.programmingLanguage.addItem("Pascal");
 
 	dlg.partsTable.setModel(dlg.compileQTableDataModel);
 
-	partsTable.getColumnModel().getColumn(1).setCellEditor(
-		multiLineTableCellEditor);
-	partsTable.getColumnModel().getColumn(2).setCellEditor(
-		partAttributesCellEditor);
-
 	DefaultTableColumnModel columnModel = (DefaultTableColumnModel) dlg.partsTable
 		.getColumnModel();
-	columnModel.getColumn(0).setPreferredWidth(1);
-	columnModel.getColumn(1).setPreferredWidth(300);
-	columnModel.getColumn(2).setPreferredWidth(1);
 
+	columnModel.getColumn(1).setCellEditor(multiLineTableCellEditor);
+	columnModel.getColumn(2).setCellEditor(partAttributesCellEditor);
+
+	columnModel.getColumn(0).setMaxWidth(20);
+	columnModel.getColumn(0).setMinWidth(20);
+	columnModel.getColumn(0).setResizable(false);
+
+	columnModel.getColumn(1).setResizable(true);
+
+	columnModel.getColumn(2).setMaxWidth(100);
+	columnModel.getColumn(2).setMinWidth(100);
+	columnModel.getColumn(2).setResizable(false);
+
 	dlg.titleTextField.selectAll();
     }
 
@@ -206,6 +219,7 @@
 
 	generalPanel = new javax.swing.JPanel();
 	titleLabel = new javax.swing.JLabel();
+	programminglanguageLabel = new javax.swing.JLabel("Programming language:");
 	titleTextField = new javax.swing.JTextField();
 	captionPanel = new javax.swing.JPanel();
 	captionTextField = new javax.swing.JTextField();
@@ -221,6 +235,7 @@
 	editAnswerVariantInHtmlEditor = new JButton("HTML Editor");
 	insertAnswerVariantBtn = new JButton("Insert");
 	deleteAnswerVariantBtn = new JButton("Delete");
+	programmingLanguage = new JComboBox();
 
 	moveDownAnswerVariantBtn = new JButton("Down");
 	moveUpAnswerVariantBtn = new JButton("Up");
@@ -341,7 +356,8 @@
 								captionTextField,
 								javax.swing.GroupLayout.PREFERRED_SIZE,
 								javax.swing.GroupLayout.DEFAULT_SIZE,
-								javax.swing.GroupLayout.PREFERRED_SIZE))
+								javax.swing.GroupLayout.PREFERRED_SIZE
+								))
 					.addContainerGap()));
 
 	oneAnswerCheckBox.setText("Only one correct answer");
@@ -350,25 +366,47 @@
 		.createTitledBorder("Variants of answer"));
 
 	jScrollPane1.setViewportView(partsTable);
+	jScrollPane1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
 
 	javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(
 		partsPanel);
 	partsPanel.setLayout(jPanel4Layout);
-	jPanel4Layout.setHorizontalGroup(jPanel4Layout.createParallelGroup(
-		javax.swing.GroupLayout.Alignment.TRAILING).addGroup(
-		jPanel4Layout.createSequentialGroup().addComponent(
-			moveUpAnswerVariantBtn).addContainerGap(10, 10)
-			.addComponent(moveDownAnswerVariantBtn)
-			.addContainerGap(10, 10).addComponent(
-				insertAnswerVariantBtn).addContainerGap(10, 10)
-			.addComponent(deleteAnswerVariantBtn).addContainerGap(
-				10, 10).addComponent(
-				editAnswerVariantInHtmlEditor)
-			.addContainerGap()).addGroup(
-		jPanel4Layout.createSequentialGroup().addContainerGap()
-			.addComponent(jScrollPane1,
-				javax.swing.GroupLayout.DEFAULT_SIZE, 364,
-				Short.MAX_VALUE).addContainerGap()));
+	jPanel4Layout.setHorizontalGroup(
+		jPanel4Layout
+			.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+        			.addGroup(jPanel4Layout.createSequentialGroup()
+        				.addComponent(moveUpAnswerVariantBtn)
+                			.addContainerGap(10, 10)
+                			.addComponent(moveDownAnswerVariantBtn)
+                			.addContainerGap(10, 10)
+                			.addComponent(insertAnswerVariantBtn)
+                			.addContainerGap(10, 10)
+                			.addComponent(deleteAnswerVariantBtn)
+                			.addContainerGap(10, 10)
+                			.addComponent(editAnswerVariantInHtmlEditor)
+                			.addContainerGap()
+        			)
+                		.addGroup(
+                			jPanel4Layout.createSequentialGroup().addContainerGap()
+                        			.addComponent(jScrollPane1,
+                        				javax.swing.GroupLayout.DEFAULT_SIZE, 364,
+                        				Short.MAX_VALUE)
+                        			.addContainerGap()
+                		)
+                		.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
+                			 jPanel4Layout
+                			 	.createSequentialGroup()
+                			 	.addContainerGap()
+                				.addComponent(programminglanguageLabel, 
+							javax.swing.GroupLayout.PREFERRED_SIZE,
+							javax.swing.GroupLayout.DEFAULT_SIZE,
+							javax.swing.GroupLayout.PREFERRED_SIZE
+                					)
+                				.addContainerGap(10, 10)
+                				.addComponent(programmingLanguage, 118, 118, 118)
+                				.addContainerGap()
+                		)
+	);
 
 	jPanel4Layout
 		.setVerticalGroup(jPanel4Layout
@@ -377,7 +415,22 @@
 			.addGroup(
 				jPanel4Layout
 					.createSequentialGroup()
-					.addContainerGap()
+					.addContainerGap(10, 10)
+					.addGroup(
+						jPanel4Layout
+							.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.BASELINE)
+					.addGroup(
+						jPanel4Layout
+							.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.BASELINE)
+							.addComponent(programminglanguageLabel,
+								20, 20, 20)
+							.addComponent(programmingLanguage,
+								20, 20, 20)
+						)
+					)
+					.addContainerGap(10, 10)
 					.addComponent(
 						jScrollPane1,
 						javax.swing.GroupLayout.DEFAULT_SIZE,
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartNumber.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartNumber.java	                        (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartNumber.java	2008-05-18 15:05:01 UTC (rev 143)
@@ -0,0 +1,21 @@
+package edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ;
+
+public class PartNumber {
+    private int number = 0;
+
+    public PartNumber(){
+	
+    }
+    
+    public PartNumber(int aNumber){
+	number = aNumber;
+    }
+    
+    public int getNumber() {
+        return number;
+    }
+
+    public void setNumber(int number) {
+        this.number = number;
+    }
+}
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartNumberCellRenderer.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartNumberCellRenderer.java	                        (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartNumberCellRenderer.java	2008-05-18 15:05:01 UTC (rev 143)
@@ -0,0 +1,32 @@
+package edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ;
+
+import java.awt.Color;
+import java.awt.Component;
+
+import javax.swing.JLabel;
+import javax.swing.JTable;
+import javax.swing.UIManager;
+import javax.swing.table.TableCellRenderer;
+
+public class PartNumberCellRenderer extends JLabel implements
+	TableCellRenderer {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 1L;
+
+    public PartNumberCellRenderer() {
+	setOpaque(true);
+    }
+
+    public Component getTableCellRendererComponent(JTable table, Object value,
+	    boolean isSelected, boolean hasFocus, int row, int column) {
+
+	this.setBackground((Color)UIManager.getDefaults().get("Label.background"));
+	this.setForeground((Color)UIManager.getDefaults().get("Label.foreground"));
+
+	setText((value == null) ? "" : String.valueOf(((PartNumber)value).getNumber()));
+	return this;
+    }
+}
\ No newline at end of file
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartsTable.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartsTable.java	2008-05-18 13:47:32 UTC (rev 142)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartsTable.java	2008-05-18 15:05:01 UTC (rev 143)
@@ -17,5 +17,6 @@
 
 	setDefaultRenderer(CompileQPart.class, new MultiLineCellRenderer());
 	setDefaultRenderer(PartAttributes.class, new PartAttributesRenderer());
+	setDefaultRenderer(PartNumber.class, new PartNumberCellRenderer());
     }
 }
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java	2008-05-18 13:47:32 UTC (rev 142)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java	2008-05-18 15:05:01 UTC (rev 143)
@@ -5,151 +5,152 @@
 
 import javax.swing.table.DefaultTableModel;
 
+import edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ.PartNumber;
+
 public class CompileQPartsTableModel extends DefaultTableModel {
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 1L;
 
-	public List<CompileQPart> questionParts = new ArrayList<CompileQPart>();
+    public List<CompileQPart> questionParts = new ArrayList<CompileQPart>();
 
-	@Override
-	public Class<?> getColumnClass(int col) {
-		if (col == 1){
-			return CompileQPart.class;
-		}
-
-		if (col == 2){
-			return PartAttributes.class;
-		}
-		
-		return Object.class;
+    @Override
+    public Class<?> getColumnClass(int col) {
+	switch (col) {
+	case 0:
+	    return PartNumber.class;
+	case 1:
+	    return CompileQPart.class;
+	case 2:
+	    return PartAttributes.class;
+	default:
+	    return Object.class;
 	}
+    }
 
-	@Override
-	public int getColumnCount() {
-		return 3;
+    @Override
+    public int getColumnCount() {
+	return 3;
+    }
+
+    @Override
+    public String getColumnName(int arg0) {
+	switch (arg0) {
+	case 0:
+	    return "#";
+	case 1:
+	    return "Part content";
+	default:
+	    return "Options";
 	}
+    }
 
-	@Override
-	public String getColumnName(int arg0) {
-		switch (arg0) {
-		case 0:
-			return "#";
-		case 1:
-			return "Part content";
-		default:
-			return "Options";
-		}
+    @Override
+    public int getRowCount() {
+
+	if (questionParts == null) {
+	    return 0;
 	}
 
-	@Override
-	public int getRowCount() {
+	int answersCount = questionParts.size();
 
-		if (questionParts == null) {
-			return 0;
-		}
+	return answersCount > 0 ? answersCount : 1;
+    }
 
-		int answersCount = questionParts.size();
-		
-		
-		
-		return answersCount > 0 ? answersCount : 1;
+    @Override
+    public Object getValueAt(int row, int col) {
+	if (row == questionParts.size()) {
+	    return null;
 	}
 
-	@Override
-	public Object getValueAt(int row, int col) {
-		if (row == questionParts.size()) {
-			return null;
-		}
+	switch (col) {
+	case 0:
+	    return new PartNumber(row + 1);
+	case 1:
+	    return questionParts.get(row);
+	case 2:
+	    return questionParts.get(row).getPartAttributes();
+	default:
+	    return null;
+	}
+    }
 
-		switch (col) {
-		case 0:
-			return row + 1;
-		case 1:
-			return questionParts.get(row);
-		case 2:
-			return questionParts.get(row).getPartAttributes();
-		default:
-			return null;
-		}
+    @Override
+    public boolean isCellEditable(int row, int col) {
+	switch (col) {
+	case 0:
+	    return false;
+	case 1:
+	    return true;
+	case 2:
+	    return true;
+	default:
+	    return false;
 	}
+    }
 
-	@Override
-	public boolean isCellEditable(int row, int col) {
-		switch (col){
-		case 0:
-			return false;
-		case 1:
-			return true;
-		case 2:
-			return true;
-		default:
-			return false;
-		}
+    @Override
+    public void setValueAt(Object value, int row, int col) {
+	if (row == questionParts.size()) {
+	    questionParts.add(new CompileQPart(""));
 	}
 
-	@Override
-	public void setValueAt(Object value, int row, int col) {
-		if (row == questionParts.size()) {
-			questionParts.add(new CompileQPart(""));
-		}
+	String newValue = value.toString();
 
-		String newValue = value.toString();
+	switch (col) {
+	case 1:
+	    questionParts.get(row).setAnswerText(newValue);
+	    break;
+	case 2:
+	    questionParts.get(row).setPartAttributes((PartAttributes) value);
+	    break;
+	}
 
-		switch (col) {
-		case 1:
-			questionParts.get(row).setAnswerText(newValue);
-			break;
-		case 2:
-			questionParts.get(row).setPartAttributes((PartAttributes)value);
-			break;
-		}
+	fireTableRowsUpdated(row, row);
+    }
 
-		fireTableRowsUpdated(row, row);
+    public void deleteRow(int selectedRow) {
+	if (selectedRow < questionParts.size() && selectedRow >= 0) {
+	    questionParts.remove(selectedRow);
+	    fireTableRowsDeleted(selectedRow, selectedRow);
 	}
+    }
 
-	public void deleteRow(int selectedRow) {
-		if (selectedRow < questionParts.size() && selectedRow >= 0) {
-			questionParts.remove(selectedRow);
-			fireTableRowsDeleted(selectedRow, selectedRow);
-		}
+    public void insertRow(int selectedRow) {
+	if (selectedRow >= questionParts.size()) {
+	    selectedRow--;
 	}
 
-	public void insertRow(int selectedRow) {
-		if (selectedRow >= questionParts.size()){
-			selectedRow--;
-		}
-		
-		questionParts.add(selectedRow + 1, new CompileQPart(""));
-		fireTableRowsInserted(selectedRow + 1, selectedRow + 1);
+	questionParts.add(selectedRow + 1, new CompileQPart(""));
+	fireTableRowsInserted(selectedRow + 1, selectedRow + 1);
+    }
+
+    public boolean moveUp(int selectedRow) {
+	if (selectedRow < 1 || selectedRow >= questionParts.size()) {
+	    return false;
 	}
 
-	public boolean moveUp(int selectedRow) {
-		if (selectedRow < 1 || selectedRow >= questionParts.size()){
-			return false;
-		}
-		
-		CompileQPart answer = questionParts.get(selectedRow);
-		questionParts.set(selectedRow, questionParts.get(selectedRow - 1));
-		questionParts.set(selectedRow - 1, answer);
-		
-		fireTableRowsUpdated(selectedRow - 1, selectedRow);
-		
-		return true;
+	CompileQPart answer = questionParts.get(selectedRow);
+	questionParts.set(selectedRow, questionParts.get(selectedRow - 1));
+	questionParts.set(selectedRow - 1, answer);
+
+	fireTableRowsUpdated(selectedRow - 1, selectedRow);
+
+	return true;
+    }
+
+    public boolean moveDown(int selectedRow) {
+	if (selectedRow < 0 || selectedRow >= questionParts.size() - 1) {
+	    return false;
 	}
 
-	public boolean moveDown(int selectedRow) {
-		if (selectedRow < 0 || selectedRow >= questionParts.size() - 1){
-			return false;
-		}
-		
-		CompileQPart answer = questionParts.get(selectedRow);
-		questionParts.set(selectedRow, questionParts.get(selectedRow + 1));
-		questionParts.set(selectedRow + 1, answer);
-		
-		fireTableRowsUpdated(selectedRow + 1, selectedRow);
-		
-		return true;
-	}
+	CompileQPart answer = questionParts.get(selectedRow);
+	questionParts.set(selectedRow, questionParts.get(selectedRow + 1));
+	questionParts.set(selectedRow + 1, answer);
+
+	fireTableRowsUpdated(selectedRow + 1, selectedRow);
+
+	return true;
+    }
 }
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-18 13:47:27
      
     | 
| Revision: 142
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=142&view=rev
Author:   sem62
Date:     2008-05-18 06:47:32 -0700 (Sun, 18 May 2008)
Log Message:
-----------
fixed bugs with table
Modified Paths:
--------------
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java	2008-05-18 11:46:28 UTC (rev 141)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java	2008-05-18 13:47:32 UTC (rev 142)
@@ -7,6 +7,7 @@
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 import javax.swing.table.DefaultTableColumnModel;
+import javax.swing.table.TableCellEditor;
 
 import edu.lnu.FireFly.WebEditor.GUI.Dialogs.PropertyDlg;
 import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.CompileQData;
@@ -18,479 +19,505 @@
  * @author Yura
  */
 public class CompileQPropertiestsDlg extends PropertyDlg implements
-		ActionListener, ChangeListener {
+	ActionListener, ChangeListener {
 
-	private static final long serialVersionUID = 1961383080461718171L;
+    private static final long serialVersionUID = 1961383080461718171L;
 
-	private javax.swing.JCheckBox sameAsTitleCheckBox;
-	private javax.swing.JCheckBox oneAnswerCheckBox;
-	private javax.swing.JLabel titleLabel;
-	private javax.swing.JPanel generalPanel;
-	private javax.swing.JPanel captionPanel;
-	private javax.swing.JPanel partsPanel;
-	private javax.swing.JScrollPane jScrollPane1;
-	private PartsTable partsTable;
-	private javax.swing.JTextField titleTextField;
-	private javax.swing.JTextField captionTextField;
-	private javax.swing.JTextField questionTextField;
-	private javax.swing.JButton editCaptionInHtmlBtn;
-	private javax.swing.JButton editQuestionInHtmlBtn;
-	private javax.swing.JButton editAnswerVariantInHtmlEditor;
-	private javax.swing.JButton insertAnswerVariantBtn;
-	private javax.swing.JButton deleteAnswerVariantBtn;
-	private javax.swing.JButton moveUpAnswerVariantBtn;
-	private javax.swing.JButton moveDownAnswerVariantBtn;
-	private CompileQPartsTableModel simpleQuestionAnswersDataModel;
+    private javax.swing.JCheckBox sameAsTitleCheckBox;
+    private javax.swing.JCheckBox oneAnswerCheckBox;
+    private javax.swing.JLabel titleLabel;
+    private javax.swing.JPanel generalPanel;
+    private javax.swing.JPanel captionPanel;
+    private javax.swing.JPanel partsPanel;
+    private javax.swing.JScrollPane jScrollPane1;
+    private PartsTable partsTable;
+    private javax.swing.JTextField titleTextField;
+    private javax.swing.JTextField captionTextField;
+    private javax.swing.JTextField questionTextField;
+    private javax.swing.JButton editCaptionInHtmlBtn;
+    private javax.swing.JButton editQuestionInHtmlBtn;
+    private javax.swing.JButton editAnswerVariantInHtmlEditor;
+    private javax.swing.JButton insertAnswerVariantBtn;
+    private javax.swing.JButton deleteAnswerVariantBtn;
+    private javax.swing.JButton moveUpAnswerVariantBtn;
+    private javax.swing.JButton moveDownAnswerVariantBtn;
+    private CompileQPartsTableModel compileQTableDataModel;
 
-	private javax.swing.JTextField currentAnswerVariant;
+    private javax.swing.JTextField currentAnswerVariant;
 
-	public CompileQPropertiestsDlg() {
-		obj = this;
+    private MultiLineTableCellEditor multiLineTableCellEditor = new MultiLineTableCellEditor();
+    private PartAttributesCellEditor partAttributesCellEditor = new PartAttributesCellEditor();
 
-		initComponents();
+    public CompileQPropertiestsDlg() {
+	obj = this;
+
+	initComponents();
+    }
+
+    @Override
+    public void actionPerformed(ActionEvent arg0) {
+	super.actionPerformed(arg0);
+
+	if (arg0.getSource() == editQuestionInHtmlBtn) {
+	    editTextFieldInHtmlEditor(questionTextField);
 	}
 
-	@Override
-	public void actionPerformed(ActionEvent arg0) {
-		super.actionPerformed(arg0);
+	if (arg0.getSource() == editCaptionInHtmlBtn) {
+	    editTextFieldInHtmlEditor(captionTextField);
+	}
 
-		if (arg0.getSource() == editQuestionInHtmlBtn) {
-			editTextFieldInHtmlEditor(questionTextField);
-		}
+	if (arg0.getSource() == editAnswerVariantInHtmlEditor) {
+	    int selectedRow = partsTable.getSelectedRow();
 
-		if (arg0.getSource() == editCaptionInHtmlBtn) {
-			editTextFieldInHtmlEditor(captionTextField);
-		}
+	    if (selectedRow < 0) {
+		return;
+	    }
 
-		if (arg0.getSource() == editAnswerVariantInHtmlEditor) {
-			int selectedRow = partsTable.getSelectedRow();
+	    stopCellEditing();
+	    String text = partsTable.getModel().getValueAt(selectedRow, 1)
+		    .toString();
 
-			if (selectedRow < 0) {
-				return;
-			}
+	    currentAnswerVariant.setText(text);
 
-			String text = partsTable.getModel().getValueAt(selectedRow, 1)
-					.toString();
+	    editTextFieldInHtmlEditor(currentAnswerVariant);
+	}
 
-			currentAnswerVariant.setText(text);
+	if (arg0.getSource() == insertAnswerVariantBtn) {
+	    int selectedRow = partsTable.getSelectedRow();
 
-			editTextFieldInHtmlEditor(currentAnswerVariant);
-		}
+	    if (selectedRow < 0) {
+		return;
+	    }
 
-		if (arg0.getSource() == insertAnswerVariantBtn) {
-			int selectedRow = partsTable.getSelectedRow();
+	    stopCellEditing();
+	    compileQTableDataModel.insertRow(selectedRow);
+	    partsTable.getSelectionModel().setSelectionInterval(
+		    selectedRow + 1, selectedRow + 1);
+	}
 
-			if (selectedRow < 0) {
-				return;
-			}
+	if (arg0.getSource() == deleteAnswerVariantBtn) {
+	    int selectedRow = partsTable.getSelectedRow();
 
-			simpleQuestionAnswersDataModel.insertRow(selectedRow);
-			partsTable.getSelectionModel().setSelectionInterval(selectedRow + 1, selectedRow + 1);
-		}
+	    if (selectedRow < 0) {
+		return;
+	    }
 
-		if (arg0.getSource() == deleteAnswerVariantBtn) {
-			int selectedRow = partsTable.getSelectedRow();
+	    stopCellEditing();
+	    compileQTableDataModel.deleteRow(selectedRow);
 
-			if (selectedRow < 0) {
-				return;
-			}
+	    if (selectedRow >= compileQTableDataModel.getRowCount()) {
+		selectedRow--;
+	    }
 
-			simpleQuestionAnswersDataModel.deleteRow(selectedRow);
-			
-			if (selectedRow >= simpleQuestionAnswersDataModel.getRowCount()){
-				selectedRow--;
-			}
-			
-			partsTable.getSelectionModel().setSelectionInterval(selectedRow,
-					selectedRow);
-		}
-		if (arg0.getSource() == moveUpAnswerVariantBtn) {
-			int selectedRow = partsTable.getSelectedRow();
+	    partsTable.getSelectionModel().setSelectionInterval(selectedRow,
+		    selectedRow);
+	}
+	if (arg0.getSource() == moveUpAnswerVariantBtn) {
+	    int selectedRow = partsTable.getSelectedRow();
 
-			if (selectedRow < 0) {
-				return;
-			}
+	    if (selectedRow < 0) {
+		return;
+	    }
 
-			if (simpleQuestionAnswersDataModel.moveUp(selectedRow)){
-				partsTable.getSelectionModel().setSelectionInterval(selectedRow - 1, selectedRow - 1);
-			}
-		}
+	    stopCellEditing();
+	    if (compileQTableDataModel.moveUp(selectedRow)) {
+		partsTable.getSelectionModel().setSelectionInterval(
+			selectedRow - 1, selectedRow - 1);
+	    }
+	}
 
-		if (arg0.getSource() == moveDownAnswerVariantBtn) {
-			int selectedRow = partsTable.getSelectedRow();
+	if (arg0.getSource() == moveDownAnswerVariantBtn) {
+	    int selectedRow = partsTable.getSelectedRow();
 
-			if (selectedRow < 0) {
-				return;
-			}
+	    if (selectedRow < 0) {
+		return;
+	    }
 
-			if (simpleQuestionAnswersDataModel.moveDown(selectedRow)){
-				partsTable.getSelectionModel().setSelectionInterval(selectedRow + 1, selectedRow+1);
-			}
+	    stopCellEditing();
+	    if (compileQTableDataModel.moveDown(selectedRow)) {
+		partsTable.getSelectionModel().setSelectionInterval(
+			selectedRow + 1, selectedRow + 1);
+	    }
+	}
+    }
+
+    public boolean stopCellEditing() {
+	try {
+	    int column = partsTable.getEditingColumn();
+	    if (column > -1) {
+		TableCellEditor cellEditor = partsTable.getColumnModel()
+			.getColumn(column).getCellEditor();
+		if (cellEditor == null) {
+		    cellEditor = partsTable.getDefaultEditor(partsTable
+			    .getColumnClass(column));
 		}
+
+		if (cellEditor != null) {
+		    cellEditor.stopCellEditing();
+		}
+	    }
+	} catch (Exception e) {
+	    return false;
 	}
+	return true;
+    }
 
-	@Override
-	protected void fillFields() {
-		CompileQPropertiestsDlg dlg = (CompileQPropertiestsDlg) obj;
-		dlg.titleTextField.setText(manifestItem.getTitle());
+    @Override
+    protected void fillFields() {
+	CompileQPropertiestsDlg dlg = (CompileQPropertiestsDlg) obj;
+	dlg.titleTextField.setText(manifestItem.getTitle());
 
-		CompileQModel itemModel = new CompileQModel();
+	CompileQModel itemModel = new CompileQModel();
 
-//		dlg.captionTextField.setText(itemModel.getData(manifestItem)
-//				.getCaption());
-		dlg.sameAsTitleCheckBox.setSelected(dlg.titleTextField.getText()
-				.equals(dlg.captionTextField.getText()));
+	// dlg.captionTextField.setText(itemModel.getData(manifestItem)
+	// .getCaption());
+	dlg.sameAsTitleCheckBox.setSelected(dlg.titleTextField.getText()
+		.equals(dlg.captionTextField.getText()));
 
-		dlg.simpleQuestionAnswersDataModel = itemModel.getData(manifestItem)
-				.getParts();
-		
-		dlg.partsTable.setModel(dlg.simpleQuestionAnswersDataModel);
+	dlg.compileQTableDataModel = itemModel.getData(manifestItem).getParts();
 
-		partsTable.getColumnModel().getColumn(1).setCellEditor(new MultiLineTableCellEditor());
-		partsTable.getColumnModel().getColumn(2).setCellEditor(new PartAttributesCellEditor());
+	dlg.partsTable.setModel(dlg.compileQTableDataModel);
 
-		DefaultTableColumnModel columnModel = (DefaultTableColumnModel) dlg.partsTable
-				.getColumnModel();
-		columnModel.getColumn(0).setPreferredWidth(1);
-		columnModel.getColumn(1).setPreferredWidth(300);
-		columnModel.getColumn(2).setPreferredWidth(1);
+	partsTable.getColumnModel().getColumn(1).setCellEditor(
+		multiLineTableCellEditor);
+	partsTable.getColumnModel().getColumn(2).setCellEditor(
+		partAttributesCellEditor);
 
-		dlg.titleTextField.selectAll();
-	}
+	DefaultTableColumnModel columnModel = (DefaultTableColumnModel) dlg.partsTable
+		.getColumnModel();
+	columnModel.getColumn(0).setPreferredWidth(1);
+	columnModel.getColumn(1).setPreferredWidth(300);
+	columnModel.getColumn(2).setPreferredWidth(1);
 
-	@Override
-	public void editedHtmlTextWasSet() {
-		super.editedHtmlTextWasSet();
+	dlg.titleTextField.selectAll();
+    }
 
-		String text = currentAnswerVariant.getText();
-		int selectedRow = partsTable.getSelectedRow();
-		partsTable.getModel().setValueAt(text, selectedRow, 1);
-	}
+    @Override
+    public void editedHtmlTextWasSet() {
+	super.editedHtmlTextWasSet();
 
-	private void initComponents() {
-		setTitle("Propertiests...");
+	String text = currentAnswerVariant.getText();
+	int selectedRow = partsTable.getSelectedRow();
+	partsTable.getModel().setValueAt(text, selectedRow, 1);
+    }
 
-		generalPanel = new javax.swing.JPanel();
-		titleLabel = new javax.swing.JLabel();
-		titleTextField = new javax.swing.JTextField();
-		captionPanel = new javax.swing.JPanel();
-		captionTextField = new javax.swing.JTextField();
-		sameAsTitleCheckBox = new javax.swing.JCheckBox();
-		questionTextField = new javax.swing.JTextField();
-		oneAnswerCheckBox = new javax.swing.JCheckBox();
-		partsPanel = new javax.swing.JPanel();
-		jScrollPane1 = new javax.swing.JScrollPane();
-		cancelButton = new javax.swing.JButton("Cancel");
-		okButton = new javax.swing.JButton("Ok");
-		editCaptionInHtmlBtn = new JButton("...");
-		editQuestionInHtmlBtn = new JButton("...");
-		editAnswerVariantInHtmlEditor = new JButton("HTML Editor");
-		insertAnswerVariantBtn = new JButton("Insert");
-		deleteAnswerVariantBtn = new JButton("Delete");
+    private void initComponents() {
+	setTitle("Propertiests...");
 
-		moveDownAnswerVariantBtn = new JButton("Down");
-		moveUpAnswerVariantBtn = new JButton("Up");
+	generalPanel = new javax.swing.JPanel();
+	titleLabel = new javax.swing.JLabel();
+	titleTextField = new javax.swing.JTextField();
+	captionPanel = new javax.swing.JPanel();
+	captionTextField = new javax.swing.JTextField();
+	sameAsTitleCheckBox = new javax.swing.JCheckBox();
+	questionTextField = new javax.swing.JTextField();
+	oneAnswerCheckBox = new javax.swing.JCheckBox();
+	partsPanel = new javax.swing.JPanel();
+	jScrollPane1 = new javax.swing.JScrollPane();
+	cancelButton = new javax.swing.JButton("Cancel");
+	okButton = new javax.swing.JButton("Ok");
+	editCaptionInHtmlBtn = new JButton("...");
+	editQuestionInHtmlBtn = new JButton("...");
+	editAnswerVariantInHtmlEditor = new JButton("HTML Editor");
+	insertAnswerVariantBtn = new JButton("Insert");
+	deleteAnswerVariantBtn = new JButton("Delete");
 
-		insertAnswerVariantBtn.addActionListener(this);
-		deleteAnswerVariantBtn.addActionListener(this);
-		moveDownAnswerVariantBtn.addActionListener(this);
-		moveUpAnswerVariantBtn.addActionListener(this);
+	moveDownAnswerVariantBtn = new JButton("Down");
+	moveUpAnswerVariantBtn = new JButton("Up");
 
-		currentAnswerVariant = new javax.swing.JTextField();
-		captionTextField.addActionListener(this);
+	insertAnswerVariantBtn.addActionListener(this);
+	deleteAnswerVariantBtn.addActionListener(this);
+	moveDownAnswerVariantBtn.addActionListener(this);
+	moveUpAnswerVariantBtn.addActionListener(this);
 
-		cancelButton.addActionListener(this);
-		okButton.addActionListener(this);
-		sameAsTitleCheckBox.addChangeListener(this);
-		oneAnswerCheckBox.addChangeListener(this);
-		editCaptionInHtmlBtn.addActionListener(this);
-		editQuestionInHtmlBtn.addActionListener(this);
-		editAnswerVariantInHtmlEditor.addActionListener(this);
+	currentAnswerVariant = new javax.swing.JTextField();
+	captionTextField.addActionListener(this);
 
-		partsTable = new PartsTable();
+	cancelButton.addActionListener(this);
+	okButton.addActionListener(this);
+	sameAsTitleCheckBox.addChangeListener(this);
+	oneAnswerCheckBox.addChangeListener(this);
+	editCaptionInHtmlBtn.addActionListener(this);
+	editQuestionInHtmlBtn.addActionListener(this);
+	editAnswerVariantInHtmlEditor.addActionListener(this);
 
-		setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);
+	partsTable = new PartsTable();
 
-		generalPanel.setBorder(javax.swing.BorderFactory
-				.createTitledBorder("General"));
-		titleLabel.setText("Title");
+	setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);
 
-		javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(
-				generalPanel);
-		generalPanel.setLayout(jPanel1Layout);
-		jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(
-				javax.swing.GroupLayout.Alignment.LEADING).addGroup(
-				jPanel1Layout.createSequentialGroup().addContainerGap()
-						.addComponent(titleLabel)).addGroup(
-				jPanel1Layout.createSequentialGroup().addContainerGap()
-						.addComponent(titleTextField,
-								javax.swing.GroupLayout.DEFAULT_SIZE, 364,
-								Short.MAX_VALUE).addContainerGap()));
-		jPanel1Layout
-				.setVerticalGroup(jPanel1Layout
-						.createParallelGroup(
-								javax.swing.GroupLayout.Alignment.LEADING)
-						.addGroup(
-								jPanel1Layout
-										.createSequentialGroup()
-										.addComponent(titleLabel)
-										.addPreferredGap(
-												javax.swing.LayoutStyle.ComponentPlacement.RELATED,
-												javax.swing.GroupLayout.DEFAULT_SIZE,
-												Short.MAX_VALUE)
-										.addComponent(
-												titleTextField,
-												javax.swing.GroupLayout.PREFERRED_SIZE,
-												javax.swing.GroupLayout.DEFAULT_SIZE,
-												javax.swing.GroupLayout.PREFERRED_SIZE)
-										.addContainerGap()));
+	generalPanel.setBorder(javax.swing.BorderFactory
+		.createTitledBorder("General"));
+	titleLabel.setText("Title");
 
-		captionPanel.setBorder(javax.swing.BorderFactory
-				.createTitledBorder("Caption"));
-		sameAsTitleCheckBox.setText("Some as the title");
+	javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(
+		generalPanel);
+	generalPanel.setLayout(jPanel1Layout);
+	jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(
+		javax.swing.GroupLayout.Alignment.LEADING).addGroup(
+		jPanel1Layout.createSequentialGroup().addContainerGap()
+			.addComponent(titleLabel)).addGroup(
+		jPanel1Layout.createSequentialGroup().addContainerGap()
+			.addComponent(titleTextField,
+				javax.swing.GroupLayout.DEFAULT_SIZE, 364,
+				Short.MAX_VALUE).addContainerGap()));
+	jPanel1Layout
+		.setVerticalGroup(jPanel1Layout
+			.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING)
+			.addGroup(
+				jPanel1Layout
+					.createSequentialGroup()
+					.addComponent(titleLabel)
+					.addPreferredGap(
+						javax.swing.LayoutStyle.ComponentPlacement.RELATED,
+						javax.swing.GroupLayout.DEFAULT_SIZE,
+						Short.MAX_VALUE)
+					.addComponent(
+						titleTextField,
+						javax.swing.GroupLayout.PREFERRED_SIZE,
+						javax.swing.GroupLayout.DEFAULT_SIZE,
+						javax.swing.GroupLayout.PREFERRED_SIZE)
+					.addContainerGap()));
 
-		javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(
-				captionPanel);
-		captionPanel.setLayout(jPanel2Layout);
-		jPanel2Layout
-				.setHorizontalGroup(jPanel2Layout
-						.createParallelGroup(
+	captionPanel.setBorder(javax.swing.BorderFactory
+		.createTitledBorder("Caption"));
+	sameAsTitleCheckBox.setText("Some as the title");
+
+	javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(
+		captionPanel);
+	captionPanel.setLayout(jPanel2Layout);
+	jPanel2Layout
+		.setHorizontalGroup(jPanel2Layout
+			.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING)
+			.addGroup(
+				jPanel2Layout
+					.createSequentialGroup()
+					.addContainerGap()
+					.addGroup(
+						jPanel2Layout
+							.createParallelGroup(
 								javax.swing.GroupLayout.Alignment.LEADING)
-						.addGroup(
-								jPanel2Layout
-										.createSequentialGroup()
-										.addContainerGap()
-										.addGroup(
-												jPanel2Layout
-														.createParallelGroup(
-																javax.swing.GroupLayout.Alignment.LEADING)
-														.addComponent(
-																sameAsTitleCheckBox))
-										.addContainerGap(283, Short.MAX_VALUE))
-						.addGroup(
-								javax.swing.GroupLayout.Alignment.TRAILING,
-								jPanel2Layout
-										.createSequentialGroup()
-										.addContainerGap()
-										.addComponent(
-												captionTextField,
-												javax.swing.GroupLayout.DEFAULT_SIZE,
-												370, Short.MAX_VALUE)
-										.addPreferredGap(
-												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-										.addComponent(
-												editCaptionInHtmlBtn,
-												javax.swing.GroupLayout.PREFERRED_SIZE,
-												30,
-												javax.swing.GroupLayout.PREFERRED_SIZE)
-										.addContainerGap()));
-		jPanel2Layout
-				.setVerticalGroup(jPanel2Layout
-						.createParallelGroup(
-								javax.swing.GroupLayout.Alignment.LEADING)
-						.addGroup(
-								jPanel2Layout
-										.createSequentialGroup()
-										.addComponent(sameAsTitleCheckBox)
-										.addPreferredGap(
-												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-										.addGroup(
-												jPanel2Layout
-														.createParallelGroup(
-																javax.swing.GroupLayout.Alignment.BASELINE)
-														.addComponent(
-																editCaptionInHtmlBtn,
-																javax.swing.GroupLayout.PREFERRED_SIZE,
-																20,
-																javax.swing.GroupLayout.PREFERRED_SIZE)
-														.addComponent(
-																captionTextField,
-																javax.swing.GroupLayout.PREFERRED_SIZE,
-																javax.swing.GroupLayout.DEFAULT_SIZE,
-																javax.swing.GroupLayout.PREFERRED_SIZE))
-										.addContainerGap()));
+							.addComponent(
+								sameAsTitleCheckBox))
+					.addContainerGap(283, Short.MAX_VALUE))
+			.addGroup(
+				javax.swing.GroupLayout.Alignment.TRAILING,
+				jPanel2Layout
+					.createSequentialGroup()
+					.addContainerGap()
+					.addComponent(
+						captionTextField,
+						javax.swing.GroupLayout.DEFAULT_SIZE,
+						370, Short.MAX_VALUE)
+					.addPreferredGap(
+						javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+					.addComponent(
+						editCaptionInHtmlBtn,
+						javax.swing.GroupLayout.PREFERRED_SIZE,
+						30,
+						javax.swing.GroupLayout.PREFERRED_SIZE)
+					.addContainerGap()));
+	jPanel2Layout
+		.setVerticalGroup(jPanel2Layout
+			.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING)
+			.addGroup(
+				jPanel2Layout
+					.createSequentialGroup()
+					.addComponent(sameAsTitleCheckBox)
+					.addPreferredGap(
+						javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+					.addGroup(
+						jPanel2Layout
+							.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.BASELINE)
+							.addComponent(
+								editCaptionInHtmlBtn,
+								javax.swing.GroupLayout.PREFERRED_SIZE,
+								20,
+								javax.swing.GroupLayout.PREFERRED_SIZE)
+							.addComponent(
+								captionTextField,
+								javax.swing.GroupLayout.PREFERRED_SIZE,
+								javax.swing.GroupLayout.DEFAULT_SIZE,
+								javax.swing.GroupLayout.PREFERRED_SIZE))
+					.addContainerGap()));
 
-		oneAnswerCheckBox.setText("Only one correct answer");
+	oneAnswerCheckBox.setText("Only one correct answer");
 
-		partsPanel.setBorder(javax.swing.BorderFactory
-				.createTitledBorder("Variants of answer"));
+	partsPanel.setBorder(javax.swing.BorderFactory
+		.createTitledBorder("Variants of answer"));
 
-		jScrollPane1.setViewportView(partsTable);
+	jScrollPane1.setViewportView(partsTable);
 
-		javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(
-				partsPanel);
-		partsPanel.setLayout(jPanel4Layout);
-		jPanel4Layout.setHorizontalGroup(jPanel4Layout.createParallelGroup(
-				javax.swing.GroupLayout.Alignment.TRAILING).addGroup(
-				jPanel4Layout.createSequentialGroup()
-					.addComponent(moveUpAnswerVariantBtn)
+	javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(
+		partsPanel);
+	partsPanel.setLayout(jPanel4Layout);
+	jPanel4Layout.setHorizontalGroup(jPanel4Layout.createParallelGroup(
+		javax.swing.GroupLayout.Alignment.TRAILING).addGroup(
+		jPanel4Layout.createSequentialGroup().addComponent(
+			moveUpAnswerVariantBtn).addContainerGap(10, 10)
+			.addComponent(moveDownAnswerVariantBtn)
+			.addContainerGap(10, 10).addComponent(
+				insertAnswerVariantBtn).addContainerGap(10, 10)
+			.addComponent(deleteAnswerVariantBtn).addContainerGap(
+				10, 10).addComponent(
+				editAnswerVariantInHtmlEditor)
+			.addContainerGap()).addGroup(
+		jPanel4Layout.createSequentialGroup().addContainerGap()
+			.addComponent(jScrollPane1,
+				javax.swing.GroupLayout.DEFAULT_SIZE, 364,
+				Short.MAX_VALUE).addContainerGap()));
+
+	jPanel4Layout
+		.setVerticalGroup(jPanel4Layout
+			.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING)
+			.addGroup(
+				jPanel4Layout
+					.createSequentialGroup()
+					.addContainerGap()
+					.addComponent(
+						jScrollPane1,
+						javax.swing.GroupLayout.DEFAULT_SIZE,
+						111, Short.MAX_VALUE)
 					.addContainerGap(10, 10)
-					.addComponent(moveDownAnswerVariantBtn)
-					.addContainerGap(10, 10)
-					.addComponent(insertAnswerVariantBtn)
-					.addContainerGap(10, 10)
-					.addComponent(deleteAnswerVariantBtn)
-					.addContainerGap(10, 10)
-					.addComponent(
-								editAnswerVariantInHtmlEditor)
-						.addContainerGap()).addGroup(
-				jPanel4Layout.createSequentialGroup().addContainerGap()
-						.addComponent(jScrollPane1,
-								javax.swing.GroupLayout.DEFAULT_SIZE, 364,
-								Short.MAX_VALUE).addContainerGap()));
+					.addGroup(
+						jPanel4Layout
+							.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.BASELINE)
+							.addComponent(
+								moveUpAnswerVariantBtn,
+								20, 20, 20)
+							.addComponent(
+								moveDownAnswerVariantBtn,
+								20, 20, 20)
+							.addComponent(
+								insertAnswerVariantBtn,
+								20, 20, 20)
+							.addComponent(
+								deleteAnswerVariantBtn,
+								20, 20, 20)
+							.addComponent(
+								editAnswerVariantInHtmlEditor,
+								20, 20, 20))
+					.addContainerGap()));
 
-		jPanel4Layout
-				.setVerticalGroup(jPanel4Layout
-						.createParallelGroup(
+	javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
+		getContentPane());
+	getContentPane().setLayout(layout);
+	layout
+		.setHorizontalGroup(layout
+			.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING)
+			.addGroup(
+				layout
+					.createSequentialGroup()
+					.addContainerGap()
+					.addGroup(
+						layout
+							.createParallelGroup(
 								javax.swing.GroupLayout.Alignment.LEADING)
-						.addGroup(
-								jPanel4Layout
-										.createSequentialGroup()
-										.addContainerGap()
-										.addComponent(
-												jScrollPane1,
-												javax.swing.GroupLayout.DEFAULT_SIZE,
-												111, Short.MAX_VALUE)
-										.addContainerGap(10, 10)
-										.addGroup(
-												jPanel4Layout
-														.createParallelGroup(
-																javax.swing.GroupLayout.Alignment.BASELINE)
-														.addComponent(
-																moveUpAnswerVariantBtn,
-																20, 20, 20)
-														.addComponent(
-																moveDownAnswerVariantBtn,
-																20, 20, 20)
-														.addComponent(
-																insertAnswerVariantBtn,
-																20, 20, 20)
-														.addComponent(
-																deleteAnswerVariantBtn,
-																20, 20, 20)
-														.addComponent(
-																editAnswerVariantInHtmlEditor,
-																20, 20, 20))
-										.addContainerGap()));
-
-		javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
-				getContentPane());
-		getContentPane().setLayout(layout);
-		layout
-				.setHorizontalGroup(layout
-						.createParallelGroup(
-								javax.swing.GroupLayout.Alignment.LEADING)
-						.addGroup(
+							.addComponent(
+								partsPanel,
+								600, 600,
+								Short.MAX_VALUE)
+							.addComponent(
+								captionPanel,
+								javax.swing.GroupLayout.DEFAULT_SIZE,
+								javax.swing.GroupLayout.DEFAULT_SIZE,
+								Short.MAX_VALUE)
+							.addComponent(
+								generalPanel,
+								javax.swing.GroupLayout.DEFAULT_SIZE,
+								javax.swing.GroupLayout.DEFAULT_SIZE,
+								Short.MAX_VALUE)
+							.addGroup(
+								javax.swing.GroupLayout.Alignment.TRAILING,
 								layout
-										.createSequentialGroup()
-										.addContainerGap()
-										.addGroup(
-												layout
-														.createParallelGroup(
-																javax.swing.GroupLayout.Alignment.LEADING)
-														.addComponent(
-																partsPanel,
-																600,
-																600,
-																Short.MAX_VALUE)
-														.addComponent(
-																captionPanel,
-																javax.swing.GroupLayout.DEFAULT_SIZE,
-																javax.swing.GroupLayout.DEFAULT_SIZE,
-																Short.MAX_VALUE)
-														.addComponent(
-																generalPanel,
-																javax.swing.GroupLayout.DEFAULT_SIZE,
-																javax.swing.GroupLayout.DEFAULT_SIZE,
-																Short.MAX_VALUE)
-														.addGroup(
-																javax.swing.GroupLayout.Alignment.TRAILING,
-																layout
-																		.createSequentialGroup()
-																		.addComponent(
-																				okButton)
-																		.addPreferredGap(
-																				javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-																		.addComponent(
-																				cancelButton)))
-										.addContainerGap()));
-		layout
-				.setVerticalGroup(layout
-						.createParallelGroup(
-								javax.swing.GroupLayout.Alignment.LEADING)
-						.addGroup(
-								layout
-										.createSequentialGroup()
-										.addContainerGap()
-										.addComponent(
-												generalPanel,
-												javax.swing.GroupLayout.PREFERRED_SIZE,
-												javax.swing.GroupLayout.DEFAULT_SIZE,
-												javax.swing.GroupLayout.PREFERRED_SIZE)
-										.addPreferredGap(
-												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-										.addComponent(
-												captionPanel,
-												javax.swing.GroupLayout.PREFERRED_SIZE,
-												javax.swing.GroupLayout.DEFAULT_SIZE,
-												javax.swing.GroupLayout.PREFERRED_SIZE)
-										.addPreferredGap(
-												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-										.addPreferredGap(
-												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-										.addComponent(
-												partsPanel,
-												300,
-												300,
-												300)
-										.addPreferredGap(
-												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-										.addGroup(
-												layout
-														.createParallelGroup(
-																javax.swing.GroupLayout.Alignment.BASELINE)
-														.addComponent(
-																cancelButton,
-																20, 20, 20)
-														.addComponent(okButton,
-																20, 20, 20))
-										.addContainerGap(
-												javax.swing.GroupLayout.DEFAULT_SIZE,
-												Short.MAX_VALUE)));
+									.createSequentialGroup()
+									.addComponent(
+										okButton)
+									.addPreferredGap(
+										javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+									.addComponent(
+										cancelButton)))
+					.addContainerGap()));
+	layout
+		.setVerticalGroup(layout
+			.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING)
+			.addGroup(
+				layout
+					.createSequentialGroup()
+					.addContainerGap()
+					.addComponent(
+						generalPanel,
+						javax.swing.GroupLayout.PREFERRED_SIZE,
+						javax.swing.GroupLayout.DEFAULT_SIZE,
+						javax.swing.GroupLayout.PREFERRED_SIZE)
+					.addPreferredGap(
+						javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+					.addComponent(
+						captionPanel,
+						javax.swing.GroupLayout.PREFERRED_SIZE,
+						javax.swing.GroupLayout.DEFAULT_SIZE,
+						javax.swing.GroupLayout.PREFERRED_SIZE)
+					.addPreferredGap(
+						javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+					.addPreferredGap(
+						javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+					.addComponent(partsPanel, 300, 300, 300)
+					.addPreferredGap(
+						javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+					.addGroup(
+						layout
+							.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.BASELINE)
+							.addComponent(
+								cancelButton,
+								20, 20, 20)
+							.addComponent(okButton,
+								20, 20, 20))
+					.addContainerGap(
+						javax.swing.GroupLayout.DEFAULT_SIZE,
+						Short.MAX_VALUE)));
 
-		this.getRootPane().setDefaultButton(okButton);
+	this.getRootPane().setDefaultButton(okButton);
 
-		pack();
-	}
+	pack();
+    }
 
-	@Override
-	protected void saveChanges() {
-		CompileQModel itemModel = new CompileQModel();
-		
-		manifestItem.setTitle(titleTextField.getText());
+    @Override
+    protected void saveChanges() {
+	stopCellEditing();
+	CompileQModel itemModel = new CompileQModel();
 
-		CompileQData data = itemModel.getData(manifestItem);
+	manifestItem.setTitle(titleTextField.getText());
 
-		if (sameAsTitleCheckBox.isSelected()) {
-			data.setCaption(titleTextField.getText());
-		} else {
-			data.setCaption(captionTextField.getText());
-		}
+	CompileQData data = itemModel.getData(manifestItem);
 
-		data.setParts(simpleQuestionAnswersDataModel);
-
-		itemModel.updateItemResource(manifestItem, true);
+	if (sameAsTitleCheckBox.isSelected()) {
+	    data.setCaption(titleTextField.getText());
+	} else {
+	    data.setCaption(captionTextField.getText());
 	}
 
-	@Override
-	public void stateChanged(ChangeEvent e) {
-		if (e.getSource() == sameAsTitleCheckBox) {
-			if (sameAsTitleCheckBox.isSelected()
-					&& captionTextField.isEnabled()) {
-				captionTextField.setText(titleTextField.getText());
-			}
-			captionTextField.setEnabled(!sameAsTitleCheckBox.isSelected());
-		}
+	data.setParts(compileQTableDataModel);
+
+	itemModel.updateItemResource(manifestItem, true);
+    }
+
+    @Override
+    public void stateChanged(ChangeEvent e) {
+	if (e.getSource() == sameAsTitleCheckBox) {
+	    if (sameAsTitleCheckBox.isSelected()
+		    && captionTextField.isEnabled()) {
+		captionTextField.setText(titleTextField.getText());
+	    }
+	    captionTextField.setEnabled(!sameAsTitleCheckBox.isSelected());
 	}
+    }
 
 }
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java	2008-05-18 11:46:28 UTC (rev 141)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java	2008-05-18 13:47:32 UTC (rev 142)
@@ -1,8 +1,6 @@
 package edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ;
 
 import java.awt.Component;
-import java.awt.event.KeyEvent;
-import java.awt.event.KeyListener;
 
 import javax.swing.AbstractCellEditor;
 import javax.swing.BorderFactory;
@@ -12,22 +10,10 @@
 import javax.swing.table.TableCellEditor;
 
 public class MultiLineTableCellEditor extends AbstractCellEditor implements
-		TableCellEditor, KeyListener {
-	@Override
-	public void keyPressed(KeyEvent e) {
-	}
+		TableCellEditor {
 
-	@Override
-	public void keyReleased(KeyEvent e) {
-	}
-
-	@Override
-	public void keyTyped(KeyEvent e) {
-
-//		cellSizeUpdate(false);
-	}
-
 	protected int tableRow;
+	protected int tableCol;
 	protected JTable table;
 
 	private void cellSizeUpdate(boolean fullUpdate) {
@@ -59,12 +45,10 @@
 		myEditor.setWrapStyleWord(true);
 		myEditor.setLineWrap(true);
 		myEditor.setOpaque(true);
-		myEditor.addKeyListener(this);
 
 		myScrollPane = new JScrollPane(myEditor);
 		myScrollPane.setBorder(BorderFactory.createEmptyBorder());
-		myScrollPane
-				.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+		myScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
 		myScrollPane.getVerticalScrollBar().setFocusable(false);
 		myScrollPane.getHorizontalScrollBar().setFocusable(false);
 	}
@@ -73,6 +57,7 @@
 			boolean isSelected, int row, int column) {
 		this.table = table;
 		this.tableRow = row;
+		this.tableCol = column;
 
 		myEditor.setBackground(isSelected ? table.getSelectionBackground()
 				: table.getBackground());
@@ -91,4 +76,12 @@
 	public Object getCellEditorValue() {
 		return myEditor.getText();
 	}
+
+	public int getTableRow() {
+	    return tableRow;
+	}
+
+	public int getTableCol() {
+	    return tableCol;
+	}
 }
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-18 11:46:24
      
     | 
| Revision: 141
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=141&view=rev
Author:   sem62
Date:     2008-05-18 04:46:28 -0700 (Sun, 18 May 2008)
Log Message:
-----------
Added Renderer and CellEditor for PartAttributes.
Modified Paths:
--------------
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartOptionsPanel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartsTable.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPart.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java
Added Paths:
-----------
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartAttributesCellEditor.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartAttributesRenderer.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/PartAttributes.java
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java	2008-05-15 22:03:24 UTC (rev 140)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java	2008-05-18 11:46:28 UTC (rev 141)
@@ -136,18 +136,18 @@
 
 		CompileQModel itemModel = new CompileQModel();
 
-		dlg.captionTextField.setText(itemModel.getData(manifestItem)
-				.getCaption());
+//		dlg.captionTextField.setText(itemModel.getData(manifestItem)
+//				.getCaption());
 		dlg.sameAsTitleCheckBox.setSelected(dlg.titleTextField.getText()
 				.equals(dlg.captionTextField.getText()));
-		dlg.questionTextField.setText(itemModel.getData(manifestItem)
-				.getQuestion());
 
 		dlg.simpleQuestionAnswersDataModel = itemModel.getData(manifestItem)
-				.getAnswers();
+				.getParts();
+		
 		dlg.partsTable.setModel(dlg.simpleQuestionAnswersDataModel);
 
 		partsTable.getColumnModel().getColumn(1).setCellEditor(new MultiLineTableCellEditor());
+		partsTable.getColumnModel().getColumn(2).setCellEditor(new PartAttributesCellEditor());
 
 		DefaultTableColumnModel columnModel = (DefaultTableColumnModel) dlg.partsTable
 				.getColumnModel();
@@ -477,10 +477,8 @@
 			data.setCaption(captionTextField.getText());
 		}
 
-		data.setQuestion(questionTextField.getText());
+		data.setParts(simpleQuestionAnswersDataModel);
 
-		data.setAnswers(simpleQuestionAnswersDataModel);
-
 		itemModel.updateItemResource(manifestItem, true);
 	}
 
@@ -493,11 +491,6 @@
 			}
 			captionTextField.setEnabled(!sameAsTitleCheckBox.isSelected());
 		}
-
-		if (e.getSource() == oneAnswerCheckBox) {
-			simpleQuestionAnswersDataModel.setSingleVariant(oneAnswerCheckBox
-					.isSelected());
-		}
 	}
 
 }
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java	2008-05-15 22:03:24 UTC (rev 140)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java	2008-05-18 11:46:28 UTC (rev 141)
@@ -1,8 +1,6 @@
 package edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ;
 
 import java.awt.Component;
-import java.awt.event.InputMethodEvent;
-import java.awt.event.InputMethodListener;
 import java.awt.event.KeyEvent;
 import java.awt.event.KeyListener;
 
@@ -14,7 +12,7 @@
 import javax.swing.table.TableCellEditor;
 
 public class MultiLineTableCellEditor extends AbstractCellEditor implements
-		TableCellEditor, InputMethodListener, KeyListener {
+		TableCellEditor, KeyListener {
 	@Override
 	public void keyPressed(KeyEvent e) {
 	}
@@ -25,31 +23,28 @@
 
 	@Override
 	public void keyTyped(KeyEvent e) {
-		
-		//cellSizeUpdate();
+
+//		cellSizeUpdate(false);
 	}
 
 	protected int tableRow;
 	protected JTable table;
 
-	@Override
-	public void caretPositionChanged(InputMethodEvent arg0) {
-		cellSizeUpdate();
-	}
+	private void cellSizeUpdate(boolean fullUpdate) {
+		int needHeight = myEditor.getPreferredSize().height + 2;
 
-	private void cellSizeUpdate() {
-		int thisHeight = myEditor.getPreferredSize().height + 2;
-		
-		if (thisHeight < 100){
-			thisHeight = 100; 
+		if (needHeight < 100) {
+			needHeight = 100;
 		}
-		
-		table.setRowHeight(tableRow, thisHeight);
-	}
 
-	@Override
-	public void inputMethodTextChanged(InputMethodEvent arg0) {
-		cellSizeUpdate();
+		if (!fullUpdate) {
+			int currHeight = table.getRowHeight(tableRow);
+			if (needHeight < currHeight) {
+				needHeight = currHeight;
+			}
+		}
+
+		table.setRowHeight(tableRow, needHeight);
 	}
 
 	/**
@@ -64,7 +59,6 @@
 		myEditor.setWrapStyleWord(true);
 		myEditor.setLineWrap(true);
 		myEditor.setOpaque(true);
-		myEditor.addInputMethodListener(this);
 		myEditor.addKeyListener(this);
 
 		myScrollPane = new JScrollPane(myEditor);
@@ -89,7 +83,7 @@
 		myScrollPane.setBounds(0, 0, table.getColumnModel().getColumn(column)
 				.getWidth(), 0);
 
-		cellSizeUpdate();
+		cellSizeUpdate(true);
 
 		return myScrollPane;
 	}
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartAttributesCellEditor.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartAttributesCellEditor.java	                        (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartAttributesCellEditor.java	2008-05-18 11:46:28 UTC (rev 141)
@@ -0,0 +1,87 @@
+package edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.FlowLayout;
+
+import javax.swing.AbstractCellEditor;
+import javax.swing.JCheckBox;
+import javax.swing.JPanel;
+import javax.swing.JTable;
+import javax.swing.table.TableCellEditor;
+
+import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.PartAttributes;
+
+public class PartAttributesCellEditor extends AbstractCellEditor implements
+	TableCellEditor {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 1L;
+    protected JCheckBox isReadOnlyCheckBox;
+    protected JCheckBox isAnswerCheckBox;
+    protected JCheckBox isVisibleCheckBox;
+    protected JPanel myPanel;
+
+    public PartAttributesCellEditor() {
+	isReadOnlyCheckBox = new JCheckBox("read only");
+	isAnswerCheckBox = new JCheckBox("is answer");
+	isVisibleCheckBox = new JCheckBox("is visible");
+
+	myPanel = new JPanel();
+
+	myPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));
+
+	myPanel.add(isAnswerCheckBox);
+	myPanel.add(isReadOnlyCheckBox);
+	myPanel.add(isVisibleCheckBox);
+    }
+
+    public Component getTableCellEditorComponent(JTable table, Object value,
+	    boolean isSelected, int row, int column) {
+
+	Color bgColor = isSelected ? table.getSelectionBackground() : table
+		.getBackground();
+	Color frColor = isSelected ? table.getSelectionForeground() : table
+		.getForeground();
+
+	if (value == null) {
+	    value = new PartAttributes();
+	}
+	
+	PartAttributes attributes = (PartAttributes) value;
+	isAnswerCheckBox.setSelected(attributes.isAnswer());
+	isReadOnlyCheckBox.setSelected(attributes.isReadOnly());
+	isVisibleCheckBox.setSelected(attributes.isVisible());
+
+	myPanel.setBackground(bgColor);
+	myPanel.setForeground(frColor);
+
+	isAnswerCheckBox.setBackground(bgColor);
+	isVisibleCheckBox.setBackground(bgColor);
+	isReadOnlyCheckBox.setBackground(bgColor);
+
+	isAnswerCheckBox.setForeground(frColor);
+	isReadOnlyCheckBox.setForeground(frColor);
+	isVisibleCheckBox.setForeground(frColor);
+
+	myPanel.setBounds(0, 0, table.getColumnModel().getColumn(column)
+		.getWidth(), 0);
+
+	table.repaint();
+	table.updateUI();
+	
+	return myPanel;
+    }
+
+    public Object getCellEditorValue() {
+	PartAttributes partAttributes = new PartAttributes();
+
+	partAttributes.setAnswer(isAnswerCheckBox.isSelected());
+	partAttributes.setReadOnly(isReadOnlyCheckBox.isSelected());
+	partAttributes.setVisible(isVisibleCheckBox.isSelected());
+
+	return partAttributes;
+    }
+}
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartAttributesRenderer.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartAttributesRenderer.java	                        (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartAttributesRenderer.java	2008-05-18 11:46:28 UTC (rev 141)
@@ -0,0 +1,41 @@
+package edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ;
+
+import java.awt.Component;
+
+import javax.swing.JTable;
+import javax.swing.UIManager;
+import javax.swing.table.TableCellRenderer;
+
+import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.PartAttributes;
+
+public class PartAttributesRenderer implements TableCellRenderer {
+
+    @Override
+    public Component getTableCellRendererComponent(JTable table, Object value,
+	    boolean isSelected, boolean hasFocus, int row, int column) {
+
+	PartOptionsPanel partOptionsPanel = new PartOptionsPanel(
+		(PartAttributes) value);
+
+	if (isSelected) {
+	    partOptionsPanel.setForeground(table.getSelectionForeground());
+	    partOptionsPanel.setBackground(table.getSelectionBackground());
+	} else {
+	    partOptionsPanel.setForeground(table.getForeground());
+	    partOptionsPanel.setBackground(table.getBackground());
+	}
+	partOptionsPanel.setFont(table.getFont());
+	partOptionsPanel.setBorder(UIManager
+		.getBorder("Table.focusCellHighlightBorder"));
+	if (table.isCellEditable(row, column)) {
+	    partOptionsPanel.setForeground(UIManager
+		    .getColor("Table.focusCellForeground"));
+	    partOptionsPanel.setBackground(UIManager
+		    .getColor("Table.focusCellBackground"));
+	}
+
+	partOptionsPanel.updateUI();
+
+	return partOptionsPanel;
+    }
+}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartOptionsPanel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartOptionsPanel.java	2008-05-15 22:03:24 UTC (rev 140)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartOptionsPanel.java	2008-05-18 11:46:28 UTC (rev 141)
@@ -1,83 +1,88 @@
 package edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ;
 
-import java.awt.Component;
+import java.awt.Color;
 import java.awt.FlowLayout;
-import java.awt.LayoutManager;
 
 import javax.swing.JCheckBox;
 import javax.swing.JPanel;
-import javax.swing.JTable;
-import javax.swing.UIManager;
-import javax.swing.border.EmptyBorder;
-import javax.swing.table.TableCellRenderer;
 
-public class PartOptionsPanel extends JPanel implements TableCellRenderer {
+import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.PartAttributes;
 
-	@Override
-	public Component getTableCellRendererComponent(JTable table, Object value,
-			boolean isSelected, boolean hasFocus, int row, int column) {
-		if (isSelected) {
-			setForeground(table.getSelectionForeground());
-			setBackground(table.getSelectionBackground());
+public class PartOptionsPanel extends JPanel {
 
-			readOnlyCheckBox.setForeground(table.getSelectionForeground());
-			isAnswerCheckBox.setForeground(table.getSelectionForeground());
-			isVisibleCheckBox.setForeground(table.getSelectionForeground());
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 1L;
 
-			readOnlyCheckBox.setBackground(table.getSelectionBackground());
-			isAnswerCheckBox.setBackground(table.getSelectionBackground());
-			isVisibleCheckBox.setBackground(table.getSelectionBackground());
-		} else {
-			setForeground(table.getForeground());
-			setBackground(table.getBackground());
+    protected JCheckBox isAnswerCheckBox = new JCheckBox("is answer");
+    protected JCheckBox isReadOnlyCheckBox = new JCheckBox("read only");
+    protected JCheckBox isVisibleCheckBox = new JCheckBox("is visible");
 
-			readOnlyCheckBox.setForeground(table.getForeground());
-			isAnswerCheckBox.setForeground(table.getForeground());
-			isVisibleCheckBox.setForeground(table.getForeground());
+    @Override
+    public void setBackground(Color bg) {
+	if (isReadOnlyCheckBox != null){
+	    isReadOnlyCheckBox.setBackground(bg);
+	}
+	
+	if (isAnswerCheckBox != null){
+	    isAnswerCheckBox.setBackground(bg);
+	}
+	
+	if (isVisibleCheckBox != null){
+	    isVisibleCheckBox.setBackground(bg);
+	}
 
-			readOnlyCheckBox.setBackground(table.getBackground());
-			isAnswerCheckBox.setBackground(table.getBackground());
-			isVisibleCheckBox.setBackground(table.getBackground());
-		}
-		setFont(table.getFont());
-		if (hasFocus) {
-			setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));
-			if (table.isCellEditable(row, column)) {
-				setForeground(UIManager.getColor("Table.focusCellForeground"));
-				setBackground(UIManager.getColor("Table.focusCellBackground"));
-			}
-		} else {
-			setBorder(new EmptyBorder(1, 2, 1, 2));
-		}
+	super.setBackground(bg);
+    }
 
-		
-		
-		return this;
+    @Override
+    public void setForeground(Color fg) {
+	if (isReadOnlyCheckBox != null){
+	    isReadOnlyCheckBox.setForeground(fg);
 	}
+	if (isAnswerCheckBox != null){
+	    isAnswerCheckBox.setForeground(fg);
+	}
+	if (isVisibleCheckBox != null){
+	    isVisibleCheckBox.setForeground(fg);
+	}
 
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
+	super.setForeground(fg);
+    }
 
-	public JCheckBox readOnlyCheckBox;
-	public JCheckBox isAnswerCheckBox;
-	public JCheckBox isVisibleCheckBox;
+    public PartOptionsPanel(PartAttributes value) {
+	initComponents();
 
-	public PartOptionsPanel() {
-		initComponents();
+	if (value != null) {
+	    isAnswerCheckBox.setSelected(value.isAnswer());
+	    isVisibleCheckBox.setSelected(value.isVisible());
+	    isReadOnlyCheckBox.setSelected(value.isReadOnly());
 	}
+    }
 
-	private void initComponents() {
-		LayoutManager layout = new FlowLayout(FlowLayout.LEFT);
-		setLayout(layout);
-		
-		readOnlyCheckBox = new JCheckBox("read only");
-		isAnswerCheckBox = new JCheckBox("is answer");
-		isVisibleCheckBox = new JCheckBox("is visible");
+    public PartOptionsPanel() {
+	initComponents();
+    }
 
-		add(readOnlyCheckBox);
-		add(isAnswerCheckBox);
-		add(isVisibleCheckBox);
-	}
+    protected void initComponents() {
+	setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));
+	
+	add(isAnswerCheckBox);
+	add(isReadOnlyCheckBox);
+	add(isVisibleCheckBox);
+    }
+
+    public JCheckBox getReadOnlyCheckBox() {
+	return isReadOnlyCheckBox;
+    }
+
+    public JCheckBox getIsAnswerCheckBox() {
+	return isAnswerCheckBox;
+    }
+
+    public JCheckBox getIsVisibleCheckBox() {
+	return isVisibleCheckBox;
+    }
+
 }
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartsTable.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartsTable.java	2008-05-15 22:03:24 UTC (rev 140)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartsTable.java	2008-05-18 11:46:28 UTC (rev 141)
@@ -1,54 +1,21 @@
 package edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ;
 
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-
 import javax.swing.JTable;
 import javax.swing.ListSelectionModel;
 
-public class PartsTable extends JTable implements MouseListener {
+import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.CompileQPart;
+import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.PartAttributes;
 
-	@Override
-	public void mouseClicked(MouseEvent arg0) {
-		// TODO Auto-generated method stub
-		
-	}
+public class PartsTable extends JTable {
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 1L;
 
-	@Override
-	public void mouseEntered(MouseEvent arg0) {
-		// TODO Auto-generated method stub
-		
-	}
+    public PartsTable() {
+	setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
 
-	@Override
-	public void mouseExited(MouseEvent arg0) {
-		// TODO Auto-generated method stub
-		
-	}
-
-	@Override
-	public void mousePressed(MouseEvent arg0) {
-		// TODO Auto-generated method stub
-		
-	}
-
-	@Override
-	public void mouseReleased(MouseEvent arg0) {
-		// TODO Auto-generated method stub
-		
-	}
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	public PartsTable() {
-		setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
-
-		setDefaultRenderer(MultiLineCellRenderer.class,	new MultiLineCellRenderer());
-		setDefaultRenderer(PartOptionsPanel.class, new PartOptionsPanel());
-		
-		addMouseListener(this);
-	}
+	setDefaultRenderer(CompileQPart.class, new MultiLineCellRenderer());
+	setDefaultRenderer(PartAttributes.class, new PartAttributesRenderer());
+    }
 }
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java	2008-05-15 22:03:24 UTC (rev 140)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java	2008-05-18 11:46:28 UTC (rev 141)
@@ -1,108 +1,102 @@
 package edu.lnu.FireFly.WebEditor.ItemModels.CompileQ;
 
 import java.io.Reader;
-import java.util.Iterator;
 
-import org.dom4j.Document;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-import org.dom4j.io.SAXReader;
-
 import edu.lnu.FireFly.FFManifest.TreeItem;
 import edu.lnu.FireFly.WebEditor.ItemModels.ItemData;
 
 public class CompileQData extends ItemData {
 	@Override
 	public String marshal(TreeItem anItem) {
-		Document doc = DocumentHelper.createDocument();
-		Element root = doc.addElement("SimpleQuestion");
-		root.addElement("caption").setText(getCaption());
-		root.addElement("question").setText(getQuestion());
+		return "";
 
-		root.addElement("ShowOnSummaryPage").setText(
-				String.valueOf(getShowOnSummaryPage()));
-
-		Element ans = root.addElement("answers");
-
-		ans.addAttribute("singleVariant", String.valueOf(getAnswers()
-				.getSingleVariant()));
-
-		Iterator<CompileQPart> iter = getAnswers().answers.iterator();
-
-		while (iter.hasNext()) {
-			CompileQPart answer = iter.next();
-
-			Element ansEl = ans.addElement("answer");
-			ansEl
-					.addAttribute("point", String.valueOf(answer
-							.getAnswerPoint()));
-			ansEl.setText(answer.getAnswerText());
-		}
-		
-		return doc.asXML();
+		//		Document doc = DocumentHelper.createDocument();
+//		Element root = doc.addElement("SimpleQuestion");
+//		root.addElement("caption").setText(getCaption());
+//		root.addElement("question").setText(getQuestion());
+//
+//		root.addElement("ShowOnSummaryPage").setText(
+//				String.valueOf(getShowOnSummaryPage()));
+//
+//		Element ans = root.addElement("answers");
+//
+//		ans.addAttribute("singleVariant", String.valueOf(getAnswers()
+//				.getSingleVariant()));
+//
+//		Iterator<CompileQPart> iter = getAnswers().answers.iterator();
+//
+//		while (iter.hasNext()) {
+//			CompileQPart answer = iter.next();
+//
+//			Element ansEl = ans.addElement("answer");
+//			ansEl
+//					.addAttribute("point", String.valueOf(answer
+//							.getAnswerPoint()));
+//			ansEl.setText(answer.getAnswerText());
+//		}
+//		
+//		return doc.asXML();
 	}
 
-	private CompileQPartsTableModel answers = new CompileQPartsTableModel();
 	private String caption = "";
-	private String question = "";
 	
-	public CompileQPartsTableModel getAnswers() {
-		return answers;
-	}
-	public void setAnswers(CompileQPartsTableModel answers) {
-		this.answers = answers;
-	}
 	public String getCaption() {
 		return caption;
 	}
+	
+	private CompileQPartsTableModel parts = new CompileQPartsTableModel();
+	
+	
 	public void setCaption(String caption) {
 		this.caption = caption;
 	}
-	public String getQuestion() {
-		return question;
-	}
-	public void setQuestion(String question) {
-		this.question = question;
-	}
 
 	@SuppressWarnings("unchecked")
 	public boolean unmarshal(Reader res, TreeItem anItem) {
-		SAXReader reader = new SAXReader();
+//		SAXReader reader = new SAXReader();
+//
+//		Document doc = null;
+//		try {
+//			doc = reader.read(res);
+//
+//			Element root = doc.getRootElement();
+//			Element answers = root.element("answers");
+//
+//			setCaption(root.elementTextTrim("caption"));
+//			setQuestion(root.elementTextTrim("question"));
+//			
+//			boolean showOnSP = Boolean.valueOf(root
+//					.elementTextTrim("ShowOnSummaryPage"));
+//			setShowOnSummaryPage(showOnSP);
+//
+//			getAnswers().setSingleVariant(
+//					answers.attributeValue("singleVariant").equalsIgnoreCase(
+//							"true"));
+//
+//			getAnswers().answers.clear();
+//
+//			Iterator<Element> iter = answers.elementIterator("answer");
+//			while (iter.hasNext()) {
+//				Element answer = iter.next();
+//				CompileQPart ans = new CompileQPart(answer
+//						.getText());
+//				ans.setAnswerPoint(Double.valueOf(answer
+//						.attributeValue("point")));
+//				getAnswers().answers.add(ans);
+//			}
+//		} catch (Exception e) {
+//			e.printStackTrace();
+//			return false;
+//		}
+//
+		return true;
+	}
 
-		Document doc = null;
-		try {
-			doc = reader.read(res);
+	public CompileQPartsTableModel getParts() {
+		return parts;
+	}
 
-			Element root = doc.getRootElement();
-			Element answers = root.element("answers");
-
-			setCaption(root.elementTextTrim("caption"));
-			setQuestion(root.elementTextTrim("question"));
-			
-			boolean showOnSP = Boolean.valueOf(root
-					.elementTextTrim("ShowOnSummaryPage"));
-			setShowOnSummaryPage(showOnSP);
-
-			getAnswers().setSingleVariant(
-					answers.attributeValue("singleVariant").equalsIgnoreCase(
-							"true"));
-
-			getAnswers().answers.clear();
-
-			Iterator<Element> iter = answers.elementIterator("answer");
-			while (iter.hasNext()) {
-				Element answer = iter.next();
-				CompileQPart ans = new CompileQPart(answer
-						.getText());
-				ans.setAnswerPoint(Double.valueOf(answer
-						.attributeValue("point")));
-				getAnswers().answers.add(ans);
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-			return false;
-		}
-
-		return true;
+	public void setParts(CompileQPartsTableModel parts) {
+		this.parts = parts;
 	}
 }
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java	2008-05-15 22:03:24 UTC (rev 140)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java	2008-05-18 11:46:28 UTC (rev 141)
@@ -1,16 +1,11 @@
 package edu.lnu.FireFly.WebEditor.ItemModels.CompileQ;
 
-import java.util.Iterator;
-
 import edu.lnu.FireFly.FFManifest.TreeItem;
-import edu.lnu.FireFly.FFManifest.item.Item;
-import edu.lnu.FireFly.FFManifest.resource.Resource;
 import edu.lnu.FireFly.WebEditor.WebEditor;
 import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel;
 import edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ.CompileQPropertiestsDlg;
 import edu.lnu.FireFly.WebEditor.ItemModels.ItemData;
 import edu.lnu.FireFly.WebEditor.ItemModels.ResourcedItemModel;
-import edu.lnu.FireFly.WebEditor.ItemModels.Template;
 
 public class CompileQModel extends ResourcedItemModel {
 	@Override
@@ -69,29 +64,29 @@
 
 	@Override
 	protected void updateResourceFile(TreeItem anItem) {
-		Resource resource = WebEditor.instance.getManifest().resources
-				.findResourceByIdentifier(((Item) anItem).identifierref);
-
-		Template template = new Template(resource.getFullHref(), this);
-
-		CompileQData itemData = getData(anItem);
-
-		template.setProperty("Caption", itemData.getCaption());
-		template.setProperty("Question", itemData.getQuestion());
-
-		Iterator<CompileQPart> iter = itemData.getAnswers().answers
-				.iterator();
-		String answers = "\r\nsetSingleVariant("
-				+ itemData.getAnswers().getSingleVariant() + ");\r\n";
-
-		while (iter.hasNext()) {
-			CompileQPart answer = iter.next();
-			answers += "addAnswer(\"" + answer.getAnswerText().replace("\"", "\\\"") + "\", "
-					+ answer.getAnswerPoint() + ");" + "\r\n";
-		}
-
-		template.setProperty("answers", answers);
-		template.updateResource();
+//		Resource resource = WebEditor.instance.getManifest().resources
+//				.findResourceByIdentifier(((Item) anItem).identifierref);
+//
+//		Template template = new Template(resource.getFullHref(), this);
+//
+//		CompileQData itemData = getData(anItem);
+//
+//		template.setProperty("Caption", itemData.getCaption());
+//		template.setProperty("Question", itemData.getQuestion());
+//
+//		Iterator<CompileQPart> iter = itemData.getAnswers().questionParts
+//				.iterator();
+//		String answers = "\r\nsetSingleVariant("
+//				+ itemData.getAnswers().getSingleVariant() + ");\r\n";
+//
+//		while (iter.hasNext()) {
+//			CompileQPart answer = iter.next();
+//			answers += "addAnswer(\"" + answer.getAnswerText().replace("\"", "\\\"") + "\", "
+//					+ answer.getAnswerPoint() + ");" + "\r\n";
+//		}
+//
+//		template.setProperty("answers", answers);
+//		template.updateResource();
 	}
 
 	@Override
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPart.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPart.java	2008-05-15 22:03:24 UTC (rev 140)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPart.java	2008-05-18 11:46:28 UTC (rev 141)
@@ -11,6 +11,16 @@
 	private String answerText = "";
 	private double answerPoint = 0;
 
+	private PartAttributes partAttributes = new PartAttributes();  
+
+	public PartAttributes getPartAttributes() {
+		return partAttributes;
+	}
+
+	public void setPartAttributes(PartAttributes partAttributes) {
+		this.partAttributes = partAttributes;
+	}
+
 	public CompileQPart(String answerText) {
 		this.answerText = answerText;
 	}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java	2008-05-15 22:03:24 UTC (rev 140)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java	2008-05-18 11:46:28 UTC (rev 141)
@@ -5,27 +5,22 @@
 
 import javax.swing.table.DefaultTableModel;
 
-import edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ.MultiLineCellRenderer;
-import edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ.PartOptionsPanel;
-
 public class CompileQPartsTableModel extends DefaultTableModel {
 	/**
 	 * 
 	 */
 	private static final long serialVersionUID = 1L;
 
-	private boolean singleVariant = false;
+	public List<CompileQPart> questionParts = new ArrayList<CompileQPart>();
 
-	public List<CompileQPart> answers = new ArrayList<CompileQPart>();
-
 	@Override
 	public Class<?> getColumnClass(int col) {
 		if (col == 1){
-			return MultiLineCellRenderer.class;
+			return CompileQPart.class;
 		}
 
 		if (col == 2){
-			return PartOptionsPanel.class;
+			return PartAttributes.class;
 		}
 		
 		return Object.class;
@@ -51,11 +46,11 @@
 	@Override
 	public int getRowCount() {
 
-		if (answers == null) {
+		if (questionParts == null) {
 			return 0;
 		}
 
-		int answersCount = answers.size();
+		int answersCount = questionParts.size();
 		
 		
 		
@@ -64,19 +59,19 @@
 
 	@Override
 	public Object getValueAt(int row, int col) {
-		if (row == answers.size()) {
-			return "";
+		if (row == questionParts.size()) {
+			return null;
 		}
 
 		switch (col) {
 		case 0:
 			return row + 1;
 		case 1:
-			return answers.get(row);
+			return questionParts.get(row);
 		case 2:
-			return answers.get(row).getAnswerPoint();
+			return questionParts.get(row).getPartAttributes();
 		default:
-			return "";
+			return null;
 		}
 	}
 
@@ -88,77 +83,56 @@
 		case 1:
 			return true;
 		case 2:
-			return false;
+			return true;
 		default:
 			return false;
 		}
 	}
 
-	public boolean isSingleVariant() {
-		return singleVariant;
-	}
-
-	public void setSingleVariant(boolean singleVariant) {
-		this.singleVariant = singleVariant;
-	}
-
-	public boolean getSingleVariant() {
-		return this.singleVariant;
-	}
-
 	@Override
-	public void setValueAt(Object arg0, int arg1, int arg2) {
-		if (arg1 == answers.size()) {
-			answers.add(new CompileQPart(""));
+	public void setValueAt(Object value, int row, int col) {
+		if (row == questionParts.size()) {
+			questionParts.add(new CompileQPart(""));
 		}
 
-		String newValue = arg0.toString();
+		String newValue = value.toString();
 
-		switch (arg2) {
+		switch (col) {
 		case 1:
-//			newValue = ((CompileQPart)arg0)
-			answers.get(arg1).setAnswerText(newValue);
+			questionParts.get(row).setAnswerText(newValue);
 			break;
 		case 2:
-			try {
-				double value = 0;
-				if (!newValue.equals("")) {
-					value = Double.valueOf(newValue);
-				}
-				answers.get(arg1).setAnswerPoint(value);
-			} catch (NumberFormatException e) {
-				System.out.print("Entered value is't a double value!\n");
-			}
+			questionParts.get(row).setPartAttributes((PartAttributes)value);
 			break;
 		}
 
-		fireTableRowsUpdated(arg1, arg1);
+		fireTableRowsUpdated(row, row);
 	}
 
 	public void deleteRow(int selectedRow) {
-		if (selectedRow < answers.size() && selectedRow >= 0) {
-			answers.remove(selectedRow);
+		if (selectedRow < questionParts.size() && selectedRow >= 0) {
+			questionParts.remove(selectedRow);
 			fireTableRowsDeleted(selectedRow, selectedRow);
 		}
 	}
 
 	public void insertRow(int selectedRow) {
-		if (selectedRow >= answers.size()){
+		if (selectedRow >= questionParts.size()){
 			selectedRow--;
 		}
 		
-		answers.add(selectedRow + 1, new CompileQPart(""));
+		questionParts.add(selectedRow + 1, new CompileQPart(""));
 		fireTableRowsInserted(selectedRow + 1, selectedRow + 1);
 	}
 
 	public boolean moveUp(int selectedRow) {
-		if (selectedRow < 1 || selectedRow >= answers.size()){
+		if (selectedRow < 1 || selectedRow >= questionParts.size()){
 			return false;
 		}
 		
-		CompileQPart answer = answers.get(selectedRow);
-		answers.set(selectedRow, answers.get(selectedRow - 1));
-		answers.set(selectedRow - 1, answer);
+		CompileQPart answer = questionParts.get(selectedRow);
+		questionParts.set(selectedRow, questionParts.get(selectedRow - 1));
+		questionParts.set(selectedRow - 1, answer);
 		
 		fireTableRowsUpdated(selectedRow - 1, selectedRow);
 		
@@ -166,13 +140,13 @@
 	}
 
 	public boolean moveDown(int selectedRow) {
-		if (selectedRow < 0 || selectedRow >= answers.size() - 1){
+		if (selectedRow < 0 || selectedRow >= questionParts.size() - 1){
 			return false;
 		}
 		
-		CompileQPart answer = answers.get(selectedRow);
-		answers.set(selectedRow, answers.get(selectedRow + 1));
-		answers.set(selectedRow + 1, answer);
+		CompileQPart answer = questionParts.get(selectedRow);
+		questionParts.set(selectedRow, questionParts.get(selectedRow + 1));
+		questionParts.set(selectedRow + 1, answer);
 		
 		fireTableRowsUpdated(selectedRow + 1, selectedRow);
 		
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/PartAttributes.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/PartAttributes.java	                        (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/PartAttributes.java	2008-05-18 11:46:28 UTC (rev 141)
@@ -0,0 +1,25 @@
+package edu.lnu.FireFly.WebEditor.ItemModels.CompileQ;
+
+public class PartAttributes {
+	private boolean isAnswer = false;
+	private boolean isReadOnly = false;
+	private boolean isVisible = true;
+	public boolean isAnswer() {
+		return isAnswer;
+	}
+	public void setAnswer(boolean isAnswer) {
+		this.isAnswer = isAnswer;
+	}
+	public boolean isReadOnly() {
+		return isReadOnly;
+	}
+	public void setReadOnly(boolean isReadOnly) {
+		this.isReadOnly = isReadOnly;
+	}
+	public boolean isVisible() {
+		return isVisible;
+	}
+	public void setVisible(boolean isVisible) {
+		this.isVisible = isVisible;
+	}
+}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java	2008-05-15 22:03:24 UTC (rev 140)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java	2008-05-18 11:46:28 UTC (rev 141)
@@ -97,10 +97,6 @@
 	{
 		String res = loadResource(location, anItem);
 
-		if (res == null || res.trim().equals("")) {
-			return false;
-		}
-
 		ItemData itemData = getItemData(anItem);
 
 		if (itemData == null) {
@@ -108,6 +104,10 @@
 			setItemData(anItem, itemData);
 		}
 
+		if (res == null || res.trim().equals("")) {
+			return false;
+		}
+
 		itemData.unmarshal(new StringReader(res), anItem);
 
 		return true;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-15 22:03:22
      
     | 
| Revision: 140
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=140&view=rev
Author:   sem62
Date:     2008-05-15 15:03:24 -0700 (Thu, 15 May 2008)
Log Message:
-----------
Cell size bugs fixed.
Object in cells is an instance of CompileQPart now.
Modified Paths:
--------------
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineCellRenderer.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPart.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java
Added Paths:
-----------
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartsTable.java
    WebEditor/template/CompileQModel.conf
    WebEditor/template/SimpleQuestionPropertiestsDlg.java
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java	2008-05-14 21:36:31 UTC (rev 139)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java	2008-05-15 22:03:24 UTC (rev 140)
@@ -4,7 +4,6 @@
 import java.awt.event.ActionListener;
 
 import javax.swing.JButton;
-import javax.swing.ListSelectionModel;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 import javax.swing.table.DefaultTableColumnModel;
@@ -30,7 +29,7 @@
 	private javax.swing.JPanel captionPanel;
 	private javax.swing.JPanel partsPanel;
 	private javax.swing.JScrollPane jScrollPane1;
-	private javax.swing.JTable partsTable;
+	private PartsTable partsTable;
 	private javax.swing.JTextField titleTextField;
 	private javax.swing.JTextField captionTextField;
 	private javax.swing.JTextField questionTextField;
@@ -147,6 +146,7 @@
 		dlg.simpleQuestionAnswersDataModel = itemModel.getData(manifestItem)
 				.getAnswers();
 		dlg.partsTable.setModel(dlg.simpleQuestionAnswersDataModel);
+
 		partsTable.getColumnModel().getColumn(1).setCellEditor(new MultiLineTableCellEditor());
 
 		DefaultTableColumnModel columnModel = (DefaultTableColumnModel) dlg.partsTable
@@ -207,11 +207,7 @@
 		editQuestionInHtmlBtn.addActionListener(this);
 		editAnswerVariantInHtmlEditor.addActionListener(this);
 
-		partsTable = new javax.swing.JTable();
-		partsTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
-		
-		partsTable.setDefaultRenderer(MultiLineCellRenderer.class, new MultiLineCellRenderer());
-		partsTable.setDefaultRenderer(PartOptionsPanel.class, new PartOptionsPanel());
+		partsTable = new PartsTable();
 
 		setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);
 
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineCellRenderer.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineCellRenderer.java	2008-05-14 21:36:31 UTC (rev 139)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineCellRenderer.java	2008-05-15 22:03:24 UTC (rev 140)
@@ -8,7 +8,8 @@
 import javax.swing.border.EmptyBorder;
 import javax.swing.table.TableCellRenderer;
 
-public class MultiLineCellRenderer extends JTextArea implements TableCellRenderer {
+public class MultiLineCellRenderer extends JTextArea implements
+		TableCellRenderer {
 	/**
 	 * 
 	 */
@@ -42,9 +43,18 @@
 
 		setText((value == null) ? "" : value.toString());
 
-//		int thisHeight = getPreferredSize().height + 2;
-//		table.setRowHeight(row, thisHeight);
+		updateUI();
+		
+		int thisHeight = getPreferredSize().height + 2;
 
+		if (thisHeight < 100) {
+			thisHeight = 100;
+		}
+
+		if (table.getRowHeight(row) != thisHeight){
+			table.setRowHeight(row, thisHeight);
+		}
+
 		return this;
 	}
 }
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java	2008-05-14 21:36:31 UTC (rev 139)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java	2008-05-15 22:03:24 UTC (rev 140)
@@ -17,17 +17,16 @@
 		TableCellEditor, InputMethodListener, KeyListener {
 	@Override
 	public void keyPressed(KeyEvent e) {
-//		cellSizeUpdate();
 	}
 
 	@Override
 	public void keyReleased(KeyEvent e) {
-//		cellSizeUpdate();
 	}
 
 	@Override
 	public void keyTyped(KeyEvent e) {
-		cellSizeUpdate();
+		
+		//cellSizeUpdate();
 	}
 
 	protected int tableRow;
@@ -40,6 +39,11 @@
 
 	private void cellSizeUpdate() {
 		int thisHeight = myEditor.getPreferredSize().height + 2;
+		
+		if (thisHeight < 100){
+			thisHeight = 100; 
+		}
+		
 		table.setRowHeight(tableRow, thisHeight);
 	}
 
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartsTable.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartsTable.java	                        (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartsTable.java	2008-05-15 22:03:24 UTC (rev 140)
@@ -0,0 +1,54 @@
+package edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ;
+
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+
+import javax.swing.JTable;
+import javax.swing.ListSelectionModel;
+
+public class PartsTable extends JTable implements MouseListener {
+
+	@Override
+	public void mouseClicked(MouseEvent arg0) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public void mouseEntered(MouseEvent arg0) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public void mouseExited(MouseEvent arg0) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public void mousePressed(MouseEvent arg0) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public void mouseReleased(MouseEvent arg0) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	public PartsTable() {
+		setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+
+		setDefaultRenderer(MultiLineCellRenderer.class,	new MultiLineCellRenderer());
+		setDefaultRenderer(PartOptionsPanel.class, new PartOptionsPanel());
+		
+		addMouseListener(this);
+	}
+}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPart.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPart.java	2008-05-14 21:36:31 UTC (rev 139)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPart.java	2008-05-15 22:03:24 UTC (rev 140)
@@ -1,6 +1,13 @@
 package edu.lnu.FireFly.WebEditor.ItemModels.CompileQ;
 
-public class CompileQPart {
+import edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ.MultiLineCellRenderer;
+
+public class CompileQPart extends MultiLineCellRenderer{
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	
 	private String answerText = "";
 	private double answerPoint = 0;
 
@@ -23,4 +30,8 @@
 	public void setAnswerText(String answerText) {
 		this.answerText = answerText;
 	}
+	
+	public String toString(){
+		return getAnswerText();
+	}
 }
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java	2008-05-14 21:36:31 UTC (rev 139)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java	2008-05-15 22:03:24 UTC (rev 140)
@@ -72,7 +72,7 @@
 		case 0:
 			return row + 1;
 		case 1:
-			return answers.get(row).getAnswerText();
+			return answers.get(row);
 		case 2:
 			return answers.get(row).getAnswerPoint();
 		default:
@@ -112,15 +112,18 @@
 			answers.add(new CompileQPart(""));
 		}
 
+		String newValue = arg0.toString();
+
 		switch (arg2) {
 		case 1:
-			answers.get(arg1).setAnswerText(arg0.toString());
+//			newValue = ((CompileQPart)arg0)
+			answers.get(arg1).setAnswerText(newValue);
 			break;
 		case 2:
 			try {
 				double value = 0;
-				if (!arg0.toString().equals("")) {
-					value = Double.valueOf(arg0.toString());
+				if (!newValue.equals("")) {
+					value = Double.valueOf(newValue);
 				}
 				answers.get(arg1).setAnswerPoint(value);
 			} catch (NumberFormatException e) {
Added: WebEditor/template/CompileQModel.conf
===================================================================
--- WebEditor/template/CompileQModel.conf	                        (rev 0)
+++ WebEditor/template/CompileQModel.conf	2008-05-15 22:03:24 UTC (rev 140)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<SimpleQuestion>
+<caption>New simple question</caption>
+<question>Answer "Yes" to question, please.</question>
+<ShowOnSummaryPage>true</ShowOnSummaryPage>
+<answers singleVariant="false">
+<answer point="0.0">Yes</answer>
+<answer point="1.0">No</answer>
+</answers>
+</SimpleQuestion>
\ No newline at end of file
Added: WebEditor/template/SimpleQuestionPropertiestsDlg.java
===================================================================
--- WebEditor/template/SimpleQuestionPropertiestsDlg.java	                        (rev 0)
+++ WebEditor/template/SimpleQuestionPropertiestsDlg.java	2008-05-15 22:03:24 UTC (rev 140)
@@ -0,0 +1,579 @@
+package edu.lnu.FireFly.WebEditor.GUI.Dialogs;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import javax.swing.table.DefaultTableColumnModel;
+
+import edu.lnu.FireFly.WebEditor.ItemModels.SimpleQuestion.SimpleQuestionAnswersDataModel;
+import edu.lnu.FireFly.WebEditor.ItemModels.SimpleQuestion.SimpleQuestionData;
+import edu.lnu.FireFly.WebEditor.ItemModels.SimpleQuestion.SimpleQuestionModel;
+
+/**
+ * 
+ * @author Yura
+ */
+public class SimpleQuestionPropertiestsDlg extends PropertyDlg implements
+		ActionListener, ChangeListener {
+
+	private static final long serialVersionUID = 1961383080461718171L;
+
+	private javax.swing.JCheckBox sameAsTitleCheckBox;
+	private javax.swing.JCheckBox oneAnswerCheckBox;
+	private javax.swing.JLabel titleLabel;
+	private javax.swing.JPanel generalPanel;
+	private javax.swing.JPanel captionPanel;
+	private javax.swing.JPanel questionPanel;
+	private javax.swing.JPanel answersPanel;
+	private javax.swing.JScrollPane jScrollPane1;
+	private javax.swing.JTable answersTable;
+	private javax.swing.JTextField titleTextField;
+	private javax.swing.JTextField captionTextField;
+	private javax.swing.JTextField questionTextField;
+	private javax.swing.JButton editCaptionInHtmlBtn;
+	private javax.swing.JButton editQuestionInHtmlBtn;
+	private javax.swing.JButton editAnswerVariantInHtmlEditor;
+	private javax.swing.JButton insertAnswerVariantBtn;
+	private javax.swing.JButton deleteAnswerVariantBtn;
+	private javax.swing.JButton moveUpAnswerVariantBtn;
+	private javax.swing.JButton moveDownAnswerVariantBtn;
+	private SimpleQuestionAnswersDataModel simpleQuestionAnswersDataModel;
+
+	private javax.swing.JTextField currentAnswerVariant;
+
+	public SimpleQuestionPropertiestsDlg() {
+		obj = this;
+
+		initComponents();
+	}
+
+	@Override
+	public void actionPerformed(ActionEvent arg0) {
+		super.actionPerformed(arg0);
+
+		if (arg0.getSource() == editQuestionInHtmlBtn) {
+			editTextFieldInHtmlEditor(questionTextField);
+		}
+
+		if (arg0.getSource() == editCaptionInHtmlBtn) {
+			editTextFieldInHtmlEditor(captionTextField);
+		}
+
+		if (arg0.getSource() == editAnswerVariantInHtmlEditor) {
+			int selectedRow = answersTable.getSelectedRow();
+
+			if (selectedRow < 0) {
+				return;
+			}
+
+			String text = answersTable.getModel().getValueAt(selectedRow, 1)
+					.toString();
+
+			currentAnswerVariant.setText(text);
+
+			editTextFieldInHtmlEditor(currentAnswerVariant);
+		}
+
+		if (arg0.getSource() == insertAnswerVariantBtn) {
+			int selectedRow = answersTable.getSelectedRow();
+
+			if (selectedRow < 0) {
+				return;
+			}
+
+			simpleQuestionAnswersDataModel.insertRow(selectedRow);
+			answersTable.getSelectionModel().setSelectionInterval(selectedRow + 1, selectedRow + 1);
+		}
+
+		if (arg0.getSource() == deleteAnswerVariantBtn) {
+			int selectedRow = answersTable.getSelectedRow();
+
+			if (selectedRow < 0) {
+				return;
+			}
+
+			simpleQuestionAnswersDataModel.deleteRow(selectedRow);
+			
+			if (selectedRow >= simpleQuestionAnswersDataModel.getRowCount()){
+				selectedRow--;
+			}
+			
+			answersTable.getSelectionModel().setSelectionInterval(selectedRow,
+					selectedRow);
+		}
+		if (arg0.getSource() == moveUpAnswerVariantBtn) {
+			int selectedRow = answersTable.getSelectedRow();
+
+			if (selectedRow < 0) {
+				return;
+			}
+
+			if (simpleQuestionAnswersDataModel.moveUp(selectedRow)){
+				answersTable.getSelectionModel().setSelectionInterval(selectedRow - 1, selectedRow - 1);
+			}
+		}
+
+		if (arg0.getSource() == moveDownAnswerVariantBtn) {
+			int selectedRow = answersTable.getSelectedRow();
+
+			if (selectedRow < 0) {
+				return;
+			}
+
+			if (simpleQuestionAnswersDataModel.moveDown(selectedRow)){
+				answersTable.getSelectionModel().setSelectionInterval(selectedRow + 1, selectedRow+1);
+			}
+		}
+	}
+
+	@Override
+	protected void fillFields() {
+		SimpleQuestionPropertiestsDlg dlg = (SimpleQuestionPropertiestsDlg) obj;
+		dlg.titleTextField.setText(manifestItem.getTitle());
+
+		SimpleQuestionModel itemModel = new SimpleQuestionModel();
+
+		dlg.captionTextField.setText(itemModel.getData(manifestItem)
+				.getCaption());
+		dlg.sameAsTitleCheckBox.setSelected(dlg.titleTextField.getText()
+				.equals(dlg.captionTextField.getText()));
+		dlg.questionTextField.setText(itemModel.getData(manifestItem)
+				.getQuestion());
+
+		dlg.simpleQuestionAnswersDataModel = itemModel.getData(manifestItem)
+				.getAnswers();
+		dlg.answersTable.setModel(dlg.simpleQuestionAnswersDataModel);
+
+		DefaultTableColumnModel columnModel = (DefaultTableColumnModel) dlg.answersTable
+				.getColumnModel();
+		columnModel.getColumn(0).setPreferredWidth(1);
+		columnModel.getColumn(1).setPreferredWidth(300);
+		columnModel.getColumn(2).setPreferredWidth(1);
+
+		dlg.titleTextField.selectAll();
+	}
+
+	@Override
+	public void editedHtmlTextWasSet() {
+		super.editedHtmlTextWasSet();
+
+		String text = currentAnswerVariant.getText();
+		int selectedRow = answersTable.getSelectedRow();
+		answersTable.getModel().setValueAt(text, selectedRow, 1);
+	}
+
+	private void initComponents() {
+		setTitle("Propertiests...");
+
+		generalPanel = new javax.swing.JPanel();
+		titleLabel = new javax.swing.JLabel();
+		titleTextField = new javax.swing.JTextField();
+		captionPanel = new javax.swing.JPanel();
+		captionTextField = new javax.swing.JTextField();
+		sameAsTitleCheckBox = new javax.swing.JCheckBox();
+		questionPanel = new javax.swing.JPanel();
+		questionTextField = new javax.swing.JTextField();
+		oneAnswerCheckBox = new javax.swing.JCheckBox();
+		answersPanel = new javax.swing.JPanel();
+		jScrollPane1 = new javax.swing.JScrollPane();
+		cancelButton = new javax.swing.JButton("Cancel");
+		okButton = new javax.swing.JButton("Ok");
+		editCaptionInHtmlBtn = new JButton("...");
+		editQuestionInHtmlBtn = new JButton("...");
+		editAnswerVariantInHtmlEditor = new JButton("HTML Editor");
+		insertAnswerVariantBtn = new JButton("Insert");
+		deleteAnswerVariantBtn = new JButton("Delete");
+
+		moveDownAnswerVariantBtn = new JButton("Down");
+		moveUpAnswerVariantBtn = new JButton("Up");
+
+		insertAnswerVariantBtn.addActionListener(this);
+		deleteAnswerVariantBtn.addActionListener(this);
+		moveDownAnswerVariantBtn.addActionListener(this);
+		moveUpAnswerVariantBtn.addActionListener(this);
+
+		currentAnswerVariant = new javax.swing.JTextField();
+		captionTextField.addActionListener(this);
+
+		cancelButton.addActionListener(this);
+		okButton.addActionListener(this);
+		sameAsTitleCheckBox.addChangeListener(this);
+		oneAnswerCheckBox.addChangeListener(this);
+		editCaptionInHtmlBtn.addActionListener(this);
+		editQuestionInHtmlBtn.addActionListener(this);
+		editAnswerVariantInHtmlEditor.addActionListener(this);
+
+		answersTable = new javax.swing.JTable();
+		answersTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+
+		setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);
+
+		generalPanel.setBorder(javax.swing.BorderFactory
+				.createTitledBorder("General"));
+		titleLabel.setText("Title");
+
+		javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(
+				generalPanel);
+		generalPanel.setLayout(jPanel1Layout);
+		jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING).addGroup(
+				jPanel1Layout.createSequentialGroup().addContainerGap()
+						.addComponent(titleLabel)).addGroup(
+				jPanel1Layout.createSequentialGroup().addContainerGap()
+						.addComponent(titleTextField,
+								javax.swing.GroupLayout.DEFAULT_SIZE, 364,
+								Short.MAX_VALUE).addContainerGap()));
+		jPanel1Layout
+				.setVerticalGroup(jPanel1Layout
+						.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.LEADING)
+						.addGroup(
+								jPanel1Layout
+										.createSequentialGroup()
+										.addComponent(titleLabel)
+										.addPreferredGap(
+												javax.swing.LayoutStyle.ComponentPlacement.RELATED,
+												javax.swing.GroupLayout.DEFAULT_SIZE,
+												Short.MAX_VALUE)
+										.addComponent(
+												titleTextField,
+												javax.swing.GroupLayout.PREFERRED_SIZE,
+												javax.swing.GroupLayout.DEFAULT_SIZE,
+												javax.swing.GroupLayout.PREFERRED_SIZE)
+										.addContainerGap()));
+
+		captionPanel.setBorder(javax.swing.BorderFactory
+				.createTitledBorder("Caption"));
+		sameAsTitleCheckBox.setText("Some as the title");
+
+		javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(
+				captionPanel);
+		captionPanel.setLayout(jPanel2Layout);
+		jPanel2Layout
+				.setHorizontalGroup(jPanel2Layout
+						.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.LEADING)
+						.addGroup(
+								jPanel2Layout
+										.createSequentialGroup()
+										.addContainerGap()
+										.addGroup(
+												jPanel2Layout
+														.createParallelGroup(
+																javax.swing.GroupLayout.Alignment.LEADING)
+														.addComponent(
+																sameAsTitleCheckBox))
+										.addContainerGap(283, Short.MAX_VALUE))
+						.addGroup(
+								javax.swing.GroupLayout.Alignment.TRAILING,
+								jPanel2Layout
+										.createSequentialGroup()
+										.addContainerGap()
+										.addComponent(
+												captionTextField,
+												javax.swing.GroupLayout.DEFAULT_SIZE,
+												370, Short.MAX_VALUE)
+										.addPreferredGap(
+												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+										.addComponent(
+												editCaptionInHtmlBtn,
+												javax.swing.GroupLayout.PREFERRED_SIZE,
+												30,
+												javax.swing.GroupLayout.PREFERRED_SIZE)
+										.addContainerGap()));
+		jPanel2Layout
+				.setVerticalGroup(jPanel2Layout
+						.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.LEADING)
+						.addGroup(
+								jPanel2Layout
+										.createSequentialGroup()
+										.addComponent(sameAsTitleCheckBox)
+										.addPreferredGap(
+												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+										.addGroup(
+												jPanel2Layout
+														.createParallelGroup(
+																javax.swing.GroupLayout.Alignment.BASELINE)
+														.addComponent(
+																editCaptionInHtmlBtn,
+																javax.swing.GroupLayout.PREFERRED_SIZE,
+																20,
+																javax.swing.GroupLayout.PREFERRED_SIZE)
+														.addComponent(
+																captionTextField,
+																javax.swing.GroupLayout.PREFERRED_SIZE,
+																javax.swing.GroupLayout.DEFAULT_SIZE,
+																javax.swing.GroupLayout.PREFERRED_SIZE))
+										.addContainerGap()));
+
+		questionPanel.setBorder(javax.swing.BorderFactory
+				.createTitledBorder("Question"));
+		oneAnswerCheckBox.setText("Only one correct answer");
+
+		javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(
+				questionPanel);
+		questionPanel.setLayout(jPanel3Layout);
+		jPanel3Layout
+				.setHorizontalGroup(jPanel3Layout
+						.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.LEADING)
+						.addGroup(
+								jPanel3Layout
+										.createSequentialGroup()
+										.addContainerGap()
+										.addGroup(
+												jPanel3Layout
+														.createParallelGroup(
+																javax.swing.GroupLayout.Alignment.LEADING)
+														.addComponent(
+																oneAnswerCheckBox))
+										.addContainerGap(283, Short.MAX_VALUE))
+						.addGroup(
+								javax.swing.GroupLayout.Alignment.TRAILING,
+								jPanel3Layout
+										.createSequentialGroup()
+										.addContainerGap()
+										.addComponent(
+												questionTextField,
+												javax.swing.GroupLayout.DEFAULT_SIZE,
+												370, Short.MAX_VALUE)
+										.addPreferredGap(
+												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+										.addComponent(
+												editQuestionInHtmlBtn,
+												javax.swing.GroupLayout.PREFERRED_SIZE,
+												30,
+												javax.swing.GroupLayout.PREFERRED_SIZE)
+										.addContainerGap()));
+		jPanel3Layout
+				.setVerticalGroup(jPanel3Layout
+						.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.LEADING)
+						.addGroup(
+								jPanel3Layout
+										.createSequentialGroup()
+										.addPreferredGap(
+												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+										.addComponent(oneAnswerCheckBox)
+										.addPreferredGap(
+												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+										.addGroup(
+												jPanel3Layout
+														.createParallelGroup(
+																javax.swing.GroupLayout.Alignment.BASELINE)
+														.addComponent(
+																editQuestionInHtmlBtn,
+																javax.swing.GroupLayout.PREFERRED_SIZE,
+																20,
+																javax.swing.GroupLayout.PREFERRED_SIZE)
+														.addComponent(
+																questionTextField,
+																javax.swing.GroupLayout.PREFERRED_SIZE,
+																javax.swing.GroupLayout.DEFAULT_SIZE,
+																javax.swing.GroupLayout.PREFERRED_SIZE))
+										.addContainerGap()));
+
+		answersPanel.setBorder(javax.swing.BorderFactory
+				.createTitledBorder("Variants of answer"));
+
+		jScrollPane1.setViewportView(answersTable);
+
+		javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(
+				answersPanel);
+		answersPanel.setLayout(jPanel4Layout);
+		jPanel4Layout.setHorizontalGroup(jPanel4Layout.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.TRAILING).addGroup(
+				jPanel4Layout.createSequentialGroup()
+					.addComponent(moveUpAnswerVariantBtn)
+					.addContainerGap(10, 10)
+					.addComponent(moveDownAnswerVariantBtn)
+					.addContainerGap(10, 10)
+					.addComponent(insertAnswerVariantBtn)
+					.addContainerGap(10, 10)
+					.addComponent(deleteAnswerVariantBtn)
+					.addContainerGap(10, 10)
+					.addComponent(
+								editAnswerVariantInHtmlEditor)
+						.addContainerGap()).addGroup(
+				jPanel4Layout.createSequentialGroup().addContainerGap()
+						.addComponent(jScrollPane1,
+								javax.swing.GroupLayout.DEFAULT_SIZE, 364,
+								Short.MAX_VALUE).addContainerGap()));
+
+		jPanel4Layout
+				.setVerticalGroup(jPanel4Layout
+						.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.LEADING)
+						.addGroup(
+								jPanel4Layout
+										.createSequentialGroup()
+										.addContainerGap()
+										.addComponent(
+												jScrollPane1,
+												javax.swing.GroupLayout.DEFAULT_SIZE,
+												111, Short.MAX_VALUE)
+										.addContainerGap(10, 10)
+										.addGroup(
+												jPanel4Layout
+														.createParallelGroup(
+																javax.swing.GroupLayout.Alignment.BASELINE)
+														.addComponent(
+																moveUpAnswerVariantBtn,
+																20, 20, 20)
+														.addComponent(
+																moveDownAnswerVariantBtn,
+																20, 20, 20)
+														.addComponent(
+																insertAnswerVariantBtn,
+																20, 20, 20)
+														.addComponent(
+																deleteAnswerVariantBtn,
+																20, 20, 20)
+														.addComponent(
+																editAnswerVariantInHtmlEditor,
+																20, 20, 20))
+										.addContainerGap()));
+
+		javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
+				getContentPane());
+		getContentPane().setLayout(layout);
+		layout
+				.setHorizontalGroup(layout
+						.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.LEADING)
+						.addGroup(
+								layout
+										.createSequentialGroup()
+										.addContainerGap()
+										.addGroup(
+												layout
+														.createParallelGroup(
+																javax.swing.GroupLayout.Alignment.LEADING)
+														.addComponent(
+																answersPanel,
+																javax.swing.GroupLayout.DEFAULT_SIZE,
+																javax.swing.GroupLayout.DEFAULT_SIZE,
+																Short.MAX_VALUE)
+														.addComponent(
+																questionPanel,
+																javax.swing.GroupLayout.DEFAULT_SIZE,
+																javax.swing.GroupLayout.DEFAULT_SIZE,
+																Short.MAX_VALUE)
+														.addComponent(
+																captionPanel,
+																javax.swing.GroupLayout.DEFAULT_SIZE,
+																javax.swing.GroupLayout.DEFAULT_SIZE,
+																Short.MAX_VALUE)
+														.addComponent(
+																generalPanel,
+																javax.swing.GroupLayout.DEFAULT_SIZE,
+																javax.swing.GroupLayout.DEFAULT_SIZE,
+																Short.MAX_VALUE)
+														.addGroup(
+																javax.swing.GroupLayout.Alignment.TRAILING,
+																layout
+																		.createSequentialGroup()
+																		.addComponent(
+																				okButton)
+																		.addPreferredGap(
+																				javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+																		.addComponent(
+																				cancelButton)))
+										.addContainerGap()));
+		layout
+				.setVerticalGroup(layout
+						.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.LEADING)
+						.addGroup(
+								layout
+										.createSequentialGroup()
+										.addContainerGap()
+										.addComponent(
+												generalPanel,
+												javax.swing.GroupLayout.PREFERRED_SIZE,
+												javax.swing.GroupLayout.DEFAULT_SIZE,
+												javax.swing.GroupLayout.PREFERRED_SIZE)
+										.addPreferredGap(
+												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+										.addComponent(
+												captionPanel,
+												javax.swing.GroupLayout.PREFERRED_SIZE,
+												javax.swing.GroupLayout.DEFAULT_SIZE,
+												javax.swing.GroupLayout.PREFERRED_SIZE)
+										.addPreferredGap(
+												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+										.addComponent(
+												questionPanel,
+												javax.swing.GroupLayout.PREFERRED_SIZE,
+												javax.swing.GroupLayout.DEFAULT_SIZE,
+												javax.swing.GroupLayout.PREFERRED_SIZE)
+										.addPreferredGap(
+												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+										.addComponent(
+												answersPanel,
+												javax.swing.GroupLayout.PREFERRED_SIZE,
+												javax.swing.GroupLayout.DEFAULT_SIZE,
+												javax.swing.GroupLayout.PREFERRED_SIZE)
+										.addPreferredGap(
+												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+										.addGroup(
+												layout
+														.createParallelGroup(
+																javax.swing.GroupLayout.Alignment.BASELINE)
+														.addComponent(
+																cancelButton,
+																20, 20, 20)
+														.addComponent(okButton,
+																20, 20, 20))
+										.addContainerGap(
+												javax.swing.GroupLayout.DEFAULT_SIZE,
+												Short.MAX_VALUE)));
+
+		this.getRootPane().setDefaultButton(okButton);
+
+		pack();
+	}
+
+	@Override
+	protected void saveChanges() {
+		SimpleQuestionModel itemModel = new SimpleQuestionModel();
+
+		manifestItem.setTitle(titleTextField.getText());
+
+		SimpleQuestionData data = itemModel.getData(manifestItem);
+
+		if (sameAsTitleCheckBox.isSelected()) {
+			data.setCaption(titleTextField.getText());
+		} else {
+			data.setCaption(captionTextField.getText());
+		}
+
+		data.setQuestion(questionTextField.getText());
+
+		data.setAnswers(simpleQuestionAnswersDataModel);
+
+		itemModel.updateItemResource(manifestItem, true);
+	}
+
+	@Override
+	public void stateChanged(ChangeEvent e) {
+		if (e.getSource() == sameAsTitleCheckBox) {
+			if (sameAsTitleCheckBox.isSelected()
+					&& captionTextField.isEnabled()) {
+				captionTextField.setText(titleTextField.getText());
+			}
+			captionTextField.setEnabled(!sameAsTitleCheckBox.isSelected());
+		}
+
+		if (e.getSource() == oneAnswerCheckBox) {
+			simpleQuestionAnswersDataModel.setSingleVariant(oneAnswerCheckBox
+					.isSelected());
+		}
+	}
+
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-14 21:36:46
      
     | 
| Revision: 139
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=139&view=rev
Author:   sem62
Date:     2008-05-14 14:36:31 -0700 (Wed, 14 May 2008)
Log Message:
-----------
Added cellSizeUpdae calls in MouseLister.
Modified Paths:
--------------
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineCellRenderer.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java	2008-05-14 21:05:22 UTC (rev 138)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java	2008-05-14 21:36:31 UTC (rev 139)
@@ -210,8 +210,7 @@
 		partsTable = new javax.swing.JTable();
 		partsTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
 		
-		partsTable.setDefaultRenderer(String.class, new MultiLineCellRenderer());
-		partsTable.setDefaultRenderer(Object.class, new MultiLineCellRenderer());
+		partsTable.setDefaultRenderer(MultiLineCellRenderer.class, new MultiLineCellRenderer());
 		partsTable.setDefaultRenderer(PartOptionsPanel.class, new PartOptionsPanel());
 
 		setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineCellRenderer.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineCellRenderer.java	2008-05-14 21:05:22 UTC (rev 138)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineCellRenderer.java	2008-05-14 21:36:31 UTC (rev 139)
@@ -8,15 +8,15 @@
 import javax.swing.border.EmptyBorder;
 import javax.swing.table.TableCellRenderer;
 
-class MultiLineCellRenderer extends JTextArea implements TableCellRenderer {
+public class MultiLineCellRenderer extends JTextArea implements TableCellRenderer {
 	/**
 	 * 
 	 */
 	private static final long serialVersionUID = 1L;
 
 	public MultiLineCellRenderer() {
+		setWrapStyleWord(true);
 		setLineWrap(true);
-		setWrapStyleWord(true);
 		setOpaque(true);
 	}
 
@@ -39,7 +39,12 @@
 		} else {
 			setBorder(new EmptyBorder(1, 2, 1, 2));
 		}
+
 		setText((value == null) ? "" : value.toString());
+
+//		int thisHeight = getPreferredSize().height + 2;
+//		table.setRowHeight(row, thisHeight);
+
 		return this;
 	}
 }
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java	2008-05-14 21:05:22 UTC (rev 138)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java	2008-05-14 21:36:31 UTC (rev 139)
@@ -1,6 +1,10 @@
 package edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ;
 
 import java.awt.Component;
+import java.awt.event.InputMethodEvent;
+import java.awt.event.InputMethodListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
 
 import javax.swing.AbstractCellEditor;
 import javax.swing.BorderFactory;
@@ -9,43 +13,84 @@
 import javax.swing.JTextArea;
 import javax.swing.table.TableCellEditor;
 
-public class MultiLineTableCellEditor extends AbstractCellEditor implements TableCellEditor
-{
+public class MultiLineTableCellEditor extends AbstractCellEditor implements
+		TableCellEditor, InputMethodListener, KeyListener {
+	@Override
+	public void keyPressed(KeyEvent e) {
+//		cellSizeUpdate();
+	}
+
+	@Override
+	public void keyReleased(KeyEvent e) {
+//		cellSizeUpdate();
+	}
+
+	@Override
+	public void keyTyped(KeyEvent e) {
+		cellSizeUpdate();
+	}
+
+	protected int tableRow;
+	protected JTable table;
+
+	@Override
+	public void caretPositionChanged(InputMethodEvent arg0) {
+		cellSizeUpdate();
+	}
+
+	private void cellSizeUpdate() {
+		int thisHeight = myEditor.getPreferredSize().height + 2;
+		table.setRowHeight(tableRow, thisHeight);
+	}
+
+	@Override
+	public void inputMethodTextChanged(InputMethodEvent arg0) {
+		cellSizeUpdate();
+	}
+
 	/**
 	 * 
 	 */
 	private static final long serialVersionUID = 1L;
 	protected JTextArea myEditor;
 	protected JScrollPane myScrollPane;
-	
+
 	public MultiLineTableCellEditor() {
 		myEditor = new JTextArea();
 		myEditor.setWrapStyleWord(true);
 		myEditor.setLineWrap(true);
 		myEditor.setOpaque(true);
-//		myEditor.setRows(3);
+		myEditor.addInputMethodListener(this);
+		myEditor.addKeyListener(this);
+
 		myScrollPane = new JScrollPane(myEditor);
 		myScrollPane.setBorder(BorderFactory.createEmptyBorder());
-		myScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+		myScrollPane
+				.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
 		myScrollPane.getVerticalScrollBar().setFocusable(false);
 		myScrollPane.getHorizontalScrollBar().setFocusable(false);
 	}
 
 	public Component getTableCellEditorComponent(JTable table, Object value,
-			boolean isSelected, int row, int column) 
-	{
-		myEditor.setBackground(isSelected ? table.getSelectionBackground() : table.getBackground());
-		myEditor.setForeground(isSelected ? table.getSelectionForeground() : table.getForeground());
+			boolean isSelected, int row, int column) {
+		this.table = table;
+		this.tableRow = row;
+
+		myEditor.setBackground(isSelected ? table.getSelectionBackground()
+				: table.getBackground());
+		myEditor.setForeground(isSelected ? table.getSelectionForeground()
+				: table.getForeground());
 		myEditor.setText(value == null ? "" : value.toString());
 
-		myScrollPane.setBounds(0,0,table.getColumnModel().getColumn(column).getWidth(), 0);
-		int thisHeight = myEditor.getPreferredSize().height+2;
-		table.setRowHeight(row, thisHeight);
-		
+		myScrollPane.setBounds(0, 0, table.getColumnModel().getColumn(column)
+				.getWidth(), 0);
+
+		cellSizeUpdate();
+
 		return myScrollPane;
 	}
 
 	public Object getCellEditorValue() {
 		return myEditor.getText();
-	}	
+	}
 }
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java	2008-05-14 21:05:22 UTC (rev 138)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java	2008-05-14 21:36:31 UTC (rev 139)
@@ -5,6 +5,7 @@
 
 import javax.swing.table.DefaultTableModel;
 
+import edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ.MultiLineCellRenderer;
 import edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ.PartOptionsPanel;
 
 public class CompileQPartsTableModel extends DefaultTableModel {
@@ -19,7 +20,10 @@
 
 	@Override
 	public Class<?> getColumnClass(int col) {
-		
+		if (col == 1){
+			return MultiLineCellRenderer.class;
+		}
+
 		if (col == 2){
 			return PartOptionsPanel.class;
 		}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-14 21:06:42
      
     | 
| Revision: 138
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=138&view=rev
Author:   sem62
Date:     2008-05-14 14:05:22 -0700 (Wed, 14 May 2008)
Log Message:
-----------
Added CompileQ model.
Not working properly jet.
Modified Paths:
--------------
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/TreeDataModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModels.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java
Added Paths:
-----------
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineCellRenderer.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartOptionsPanel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPart.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java	                        (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java	2008-05-14 21:05:22 UTC (rev 138)
@@ -0,0 +1,508 @@
+package edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import javax.swing.table.DefaultTableColumnModel;
+
+import edu.lnu.FireFly.WebEditor.GUI.Dialogs.PropertyDlg;
+import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.CompileQData;
+import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.CompileQModel;
+import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.CompileQPartsTableModel;
+
+/**
+ * 
+ * @author Yura
+ */
+public class CompileQPropertiestsDlg extends PropertyDlg implements
+		ActionListener, ChangeListener {
+
+	private static final long serialVersionUID = 1961383080461718171L;
+
+	private javax.swing.JCheckBox sameAsTitleCheckBox;
+	private javax.swing.JCheckBox oneAnswerCheckBox;
+	private javax.swing.JLabel titleLabel;
+	private javax.swing.JPanel generalPanel;
+	private javax.swing.JPanel captionPanel;
+	private javax.swing.JPanel partsPanel;
+	private javax.swing.JScrollPane jScrollPane1;
+	private javax.swing.JTable partsTable;
+	private javax.swing.JTextField titleTextField;
+	private javax.swing.JTextField captionTextField;
+	private javax.swing.JTextField questionTextField;
+	private javax.swing.JButton editCaptionInHtmlBtn;
+	private javax.swing.JButton editQuestionInHtmlBtn;
+	private javax.swing.JButton editAnswerVariantInHtmlEditor;
+	private javax.swing.JButton insertAnswerVariantBtn;
+	private javax.swing.JButton deleteAnswerVariantBtn;
+	private javax.swing.JButton moveUpAnswerVariantBtn;
+	private javax.swing.JButton moveDownAnswerVariantBtn;
+	private CompileQPartsTableModel simpleQuestionAnswersDataModel;
+
+	private javax.swing.JTextField currentAnswerVariant;
+
+	public CompileQPropertiestsDlg() {
+		obj = this;
+
+		initComponents();
+	}
+
+	@Override
+	public void actionPerformed(ActionEvent arg0) {
+		super.actionPerformed(arg0);
+
+		if (arg0.getSource() == editQuestionInHtmlBtn) {
+			editTextFieldInHtmlEditor(questionTextField);
+		}
+
+		if (arg0.getSource() == editCaptionInHtmlBtn) {
+			editTextFieldInHtmlEditor(captionTextField);
+		}
+
+		if (arg0.getSource() == editAnswerVariantInHtmlEditor) {
+			int selectedRow = partsTable.getSelectedRow();
+
+			if (selectedRow < 0) {
+				return;
+			}
+
+			String text = partsTable.getModel().getValueAt(selectedRow, 1)
+					.toString();
+
+			currentAnswerVariant.setText(text);
+
+			editTextFieldInHtmlEditor(currentAnswerVariant);
+		}
+
+		if (arg0.getSource() == insertAnswerVariantBtn) {
+			int selectedRow = partsTable.getSelectedRow();
+
+			if (selectedRow < 0) {
+				return;
+			}
+
+			simpleQuestionAnswersDataModel.insertRow(selectedRow);
+			partsTable.getSelectionModel().setSelectionInterval(selectedRow + 1, selectedRow + 1);
+		}
+
+		if (arg0.getSource() == deleteAnswerVariantBtn) {
+			int selectedRow = partsTable.getSelectedRow();
+
+			if (selectedRow < 0) {
+				return;
+			}
+
+			simpleQuestionAnswersDataModel.deleteRow(selectedRow);
+			
+			if (selectedRow >= simpleQuestionAnswersDataModel.getRowCount()){
+				selectedRow--;
+			}
+			
+			partsTable.getSelectionModel().setSelectionInterval(selectedRow,
+					selectedRow);
+		}
+		if (arg0.getSource() == moveUpAnswerVariantBtn) {
+			int selectedRow = partsTable.getSelectedRow();
+
+			if (selectedRow < 0) {
+				return;
+			}
+
+			if (simpleQuestionAnswersDataModel.moveUp(selectedRow)){
+				partsTable.getSelectionModel().setSelectionInterval(selectedRow - 1, selectedRow - 1);
+			}
+		}
+
+		if (arg0.getSource() == moveDownAnswerVariantBtn) {
+			int selectedRow = partsTable.getSelectedRow();
+
+			if (selectedRow < 0) {
+				return;
+			}
+
+			if (simpleQuestionAnswersDataModel.moveDown(selectedRow)){
+				partsTable.getSelectionModel().setSelectionInterval(selectedRow + 1, selectedRow+1);
+			}
+		}
+	}
+
+	@Override
+	protected void fillFields() {
+		CompileQPropertiestsDlg dlg = (CompileQPropertiestsDlg) obj;
+		dlg.titleTextField.setText(manifestItem.getTitle());
+
+		CompileQModel itemModel = new CompileQModel();
+
+		dlg.captionTextField.setText(itemModel.getData(manifestItem)
+				.getCaption());
+		dlg.sameAsTitleCheckBox.setSelected(dlg.titleTextField.getText()
+				.equals(dlg.captionTextField.getText()));
+		dlg.questionTextField.setText(itemModel.getData(manifestItem)
+				.getQuestion());
+
+		dlg.simpleQuestionAnswersDataModel = itemModel.getData(manifestItem)
+				.getAnswers();
+		dlg.partsTable.setModel(dlg.simpleQuestionAnswersDataModel);
+		partsTable.getColumnModel().getColumn(1).setCellEditor(new MultiLineTableCellEditor());
+
+		DefaultTableColumnModel columnModel = (DefaultTableColumnModel) dlg.partsTable
+				.getColumnModel();
+		columnModel.getColumn(0).setPreferredWidth(1);
+		columnModel.getColumn(1).setPreferredWidth(300);
+		columnModel.getColumn(2).setPreferredWidth(1);
+
+		dlg.titleTextField.selectAll();
+	}
+
+	@Override
+	public void editedHtmlTextWasSet() {
+		super.editedHtmlTextWasSet();
+
+		String text = currentAnswerVariant.getText();
+		int selectedRow = partsTable.getSelectedRow();
+		partsTable.getModel().setValueAt(text, selectedRow, 1);
+	}
+
+	private void initComponents() {
+		setTitle("Propertiests...");
+
+		generalPanel = new javax.swing.JPanel();
+		titleLabel = new javax.swing.JLabel();
+		titleTextField = new javax.swing.JTextField();
+		captionPanel = new javax.swing.JPanel();
+		captionTextField = new javax.swing.JTextField();
+		sameAsTitleCheckBox = new javax.swing.JCheckBox();
+		questionTextField = new javax.swing.JTextField();
+		oneAnswerCheckBox = new javax.swing.JCheckBox();
+		partsPanel = new javax.swing.JPanel();
+		jScrollPane1 = new javax.swing.JScrollPane();
+		cancelButton = new javax.swing.JButton("Cancel");
+		okButton = new javax.swing.JButton("Ok");
+		editCaptionInHtmlBtn = new JButton("...");
+		editQuestionInHtmlBtn = new JButton("...");
+		editAnswerVariantInHtmlEditor = new JButton("HTML Editor");
+		insertAnswerVariantBtn = new JButton("Insert");
+		deleteAnswerVariantBtn = new JButton("Delete");
+
+		moveDownAnswerVariantBtn = new JButton("Down");
+		moveUpAnswerVariantBtn = new JButton("Up");
+
+		insertAnswerVariantBtn.addActionListener(this);
+		deleteAnswerVariantBtn.addActionListener(this);
+		moveDownAnswerVariantBtn.addActionListener(this);
+		moveUpAnswerVariantBtn.addActionListener(this);
+
+		currentAnswerVariant = new javax.swing.JTextField();
+		captionTextField.addActionListener(this);
+
+		cancelButton.addActionListener(this);
+		okButton.addActionListener(this);
+		sameAsTitleCheckBox.addChangeListener(this);
+		oneAnswerCheckBox.addChangeListener(this);
+		editCaptionInHtmlBtn.addActionListener(this);
+		editQuestionInHtmlBtn.addActionListener(this);
+		editAnswerVariantInHtmlEditor.addActionListener(this);
+
+		partsTable = new javax.swing.JTable();
+		partsTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+		
+		partsTable.setDefaultRenderer(String.class, new MultiLineCellRenderer());
+		partsTable.setDefaultRenderer(Object.class, new MultiLineCellRenderer());
+		partsTable.setDefaultRenderer(PartOptionsPanel.class, new PartOptionsPanel());
+
+		setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);
+
+		generalPanel.setBorder(javax.swing.BorderFactory
+				.createTitledBorder("General"));
+		titleLabel.setText("Title");
+
+		javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(
+				generalPanel);
+		generalPanel.setLayout(jPanel1Layout);
+		jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.LEADING).addGroup(
+				jPanel1Layout.createSequentialGroup().addContainerGap()
+						.addComponent(titleLabel)).addGroup(
+				jPanel1Layout.createSequentialGroup().addContainerGap()
+						.addComponent(titleTextField,
+								javax.swing.GroupLayout.DEFAULT_SIZE, 364,
+								Short.MAX_VALUE).addContainerGap()));
+		jPanel1Layout
+				.setVerticalGroup(jPanel1Layout
+						.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.LEADING)
+						.addGroup(
+								jPanel1Layout
+										.createSequentialGroup()
+										.addComponent(titleLabel)
+										.addPreferredGap(
+												javax.swing.LayoutStyle.ComponentPlacement.RELATED,
+												javax.swing.GroupLayout.DEFAULT_SIZE,
+												Short.MAX_VALUE)
+										.addComponent(
+												titleTextField,
+												javax.swing.GroupLayout.PREFERRED_SIZE,
+												javax.swing.GroupLayout.DEFAULT_SIZE,
+												javax.swing.GroupLayout.PREFERRED_SIZE)
+										.addContainerGap()));
+
+		captionPanel.setBorder(javax.swing.BorderFactory
+				.createTitledBorder("Caption"));
+		sameAsTitleCheckBox.setText("Some as the title");
+
+		javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(
+				captionPanel);
+		captionPanel.setLayout(jPanel2Layout);
+		jPanel2Layout
+				.setHorizontalGroup(jPanel2Layout
+						.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.LEADING)
+						.addGroup(
+								jPanel2Layout
+										.createSequentialGroup()
+										.addContainerGap()
+										.addGroup(
+												jPanel2Layout
+														.createParallelGroup(
+																javax.swing.GroupLayout.Alignment.LEADING)
+														.addComponent(
+																sameAsTitleCheckBox))
+										.addContainerGap(283, Short.MAX_VALUE))
+						.addGroup(
+								javax.swing.GroupLayout.Alignment.TRAILING,
+								jPanel2Layout
+										.createSequentialGroup()
+										.addContainerGap()
+										.addComponent(
+												captionTextField,
+												javax.swing.GroupLayout.DEFAULT_SIZE,
+												370, Short.MAX_VALUE)
+										.addPreferredGap(
+												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+										.addComponent(
+												editCaptionInHtmlBtn,
+												javax.swing.GroupLayout.PREFERRED_SIZE,
+												30,
+												javax.swing.GroupLayout.PREFERRED_SIZE)
+										.addContainerGap()));
+		jPanel2Layout
+				.setVerticalGroup(jPanel2Layout
+						.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.LEADING)
+						.addGroup(
+								jPanel2Layout
+										.createSequentialGroup()
+										.addComponent(sameAsTitleCheckBox)
+										.addPreferredGap(
+												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+										.addGroup(
+												jPanel2Layout
+														.createParallelGroup(
+																javax.swing.GroupLayout.Alignment.BASELINE)
+														.addComponent(
+																editCaptionInHtmlBtn,
+																javax.swing.GroupLayout.PREFERRED_SIZE,
+																20,
+																javax.swing.GroupLayout.PREFERRED_SIZE)
+														.addComponent(
+																captionTextField,
+																javax.swing.GroupLayout.PREFERRED_SIZE,
+																javax.swing.GroupLayout.DEFAULT_SIZE,
+																javax.swing.GroupLayout.PREFERRED_SIZE))
+										.addContainerGap()));
+
+		oneAnswerCheckBox.setText("Only one correct answer");
+
+		partsPanel.setBorder(javax.swing.BorderFactory
+				.createTitledBorder("Variants of answer"));
+
+		jScrollPane1.setViewportView(partsTable);
+
+		javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(
+				partsPanel);
+		partsPanel.setLayout(jPanel4Layout);
+		jPanel4Layout.setHorizontalGroup(jPanel4Layout.createParallelGroup(
+				javax.swing.GroupLayout.Alignment.TRAILING).addGroup(
+				jPanel4Layout.createSequentialGroup()
+					.addComponent(moveUpAnswerVariantBtn)
+					.addContainerGap(10, 10)
+					.addComponent(moveDownAnswerVariantBtn)
+					.addContainerGap(10, 10)
+					.addComponent(insertAnswerVariantBtn)
+					.addContainerGap(10, 10)
+					.addComponent(deleteAnswerVariantBtn)
+					.addContainerGap(10, 10)
+					.addComponent(
+								editAnswerVariantInHtmlEditor)
+						.addContainerGap()).addGroup(
+				jPanel4Layout.createSequentialGroup().addContainerGap()
+						.addComponent(jScrollPane1,
+								javax.swing.GroupLayout.DEFAULT_SIZE, 364,
+								Short.MAX_VALUE).addContainerGap()));
+
+		jPanel4Layout
+				.setVerticalGroup(jPanel4Layout
+						.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.LEADING)
+						.addGroup(
+								jPanel4Layout
+										.createSequentialGroup()
+										.addContainerGap()
+										.addComponent(
+												jScrollPane1,
+												javax.swing.GroupLayout.DEFAULT_SIZE,
+												111, Short.MAX_VALUE)
+										.addContainerGap(10, 10)
+										.addGroup(
+												jPanel4Layout
+														.createParallelGroup(
+																javax.swing.GroupLayout.Alignment.BASELINE)
+														.addComponent(
+																moveUpAnswerVariantBtn,
+																20, 20, 20)
+														.addComponent(
+																moveDownAnswerVariantBtn,
+																20, 20, 20)
+														.addComponent(
+																insertAnswerVariantBtn,
+																20, 20, 20)
+														.addComponent(
+																deleteAnswerVariantBtn,
+																20, 20, 20)
+														.addComponent(
+																editAnswerVariantInHtmlEditor,
+																20, 20, 20))
+										.addContainerGap()));
+
+		javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
+				getContentPane());
+		getContentPane().setLayout(layout);
+		layout
+				.setHorizontalGroup(layout
+						.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.LEADING)
+						.addGroup(
+								layout
+										.createSequentialGroup()
+										.addContainerGap()
+										.addGroup(
+												layout
+														.createParallelGroup(
+																javax.swing.GroupLayout.Alignment.LEADING)
+														.addComponent(
+																partsPanel,
+																600,
+																600,
+																Short.MAX_VALUE)
+														.addComponent(
+																captionPanel,
+																javax.swing.GroupLayout.DEFAULT_SIZE,
+																javax.swing.GroupLayout.DEFAULT_SIZE,
+																Short.MAX_VALUE)
+														.addComponent(
+																generalPanel,
+																javax.swing.GroupLayout.DEFAULT_SIZE,
+																javax.swing.GroupLayout.DEFAULT_SIZE,
+																Short.MAX_VALUE)
+														.addGroup(
+																javax.swing.GroupLayout.Alignment.TRAILING,
+																layout
+																		.createSequentialGroup()
+																		.addComponent(
+																				okButton)
+																		.addPreferredGap(
+																				javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+																		.addComponent(
+																				cancelButton)))
+										.addContainerGap()));
+		layout
+				.setVerticalGroup(layout
+						.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.LEADING)
+						.addGroup(
+								layout
+										.createSequentialGroup()
+										.addContainerGap()
+										.addComponent(
+												generalPanel,
+												javax.swing.GroupLayout.PREFERRED_SIZE,
+												javax.swing.GroupLayout.DEFAULT_SIZE,
+												javax.swing.GroupLayout.PREFERRED_SIZE)
+										.addPreferredGap(
+												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+										.addComponent(
+												captionPanel,
+												javax.swing.GroupLayout.PREFERRED_SIZE,
+												javax.swing.GroupLayout.DEFAULT_SIZE,
+												javax.swing.GroupLayout.PREFERRED_SIZE)
+										.addPreferredGap(
+												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+										.addPreferredGap(
+												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+										.addComponent(
+												partsPanel,
+												300,
+												300,
+												300)
+										.addPreferredGap(
+												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+										.addGroup(
+												layout
+														.createParallelGroup(
+																javax.swing.GroupLayout.Alignment.BASELINE)
+														.addComponent(
+																cancelButton,
+																20, 20, 20)
+														.addComponent(okButton,
+																20, 20, 20))
+										.addContainerGap(
+												javax.swing.GroupLayout.DEFAULT_SIZE,
+												Short.MAX_VALUE)));
+
+		this.getRootPane().setDefaultButton(okButton);
+
+		pack();
+	}
+
+	@Override
+	protected void saveChanges() {
+		CompileQModel itemModel = new CompileQModel();
+		
+		manifestItem.setTitle(titleTextField.getText());
+
+		CompileQData data = itemModel.getData(manifestItem);
+
+		if (sameAsTitleCheckBox.isSelected()) {
+			data.setCaption(titleTextField.getText());
+		} else {
+			data.setCaption(captionTextField.getText());
+		}
+
+		data.setQuestion(questionTextField.getText());
+
+		data.setAnswers(simpleQuestionAnswersDataModel);
+
+		itemModel.updateItemResource(manifestItem, true);
+	}
+
+	@Override
+	public void stateChanged(ChangeEvent e) {
+		if (e.getSource() == sameAsTitleCheckBox) {
+			if (sameAsTitleCheckBox.isSelected()
+					&& captionTextField.isEnabled()) {
+				captionTextField.setText(titleTextField.getText());
+			}
+			captionTextField.setEnabled(!sameAsTitleCheckBox.isSelected());
+		}
+
+		if (e.getSource() == oneAnswerCheckBox) {
+			simpleQuestionAnswersDataModel.setSingleVariant(oneAnswerCheckBox
+					.isSelected());
+		}
+	}
+
+}
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineCellRenderer.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineCellRenderer.java	                        (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineCellRenderer.java	2008-05-14 21:05:22 UTC (rev 138)
@@ -0,0 +1,45 @@
+package edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ;
+
+import java.awt.Component;
+
+import javax.swing.JTable;
+import javax.swing.JTextArea;
+import javax.swing.UIManager;
+import javax.swing.border.EmptyBorder;
+import javax.swing.table.TableCellRenderer;
+
+class MultiLineCellRenderer extends JTextArea implements TableCellRenderer {
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	public MultiLineCellRenderer() {
+		setLineWrap(true);
+		setWrapStyleWord(true);
+		setOpaque(true);
+	}
+
+	public Component getTableCellRendererComponent(JTable table, Object value,
+			boolean isSelected, boolean hasFocus, int row, int column) {
+		if (isSelected) {
+			setForeground(table.getSelectionForeground());
+			setBackground(table.getSelectionBackground());
+		} else {
+			setForeground(table.getForeground());
+			setBackground(table.getBackground());
+		}
+		setFont(table.getFont());
+		if (hasFocus) {
+			setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));
+			if (table.isCellEditable(row, column)) {
+				setForeground(UIManager.getColor("Table.focusCellForeground"));
+				setBackground(UIManager.getColor("Table.focusCellBackground"));
+			}
+		} else {
+			setBorder(new EmptyBorder(1, 2, 1, 2));
+		}
+		setText((value == null) ? "" : value.toString());
+		return this;
+	}
+}
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java	                        (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java	2008-05-14 21:05:22 UTC (rev 138)
@@ -0,0 +1,51 @@
+package edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ;
+
+import java.awt.Component;
+
+import javax.swing.AbstractCellEditor;
+import javax.swing.BorderFactory;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JTextArea;
+import javax.swing.table.TableCellEditor;
+
+public class MultiLineTableCellEditor extends AbstractCellEditor implements TableCellEditor
+{
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	protected JTextArea myEditor;
+	protected JScrollPane myScrollPane;
+	
+	public MultiLineTableCellEditor() {
+		myEditor = new JTextArea();
+		myEditor.setWrapStyleWord(true);
+		myEditor.setLineWrap(true);
+		myEditor.setOpaque(true);
+//		myEditor.setRows(3);
+		myScrollPane = new JScrollPane(myEditor);
+		myScrollPane.setBorder(BorderFactory.createEmptyBorder());
+		myScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+		myScrollPane.getVerticalScrollBar().setFocusable(false);
+		myScrollPane.getHorizontalScrollBar().setFocusable(false);
+	}
+
+	public Component getTableCellEditorComponent(JTable table, Object value,
+			boolean isSelected, int row, int column) 
+	{
+		myEditor.setBackground(isSelected ? table.getSelectionBackground() : table.getBackground());
+		myEditor.setForeground(isSelected ? table.getSelectionForeground() : table.getForeground());
+		myEditor.setText(value == null ? "" : value.toString());
+
+		myScrollPane.setBounds(0,0,table.getColumnModel().getColumn(column).getWidth(), 0);
+		int thisHeight = myEditor.getPreferredSize().height+2;
+		table.setRowHeight(row, thisHeight);
+		
+		return myScrollPane;
+	}
+
+	public Object getCellEditorValue() {
+		return myEditor.getText();
+	}	
+}
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartOptionsPanel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartOptionsPanel.java	                        (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartOptionsPanel.java	2008-05-14 21:05:22 UTC (rev 138)
@@ -0,0 +1,83 @@
+package edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ;
+
+import java.awt.Component;
+import java.awt.FlowLayout;
+import java.awt.LayoutManager;
+
+import javax.swing.JCheckBox;
+import javax.swing.JPanel;
+import javax.swing.JTable;
+import javax.swing.UIManager;
+import javax.swing.border.EmptyBorder;
+import javax.swing.table.TableCellRenderer;
+
+public class PartOptionsPanel extends JPanel implements TableCellRenderer {
+
+	@Override
+	public Component getTableCellRendererComponent(JTable table, Object value,
+			boolean isSelected, boolean hasFocus, int row, int column) {
+		if (isSelected) {
+			setForeground(table.getSelectionForeground());
+			setBackground(table.getSelectionBackground());
+
+			readOnlyCheckBox.setForeground(table.getSelectionForeground());
+			isAnswerCheckBox.setForeground(table.getSelectionForeground());
+			isVisibleCheckBox.setForeground(table.getSelectionForeground());
+
+			readOnlyCheckBox.setBackground(table.getSelectionBackground());
+			isAnswerCheckBox.setBackground(table.getSelectionBackground());
+			isVisibleCheckBox.setBackground(table.getSelectionBackground());
+		} else {
+			setForeground(table.getForeground());
+			setBackground(table.getBackground());
+
+			readOnlyCheckBox.setForeground(table.getForeground());
+			isAnswerCheckBox.setForeground(table.getForeground());
+			isVisibleCheckBox.setForeground(table.getForeground());
+
+			readOnlyCheckBox.setBackground(table.getBackground());
+			isAnswerCheckBox.setBackground(table.getBackground());
+			isVisibleCheckBox.setBackground(table.getBackground());
+		}
+		setFont(table.getFont());
+		if (hasFocus) {
+			setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));
+			if (table.isCellEditable(row, column)) {
+				setForeground(UIManager.getColor("Table.focusCellForeground"));
+				setBackground(UIManager.getColor("Table.focusCellBackground"));
+			}
+		} else {
+			setBorder(new EmptyBorder(1, 2, 1, 2));
+		}
+
+		
+		
+		return this;
+	}
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	public JCheckBox readOnlyCheckBox;
+	public JCheckBox isAnswerCheckBox;
+	public JCheckBox isVisibleCheckBox;
+
+	public PartOptionsPanel() {
+		initComponents();
+	}
+
+	private void initComponents() {
+		LayoutManager layout = new FlowLayout(FlowLayout.LEFT);
+		setLayout(layout);
+		
+		readOnlyCheckBox = new JCheckBox("read only");
+		isAnswerCheckBox = new JCheckBox("is answer");
+		isVisibleCheckBox = new JCheckBox("is visible");
+
+		add(readOnlyCheckBox);
+		add(isAnswerCheckBox);
+		add(isVisibleCheckBox);
+	}
+}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/TreeDataModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/TreeDataModel.java	2008-05-14 18:01:48 UTC (rev 137)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/TreeDataModel.java	2008-05-14 21:05:22 UTC (rev 138)
@@ -133,16 +133,16 @@
 	}
 	
 	public void treeNodesDeleted(TreeItem item) {
+		TreePath path = getItemPath(item);
+
+		int[] indicies = new int[1];
+		indicies[0] = item.getParent().getChildIndex(item);
+		Object[] children = new Object[1];
+		children[0] = item;
+		TreeModelEvent event = new TreeModelEvent(this, path.getParentPath(), indicies, children);
+
 		for (int i=0; i < listeners.size(); i++){
 			TreeModelListener listener = listeners.get(i);
-			
-			TreePath path = getItemPath(item);
-
-			int[] indicies = new int[1];
-			indicies[0] = item.getParent().getChildIndex(item);
-			Object[] children = new Object[1];
-			children[0] = item;
-			TreeModelEvent event = new TreeModelEvent(this, path.getParentPath(), indicies, children);
 			listener.treeNodesRemoved(event);
 		}
 	}
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java	                        (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java	2008-05-14 21:05:22 UTC (rev 138)
@@ -0,0 +1,108 @@
+package edu.lnu.FireFly.WebEditor.ItemModels.CompileQ;
+
+import java.io.Reader;
+import java.util.Iterator;
+
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+
+import edu.lnu.FireFly.FFManifest.TreeItem;
+import edu.lnu.FireFly.WebEditor.ItemModels.ItemData;
+
+public class CompileQData extends ItemData {
+	@Override
+	public String marshal(TreeItem anItem) {
+		Document doc = DocumentHelper.createDocument();
+		Element root = doc.addElement("SimpleQuestion");
+		root.addElement("caption").setText(getCaption());
+		root.addElement("question").setText(getQuestion());
+
+		root.addElement("ShowOnSummaryPage").setText(
+				String.valueOf(getShowOnSummaryPage()));
+
+		Element ans = root.addElement("answers");
+
+		ans.addAttribute("singleVariant", String.valueOf(getAnswers()
+				.getSingleVariant()));
+
+		Iterator<CompileQPart> iter = getAnswers().answers.iterator();
+
+		while (iter.hasNext()) {
+			CompileQPart answer = iter.next();
+
+			Element ansEl = ans.addElement("answer");
+			ansEl
+					.addAttribute("point", String.valueOf(answer
+							.getAnswerPoint()));
+			ansEl.setText(answer.getAnswerText());
+		}
+		
+		return doc.asXML();
+	}
+
+	private CompileQPartsTableModel answers = new CompileQPartsTableModel();
+	private String caption = "";
+	private String question = "";
+	
+	public CompileQPartsTableModel getAnswers() {
+		return answers;
+	}
+	public void setAnswers(CompileQPartsTableModel answers) {
+		this.answers = answers;
+	}
+	public String getCaption() {
+		return caption;
+	}
+	public void setCaption(String caption) {
+		this.caption = caption;
+	}
+	public String getQuestion() {
+		return question;
+	}
+	public void setQuestion(String question) {
+		this.question = question;
+	}
+
+	@SuppressWarnings("unchecked")
+	public boolean unmarshal(Reader res, TreeItem anItem) {
+		SAXReader reader = new SAXReader();
+
+		Document doc = null;
+		try {
+			doc = reader.read(res);
+
+			Element root = doc.getRootElement();
+			Element answers = root.element("answers");
+
+			setCaption(root.elementTextTrim("caption"));
+			setQuestion(root.elementTextTrim("question"));
+			
+			boolean showOnSP = Boolean.valueOf(root
+					.elementTextTrim("ShowOnSummaryPage"));
+			setShowOnSummaryPage(showOnSP);
+
+			getAnswers().setSingleVariant(
+					answers.attributeValue("singleVariant").equalsIgnoreCase(
+							"true"));
+
+			getAnswers().answers.clear();
+
+			Iterator<Element> iter = answers.elementIterator("answer");
+			while (iter.hasNext()) {
+				Element answer = iter.next();
+				CompileQPart ans = new CompileQPart(answer
+						.getText());
+				ans.setAnswerPoint(Double.valueOf(answer
+						.attributeValue("point")));
+				getAnswers().answers.add(ans);
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+			return false;
+		}
+
+		return true;
+	}
+}
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java	                        (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java	2008-05-14 21:05:22 UTC (rev 138)
@@ -0,0 +1,101 @@
+package edu.lnu.FireFly.WebEditor.ItemModels.CompileQ;
+
+import java.util.Iterator;
+
+import edu.lnu.FireFly.FFManifest.TreeItem;
+import edu.lnu.FireFly.FFManifest.item.Item;
+import edu.lnu.FireFly.FFManifest.resource.Resource;
+import edu.lnu.FireFly.WebEditor.WebEditor;
+import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel;
+import edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ.CompileQPropertiestsDlg;
+import edu.lnu.FireFly.WebEditor.ItemModels.ItemData;
+import edu.lnu.FireFly.WebEditor.ItemModels.ResourcedItemModel;
+import edu.lnu.FireFly.WebEditor.ItemModels.Template;
+
+public class CompileQModel extends ResourcedItemModel {
+	@Override
+	protected String getDefaultTitle() {
+		return "New compile question";
+	}
+
+	@Override
+	public boolean getLimitConditionsMenuVisible(TreeItem anItem) {
+		return true;
+	}
+
+	@Override
+	public boolean getShowOnSummaryPageMenuVisible() {
+		return true;
+	}
+
+	public CompileQModel() {
+		modelName = "CompileQModel";
+	}
+
+	@Override
+	public boolean canAddToItem(TreeItem parent) {
+		// TODO Auto-generated method stub
+		return true;
+	}
+
+	@Override
+	public boolean canConvertItem(TreeItem parent) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public void ConfigureItem(TreeItem item) {
+		new CompileQPropertiestsDlg().showDialog(item);
+		
+		TreeDataModel.getInstance().treeNodesChanged(item);
+		WebEditor.tree.setSelectionPath(null);
+		WebEditor.tree.setSelectionPath(TreeDataModel.getInstance()
+				.getItemPath(item));
+	}
+
+	public CompileQData getData(TreeItem item) {
+		return ((CompileQData) getItemData(item));
+	}
+
+	@Override
+	public boolean isRemovable() {
+		return true;
+	}
+
+	protected ItemData createItemDataInstance() {
+		return new CompileQData();
+	}
+
+	@Override
+	protected void updateResourceFile(TreeItem anItem) {
+		Resource resource = WebEditor.instance.getManifest().resources
+				.findResourceByIdentifier(((Item) anItem).identifierref);
+
+		Template template = new Template(resource.getFullHref(), this);
+
+		CompileQData itemData = getData(anItem);
+
+		template.setProperty("Caption", itemData.getCaption());
+		template.setProperty("Question", itemData.getQuestion());
+
+		Iterator<CompileQPart> iter = itemData.getAnswers().answers
+				.iterator();
+		String answers = "\r\nsetSingleVariant("
+				+ itemData.getAnswers().getSingleVariant() + ");\r\n";
+
+		while (iter.hasNext()) {
+			CompileQPart answer = iter.next();
+			answers += "addAnswer(\"" + answer.getAnswerText().replace("\"", "\\\"") + "\", "
+					+ answer.getAnswerPoint() + ");" + "\r\n";
+		}
+
+		template.setProperty("answers", answers);
+		template.updateResource();
+	}
+
+	@Override
+	public boolean getShowSummaryPageMenuVisible() {
+		return false;
+	}
+}
\ No newline at end of file
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPart.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPart.java	                        (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPart.java	2008-05-14 21:05:22 UTC (rev 138)
@@ -0,0 +1,26 @@
+package edu.lnu.FireFly.WebEditor.ItemModels.CompileQ;
+
+public class CompileQPart {
+	private String answerText = "";
+	private double answerPoint = 0;
+
+	public CompileQPart(String answerText) {
+		this.answerText = answerText;
+	}
+
+	public double getAnswerPoint() {
+		return answerPoint;
+	}
+
+	public String getAnswerText() {
+		return answerText;
+	}
+
+	public void setAnswerPoint(double answerPoint) {
+		this.answerPoint = answerPoint;
+	}
+
+	public void setAnswerText(String answerText) {
+		this.answerText = answerText;
+	}
+}
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java	                        (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java	2008-05-14 21:05:22 UTC (rev 138)
@@ -0,0 +1,174 @@
+package edu.lnu.FireFly.WebEditor.ItemModels.CompileQ;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.table.DefaultTableModel;
+
+import edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ.PartOptionsPanel;
+
+public class CompileQPartsTableModel extends DefaultTableModel {
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private boolean singleVariant = false;
+
+	public List<CompileQPart> answers = new ArrayList<CompileQPart>();
+
+	@Override
+	public Class<?> getColumnClass(int col) {
+		
+		if (col == 2){
+			return PartOptionsPanel.class;
+		}
+		
+		return Object.class;
+	}
+
+	@Override
+	public int getColumnCount() {
+		return 3;
+	}
+
+	@Override
+	public String getColumnName(int arg0) {
+		switch (arg0) {
+		case 0:
+			return "#";
+		case 1:
+			return "Part content";
+		default:
+			return "Options";
+		}
+	}
+
+	@Override
+	public int getRowCount() {
+
+		if (answers == null) {
+			return 0;
+		}
+
+		int answersCount = answers.size();
+		
+		
+		
+		return answersCount > 0 ? answersCount : 1;
+	}
+
+	@Override
+	public Object getValueAt(int row, int col) {
+		if (row == answers.size()) {
+			return "";
+		}
+
+		switch (col) {
+		case 0:
+			return row + 1;
+		case 1:
+			return answers.get(row).getAnswerText();
+		case 2:
+			return answers.get(row).getAnswerPoint();
+		default:
+			return "";
+		}
+	}
+
+	@Override
+	public boolean isCellEditable(int row, int col) {
+		switch (col){
+		case 0:
+			return false;
+		case 1:
+			return true;
+		case 2:
+			return false;
+		default:
+			return false;
+		}
+	}
+
+	public boolean isSingleVariant() {
+		return singleVariant;
+	}
+
+	public void setSingleVariant(boolean singleVariant) {
+		this.singleVariant = singleVariant;
+	}
+
+	public boolean getSingleVariant() {
+		return this.singleVariant;
+	}
+
+	@Override
+	public void setValueAt(Object arg0, int arg1, int arg2) {
+		if (arg1 == answers.size()) {
+			answers.add(new CompileQPart(""));
+		}
+
+		switch (arg2) {
+		case 1:
+			answers.get(arg1).setAnswerText(arg0.toString());
+			break;
+		case 2:
+			try {
+				double value = 0;
+				if (!arg0.toString().equals("")) {
+					value = Double.valueOf(arg0.toString());
+				}
+				answers.get(arg1).setAnswerPoint(value);
+			} catch (NumberFormatException e) {
+				System.out.print("Entered value is't a double value!\n");
+			}
+			break;
+		}
+
+		fireTableRowsUpdated(arg1, arg1);
+	}
+
+	public void deleteRow(int selectedRow) {
+		if (selectedRow < answers.size() && selectedRow >= 0) {
+			answers.remove(selectedRow);
+			fireTableRowsDeleted(selectedRow, selectedRow);
+		}
+	}
+
+	public void insertRow(int selectedRow) {
+		if (selectedRow >= answers.size()){
+			selectedRow--;
+		}
+		
+		answers.add(selectedRow + 1, new CompileQPart(""));
+		fireTableRowsInserted(selectedRow + 1, selectedRow + 1);
+	}
+
+	public boolean moveUp(int selectedRow) {
+		if (selectedRow < 1 || selectedRow >= answers.size()){
+			return false;
+		}
+		
+		CompileQPart answer = answers.get(selectedRow);
+		answers.set(selectedRow, answers.get(selectedRow - 1));
+		answers.set(selectedRow - 1, answer);
+		
+		fireTableRowsUpdated(selectedRow - 1, selectedRow);
+		
+		return true;
+	}
+
+	public boolean moveDown(int selectedRow) {
+		if (selectedRow < 0 || selectedRow >= answers.size() - 1){
+			return false;
+		}
+		
+		CompileQPart answer = answers.get(selectedRow);
+		answers.set(selectedRow, answers.get(selectedRow + 1));
+		answers.set(selectedRow + 1, answer);
+		
+		fireTableRowsUpdated(selectedRow + 1, selectedRow);
+		
+		return true;
+	}
+}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModels.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModels.java	2008-05-14 18:01:48 UTC (rev 137)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModels.java	2008-05-14 21:05:22 UTC (rev 138)
@@ -5,6 +5,7 @@
 import edu.lnu.FireFly.FFManifest.Organization;
 import edu.lnu.FireFly.FFManifest.TreeItem;
 import edu.lnu.FireFly.WebEditor.ItemModels.Chapter.ChapterModel;
+import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.CompileQModel;
 import edu.lnu.FireFly.WebEditor.ItemModels.Lecture.LectureModel;
 import edu.lnu.FireFly.WebEditor.ItemModels.SimpleQuestion.SimpleQuestionModel;
 import edu.lnu.FireFly.WebEditor.ItemModels.SummaryPageModel.SummaryPageModel;
@@ -81,9 +82,10 @@
 	
 	static {
 		ItemModels.clear();
+		ItemModels.registerModel(new ChapterModel());
 		ItemModels.registerModel(new LectureModel());
 		ItemModels.registerModel(new SimpleQuestionModel());
-		ItemModels.registerModel(new ChapterModel());
+		ItemModels.registerModel(new CompileQModel());
 		ItemModels.registerModel(new OrganizationModel());
 		ItemModels.registerModel(new SummaryPageModel());
 	}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java	2008-05-14 18:01:48 UTC (rev 137)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java	2008-05-14 21:05:22 UTC (rev 138)
@@ -65,8 +65,8 @@
 
 	@Override
 	public void remove(TreeItem anItem) {
+		TreeDataModel.getInstance().treeNodesDeleted(anItem);
 		anItem.getParent().removeChild(anItem);
-		TreeDataModel.getInstance().treeNodesDeleted(anItem);
 		
 		deleteResource(anItem);
 	}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-14 18:05:29
      
     | 
| Revision: 137
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=137&view=rev
Author:   sem62
Date:     2008-05-14 11:01:48 -0700 (Wed, 14 May 2008)
Log Message:
-----------
Added deleting, inserting and moving answer variant in SimpleQ model
Modified Paths:
--------------
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/SimpleQuestionPropertiestsDlg.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionAnswersDataModel.java
    WebEditor/template/global/SummaryPage.js
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/SimpleQuestionPropertiestsDlg.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/SimpleQuestionPropertiestsDlg.java	2008-05-13 19:33:14 UTC (rev 136)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/SimpleQuestionPropertiestsDlg.java	2008-05-14 18:01:48 UTC (rev 137)
@@ -4,6 +4,7 @@
 import java.awt.event.ActionListener;
 
 import javax.swing.JButton;
+import javax.swing.ListSelectionModel;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 import javax.swing.table.DefaultTableColumnModel;
@@ -36,6 +37,10 @@
 	private javax.swing.JButton editCaptionInHtmlBtn;
 	private javax.swing.JButton editQuestionInHtmlBtn;
 	private javax.swing.JButton editAnswerVariantInHtmlEditor;
+	private javax.swing.JButton insertAnswerVariantBtn;
+	private javax.swing.JButton deleteAnswerVariantBtn;
+	private javax.swing.JButton moveUpAnswerVariantBtn;
+	private javax.swing.JButton moveDownAnswerVariantBtn;
 	private SimpleQuestionAnswersDataModel simpleQuestionAnswersDataModel;
 
 	private javax.swing.JTextField currentAnswerVariant;
@@ -57,20 +62,72 @@
 		if (arg0.getSource() == editCaptionInHtmlBtn) {
 			editTextFieldInHtmlEditor(captionTextField);
 		}
-		
+
 		if (arg0.getSource() == editAnswerVariantInHtmlEditor) {
 			int selectedRow = answersTable.getSelectedRow();
-			
-			if (selectedRow < 0){
+
+			if (selectedRow < 0) {
 				return;
 			}
-			
-			String text = answersTable.getModel().getValueAt(selectedRow, 1).toString();
-			
+
+			String text = answersTable.getModel().getValueAt(selectedRow, 1)
+					.toString();
+
 			currentAnswerVariant.setText(text);
 
 			editTextFieldInHtmlEditor(currentAnswerVariant);
 		}
+
+		if (arg0.getSource() == insertAnswerVariantBtn) {
+			int selectedRow = answersTable.getSelectedRow();
+
+			if (selectedRow < 0) {
+				return;
+			}
+
+			simpleQuestionAnswersDataModel.insertRow(selectedRow);
+			answersTable.getSelectionModel().setSelectionInterval(selectedRow + 1, selectedRow + 1);
+		}
+
+		if (arg0.getSource() == deleteAnswerVariantBtn) {
+			int selectedRow = answersTable.getSelectedRow();
+
+			if (selectedRow < 0) {
+				return;
+			}
+
+			simpleQuestionAnswersDataModel.deleteRow(selectedRow);
+			
+			if (selectedRow >= simpleQuestionAnswersDataModel.getRowCount()){
+				selectedRow--;
+			}
+			
+			answersTable.getSelectionModel().setSelectionInterval(selectedRow,
+					selectedRow);
+		}
+		if (arg0.getSource() == moveUpAnswerVariantBtn) {
+			int selectedRow = answersTable.getSelectedRow();
+
+			if (selectedRow < 0) {
+				return;
+			}
+
+			if (simpleQuestionAnswersDataModel.moveUp(selectedRow)){
+				answersTable.getSelectionModel().setSelectionInterval(selectedRow - 1, selectedRow - 1);
+			}
+		}
+
+		if (arg0.getSource() == moveDownAnswerVariantBtn) {
+			int selectedRow = answersTable.getSelectedRow();
+
+			if (selectedRow < 0) {
+				return;
+			}
+
+			if (simpleQuestionAnswersDataModel.moveDown(selectedRow)){
+				answersTable.getSelectionModel().setSelectionInterval(selectedRow + 1, selectedRow+1);
+			}
+		}
 	}
 
 	@Override
@@ -91,18 +148,19 @@
 				.getAnswers();
 		dlg.answersTable.setModel(dlg.simpleQuestionAnswersDataModel);
 
-		DefaultTableColumnModel columnModel = (DefaultTableColumnModel)dlg.answersTable.getColumnModel();
+		DefaultTableColumnModel columnModel = (DefaultTableColumnModel) dlg.answersTable
+				.getColumnModel();
 		columnModel.getColumn(0).setPreferredWidth(1);
 		columnModel.getColumn(1).setPreferredWidth(300);
 		columnModel.getColumn(2).setPreferredWidth(1);
-		
+
 		dlg.titleTextField.selectAll();
 	}
 
 	@Override
 	public void editedHtmlTextWasSet() {
 		super.editedHtmlTextWasSet();
-		
+
 		String text = currentAnswerVariant.getText();
 		int selectedRow = answersTable.getSelectedRow();
 		answersTable.getModel().setValueAt(text, selectedRow, 1);
@@ -110,7 +168,7 @@
 
 	private void initComponents() {
 		setTitle("Propertiests...");
-		
+
 		generalPanel = new javax.swing.JPanel();
 		titleLabel = new javax.swing.JLabel();
 		titleTextField = new javax.swing.JTextField();
@@ -127,7 +185,17 @@
 		editCaptionInHtmlBtn = new JButton("...");
 		editQuestionInHtmlBtn = new JButton("...");
 		editAnswerVariantInHtmlEditor = new JButton("HTML Editor");
+		insertAnswerVariantBtn = new JButton("Insert");
+		deleteAnswerVariantBtn = new JButton("Delete");
 
+		moveDownAnswerVariantBtn = new JButton("Down");
+		moveUpAnswerVariantBtn = new JButton("Up");
+
+		insertAnswerVariantBtn.addActionListener(this);
+		deleteAnswerVariantBtn.addActionListener(this);
+		moveDownAnswerVariantBtn.addActionListener(this);
+		moveUpAnswerVariantBtn.addActionListener(this);
+
 		currentAnswerVariant = new javax.swing.JTextField();
 		captionTextField.addActionListener(this);
 
@@ -138,8 +206,9 @@
 		editCaptionInHtmlBtn.addActionListener(this);
 		editQuestionInHtmlBtn.addActionListener(this);
 		editAnswerVariantInHtmlEditor.addActionListener(this);
-		
+
 		answersTable = new javax.swing.JTable();
+		answersTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
 
 		setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);
 
@@ -318,31 +387,57 @@
 				answersPanel);
 		answersPanel.setLayout(jPanel4Layout);
 		jPanel4Layout.setHorizontalGroup(jPanel4Layout.createParallelGroup(
-				javax.swing.GroupLayout.Alignment.TRAILING)
-					.addGroup(
-							jPanel4Layout.createSequentialGroup()
-							.addComponent(editAnswerVariantInHtmlEditor)
-							.addContainerGap()
-					)
-				.addGroup(
+				javax.swing.GroupLayout.Alignment.TRAILING).addGroup(
 				jPanel4Layout.createSequentialGroup()
-						.addContainerGap()
+					.addComponent(moveUpAnswerVariantBtn)
+					.addContainerGap(10, 10)
+					.addComponent(moveDownAnswerVariantBtn)
+					.addContainerGap(10, 10)
+					.addComponent(insertAnswerVariantBtn)
+					.addContainerGap(10, 10)
+					.addComponent(deleteAnswerVariantBtn)
+					.addContainerGap(10, 10)
+					.addComponent(
+								editAnswerVariantInHtmlEditor)
+						.addContainerGap()).addGroup(
+				jPanel4Layout.createSequentialGroup().addContainerGap()
 						.addComponent(jScrollPane1,
 								javax.swing.GroupLayout.DEFAULT_SIZE, 364,
-								Short.MAX_VALUE)
-						.addContainerGap()
-						));
+								Short.MAX_VALUE).addContainerGap()));
 
-		jPanel4Layout.setVerticalGroup(jPanel4Layout.createParallelGroup(
-				javax.swing.GroupLayout.Alignment.LEADING).addGroup(
-				jPanel4Layout.createSequentialGroup().addContainerGap()
-						.addComponent(jScrollPane1,
-								javax.swing.GroupLayout.DEFAULT_SIZE, 111,
-								Short.MAX_VALUE)
-						.addContainerGap(10, 10)
-						.addComponent(editAnswerVariantInHtmlEditor, 20, 20, 20)
-						.addContainerGap()
-				));
+		jPanel4Layout
+				.setVerticalGroup(jPanel4Layout
+						.createParallelGroup(
+								javax.swing.GroupLayout.Alignment.LEADING)
+						.addGroup(
+								jPanel4Layout
+										.createSequentialGroup()
+										.addContainerGap()
+										.addComponent(
+												jScrollPane1,
+												javax.swing.GroupLayout.DEFAULT_SIZE,
+												111, Short.MAX_VALUE)
+										.addContainerGap(10, 10)
+										.addGroup(
+												jPanel4Layout
+														.createParallelGroup(
+																javax.swing.GroupLayout.Alignment.BASELINE)
+														.addComponent(
+																moveUpAnswerVariantBtn,
+																20, 20, 20)
+														.addComponent(
+																moveDownAnswerVariantBtn,
+																20, 20, 20)
+														.addComponent(
+																insertAnswerVariantBtn,
+																20, 20, 20)
+														.addComponent(
+																deleteAnswerVariantBtn,
+																20, 20, 20)
+														.addComponent(
+																editAnswerVariantInHtmlEditor,
+																20, 20, 20))
+										.addContainerGap()));
 
 		javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
 				getContentPane());
@@ -431,8 +526,10 @@
 														.createParallelGroup(
 																javax.swing.GroupLayout.Alignment.BASELINE)
 														.addComponent(
-																cancelButton)
-														.addComponent(okButton))
+																cancelButton,
+																20, 20, 20)
+														.addComponent(okButton,
+																20, 20, 20))
 										.addContainerGap(
 												javax.swing.GroupLayout.DEFAULT_SIZE,
 												Short.MAX_VALUE)));
@@ -450,7 +547,7 @@
 
 		SimpleQuestionData data = itemModel.getData(manifestItem);
 
-		if (sameAsTitleCheckBox.isSelected()){
+		if (sameAsTitleCheckBox.isSelected()) {
 			data.setCaption(titleTextField.getText());
 		} else {
 			data.setCaption(captionTextField.getText());
@@ -458,8 +555,7 @@
 
 		data.setQuestion(questionTextField.getText());
 
-		data.setAnswers(
-				simpleQuestionAnswersDataModel);
+		data.setAnswers(simpleQuestionAnswersDataModel);
 
 		itemModel.updateItemResource(manifestItem, true);
 	}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionAnswersDataModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionAnswersDataModel.java	2008-05-13 19:33:14 UTC (rev 136)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionAnswersDataModel.java	2008-05-14 18:01:48 UTC (rev 137)
@@ -1,24 +1,21 @@
 package edu.lnu.FireFly.WebEditor.ItemModels.SimpleQuestion;
 
 import java.util.ArrayList;
+import java.util.List;
 
-import javax.swing.event.TableModelEvent;
-import javax.swing.event.TableModelListener;
-import javax.swing.table.TableModel;
+import javax.swing.table.DefaultTableModel;
 
+public class SimpleQuestionAnswersDataModel extends DefaultTableModel {
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
 
-public class SimpleQuestionAnswersDataModel implements TableModel {
 	private boolean singleVariant = false;
 
-	public ArrayList<SimpleQuestionAnswer> answers = new ArrayList<SimpleQuestionAnswer>();
-	private ArrayList<TableModelListener> listeners = new ArrayList<TableModelListener>();
+	public List<SimpleQuestionAnswer> answers = new ArrayList<SimpleQuestionAnswer>();
 
 	@Override
-	public void addTableModelListener(TableModelListener arg0) {
-		listeners.add(arg0);
-	}
-
-	@Override
 	public Class<?> getColumnClass(int arg0) {
 		return Object.class;
 	}
@@ -42,7 +39,16 @@
 
 	@Override
 	public int getRowCount() {
-		return answers.size() + 1;
+
+		if (answers == null) {
+			return 0;
+		}
+
+		int answersCount = answers.size();
+		
+		
+		
+		return answersCount > 0 ? answersCount : 1;
 	}
 
 	@Override
@@ -72,11 +78,6 @@
 		return singleVariant;
 	}
 
-	@Override
-	public void removeTableModelListener(TableModelListener arg0) {
-		listeners.remove(arg0);
-	}
-
 	public void setSingleVariant(boolean singleVariant) {
 		this.singleVariant = singleVariant;
 	}
@@ -107,10 +108,51 @@
 			}
 			break;
 		}
+
+		fireTableRowsUpdated(arg1, arg1);
+	}
+
+	public void deleteRow(int selectedRow) {
+		if (selectedRow < answers.size() && selectedRow >= 0) {
+			answers.remove(selectedRow);
+			fireTableRowsDeleted(selectedRow, selectedRow);
+		}
+	}
+
+	public void insertRow(int selectedRow) {
+		if (selectedRow >= answers.size()){
+			selectedRow--;
+		}
 		
-		for (int i=0; i < listeners.size(); i++){
-			TableModelEvent event = new TableModelEvent(this, arg1, arg1, arg2);
-			listeners.get(i).tableChanged(event);
+		answers.add(selectedRow + 1, new SimpleQuestionAnswer(""));
+		fireTableRowsInserted(selectedRow + 1, selectedRow + 1);
+	}
+
+	public boolean moveUp(int selectedRow) {
+		if (selectedRow < 1 || selectedRow >= answers.size()){
+			return false;
 		}
+		
+		SimpleQuestionAnswer answer = answers.get(selectedRow);
+		answers.set(selectedRow, answers.get(selectedRow - 1));
+		answers.set(selectedRow - 1, answer);
+		
+		fireTableRowsUpdated(selectedRow - 1, selectedRow);
+		
+		return true;
 	}
+
+	public boolean moveDown(int selectedRow) {
+		if (selectedRow < 0 || selectedRow >= answers.size() - 1){
+			return false;
+		}
+		
+		SimpleQuestionAnswer answer = answers.get(selectedRow);
+		answers.set(selectedRow, answers.get(selectedRow + 1));
+		answers.set(selectedRow + 1, answer);
+		
+		fireTableRowsUpdated(selectedRow + 1, selectedRow);
+		
+		return true;
+	}
 }
Modified: WebEditor/template/global/SummaryPage.js
===================================================================
--- WebEditor/template/global/SummaryPage.js	2008-05-13 19:33:14 UTC (rev 136)
+++ WebEditor/template/global/SummaryPage.js	2008-05-14 18:01:48 UTC (rev 137)
@@ -101,10 +101,10 @@
 function write(completionStatus, title, min, max, raw, modelName){
 	rowNum++;
 
-	var percents = "0";
+	var percents = "0 %";
 	if ((parseInt(min) || min == 0) && (parseInt(max) || max == 0) && (parseInt(raw) || raw == 0)){
 		if (max == min){
-			percents = "? %"; 
+			percents = "0 %"; 
 		} else {
 			percents = 100 * (raw - min) / (max - min) + " %";
 		}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-13 19:33:07
      
     | 
| Revision: 136
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=136&view=rev
Author:   sem62
Date:     2008-05-13 12:33:14 -0700 (Tue, 13 May 2008)
Log Message:
-----------
Fized bug: Before press save button was need to switch into html edit mode.
Modified Paths:
--------------
    WebEditor/resources/HTMLedit.php
Modified: WebEditor/resources/HTMLedit.php
===================================================================
--- WebEditor/resources/HTMLedit.php	2008-05-13 16:49:15 UTC (rev 135)
+++ WebEditor/resources/HTMLedit.php	2008-05-13 19:33:14 UTC (rev 136)
@@ -4,6 +4,12 @@
 
 	var saved = false;
 	function save(){
+		SpawPGcore.htmlModeClick(
+			spaw_edit_field_obj.getTargetEditor(),
+			spaw_edit_field_obj.getToolbarItem('spaw_edit_field_mode_strip_1'),
+			this
+		);	
+	
 		var s=document.getElementById("spaw_edit_field").value;
 		opener.document.webeditor.setEditedHTML(s);
 		saved=true;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-13 16:49:10
      
     | 
| Revision: 135
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=135&view=rev
Author:   sem62
Date:     2008-05-13 09:49:15 -0700 (Tue, 13 May 2008)
Log Message:
-----------
Added unknown item model for correct operations with courses, generated with third party editors.
Modified Paths:
--------------
    WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/CourseTreePopupMenu.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModels.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Lecture/LectureModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/OrganizationModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SummaryPageModel/SummaryPageModel.java
    WebEditor/src/edu/lnu/FireFly/WebEditor/WebEditor.java
Added Paths:
-----------
    WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/CourseTreePopupMenu.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/CourseTreePopupMenu.java	2008-05-12 21:39:55 UTC (rev 134)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/CourseTreePopupMenu.java	2008-05-13 16:49:15 UTC (rev 135)
@@ -202,7 +202,7 @@
 					.getShowOnSummaryPageMenuVisible());
 
 			limitConditionsMenu.setVisible(model
-					.getLimitConditionsMenuVisible());
+					.getLimitConditionsMenuVisible(manifestItem));
 
 			showSummaryPageMenuItem.setVisible(model
 					.getShowSummaryPageMenuVisible());
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterModel.java	2008-05-12 21:39:55 UTC (rev 134)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterModel.java	2008-05-13 16:49:15 UTC (rev 135)
@@ -1,7 +1,6 @@
 package edu.lnu.FireFly.WebEditor.ItemModels.Chapter;
 
 import edu.lnu.FireFly.FFManifest.TreeItem;
-import edu.lnu.FireFly.FFManifest.item.Item;
 import edu.lnu.FireFly.WebEditor.Data.SummaryPageManager;
 import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel;
 import edu.lnu.FireFly.WebEditor.GUI.Dialogs.ChapterPropertiestsDlg;
@@ -59,7 +58,7 @@
 	}
 
 	@Override
-	public boolean getLimitConditionsMenuVisible() {
+	public boolean getLimitConditionsMenuVisible(TreeItem anItem) {
 		return false;
 	}
 
@@ -87,21 +86,6 @@
 	}
 
 	@Override
-	public boolean isApplaingForItem(TreeItem treeItem) {
-		if (treeItem.getClass() != Item.class) {
-			return false;
-		}
-
-		Item item = (Item) treeItem;
-		if (item.parameters != null
-				&& item.parameters.contains("pageType=Chapter")) {
-			return true;
-		}
-
-		return false;
-	}
-
-	@Override
 	public boolean isRemovable() {
 		return true;
 	}
@@ -110,7 +94,7 @@
 	public void remove(TreeItem aChapter) {
 		if (!canDeleteChapter(aChapter)) {
 			System.out
-					.print("This chapter contain items. Please, remove all childs and try again.\n");
+					.print("This chapter contains items. Please, remove all childs and try again.\n");
 			return;
 		}
 		
@@ -152,13 +136,6 @@
 		return result;
 	}
 
-	@Override
-	public void rename(TreeItem item, String newTitle) {
-		((Item) item).title = newTitle;
-
-		TreeDataModel.getInstance().treeNodesChanged(item);
-	}
-
 	public void setShowSummaryPage(TreeItem anItem, boolean state) {
 		ChapterItemData itemData = getData(anItem);
 
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java	2008-05-12 21:39:55 UTC (rev 134)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java	2008-05-13 16:49:15 UTC (rev 135)
@@ -16,6 +16,7 @@
 import edu.lnu.FireFly.FFManifest.resource.Resource;
 import edu.lnu.FireFly.WebEditor.WebEditor;
 import edu.lnu.FireFly.WebEditor.Data.ManifestFactory;
+import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel;
 import edu.lnu.FireFly.WebEditor.ItemModels.SummaryPageModel.SummaryPageModel;
 
 public abstract class ItemModel {
@@ -132,23 +133,38 @@
 		}
 	}
 
-	public abstract boolean isApplaingForItem(TreeItem treeItem);
+	public boolean isApplaingForItem(TreeItem treeItem) {
+		if (treeItem.getClass() != Item.class) {
+			return false;
+		}
 
+		Item item = (Item) treeItem;
+		if (item.parameters != null
+				&& item.parameters.contains("pageType=" + modelName)) {
+			return true;
+		}
+
+		return false;
+	}
+	
 	public final boolean isContainer() {
 		return isContainerItem;
 	}
 
 	public abstract boolean isRemovable();
 
-	public abstract void remove(TreeItem item);
+	public abstract void remove(TreeItem anItem);
 
-	public abstract void rename(TreeItem item, String newTitle);
+	public void rename(TreeItem item, String newTitle) {
+		((Item) item).title = newTitle;
+		TreeDataModel.getInstance().treeNodesChanged(item);
+	}
 
 	public abstract boolean synchronizeItemWithResource(TreeItem anItem, String location);
 	
 	public abstract boolean updateItemResource(TreeItem item, boolean updateSummaryPages);
 
-	public abstract boolean getLimitConditionsMenuVisible();
+	public abstract boolean getLimitConditionsMenuVisible(TreeItem anItem);
 
 	public abstract boolean getShowOnSummaryPageMenuVisible();
 
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModels.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModels.java	2008-05-12 21:39:55 UTC (rev 134)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModels.java	2008-05-13 16:49:15 UTC (rev 135)
@@ -5,10 +5,23 @@
 import edu.lnu.FireFly.FFManifest.Organization;
 import edu.lnu.FireFly.FFManifest.TreeItem;
 import edu.lnu.FireFly.WebEditor.ItemModels.Chapter.ChapterModel;
+import edu.lnu.FireFly.WebEditor.ItemModels.Lecture.LectureModel;
+import edu.lnu.FireFly.WebEditor.ItemModels.SimpleQuestion.SimpleQuestionModel;
+import edu.lnu.FireFly.WebEditor.ItemModels.SummaryPageModel.SummaryPageModel;
 
 public class ItemModels {
 	protected static ArrayList<ItemModel> registeredModels = new ArrayList<ItemModel>();
+	
+	private static UnknownItemModel unknownModel = null;
 
+	public static UnknownItemModel getUnknownModel() {
+		if (unknownModel == null){
+			unknownModel = new UnknownItemModel();
+		}
+		
+		return unknownModel;
+	}
+
 	public static void registerModel(ItemModel model) {
 		if (!registeredModels.contains(model)) {
 			registeredModels.add(model);
@@ -35,7 +48,7 @@
 				return registeredModels.get(i);
 			}
 		}
-		return null;
+		return getUnknownModel();
 	}
 
 	public static void synchronizeAllItemDatas(TreeItem root) {
@@ -65,4 +78,13 @@
 	public static void clear() {
 		registeredModels.clear();
 	}
+	
+	static {
+		ItemModels.clear();
+		ItemModels.registerModel(new LectureModel());
+		ItemModels.registerModel(new SimpleQuestionModel());
+		ItemModels.registerModel(new ChapterModel());
+		ItemModels.registerModel(new OrganizationModel());
+		ItemModels.registerModel(new SummaryPageModel());
+	}
 }
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Lecture/LectureModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Lecture/LectureModel.java	2008-05-12 21:39:55 UTC (rev 134)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Lecture/LectureModel.java	2008-05-13 16:49:15 UTC (rev 135)
@@ -22,7 +22,7 @@
 	}
 
 	@Override
-	public boolean getLimitConditionsMenuVisible() {
+	public boolean getLimitConditionsMenuVisible(TreeItem anItem) {
 		return true;
 	}
 
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/OrganizationModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/OrganizationModel.java	2008-05-12 21:39:55 UTC (rev 134)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/OrganizationModel.java	2008-05-13 16:49:15 UTC (rev 135)
@@ -2,7 +2,6 @@
 
 import edu.lnu.FireFly.FFManifest.Organization;
 import edu.lnu.FireFly.FFManifest.TreeItem;
-import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel;
 import edu.lnu.FireFly.WebEditor.ItemModels.Chapter.ChapterModel;
 
 public class OrganizationModel extends ChapterModel{
@@ -41,13 +40,6 @@
 	}
 
 	@Override
-	public void rename(TreeItem item, String newTitle) {
-		((Organization)item).title = newTitle;
-
-		TreeDataModel.getInstance().treeNodesChanged(item);
-	}
-
-	@Override
 	public boolean isRemovable() {
 		return false;
 	}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java	2008-05-12 21:39:55 UTC (rev 134)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java	2008-05-13 16:49:15 UTC (rev 135)
@@ -59,29 +59,14 @@
 	}
 
 	@Override
-	public boolean isApplaingForItem(TreeItem treeItem) {
-		if (treeItem.getClass() != Item.class) {
-			return false;
-		}
-
-		Item item = (Item) treeItem;
-		if (item.parameters != null
-				&& item.parameters.contains("pageType=" + modelName)) {
-			return true;
-		}
-
-		return false;
-	}
-
-	@Override
 	public boolean isRemovable() {
 		return true;
 	}
 
 	@Override
 	public void remove(TreeItem anItem) {
-		TreeDataModel.getInstance().treeNodesDeleted(anItem);
 		anItem.getParent().removeChild(anItem);
+		TreeDataModel.getInstance().treeNodesDeleted(anItem);
 		
 		deleteResource(anItem);
 	}
@@ -108,12 +93,6 @@
 		return true;
 	}
 
-	@Override
-	public void rename(TreeItem item, String newTitle) {
-		((Item) item).title = newTitle;
-		TreeDataModel.getInstance().treeNodesChanged(item);
-	}
-	
 	public final boolean synchronizeItemWithResource(TreeItem anItem, String location)
 	{
 		String res = loadResource(location, anItem);
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionModel.java	2008-05-12 21:39:55 UTC (rev 134)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionModel.java	2008-05-13 16:49:15 UTC (rev 135)
@@ -19,7 +19,7 @@
 	}
 
 	@Override
-	public boolean getLimitConditionsMenuVisible() {
+	public boolean getLimitConditionsMenuVisible(TreeItem anItem) {
 		return true;
 	}
 
@@ -58,31 +58,10 @@
 	}
 
 	@Override
-	public boolean isApplaingForItem(TreeItem treeItem) {
-		if (treeItem.getClass() != Item.class) {
-			return false;
-		}
-
-		Item item = (Item) treeItem;
-		if (item.parameters != null
-				&& item.parameters.contains("pageType=SimpleQuestion")) {
-			return true;
-		}
-
-		return false;
-	}
-
-	@Override
 	public boolean isRemovable() {
 		return true;
 	}
 
-	@Override
-	public void rename(TreeItem item, String newTitle) {
-		((Item) item).title = newTitle;
-		TreeDataModel.getInstance().treeNodesChanged(item);
-	}
-
 	protected ItemData createItemDataInstance() {
 		return new SimpleQuestionData();
 	}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SummaryPageModel/SummaryPageModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SummaryPageModel/SummaryPageModel.java	2008-05-12 21:39:55 UTC (rev 134)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SummaryPageModel/SummaryPageModel.java	2008-05-13 16:49:15 UTC (rev 135)
@@ -21,7 +21,7 @@
 	}
 
 	@Override
-	public boolean getLimitConditionsMenuVisible() {
+	public boolean getLimitConditionsMenuVisible(TreeItem anItem) {
 		return false;
 	}
 
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java	                        (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java	2008-05-13 16:49:15 UTC (rev 135)
@@ -0,0 +1,81 @@
+package edu.lnu.FireFly.WebEditor.ItemModels;
+
+import edu.lnu.FireFly.FFManifest.TreeItem;
+import edu.lnu.FireFly.FFManifest.item.Item;
+import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel;
+
+public class UnknownItemModel extends ItemModel {
+
+	@Override
+	public void ConfigureItem(TreeItem item) {
+		System.out.println("Can't doing this operation with unknown item model");
+	}
+
+	@Override
+	public void addItem(TreeItem parent) {
+		System.out.println("Can't doing this operation with unknown item model");
+	}
+
+	@Override
+	public boolean canAddToItem(TreeItem parent) {
+		return false;
+	}
+
+	@Override
+	public boolean canConvertItem(TreeItem parent) {
+		return false;
+	}
+
+	@Override
+	protected ItemData createItemDataInstance() {
+		System.out.println("Can't doing this operation with unknown item model");
+		return null;
+	}
+
+	@Override
+	protected String getDefaultTitle() {
+		return "Unknown";
+	}
+
+	@Override
+	public boolean getLimitConditionsMenuVisible(TreeItem anItem) {
+		return anItem.getChildCount() == 0;
+	}
+
+	@Override
+	public boolean getShowOnSummaryPageMenuVisible() {
+		return false;
+	}
+
+	@Override
+	public boolean getShowSummaryPageMenuVisible() {
+		return false;
+	}
+
+	@Override
+	protected void initializeDataForItem(Item anItem) {
+		System.out.println("Can't doing this operation with unknown item model");
+	}
+
+	@Override
+	public boolean isRemovable() {
+		return true;
+	}
+
+	@Override
+	public void remove(TreeItem anItem) {
+		anItem.getParent().removeChild(anItem);
+		TreeDataModel.getInstance().treeNodesDeleted(anItem);
+	}
+
+	@Override
+	public boolean synchronizeItemWithResource(TreeItem anItem, String location) {
+		return false;
+	}
+
+	@Override
+	public boolean updateItemResource(TreeItem item, boolean updateSummaryPages) {
+		return false;
+	}
+
+}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/WebEditor.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/WebEditor.java	2008-05-12 21:39:55 UTC (rev 134)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/WebEditor.java	2008-05-13 16:49:15 UTC (rev 135)
@@ -25,10 +25,6 @@
 import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel;
 import edu.lnu.FireFly.WebEditor.ItemModels.ItemModels;
 import edu.lnu.FireFly.WebEditor.ItemModels.OrganizationModel;
-import edu.lnu.FireFly.WebEditor.ItemModels.Chapter.ChapterModel;
-import edu.lnu.FireFly.WebEditor.ItemModels.Lecture.LectureModel;
-import edu.lnu.FireFly.WebEditor.ItemModels.SimpleQuestion.SimpleQuestionModel;
-import edu.lnu.FireFly.WebEditor.ItemModels.SummaryPageModel.SummaryPageModel;
 import edu.lnu.FireFly.WebEditor.WSClients.WebEditorServiceClient;
 
 public class WebEditor extends AppletWithWYSIWYGEditor implements
@@ -111,12 +107,6 @@
 		threadForAautoSave.start();
 
 		initMenu();
-		ItemModels.clear();
-		ItemModels.registerModel(new LectureModel());
-		ItemModels.registerModel(new SimpleQuestionModel());
-		ItemModels.registerModel(new ChapterModel());
-		ItemModels.registerModel(new OrganizationModel());
-		ItemModels.registerModel(new SummaryPageModel());
 
 		try {
 			openManifest();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-12 21:39:52
      
     | 
| Revision: 134
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=134&view=rev
Author:   sem62
Date:     2008-05-12 14:39:55 -0700 (Mon, 12 May 2008)
Log Message:
-----------
Chapter model's result at summary is bold now.
Modified Paths:
--------------
    WebEditor/template/LectureModel.html
    WebEditor/template/global/SummaryPage.js
Modified: WebEditor/template/LectureModel.html
===================================================================
--- WebEditor/template/LectureModel.html	2008-05-12 21:39:13 UTC (rev 133)
+++ WebEditor/template/LectureModel.html	2008-05-12 21:39:55 UTC (rev 134)
@@ -5,7 +5,7 @@
 	<script type="text/javascript" src="global/APIWrapper.js"></script>
 	<script type="text/javascript">
 	function finish(){
-		SetValue("cmi.completionStatus", "completed");
+		SetValue("cmi.completion_status", "completed");
 		Terminate();
 	}
 	</script>
Modified: WebEditor/template/global/SummaryPage.js
===================================================================
--- WebEditor/template/global/SummaryPage.js	2008-05-12 21:39:13 UTC (rev 133)
+++ WebEditor/template/global/SummaryPage.js	2008-05-12 21:39:55 UTC (rev 134)
@@ -130,13 +130,21 @@
 	var td = "<td class='tbl"; 
 	td += 1 - (rowNum % 2) + 1;
 	td += "'>";
+	
+	var startFormat = "";
+	var endFormat = "";
+	
+	if (modelName == "ChapterModel" || modelName == "OrganizationModel"){
+		startFormat = "<B>";
+		endFormat = "</B>";
+	}
 
 	document.write("<TR>" + td + rowNum + "<img src='global/images/" + completionStatus + ".gif'>");
 	document.write(td + title);
-	document.write(td + min);
-	document.write(td + max);
-	document.write(td + raw);
-	document.write(td + percents);
+	document.write(td + startFormat + min + endFormat);
+	document.write(td + startFormat + max + endFormat);
+	document.write(td + startFormat + raw + endFormat);
+	document.write(td + startFormat + percents + endFormat);
 }
 
 function openBlock(title, model, id){
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-12 21:39:16
      
     | 
| Revision: 133
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=133&view=rev
Author:   sem62
Date:     2008-05-12 14:39:13 -0700 (Mon, 12 May 2008)
Log Message:
-----------
Decrease waiting interval for terminating sco
Modified Paths:
--------------
    webPlayer/src/behaviour/Navigation.java
Modified: webPlayer/src/behaviour/Navigation.java
===================================================================
--- webPlayer/src/behaviour/Navigation.java	2008-05-12 21:38:02 UTC (rev 132)
+++ webPlayer/src/behaviour/Navigation.java	2008-05-12 21:39:13 UTC (rev 133)
@@ -24,7 +24,7 @@
 
 	public static CmiElement request = new CmiElement("");
 
-	private static final long TERMINATING_WAIT_INTERVAL = 10000;
+	private static final long TERMINATING_WAIT_INTERVAL = 1000;
 
 	public static String getValue(String element) {
 		return request.value;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <se...@us...> - 2008-05-12 21:38:04
      
     | 
| Revision: 132
          http://acmcontester.svn.sourceforge.net/acmcontester/?rev=132&view=rev
Author:   sem62
Date:     2008-05-12 14:38:02 -0700 (Mon, 12 May 2008)
Log Message:
-----------
foxed bug in navigation.js
Modified Paths:
--------------
    webPlayer/resources/navigation.js
Modified: webPlayer/resources/navigation.js
===================================================================
--- webPlayer/resources/navigation.js	2008-05-12 20:23:44 UTC (rev 131)
+++ webPlayer/resources/navigation.js	2008-05-12 21:38:02 UTC (rev 132)
@@ -8,11 +8,11 @@
 }
 
 function next(){
-    document.player.Next();
+    document.player.Terminate("");    
 }
 
 function navigate(loc) {
-    document.frames['ContentFrame'].document.location = loc;
+    frames['ContentFrame'].document.location = loc;
 }
 
 function showNextBtn() {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 |