| 
      
      
      From: <pat...@us...> - 2010-07-16 02:12:03
      
     | 
| Revision: 1090
          http://cishell.svn.sourceforge.net/cishell/?rev=1090&view=rev
Author:   pataphil
Date:     2010-07-16 02:11:57 +0000 (Fri, 16 Jul 2010)
Log Message:
-----------
* Fixed up GUIModel a tiny bit.
Modified Paths:
--------------
    trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/GUIModel.java
Added Paths:
-----------
    trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/GUIModelGroup.java
Modified: trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/GUIModel.java
===================================================================
--- trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/GUIModel.java	2010-07-15 08:30:27 UTC (rev 1089)
+++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/GUIModel.java	2010-07-16 02:11:57 UTC (rev 1090)
@@ -19,40 +19,44 @@
 import org.eclipse.swt.widgets.Widget;
 
 public class GUIModel {
-	private Map<String, GUIModelField<?, ? extends Widget, ? extends ModelDataSynchronizer<?>>>
-		inputFieldsByName = new HashMap<
-			String, GUIModelField<?, ? extends Widget, ? extends ModelDataSynchronizer<?>>>();
+	private Map<String, GUIModelGroup> groups = new HashMap<String, GUIModelGroup>();
 
 	public GUIModel() {
 	}
 
-	public Collection<String> getFieldNames() {
-		return this.inputFieldsByName.keySet();
+	public Collection<String> getGroupNames() {
+		return this.groups.keySet();
 	}
 
-	public Collection<
-			GUIModelField<?, ? extends Widget, ? extends ModelDataSynchronizer<?>>> getFields() {
-		return this.inputFieldsByName.values();
+	public Collection<GUIModelGroup> getGroups() {
+		return this.groups.values();
 	}
 
-	public GUIModelField<
-			?, ? extends Widget, ? extends ModelDataSynchronizer<?>> getField(String name) {
-		return this.inputFieldsByName.get(name);
+	public GUIModelGroup getGroup(String name) {
+		if (!this.groups.containsKey(name)) {
+			GUIModelGroup newGroup = new GUIModelGroup(name);
+			this.groups.put(name, newGroup);
+
+			return newGroup;
+		} else {
+			return this.groups.get(name);
+		}
 	}
 
 	public GUIModelField<Boolean, Button, CheckBoxDataSynchronizer> addCheckBox(
-			String name, boolean on, Composite parent, int style) {
+			String groupName, String name, boolean on, Composite parent, int style) {
 		Button checkBox = new Button(parent, style | SWT.CHECK);
 		CheckBoxDataSynchronizer dataSynchronizer = new CheckBoxDataSynchronizer(checkBox, on);
 		GUIModelField<Boolean, Button, CheckBoxDataSynchronizer> field =
 			new GUIModelField<Boolean, Button, CheckBoxDataSynchronizer>(
 				name, on, checkBox, dataSynchronizer);
-		addField(field);
+		addField(groupName, field);
 
 		return field;
 	}
 
 	public GUIModelField<String, Combo, DropDownDataSynchronizer> addDropDown(
+			String groupName,
 			String name,
 			int selectedIndex,
 			Collection<String> unorderedOptionLabels,
@@ -69,7 +73,7 @@
 				optionValuesByLabels.get(orderedOptionLabels.get(selectedIndex)),
 				dropDown,
 				dataSynchronizer);
-		addField(field);
+		addField(groupName, field);
 
 		return field;
 	}
@@ -119,6 +123,7 @@
 
 	// TODO: Test this out.
 	public GUIModelField<String, List, SingleListSelectionDataSynchronizer> addList(
+			String groupName,
 			String name,
 			int selectedIndex,
 			Collection<String> unorderedOptionLabels,
@@ -133,7 +138,7 @@
 		GUIModelField<String, List, SingleListSelectionDataSynchronizer> field =
 			new GUIModelField<String, List, SingleListSelectionDataSynchronizer>(
 				name, list.getItem(selectedIndex), list, dataSynchronizer);
-		addField(field);
+		addField(groupName, field);
 
 		return field;
 	}
@@ -147,6 +152,7 @@
 	// TODO: addStyledText
 
 	public GUIModelField<String, Text, TextDataSynchronizer> addText(
+			String groupName,
 			String name,
 			String value,
 			boolean isMultiLined,
@@ -163,21 +169,22 @@
 		GUIModelField<String, Text, TextDataSynchronizer> field =
 			new GUIModelField<String, Text, TextDataSynchronizer>(
 				name, value, text, dataSynchronizer);
-		addField(field);
+		addField(groupName, field);
 
 		return field;
 	}
 
 	public<T> void addField(
+			String groupName,
 			GUIModelField<T, ? extends Widget, ? extends ModelDataSynchronizer<?>> field) {
-		String fieldName = field.getName();
+		GUIModelGroup group = getGroup(groupName);
+		group.addField(field);
+	}
 
-		if (this.inputFieldsByName.containsKey(fieldName)) {
-			String exceptionMessage =
-				"A field with the name \"" + fieldName + "\" already exists.  Unable to continue.";
-			throw new ModelFieldException(exceptionMessage);
+	public<T> void removeField(
+			GUIModelField<T, ? extends Widget, ? extends ModelDataSynchronizer<?>> field) {
+		for (GUIModelGroup group : this.groups.values()) {
+			group.removeField(field);
 		}
-
-		this.inputFieldsByName.put(fieldName, field);
 	}
 }
\ No newline at end of file
Added: trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/GUIModelGroup.java
===================================================================
--- trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/GUIModelGroup.java	                        (rev 0)
+++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/GUIModelGroup.java	2010-07-16 02:11:57 UTC (rev 1090)
@@ -0,0 +1,55 @@
+package org.cishell.utilities.swt.model;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.cishell.utilities.swt.model.datasynchronizer.ModelDataSynchronizer;
+import org.eclipse.swt.widgets.Widget;
+
+public class GUIModelGroup {
+	private String name;
+	private Map<String, GUIModelField<?, ? extends Widget, ? extends ModelDataSynchronizer<?>>>
+		inputFieldsByName = new HashMap<
+			String, GUIModelField<?, ? extends Widget, ? extends ModelDataSynchronizer<?>>>();
+
+	public GUIModelGroup(String name) {
+		this.name = name;
+	}
+
+	public String getName() {
+		return this.name;
+	}
+
+	public Collection<String> getFieldNames() {
+		return this.inputFieldsByName.keySet();
+	}
+
+	public Collection<
+			GUIModelField<?, ? extends Widget, ? extends ModelDataSynchronizer<?>>> getFields() {
+		return this.inputFieldsByName.values();
+	}
+
+	public GUIModelField<
+			?, ? extends Widget, ? extends ModelDataSynchronizer<?>> getField(String name) {
+		return this.inputFieldsByName.get(name);
+	}
+
+	public<T> void addField(
+			GUIModelField<T, ? extends Widget, ? extends ModelDataSynchronizer<?>> field) {
+		String fieldName = field.getName();
+
+		if (this.inputFieldsByName.containsKey(fieldName)) {
+			String exceptionMessage =
+				"A field with the name \"" + fieldName + "\" already exists.  Unable to continue.";
+			throw new ModelFieldException(exceptionMessage);
+		}
+
+		this.inputFieldsByName.put(fieldName, field);
+	}
+
+	public<T> void removeField(
+			GUIModelField<T, ? extends Widget, ? extends ModelDataSynchronizer<?>> field) {
+		this.inputFieldsByName.remove(field);
+	}
+}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 |