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