Changeset 6972


Ignore:
Timestamp:
09/19/10 23:40:53 (9 years ago)
Author:
mlg
Message:

New feature : research
Add a research functionnality : it's juste a field on the bottom right of the main frame. To make a research, the user have to type text in that field and press enter. It opens a new tab. A new tab is opened for each research. The tab contains the query string.

Location:
extensions/jiwigo/trunk/src/main
Files:
5 added
9 edited

Legend:

Unmodified
Added
Removed
  • extensions/jiwigo/trunk/src/main/java/fr/mael/jiwigo/dao/ImageDao.java

    r6968 r6972  
    6363     * cache 
    6464     */ 
    65     private HashMap<Integer, ArrayList<Image>> cache; 
     65    private HashMap<Integer, List<Image>> cache; 
    6666 
    6767    /** 
     
    7474     */ 
    7575    private ImageDao() { 
    76         cache = new HashMap<Integer, ArrayList<Image>>(); 
     76        cache = new HashMap<Integer, List<Image>>(); 
    7777    } 
    7878 
     
    112112            } 
    113113            Element element = doc.getRootElement().getChild("images"); 
    114             List<Element> listElement = (List<Element>) element.getChildren("image"); 
    115             ArrayList<Image> images = new ArrayList<Image>(); 
    116             for (Element im : listElement) { 
    117                 Image myImage = new Image(); 
    118                 myImage.setMiniature(im.getAttributeValue("tn_url")); 
    119                 myImage.setUrl(im.getAttributeValue("element_url")); 
    120                 myImage.setWidth(Integer.valueOf(im.getAttributeValue("width"))); 
    121                 myImage.setHeight(Integer.valueOf(im.getAttributeValue("height"))); 
    122                 myImage.setFile(im.getAttributeValue("file")); 
    123                 myImage.setVue(Integer.valueOf(im.getAttributeValue("hit"))); 
    124                 myImage.setIdentifiant(Integer.valueOf(im.getAttributeValue("id"))); 
    125                 myImage.setName(im.getChildText("name")); 
    126                 if (myImage.getName() == null) { 
    127                     myImage.setName(myImage.getFile()); 
    128                 } 
    129                 images.add(myImage); 
    130  
    131             } 
     114            List<Image> images = getImagesFromElement(element); 
    132115            cache.remove(categoryId); 
    133116            cache.put(categoryId, images); 
     
    217200    } 
    218201 
     202    /** 
     203     * parse an element to find images 
     204     * @param element the element to parse 
     205     * @return the list of images 
     206     */ 
     207    private List<Image> getImagesFromElement(Element element) { 
     208        List<Element> listElement = (List<Element>) element.getChildren("image"); 
     209        ArrayList<Image> images = new ArrayList<Image>(); 
     210        for (Element im : listElement) { 
     211            Image myImage = new Image(); 
     212            myImage.setMiniature(im.getAttributeValue("tn_url")); 
     213            myImage.setUrl(im.getAttributeValue("element_url")); 
     214            myImage.setWidth(Integer.valueOf(im.getAttributeValue("width"))); 
     215            myImage.setHeight(Integer.valueOf(im.getAttributeValue("height"))); 
     216            myImage.setFile(im.getAttributeValue("file")); 
     217            myImage.setVue(Integer.valueOf(im.getAttributeValue("hit"))); 
     218            myImage.setIdentifiant(Integer.valueOf(im.getAttributeValue("id"))); 
     219            myImage.setName(im.getChildText("name")); 
     220            if (myImage.getName() == null) { 
     221                myImage.setName(myImage.getFile()); 
     222            } 
     223            images.add(myImage); 
     224 
     225        } 
     226        return images; 
     227    } 
     228 
     229    /** 
     230     * Search images 
     231     * @param searchString the string to search 
     232     * @return the list of images matching the string 
     233     * @throws IOException  
     234     */ 
     235    public List<Image> search(String searchString) throws IOException { 
     236        Document doc = Main.sessionManager.executerReturnDocument(MethodsEnum.SEARCH.getLabel(), "query", searchString); 
     237        LOG.debug(doc); 
     238        Element element = doc.getRootElement().getChild("images"); 
     239        return getImagesFromElement(element); 
     240 
     241    } 
     242 
    219243    private void suppressionFichierTemporaires() { 
    220244        File file = new File(System.getProperty("java.io.tmpdir") + "/originale.jpg"); 
  • extensions/jiwigo/trunk/src/main/java/fr/mael/jiwigo/dao/TagDao.java

    r6968 r6972  
    7777     */ 
    7878    public List<Tag> lister() throws IOException { 
    79         Document doc = Main.sessionManager.executerReturnDocument(MethodsEnum.LISTER_TAGS.getLabel()); 
     79        Document doc = Main.sessionManager.executerReturnDocument(MethodsEnum.TAGS_ADMIN_LIST.getLabel()); 
    8080        //      System.out.println(Outil.documentToString(doc)); 
    8181        return getTagsFromDocument(doc.getRootElement().getChild("tags")); 
  • extensions/jiwigo/trunk/src/main/java/fr/mael/jiwigo/service/ImageService.java

    r6968 r6972  
    120120    } 
    121121 
     122    /** 
     123     * Add tags to an existing image 
     124     * @param image the image 
     125     * @param tagId the ids of the tags 
     126     * @return true if successful 
     127     * @throws IOException 
     128     */ 
    122129    public boolean addTags(Image image, String tagId) throws IOException { 
    123130        return ImageDao.getInstance().addTags(image.getIdentifiant(), tagId); 
     131    } 
     132 
     133    /** 
     134     * Search images from a string 
     135     * @param queryString the string 
     136     * @return images matching the string 
     137     * @throws IOException 
     138     */ 
     139    public List<Image> search(String queryString) throws IOException { 
     140        return ImageDao.getInstance().search(queryString); 
    124141    } 
    125142 
  • extensions/jiwigo/trunk/src/main/java/fr/mael/jiwigo/transverse/enumeration/MethodsEnum.java

    r6968 r6972  
    3939            "pwg.images.getInfo"), AJOUTER_CATEGORIE("pwg.categories.add"), AJOUTER_COMMENTAIRE("pwg.images.addComment"), LISTER_TAGS( 
    4040            "pwg.tags.getList"), TAGS_ADMIN_LIST("pwg.tags.getAdminList"), ADD_TAG("pwg.tags.add"), SET_INFO( 
    41             "pwg.images.setInfo"); 
     41            "pwg.images.setInfo"), SEARCH("pwg.images.search"); 
    4242 
    4343    protected String label; 
  • extensions/jiwigo/trunk/src/main/java/fr/mael/jiwigo/ui/mainframe/MainFrame.java

    r6958 r6972  
    66import java.awt.event.ActionEvent; 
    77import java.awt.event.ActionListener; 
     8import java.awt.event.KeyEvent; 
     9import java.awt.event.KeyListener; 
    810import java.util.HashMap; 
    911 
     
    2224import fr.mael.jiwigo.transverse.util.Messages; 
    2325import fr.mael.jiwigo.transverse.util.Outil; 
     26import fr.mael.jiwigo.ui.field.HintTextField; 
    2427import fr.mael.jiwigo.ui.mainframe.tab.JTabbedPaneWithCloseIcons; 
    2528 
     
    5356 * Frame principale 
    5457 */ 
    55 public class MainFrame extends JFrame implements ActionListener { 
     58public class MainFrame extends JFrame implements ActionListener, KeyListener { 
    5659    /** 
    5760     * Logger 
     
    106109 
    107110    private HashMap<Integer, Integer> mapsIdPos = new HashMap<Integer, Integer>(); 
     111 
     112    private HintTextField fieldSearch; 
    108113 
    109114    /** 
     
    129134        categoriesTree = new CategoriesTree(); 
    130135        splitPane.setLeftComponent(categoriesTree); 
    131         //      imagesPanel = new ThumbnailCategoryPanel(null); 
    132         //      reduceSizeOfComponent(imagesPanel); 
    133         //      scrollPaneImagesPanel = new JScrollPane(imagesPanel, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, 
    134         //              JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
    135         //      scrollPaneImagesPanel.setPreferredSize(new Dimension(900, 600)); 
    136136 
    137137        tabbedPane = new JTabbedPaneWithCloseIcons(); 
    138         //      tabbedPane.add(scrollPaneImagesPanel); 
    139138        splitPane.setRightComponent(tabbedPane); 
    140139 
    141140        this.add(splitPane, BorderLayout.CENTER); 
     141        JPanel panelBas = new JPanel(new BorderLayout()); 
    142142        JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); 
    143143        progressBar = new JProgressBar(0, 100); 
    144144        panel.add(progressBar); 
    145145        panel.add(labelMessage); 
     146        panelBas.add(panel, BorderLayout.WEST); 
     147 
     148        fieldSearch = new HintTextField(Messages.getMessage("mainFrame_recherche")); 
     149        fieldSearch.setPreferredSize(new Dimension(150, 25)); 
     150        fieldSearch.addKeyListener(this); 
     151        panelBas.add(fieldSearch, BorderLayout.EAST); 
    146152 
    147153        jMenuEdition = new JMenu(Messages.getMessage("mainFrame_editionMenu")); 
     
    152158 
    153159        this.setJMenuBar(jMenuBar); 
    154         this.add(panel, BorderLayout.SOUTH); 
    155         //      this.pack(); 
     160        this.add(panelBas, BorderLayout.SOUTH); 
    156161        this.setSize(900, 600); 
    157162        this.setLocationRelativeTo(null); 
     
    160165    } 
    161166 
    162     public void addTabb(ThumbnailCategoryPanel panel) { 
    163         JScrollPane scrollPaneImagesPanel = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, 
     167    public void addTabb(IThumbnailPanel panel) { 
     168        JScrollPane scrollPaneImagesPanel = new JScrollPane((JPanel) panel, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, 
    164169                JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
    165170        scrollPaneImagesPanel.setPreferredSize(new Dimension(900, 600)); 
    166171        boolean found = false; 
     172        boolean isSearch = false; 
     173        if (panel instanceof ThumbnailSearchPanel) { 
     174            isSearch = true; 
     175        } 
    167176        for (int i = 0; i < tabbedPane.getTabCount(); i++) { 
    168177            JScrollPane scroll = (JScrollPane) tabbedPane.getComponentAt(i); 
    169             ThumbnailCategoryPanel thumbPan = (ThumbnailCategoryPanel) scroll.getViewport().getComponents()[0]; 
     178            IThumbnailPanel thumbPan = (IThumbnailPanel) scroll.getViewport().getComponents()[0]; 
    170179            if (thumbPan.getCategory().getIdentifiant().equals(panel.getCategory().getIdentifiant())) { 
    171                 tabbedPane.setSelectedIndex(i); 
    172                 found = true; 
    173                 break; 
     180                //only if it's not for a re 
     181                if (!(panel instanceof ThumbnailSearchPanel)) { 
     182                    tabbedPane.setSelectedIndex(i); 
     183                    found = true; 
     184                    break; 
     185                } 
    174186            } 
    175187        } 
    176         if (!found) { 
     188        //if it's not for a research, the title of the tab 
     189        //is the name of the category 
     190        if (!found && !isSearch) { 
    177191            tabbedPane.addTab(panel.getCategory().getNom(), scrollPaneImagesPanel, new ImageIcon(Outil 
    178192                    .getURL("fr/mael/jiwigo/img/closetab.png"))); 
    179         } 
    180  
    181         //      if (mapsIdPos.get(panel.getCategory().getIdentifiant()) == null) { 
    182         //          tabbedPane.addTab(panel.getCategory().getNom(), scrollPaneImagesPanel); 
    183         //          mapsIdPos.put(panel.getCategory().getIdentifiant(), tabbedPane.getTabCount() - 1); 
    184         //      } else { 
    185         //          tabbedPane.setSelectedIndex(mapsIdPos.get(panel.getCategory().getIdentifiant())); 
    186         //      } 
     193            //if it's for a research, the title of the tab 
     194            //if the query string 
     195        } else if (!found && isSearch) { 
     196            String queryString = ((ThumbnailSearchPanel) panel).getQueryString(); 
     197            tabbedPane.addTab(Messages.getMessage("mainFrame_search") + queryString, scrollPaneImagesPanel, 
     198                    new ImageIcon(Outil.getURL("fr/mael/jiwigo/img/closetab.png"))); 
     199        } 
    187200 
    188201    } 
     
    237250    } 
    238251 
     252    @Override 
     253    public void keyPressed(KeyEvent paramKeyEvent) { 
     254        if (paramKeyEvent.getKeyCode() == KeyEvent.VK_ENTER) { 
     255            String queryString = fieldSearch.getText(); 
     256            ThumbnailSearchPanel searchPanel = new ThumbnailSearchPanel(queryString); 
     257            addTabb(searchPanel); 
     258        } 
     259    } 
     260 
     261    @Override 
     262    public void keyReleased(KeyEvent paramKeyEvent) { 
     263    } 
     264 
     265    @Override 
     266    public void keyTyped(KeyEvent paramKeyEvent) { 
     267    } 
     268 
    239269} 
  • extensions/jiwigo/trunk/src/main/java/fr/mael/jiwigo/ui/mainframe/ThumbnailCategoryPanel.java

    r6965 r6972  
    4545 * Classe qui affiche toutes les miniatures d'une catégorie 
    4646 */ 
    47 public class ThumbnailCategoryPanel extends JPanel { 
     47public class ThumbnailCategoryPanel extends JPanel implements IThumbnailPanel { 
    4848    /** 
    4949     * Logger 
  • extensions/jiwigo/trunk/src/main/resources/fr/mael/jiwigo/trad/messages.properties

    r6968 r6972  
    2121mainFrame_addMetadata=Adding metadata for 
    2222mainFrame_sendingFiles=Sending files for 
     23mainFrame_recherche=Search... 
     24mainFrame_search=Research for  
    2325 
    2426##################################################### 
  • extensions/jiwigo/trunk/src/main/resources/fr/mael/jiwigo/trad/messages_en.properties

    r6968 r6972  
    2121mainFrame_addMetadata=Adding metadata for 
    2222mainFrame_sendingFiles=Sending files for 
     23mainFrame_recherche=Search... 
     24mainFrame_search=Research for  
    2325 
    2426##################################################### 
  • extensions/jiwigo/trunk/src/main/resources/fr/mael/jiwigo/trad/messages_fr.properties

    r6968 r6972  
    2121mainFrame_addMetadata=Ajout des métadonnées pour 
    2222mainFrame_sendingFiles=Envoi des fichiers pour 
     23mainFrame_recherche=Recherche... 
     24mainFrame_search=Recherche de  
    2325 
    2426##################################################### 
Note: See TracChangeset for help on using the changeset viewer.