Changeset 2630


Ignore:
Timestamp:
04/17/07 12:14:41 (13 years ago)
Author:
melissa
Message:

Save custom fields to the NotebookField ST under CustomAttributes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/ome/notebook/Template.java

    r2629 r2630  
    2929import javax.swing.*; 
    3030import org.openmicroscopy.xml.*; 
     31import org.w3c.dom.Element; 
    3132 
    3233/**  
     
    447448  private void populateField(OMENode root, TemplateField t) throws Exception { 
    448449    OMEXMLNode node = findNode(root, t.getMap(), false);  
    449     if (node == null) return; 
     450     
     451    if (node == null) { 
     452      // unmapped field 
     453 
     454      CustomAttributesNode ca = root.getCustomAttributes(); 
     455 
     456      Vector elements = DOMUtil.getChildElements("NotebookField",  
     457        ca.getDOMElement()); 
     458      for (int i=0; i<elements.size(); i++) { 
     459        Element el = (Element) elements.get(i); 
     460        if (DOMUtil.getAttribute("name", el).equals(t.getName())) { 
     461          String v = DOMUtil.getAttribute("value", el);  
     462          setComponentValue(t, t.getComponent(), v);   
     463        } 
     464      } 
     465 
     466      return; 
     467    } 
    450468 
    451469    String map = t.getMap(); 
     
    475493        // populate the corresponding Swing component 
    476494 
    477         JComponent component = t.getComponent(); 
    478  
    479         if (component instanceof JCheckBox) { 
    480           ((JCheckBox) component).setSelected(v.startsWith("t")); 
    481         } 
    482         else if (component instanceof JComboBox) { 
    483           String[] enums = t.getEnums(); 
    484           for (int k=0; k<enums.length; k++) { 
    485             if (enums[k].toLowerCase().equals(v)) { 
    486               ((JComboBox) component).setSelectedIndex(k); 
    487               break; 
    488             } 
    489           } 
    490         } 
    491         else if (component instanceof JScrollPane) { 
    492           JScrollPane scroll = (JScrollPane) component; 
    493           JViewport view = scroll.getViewport(); 
    494           ((JTextArea) view.getView()).setText(s);  
    495         } 
    496         else if (component instanceof JSpinner) { 
    497           ((JSpinner) component).setValue(new Integer(v)); 
    498         } 
     495        setComponentValue(t, t.getComponent(), v); 
    499496        break;  
    500497      } 
     
    525522 
    526523    String map = t.getMap(); 
    527     // TODO : we should still add these fields to the XML 
    528     if (map == null || map.length() == 0) return;  
     524     
     525    if (map == null || map.length() == 0) { 
     526      // this is a custom unmapped field, which gets stored in a 
     527      // NotebookField ST 
     528 
     529      CustomAttributesNode ca = root.getCustomAttributes(); 
     530      Element el = DOMUtil.createChild(ca.getDOMElement(), "NotebookField"); 
     531      OMEXMLNode newNode = OMEXMLNode.createNode(el);  
     532      newNode.setAttribute("name", t.getName()); 
     533      newNode.setAttribute("value", value.toString()); 
     534      return;  
     535    } 
     536     
    529537    map = map.substring(map.lastIndexOf(":") + 1); 
    530538    if (map.indexOf("-") != -1) { 
     
    666674  } 
    667675 
     676  /** Sets the value of the given component, based on the given string. */ 
     677  private void setComponentValue(TemplateField t, JComponent component,  
     678    String v)  
     679  { 
     680    if (component instanceof JCheckBox) { 
     681      ((JCheckBox) component).setSelected(v.startsWith("t")); 
     682    } 
     683    else if (component instanceof JComboBox) { 
     684      String[] enums = t.getEnums(); 
     685      for (int k=0; k<enums.length; k++) { 
     686        if (enums[k].toLowerCase().equals(v)) { 
     687          ((JComboBox) component).setSelectedIndex(k); 
     688          break; 
     689        } 
     690      } 
     691    } 
     692    else if (component instanceof JScrollPane) { 
     693      JScrollPane scroll = (JScrollPane) component; 
     694      JViewport view = scroll.getViewport(); 
     695      ((JTextArea) view.getView()).setText(v);  
     696    } 
     697    else if (component instanceof JSpinner) { 
     698      ((JSpinner) component).setValue(new Integer(v)); 
     699    } 
     700  } 
     701 
    668702} 
Note: See TracChangeset for help on using the changeset viewer.