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. |