Changeset 1222


Ignore:
Timestamp:
08/03/06 21:09:39 (14 years ago)
Author:
chris
Message:

GotoRenderer, GotoEditor:
1) slight changes to add color, fonts

NotePanel:
1) slight changes to add color, fonts
2) added new "add," "delete" note buttons

ClickableList, ClickableTable:
1) slight changes to be compatible with new buttons
in NotePanel/MetadataPane
2) changed to make xml tree changes noticed by metadatapane

VariableComboEditor:
1) changed to make xml tree changes noticed by metadatapane

MetadataPane:
1) new "Delete Table" button
2) eliminated actionlistener command "make" in TablePanel
by making the clickabletable listen to the new buttons
3) slight changes to colors

MetadataNotebook:
1) added check if xml tree has been changed to ask if you
really want to open a new file if you haven't saved the
old file.

Location:
trunk/loci/ome/notebook
Files:
8 edited

Legend:

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

    r1209 r1222  
    1010import javax.swing.JOptionPane; 
    1111import javax.swing.DefaultListSelectionModel; 
     12 
     13import java.awt.Color; 
    1214 
    1315import java.awt.event.MouseListener; 
     
    5860      addItem.addActionListener(this); 
    5961      addItem.setActionCommand("add"); 
     62//      addItem.setForeground(new Color(0,100,0)); 
    6063      JMenuItem delItem = new JMenuItem("Delete selected note"); 
    6164      delItem.addActionListener(this); 
    6265      delItem.setActionCommand("remove"); 
     66//      delItem.setForeground(new Color(100,0,0)); 
    6367       
    6468      jPop.add(addItem); 
     
    168172              ensureIndexIsVisible(getSelectedIndex()); 
    169173            } 
     174            tableP.callStateChanged(true); 
    170175          } 
    171176    if ("remove".equals(cmd)) { 
     
    250255          "No Selection Found", JOptionPane.WARNING_MESSAGE); 
    251256            } 
     257            tableP.callStateChanged(true); 
    252258    } 
    253259  } 
     
    268274    } 
    269275    setValue(result); 
     276    tableP.callStateChanged(true); 
    270277  } 
    271278   
     
    285292    } 
    286293    setValue(result); 
     294    tableP.callStateChanged(true); 
    287295  } 
    288296   
     
    302310    } 
    303311    setValue(result); 
     312    tableP.callStateChanged(true); 
    304313  } 
    305314} 
  • trunk/loci/ome/notebook/ClickableTable.java

    r1215 r1222  
    217217      remItem.addActionListener(this); 
    218218      remItem.setActionCommand("delete"); 
     219//      addItem.setForeground(new Color(0,100,0)); 
     220//      bigRemItem.setForeground(new Color(100,0,0)); 
     221//      remItem.setForeground(new Color(100,0,0)); 
    219222       
    220223      //add the menuitems to the popup menu, add logical separators 
     
    263266      } 
    264267       
     268      tp.callStateChanged(true); 
     269       
    265270      //set nodetree to reflect a blank attribute here, also set table blank 
    266271      tp.oNode.getDOMElement().removeAttribute(thisAttr.getAttribute("XMLName")); 
     
    269274    //this signifies that the user wants to add another "clone" TablePanel 
    270275    if ("bigAdd".equals(cmd)) { 
    271       //get the tagname of the element associated with this tablepanel 
    272       String thisTagName =tp.oNode.getDOMElement().getTagName(); 
    273        
    274       //test if the tablepanel in question is actually a tab, e.g. the only 
    275       //ancestor nodes are CustomAttributesNode and/or OMENode 
    276       if (tp.isTopLevel) {         
    277         //test if we need to deal with CustomAttributesNodes using the 
    278         //isInCustom(String tagName) static method 
    279         MetadataPane.makeNode(thisTagName,tp.tPanel.ome); 
    280  
    281                                 //tell the tablepanel to tell the MetadataPane to redo its GUI based on 
    282                                 //the new node tree structure            
    283         tp.callReRender(); 
    284       } 
    285       //if tablepanel doesn't represent a "top-level" element 
     276        if (tp.oNode == null) { 
     277        if(tp.isTopLevel) { 
     278          tp.tPanel.oNode = MetadataPane.makeNode( 
     279            tp.tPanel.el.getAttribute("XMLName"), tp.tPanel.ome); 
     280          tp.oNode = tp.tPanel.oNode; 
     281        } 
     282              else { 
     283                if(tp.tPanel.oNode != null) tp.oNode =  
     284                  MetadataPane.makeNode( 
     285                    tp.el.getAttribute("XMLName"), tp.tPanel.oNode); 
     286              } 
     287              tp.callReRender();               
     288      } 
    286289      else { 
    287         //test if we need to deal with CustomAttributesNodes 
    288         MetadataPane.makeNode(thisTagName,tp.tPanel.oNode); 
    289          
    290         //tell the tablepanel to tell the MetadataPane to redo its GUI based on 
    291                                 //the new node tree structure     
    292         tp.callReRender(); 
    293       } 
    294     } 
     290              //get the tagname of the element associated with this tablepanel 
     291              String thisTagName =tp.oNode.getDOMElement().getTagName(); 
     292               
     293              //test if the tablepanel in question is actually a tab, e.g. the only 
     294              //ancestor nodes are CustomAttributesNode and/or OMENode 
     295              if (tp.isTopLevel) {         
     296                //test if we need to deal with CustomAttributesNodes using the 
     297                //isInCustom(String tagName) static method 
     298                MetadataPane.makeNode(thisTagName,tp.tPanel.ome); 
     299         
     300                                        //tell the tablepanel to tell the MetadataPane to redo its GUI based on 
     301                                        //the new node tree structure            
     302                tp.callReRender(); 
     303              } 
     304              //if tablepanel doesn't represent a "top-level" element 
     305              else { 
     306                //test if we need to deal with CustomAttributesNodes 
     307                MetadataPane.makeNode(thisTagName,tp.tPanel.oNode); 
     308                 
     309                //tell the tablepanel to tell the MetadataPane to redo its GUI based on 
     310                                        //the new node tree structure     
     311                tp.callReRender(); 
     312              } 
     313            } 
     314            tp.callStateChanged(true); 
     315          } 
    295316    //signifies user wishes to delete an entire tablepanel. 
    296317    //N.B. : if there is only one instance of the tablepanel in question, 
     
    350371                                //the new node tree structure 
    351372        tp.callReRender(); 
    352       } 
     373      }        
     374      tp.callStateChanged(true); 
    353375    } 
    354376  } 
  • trunk/loci/ome/notebook/GotoEditor.java

    r1215 r1222  
    99import java.awt.Component; 
    1010import java.awt.Dimension; 
     11import java.awt.Color; 
    1112 
    1213public class GotoEditor extends AbstractCellEditor 
     
    4142      button.addActionListener(this); 
    4243      button.addActionListener(tableP); 
     44      button.setForeground(new Color(0,0,50)); 
    4345      return button; 
    4446    } 
  • trunk/loci/ome/notebook/GotoRenderer.java

    r1215 r1222  
    88import java.awt.Component; 
    99import java.awt.Dimension; 
     10import java.awt.Color; 
    1011 
    1112public class GotoRenderer extends JButton 
     
    1617    setActionCommand("goto"); 
    1718    setPreferredSize(new Dimension(70, 15)); 
     19    setForeground(new Color(0,0,50)); 
    1820    setOpaque(true); //MUST do this for background to show up. 
    1921  } 
  • trunk/loci/ome/notebook/MetadataNotebook.java

    r1215 r1222  
    203203    } 
    204204    if ("open".equals(cmd)) { 
    205       chooser.setDialogTitle("Open"); 
    206       chooser.setApproveButtonText("Open"); 
    207       chooser.setApproveButtonToolTipText("Open selected file."); 
    208       opening = true; 
    209       int rval = chooser.showOpenDialog(this); 
    210       if (rval == JFileChooser.APPROVE_OPTION) { 
    211         new Thread(this, "MetadataNotebook-Opener").start(); 
     205      if (metadata.getState()) { 
     206        Object[] options = {"Yes, do it!", 
     207                    "No thanks."}; 
     208                                int n = JOptionPane.showOptionDialog(this, 
     209                            "Are you sure you want to open\n" + 
     210                            "a new file without saving your\n" + 
     211                            "changes to the current file?", 
     212                            "Current File Not Saved", 
     213                            JOptionPane.YES_NO_OPTION, 
     214                            JOptionPane.QUESTION_MESSAGE, 
     215                            null,     //don't use a custom Icon 
     216                            options,  //the titles of buttons 
     217                            options[0]); //default button title 
     218                          if (n == JOptionPane.YES_OPTION) { 
     219                            chooser.setDialogTitle("Open"); 
     220                      chooser.setApproveButtonText("Open"); 
     221                      chooser.setApproveButtonToolTipText("Open selected file."); 
     222                      opening = true; 
     223                      int rval = chooser.showOpenDialog(this); 
     224                      if (rval == JFileChooser.APPROVE_OPTION) { 
     225                        new Thread(this, "MetadataNotebook-Opener").start(); 
     226                      } 
     227                          } 
     228      } 
     229      else { 
     230        chooser.setDialogTitle("Open"); 
     231                    chooser.setApproveButtonText("Open"); 
     232                    chooser.setApproveButtonToolTipText("Open selected file."); 
     233                    opening = true; 
     234                    int rval = chooser.showOpenDialog(this); 
     235                    if (rval == JFileChooser.APPROVE_OPTION) { 
     236          new Thread(this, "MetadataNotebook-Opener").start(); 
     237              } 
    212238      } 
    213239    } 
     
    222248      if (rval == JFileChooser.APPROVE_OPTION) { 
    223249        new Thread(this, "MetadataNotebook-Saver").start(); 
    224       } 
    225     } 
    226     else if ("save".equals(cmd) && currentFile != null) saveFile(currentFile); 
     250        metadata.stateChanged(false); 
     251      } 
     252    } 
     253    else if ("save".equals(cmd) && currentFile != null) { 
     254      saveFile(currentFile); 
     255      metadata.stateChanged(false); 
     256    } 
    227257    else if ("exit".equals(cmd)) System.exit(0); 
    228258    else if ("about".equals(cmd)) About.show(); 
  • trunk/loci/ome/notebook/MetadataPane.java

    r1215 r1222  
    3737    createImageIcon("Icons/Bullet2.gif", 
    3838      "An icon signifying that no metadata is present."); 
     39       
     40  public static final Color ADD_COLOR = 
     41    new Color(0,100,0); 
     42     
     43  public static final Color DELETE_COLOR = 
     44    new Color(100,0,0); 
    3945 
    4046  // -- Fields -- 
     
    6369  /** Hashtable containing internal semantic type defs in current file*/ 
    6470  public Hashtable internalDefs; 
     71   
     72  public Boolean hasChanged; 
    6573 
    6674  // -- Fields - raw panel -- 
     
    9098    thisOmeNode = null; 
    9199    internalDefs = null; 
     100    hasChanged = false; 
    92101 
    93102    // -- Tabbed Pane Initialization -- 
     
    131140  } 
    132141 
     142  public MetadataPane(OMENode ome) 
     143  { 
     144    this(); 
     145    setOMEXML(ome); 
     146  } 
    133147 
    134148  // -- MetadataPane API methods -- 
     
    145159    return doc; 
    146160  } 
     161   
     162  public boolean getState() { return hasChanged; } 
     163   
     164  public void stateChanged(boolean change) {hasChanged = change;}  
    147165 
    148166  public OMENode getRoot() { return thisOmeNode; } 
     
    280298      p.setEditor(); 
    281299    } 
     300     
     301    stateChanged(false); 
    282302  } 
    283303 
     
    448468      p.setEditor(); 
    449469    } 
     470     
     471    stateChanged(false); 
    450472  } 
    451473 
     
    853875     
    854876    public String toString() { return el == null ? "null" : el.getTagName(); } 
    855      
     877         
    856878    public Dimension getPreferredScrollableViewportSize() { 
    857879      return getPreferredSize(); 
     
    863885      int orientation, int direction) {return visibleRect.height;} 
    864886    public boolean getScrollableTracksViewportWidth() {return true;} 
    865     public boolean getScrollableTracksViewportHeight() {return false;} 
    866      
     887    public boolean getScrollableTracksViewportHeight() {return false;}     
    867888  } 
    868889 
     
    878899    public String id; 
    879900    public String name; 
    880     public JTable table; 
     901    public ClickableTable table; 
    881902    public Element el; 
    882903    public boolean isTopLevel; 
     
    945966      Font thisFont = tableName.getFont(); 
    946967      thisFont = new Font(thisFont.getFontName(), 
    947         Font.BOLD,thisFont.getSize()); 
     968        Font.BOLD,12); 
    948969      tableName.setFont(thisFont); 
    949970      if (el.hasAttribute("ShortDesc")) 
     
    951972      else if (el.hasAttribute("Description")) 
    952973        tableName.setToolTipText(el.getAttribute("Description")); 
    953        
    954                         JButton addButton = new JButton("Make New"); 
    955       addButton.setPreferredSize(new Dimension(95,17)); 
    956       addButton.addActionListener(this); 
    957       addButton.setActionCommand("Make"); 
    958       addButton.setToolTipText("Create a new " + name + " table."); 
    959       if ( !isTopLevel && tPanel.oNode == null) addButton.setEnabled(false); 
    960974       
    961975      noteButton = new JButton("Notes"); 
     
    965979      noteButton.setToolTipText( 
    966980        "Display or hide the notes associated with this " + name + "."); 
     981      noteButton.setForeground(new Color(0,0,50)); 
    967982       
    968983      DefaultTableModel myTableModel =  
     
    976991       
    977992      FormLayout layout = new FormLayout( 
    978         "pref, 10dlu, pref, pref:grow, pref", 
     993        "pref, 10dlu, pref, pref:grow, pref, 5dlu, pref", 
    979994        "pref,2dlu,pref,pref,3dlu,pref,3dlu"); 
    980995      PanelBuilder builder = new PanelBuilder(layout); 
     
    9891004      tHead.setResizingAllowed(true); 
    9901005      tHead.setReorderingAllowed(true); 
     1006//      tHead.setBackground(NotePanel.BACK_COLOR); 
     1007//      tHead.setOpaque(false); 
    9911008      myTableModel.setRowCount(attrList.size() + refList.size()); 
     1009       
     1010      JButton addButton = new JButton("New Table"); 
     1011      addButton.setPreferredSize(new Dimension(100,17)); 
     1012      addButton.addActionListener(table); 
     1013      addButton.setActionCommand("bigAdd"); 
     1014      addButton.setToolTipText("Create a new " + name + " table."); 
     1015      if ( !isTopLevel && tPanel.oNode == null) addButton.setEnabled(false); 
     1016      addButton.setForeground(ADD_COLOR); 
     1017       
     1018      JButton delButton = new JButton("Delete Table"); 
     1019      delButton.setPreferredSize(new Dimension(100,17)); 
     1020      delButton.addActionListener(table); 
     1021      delButton.setActionCommand("bigRem"); 
     1022      delButton.setToolTipText("Delete this " + name + " table."); 
     1023      if ( oNode == null) delButton.setVisible(false); 
     1024      delButton.setForeground(DELETE_COLOR); 
    9921025       
    9931026        builder.add(tableName, cc.xy(1,1)); 
    9941027                        builder.add(noteButton, cc.xy(3,1, "left,center")); 
    9951028                        builder.add(addButton, cc.xyw(5,1,1, "right,center")); 
    996                         builder.add(tHead, cc.xyw(1,3,5)); 
    997                         builder.add(table, cc.xyw(1,4,5, "fill, center")); 
     1029                        builder.add(delButton, cc.xyw(7,1,1, "right,center")); 
     1030                        builder.add(tHead, cc.xyw(1,3,7)); 
     1031                        builder.add(table, cc.xyw(1,4,7, "fill, center")); 
    9981032                         
    9991033                        if (oNode == null) { 
     
    10721106       
    10731107      noteP = new NotePanel(this); 
    1074       builder.add(noteP, cc.xyw(1,6,5, "fill,center")); 
     1108      builder.add(noteP, cc.xyw(1,6,7, "fill,center")); 
    10751109      setNumNotes(noteP.getNumNotes()); 
    10761110       
     
    11741208        noteP.revalidate(); 
    11751209      } 
    1176             else if (e.getActionCommand().equals("Make")) { 
    1177               if (oNode == null) { 
    1178                 if(isTopLevel) { 
    1179                   tPanel.oNode = makeNode(tPanel.el.getAttribute("XMLName"), thisOmeNode); 
    1180                   oNode = tPanel.oNode; 
    1181                 } 
    1182                       else { 
    1183                         if(tPanel.oNode != null) oNode =  
    1184                           makeNode(el.getAttribute("XMLName"), tPanel.oNode); 
    1185                       } 
    1186                       callReRender();          
    1187               } 
    1188               else { 
    1189                       //get the tagname of the element associated with this tablepanel 
    1190                       String thisTagName = oNode.getDOMElement().getTagName(); 
    1191                        
    1192                       //test if the tablepanel in question is actually a tab, e.g. the only 
    1193                       //ancestor nodes are CustomAttributesNode and/or OMENode 
    1194                       if (isTopLevel) {         
    1195                         //test if we need to deal with CustomAttributesNodes using the 
    1196                         //isInCustom(String tagName) static method 
    1197                         Element parentEle = null; 
    1198                         if (!isInCustom(thisTagName)) { 
    1199                           parentEle = tPanel.ome.getDOMElement(); 
    1200                         } 
    1201                         else parentEle = tPanel.ome.getChild("CustomAttributes").getDOMElement(); 
    1202                         //create a new element of the appropriate type with the correct parent 
    1203                         Element cloneEle = DOMUtil.createChild(parentEle,thisTagName);       
    1204                  
    1205                                                 //tell the tablepanel to tell the MetadataPane to redo its GUI based on 
    1206                                                 //the new node tree structure            
    1207                         callReRender(); 
    1208                       } 
    1209                       //if tablepanel doesn't represent a "top-level" element 
    1210                       else { 
    1211                         //test if we need to deal with CustomAttributesNodes 
    1212                         if (!isInCustom(thisTagName)) { 
    1213                           //create a new element of appropriate type with the correct parent 
    1214                           Element anEle = DOMUtil.createChild(tPanel.oNode.getDOMElement(),  
    1215                             thisTagName); 
    1216                         } 
    1217                         else { 
    1218                           OMEXMLNode realParent = tPanel.oNode.getChild("CustomAttributes"); 
    1219                           //create a new element of appropriate type with the correct 
    1220                           //CustomAttributes parent 
    1221                           Element anEle = DOMUtil.createChild(realParent.getDOMElement(),  
    1222                             thisTagName); 
    1223                         } 
    1224                          
    1225                         //tell the tablepanel to tell the MetadataPane to redo its GUI based on 
    1226                                                 //the new node tree structure     
    1227                         callReRender(); 
    1228                       } 
    1229                     } 
    1230             } 
    12311210    } 
    12321211     
     
    12341213      reRender(); 
    12351214    } 
     1215     
     1216    public void callStateChanged(boolean hasChanged) { 
     1217      stateChanged(true); 
     1218    } 
    12361219  } 
    12371220} 
  • trunk/loci/ome/notebook/NotePanel.java

    r1215 r1222  
    1414  implements ListSelectionListener { 
    1515 
     16  public static final Color BACK_COLOR =  
     17    new Color(175,175,175); 
     18 
    1619  public static final ImageIcon NOTES_BULLET = 
    17     MetadataPane.createImageIcon("Icons/Bullet1.gif", 
     20    MetadataPane.createImageIcon("Icons/Bullet3.gif", 
    1821      "An icon signifying that notes are present."); 
    1922       
    2023  public static final ImageIcon NO_NOTES_BULLET = 
    21     MetadataPane.createImageIcon("Icons/Bullet4.gif", 
     24    MetadataPane.createImageIcon("Icons/Bullet2.gif", 
    2225      "An icon signifying that no notes are present."); 
    2326 
     
    3134           
    3235          tableP = tp; 
     36          setBackground(BACK_COLOR); 
    3337           
    3438          Vector noteEleList = getNoteElements(); 
     
    4448          }        
    4549           
     50// buggy... 
    4651//        if (thisModel.getSize() > 0) noteList.setSelectedIndex(0); 
    4752           
     
    5964           
    6065    FormLayout layout = new FormLayout( 
    61       "pref:grow, 10px, pref:grow", 
     66      "pref, 5dlu, pref:grow, 5dlu, pref, 5dlu, pref", 
    6267      "pref,2dlu,pref"); 
    6368    PanelBuilder builder = new PanelBuilder(layout); 
     
    6873    else nameLabel = new JLabel("Name", NOTES_BULLET, JLabel.LEFT); 
    6974    noteLabel = new JLabel("Notes", NO_NOTES_BULLET, JLabel.LEFT); 
     75    Font thisFont = nameLabel.getFont(); 
     76    thisFont = new Font(thisFont.getFontName(), 
     77      Font.BOLD,thisFont.getSize()); 
     78    nameLabel.setFont(thisFont); 
     79    thisFont = noteLabel.getFont(); 
     80    thisFont = new Font(thisFont.getFontName(), 
     81      Font.BOLD,thisFont.getSize()); 
     82    noteLabel.setFont(thisFont); 
    7083     
    71     builder.add(nameLabel, cc.xy(1,1, "center,center")); 
    72     builder.add(noteLabel, cc.xy(3,1, "center,center")); 
     84    JButton addBTN = new JButton("New Note"); 
     85    addBTN.setPreferredSize(new Dimension(100,17)); 
     86    addBTN.setActionCommand("add"); 
     87    addBTN.addActionListener(noteList); 
     88    addBTN.setToolTipText("Add a new note to the \"Name\" list."); 
     89    addBTN.setForeground(MetadataPane.ADD_COLOR); 
     90    addBTN.setBackground(BACK_COLOR); 
     91     
     92    JButton delBTN = new JButton("Delete Note"); 
     93    delBTN.setPreferredSize(new Dimension(100,17)); 
     94    delBTN.setActionCommand("remove"); 
     95    delBTN.addActionListener(noteList); 
     96    delBTN.setToolTipText("Delete the note selected in the \"Name\" list."); 
     97    delBTN.setForeground(MetadataPane.DELETE_COLOR); 
     98    delBTN.setBackground(BACK_COLOR); 
     99     
     100    builder.add(nameLabel, cc.xy(1,1, "left,center")); 
     101    builder.add(noteLabel, cc.xy(3,1, "left,center")); 
     102     
     103    builder.add(addBTN, cc.xy(5,1, "left,center")); 
     104    builder.add(delBTN, cc.xy(7,1, "left,center")); 
    73105     
    74106    builder.add(jScroll, cc.xy(1,3, "fill,center")); 
    75     builder.add(jNoteScroll, cc.xy(3,3, "fill,center")); 
    76      
     107    builder.add(jNoteScroll, cc.xyw(3,3,5, "fill,center")); 
     108    builder.getPanel().setBackground(BACK_COLOR); 
    77109    add(builder.getPanel()); 
    78110    setVisible(false); 
  • trunk/loci/ome/notebook/VariableComboEditor.java

    r1215 r1222  
    66* specified, e.g. a row with "Group" that's a reference 
    77* should only have LSID selections that are also Groups 
     8* 
     9* also, non-ref cells are given a JTextField editor 
     10* 
     11* this class handles all of the actual editting of the 
     12* XML Node tree as well 
    813*/ 
    914 
     
    274279      result = (String) box.getSelectedItem(); 
    275280       
     281      tableP.callStateChanged(true);  
     282       
    276283      //let the table know that our editor is done with its 
    277284      //eeeeeevil deeds 
     
    298305    RowDoc rd = (RowDoc) e.getDocument(); 
    299306    setNode(rd.row, result); 
     307    tableP.callStateChanged(true); 
    300308  } 
    301309   
     
    308316    RowDoc rd = (RowDoc) e.getDocument(); 
    309317    setNode(rd.row, result); 
     318    tableP.callStateChanged(true); 
    310319  } 
    311320   
     
    318327    RowDoc rd = (RowDoc) e.getDocument(); 
    319328    setNode(rd.row, result); 
     329    tableP.callStateChanged(true); 
    320330  } 
    321331   
Note: See TracChangeset for help on using the changeset viewer.