Changeset 9201


Ignore:
Timestamp:
2005-02-25T17:29:54+13:00 (19 years ago)
Author:
mdewsnip
Message:

Changed NewCollectionMetadataPrompt to use CheckList rather than a lot of custom code.

Location:
trunk/gli/src/org/greenstone/gatherer
Files:
2 edited

Legend:

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

    r8842 r9201  
    3737import org.greenstone.gatherer.Dictionary;
    3838import org.greenstone.gatherer.Gatherer;
    39 import org.greenstone.gatherer.metadata.MetadataElement;
    4039import org.greenstone.gatherer.metadata.MetadataSet;
    4140import org.greenstone.gatherer.metadata.MetadataSetManager;
    42 import org.greenstone.gatherer.metadata.MetadataTools;
     41import org.greenstone.gatherer.util.CheckList;
     42import org.greenstone.gatherer.util.CheckListEntry;
    4343import org.greenstone.gatherer.util.Utility;
    4444
    4545
    4646public class NewCollectionMetadataPrompt
    47     extends ModalDialog {
    48 
     47    extends ModalDialog
     48{
    4949    private boolean cancelled = true;
    5050    private JDialog self;
    5151    private JList elements_list;
    52     private MetadataSetList sets_list;
     52    private CheckList metadata_sets_list;
    5353    static private Dimension size = new Dimension(700, 380);
    5454
     
    7070
    7171    // Show the metadata sets (except extracted!) available in the GLI "metadata" folder
    72     ArrayList sets = MetadataSetManager.listMetadataSets(new File(Utility.METADATA_DIR));
     72    ArrayList metadata_sets = MetadataSetManager.listMetadataSets(new File(Utility.METADATA_DIR));
    7373    ArrayList metadata_set_list_entries = new ArrayList();
    74     for (int i = 0; i < sets.size(); i++) {
    75         MetadataSet metadata_set = (MetadataSet) sets.get(i);
     74    for (int i = 0; i < metadata_sets.size(); i++) {
     75        MetadataSet metadata_set = (MetadataSet) metadata_sets.get(i);
    7676
    7777        // Don't show the extracted metadata set
     
    7979        continue;
    8080        }
    81         // Hack: add dublin caore at the top
    82         if (metadata_set.getNamespace().equals("dc")) {
    83         metadata_set_list_entries.add(0, new MetadataSetListEntry(metadata_set));
    84         } else {
    85         metadata_set_list_entries.add(new MetadataSetListEntry(metadata_set));
    86         }
     81
     82        metadata_set_list_entries.add(metadata_set);
    8783    }
    8884
     
    10298    sets_list_label.setOpaque(false);
    10399    Dictionary.setText(sets_list_label, "NewCollectionPrompt.Select_MDS");
    104     sets_list = new MetadataSetList();
    105     sets_list.setListData(new Vector(metadata_set_list_entries));
    106     sets_list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
     100    metadata_sets_list = new CheckList(true);
     101    metadata_sets_list.addListSelectionListener(new MetadataSetListSelectionListener());
     102    metadata_sets_list.setListData(metadata_set_list_entries);
     103    metadata_sets_list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    107104
    108105    JPanel elements_list_pane = new JPanel();
     
    116113    elements_list.setSelectionForeground(Configuration.getColor("coloring.collection_tree_foreground", false));
    117114
    118     // Select the Dublin Core metadata set by default, at Ian's request
    119     sets_list.selectDublinCoreMetadataSet();
     115    // Set Dublin Core to be ticked initially, at Ian's request
     116    for (int i = 0; i < metadata_set_list_entries.size(); i++) {
     117        MetadataSet metadata_set = (MetadataSet) metadata_set_list_entries.get(i);
     118        if (metadata_set.getMetadataSetFile().getName().equals("dublin.mds")) {
     119        metadata_sets_list.setTickedObjects(new Object[] { metadata_set });
     120        }
     121    }
    120122
    121123    JPanel button_pane = new JPanel();
     
    138140    sets_list_pane.setLayout(new BorderLayout());
    139141    sets_list_pane.add(sets_list_label, BorderLayout.NORTH);
    140     sets_list_pane.add(new JScrollPane(sets_list), BorderLayout.CENTER);
     142    sets_list_pane.add(new JScrollPane(metadata_sets_list), BorderLayout.CENTER);
    141143
    142144    elements_list_pane.setLayout(new BorderLayout());
     
    167169
    168170    public ArrayList getSets() {
    169     return sets_list.getSelectedMetadataSets();
     171    return metadata_sets_list.getTicked();
    170172    }
    171173
     
    184186
    185187
    186     private class MetadataSetList
    187     extends JList
     188    private class MetadataSetListSelectionListener
     189    implements ListSelectionListener
    188190    {
    189     public MetadataSetList()
     191    public void valueChanged(ListSelectionEvent event)
    190192    {
    191         super();
    192         addListSelectionListener(new MetadataSetListSelectionListener());
    193         addMouseListener(new MetadataSetListSelectionListener());
    194         setCellRenderer(new MetadataSetListCellRenderer());
    195     }
    196 
    197 
    198     public ArrayList getSelectedMetadataSets()
     193        if (!metadata_sets_list.isSelectionEmpty()) {
     194        // Retrieve the selected set
     195        MetadataSet metadata_set = (MetadataSet) ((CheckListEntry) metadata_sets_list.getSelectedValue()).getObject();
     196        elements_list.setListData(new Vector(metadata_set.getMetadataSetElements()));
     197        }
     198        else {
     199        elements_list.setListData(new String[0]);
     200        }
     201    }
     202    }
     203
     204
     205    private class OKButtonListener
     206    implements ActionListener
     207    {
     208    public void actionPerformed(ActionEvent event)
    199209    {
    200         ArrayList selected_metadata_sets = new ArrayList();
    201 
    202         ListModel model = (ListModel) getModel();
    203         for (int i = 0; i < model.getSize(); i++) {
    204         MetadataSetListEntry metadata_set_list_entry = (MetadataSetListEntry) model.getElementAt(i);
    205         if (metadata_set_list_entry.isSelected()) {
    206             selected_metadata_sets.add(metadata_set_list_entry.getMetadataSet());
    207         }
    208         }
    209 
    210         return selected_metadata_sets;
    211     }
    212 
    213 
    214     /** Hack special-case code, used to select the Dublin Core metadata set by default */
    215     public void selectDublinCoreMetadataSet()
    216     {
    217         ListModel model = (ListModel) getModel();
    218         for (int i = 0; i < model.getSize(); i++) {
    219         MetadataSetListEntry metadata_set_list_entry = (MetadataSetListEntry) model.getElementAt(i);
    220         if (metadata_set_list_entry.getMetadataSet().getNamespace().equals("dc")) {
    221             metadata_set_list_entry.setSelected(true);
    222             metadata_set_list_entry.grabFocus();
    223             setSelectedIndex(i);
    224             break;
    225         }
    226         }
    227     }
    228 
    229 
    230     private class MetadataSetListCellRenderer
    231         extends JLabel
    232         implements ListCellRenderer {
    233 
    234         public Component getListCellRendererComponent(JList list, Object value, int index, boolean is_selected, boolean cell_has_focus)
    235         {
    236         JCheckBox checkbox = (JCheckBox) value;
    237         checkbox.setBackground(is_selected ? list.getSelectionBackground() : list.getBackground());
    238         checkbox.setForeground(is_selected ? list.getSelectionForeground() : list.getForeground());
    239         checkbox.setBorderPainted(true);
    240         checkbox.setEnabled(list.isEnabled());
    241         checkbox.setFont(list.getFont());
    242         checkbox.setFocusPainted(false);
    243         checkbox.setBorder((is_selected) ? UIManager.getBorder("List.focusCellHighlightBorder") : new EmptyBorder(1, 1, 1, 1));
    244         return checkbox;
    245         }
    246     }
    247 
    248 
    249     private class MetadataSetListSelectionListener
    250         extends MouseAdapter
    251         implements ListSelectionListener {
    252 
    253         public void mousePressed(MouseEvent e)
    254         {
    255         JList list = (JList) e.getSource();
    256         int index = list.locationToIndex(e.getPoint());
    257         MetadataSetListEntry metadata_set_list_entry = (MetadataSetListEntry) list.getModel().getElementAt(index);
    258         metadata_set_list_entry.setSelected(!metadata_set_list_entry.isSelected());
    259         metadata_set_list_entry.grabFocus();
    260         list.ensureIndexIsVisible(index);
    261 
    262         // Fire a selection changed event
    263         fireSelectionValueChanged(index, index, false);
    264         }
    265 
    266         public void valueChanged(ListSelectionEvent event)
    267         {
    268         if (!sets_list.isSelectionEmpty()) {
    269             // Retrieve the selected set
    270             MetadataSetListEntry metadata_set_list_entry = (MetadataSetListEntry) sets_list.getSelectedValue();
    271             MetadataSet set = (MetadataSet) metadata_set_list_entry.getMetadataSet();
    272             elements_list.setListData(new Vector(set.getMetadataSetElements()));
    273         }
    274         else {
    275             elements_list.setListData(new String[0]);
    276         }
    277         }
    278     }
    279     }
    280 
    281 
    282     private class MetadataSetListEntry
    283     extends JCheckBox
    284     {
    285     private MetadataSet metadata_set = null;
    286 
    287     public MetadataSetListEntry(MetadataSet metadata_set)
    288     {
    289         this.metadata_set = metadata_set;
    290     }
    291 
    292     public MetadataSet getMetadataSet()
    293     {
    294         return metadata_set;
    295     }
    296 
    297     public String getText()
    298     {
    299         if (metadata_set == null) {
    300         return null;
    301         }
    302 
    303         String interface_language_code = Configuration.getLanguage();
    304         String metadata_set_name = MetadataTools.getMetadataSetAttribute(metadata_set, "Name", interface_language_code, "en");
    305         return metadata_set_name + " (" + metadata_set.getNamespace() + ")";
    306     }
    307     }
    308 
    309 
    310     private class OKButtonListener
    311     implements ActionListener {
    312     public void actionPerformed(ActionEvent event) {
    313210        // See if the user has selected no metadata sets, and if so confirm thats what they really want.
    314         ArrayList selected_sets = sets_list.getSelectedMetadataSets();
    315211        cancelled = false;
    316         if(selected_sets.size() == 0) {
     212        if (metadata_sets_list.isNothingTicked()) {
    317213        WarningDialog dialog = new WarningDialog("warning.NoMetadataSetsSelected", null, true);
    318         if(dialog.display() == JOptionPane.OK_OPTION) {
     214        if (dialog.display() == JOptionPane.OK_OPTION) {
    319215            // Otherwise we are free to go
    320216            self.dispose();
  • trunk/gli/src/org/greenstone/gatherer/metadata/MetadataSet.java

    r9024 r9201  
    193193    public String toString()
    194194    {
    195     return MetadataTools.getMetadataSetAttribute(this, "Name", Configuration.getLanguage(), "en");
     195    return MetadataTools.getMetadataSetAttribute(this, "Name", Configuration.getLanguage(), "en") + " (" + metadata_set_namespace + ")";
    196196    }
    197197
Note: See TracChangeset for help on using the changeset viewer.