diff --git a/app/display/adapters/src/main/java/org/csstudio/display/builder/util/DisplayBuilderAdapterFactory.java b/app/display/adapters/src/main/java/org/csstudio/display/builder/util/DisplayBuilderAdapterFactory.java index a29a85d736..e7691bc418 100644 --- a/app/display/adapters/src/main/java/org/csstudio/display/builder/util/DisplayBuilderAdapterFactory.java +++ b/app/display/adapters/src/main/java/org/csstudio/display/builder/util/DisplayBuilderAdapterFactory.java @@ -3,16 +3,13 @@ import org.csstudio.display.builder.runtime.app.SelectionInfo; import org.phoebus.applications.email.EmailEntry; import org.phoebus.framework.adapter.AdapterFactory; -import org.phoebus.logbook.AttachmentImpl; -import org.phoebus.logbook.LogEntry; +import org.phoebus.logbook.*; import org.phoebus.logbook.LogEntryImpl.LogEntryBuilder; -import org.phoebus.logbook.LogbookPreferences; import org.phoebus.ui.javafx.Screenshot; import java.io.File; -import java.util.Arrays; -import java.util.List; -import java.util.Optional; +import java.util.*; +import java.util.logging.Level; import java.util.logging.Logger; import static org.phoebus.logbook.LogEntryImpl.LogEntryBuilder.log; @@ -59,16 +56,22 @@ public Optional adapt(Object adaptableObject, Class adapterType) } else if (adapterType.isAssignableFrom(LogEntry.class)) { - LogEntryBuilder log = log().title(LogbookPreferences.auto_title ? - "Display Screenshot for : " + selectionInfo.getName() : "") - .appendDescription(getBody(selectionInfo)); - try - { - final File image_file = selectionInfo.getImage() == null ? null : new Screenshot(selectionInfo.getImage()).writeToTempfile("image"); - log.attach(AttachmentImpl.of(image_file)); - } catch (Exception e) - { - e.printStackTrace(); + LogEntryBuilder log = log() + .title(LogbookPreferences.auto_title ? "Display Screenshot for : " + selectionInfo.getName() : "") + .appendDescription(getBody(selectionInfo)); + if(LogbookPreferences.auto_property) { + Map attributes = new HashMap<>(); + attributes.put("name",selectionInfo.getName()); + attributes.put("file",selectionInfo.toURI().toString()); + log.appendProperty(PropertyImpl.of("resource", attributes)); + try + { + final File image_file = selectionInfo.getImage() == null ? null : new Screenshot(selectionInfo.getImage()).writeToTempfile("image"); + log.attach(AttachmentImpl.of(image_file)); + } catch (Exception e) + { + logger.log(Level.WARNING, "Failed to build a log entry from this Display Builder selection ", e); + } } return Optional.of(adapterType.cast(log.build())); } diff --git a/core/logbook/src/main/java/org/phoebus/logbook/LogbookPreferences.java b/core/logbook/src/main/java/org/phoebus/logbook/LogbookPreferences.java index 4e3a7783ca..0007d15c42 100644 --- a/core/logbook/src/main/java/org/phoebus/logbook/LogbookPreferences.java +++ b/core/logbook/src/main/java/org/phoebus/logbook/LogbookPreferences.java @@ -15,6 +15,8 @@ public class LogbookPreferences { @Preference public static boolean auto_title; + @Preference + public static boolean auto_property; /** Is there support for a logbook? * Is the 'logbook_factory' configured and available? diff --git a/core/logbook/src/main/resources/logbook_preferences.properties b/core/logbook/src/main/resources/logbook_preferences.properties index a4508ceebf..b7a7a8771f 100644 --- a/core/logbook/src/main/resources/logbook_preferences.properties +++ b/core/logbook/src/main/resources/logbook_preferences.properties @@ -8,4 +8,8 @@ logbook_factory=inmemory # Determines if a log entry created from context menu (e.g. display or data browser) # should auto generate a title (e.g. "Display Screenshot..."). -auto_title=true \ No newline at end of file +auto_title=true + +# Determines if a log entry created from context menu (e.g. display or data browser) +# should auto generate properties (e.g. "resources.file"). +auto_property=false \ No newline at end of file