Changeset 4662


Ignore:
Timestamp:
2003-06-13T17:21:33+12:00 (21 years ago)
Author:
mdewsnip
Message:

Now rebuilds model when elementChanged events are received (eg. when someone adds or removes an element in a metadata set).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gli/src/org/greenstone/gatherer/gui/table/GTableModel.java

    r4651 r4662  
    127127
    128128
    129     /** Returns the data class of the specified column. */
    130 //      private Class getColumnClass(int col) {
    131 //      if(col == 2) {
    132 //          return JButton.class;
    133 //      }
    134 //      return String.class;
    135 //      }
    136 
    137 
    138129    /* Called to retrieve the Metadata record that matches a certain row. Usually caused by the user selectiong a row in the table. It synchronized so that the model doesn't up and change while we're trying to retrieve the indicated element. */
    139130    public synchronized Metadata getMetadataAtRow(int row) {
     
    238229    /** Called whenever an element in a set is added, edited or removed from the metadata set manager. We listen for this just incase the name of one of the elements currently shown changes. After that the table will be up to date, as the element references are otherwise live. */
    239230    public void elementChanged(MSMEvent event) {
    240     MSMAction profile = event.getProfile();
    241     if(profile != null) {
    242         // Retrieve the element's new name (hopefully returned by getValue()).
    243         String name = profile.getTarget();
    244         for(int row = 0; row < current_metadata.size(); row++) {
    245         if(getValueAt(row, 0).equals(name)) {
    246             fireTableCellUpdated(row, 0);
    247         }
    248         }
    249         name = null;
    250     }
    251     profile = null;
    252     event = null;
     231    // Brute force solution... rebuild the table.
     232    rebuildModel();
    253233    }
    254234
     
    257237    public void metadataChanged(MSMEvent event) {
    258238    FileNode file_node = event.getRecord();
    259     ///ystem.err.println("File node effected");
    260239    // First check whether this record is one of those that we have showing.
    261     if(file_nodes != null && file_node != null && ArrayTools.contains(file_nodes, file_node)) {
     240    if (file_nodes != null && file_nodes.length > 0 && file_node != null && ArrayTools.contains(file_nodes, file_node)) {
    262241        // Brute force solution... rebuild the table.
    263         if(file_nodes != null && file_nodes.length > 0) {
    264         Metadata select_exact_metadata = null;
    265         Metadata select_closest_metadata = null;
    266         boolean had_warning = false;
    267         // If there is a current builder...
    268         if (builder != null) {
    269             // ...and it is still building...
    270             if (!builder.complete) {
    271             select_exact_metadata = builder.select_exact_metadata;
    272             select_closest_metadata = builder.select_closest_metadata;
    273             had_warning = builder.had_warning;
    274             // ...kill it...
    275             builder.kill();
    276             }
    277             // ...and wait until it dies
    278             while (!builder.complete) { }
    279         }
    280 
    281         // Create model builder
    282         builder = new ModelBuilder();
    283         builder.start();
    284         builder.select_exact_metadata = select_exact_metadata;
    285         builder.select_closest_metadata = select_closest_metadata;
    286         builder.had_warning = had_warning;
    287         }
     242        rebuildModel();
    288243    }
    289244    }
     
    299254    public void valueChanged(MSMEvent event) {
    300255    // Don't care. Tra-la-la-la-la.
     256    }
     257
     258
     259    private void rebuildModel()
     260    {
     261    Metadata select_exact_metadata = null;
     262    Metadata select_closest_metadata = null;
     263    boolean had_warning = false;
     264    // If there is a current builder...
     265    if (builder != null) {
     266        // ...and it is still building...
     267        if (!builder.complete) {
     268        select_exact_metadata = builder.select_exact_metadata;
     269        select_closest_metadata = builder.select_closest_metadata;
     270        had_warning = builder.had_warning;
     271        // ...kill it...
     272        builder.kill();
     273        }
     274        // ...and wait until it dies
     275        while (!builder.complete) { }
     276    }
     277
     278    // Create model builder
     279    builder = new ModelBuilder();
     280    builder.start();
     281    builder.select_exact_metadata = select_exact_metadata;
     282    builder.select_closest_metadata = select_closest_metadata;
     283    builder.had_warning = had_warning;
    301284    }
    302285
     
    312295    }
    313296    return false;
    314     }
    315 
    316 
    317     /** Alphabetically inserts the new_metadata in the target vector. */
    318     private int add(ArrayList target, Metadata new_metadata) {
    319     int i = 0;
    320     while(i < target.size()) {
    321         Metadata current = (Metadata)target.get(i);
    322         if(current.compareTo(new_metadata) > 0) {
    323         target.add(i, new_metadata);
    324         return i;
    325         }
    326         i++;
    327     }
    328     target.add(new_metadata);
    329     return i;
    330297    }
    331298
     
    433400        killed = true;
    434401        notify();
     402    }
     403
     404
     405    /** Alphabetically inserts the new_metadata in the target vector. */
     406    private int add(ArrayList target, Metadata new_metadata) {
     407        int i = 0;
     408        while(i < target.size()) {
     409        Metadata current = (Metadata)target.get(i);
     410        if(current.compareTo(new_metadata) > 0) {
     411            target.add(i, new_metadata);
     412            return i;
     413        }
     414        i++;
     415        }
     416        target.add(new_metadata);
     417        return i;
    435418    }
    436419
Note: See TracChangeset for help on using the changeset viewer.