mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-14 17:06:16 +00:00
remove uneeded notification code; let event handlers do it all. optionalize DrawableView
This commit is contained in:
parent
1665dc11b9
commit
1f1d59d76f
@ -19,7 +19,6 @@
|
||||
package org.sleuthkit.autopsy.imagegallery.actions;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
import java.util.stream.Collectors;
|
||||
@ -37,8 +36,6 @@ import org.sleuthkit.autopsy.imagegallery.datamodel.Category;
|
||||
import org.sleuthkit.autopsy.imagegallery.datamodel.CategoryManager;
|
||||
import org.sleuthkit.autopsy.imagegallery.datamodel.DrawableFile;
|
||||
import org.sleuthkit.autopsy.imagegallery.datamodel.DrawableTagsManager;
|
||||
import org.sleuthkit.autopsy.imagegallery.grouping.GroupManager;
|
||||
import org.sleuthkit.datamodel.ContentTag;
|
||||
import org.sleuthkit.datamodel.Tag;
|
||||
import org.sleuthkit.datamodel.TagName;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
@ -154,6 +151,16 @@ public class CategorizeAction extends AddTagAction {
|
||||
.collect(Collectors.toList()).isEmpty()) {
|
||||
tagsManager.addContentTag(file, tagName, comment);
|
||||
}
|
||||
} else {
|
||||
tagsManager.getContentTagsByContent(file).stream()
|
||||
.filter(tag -> CategoryManager.isCategoryTagName(tag.getName()))
|
||||
.forEach((ct) -> {
|
||||
try {
|
||||
tagsManager.deleteContentTag(ct);
|
||||
} catch (TskCoreException ex) {
|
||||
LOGGER.log(Level.SEVERE, "Error removing old categories result", ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
} catch (TskCoreException ex) {
|
||||
|
@ -26,10 +26,7 @@ import org.controlsfx.control.action.Action;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.autopsy.imagegallery.DrawableTagsManager;
|
||||
import org.sleuthkit.autopsy.imagegallery.ImageGalleryController;
|
||||
import org.sleuthkit.autopsy.imagegallery.datamodel.DrawableAttribute;
|
||||
import org.sleuthkit.autopsy.imagegallery.datamodel.DrawableFile;
|
||||
import org.sleuthkit.autopsy.imagegallery.grouping.GroupKey;
|
||||
import org.sleuthkit.autopsy.imagegallery.grouping.GroupManager;
|
||||
import org.sleuthkit.datamodel.ContentTag;
|
||||
import org.sleuthkit.datamodel.TagName;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
@ -50,23 +47,17 @@ public class DeleteFollowUpTagAction extends Action {
|
||||
|
||||
@Override
|
||||
protected Void doInBackground() throws Exception {
|
||||
final GroupManager groupManager = controller.getGroupManager();
|
||||
final DrawableTagsManager tagsManager = controller.getTagsManager();
|
||||
|
||||
try {
|
||||
final TagName followUpTagName = tagsManager.getFollowUpTagName();
|
||||
// remove file from old category group
|
||||
groupManager.removeFromGroup(new GroupKey<TagName>(DrawableAttribute.TAGS, followUpTagName), fileID);
|
||||
|
||||
|
||||
List<ContentTag> contentTagsByContent = tagsManager.getContentTagsByContent(file);
|
||||
for (ContentTag ct : contentTagsByContent) {
|
||||
if (ct.getName().getDisplayName().equals(followUpTagName.getDisplayName())) {
|
||||
tagsManager.deleteContentTag(ct);
|
||||
}
|
||||
}
|
||||
|
||||
//make sure rest of ui hears category change.
|
||||
// groupManager.handleFileUpdate(FileUpdateEvent.newUpdateEvent(Collections.singleton(fileID), DrawableAttribute.TAGS));
|
||||
} catch (TskCoreException ex) {
|
||||
LOGGER.log(Level.SEVERE, "Failed to delete follow up tag.", ex);
|
||||
}
|
||||
|
@ -262,7 +262,7 @@ public class CategoryManager {
|
||||
fireChange(Collections.singleton(addedTag.getContent().getId()), newCat);
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
@Subscribe
|
||||
public void handleTagDeleted(ContentTagDeletedEvent event) {
|
||||
ContentTag deleted = event.getTag();
|
||||
|
@ -293,6 +293,7 @@ public class GroupManager {
|
||||
if (unSeenGroups.contains(group)) {
|
||||
unSeenGroups.remove(group);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
} else { //group == null
|
||||
@ -550,10 +551,12 @@ public class GroupManager {
|
||||
|
||||
@Subscribe
|
||||
public void handleTagAdded(ContentTagAddedEvent evt) {
|
||||
final GroupKey<TagName> groupKey = new GroupKey<>(DrawableAttribute.TAGS, evt.getAddedTag().getName());
|
||||
final long fileID = evt.getAddedTag().getContent().getId();
|
||||
DrawableGroup g = getGroupForKey(groupKey);
|
||||
addFileToGroup(g, groupKey, fileID);
|
||||
if (groupBy == DrawableAttribute.TAGS || groupBy == DrawableAttribute.CATEGORY) {
|
||||
final GroupKey<TagName> groupKey = new GroupKey<>(DrawableAttribute.TAGS, evt.getAddedTag().getName());
|
||||
final long fileID = evt.getAddedTag().getContent().getId();
|
||||
DrawableGroup g = getGroupForKey(groupKey);
|
||||
addFileToGroup(g, groupKey, fileID);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -615,6 +618,7 @@ public class GroupManager {
|
||||
final long fileID = evt.getTag().getContent().getId();
|
||||
DrawableGroup g = removeFromGroup(groupKey, fileID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
|
@ -23,6 +23,8 @@ import com.google.common.eventbus.Subscribe;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Optional;
|
||||
import static java.util.Objects.nonNull;
|
||||
import java.util.Optional;
|
||||
import java.util.logging.Level;
|
||||
import javafx.application.Platform;
|
||||
import javafx.beans.Observable;
|
||||
@ -126,6 +128,30 @@ public abstract class DrawableTileBase extends DrawableUIBase {
|
||||
@FXML
|
||||
protected BorderPane imageBorder;
|
||||
|
||||
|
||||
@Override
|
||||
public Optional<Long> getFileID() {
|
||||
return fileIDOpt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<DrawableFile<?>> getFile() {
|
||||
if (fileIDOpt.isPresent()) {
|
||||
if (fileOpt.isPresent() && fileOpt.get().getId() == fileIDOpt.get()) {
|
||||
return fileOpt;
|
||||
} else {
|
||||
try {
|
||||
fileOpt = Optional.of(ImageGalleryController.getDefault().getFileFromId(fileIDOpt.get()));
|
||||
} catch (TskCoreException ex) {
|
||||
Logger.getAnonymousLogger().log(Level.WARNING, "failed to get DrawableFile for obj_id" + fileIDOpt.get(), ex);
|
||||
fileOpt = Optional.empty();
|
||||
}
|
||||
return fileOpt;
|
||||
}
|
||||
} else {
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* the groupPane this {@link DrawableTileBase} is embedded in
|
||||
*/
|
||||
@ -258,7 +284,7 @@ public abstract class DrawableTileBase extends DrawableUIBase {
|
||||
try {
|
||||
globalSelectionModel.clearAndSelect(file.getId());
|
||||
new AddDrawableTagAction(getController()).addTag(getController().getTagsManager().getFollowUpTagName(), "");
|
||||
new AddDrawableTagAction(controller).addTag(followUpTagName, "");
|
||||
new AddDrawableTagAction(controller).addTag(followUpTagName, "");
|
||||
} catch (TskCoreException ex) {
|
||||
LOGGER.log(Level.SEVERE, "Failed to add Follow Up tag. Could not load TagName.", ex);
|
||||
}
|
||||
@ -281,10 +307,12 @@ public abstract class DrawableTileBase extends DrawableUIBase {
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
if (Objects.equals(newFileID, fileIDOpt.get()) == false) {
|
||||
setFileHelper(newFileID);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
private void setFileHelper(final Long newFileID) {
|
||||
protected void setFileHelper(final Long newFileID) {
|
||||
setFileIDOpt(Optional.ofNullable(newFileID));
|
||||
disposeContent();
|
||||
@ -352,14 +380,44 @@ public abstract class DrawableTileBase extends DrawableUIBase {
|
||||
@Subscribe
|
||||
@Override
|
||||
public void handleTagAdded(ContentTagAddedEvent evt) {
|
||||
fileIDOpt.ifPresent(fileID -> {
|
||||
try {
|
||||
if (fileID == evt.getAddedTag().getContent().getId()
|
||||
&& evt.getAddedTag().getName() == getController().getTagsManager().getFollowUpTagName()) {
|
||||
|
||||
updateFollowUpIcon();
|
||||
Platform.runLater(() -> {
|
||||
followUpImageView.setImage(followUpIcon);
|
||||
followUpToggle.setSelected(true);
|
||||
});
|
||||
}
|
||||
} catch (TskCoreException ex) {
|
||||
LOGGER.log(Level.SEVERE, "Failed to get follow up status for file.", ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
@Override
|
||||
public void handleTagDeleted(ContentTagDeletedEvent evt) {
|
||||
updateFollowUpIcon();
|
||||
|
||||
fileIDOpt.ifPresent(fileID -> {
|
||||
try {
|
||||
if (fileID == evt.getDeletedTag().getContent().getId()
|
||||
&& evt.getDeletedTag().getName() == controller.getTagsManager().getFollowUpTagName()) {
|
||||
updateFollowUpIcon();
|
||||
}
|
||||
} catch (TskCoreException ex) {
|
||||
LOGGER.log(Level.SEVERE, "Failed to get follow up status for file.", ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void updateFollowUpIcon() {
|
||||
boolean hasFollowUp = hasFollowUp();
|
||||
Platform.runLater(() -> {
|
||||
followUpImageView.setImage(hasFollowUp ? followUpIcon : followUpGray);
|
||||
followUpToggle.setSelected(hasFollowUp);
|
||||
});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
|
@ -2,6 +2,7 @@ package org.sleuthkit.autopsy.imagegallery.gui.drawableviews;
|
||||
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import java.util.Optional;
|
||||
import java.util.Optional;
|
||||
import java.util.logging.Level;
|
||||
import javafx.application.Platform;
|
||||
import javafx.scene.layout.Border;
|
||||
|
@ -24,6 +24,7 @@ import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
import javafx.application.Platform;
|
||||
import javafx.beans.property.SimpleObjectProperty;
|
||||
@ -83,7 +84,6 @@ public class MetaDataPane extends DrawableUIBase {
|
||||
|
||||
public MetaDataPane(ImageGalleryController controller) {
|
||||
super(controller);
|
||||
|
||||
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("MetaDataPane.fxml"));
|
||||
fxmlLoader.setRoot(this);
|
||||
fxmlLoader.setController(this);
|
||||
@ -93,8 +93,6 @@ public class MetaDataPane extends DrawableUIBase {
|
||||
} catch (IOException exception) {
|
||||
throw new RuntimeException(exception);
|
||||
}
|
||||
}
|
||||
|
||||
@FXML
|
||||
@SuppressWarnings("unchecked")
|
||||
void initialize() {
|
||||
@ -155,10 +153,35 @@ public class MetaDataPane extends DrawableUIBase {
|
||||
});
|
||||
}
|
||||
|
||||
volatile private Optional<DrawableFile<?>> fileOpt = Optional.empty();
|
||||
|
||||
volatile private Optional<Long> fileIDOpt = Optional.empty();
|
||||
|
||||
@Override
|
||||
protected synchronized void setFileHelper(Long newFileID) {
|
||||
setFileIDOpt(Optional.ofNullable(newFileID));
|
||||
if (newFileID == null) {
|
||||
|
||||
@Override
|
||||
public Optional<DrawableFile<?>> getFile() {
|
||||
if (fileIDOpt.isPresent()) {
|
||||
if (fileOpt.isPresent() && fileOpt.get().getId() == fileIDOpt.get()) {
|
||||
return fileOpt;
|
||||
} else {
|
||||
return fileOpt;
|
||||
if (Objects.equals(newFileID, fileIDOpt.get()) == false) {
|
||||
setFileHelper(newFileID);
|
||||
}
|
||||
} else {
|
||||
if (nonNull(newFileID)) {
|
||||
setFileHelper(newFileID);
|
||||
}
|
||||
}
|
||||
setFileHelper(newFileID);
|
||||
}
|
||||
private void setFileHelper(Long newFileID) {
|
||||
fileIDOpt = Optional.of(newFileID);
|
||||
if (newFileID == null) {
|
||||
Platform.runLater(() -> {
|
||||
imageView.setImage(null);
|
||||
tableView.getItems().clear();
|
||||
@ -183,6 +206,7 @@ public class MetaDataPane extends DrawableUIBase {
|
||||
|
||||
updateCategory();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -227,9 +251,14 @@ public class MetaDataPane extends DrawableUIBase {
|
||||
|
||||
@Override
|
||||
public void handleTagDeleted(ContentTagDeletedEvent evt) {
|
||||
if (getFile() != null && evt.getDeletedTag().getContent().getId() == getFileID()) {
|
||||
updateUI();
|
||||
}
|
||||
handleTagChanged(evt.getDeletedTag().getContent().getId());
|
||||
}
|
||||
|
||||
private void handleTagChanged(Long tagFileID) {
|
||||
getFileID().ifPresent(fileID -> {
|
||||
if (Objects.equals(tagFileID, fileID)) {
|
||||
updateUI();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -50,7 +50,6 @@ import org.openide.util.Exceptions;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.autopsy.coreutils.ThreadConfined;
|
||||
import org.sleuthkit.autopsy.coreutils.ThreadConfined.ThreadType;
|
||||
import org.sleuthkit.autopsy.imagegallery.DrawableTagsManager;
|
||||
import org.sleuthkit.autopsy.imagegallery.FXMLConstructor;
|
||||
import org.sleuthkit.autopsy.imagegallery.FileIDSelectionModel;
|
||||
import org.sleuthkit.autopsy.imagegallery.actions.CategorizeAction;
|
||||
@ -319,6 +318,7 @@ public class SlideShowView extends DrawableTileBase {
|
||||
public Category updateCategory() {
|
||||
if (getFile().isPresent()) {
|
||||
final Category category = super.updateCategory();
|
||||
final Border border1 = hasHashHit() && (category == Category.ZERO)
|
||||
ToggleButton toggleForCategory = getToggleForCategory(category);
|
||||
Platform.runLater(() -> {
|
||||
toggleForCategory.setSelected(true);
|
||||
|
Loading…
x
Reference in New Issue
Block a user