Changeset 1278


Ignore:
Timestamp:
08/16/06 19:24:52 (14 years ago)
Author:
chris
Message:

GotoRenderer.java:
1) changes for better performance based on suggestions
from the jdk 1.4 DefaultTableCellRenderer API

ClickableList.java:
1) changes to certain uses of DOM Elements when I
could have been manipulating OMEXMLNodes instead

VariableTextAreaRenderer (NEW):
1) changed VariableComboRenderer to handle only cells
that should have comboboxes... this renderer signifies
with a snazzy icon that a cell will be edited by a
textarea instead of a textfield or combobox

VariableComboRenderer:
1) total overhaul, most of the mechanics of this are
now in MetadataPane. This keeps the renderer code
clean and simple and avoids nasty mishaps/bugs.

MetadataPane:
1) big cleanup of places that I was using Elements
instead of OMEXMLNodes

2) added code to override getRenderer or whatever it
is in ClickableTable so that depending on the row
the renderer for the cell will be appropriate

3) switched around where the internal defs are read
for better performance, since it shouldn't be re-doing
the internal defs every time it remakes the GUI.

Location:
trunk/loci/ome/notebook
Files:
1 added
4 edited

Legend:

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

    r1268 r1278  
    103103              if(thisEle.getAttribute("Name").equals((String) getSelectedValue())) childEle = thisEle; 
    104104            } 
    105             childEle.setAttribute("Value", text); 
     105            if (childEle!=null) childEle.setAttribute("Value", text); 
    106106          } 
    107107        } 
     
    130130                        //If a string was returned, say so. 
    131131                        if ((newName != null) && (newName.length() > 0)) { 
    132               CustomAttributesNode caNode = null; 
    133               Element currentCA = DOMUtil.getChildElement("CustomAttributes", tableP.tPanel.oNode.getDOMElement()); 
    134               if (currentCA != null) caNode = new CustomAttributesNode(currentCA); 
    135               else { 
    136                 Element cloneEle = DOMUtil.createChild(tableP.tPanel.oNode.getDOMElement(),"CustomAttributes"); 
    137                 caNode = new CustomAttributesNode(cloneEle); 
    138               } 
    139                
    140132              String newXMLName = tableP.el.getAttribute("XMLName") + "Annotation"; 
    141133 
     
    190182                                } 
    191183                                         
    192               AttributeNode newNode = new AttributeNode(caNode, newXMLName); 
     184              OMEXMLNode newNode = MetadataPane.makeNode(newXMLName, tableP.tPanel.oNode); 
    193185              newNode.setAttribute("NoteFor", tableP.id);   
    194186              newNode.setAttribute("Name", newName); 
  • trunk/loci/ome/notebook/GotoRenderer.java

    r1268 r1278  
    5656    } 
    5757  } 
     58   
     59  //overidden for performance reasons... see jdk 1.4 doc 
     60  //for details as to why I did this 
     61  public void validate() {} 
     62  public void revalidate() {} 
     63  public void repaint(long tm, int x, int y, 
     64    int width, int height) {} 
     65  public void firePropertyChange(String propertyName, 
     66    boolean oldValue, boolean newValue) {} 
     67  protected void firePropertyChange(String propertyName, 
     68    Object oldValue, Object newValue) {} 
    5869} 
  • trunk/loci/ome/notebook/MetadataPane.java

    r1268 r1278  
    733733                        n = new AttributeNode(anEle); 
    734734                      } 
    735  
     735                       
    736736                TablePanel p = new TablePanel(e, tp, n); 
    737737                iHoldTables.add(p); 
     
    916916      } 
    917917      else { 
    918         Element currentCA = DOMUtil.getChildElement("CustomAttributes",  
    919           parent.getDOMElement()); 
    920         if (currentCA != null) { 
    921           caNode = new CustomAttributesNode(currentCA); 
     918                                caNode = (CustomAttributesNode) parent.getChild("CustomAttributes"); 
     919        if(caNode != null) { 
    922920          r.exec("import org.openmicroscopy.xml.CustomAttributesNode"); 
    923921          r.exec("import org.openmicroscopy.xml.st." + 
     
    10591057    private JButton noteButton; 
    10601058    protected Vector attrList, refList; 
     1059    protected TableCellRenderer labelR,textR,comboR,gotoR; 
    10611060 
    10621061    public TablePanel(Element e, TabPanel tp, OMEXMLNode on) { 
     1062      labelR = new DefaultTableCellRenderer(); 
     1063      comboR = new VariableComboRenderer(); 
     1064      textR = new VariableTextAreaRenderer(); 
     1065      gotoR = new GotoRenderer(); 
     1066 
    10631067      isTopLevel = false; 
    10641068       
     
    11561160      }; 
    11571161       
    1158       table = new ClickableTable(myTableModel, this); 
     1162      table = new ClickableTable(myTableModel, this) { 
     1163        public TableCellRenderer getCellRenderer(int row, int column) {                    
     1164          if (column == 1) { 
     1165                                    TableModel tModel = table.getModel(); 
     1166                                   
     1167                                    Vector fullList = DOMUtil.getChildElements("OMEAttribute",el); 
     1168                                    Element templateE = null; 
     1169                                    for (int i = 0;i<fullList.size();i++) { 
     1170                                      Element thisE = (Element) fullList.get(i); 
     1171                                      String nameAttr = thisE.getAttribute("XMLName"); 
     1172                                      if(thisE.hasAttribute("Name")) nameAttr = thisE.getAttribute("Name"); 
     1173                                      if(nameAttr.equals((String) tModel.getValueAt(row, 0))) templateE = thisE;       
     1174                                    } 
     1175                                     
     1176                                    String cellType = null; 
     1177                                     
     1178                                    if(templateE.hasAttribute("Type")) cellType = templateE.getAttribute("Type");      
     1179                 
     1180                                    if(cellType != null) {  
     1181                                            if(cellType.equals("Ref")) { 
     1182                                              return comboR; 
     1183                                            } 
     1184                                            else if(cellType.equals("Desc")) { 
     1185                                              return textR; 
     1186                                            } 
     1187                                            else { 
     1188                                              return labelR; 
     1189                                            }  
     1190                                    } 
     1191                                    else { 
     1192                                      return labelR; 
     1193                                    } 
     1194                                  } 
     1195                                  else if (column == 2) { 
     1196                                    return gotoR; 
     1197                                  } 
     1198                                  else return labelR; 
     1199                  } 
     1200                        }; 
    11591201//      table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF ); 
    11601202      table.getColumnModel().getColumn(0).setPreferredWidth(125); 
     
    11651207      JTableHeader tHead = table.getTableHeader(); 
    11661208      tHead.setResizingAllowed(true); 
    1167       tHead.setReorderingAllowed(true); 
     1209      tHead.setReorderingAllowed(false); 
    11681210//      tHead.setBackground(NotePanel.BACK_COLOR); 
    11691211//      tHead.setOpaque(false); 
     
    12821324        }  
    12831325      } 
    1284        
    1285       TableColumn refColumn = table.getColumnModel().getColumn(1); 
    1286       refColumn.setCellRenderer(new VariableComboRenderer(el)); 
    12871326    } 
    12881327 
     
    13201359        TableColumn gotoColumn = table.getColumnModel().getColumn(2); 
    13211360        gotoColumn.setCellEditor(new GotoEditor(this)); 
    1322         gotoColumn.setCellRenderer(new GotoRenderer()); 
    13231361      } 
    13241362    } 
  • trunk/loci/ome/notebook/VariableComboRenderer.java

    r1261 r1278  
    2727import javax.swing.JTable; 
    2828import javax.swing.JComboBox; 
    29 import javax.swing.ImageIcon; 
    3029import javax.swing.table.TableCellRenderer; 
    31 import javax.swing.table.TableModel; 
    3230import javax.swing.border.EmptyBorder; 
    3331 
    3432import java.awt.Component; 
     33import java.awt.BorderLayout; 
    3534 
    36 import java.util.Vector; 
    37  
    38 import org.openmicroscopy.xml.DOMUtil; 
    39 import org.w3c.dom.Element; 
    40  
    41 public class VariableComboRenderer 
     35public class VariableComboRenderer extends JComboBox 
    4236  implements TableCellRenderer 
    4337{ 
    44   public static final ImageIcon TEXT_BULLET =  
    45     MetadataPane.createImageIcon("Icons/TextBullet.GIF", 
    46       "An icon signifying that a textfield will edit this cell."); 
    47  
    48   protected Element tEle; 
    49  
    50   public VariableComboRenderer(Element e) { 
    51     tEle = e; 
     38  public VariableComboRenderer() { 
     39    super(); 
    5240  } 
    5341 
     
    5644                          boolean isSelected, boolean hasFocus, 
    5745                          int row, int column) { 
    58     TableModel tModel = table.getModel(); 
     46    removeAllItems(); 
     47    addItem(value); 
     48    setBorder((EmptyBorder) null); 
     49    return this; 
     50  } 
    5951   
    60     Vector fullList = DOMUtil.getChildElements("OMEAttribute",tEle); 
    61     Element templateE = null; 
    62     for (int i = 0;i<fullList.size();i++) { 
    63       Element thisE = (Element) fullList.get(i); 
    64       String nameAttr = thisE.getAttribute("XMLName"); 
    65       if(thisE.hasAttribute("Name")) nameAttr = thisE.getAttribute("Name"); 
    66       if(nameAttr.equals((String) tModel.getValueAt(row, 0))) templateE = thisE;       
    67     } 
    68      
    69     String cellType = null; 
    70     if(templateE.hasAttribute("Type")) cellType = templateE.getAttribute("Type");                       
    71     if(cellType != null) {  
    72             if(cellType.equals("Ref")) { 
    73               Object [] myObjects = {value}; 
    74               JComboBox jcb = new JComboBox(myObjects); 
    75               jcb.setBorder((EmptyBorder) null); 
    76               return jcb; 
    77             } 
    78             else if(cellType.equals("Desc")) { 
    79               JLabel jl = new JLabel(" " + (String) value, TEXT_BULLET, JLabel.LEFT); 
    80               return jl; 
    81             } 
    82             else { 
    83               JLabel jl = new JLabel(" " + (String) value); 
    84               return jl; 
    85             }  
    86     } 
    87     else { 
    88       JLabel jl = new JLabel(" " + (String) value); 
    89       return jl; 
    90     }  
    91   } 
     52  //overidden for performance reasons... see jdk 1.4 doc 
     53  //for details as to why I did this 
     54//  public void validate() {} 
     55//  public void revalidate() {} 
     56  public void repaint(long tm, int x, int y, 
     57    int width, int height) {} 
     58  public void firePropertyChange(String propertyName, 
     59    boolean oldValue, boolean newValue) {} 
     60  protected void firePropertyChange(String propertyName, 
     61    Object oldValue, Object newValue) {} 
    9262} 
Note: See TracChangeset for help on using the changeset viewer.