19package org.sleuthkit.autopsy.contentviewers;
21import com.google.common.util.concurrent.ThreadFactoryBuilder;
22import java.awt.Component;
23import java.awt.ComponentOrientation;
24import java.io.IOException;
25import java.util.concurrent.ExecutorService;
26import java.util.concurrent.Executors;
27import java.util.concurrent.ThreadFactory;
28import javax.swing.ImageIcon;
29import javax.swing.JPanel;
30import javax.swing.SwingUtilities;
31import org.openide.util.NbBundle.Messages;
32import org.sleuthkit.autopsy.texttranslation.NoServiceProviderException;
33import org.sleuthkit.autopsy.texttranslation.TextTranslationService;
34import org.sleuthkit.autopsy.texttranslation.TranslationException;
35import org.sleuthkit.autopsy.texttranslation.ui.TranslateTextTask;
47 public class TranslatablePanelException
extends Exception {
50 TranslatablePanelException(String message) {
55 super(message, cause);
84 private static class TranslateOption {
103 boolean shouldTranslate() {
111 private static class TranslatedText {
125 ComponentOrientation getOrientation() {
152 protected void onErrorDisplay(String text, ComponentOrientation orientation,
int font) {
157 protected String
retrieveText() throws IOException, InterruptedException, IllegalStateException {
162 protected void onTextDisplay(String text, ComponentOrientation orientation,
int font) {
192 @Messages({
"TranslatablePanel.comboBoxOption.originalText=Original Text",
193 "TranslatablePanel.comboBoxOption.translatedText=Translated Text"})
197 Bundle.TranslatablePanel_comboBoxOption_originalText(),
198 Bundle.TranslatablePanel_comboBoxOption_translatedText(),
232 this.cachedTranslated = translated;
279 this.prevTranslateSelection =
false;
312 private synchronized void setStatus(String msg,
boolean showWarningIcon) {
337 @Messages({
"# {0} - exception message",
"TranslatablePanel.onSetContentError.text=There was an error displaying the text: {0}"})
339 SwingUtilities.invokeLater(() -> {
343 setStatus(Bundle.TranslatablePanel_onSetContentError_text(ex.getMessage()),
true);
351 private void additionalInit(Component rootComponent, String origOptionText, String translatedOptionText) {
352 add(rootComponent, java.awt.BorderLayout.CENTER);
363 boolean curTranslateSelection = translateOption.shouldTranslate();
364 if (curTranslateSelection != this.prevTranslateSelection) {
365 this.prevTranslateSelection = curTranslateSelection;
370 if (curTranslateSelection) {
372 if (translated !=
null) {
388 @SuppressWarnings(
"unchecked")
396 setMaximumSize(
new java.awt.Dimension(2000, 2000));
397 setMinimumSize(
new java.awt.Dimension(2, 2));
399 setPreferredSize(
new java.awt.Dimension(100, 58));
400 setVerifyInputWhenFocusTarget(
false);
401 setLayout(
new java.awt.BorderLayout());
403 translationBar.setBorder(javax.swing.BorderFactory.createEtchedBorder());
413 public void actionPerformed(java.awt.event.ActionEvent evt) {
414 translateComboBoxActionPerformed(evt);
419 statusLabel.setMaximumSize(
new java.awt.Dimension(32767, 32767));
void onProgressDisplay(String text, ComponentOrientation orientation, int font)
void onErrorDisplay(String text, ComponentOrientation orientation, int font)
void onTextDisplay(String text, ComponentOrientation orientation, int font)
String translate(String input)
static final long serialVersionUID
final ComponentOrientation orientation
javax.swing.JComboBox< TranslateOption > translateComboBox
void handleComboBoxChange(TranslateOption translateOption)
final Object cachedTranslatedLock
static final long serialVersionUID
synchronized void setChildComponentContent(String content, ComponentOrientation orientation)
void runTranslationTask()
void setCachedTranslated(TranslatedText translated)
void setChildComponentContent(String content)
boolean prevTranslateSelection
final ExecutorService executorService
String retrieveTranslation(String input)
void setTranslationEnabled()
javax.swing.JLabel statusLabel
volatile TranslatedText cachedTranslated
void translateComboBoxActionPerformed(java.awt.event.ActionEvent evt)
final TextTranslationService translationService
final ContentComponent contentComponent
void cancelPendingTranslation()
TranslatedText getCachedTranslated()
volatile OnTranslation backgroundTask
void additionalInit(Component rootComponent, String origOptionText, String translatedOptionText)
void setContent(String content, String contentDescriptor)
javax.swing.JPanel translationBar
final ImageIcon warningIcon
synchronized void setStatus(String msg, boolean showWarningIcon)
final ThreadFactory translationThreadFactory
final Object backgroundTaskLock
TranslatablePanel(ContentComponent contentComponent)
static final ComponentOrientation DEFAULT_ORIENTATION
synchronized boolean hasProvider()
static TextTranslationService getInstance()
TranslateTextTask(boolean translateText, String fileDescriptor)
final String contentDescriptor
Component getRootComponent()
void setContent(String content, ComponentOrientation orientation)