Changeset 5543
- Timestamp:
- 07/17/08 16:32:21 (3 months ago)
- Location:
- branches/OmeroEditor/src
- Files:
-
- 19 added
- 3 removed
- 30 modified
-
fields/AbstractValueObject.java (added)
-
fields/DateTimeValueObject.java (added)
-
fields/DefaultFieldEditor.java (added)
-
fields/Field.java (modified) (1 diff)
-
fields/FieldPanel.java (added)
-
fields/FieldValueFactory.java (added)
-
fields/IField.java (added)
-
fields/IFieldValue.java (added)
-
fields/NoValue.java (added)
-
fields/TextValueObject.java (added)
-
tree/DataField.java (modified) (4 diffs)
-
tree/Tree.java (modified) (2 diffs)
-
treeEditingComponents (added)
-
treeEditingComponents/DateTimeField.java (added)
-
treeEditingComponents/EditingComponentFactory.java (added)
-
treeEditingComponents/TextFieldEditor.java (added)
-
treeModel/ContiguousChildSelectionModel.java (modified) (2 diffs)
-
treeModel/DynamicTreeDemo.java (deleted)
-
treeModel/FieldRenderer.java (modified) (4 diffs)
-
treeModel/MyBasicTreeUI.java (added)
-
treeModel/Tree.java (deleted)
-
treeModel/TreeEditorFactory.java (modified) (2 diffs)
-
treeModel/TreeUI.java (modified) (4 diffs)
-
ui/FieldEditorFormFieldFactory.java (modified) (3 diffs)
-
ui/FormDisplay.java (modified) (4 diffs)
-
ui/components/AttributeEditorListeners.java (modified) (4 diffs)
-
ui/components/AttributeTextEditor.java (modified) (3 diffs)
-
ui/components/OntologyTermSelector.java (modified) (3 diffs)
-
ui/formFields/FormField.java (deleted)
-
ui/formFields/FormFieldCheckBox.java (modified) (2 diffs)
-
ui/formFields/FormFieldContainer.java (modified) (3 diffs)
-
ui/formFields/FormFieldCustom.java (modified) (3 diffs)
-
ui/formFields/FormFieldDate.java (modified) (2 diffs)
-
ui/formFields/FormFieldDateTime.java (modified) (3 diffs)
-
ui/formFields/FormFieldDropDown.java (modified) (2 diffs)
-
ui/formFields/FormFieldFixed.java (modified) (1 diff)
-
ui/formFields/FormFieldImage.java (modified) (2 diffs)
-
ui/formFields/FormFieldLink.java (modified) (2 diffs)
-
ui/formFields/FormFieldMemo.java (modified) (2 diffs)
-
ui/formFields/FormFieldNumber.java (modified) (2 diffs)
-
ui/formFields/FormFieldOLS.java (modified) (1 diff)
-
ui/formFields/FormFieldObservation.java (modified) (2 diffs)
-
ui/formFields/FormFieldProtocol.java (modified) (2 diffs)
-
ui/formFields/FormFieldTable.java (modified) (3 diffs)
-
ui/formFields/FormFieldText.java (modified) (5 diffs)
-
ui/formFields/FormFieldTime.java (modified) (3 diffs)
-
uiComponents (added)
-
uiComponents/CompSizesReg.java (added)
-
uiComponents/DoubleDigitField.java (added)
-
uiComponents/DoubleDigitSpinner.java (added)
-
uiComponents/HrsMinsEditor.java (added)
-
util/DefaultExport.java (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/OmeroEditor/src/fields/Field.java
r5536 r5543 26 26 import java.util.HashMap; 27 27 28 import tree.DataFieldConstants; 28 29 29 public class Field { 30 31 public class Field 32 implements IField { 30 33 31 34 HashMap<String, String> allAttributesMap; 32 35 36 /** 37 * The "Value" of the field. 38 * This could be a simple string, or a mixture of dates, times etc. 39 * It represents the experimental parameters that are stored by this 40 * field. 41 */ 42 private IFieldValue fieldValue; 43 33 44 public Field() { 34 this("untitled", "no value");45 this("untitled", null, DataFieldConstants.FIXED_PROTOCOL_STEP); 35 46 } 36 47 37 public Field(String name, String value ) {48 public Field(String name, String value, String fieldType) { 38 49 39 50 allAttributesMap = new HashMap<String, String>(); 40 51 41 setAttribute("name", name); 42 setAttribute("value", value); 52 fieldValue = FieldValueFactory.getFieldValue(fieldType); 53 54 setAttribute(DataFieldConstants.ELEMENT_NAME, name); 55 setAttribute(DataFieldConstants.VALUE, value); 43 56 } 44 57 45 58 public String getAttribute(String name) { 59 //System.out.println("Field getAttribute()"); 60 if (fieldValue.isValueAttribute(name)) { 61 return fieldValue.getAttribute(name); 62 } 63 46 64 return allAttributesMap.get(name); 47 65 } 48 66 49 67 public void setAttribute(String name, String value) { 68 System.out.println("Field setAttribute() " + name + " = " + value); 69 if (fieldValue.isValueAttribute(name)) { 70 fieldValue.setAttribute(name, value); 71 } 50 72 allAttributesMap.put(name, value); 51 73 } 52 74 53 75 public String toString() { 54 return getAttribute("name") + ": " + getAttribute("value"); 76 return getAttribute(DataFieldConstants.ELEMENT_NAME) + ": " + 77 getAttribute(DataFieldConstants.VALUE); 78 } 79 80 public boolean isAttributeTrue(String attributeName) { 81 String value = getAttribute(attributeName); 82 return DataFieldConstants.TRUE.equals(value); 83 } 84 85 public IFieldValue getValueObject() { 86 return fieldValue; 87 } 88 89 /** 90 * Gets the names of the attributes where this field stores its "value"s. 91 * This is used eg. (if a single value is returned) 92 * as the destination to copy the default value when defaults are loaded. 93 * Also used by EditClearFields to set all values back to null. 94 * This method delegates to the Value object for this field. 95 * 96 * @return the names of the attributes that holds the "value" of this field 97 */ 98 public String[] getValueAttributes() { 99 return fieldValue.getValueAttributes(); 100 } 101 102 /** 103 * This method tests to see whether the field has been filled out. 104 * ie, Has the user entered a "valid" value into the Form. 105 * For fields that have a single 'value', this method will return true if 106 * that value is filled (not null). 107 * For fields with several attributes, it depends on what is considered 'filled'. 108 * This method can be used to check that 'Obligatory Fields' have been completed 109 * when a file is saved. 110 * Subclasses should override this method. 111 * 112 * @return True if the field has been filled out by user. Required values are not null. 113 */ 114 public boolean isFieldFilled() { 115 return fieldValue.isFieldFilled(); 55 116 } 56 117 } -
branches/OmeroEditor/src/tree/DataField.java
r5511 r5543 34 34 import javax.swing.undo.UndoableEdit; 35 35 36 import fields.FieldPanel; 37 36 38 import tree.edit.EditDataFieldAttribute; 37 39 import tree.edit.EditDataFieldAttributes; … … 39 41 import ui.FieldEditorFormFieldFactory; 40 42 import ui.fieldEditors.FieldEditor; 41 import ui.formFields.FormField;42 43 43 44 … … 72 73 73 74 // the two JPanels that display the dataField, and hold optional attributes 74 F ormFieldformField;75 FieldPanel formField; 75 76 FieldEditor fieldEditor; 76 77 … … 296 297 getFormField(); 297 298 298 formField.set Highlighted(highlighted);299 formField.setSelected(highlighted); 299 300 } 300 301 -
branches/OmeroEditor/src/tree/Tree.java
r5521 r5543 47 47 import org.w3c.dom.NodeList; 48 48 49 import fields.FieldPanel; 50 49 51 import tree.edit.EditAddField; 50 52 import tree.edit.EditClearFields; … … 65 67 import ui.XMLUpdateObserver; 66 68 import ui.fieldEditors.FieldEditor; 67 import ui.formFields.FormField;68 69 import ui.formFields.FormFieldNumber; 69 70 import validation.XMLSchema; -
branches/OmeroEditor/src/treeModel/ContiguousChildSelectionModel.java
r5527 r5543 80 80 public void setSelectionPaths(TreePath[] pPaths) { 81 81 82 //System.out.println("ContiguousChildSelectionModel setSelectionPaths" + 83 // "length = " + pPaths.length); 82 84 83 85 if (pPaths.length > 0) { … … 184 186 System.out.println("ContiguousChildSelectionModel addSelectionPaths" + 185 187 "length = " + paths.length); 188 186 189 /* 187 190 * Check if any new paths have different parent 188 191 */ 189 192 TreePath[] currentPaths = this.getSelectionPaths(); 193 // if no selection, simple set the selection paths to the new paths 194 if ((currentPaths == null) || (currentPaths.length == 0)) { 195 setSelectionPaths(paths); 196 return; 197 } 190 198 TreePath currentParent = currentPaths[0].getParentPath(); 191 199 -
branches/OmeroEditor/src/treeModel/FieldRenderer.java
r5536 r5543 23 23 package treeModel; 24 24 25 //Java imports 26 25 27 import java.awt.Component; 26 28 27 29 import javax.swing.Icon; 30 import javax.swing.JLabel; 28 31 import javax.swing.JTree; 32 import javax.swing.tree.DefaultMutableTreeNode; 29 33 import javax.swing.tree.DefaultTreeCellRenderer; 30 import javax.swing.tree.TreeCellRenderer;31 32 import util.ImageFactory;33 34 //Java imports35 34 36 35 //Third-party libraries … … 38 37 //Application-internal dependencies 39 38 39 import fields.FieldPanel; 40 import fields.IField; 41 42 43 40 44 /** 45 * The Renderer for JTree, to build the "Form" of hierarchical fields. 41 46 * 47 * The getTreeCellRendererComponent() method returns a JPanel, which is 48 * used to build the Non-Editable tree UI (before editing starts). 49 * This JPanel is created by obtaining the UserObject for the node of 50 * the tree. If this is an instance of IField, it is used to create 51 * a JPanel. Otherwise it returns a JLabel. 42 52 * 43 53 * @author William Moore … … 51 61 public class FieldRenderer 52 62 extends DefaultTreeCellRenderer { 63 64 public FieldRenderer() { 65 super(); 66 } 53 67 54 68 public Component getTreeCellRendererComponent(JTree tree, Object value, … … 56 70 boolean hasFocus) { 57 71 58 super.getTreeCellRendererComponent( 59 tree, value, selected, 60 expanded, leaf, row, 61 hasFocus); 62 63 Icon bigIcon = ImageFactory.getInstance().getIcon( 64 ImageFactory.ALARM_ICON_64); 65 66 setIcon(bigIcon); 67 68 return this; 72 73 if (value instanceof DefaultMutableTreeNode) { 74 DefaultMutableTreeNode node = (DefaultMutableTreeNode)value; 75 Object object = node.getUserObject(); 76 if (object instanceof IField) { 77 IField field = (IField)object; 78 FieldPanel fieldPanel = new FieldPanel(field, tree, node); 79 80 81 //fieldPanel.setTree(tree); 82 //fieldPanel.setTreeNode(node); 83 84 fieldPanel.setSelected(selected); 85 86 return fieldPanel; 87 } 88 } 89 90 System.out.println(value.getClass()); 91 return new JLabel(value.toString()); 69 92 } 70 93 94 public Icon getLeafIcon() { 95 return null; 96 } 97 98 public Icon getOpenIcon() { 99 return null; 100 } 101 102 public Icon getClosedIcon() { 103 return null; 104 } 105 106 public int getIconTextGap() { 107 return 0; 108 } 71 109 72 110 } -
branches/OmeroEditor/src/treeModel/TreeEditorFactory.java
r5537 r5543 28 28 import javax.swing.tree.MutableTreeNode; 29 29 import javax.swing.tree.TreeNode; 30 31 import tree.DataFieldConstants; 30 32 31 33 import fields.Field; … … 78 80 public static TreeNode createDummyTree() { 79 81 80 Field rootField = new Field("Title", "My Experiment"); 82 Field rootField = new Field(); 83 rootField.setAttribute(DataFieldConstants.ELEMENT_NAME, "Title"); 81 84 DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(rootField); 82 85 83 DefaultMutableTreeNode p1Name = new DefaultMutableTreeNode(new Field("Protocol", "10-2-08")); 84 DefaultMutableTreeNode p2Name = new DefaultMutableTreeNode(new Field("Temperature", "37'C")); 85 DefaultMutableTreeNode c1Name = new DefaultMutableTreeNode(new Field("Cells", "HeLa")); 86 DefaultMutableTreeNode c2Name = new DefaultMutableTreeNode(new Field("DNA", "GFP-H2B")); 87 DefaultMutableTreeNode c3Name = new DefaultMutableTreeNode(new Field("Incubation time", "3 hrs")); 88 DefaultMutableTreeNode c4Name = new DefaultMutableTreeNode(new Field("On ice", "10 mins")); 86 Field field; 87 88 DefaultMutableTreeNode p1Name = new DefaultMutableTreeNode( 89 new Field("Protocol", "10-2-08", DataFieldConstants.TEXT_ENTRY_STEP)); 90 DefaultMutableTreeNode p2Name = new DefaultMutableTreeNode( 91 new Field("Temperature", "37'C", DataFieldConstants.TEXT_ENTRY_STEP)); 92 93 field = new Field("Date", null, DataFieldConstants.DATE_TIME_FIELD); 94 // field.setAttribute(DataFieldConstants.SECONDS, "3600"); 95 //field.setAttribute(DataFieldConstants.UTC_MILLISECS, "This is a test description"); 96 DefaultMutableTreeNode c1Name = new DefaultMutableTreeNode(field); 97 DefaultMutableTreeNode c2Name = new DefaultMutableTreeNode( 98 new Field("DNA", null, DataFieldConstants.FIXED_PROTOCOL_STEP)); 99 DefaultMutableTreeNode c3Name = new DefaultMutableTreeNode( 100 new Field("Incubation time", "3 hrs", DataFieldConstants.TEXT_ENTRY_STEP)); 101 DefaultMutableTreeNode c4Name = new DefaultMutableTreeNode( 102 new Field("On ice", "10 mins", DataFieldConstants.TEXT_ENTRY_STEP)); 103 104 89 105 90 106 rootNode.add(p1Name); -
branches/OmeroEditor/src/treeModel/TreeUI.java
r5537 r5543 23 23 package treeModel; 24 24 25 //Java imports 26 25 27 import java.awt.BorderLayout; 26 28 29 import javax.swing.DefaultCellEditor; 27 30 import javax.swing.JPanel; 28 31 import javax.swing.JScrollPane; 29 32 import javax.swing.JTree; 30 31 //Java imports 33 import javax.swing.tree.DefaultTreeCellEditor; 34 import javax.swing.tree.DefaultTreeCellRenderer; 35 import javax.swing.tree.TreeCellEditor; 32 36 33 37 //Third-party libraries … … 35 39 //Application-internal dependencies 36 40 41 import fields.DefaultFieldEditor; 42 43 37 44 /** 45 * This UI class displays a JTree in a scroll pane. 38 46 * 39 47 * … … 49 57 extends JPanel { 50 58 51 private TreeModel model;52 53 59 private JTree tree; 54 60 … … 56 62 57 63 super(new BorderLayout()); 58 59 this.model = model; 64 60 65 61 66 tree = new JTree(model); 67 /* 68 * The default UI (BasicTreeUI) is replaced with a subclass 69 * to modify the selection and editing behavior. 70 */ 71 tree.setUI(new MyBasicTreeUI()); 72 73 /* 74 * A custom selection model allows multiple nodes to be selected, 75 * but ensures that they are contiguous and are all siblings. 76 */ 62 77 tree.setSelectionModel(new ContiguousChildSelectionModel()); 78 79 /* 80 * Setting the row height to 0 allows each node to choose it's 81 * own size. The JTree will call getPreferredSize() for each. 82 */ 63 83 tree.setRowHeight(0); 64 tree.setCellRenderer(new FieldRenderer()); 84 85 /* 86 * A custom TreeCellRenderer (extends DefaultTreeCellRenderer) 87 * renders nodes as JPanels. 88 */ 89 DefaultTreeCellRenderer fieldRenderer = new FieldRenderer(); 90 tree.setCellRenderer(fieldRenderer); 91 92 /* 93 * A TreeCellEditor for editing fields. 94 * This merely delegates to the fieldRenderer because the same 95 * components are used for display and editing of the tree Cells. 96 */ 97 TreeCellEditor fieldEditor = new DefaultFieldEditor(fieldRenderer); 98 /* 99 * The DefaultTreeCellEditor (when passed a TreeCellEditor) uses this 100 * to switch between editing and display. 101 */ 102 TreeCellEditor editor = new DefaultTreeCellEditor(tree, fieldRenderer, fieldEditor); 103 tree.setCellEditor(editor); 65 104 66 105 tree.setEditable(true); 67 106 107 /* 108 * Place the JTree in a ScrollPane and add it to this panel. 109 */ 68 110 JScrollPane treeScroller = new JScrollPane(tree); 69 70 111 add(treeScroller, BorderLayout.CENTER); 71 112 } 113 72 114 73 115 } -
branches/OmeroEditor/src/ui/FieldEditorFormFieldFactory.java
r5326 r5543 23 23 package ui; 24 24 25 import fields.FieldPanel; 25 26 import tree.DataField; 26 27 import tree.DataFieldConstants; … … 40 41 import ui.fieldEditors.FieldEditorText; 41 42 import ui.fieldEditors.FieldEditorTime; 42 import ui.formFields.FormField;43 43 import ui.formFields.FormFieldCheckBox; 44 44 import ui.formFields.FormFieldCustom; … … 143 143 144 144 // FormField Factory 145 public F ormFieldgetFormField(DataField dataField) {146 147 F ormFieldformField = null;145 public FieldPanel getFormField(DataField dataField) { 146 147 FieldPanel formField = null; 148 148 149 149 String inputType = dataField.getInputType(); -
branches/OmeroEditor/src/ui/FormDisplay.java
r5362 r5543 30 30 import javax.swing.event.ChangeListener; 31 31 32 import fields.FieldPanel; 33 32 34 import tree.DataFieldConstants; 33 35 import tree.DataFieldNode; 34 import ui.formFields.FormField;35 36 import ui.formFields.FormFieldContainer; 36 37 … … 93 94 94 95 95 F ormField formField = (FormField)rootNode.getFormField();96 FieldPanel formField = (FieldPanel)rootNode.getFormField(); 96 97 formField.setModel(model); 97 98 formField.refreshRootField(true); // displays the correct buttons etc. … … 111 112 //System.out.println("FormDisplay: buildFormTree() " + dfNode.getDataField().getName()); 112 113 113 boolean subStepsCollapsed = ((F ormField)dfNode.getFormField()).subStepsCollapsed();114 boolean subStepsCollapsed = ((FieldPanel)dfNode.getFormField()).subStepsCollapsed(); 114 115 115 116 if (!subStepsCollapsed) { … … 120 121 // set visibility of the childBox wrt collapsed boolean of dataField 121 122 // & sets collapse button visible if dataFieldNode has children 122 ((F ormField)dfNode.getFormField()).refreshTitleCollapsed();123 ((FieldPanel)dfNode.getFormField()).refreshTitleCollapsed(); 123 124 124 125 } -
branches/OmeroEditor/src/ui/components/AttributeEditorListeners.java
r5526 r5543 31 31 import javax.swing.text.JTextComponent; 32 32 33 import fields.IField; 34 33 35 //Third-party libraries 34 36 … … 43 45 * Then when focus is lost, the focusListener updates the dataField 44 46 * attribute (if textChanged), by calling 45 * setDataFieldAttribute. 47 * setDataFieldAttribute. TextChanged is reset to false.
