Changeset 6972


Ignore:
Timestamp:
Sep 19, 2010, 11:40:53 PM (14 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.