Stichwörter aus Ordnernamen erzeugen

101 views
Skip to first unread message

Claudio

unread,
Mar 29, 2014, 6:28:16 AM3/29/14
to jphototagg...@googlegroups.com
Hallo,

ich habe eine Codeanpassung vorgenommen, sodass man aus Ordnernamen Stichwörter extrahieren kann.

Dazu habe ich einen Button erzeugt in der Klasse ThumbnailsAreaPanel, der wenn man ihn drueckt, zu den aktuell selektierten Bildern den Pfad ausliest und in einzelne Stichwörter aufteilt.

Umsetzung:

        List<File> selFiles = GUI.getSelectedImageFiles();
        for ( File selectedFile : selFiles ) {
            
            if ( selectedFile.exists()) {
                String path = selectedFile.getAbsolutePath();
                path = path.replaceAll(Pattern.quote(File.separator), " ");
                path = path.replaceAll(Pattern.quote("."), " ");
                path = path.substring(2);//zB soll "C:" weg
                path = path.trim();
                String[] path_splitted = path.split(" ");

                SelectedFilesMetaDataEditor editor = Lookup.getDefault().lookup(SelectedFilesMetaDataEditor.class);
                JPanel panel = editor.getEditPanelForMetaDataValue(XmpDcSubjectsSubjectMetaDataValue.INSTANCE);

                if (panel instanceof EditRepeatableTextEntryPanel) {
                    EditRepeatableTextEntryPanel editPanel = (EditRepeatableTextEntryPanel) panel;
                    editPanel.setEditable(true);

                    if (editPanel.isEditable()) {
                        for(String splitted : path_splitted) {
                            if ( !splitted.isEmpty() ) {
                                editPanel.textAreaInput.setText(splitted);
                                editPanel.addText(splitted);
                                editPanel.textAreaInput.setText("");
                            }
                        }

                        editPanel.setDirty(true);
                        editPanel.textAreaInput.requestFocusInWindow();
                        //a
                    } else {
                        String message = Bundle.getString(AddKeywordsToEditPanelController.class, "AddKeywordsToEditPanelController.Error.EditDisabled");
                        MessageDisplayer.error(null, message);
                    }
                } else {
                    String message = Bundle.getString(AddKeywordsToEditPanelController.class, "AddKeywordsToEditPanelController.Error.NoEditPanel");
                    MessageDisplayer.error(null, message);
                }
            }
        }

Das Problem dabei ist, das es so´nur dann korrekt funktioniert, wenn ich ein einziges Bild selektiert habe.

Habe ich mehrere Bilder, bekommen alle anderen Bilder auch die Stichworte von anderen Bildern, sprich Dateiname und Dateiendung, obwohl diese nur in der aktuell verarbeiteten Datei der For-Schleife erscheinen sollen.
Das gleiche Problem hat man ausserdem, wenn man ind er Panel-Übersicht auch die untergeordneten Ordner mit anzeigt und davon Bilder selektiert hat, auf die man diese Funkti9onalität anwenden will, dann finden sich in den Bildern die weiter oben in der Hierarchie sind, auch die Stichwörter aus Ordner- udn Filenamen darunter liegender Dateien.

Ich habe schon versucht an der Stelle //a mittels editPanel.clearModel(); (ist ein eigene public Methode, da steht nur drin:  model.removeAllElements();) vor der Verarbeitung des naechsten selektierten Files die aktuelle Stichwortliste zurück zu setzen, aber es scheint, als ob dies gar nicht wirkt.
Im Debugger schon, bei jedem Aufruf zeigt es, das in model nur die richtigen Stichwörter drinnen stehen, aber sobald der Vorgang abgeschlossen, ist pro selektiertem Bild doch wieder jedes extrahierte Stichwort aus allen selektierten Bildern gespeichert.

Mir scheint, als ob es noch eine andere Stelle gibt, an der sich die Stichwörter sammlen und erst wenn alle selektierten Files verarbeitet wurden, allen die gesammenlten Stichwörter zugewiesen werden, leider habe ich die Stelle noch nicht gefunden, kann hier jemand weiterhelfen?

Danke und liebe Grüße - Claudio

Elmar Baumann

unread,
Mar 29, 2014, 4:42:57 PM3/29/14
to jphototagg...@googlegroups.com
Hallo Claudio,

danke für den Code. Ich weiß nicht, wann ich dazu komme, mir diesen
anzuschauen, aktuell habe ich nicht viel Zeit.

Grüße,
Elmar
--
http://www.elmar-baumann.de/fotografie/
Reply all
Reply to author
Forward
0 new messages