From: <pat...@us...> - 2010-07-09 20:55:25
|
Revision: 1083 http://cishell.svn.sourceforge.net/cishell/?rev=1083&view=rev Author: pataphil Date: 2010-07-09 20:55:18 +0000 (Fri, 09 Jul 2010) Log Message: ----------- * Added additional ModelDataSynchronizer types + field-adding-support to GUIModel/SWT utilities. Modified Paths: -------------- trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/GUIModel.java trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/GUIModelField.java Added Paths: ----------- trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/datasynchronizer/SingleListSelectionDataSynchronizer.java trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/datasynchronizer/TextDataSynchronizer.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-08 17:37:42 UTC (rev 1082) +++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/GUIModel.java 2010-07-09 20:55:18 UTC (rev 1083) @@ -3,23 +3,28 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; -import java.util.List; import java.util.Map; import org.cishell.utilities.swt.model.datasynchronizer.CheckBoxDataSynchronizer; import org.cishell.utilities.swt.model.datasynchronizer.DateDataSynchronizer; import org.cishell.utilities.swt.model.datasynchronizer.DropDownDataSynchronizer; import org.cishell.utilities.swt.model.datasynchronizer.ModelDataSynchronizer; +import org.cishell.utilities.swt.model.datasynchronizer.SingleListSelectionDataSynchronizer; +import org.cishell.utilities.swt.model.datasynchronizer.TextDataSynchronizer; import org.cishell.utilities.swt.model.datasynchronizer.TimeDataSynchronizer; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.DateTime; +import org.eclipse.swt.widgets.List; +import org.eclipse.swt.widgets.Text; +import org.eclipse.swt.widgets.Widget; public class GUIModel { - private Map<String, GUIModelField<?>> inputFieldsByName = - new HashMap<String, GUIModelField<?>>(); + private Map<String, GUIModelField<?, ? extends Widget, ? extends ModelDataSynchronizer<?>>> + inputFieldsByName = new HashMap< + String, GUIModelField<?, ? extends Widget, ? extends ModelDataSynchronizer<?>>>(); public GUIModel() { } @@ -28,75 +33,130 @@ return this.inputFieldsByName.keySet(); } - public Collection<GUIModelField<?>> getFields() { + public Collection< + GUIModelField<?, ? extends Widget, ? extends ModelDataSynchronizer<?>>> getFields() { return this.inputFieldsByName.values(); } - public GUIModelField<?> getField(String name) { + public GUIModelField< + ?, ? extends Widget, ? extends ModelDataSynchronizer<?>> getField(String name) { return this.inputFieldsByName.get(name); } - public Button addCheckBox(String name, boolean on, Composite parent, int style) { + public GUIModelField<Boolean, Button, CheckBoxDataSynchronizer> addCheckBox( + String name, boolean on, Composite parent, int style) { Button checkBox = new Button(parent, style | SWT.CHECK); - ModelDataSynchronizer<Boolean> dataSynchronizer = - new CheckBoxDataSynchronizer(checkBox, on); - GUIModelField<Boolean> field = - new GUIModelField<Boolean>(name, on, checkBox, dataSynchronizer); + CheckBoxDataSynchronizer dataSynchronizer = new CheckBoxDataSynchronizer(checkBox, on); + GUIModelField<Boolean, Button, CheckBoxDataSynchronizer> field = + new GUIModelField<Boolean, Button, CheckBoxDataSynchronizer>( + name, on, checkBox, dataSynchronizer); addField(field); - return checkBox; + return field; } - public Combo addDropDown( + public GUIModelField<String, Combo, DropDownDataSynchronizer> addSingleSelectionDropDown( String name, int selectedIndex, Collection<String> unorderedOptionLabels, Map<String, String> optionValuesByLabels, Composite parent, int style) { - List<String> orderedOptionLabels = new ArrayList<String>(unorderedOptionLabels); + java.util.List<String> orderedOptionLabels = new ArrayList<String>(unorderedOptionLabels); Combo dropDown = new Combo(parent, style | SWT.DROP_DOWN); - ModelDataSynchronizer<String> dataSynchronizer = new DropDownDataSynchronizer( + DropDownDataSynchronizer dataSynchronizer = new DropDownDataSynchronizer( dropDown, selectedIndex, orderedOptionLabels, optionValuesByLabels); - GUIModelField<String> field = new GUIModelField<String>( - name, orderedOptionLabels.get(selectedIndex), dropDown, dataSynchronizer); + GUIModelField<String, Combo, DropDownDataSynchronizer> field = + new GUIModelField<String, Combo, DropDownDataSynchronizer>( + name, orderedOptionLabels.get(selectedIndex), dropDown, dataSynchronizer); addField(field); - return dropDown; + return field; } + // TODO: addMultiSelectionDropDown + // TODO: Test this out. - public DateTime addDate( + public GUIModelField<org.joda.time.DateTime, DateTime, DateDataSynchronizer> addDate( String name, org.joda.time.DateTime date, Composite parent, int style) { DateTime dateSelector = new DateTime(parent, style | SWT.DATE); - ModelDataSynchronizer<org.joda.time.DateTime> dataSynchronizer = - new DateDataSynchronizer(dateSelector, date); - GUIModelField<org.joda.time.DateTime> field = new GUIModelField<org.joda.time.DateTime>( - name, date, dateSelector, dataSynchronizer); + DateDataSynchronizer dataSynchronizer = new DateDataSynchronizer(dateSelector, date); + GUIModelField<org.joda.time.DateTime, DateTime, DateDataSynchronizer> field = + new GUIModelField<org.joda.time.DateTime, DateTime, DateDataSynchronizer>( + name, date, dateSelector, dataSynchronizer); addField(field); - return dateSelector; + return field; } // TODO: Test this out. - public DateTime addTime( + public GUIModelField<org.joda.time.DateTime, DateTime, TimeDataSynchronizer> addTime( String name, org.joda.time.DateTime time, Composite parent, int style) { DateTime timeSelector = new DateTime(parent, style | SWT.TIME); - ModelDataSynchronizer<org.joda.time.DateTime> dataSynchronizer = - new TimeDataSynchronizer(timeSelector, time); - GUIModelField<org.joda.time.DateTime> field = new GUIModelField<org.joda.time.DateTime>( - name, time, timeSelector, dataSynchronizer); + TimeDataSynchronizer dataSynchronizer = new TimeDataSynchronizer(timeSelector, time); + GUIModelField<org.joda.time.DateTime, DateTime, TimeDataSynchronizer> field = + new GUIModelField<org.joda.time.DateTime, DateTime, TimeDataSynchronizer>( + name, time, timeSelector, dataSynchronizer); addField(field); - return timeSelector; + return field; } // TODO: addCalendar -// public List addSingleSelectionList( -// String name, + // TODO: Test this out. + public GUIModelField<String, List, SingleListSelectionDataSynchronizer> addSingleSelectionList( + String name, + int selectedIndex, + Collection<String> unorderedOptionLabels, + Map<String, String> optionValuesByLabels, + Composite parent, + int style) { + java.util.List<String> orderedOptionLabels = new ArrayList<String>(unorderedOptionLabels); + List list = new List(parent, style | SWT.SINGLE); + SingleListSelectionDataSynchronizer dataSynchronizer = + new SingleListSelectionDataSynchronizer( + list, selectedIndex, orderedOptionLabels, optionValuesByLabels); + GUIModelField<String, List, SingleListSelectionDataSynchronizer> field = + new GUIModelField<String, List, SingleListSelectionDataSynchronizer>( + name, list.getItem(selectedIndex), list, dataSynchronizer); + addField(field); - public<T> void addField(GUIModelField<T> field) { + return field; + } + + // TODO: addMultiSelectionList + // TODO: addProgressBar + // TODO: addSash? + // TODO: addSlider + // TODO: addScale + // TODO: addSpinner + // TODO: addStyledText + + public GUIModelField<String, Text, TextDataSynchronizer> addUnstyledText( + String name, + String value, + boolean isMultiLined, + Composite parent, + int style) { + if (isMultiLined) { + style = style | SWT.MULTI; + } else { + style = style | SWT.SINGLE; + } + + Text text = new Text(parent, style); + TextDataSynchronizer dataSynchronizer = new TextDataSynchronizer(text, value); + GUIModelField<String, Text, TextDataSynchronizer> field = + new GUIModelField<String, Text, TextDataSynchronizer>( + name, value, text, dataSynchronizer); + addField(field); + + return field; + } + + public<T> void addField( + GUIModelField<T, ? extends Widget, ? extends ModelDataSynchronizer<?>> field) { String fieldName = field.getName(); if (this.inputFieldsByName.containsKey(fieldName)) { Modified: trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/GUIModelField.java =================================================================== --- trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/GUIModelField.java 2010-07-08 17:37:42 UTC (rev 1082) +++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/GUIModelField.java 2010-07-09 20:55:18 UTC (rev 1083) @@ -5,18 +5,18 @@ import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Widget; -public class GUIModelField<T> { +public class GUIModelField<T, U extends Widget, V extends ModelDataSynchronizer<T>> { private String name; private T defaultValue; private T value; - private Widget widget; - private ModelDataSynchronizer<T> dataSynchronizer; + private U widget; + private V dataSynchronizer; public GUIModelField( String name, T defaultValue, - Widget widget, - ModelDataSynchronizer<T> dataSynchronizer) { + U widget, + V dataSynchronizer) { this.name = name; this.defaultValue = defaultValue; this.value = this.defaultValue; @@ -41,6 +41,14 @@ return this.value; } + public U getWidget() { + return this.widget; + } + + public V getDataSynchronizer() { + return this.dataSynchronizer; + } + public void setValue(T value) { this.value = this.dataSynchronizer.synchronizeToGUI(value); } Added: trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/datasynchronizer/SingleListSelectionDataSynchronizer.java =================================================================== --- trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/datasynchronizer/SingleListSelectionDataSynchronizer.java (rev 0) +++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/datasynchronizer/SingleListSelectionDataSynchronizer.java 2010-07-09 20:55:18 UTC (rev 1083) @@ -0,0 +1,53 @@ +package org.cishell.utilities.swt.model.datasynchronizer; + +import java.util.Map; + +import org.cishell.utilities.MapUtilities; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.List; + +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; + +// TODO: Make this so options can change on it. +public class SingleListSelectionDataSynchronizer implements ModelDataSynchronizer<String> { + private List singleSelectionList; + private BiMap<Integer, String> optionLabels; + private Map<String, String> optionValuesByLabels; + + public SingleListSelectionDataSynchronizer( + List singleSelectionList, + int selectedIndex, + java.util.List<String> optionLabels, + Map<String, String> optionValuesByLabels) { + this.singleSelectionList = singleSelectionList; + this.optionLabels = HashBiMap.create(MapUtilities.mapIndexToValues(optionLabels)); + this.optionValuesByLabels = optionValuesByLabels; + + this.singleSelectionList.setItems(optionLabels.toArray(new String[0])); + this.singleSelectionList.select(selectedIndex); + } + + public int swtUpdateListenerCode() { + return SWT.Selection; + } + + public String value() { + return this.optionValuesByLabels.get( + this.optionLabels.get(this.singleSelectionList.getSelectionIndex())); + } + + public String synchronizeFromGUI() { + return this.optionLabels.get(this.singleSelectionList.getSelectionIndex()); + } + + public String synchronizeToGUI(String value) { + this.singleSelectionList.select(this.optionLabels.inverse().get(value)); + + return value(); + } + + public String reset(String defaultValue) { + return synchronizeToGUI(defaultValue); + } +} \ No newline at end of file Added: trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/datasynchronizer/TextDataSynchronizer.java =================================================================== --- trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/datasynchronizer/TextDataSynchronizer.java (rev 0) +++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/datasynchronizer/TextDataSynchronizer.java 2010-07-09 20:55:18 UTC (rev 1083) @@ -0,0 +1,36 @@ +package org.cishell.utilities.swt.model.datasynchronizer; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Text; + +public class TextDataSynchronizer implements ModelDataSynchronizer<String> { + private Text text; + + public TextDataSynchronizer(Text text, String value) { + this.text = text; + + this.text.setText(value); + } + + public int swtUpdateListenerCode() { + return SWT.Selection; + } + + public String value() { + return this.text.getText(); + } + + public String synchronizeFromGUI() { + return value(); + } + + public String synchronizeToGUI(String value) { + this.text.setText(value); + + return value(); + } + + public String reset(String defaultValue) { + return synchronizeToGUI(defaultValue); + } +} \ 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: <pat...@us...> - 2010-07-13 15:13:52
|
Revision: 1086 http://cishell.svn.sourceforge.net/cishell/?rev=1086&view=rev Author: pataphil Date: 2010-07-13 15:13:45 +0000 (Tue, 13 Jul 2010) Log Message: ----------- * Fixing build. Hopefully. Modified Paths: -------------- trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/GUIModel.java trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/datasynchronizer/DateDataSynchronizer.java trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/datasynchronizer/TimeDataSynchronizer.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-12 21:25:00 UTC (rev 1085) +++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/GUIModel.java 2010-07-13 15:13:45 UTC (rev 1086) @@ -17,7 +17,6 @@ import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.DateTime; import org.eclipse.swt.widgets.List; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.Widget; @@ -79,26 +78,38 @@ // TODO: addMultiSelectionDropDown // TODO: Test this out. - public GUIModelField<org.joda.time.DateTime, DateTime, DateDataSynchronizer> addDate( - String name, org.joda.time.DateTime date, Composite parent, int style) { - DateTime dateSelector = new DateTime(parent, style | SWT.DATE); + public GUIModelField< + org.joda.time.DateTime, org.eclipse.swt.widgets.DateTime, DateDataSynchronizer> + addDate(String name, org.joda.time.DateTime date, Composite parent, int style) { + org.eclipse.swt.widgets.DateTime dateSelector = + new org.eclipse.swt.widgets.DateTime(parent, style | SWT.DATE); DateDataSynchronizer dataSynchronizer = new DateDataSynchronizer(dateSelector, date); - GUIModelField<org.joda.time.DateTime, DateTime, DateDataSynchronizer> field = - new GUIModelField<org.joda.time.DateTime, DateTime, DateDataSynchronizer>( - name, date, dateSelector, dataSynchronizer); + GUIModelField< + org.joda.time.DateTime, org.eclipse.swt.widgets.DateTime, DateDataSynchronizer> field = + new GUIModelField< + org.joda.time.DateTime, + org.eclipse.swt.widgets.DateTime, + DateDataSynchronizer>( + name, date, dateSelector, dataSynchronizer); addField(field); return field; } // TODO: Test this out. - public GUIModelField<org.joda.time.DateTime, DateTime, TimeDataSynchronizer> addTime( - String name, org.joda.time.DateTime time, Composite parent, int style) { - DateTime timeSelector = new DateTime(parent, style | SWT.TIME); + public GUIModelField< + org.joda.time.DateTime, org.eclipse.swt.widgets.DateTime, TimeDataSynchronizer> + addTime(String name, org.joda.time.DateTime time, Composite parent, int style) { + org.eclipse.swt.widgets.DateTime timeSelector = + new org.eclipse.swt.widgets.DateTime(parent, style | SWT.TIME); TimeDataSynchronizer dataSynchronizer = new TimeDataSynchronizer(timeSelector, time); - GUIModelField<org.joda.time.DateTime, DateTime, TimeDataSynchronizer> field = - new GUIModelField<org.joda.time.DateTime, DateTime, TimeDataSynchronizer>( - name, time, timeSelector, dataSynchronizer); + GUIModelField< + org.joda.time.DateTime, org.eclipse.swt.widgets.DateTime, TimeDataSynchronizer> field = + new GUIModelField< + org.joda.time.DateTime, + org.eclipse.swt.widgets.DateTime, + TimeDataSynchronizer>( + name, time, timeSelector, dataSynchronizer); addField(field); return field; Modified: trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/datasynchronizer/DateDataSynchronizer.java =================================================================== --- trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/datasynchronizer/DateDataSynchronizer.java 2010-07-12 21:25:00 UTC (rev 1085) +++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/datasynchronizer/DateDataSynchronizer.java 2010-07-13 15:13:45 UTC (rev 1086) @@ -1,12 +1,12 @@ package org.cishell.utilities.swt.model.datasynchronizer; import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.DateTime; public class DateDataSynchronizer implements ModelDataSynchronizer<org.joda.time.DateTime> { - private DateTime dateSelector; + private org.eclipse.swt.widgets.DateTime dateSelector; - public DateDataSynchronizer(DateTime dateSelector, org.joda.time.DateTime date) { + public DateDataSynchronizer( + org.eclipse.swt.widgets.DateTime dateSelector, org.joda.time.DateTime date) { this.dateSelector = dateSelector; synchronizeToGUI(date); } Modified: trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/datasynchronizer/TimeDataSynchronizer.java =================================================================== --- trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/datasynchronizer/TimeDataSynchronizer.java 2010-07-12 21:25:00 UTC (rev 1085) +++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/model/datasynchronizer/TimeDataSynchronizer.java 2010-07-13 15:13:45 UTC (rev 1086) @@ -1,12 +1,12 @@ package org.cishell.utilities.swt.model.datasynchronizer; import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.DateTime; public class TimeDataSynchronizer implements ModelDataSynchronizer<org.joda.time.DateTime> { - private DateTime timeSelector; + private org.eclipse.swt.widgets.DateTime timeSelector; - public TimeDataSynchronizer(DateTime timeSelector, org.joda.time.DateTime time) { + public TimeDataSynchronizer( + org.eclipse.swt.widgets.DateTime timeSelector, org.joda.time.DateTime time) { this.timeSelector = timeSelector; synchronizeToGUI(time); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
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. |